/** * static task getter * * @param string $_type * @param array $_requestOptions * @param array $_taskOptions * @return Tinebase_Scheduler_Task */ public static function getPreparedTask($_type, array $_requestOptions, array $_taskOptions = array()) { $request = new Zend_Controller_Request_Simple(); $request->setControllerName($_requestOptions['controller']); $request->setActionName($_requestOptions['action']); if (isset($_requestOptions['params']) || array_key_exists('params', $_requestOptions)) { foreach ($_requestOptions['params'] as $key => $value) { $request->setParam($key, $value); } } $task = new Tinebase_Scheduler_Task($_taskOptions); $task->setMonths("Jan-Dec"); $task->setWeekdays("Sun-Sat"); $task->setDays("1-31"); $task->setRequest($request); switch ($_type) { case self::TASK_TYPE_MINUTELY: $task->setHours("0-23"); $task->setMinutes("0/1"); break; case self::TASK_TYPE_HOURLY: $task->setHours("0-23"); $task->setMinutes("0"); break; case self::TASK_TYPE_DAILY: $task->setHours("0"); $task->setMinutes("0"); break; } return $task; }
/** * create scheduler task * * @return Tinebase_Scheduler_Task */ protected function _createTask() { $request = new Zend_Controller_Request_Http(); $request->setControllerName('Tinebase_Alarm'); $request->setActionName('sendPendingAlarms'); $request->setParam('eventName', 'Tinebase_Event_Async_Minutely'); $task = new Tinebase_Scheduler_Task(); $task->setMonths("Jan-Dec"); $task->setWeekdays("Sun-Sat"); $task->setDays("1-31"); $task->setHours("0-23"); $task->setMinutes("0/1"); $task->setRequest($request); return $task; }
/** * update to 3.8 * - schedulers */ public function update_7() { $declaration = new Setup_Backend_Schema_Table_Xml(' <table> <name>scheduler</name> <version>1</version> <declaration> <field> <name>id</name> <type>integer</type> <length>11</length> <autoincrement>true</autoincrement> <notnull>true</notnull> </field> <field> <name>name</name> <type>text</type> <length>255</length> <notnull>true</notnull> </field> <field> <name>data</name> <type>text</type> <notnull>true</notnull> </field> <index> <name>id</name> <primary>true</primary> <field> <name>id</name> </field> </index> </declaration> </table>'); try { $this->_backend->createTable($declaration); Tinebase_Application::getInstance()->addApplicationTable(Tinebase_Application::getInstance()->getApplicationByName('Tinebase'), 'scheduler', 1); } catch (Zend_Db_Statement_Exception $zdse) { // do nothing } $request = new Zend_Controller_Request_Simple(); $request->setControllerName('Tinebase_Alarm'); $request->setActionName('sendPendingAlarms'); $request->setParam('eventName', 'Tinebase_Event_Async_Minutely'); $task = new Tinebase_Scheduler_Task(); $task->setMonths("Jan-Dec"); $task->setWeekdays("Sun-Sat"); $task->setDays("1-31"); $task->setHours("0-23"); $task->setMinutes("0/1"); $task->setRequest($request); $scheduler = Tinebase_Core::getScheduler(); $scheduler->addTask('Tinebase_Alarm', $task); $scheduler->saveTask(); $this->setApplicationVersion('Tinebase', '3.8'); }