]> source.dussan.org Git - nextcloud-server.git/commitdiff
Calendar: refactor common ajax functions to OC_Calendar_App
authorBart Visscher <bartv@thisnet.nl>
Sun, 18 Dec 2011 21:58:20 +0000 (22:58 +0100)
committerBart Visscher <bartv@thisnet.nl>
Sun, 18 Dec 2011 22:10:42 +0000 (23:10 +0100)
17 files changed:
apps/calendar/ajax/activation.php
apps/calendar/ajax/createcalendar.php
apps/calendar/ajax/deletecalendar.php
apps/calendar/ajax/deleteevent.php
apps/calendar/ajax/editcalendar.php
apps/calendar/ajax/editevent.php
apps/calendar/ajax/editeventform.php
apps/calendar/ajax/moveevent.php
apps/calendar/ajax/neweventform.php
apps/calendar/ajax/resizeevent.php
apps/calendar/ajax/updatecalendar.php
apps/calendar/appinfo/app.php
apps/calendar/export.php
apps/calendar/import.php
apps/calendar/lib/app.php [new file with mode: 0644]
apps/calendar/lib/calendar.php
apps/calendar/lib/object.php

index 72882496ab6a4803aecdad4b4b215f6d2a93068b..3c2bc6de23ffa82868af31463a35bdd403df15c0 100644 (file)
@@ -12,8 +12,9 @@ if(!OC_USER::isLoggedIn()) {
 }
 OC_JSON::checkAppEnabled('calendar');
 $calendarid = $_POST['calendarid'];
+$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
 OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
-$calendar = OC_Calendar_Calendar::findCalendar($calendarid);
+$calendar = OC_Calendar_App::getCalendar($calendarid);
 OC_JSON::success(array(
        'active' => $calendar['active'],
        'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
index 325a5ec35bc7b8be2746b0e3b2b575fbae8b0ba2..f8b5974f54cf45eb16caf55ad5c274a02adf108e 100644 (file)
@@ -8,8 +8,6 @@
 
 require_once('../../../lib/base.php');
 
-$l10n = new OC_L10N('calendar');
-
 // Check if we are a user
 OC_JSON::checkLoggedIn();
 OC_JSON::checkAppEnabled('calendar');
@@ -17,7 +15,8 @@ OC_JSON::checkAppEnabled('calendar');
 $userid = OC_User::getUser();
 $calendarid = OC_Calendar_Calendar::addCalendar($userid, $_POST['name'], 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']);
 OC_Calendar_Calendar::setCalendarActive($calendarid, 1);
-$calendar = OC_Calendar_Calendar::findCalendar($calendarid);
+
+$calendar = OC_Calendar_Calendar::find($calendarid);
 $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
 $tmpl->assign('calendar', $calendar);
 OC_JSON::success(array(
index e8ffe0d0598c28e94345ab3892b03aee62a7f9f5..fc308da6dadfc4415d56c33c62d4916a25ca436d 100644 (file)
@@ -7,19 +7,13 @@
  */
 require_once('../../../lib/base.php');
 
-$l10n = new OC_L10N('calendar');
-
 if(!OC_USER::isLoggedIn()) {
        die('<script type="text/javascript">document.location = oc_webroot;</script>');
 }
 OC_JSON::checkAppEnabled('calendar');
 
 $cal = $_POST["calendarid"];
-$calendar = OC_Calendar_Calendar::findCalendar($cal);
-if($calendar["userid"] != OC_User::getUser()){
-       OC_JSON::error(array('error'=>'permission_denied'));
-       exit;
-}
+$calendar = OC_Calendar_App::getCalendar($cal);
 $del = OC_Calendar_Calendar::deleteCalendar($cal);
 if($del == true){
        OC_JSON::success();
index 9e3c7dd87dd0edfaebef275f6626a164f3c1e7a3..269f4a47f42d51f6dc573fa744a8a602079cd9c3 100644 (file)
@@ -15,17 +15,7 @@ if(!OC_USER::isLoggedIn()) {
 OC_JSON::checkAppEnabled('calendar');
 
 $id = $_POST['id'];
-$data = OC_Calendar_Object::find($id);
-if (!$data)
-{
-       OC_JSON::error();
-       exit;
-}
-$calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']);
-if($calendar['userid'] != OC_User::getUser()){
-       OC_JSON::error();
-       exit;
-}
+$event_object = OC_Calendar_App::getEventObject($id);
 $result = OC_Calendar_Object::delete($id);
 OC_JSON::success();
 ?> 
index d23e528786842c6cf6ddd66d9233fac731786043..e44763c9aaac5931f226c5358e9037ecb3dfb32e 100644 (file)
@@ -7,13 +7,13 @@
  */
 
 require_once('../../../lib/base.php');
-$l10n = new OC_L10N('calendar');
 if(!OC_USER::isLoggedIn()) {
        die("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
 }
 OC_JSON::checkAppEnabled('calendar');
+
 $calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
-$calendar = OC_Calendar_Calendar::findCalendar($_GET['calendarid']);
+$calendar = OC_Calendar_App::getCalendar($_GET['calendarid']);
 $tmpl = new OC_Template("calendar", "part.editcalendar");
 $tmpl->assign('new', false);
 $tmpl->assign('calendarcolor_options', $calendarcolor_options);
index e3c84520481cc603d75980ca762f99c40392d022..f00ab1d960b6a5be8725a376aeb360ddbfdcb8cc 100644 (file)
@@ -7,9 +7,6 @@
  */
 
 require_once('../../../lib/base.php');
-
-$l10n = new OC_L10N('calendar');
-
 if(!OC_USER::isLoggedIn()) {
        die('<script type="text/javascript">document.location = oc_webroot;</script>');
 }
@@ -23,26 +20,12 @@ if($errarr){
 }else{
        $id = $_POST['id'];
        $cal = $_POST['calendar'];
-       $data = OC_Calendar_Object::find($id);
-       if (!$data)
-       {
-               OC_JSON::error();
-               exit;
-       }
-       $calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']);
-       if($calendar['userid'] != OC_User::getUser()){
-               OC_JSON::error();
-               exit;
-       }
+       $data = OC_Calendar_App::getEventObject($id);
        $vcalendar = OC_VObject::parse($data['calendardata']);
 
-       $last_modified = $vcalendar->VEVENT->__get('LAST-MODIFIED');
-       if($last_modified && $_POST['lastmodified'] != $last_modified->getDateTime()->format('U')){
-               OC_JSON::error(array('modified'=>true));
-               exit;
-       }
-
+       OC_Calendar_App::isNotModified($vcalendar->VEVENT, $_POST['lastmodified']);
        OC_Calendar_Object::updateVCalendarFromRequest($_POST, $vcalendar);
+
        $result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
        if ($data['calendarid'] != $cal) {
                OC_Calendar_Object::moveToCalendar($id, $cal);
index c91f136e89875098088f2ad69b38508a8cc054d2..fe6c6f7357003804049542b0124c374f48ed7dde 100644 (file)
@@ -8,26 +8,16 @@
 
 require_once('../../../lib/base.php');
 
-$l10n = new OC_L10N('calendar');
-
 if(!OC_USER::isLoggedIn()) {
        die('<script type="text/javascript">document.location = oc_webroot;</script>');
 }
 OC_JSON::checkAppEnabled('calendar');
 
-$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-$category_options = OC_Calendar_Object::getCategoryOptions($l10n);
-$repeat_options = OC_Calendar_Object::getRepeatOptions($l10n);
-
 $id = $_GET['id'];
-$data = OC_Calendar_Object::find($id);
-$calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']);
-if($calendar['userid'] != OC_User::getUser()){
-               echo $l10n->t('Wrong calendar');
-               exit;
-}
+$data = OC_Calendar_App::getEventObject($id);
 $object = OC_VObject::parse($data['calendardata']);
 $vevent = $object->VEVENT;
+
 $dtstart = $vevent->DTSTART;
 $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
 switch($dtstart->getDateType()) {
@@ -66,6 +56,10 @@ if ($last_modified){
        $lastmodified = 0;
 }
 
+$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+$category_options = OC_Calendar_App::getCategoryOptions();
+$repeat_options = OC_Calendar_App::getRepeatOptions();
+
 $tmpl = new OC_Template('calendar', 'part.editevent');
 $tmpl->assign('id', $id);
 $tmpl->assign('lastmodified', $lastmodified);
index 51fafdfeb97b95f9b79da860e1a548c31b46e50f..f2256d4eee6135ad4254c12402ad9fc362b066b4 100644 (file)
@@ -5,31 +5,20 @@
  * later.
  * See the COPYING-README file.
  */
-error_reporting(E_ALL);
 require_once('../../../lib/base.php');
 OC_JSON::checkLoggedIn();
-$data = OC_Calendar_Object::find($_POST["id"]);
-$calendarid = $data["calendarid"];
-$cal = $calendarid;
+
 $id = $_POST['id'];
-$calendar = OC_Calendar_Calendar::findCalendar($calendarid);
-if(OC_User::getUser() != $calendar['userid']){
-       OC_JSON::error();
-       exit;
-}
+
+$vcalendar = OC_Calendar_App::getVCalendar($id);
+$vevent = $vcalendar->VEVENT;
+
 $allday = $_POST['allDay'];
 $delta = new DateInterval('P0D');
 $delta->d = $_POST['dayDelta'];
 $delta->i = $_POST['minuteDelta'];
 
-$vcalendar = OC_VObject::parse($data['calendardata']);
-$vevent = $vcalendar->VEVENT;
-
-$last_modified = $vevent->__get('LAST-MODIFIED');
-if($last_modified && $_POST['lastmodified'] != $last_modified->getDateTime()->format('U')){
-       OC_JSON::error();
-       exit;
-}
+OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
 
 $dtstart = $vevent->DTSTART;
 $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
@@ -50,4 +39,5 @@ $vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC
 $vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
 
 $result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
-OC_JSON::success(array('lastmodified'=>(int)$now->format('U')));
+$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
+OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
index 68423adb344891b75b7750fb080bad524656dcab..e12e99219e67ec0b3d8316df0a95e23d241956fd 100644 (file)
@@ -8,8 +8,6 @@
 
 require_once('../../../lib/base.php');
 
-$l10n = new OC_L10N('calendar');
-
 if(!OC_USER::isLoggedIn()) {
        die('<script type="text/javascript">document.location = oc_webroot;</script>');
 }
@@ -34,8 +32,8 @@ $start->setTimezone(new DateTimeZone($timezone));
 $end->setTimezone(new DateTimeZone($timezone));
 
 $calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-$category_options = OC_Calendar_Object::getCategoryOptions($l10n);
-$repeat_options = OC_Calendar_Object::getRepeatOptions($l10n);
+$category_options = OC_Calendar_App::getCategoryOptions();
+$repeat_options = OC_Calendar_App::getRepeatOptions();
 
 $tmpl = new OC_Template('calendar', 'part.newevent');
 $tmpl->assign('calendar_options', $calendar_options);
index 28a185411e0b7711c4a1a6381fde5e0f41dcd5e2..683479065299db7ac94a415d72c1c50045d5026c 100644 (file)
@@ -5,45 +5,28 @@
  * later.
  * See the COPYING-README file.
  */
-error_reporting(E_ALL);
 require_once('../../../lib/base.php');
 OC_JSON::checkLoggedIn();
-$data = OC_Calendar_Object::find($_POST["id"]);
-$calendarid = $data["calendarid"];
-$cal = $calendarid;
+
 $id = $_POST['id'];
-$calendar = OC_Calendar_Calendar::findCalendar($calendarid);
-if(OC_User::getUser() != $calendar['userid']){
-       OC_JSON::error();
-       exit;
-}
+
+$vcalendar = OC_Calendar_App::getVCalendar($id);
+$vevent = $vcalendar->VEVENT;
 
 $delta = new DateInterval('P0D');
 $delta->d = $_POST['dayDelta'];
 $delta->i = $_POST['minuteDelta'];
 
-$vcalendar = OC_Calendar_Object::parse($data['calendardata']);
-$vevent = $vcalendar->VEVENT;
-
-$last_modified = $vevent->__get('LAST-MODIFIED');
-if($last_modified && $_POST['lastmodified'] != $last_modified->getDateTime()->format('U')){
-       OC_JSON::error();
-       exit;
-}
+OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
 
 $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
 $end_type = $dtend->getDateType();
 $dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type);
 unset($vevent->DURATION);
 
-$now = new DateTime();
-$last_modified = new Sabre_VObject_Element_DateTime('LAST-MODIFIED');
-$last_modified->setDateTime($now, Sabre_VObject_Element_DateTime::UTC);
-$vevent->__set('LAST-MODIFIED', $last_modified);
-
-$dtstamp = new Sabre_VObject_Element_DateTime('DTSTAMP');
-$dtstamp->setDateTime($now, Sabre_VObject_Element_DateTime::UTC);
-$vevent->DTSTAMP = $dtstamp;
+$vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC);
+$vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
 
 $result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
-OC_JSON::success(array('lastmodified'=>$now->format('U')));
+$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
+OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
index e99ca16e22a8732bcfdb82b8a7527c602f618024..14f560da5a3cbc8361d2cdc439f1c5011b5e076b 100644 (file)
@@ -8,16 +8,16 @@
 
 require_once('../../../lib/base.php');
 
-$l10n = new OC_L10N('calendar');
-
 // Check if we are a user
 OC_JSON::checkLoggedIn();
 OC_JSON::checkAppEnabled('calendar');
 
 $calendarid = $_POST['id'];
+$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
 OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], null, null, null, $_POST['color']);
 OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
-$calendar = OC_Calendar_Calendar::findCalendar($calendarid);
+
+$calendar = OC_Calendar_App::getCalendar($calendarid);
 $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
 $tmpl->assign('calendar', $calendar);
 OC_JSON::success(array(
index 5675e624dda9530083de5f30d6aac06ce254863c..ee990723c0c0d9ed3b2a23215d22097e7ec2ca3a 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 $l=new OC_L10N('calendar');
+OC::$CLASSPATH['OC_Calendar_App'] = 'apps/calendar/lib/app.php';
 OC::$CLASSPATH['OC_Calendar_Calendar'] = 'apps/calendar/lib/calendar.php';
 OC::$CLASSPATH['OC_Calendar_Object'] = 'apps/calendar/lib/object.php';
 OC::$CLASSPATH['OC_Calendar_Hooks'] = 'apps/calendar/lib/hooks.php';
@@ -22,4 +23,4 @@ OC_App::addNavigationEntry( array(
 
 OC_App::registerPersonal('calendar', 'settings');
 
-require_once('apps/calendar/lib/search.php');
\ No newline at end of file
+require_once('apps/calendar/lib/search.php');
index 3e93a1ad618d4b10a3c26d3e42df6ff5529ce7b2..5fbd2533ab567187397444c97cae08fbd4f8396e 100644 (file)
@@ -12,11 +12,7 @@ OC_Util::checkAppEnabled('calendar');
 $cal = isset($_GET["calid"]) ? $_GET["calid"] : NULL;
 $event = isset($_GET["eventid"]) ? $_GET["eventid"] : NULL;
 if(isset($cal)){
-       $calendar = OC_Calendar_Calendar::findCalendar($cal);
-       if($calendar["userid"] != OC_User::getUser()){
-               OC_JSON::error();
-               exit;
-       }
+       $calendar = OC_Calendar_App::getCalendar($cal);
        $calobjects = OC_Calendar_Object::all($cal);
        header("Content-Type: text/Calendar");
        header("Content-Disposition: inline; filename=calendar.ics"); 
@@ -24,13 +20,9 @@ if(isset($cal)){
                echo $calobjects[$i]["calendardata"] . "\n";
        }
 }elseif(isset($event)){
-       $data = OC_Calendar_Object::find($_GET["eventid"]);
+       $data = OC_Calendar_App::getEventObject($_GET["eventid"]);
        $calendarid = $data["calendarid"];
-       $calendar = OC_Calendar_Calendar::findCalendar($calendarid);
-       if($calendar["userid"] != OC_User::getUser()){
-               OC_JSON::error();
-               exit;
-       }
+       $calendar = OC_Calendar_App::getCalendar($calendarid);
        header("Content-Type: text/Calendar");
        header("Content-Disposition: inline; filename=" . $data["summary"] . ".ics"); 
        echo $data["calendardata"];
index 211791f551b151a23ba37ccaf97a206cde7007e5..759726b8d10172eea6faffd770b55b2ad73dfe49 100644 (file)
@@ -12,11 +12,7 @@ OC_Util::checkAppEnabled('calendar');
 
 if($_GET["import"] == "existing"){
        $calid = $_GET["calid"];
-       $calendar = OC_Calendar_Calendar::findCalendar($calid);
-       if($calendar['userid'] != OC_User::getUser()){
-               OC_JSON::error();
-               exit;
-       }
+       $calendar = OC_Calendar_App::getCalendar($calid);
        if($_GET["path"] != ""){
                $filename = $_GET["path"] . "/" . $_GET["file"];
        }else{
@@ -47,4 +43,4 @@ for($i = 1;$i < count($vcalendar);$i++){
        OC_Calendar_Object::add($calid, $vcalendar[$i]);
 }
 OC_JSON::success();
-?>
\ No newline at end of file
+?>
diff --git a/apps/calendar/lib/app.php b/apps/calendar/lib/app.php
new file mode 100644 (file)
index 0000000..b023d53
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * This class manages our app actions
+ */
+OC_Calendar_App::$l10n = new OC_L10N('calendar');
+class OC_Calendar_App{
+       public static $l10n;
+
+       public static function getCalendar($id){
+               $calendar = OC_Calendar_Calendar::find( $id );
+               if( $calendar === false || $calendar['userid'] != OC_User::getUser()){
+                       OC_JSON::error(array('data' => array('message' => self::$l10n->t('Wrong calendar'))));
+                       exit();
+               }
+               return $calendar;
+       }
+
+       public static function getEventObject($id){
+               $event_object = OC_Calendar_Object::find( $id );
+               if( $event_object === false ){
+                       OC_JSON::error();
+                       exit();
+               }
+
+               self::getCalendar( $event_object['calendarid'] );//access check
+               return $event_object;
+       }
+
+       public static function getVCalendar($id){
+               $event_object = self::getEventObject( $id );
+
+               $vcalendar = OC_VObject::parse($event_object['calendardata']);
+               // Check if the vcalendar is valid
+               if(is_null($vcalendar)){
+                       OC_JSON::error();
+                       exit();
+               }
+               return $vcalendar;
+       }
+
+       public static function isNotModified($vevent, $lastmodified)
+       {
+               $last_modified = $vevent->__get('LAST-MODIFIED');
+               if($last_modified && $lastmodified != $last_modified->getDateTime()->format('U')){
+                       OC_JSON::error(array('modified'=>true));
+                       exit;
+               }
+       }
+
+       public static function getCategoryOptions()
+       {
+               return array(
+                       self::$l10n->t('Birthday'),
+                       self::$l10n->t('Business'),
+                       self::$l10n->t('Call'),
+                       self::$l10n->t('Clients'),
+                       self::$l10n->t('Deliverer'),
+                       self::$l10n->t('Holidays'),
+                       self::$l10n->t('Ideas'),
+                       self::$l10n->t('Journey'),
+                       self::$l10n->t('Jubilee'),
+                       self::$l10n->t('Meeting'),
+                       self::$l10n->t('Other'),
+                       self::$l10n->t('Personal'),
+                       self::$l10n->t('Projects'),
+                       self::$l10n->t('Questions'),
+                       self::$l10n->t('Work'),
+               );
+       }
+
+       public static function getRepeatOptions()
+       {
+               OC_Calendar_Object::getRepeatOptions(self::$l10n);
+       }
+}
index 3db4398096e88e1338ff7187ab285ff898ab0953..ea60526a5bd7e39193c5538092eb319afc36a871 100644 (file)
@@ -82,7 +82,7 @@ class OC_Calendar_Calendar{
         * @param integer $id
         * @return associative array
         */
-       public static function findCalendar($id){
+       public static function find($id){
                $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_calendars WHERE id = ?' );
                $result = $stmt->execute(array($id));
 
@@ -148,7 +148,7 @@ class OC_Calendar_Calendar{
         */
        public static function editCalendar($id,$name=null,$components=null,$timezone=null,$order=null,$color=null){
                // Need these ones for checking uri
-               $calendar = self::findCalendar($id);
+               $calendar = self::find($id);
 
                // Keep old stuff
                if(is_null($name)) $name = $calendar['name'];
index 1c145003511c9963847c60586cdfd52d6c102b45..58fe60611ce2aeed6ff9f227df83941e09489ed8 100644 (file)
@@ -367,7 +367,7 @@ class OC_Calendar_Object{
                        $errarr['title'] = 'true';
                        $errnum++;
                }
-               $calendar = OC_Calendar_Calendar::findCalendar($request['calendar']);
+               $calendar = OC_Calendar_Calendar::find($request['calendar']);
                if($calendar['userid'] != OC_User::getUser()){
                        $errarr['cal'] = 'true';
                        $errnum++;