Пример #1
0
 /**
  * tears down the fixture
  */
 public function tearDown()
 {
     // remove all tasks
     $scheduler = Tinebase_Core::getScheduler();
     $scheduler->getBackend()->saveQueue();
     // init default tasks
     Tinebase_Scheduler_Task::addAlarmTask($scheduler);
     Tinebase_Scheduler_Task::addCacheCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addCredentialCacheCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addTempFileCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addDeletedFileCleanupTask($scheduler);
 }
 /**
  * init scheduler tasks
  */
 protected function _initializeSchedulerTasks()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Calendar_Scheduler_Task::addUpdateConstraintsExdatesTask($scheduler);
 }
Пример #3
0
 /**
  * update to 5.7
  * - add deleted file cleanup task to scheduler
  */
 public function update_6()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addDeletedFileCleanupTask($scheduler);
     $this->setApplicationVersion('Tinebase', '5.7');
 }
Пример #4
0
 /**
  * init scheduler tasks
  */
 protected function _initializeSchedulerTasks()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addAlarmTask($scheduler);
     Tinebase_Scheduler_Task::addCacheCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addCredentialCacheCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addTempFileCleanupTask($scheduler);
     Tinebase_Scheduler_Task::addDeletedFileCleanupTask($scheduler);
 }
 /**
  * send alarm via scheduler
  */
 protected function _sendAlarm()
 {
     $scheduler = Tinebase_Core::getScheduler();
     $scheduler->addTask('Tinebase_Alarm', $this->_createTask());
     try {
         $scheduler->run();
     } catch (Tinebase_Exception $te) {
         // do nothing
     }
 }
 /**
  * uninit scheduler tasks
  */
 protected function _uninitializeSchedulerTasks()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Sales_Scheduler_Task::removeUpdateProductLifespanTask($scheduler);
 }
 /**
  * update to 9.7
  *
  * add rrule_constraints background job
  */
 public function update_6()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Calendar_Scheduler_Task::addUpdateConstraintsExdatesTask($scheduler);
     $this->setApplicationVersion('Calendar', '9.7');
 }
 /**
  * update to 8.22
  *
  * @see 0010766: set product lifespan
  */
 public function update_21()
 {
     if (!$this->_backend->columnExists('lifespan_end', 'sales_products')) {
         $declarations = array(new Setup_Backend_Schema_Field_Xml('<field>
                     <name>lifespan_start</name>
                     <type>datetime</type>
                 </field>'), new Setup_Backend_Schema_Field_Xml('<field>
                     <name>lifespan_end</name>
                     <type>datetime</type>
                 </field>'), new Setup_Backend_Schema_Field_Xml('<field>
                     <name>is_active</name>
                     <type>boolean</type>
                     <default>false</default>
                 </field>'));
         foreach ($declarations as $declaration) {
             try {
                 $this->_backend->addCol('sales_products', $declaration);
             } catch (Zend_Db_Statement_Exception $zdse) {
                 Tinebase_Exception::log($zdse);
             }
         }
         $this->setTableVersion('sales_products', 5);
     }
     // add hourly async job
     $scheduler = Tinebase_Core::getScheduler();
     Sales_Scheduler_Task::addUpdateProductLifespanTask($scheduler);
     $this->setApplicationVersion('Sales', '8.22');
 }
Пример #9
0
 /**
  * update to 3.25
  * - remove action queue task -> it's now a seperate cli method for a seperate cronjob
  */
 public function update_24()
 {
     $scheduler = Tinebase_Core::getScheduler();
     $scheduler->removeTask('Tinebase_ActionQueue');
     $scheduler->saveTask();
     $this->setApplicationVersion('Tinebase', '3.25');
 }
 /**
  * update to 6.4
  * - add credential cache cleanup task to scheduler
  */
 public function update_3()
 {
     Tinebase_Scheduler_Task::addSessionsCleanupTask(Tinebase_Core::getScheduler());
     $this->setApplicationVersion('Tinebase', '6.4');
 }
 /**
  * adds import table
  */
 public function update_5()
 {
     $tableDefinition = '
         <table>
             <name>import</name>
             <version>1</version>
             <declaration>
                 <field>
                     <name>id</name>
                     <type>text</type>
                     <length>80</length>
                     <notnull>true</notnull>
                 </field>
                 <field>
                     <name>timestamp</name>
                     <type>datetime</type>
                 </field>
                 <field>
                     <name>user_id</name>
                     <type>text</type>
                     <length>80</length>
                     <notnull>true</notnull>
                 </field>
                 <field>
                     <name>model</name>
                     <type>text</type>
                     <length>80</length>
                     <notnull>true</notnull>
                 </field>
                 <field>
                     <name>application_id</name>
                     <type>text</type>
                     <length>80</length>
                     <notnull>true</notnull>
                 </field>
                 <field>
                     <name>synctoken</name>
                     <type>text</type>
                     <length>80</length>
                 </field>
                 <field>
                     <name>container_id</name>
                     <length>80</length>
                     <type>text</type>
                 </field>
                 <field>
                     <name>sourcetype</name>
                     <type>text</type>
                     <notnull>true</notnull>
                 </field>
                 <field>
                     <name>interval</name>
                     <type>text</type>
                 </field>
                 <field>
                     <name>source</name>
                     <type>text</type>
                 </field>
                 <field>
                     <name>options</name>
                     <type>text</type>
                 </field>
                 <index>
                     <name>id</name>
                     <primary>true</primary>
                     <field>
                         <name>id</name>
                     </field>
                 </index>
                 <field>
                     <name>created_by</name>
                     <type>text</type>
                     <length>40</length>
                 </field>
                 <field>
                     <name>creation_time</name>
                     <type>datetime</type>
                 </field>
                 <field>
                     <name>last_modified_by</name>
                     <type>text</type>
                     <length>40</length>
                 </field>
                 <field>
                     <name>last_modified_time</name>
                     <type>datetime</type>
                 </field>
                 <field>
                     <name>is_deleted</name>
                     <type>boolean</type>
                     <notnull>true</notnull>
                     <default>false</default>
                 </field>
                 <field>
                     <name>deleted_by</name>
                     <type>text</type>
                     <length>40</length>
                 </field>
                 <field>
                     <name>deleted_time</name>
                     <type>datetime</type>
                 </field>
                 <field>
                     <name>seq</name>
                     <type>integer</type>
                     <notnull>true</notnull>
                     <default>0</default>
                 </field>
                 <index>
                     <name>import::application_id--applications::id</name>
                     <field>
                         <name>application_id</name>
                     </field>
                     <foreign>true</foreign>
                     <reference>
                         <table>applications</table>
                         <field>id</field>
                     </reference>
                 </index>
                 <index>
                     <name>import::user_id--accounts::id</name>
                     <field>
                         <name>user_id</name>
                     </field>
                     <foreign>true</foreign>
                     <reference>
                         <table>accounts</table>
                         <field>id</field>
                     </reference>
                 </index>
             </declaration>
         </table>';
     $table = Setup_Backend_Schema_Table_Factory::factory('String', $tableDefinition);
     $this->_backend->createTable($table);
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addImportTask($scheduler);
     $this->setApplicationVersion('Tinebase', '8.6');
 }
 /**
  * update to 7.6
  * 
  * @see 0008318: add clear accesslog to scheduler
  */
 public function update_5()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addAccessLogCleanupTask($scheduler);
     $this->setApplicationVersion('Tinebase', '7.6');
 }
 /**
  * test create event with alarm
  *
  * @todo add testUpdateEventWithAlarm
  */
 public function testCreateEventWithAlarm()
 {
     $eventData = $this->_getEventWithAlarm(TRUE)->toArray();
     $persistentEventData = $this->_uit->saveEvent($eventData);
     $loadedEventData = $this->_uit->getEvent($persistentEventData['id']);
     //print_r($loadedEventData);
     // check if alarms are created / returned
     $this->assertGreaterThan(0, count($loadedEventData['alarms']));
     $this->assertEquals('Calendar_Model_Event', $loadedEventData['alarms'][0]['model']);
     $this->assertEquals(Tinebase_Model_Alarm::STATUS_PENDING, $loadedEventData['alarms'][0]['sent_status']);
     $this->assertTrue(isset($loadedEventData['alarms'][0]['minutes_before']) || array_key_exists('minutes_before', $loadedEventData['alarms'][0]), 'minutes_before is missing');
     $scheduler = Tinebase_Core::getScheduler();
     $scheduler->addTask('Tinebase_Alarm', $this->createTask());
     $scheduler->run();
     // check alarm status
     $loadedEventData = $this->_uit->getEvent($persistentEventData['id']);
     $this->assertEquals(Tinebase_Model_Alarm::STATUS_SUCCESS, $loadedEventData['alarms'][0]['sent_status']);
 }
Пример #14
0
 /**
  * update to 4.8
  * - add temp file cleanup task to scheduler
  */
 public function update_7()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addTempFileCleanupTask($scheduler);
     $this->setApplicationVersion('Tinebase', '4.8');
 }
 /**
  * testCleanupCacheTriggeredByScheduler (this is only for code coverage)
  * 
  * @see Tinebase_ControllerTest::testCleanupCache() for the real cache cleanup test
  */
 public function testCleanupCacheTriggeredByScheduler()
 {
     $scheduler = Tinebase_Core::getScheduler();
     Tinebase_Scheduler_Task::addCacheCleanupTask($scheduler);
     $scheduler->run();
 }
 /**
  * trigger async events (for example via cronjob)
  *
  * @param Zend_Console_Getopt $_opts
  * @return boolean success
  */
 public function triggerAsyncEvents($_opts)
 {
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Triggering async events from CLI.');
     }
     $freeLock = $this->_aquireMultiServerLock(__CLASS__ . '::' . __FUNCTION__);
     if (!$freeLock) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Job already running.');
         }
         return false;
     }
     $userController = Tinebase_User::getInstance();
     // deactivate user plugins (like postfix/dovecot email backends) for async job user
     $userController->unregisterAllPlugins();
     try {
         $cronuser = $userController->getFullUserByLoginName($_opts->username);
     } catch (Tinebase_Exception_NotFound $tenf) {
         $cronuser = $this->_getCronuserFromConfigOrCreateOnTheFly();
     }
     Tinebase_Core::set(Tinebase_Core::USER, $cronuser);
     $scheduler = Tinebase_Core::getScheduler();
     $responses = $scheduler->run();
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r(array_keys($responses), TRUE));
     }
     $responseString = $responses ? implode(',', array_keys($responses)) : 'NULL';
     echo "Tine 2.0 scheduler run (" . $responseString . ") complete.\n";
     return true;
 }
Пример #17
0
 /**
  * trigger async events (for example via cronjob)
  *
  * @param Zend_Console_Getopt $_opts
  * @return boolean success
  */
 public function triggerAsyncEvents($_opts)
 {
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Triggering async events from CLI.');
     }
     try {
         $cronuser = Tinebase_User::getInstance()->getFullUserByLoginName($_opts->username);
     } catch (Tinebase_Exception_NotFound $tenf) {
         $cronuser = $this->_getCronuserFromConfigOrCreateOnTheFly();
     }
     Tinebase_Core::set(Tinebase_Core::USER, $cronuser);
     $scheduler = Tinebase_Core::getScheduler();
     $responses = $scheduler->run();
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($responses, TRUE));
     }
     $responseString = $responses ? implode(',', array_keys($responses)) : 'NULL';
     echo "\nTine 2.0 scheduler run (" . $responseString . ') complete.';
     return TRUE;
 }