diff options
Diffstat (limited to 'mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php')
-rw-r--r-- | mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php b/mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php new file mode 100644 index 000000000..d3e88d932 --- /dev/null +++ b/mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php @@ -0,0 +1,62 @@ +<?php +/** + * AJAX call handler for ACL plugin + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Andreas Gohr <andi@splitbrain.org> + */ + +//fix for Opera XMLHttpRequests +if(!count($_POST) && $HTTP_RAW_POST_DATA){ + parse_str($HTTP_RAW_POST_DATA, $_POST); +} + +if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../../'); +require_once(DOKU_INC.'inc/init.php'); +require_once(DOKU_INC.'inc/common.php'); +require_once(DOKU_INC.'inc/pageutils.php'); +require_once(DOKU_INC.'inc/auth.php'); +//close session +session_write_close(); + +if(!auth_isadmin()) die('for admins only'); +if(!checkSecurityToken()) die('CRSF Attack'); + +$ID = getID(); + +require_once(DOKU_INC.'inc/pluginutils.php'); +require_once(DOKU_INC.'inc/html.php'); +$acl = plugin_load('admin','acl'); +$acl->handle(); + +$ajax = $_REQUEST['ajax']; +header('Content-Type: text/html; charset=utf-8'); + +if($ajax == 'info'){ + $acl->_html_info(); +}elseif($ajax == 'tree'){ + require_once(DOKU_INC.'inc/search.php'); + global $conf; + global $ID; + + $dir = $conf['datadir']; + $ns = $_REQUEST['ns']; + if($ns == '*'){ + $ns =''; + } + $ns = cleanID($ns); + $lvl = count(explode(':',$ns)); + $ns = utf8_encodeFN(str_replace(':','/',$ns)); + + $data = $acl->_get_tree($ns,$ns); + + foreach($data as $item){ + $item['level'] = $lvl+1; + echo $acl->_html_li_acl($item); + echo '<div class="li">'; + echo $acl->_html_list_acl($item); + echo '</div>'; + echo '</li>'; + } +} + |