1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlerif(!defined('DOKU_INC')) die(); 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehlerclass action_plugin_davcal_ajax extends DokuWiki_Action_Plugin { 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler /** 8*a1a3b679SAndreas Boehler * @var helper_plugin_publish 9*a1a3b679SAndreas Boehler */ 10*a1a3b679SAndreas Boehler private $hlp = null; 11*a1a3b679SAndreas Boehler 12*a1a3b679SAndreas Boehler function __construct() { 13*a1a3b679SAndreas Boehler $this->hlp =& plugin_load('helper','davcal'); 14*a1a3b679SAndreas Boehler } 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler function register(Doku_Event_Handler $controller) { 17*a1a3b679SAndreas Boehler $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax_call_unknown'); 18*a1a3b679SAndreas Boehler } 19*a1a3b679SAndreas Boehler 20*a1a3b679SAndreas Boehler function handle_ajax_call_unknown(&$event, $param) { 21*a1a3b679SAndreas Boehler if($event->data != 'plugin_davcal') return; 22*a1a3b679SAndreas Boehler 23*a1a3b679SAndreas Boehler $event->preventDefault(); 24*a1a3b679SAndreas Boehler $event->stopPropagation(); 25*a1a3b679SAndreas Boehler global $INPUT; 26*a1a3b679SAndreas Boehler 27*a1a3b679SAndreas Boehler $action = trim($INPUT->post->str('action')); 28*a1a3b679SAndreas Boehler $id = trim($INPUT->post->str('id')); 29*a1a3b679SAndreas Boehler $params = $INPUT->post->arr('params'); 30*a1a3b679SAndreas Boehler $user = $_SERVER['REMOTE_USER']; 31*a1a3b679SAndreas Boehler $write = false; 32*a1a3b679SAndreas Boehler 33*a1a3b679SAndreas Boehler $data = array(); 34*a1a3b679SAndreas Boehler 35*a1a3b679SAndreas Boehler $data['result'] = false; 36*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('unknown_error'); 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler $acl = auth_quickaclcheck($id); 39*a1a3b679SAndreas Boehler if($acl > AUTH_READ) 40*a1a3b679SAndreas Boehler { 41*a1a3b679SAndreas Boehler $write = true; 42*a1a3b679SAndreas Boehler } 43*a1a3b679SAndreas Boehler 44*a1a3b679SAndreas Boehler switch($action) 45*a1a3b679SAndreas Boehler { 46*a1a3b679SAndreas Boehler case 'newEvent': 47*a1a3b679SAndreas Boehler if($write) 48*a1a3b679SAndreas Boehler { 49*a1a3b679SAndreas Boehler $data['result'] = true; 50*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('event_added'); 51*a1a3b679SAndreas Boehler $this->hlp->addCalendarEntryToCalendarForPage($id, $user, $params); 52*a1a3b679SAndreas Boehler } 53*a1a3b679SAndreas Boehler else 54*a1a3b679SAndreas Boehler { 55*a1a3b679SAndreas Boehler $data['result'] = false; 56*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('no_permission'); 57*a1a3b679SAndreas Boehler } 58*a1a3b679SAndreas Boehler break; 59*a1a3b679SAndreas Boehler case 'getEvents': 60*a1a3b679SAndreas Boehler $startDate = $INPUT->post->str('start'); 61*a1a3b679SAndreas Boehler $endDate = $INPUT->post->str('end'); 62*a1a3b679SAndreas Boehler $data = $this->hlp->getEventsWithinDateRange($id, $user, $startDate, $endDate); 63*a1a3b679SAndreas Boehler 64*a1a3b679SAndreas Boehler break; 65*a1a3b679SAndreas Boehler case 'editEvent': 66*a1a3b679SAndreas Boehler if($write) 67*a1a3b679SAndreas Boehler { 68*a1a3b679SAndreas Boehler $data['result'] = true; 69*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('event_edited'); 70*a1a3b679SAndreas Boehler $this->hlp->editCalendarEntryForPage($id, $user, $params); 71*a1a3b679SAndreas Boehler } 72*a1a3b679SAndreas Boehler else 73*a1a3b679SAndreas Boehler { 74*a1a3b679SAndreas Boehler $data['result'] = false; 75*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('no_permission'); 76*a1a3b679SAndreas Boehler } 77*a1a3b679SAndreas Boehler break; 78*a1a3b679SAndreas Boehler case 'deleteEvent': 79*a1a3b679SAndreas Boehler if($write) 80*a1a3b679SAndreas Boehler { 81*a1a3b679SAndreas Boehler $data['result'] = true; 82*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('event_deleted'); 83*a1a3b679SAndreas Boehler $this->hlp->deleteCalendarEntryForPage($id, $params); 84*a1a3b679SAndreas Boehler } 85*a1a3b679SAndreas Boehler else 86*a1a3b679SAndreas Boehler { 87*a1a3b679SAndreas Boehler $data['result'] = false; 88*a1a3b679SAndreas Boehler $data['html'] = $this->getLang('no_permission'); 89*a1a3b679SAndreas Boehler } 90*a1a3b679SAndreas Boehler break; 91*a1a3b679SAndreas Boehler } 92*a1a3b679SAndreas Boehler 93*a1a3b679SAndreas Boehler 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler 96*a1a3b679SAndreas Boehler // If we are still here, JSON output is requested 97*a1a3b679SAndreas Boehler 98*a1a3b679SAndreas Boehler //json library of DokuWiki 99*a1a3b679SAndreas Boehler require_once DOKU_INC . 'inc/JSON.php'; 100*a1a3b679SAndreas Boehler $json = new JSON(); 101*a1a3b679SAndreas Boehler 102*a1a3b679SAndreas Boehler //set content type 103*a1a3b679SAndreas Boehler header('Content-Type: application/json'); 104*a1a3b679SAndreas Boehler echo $json->encode($data); 105*a1a3b679SAndreas Boehler } 106*a1a3b679SAndreas Boehler 107*a1a3b679SAndreas Boehler}