Convert Kronolith to using Horde_Session
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 12 Oct 2010 03:28:51 +0000 (21:28 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 12 Oct 2010 20:31:25 +0000 (14:31 -0600)
kronolith/attendees.php
kronolith/lib/Ajax/Application.php
kronolith/lib/Event.php
kronolith/lib/Kronolith.php
kronolith/lib/View/EditEvent.php
kronolith/new.php
kronolith/templates/attendees/attendees.inc
kronolith/templates/panel.inc

index 6ee693b..e69597c 100644 (file)
@@ -15,17 +15,10 @@ if (Kronolith::showAjaxView()) {
 }
 
 // Get the current attendees array from the session cache.
-$attendees = (isset($_SESSION['kronolith']['attendees']) &&
-              is_array($_SESSION['kronolith']['attendees']))
-    ? $_SESSION['kronolith']['attendees']
-    : array();
+$attendees = $session['kronolith:attendees;array'];
+$resources = $session['kronolith:resources;array'];
 $editAttendee = null;
 
-$resources = (isset($_SESSION['kronolith']['resources']) &&
-              is_array($_SESSION['kronolith']['resources']))
-    ? $_SESSION['kronolith']['resources']
-    : array();
-
 // Get the action ID and value. This specifies what action the user initiated.
 $actionID = Horde_Util::getFormData('actionID');
 if (Horde_Util::getFormData('clearAll')) {
@@ -43,7 +36,7 @@ case 'add':
 
     $newAttendees = Kronolith::parseAttendees($newAttendees);
     if ($newAttendees) {
-        $_SESSION['kronolith']['attendees'] = $attendees + $newAttendees;
+        $session['kronolith:attendees'] = $attendees + $newAttendees;
     }
 
     // Any new resources?
@@ -62,7 +55,7 @@ case 'add':
             'name'       => $resource->get('name'),
         );
 
-        $_SESSION['kronolith']['resources'] = $resources;
+        $session['kronolith:resources'] = $resources;
     }
 
     if (Horde_Util::getFormData('addNewClose')) {
@@ -85,7 +78,7 @@ case 'edit':
                    : ' <' . $actionValue . '>'));
         }
         unset($attendees[$actionValue]);
-        $_SESSION['kronolith']['attendees'] = $attendees;
+        $session['kronolith:attendees'] = $attendees;
     }
     break;
 
@@ -94,7 +87,7 @@ case 'remove':
     $actionValue = Horde_String::lower($actionValue);
     if (isset($attendees[$actionValue])) {
         unset($attendees[$actionValue]);
-        $_SESSION['kronolith']['attendees'] = $attendees;
+        $session['kronolith:attendees'] = $attendees;
     }
     break;
 
@@ -102,7 +95,7 @@ case 'removeResource':
     // Remove the specified resource
     if (isset($resources[$actionValue])) {
         unset($resources[$actionValue]);
-        $_SESSION['kronolith']['resources'] = $resources;
+        $session['kronolith:resources'] = $resources;
     }
     break;
 
@@ -111,7 +104,7 @@ case 'changeResourceResp':
     list($partval, $partname) = explode(' ', $actionValue, 2);
     if (isset($resources[$partname])) {
         $resources[$partname]['response'] = $partval;
-        $_SESSION['kronolith']['resources'] = $resources;
+        $session['kronolith:resources'] = $resources;
     }
     break;
 
@@ -121,7 +114,7 @@ case 'changeatt':
     $partname = Horde_String::lower($partname);
     if (isset($attendees[$partname])) {
         $attendees[$partname]['attendance'] = $partval;
-        $_SESSION['kronolith']['attendees'] = $attendees;
+        $session['kronolith:attendees'] = $attendees;
     }
     break;
 
@@ -131,7 +124,7 @@ case 'changeResourceAtt':
     $partname = Horde_String::lower($partname);
     if (isset($resources[$partname])) {
         $resources[$partname]['attendance'] = $partval;
-        $_SESSION['kronolith']['resources'] = $resources;
+        $session['kronolith:resources'] = $resources;
     }
     break;
 
@@ -141,7 +134,7 @@ case 'changeresp':
     $partname = Horde_String::lower($partname);
     if (isset($attendees[$partname])) {
         $attendees[$partname]['response'] = $partval;
-        $_SESSION['kronolith']['attendees'] = $attendees;
+        $session['kronolith:attendees'] = $attendees;
     }
     break;
 
@@ -166,7 +159,7 @@ case 'dismiss':
 
 case 'clear':
     // Remove all the attendees and resources.
-    $_SESSION['kronolith']['attendees'] = $_SESSION['kronolith']['resources'] = array();
+    unset($session['kronolith:attendees'], $session['kronolith:resources']);
     break;
 }
 
@@ -216,7 +209,7 @@ try {
 }
 
 // Add the Free/Busy information for each attendee.
-foreach ($_SESSION['kronolith']['attendees'] as $email => $status) {
+foreach ($session['kronolith:attendees;array'] as $email => $status) {
     if (strpos($email, '@') !== false &&
         ($status['attendance'] == Kronolith::PART_REQUIRED ||
          $status['attendance'] == Kronolith::PART_OPTIONAL)) {
index 73fa82e..263aa84 100644 (file)
@@ -666,7 +666,7 @@ class Kronolith_Ajax_Application extends Horde_Core_Ajax_Application
                         return $result;
                     }
                     $tasklist = $tasklists[$tasklistId];
-                    $_SESSION['all_external_calendars']['tasks/' . $tasklistId] = new Kronolith_Calendar_External(array('api' => 'tasks', 'name' => $tasklist->get('name')));
+                    //$GLOBALS['session']['kronolith:all_external_calendars']['tasks/' . $tasklistId] = new Kronolith_Calendar_External(array('api' => 'tasks', 'name' => $tasklist->get('name')));
                     $GLOBALS['display_external_calendars'][] = 'tasks/' . $tasklistId;
                     $GLOBALS['prefs']->setValue('display_external_cals', serialize($GLOBALS['display_external_calendars']));
                     Kronolith::readPermsForm($tasklist);
index e6e0a83..2247c56 100644 (file)
@@ -2043,30 +2043,12 @@ abstract class Kronolith_Event
         $this->status = Horde_Util::getFormData('status', $this->status);
 
         // Attendees.
-        $attendees = Horde_Util::getFormData('attendees');
-        if (isset($_SESSION['kronolith']['attendees']) && is_array($_SESSION['kronolith']['attendees'])) {
-            $this->attendees = $_SESSION['kronolith']['attendees'];
-            if ($attendees) {
-                if ($attendees = Kronolith::parseAttendees(trim($attendees))) {
-                    $this->attendees = $attendees;
-                }
-            }
-        } else {
-            if ($attendees) {
-                if ($attendees = Kronolith::parseAttendees(trim($attendees))) {
-                    $this->attendees = $attendees;
-                }
-            } else {
-                $attendees = array();
-            }
-
-            $this->attendees = $attendees;
-        }
+        $this->attendees = ($attendees = Horde_Util::getFormData('attendees'))
+            ? $attendees
+            : $session['kronolith:attendees;array'];
 
         // Resources
-        if (isset($_SESSION['kronolith']['resources']) && is_array($_SESSION['kronolith']['resources'])) {
-            $this->_resources = $_SESSION['kronolith']['resources'];
-        }
+        $this->_resources = $session['kronolith:resources;array'];
 
         // strptime() is locale dependent, i.e. %p is not always matching
         // AM/PM. Set the locale to C to workaround this, but grab the
index 3369957..de785d7 100644 (file)
@@ -935,11 +935,6 @@ class Kronolith
             $_SERVER['REQUEST_TIME'] = time();
         }
 
-        /* Initialize Kronolith session if we don't have one */
-        if (!isset($_SESSION['kronolith'])) {
-            $_SESSION['kronolith'] = array();
-        }
-
         /* Fetch display preferences. */
         $GLOBALS['display_calendars'] = @unserialize($GLOBALS['prefs']->getValue('display_cals'));
         $GLOBALS['display_remote_calendars'] = @unserialize($GLOBALS['prefs']->getValue('display_remote_cals'));
@@ -965,9 +960,10 @@ class Kronolith
          * back to an available calendar. An empty string passed in this
          * parameter will clear any existing session value.*/
         if (($calendarId = Horde_Util::getFormData('display_cal')) !== null) {
-            $_SESSION['kronolith']['display_cal'] = $calendarId;
+            $GLOBALS['session']['kronolith:display_cal'] = $calendarId;
         }
-        if (!empty($_SESSION['kronolith']['display_cal'])) {
+
+        if (isset($GLOBALS['session']['kronolith:display_cal'])) {
             /* Specifying a value for display_cal is always to make sure
              * that only the specified calendars are shown. Use the
              * "toggle_calendar" argument  to toggle the state of a single
@@ -977,7 +973,7 @@ class Kronolith
             $GLOBALS['display_external_calendars'] = array();
             $GLOBALS['display_resource_calendars'] = array();
             $GLOBALS['display_holidays'] = array();
-            $calendars = $_SESSION['kronolith']['display_cal'];
+            $calendars = $sessino['kronolith:display_cal'];
             if (!is_array($calendars)) {
                 $calendars = array($calendars);
             }
@@ -1102,12 +1098,14 @@ class Kronolith
 
         /* Get a list of external calendars. */
         $GLOBALS['all_external_calendars'] = array();
-        if (isset($_SESSION['all_external_calendars'])) {
-            foreach ($_SESSION['all_external_calendars'] as $calendar) {
+        if (isset($GLOBALS['session']['kronolith:all_external_calendars'])) {
+            foreach ($GLOBALS['session']['kronolith:all_external_calendars'] as $calendar) {
                 $GLOBALS['all_external_calendars'][$calendar['a'] . '/' . $calendar['n']] = new Kronolith_Calendar_External(array('api' => $calendar['a'], 'name' => $calendar['d']));
             }
         } else {
             $apis = array_unique($GLOBALS['registry']->listAPIs());
+            $ext_cals = $GLOBALS['session']['kronolith:all_external_calendars;array'];
+
             foreach ($apis as $api) {
                 if (!$GLOBALS['registry']->hasMethod($api . '/listTimeObjects')) {
                     continue;
@@ -1121,11 +1119,15 @@ class Kronolith
 
                 foreach ($categories as $name => $description) {
                     $GLOBALS['all_external_calendars'][$api . '/' . $name] = new Kronolith_Calendar_External(array('api' => $api, 'name' => $description));
-                    $_SESSION['all_external_calendars'][] = array('a' => $api,
-                                                                  'n' => $name,
-                                                                  'd' => $description);
+                    $ext_cals[] = array(
+                        'a' => $api,
+                        'n' => $name,
+                        'd' => $description
+                    );
                 }
             }
+
+            $GLOBALS['session']['kronolith:all_external_calendars'] = $ext_cals;
         }
 
         /* Make sure all the external calendars still exist. */
@@ -2199,26 +2201,15 @@ class Kronolith
      */
     public static function attendeeList()
     {
-        $attendees = array();
-
         /* Attendees */
-        if (isset($_SESSION['kronolith']['attendees']) &&
-            is_array($_SESSION['kronolith']['attendees'])) {
-
-            $attendees = array();
-            foreach ($_SESSION['kronolith']['attendees'] as $email => $attendee) {
-                $attendees[] = empty($attendee['name']) ? $email : Horde_Mime_Address::trimAddress($attendee['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'));
-            }
-
+        $attendees = array();
+        foreach ($GLOBALS['session']['kronolith:attendees;array'] as $email => $attendee) {
+            $attendees[] = empty($attendee['name']) ? $email : Horde_Mime_Address::trimAddress($attendee['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'));
         }
 
         /* Resources */
-        if (isset($_SESSION['kronolith']['resources']) &&
-            is_array($_SESSION['kronolith']['resources'])) {
-
-            foreach ($_SESSION['kronolith']['resources'] as $resource) {
-                $attendees[] = $resource['name'];
-            }
+        foreach ($GLOBALS['session']['kronolith:resources;array'] as $resource) {
+            $attendees[] = $resource['name'];
         }
 
         return implode(', ', $attendees);
index ad2985d..ca6b705 100644 (file)
@@ -58,8 +58,8 @@ class Kronolith_View_EditEvent {
             } catch (Exception $e) {
             }
         }
-        $_SESSION['kronolith']['attendees'] = $this->event->attendees;
-        $_SESSION['kronolith']['resources'] = $this->event->getResources();
+        $GLOBALS['session']['kronolith:attendees'] = $this->event->attendees;
+        $GLOBALS['session']['kronolith:resources'] = $this->event->getResources();
         if ($datetime = Horde_Util::getFormData('datetime')) {
             $datetime = new Horde_Date($datetime);
             $month = $datetime->month;
index dd21a86..0ea766b 100644 (file)
@@ -38,8 +38,8 @@ if ($calendar_id == 'internal_') {
 }
 
 $event = Kronolith::getDriver()->getEvent();
-$_SESSION['kronolith']['attendees'] = $event->attendees;
-$_SESSION['kronolith']['resources'] = $event->getResources();
+$session['kronolith:attendees'] = $event->attendees;
+$session['kronolith:resources'] = $event->getResources();
 
 $date = Horde_Util::getFormData('datetime');
 if (!$date) {
index c60ba3c..f3a7afc 100644 (file)
@@ -51,9 +51,9 @@ function switchDateView(view, date)
 </tr>
 
 <!-- attendees -->
-<?php $i = 0; if (empty($_SESSION['kronolith']['attendees'])): ?>
+<?php $i = 0; if (empty($GLOBALS['session']['kronolith:attendees'])): ?>
  <tr><td colspan="4"><em><?php echo _("No attendees") ?></em></td></tr>
-<?php else: foreach ($_SESSION['kronolith']['attendees'] as $email => $status): ?>
+<?php else: foreach ($GLOBALS['session']['kronolith:attendees'] as $email => $status): ?>
  <tr>
   <td class="nowrap"><?php $name = strpos($email, '@') === false ? $status['name'] : $email; echo Horde::url('#')->link(array('title' => sprintf(_("Remove %s"), $name), 'onclick' => "performAction('remove', decodeURIComponent('" . rawurlencode($email) . "')); return false;")) . Horde::img('delete.png') . '</a> ' . Horde::url('#')->link(array('title' => sprintf(_("Edit %s"), $name), 'onclick' => "performAction('edit', decodeURIComponent('" . rawurlencode($email) . "')); return false;")) . Horde::img('edit.png') . '</a>' ?></td>
   <td><?php echo htmlspecialchars(empty($status['name']) ? $email : Horde_Mime_Address::trimAddress($status['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'))) ?></td>
@@ -147,7 +147,7 @@ function switchDateView(view, date)
 <div>
  <input type="submit" class="button" name="addNew" value="<?php echo htmlspecialchars(_("Update")) ?>" />
  <input type="submit" class="button" name="addNewClose" value="<?php echo htmlspecialchars(_("Save and Finish")) ?>" />
- <?php if (!empty($_SESSION['kronolith']['attendees'])): ?><input type="submit" class="button" name="clearAll" value="<?php echo htmlspecialchars(_("Clear all")) ?>" /><?php endif; ?>
+ <?php if (!empty($GLOBALS['session']['kronolith:attendees'])): ?><input type="submit" class="button" name="clearAll" value="<?php echo htmlspecialchars(_("Clear all")) ?>" /><?php endif; ?>
 </div>
 
 <br />
index 099ed7d..7f6f22a 100644 (file)
@@ -43,11 +43,11 @@ $tagger = Kronolith::getTagger();
 <div id="pageControls">
  <a id="sbarShow" href="#" onclick="sbarToggle(); return false;"><?php echo _("Calendars") ?></a>
  <a id="sbarHide" href="#" onclick="sbarToggle(); return false;"><?php echo _("Calendars") ?></a>
- <?php if (!empty($_SESSION['kronolith']['display_cal'])): ?>
+<?php if (isset($GLOBALS['session']['kronolith:display_cal'])): ?>
    <a id="sbarClose" href="<?php echo Horde::selfUrl(true)->add('display_cal', '') ?>"><?php echo $GLOBALS['registry']->getAuth() ? _("Return to my calendars") : _("Return to calendars") ?></a>
- <?php endif; ?>
+<?php endif; ?>
 <div id="pageControlsInner">
-<?php if (!empty($_SESSION['kronolith']['display_cal'])): ?>
+<?php if (isset($GLOBALS['session']['kronolith:display_cal'])): ?>
   <h4><?php echo ngettext("Showing calendar:", "Showing calendars:", count($calendar_names)) ?></h4>
   <?php foreach ($calendar_names as $name): ?>
    <h4><?php echo $name ?></h4>