Overview

Packages

  • Kronolith
  • None

Classes

  • Kronolith
  • Kronolith_Ajax_Application
  • Kronolith_Ajax_Imple_ContactAutoCompleter
  • Kronolith_Ajax_Imple_Embed
  • Kronolith_Ajax_Imple_TagActions
  • Kronolith_Ajax_Imple_TagAutoCompleter
  • Kronolith_Api
  • Kronolith_Calendar
  • Kronolith_Calendar_External
  • Kronolith_Calendar_External_Tasks
  • Kronolith_Calendar_Holiday
  • Kronolith_Calendar_Internal
  • Kronolith_Calendar_Remote
  • Kronolith_Calendar_Resource
  • Kronolith_Calendars_Base
  • Kronolith_Calendars_Default
  • Kronolith_Calendars_Kolab
  • Kronolith_Day
  • Kronolith_Driver
  • Kronolith_Driver_Holidays
  • Kronolith_Driver_Horde
  • Kronolith_Driver_Ical
  • Kronolith_Driver_Kolab
  • Kronolith_Driver_Mock
  • Kronolith_Driver_Resource
  • Kronolith_Driver_Sql
  • Kronolith_Event
  • Kronolith_Event_Holidays
  • Kronolith_Event_Horde
  • Kronolith_Event_Ical
  • Kronolith_Event_Kolab
  • Kronolith_Event_Resource
  • Kronolith_Event_Sql
  • Kronolith_Exception
  • Kronolith_Factory_Calendars
  • Kronolith_Factory_Geo
  • Kronolith_Form_CreateCalendar
  • Kronolith_Form_CreateResource
  • Kronolith_Form_CreateResourceGroup
  • Kronolith_Form_DeleteCalendar
  • Kronolith_Form_DeleteResource
  • Kronolith_Form_DeleteResourceGroup
  • Kronolith_Form_EditCalendar
  • Kronolith_Form_EditRemoteCalendar
  • Kronolith_Form_EditResource
  • Kronolith_Form_EditResourceGroup
  • Kronolith_Form_SubscribeRemoteCalendar
  • Kronolith_Form_UnsubscribeRemoteCalendar
  • Kronolith_FreeBusy
  • Kronolith_FreeBusy_View
  • Kronolith_FreeBusy_View_Day
  • Kronolith_FreeBusy_View_Month
  • Kronolith_FreeBusy_View_Week
  • Kronolith_FreeBusy_View_Workweek
  • Kronolith_Geo_Base
  • Kronolith_Geo_Mysql
  • Kronolith_Geo_Sql
  • Kronolith_LoginTasks_SystemTask_Upgrade
  • Kronolith_LoginTasks_Task_PurgeEvents
  • Kronolith_Notification_Listener_AjaxStatus
  • Kronolith_Resource
  • Kronolith_Resource_Base
  • Kronolith_Resource_Group
  • Kronolith_Resource_Single
  • Kronolith_Storage
  • Kronolith_Storage_Kolab
  • Kronolith_Storage_Sql
  • Kronolith_Tagger
  • Kronolith_Test
  • Kronolith_View_Day
  • Kronolith_View_DeleteEvent
  • Kronolith_View_EditEvent
  • Kronolith_View_Event
  • Kronolith_View_ExportEvent
  • Kronolith_View_Month
  • Kronolith_View_Week
  • Kronolith_View_WorkWeek
  • Kronolith_View_Year
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Login tasks module that purges old events.
 4:  *
 5:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
 6:  *
 7:  * See the enclosed file COPYING for license information (GPL). If you
 8:  * did not receive this file, see http://www.horde.org/licenses/gpl.
 9:  *
10:  * @author   Michael J. Rubinsky <mrubinsk@horde.org>
11:  * @category Horde
12:  * @package  Kronolith
13:  */
14: class Kronolith_LoginTasks_Task_PurgeEvents extends Horde_LoginTasks_Task
15: {
16:     /**
17:      * Constructor.
18:      */
19:     public function __construct()
20:     {
21:         $this->active = $GLOBALS['prefs']->getValue('purge_events');
22:         if ($this->active) {
23:             $this->interval = $GLOBALS['prefs']->getValue('purge_events_interval');
24:             if ($GLOBALS['prefs']->isLocked('purge_events')) {
25:                 $this->display = Horde_LoginTasks::DISPLAY_NONE;
26:             }
27:         }
28:     }
29: 
30:     /**
31:      * Purge old events.
32:      *
33:      * @throws Kronolith_Exception
34:      * @throws Horde_Exception_NotFound
35:      */
36:     public function execute()
37:     {
38:         /* Get the current time minus the number of days specified in
39:          * 'purge_events_keep'.  An event will be deleted if it has an end
40:          * time prior to this time. */
41:         $del_time = new Horde_Date($_SERVER['REQUEST_TIME']);
42:         $del_time->mday -= $GLOBALS['prefs']->getValue('purge_events_keep');
43: 
44:         /* Need to have Horde_Perms::DELETE on a calendar to delete events
45:          * from it */
46:         $calendars = Kronolith::listInternalCalendars(true, Horde_Perms::DELETE);
47: 
48:         /* Start building the search */
49:         $kronolith_driver = Kronolith::getDriver();
50:         $query = new StdClass();
51:         $query->start = null;
52:         $query->end = $del_time;
53:         $query->status = null;
54:         $query->calendars = array(Horde_String::ucfirst($GLOBALS['conf']['calendar']['driver']) => array_keys($calendars));
55:         $query->creator = $GLOBALS['registry']->getAuth();
56: 
57:         /* Perform the search */
58:         $days = Kronolith::search($query);
59:         $count = 0;
60:         foreach ($days as $events) {
61:             foreach ($events as $event) {
62:                 /* Delete if no recurrence, or if we are past the last occurence */
63:                 if (!$event->recurs() ||
64:                     $event->recurrence->nextRecurrence($del_time) == false) {
65: 
66:                     if ($event->calendar != $kronolith_driver->calendar) {
67:                         $kronolith_driver->open($event->calendar);
68:                     }
69:                     try {
70:                         $kronolith_driver->deleteEvent($event->id, true);
71:                         ++$count;
72:                     } catch (Exception $e) {
73:                         Horde::logMessage($e, 'ERR');
74:                         throw $e;
75:                     }
76:                 }
77:             }
78:         }
79: 
80:         $GLOBALS['notification']->push(sprintf(ngettext("Deleted %d event older than %d days.", "Deleted %d events older than %d days.", $count), $count, $GLOBALS['prefs']->getValue('purge_events_keep')));
81:     }
82: 
83:     /**
84:      * Return information for the login task.
85:      *
86:      * @return string  Description of what the operation is going to do during
87:      *                 this login.
88:      */
89:     public function describe()
90:     {
91:         return sprintf(_("All of your events older than %d days will be permanently deleted."),
92:                        $GLOBALS['prefs']->getValue('purge_events_keep'));
93:     }
94: 
95: }
96: 
API documentation generated by ApiGen