示例#1
0
 public function scheduleTasks($inclusion_type, $inclusion_tasks)
 {
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->addAll(Gpf_Db_Table_PlannedTasks::getInstance());
     $select->from->add(Gpf_Db_Table_PlannedTasks::getName());
     $condition = new Gpf_SqlBuilder_CompoundWhereCondition();
     $condition->add(Gpf_Db_Table_PlannedTasks::LASTPLANDATE, '<', Gpf_Common_DateUtils::now(), 'OR');
     $condition->add(Gpf_Db_Table_PlannedTasks::LASTPLANDATE, 'is', 'NULL', 'OR', false);
     $select->where->addCondition($condition);
     if ($inclusion_type == Gpf_Tasks_Runner::INCLUDE_TASKS) {
         $select->where->add(Gpf_Db_Table_PlannedTasks::CLASSNAME, 'IN', $inclusion_tasks);
     } else {
         if ($inclusion_type == Gpf_Tasks_Runner::EXCLUDE_TASKS) {
             $select->where->add(Gpf_Db_Table_PlannedTasks::CLASSNAME, 'NOT IN', $inclusion_tasks);
         }
     }
     foreach ($select->getAllRows() as $plannedTaskRow) {
         $plannedTask = new Gpf_Db_PlannedTask();
         $plannedTask->fillFromRecord($plannedTaskRow);
         if ($plannedTask->getLastPlanDate() == null) {
             $plannedTask->setLastPlanDate(Gpf_Common_DateUtils::now());
         }
         $task = new Gpf_Db_Task();
         $task->setClassName($plannedTask->getClassName());
         $task->setParams($plannedTask->getParams());
         $task->setAccountId($plannedTask->getAccountId());
         $task->save();
         $preset = new Gpf_Recurrence_Preset();
         $preset->setId($plannedTask->getRecurrencePresetId());
         $preset->load();
         $nextDate = $preset->getNextDate(Gpf_Common_DateUtils::mysqlDateTime2Timestamp($plannedTask->getLastPlanDate()));
         if ($nextDate != null && $nextDate > 0) {
             $plannedTask->setLastPlanDate(Gpf_Common_DateUtils::getDateTime($nextDate));
             $plannedTask->update();
         }
     }
 }
 /**
  * @param string $id
  * @param string $name
  * @param string $type
  * @param int $period period in seconds
  * @param int $frequency
  *
  * @return Gpf_Recurrence_Preset
  */
 public function addRecurrencePreset($id, $name, $type = '', $period = '', $frequency = '')
 {
     $preset = new Gpf_Recurrence_Preset();
     $preset->setId($id);
     $preset->setName($name);
     $preset->setType(Gpf_Db_RecurrencePreset::SYSTEM_PRESET);
     $preset->insert();
     if ($type != '') {
         $presetSetting = new Gpf_Db_RecurrenceSetting();
         $presetSetting->setRecurrencePresetId($preset->getId());
         $presetSetting->setType($type);
         $presetSetting->setPeriod($period);
         $presetSetting->setFrequency($frequency);
         $presetSetting->insert();
     }
     return $preset;
 }
 /**
  * @return Gpf_Recurrence_Preset
  */
 public function getRecurrencePreset() {
     $recurrnecePreset = new Gpf_Recurrence_Preset();
     $recurrnecePreset->setId($this->getRecurrencePresetId());
     $recurrnecePreset->load();
     return $recurrnecePreset;
 }