/** * Delete pending background task if it is allowed * * @service tasks delete * @param $params * @return Gpf_Rpc_Action */ public function deleteTask(Gpf_Rpc_Params $params) { $action = new Gpf_Rpc_Action($params); $dbTask = new Gpf_Db_Task(); try { $dbTask->setId($action->getParam('taskid')); $dbTask->load(); } catch (Gpf_Exception $e) { $action->addError(); $action->setErrorMessage($this->_('Failed to delete task.')); return $action; } if ($dbTask->isExecuting()) { $action->addError(); $action->setErrorMessage($this->_('It is not possible to delete running task.')); return $action; } try { $longTask = Gpf::newObj($dbTask->getClassName()); if (!$longTask->canUserDeleteTask()) { $action->addError(); $action->setErrorMessage($this->_('This type of task is not allowed to be deleted.')); return $action; } } catch (Gpf_Exception $e) { } $dbTask->delete(); $action->addOk(); $action->setInfoMessage($this->_('Task deleted.')); return $action; }
public function execute() { $task = new Gpf_Db_Task(); $task->setClassName('Gpf_Mail_OutboxRunner'); $task->loadFromData(array(Gpf_Db_Table_Tasks::CLASSNAME)); $select = new Gpf_SqlBuilder_SelectBuilder(); $select->select->add(Gpf_Db_Table_MailOutbox::ID); $select->from->add(Gpf_Db_Table_MailOutbox::getName()); $select->orderBy->add(Gpf_Db_Table_MailOutbox::ID); $select->limit->set(0,1); try { $row = $select->getOneRow(); $begining = $row->get(Gpf_Db_Table_MailOutbox::ID); } catch (Gpf_Exception $e) { $begining = 1; } try { $task->load(); $task->setParams($begining); $task->setWorkingAreaFrom($begining); $task->setWorkingAreaTo(Gpf_Mail_OutboxRunner::MAX_MAIL_WORKERS_COUNT); $task->update(array(Gpf_Db_Table_Tasks::WORKING_AREA_FROM, Gpf_Db_Table_Tasks::WORKING_AREA_TO, Gpf_Db_Table_Tasks::PARAMS)); } catch (Gpf_Exception $e) { throw new Gpf_Exception('Cannot update Gpf_Mail_OutboxRunner task to paralel version'); } }
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(); } } }
public function execute() { $task = new Gpf_Db_Task(); $task->setClassName('Pap_Tracking_Visit_Processor'); try { $task->loadFromData(array(Gpf_Db_Table_Tasks::CLASSNAME)); $task->setWorkingAreaFrom(0); $task->setWorkingAreaTo(Pap_Tracking_Visit_Processor::MAX_WORKERS_COUNT - 1); $task->update(array(Gpf_Db_Table_Tasks::WORKING_AREA_FROM, Gpf_Db_Table_Tasks::WORKING_AREA_TO)); } catch (Gpf_Exception $e) {} }
/** * @return Gpf_Tasks_Task */ protected function createTask() { $task = new Gpf_Db_Task(); $task->setType($this->getTaskType()); return $task; }
/** * @param Gpf_Data_Record $record * @return Gpf_Db_Task */ private function getTask(Gpf_Data_Record $record) { $task = new Gpf_Db_Task(); $task->fillFromRecord($record); $task->setPersistent(true); return $task; }