Dotclear

source: plugins/eventdata/class.dc.eventdata.rest.php @ 1015

Revision 1015, 3.2 KB checked in by JcDenis, 14 years ago (diff)

eventdata:

  • fix some bugs
  • Add ics feeds
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3# This file is part of eventdata, a plugin for Dotclear 2.
4#
5# Copyright (c) 2009 JC Denis and contributors
6# jcdenis@gdwd.com
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11# -- END LICENSE BLOCK ------------------------------------
12
13class dcEventdataRest
14{
15     public static function getEventdata(&$core,$get)
16     {
17          $postId = !empty($get['postId']) ? $get['postId'] : null;
18          $eventdataType = !empty($get['eventdataType']) ? $get['eventdataType'] : null;
19          $eventdataStart = !empty($get['eventdataStart']) ? $get['eventdataStart'] : null;
20          $eventdataEnd = !empty($get['eventdataEnd']) ? $get['eventdataEnd'] : null;
21          $eventdataPeriod = !empty($get['eventdataPeriod']) ? $get['eventdataPeriod'] : null;
22          $eventdataLocation = !empty($get['eventdataLocation']) ? $get['eventdataLocation'] : null;
23
24          $limit = !empty($get['limit']) ? $get['limit'] : null;
25          $sortby = !empty($get['sortby']) ? $get['sortby'] : 'eventdata_start,desc';
26
27          $eventdata = new dcEventdata($core);
28          $rs = $eventdata->getEventdata($eventdataType,$limit,$eventdataStart,$eventdataEnd,$postId,$eventdataPeriod,$eventdataLocation);
29
30          $sortby = explode(',',$sortby);
31          $sort = $sortby[0];
32          $order = isset($sortby[1]) ? $sortby[1] : 'desc';
33
34          switch ($sort) {
35               case 'eventdata_start':
36                    $sort = 'start_ts'; break;
37               case 'eventdata_end':
38                    $sort = 'end_ts'; break;
39               default:
40                    $sort = 'eventdata_start';
41          }
42
43          $rs->sort($sort,$order);
44         
45          $rsp = new xmlTag();
46         
47          while ($rs->fetch())
48          {
49               $xe = new xmlTag('eventdata');
50               $xe->post = $rs->post_id;
51               $xe->type = $rs->eventdata_type;
52               $xe->count = $rs->count;
53               $xe->start = $rs->eventdata_start;
54               $xe->end = $rs->eventdata_end;
55               $xe->location = $rs->eventdata_location;
56               $rsp->insertNode($xe);
57          }
58
59          return $rsp;
60     }
61     
62     public static function setEventdata(&$core,$get,$post)
63     {
64          if (empty($post['postId'])) throw new Exception('No post ID');
65          if (empty($post['eventdataType'])) throw new Exception('No event type');
66          if (empty($post['eventdataStart'])) throw new Exception('No event start date');
67          if (empty($post['eventdataEnd'])) throw new Exception('No event end date');
68          if (!isset($post['eventdataLocation'])) { $post['eventdataLocation'] = ''; }
69
70          $eventdata = new dcEventdata($core);
71          $eventdata->setEventdata($post['eventdataType'],$post['postId'],$post['eventdataStart'],$post['eventdataEnd'],$post['eventdataLocation']);
72
73          return true;
74     }
75     
76     public static function delEventdata(&$core,$get,$post)
77     {
78          if (empty($post['postId'])) throw new Exception('No post ID');
79          if (empty($post['eventdataType'])) throw new Exception('No event type');
80
81          $start = empty($post['eventdataStart']) ? null : $post['eventdataStart'];
82          $end = empty($post['eventdataEnd']) ? null : $post['eventdataEnd'];
83          $location = empty($post['eventdataLocation']) ? null : $post['eventdataLocation'];
84
85          $eventdata = new dcEventdata($core);
86          $eventdata->delEventdata($post['eventdataType'],$post['postId'],$start,$end,$location);
87
88          return true;
89     }
90}
91?>
Note: See TracBrowser for help on using the repository browser.

Sites map