1<?php 2/** DokuWiki Plugin extension (Action Component) 3 * 4 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 5 * @author Andreas Gohr <andi@splitbrain.org> 6 */ 7 8// must be run within Dokuwiki 9if(!defined('DOKU_INC')) die(); 10 11class action_plugin_extension extends DokuWiki_Action_Plugin { 12 13 /** 14 * Registers a callback function for a given event 15 * 16 * @param Doku_Event_Handler $controller DokuWiki's event controller object 17 * @return void 18 */ 19 public function register(Doku_Event_Handler $controller) { 20 21 $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info'); 22 23 } 24 25 /** 26 * Create the detail info for a single plugin 27 * 28 * @param Doku_Event $event 29 * @param $param 30 */ 31 public function info(Doku_Event &$event, $param) { 32 global $USERINFO; 33 global $INPUT; 34 35 if($event->data != 'plugin_extension') return; 36 $event->preventDefault(); 37 $event->stopPropagation(); 38 39 /** @var admin_plugin_extension $admin */ 40 $admin = plugin_load('admin', 'extension'); 41 if(!$admin->isAccessibleByCurrentUser()) { 42 http_status(403); 43 echo 'Forbidden'; 44 exit; 45 } 46 47 $ext = $INPUT->str('ext'); 48 if(!$ext) { 49 http_status(400); 50 echo 'no extension given'; 51 return; 52 } 53 54 /** @var helper_plugin_extension_extension $extension */ 55 $extension = plugin_load('helper', 'extension_extension'); 56 $extension->setExtension($ext); 57 58 $act = $INPUT->str('act'); 59 switch($act) { 60 case 'enable': 61 case 'disable': 62 $json = new JSON(); 63 $extension->$act(); //enables/disables 64 65 $reverse = ($act == 'disable') ? 'enable' : 'disable'; 66 67 $return = array( 68 'state' => $act.'d', // isn't English wonderful? :-) 69 'reverse' => $reverse, 70 'label' => $extension->getLang('btn_'.$reverse) 71 ); 72 73 header('Content-Type: application/json'); 74 echo $json->encode($return); 75 break; 76 77 case 'info': 78 default: 79 /** @var helper_plugin_extension_list $list */ 80 $list = plugin_load('helper', 'extension_list'); 81 header('Content-Type: text/html; charset=utf-8'); 82 echo $list->make_info($extension); 83 } 84 } 85 86} 87 88