xref: /plugin/davcal/action/ajax.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
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}