xref: /dokuwiki/lib/exe/ajax.php (revision 814e20b885024d75719ca160139e824af2bb9992)
1f62ea8a1Sandi<?php
2f62ea8a1Sandi/**
3f62ea8a1Sandi * DokuWiki AJAX call handler
4f62ea8a1Sandi *
5f62ea8a1Sandi * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
6f62ea8a1Sandi * @author     Andreas Gohr <andi@splitbrain.org>
7f62ea8a1Sandi */
8f62ea8a1Sandi
9d0a27cb0SAndreas Gohrif(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
10f62ea8a1Sandirequire_once(DOKU_INC.'inc/init.php');
11*814e20b8SYurii Krequire_once(DOKU_INC.'inc/ajax_functions.php');
12*814e20b8SYurii K
1324b3cb1aSAndreas Gohr//close session
148746e727Sandisession_write_close();
15f62ea8a1Sandi
1695657bc6Sandiheader('Content-Type: text/html; charset=utf-8');
1795657bc6Sandi
18f62ea8a1Sandi//call the requested function
19e0ded59cSAndreas Gohrif($INPUT->has('call')) {
20e0ded59cSAndreas Gohr    $call = $INPUT->filter('utf8_stripspecials')->str('call');
21850c2e7cSAndreas Gohr    $callfn = 'ajax_'.$call;
22850c2e7cSAndreas Gohr
23850c2e7cSAndreas Gohr    if(function_exists($callfn)) {
24850c2e7cSAndreas Gohr        $callfn();
25f62ea8a1Sandi    } else {
263cb4b39fSBen Coburn        $evt = new Doku_Event('AJAX_CALL_UNKNOWN', $call);
273cb4b39fSBen Coburn        if ($evt->advise_before()) {
28850c2e7cSAndreas Gohr            print "AJAX call '".htmlspecialchars($call)."' unknown!\n";
29*814e20b8SYurii K        } else {
303cb4b39fSBen Coburn            $evt->advise_after();
313cb4b39fSBen Coburn            unset($evt);
32f62ea8a1Sandi        }
33bd2f6c2fSAndreas Gohr    }
3480423ab6SAdrian Lang}