You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

66 lines
1.8 KiB

  1. <?php
  2. /**
  3. * Move Plugin AJAX handler to step through a move plan
  4. *
  5. * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
  6. * @author Andreas Gohr <gohr@cosmocode.de>
  7. */
  8. // must be run within Dokuwiki
  9. if(!defined('DOKU_INC')) die();
  10. /**
  11. * Class action_plugin_move_progress
  12. */
  13. class action_plugin_move_progress extends DokuWiki_Action_Plugin {
  14. /**
  15. * Register event handlers.
  16. *
  17. * @param Doku_Event_Handler $controller The plugin controller
  18. */
  19. public function register(Doku_Event_Handler $controller) {
  20. $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax');
  21. }
  22. /**
  23. * Step up
  24. *
  25. * @param Doku_Event $event
  26. */
  27. public function handle_ajax(Doku_Event $event) {
  28. if($event->data != 'plugin_move_progress') return;
  29. $event->preventDefault();
  30. $event->stopPropagation();
  31. global $INPUT;
  32. global $USERINFO;
  33. if(!auth_ismanager($_SERVER['REMOTE_USER'], $USERINFO['grps'])) {
  34. http_status(403);
  35. exit;
  36. }
  37. $return = array(
  38. 'error' => '',
  39. 'complete' => false,
  40. 'progress' => 0
  41. );
  42. /** @var helper_plugin_move_plan $plan */
  43. $plan = plugin_load('helper', 'move_plan');
  44. if(!$plan->isCommited()) {
  45. // There is no plan. Something went wrong
  46. $return['complete'] = true;
  47. } else {
  48. $todo = $plan->nextStep($INPUT->bool('skip'));
  49. $return['progress'] = $plan->getProgress();
  50. $return['error'] = $plan->getLastError();
  51. if($todo === 0) $return['complete'] = true;
  52. }
  53. $json = new JSON();
  54. header('Content-Type: application/json');
  55. echo $json->encode($return);
  56. }
  57. }