Index: branches/RC/core/units/agents/agent_eh.php =================================================================== diff -u -N --- branches/RC/core/units/agents/agent_eh.php (revision 11892) +++ branches/RC/core/units/agents/agent_eh.php (revision 0) @@ -1,131 +0,0 @@ - Array ('self' => 'add|edit'), - ); - - $this->permMapping = array_merge($this->permMapping, $permissions); - } - - /** - * Refreshes agents list in database based on cached data from unit configs - * - * @param kEvent $event - */ - function OnRefreshAgents(&$event) - { - $regular_events = $this->Application->EventManager->getRegularEvents(true); - - $object =& $event->getObject( Array ('skip_autoload' => true) ); - /* @var $object kDBItem */ - - $processed_ids = Array (); - foreach ($regular_events as $run_mode => $events) { - foreach ($events as $agent_name => $agent_params) { - $object->Load($agent_name, 'AgentName'); - - if (!$object->isLoaded()) { - $fields_hash = Array ( - 'Event' => $agent_params['EventName'], - 'AgentName' => $agent_name, - 'AgentType' => AGENT_TYPE_SYSTEM, - 'RunInterval' => $agent_params['RunInterval'], - 'RunMode' => $run_mode, - ); - - $object->SetDBFieldsFromHash($fields_hash); - $object->Create(); - } - - $processed_ids[] = $object->GetID(); - } - } - - // delete all non-processed agents (ones, that were deleted from unit configs) - $sql = 'SELECT ' . $object->IDField . ' - FROM ' . $object->TableName . ' - WHERE (AgentType = ' . AGENT_TYPE_SYSTEM . ') AND (' . $object->IDField . ' NOT IN (' . implode(',', $processed_ids) . '))'; - $delete_ids = $this->Conn->GetCol($sql); - - if ($delete_ids) { - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - /* @var $temp_handler kTempTablesHandler */ - - $temp_handler->DeleteItems($event->Prefix, $event->Special, $delete_ids); - } - - $this->Application->removeObject($event->getPrefixSpecial()); - } - - /** - * Don't allow to delete other user's messages - * - * @param kEvent $event - */ - function customProcessing(&$event, $type) - { - if ($event->Name == 'OnMassDelete' && $type == 'before') { - $ids = $event->getEventParam('ids'); - if ($ids) { - $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); - $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); - - $sql = 'SELECT ' . $id_field . ' - FROM ' . $table_name . ' - WHERE ' . $id_field . ' IN (' . implode(',', $ids) . ') AND AgentType <> ' . AGENT_TYPE_SYSTEM; - $allowed_ids = $this->Conn->GetCol($sql); - - $event->setEventParam('ids', $allowed_ids); - } - } - } - - /** - * Cancels agents, that are currenty running - * - * @param kEvent $event - */ - function OnMassCancel(&$event) - { - $ids = $this->StoreSelectedIDs($event); - - if ($ids) { - $object =& $event->getObject( Array ('skip_autoload' => true) ); - /* @var $object kDBItem */ - - foreach ($ids as $id) { - $object->Load($id); - - if ($object->GetDBField('LastRunStatus') == AGENT_LAST_RUN_RUNNING) { - // only changes status, doesn't affect currency running agents - $object->SetDBField('LastRunStatus', AGENT_LAST_RUN_FAILED); - $object->Update(); - } - } - } - - $this->clearSelectedIDs($event); - } - } \ No newline at end of file