Index: branches/5.2.x/core/admin_templates/scheduled_tasks/agent_list.tpl =================================================================== diff -u -N --- branches/5.2.x/core/admin_templates/scheduled_tasks/agent_list.tpl (revision 14880) +++ branches/5.2.x/core/admin_templates/scheduled_tasks/agent_list.tpl (revision 0) @@ -1,91 +0,0 @@ - - - - - - - - - - - -
- -
- - - - \ No newline at end of file Index: branches/5.2.x/core/units/scheduled_tasks/agent_eh.php =================================================================== diff -u -N --- branches/5.2.x/core/units/scheduled_tasks/agent_eh.php (revision 14880) +++ branches/5.2.x/core/units/scheduled_tasks/agent_eh.php (revision 0) @@ -1,181 +0,0 @@ - Array ('self' => 'add|edit'), - 'OnRunAgents' => Array ('self' => 'add|edit'), - ); - - $this->permMapping = array_merge($this->permMapping, $permissions); - } - - /** - * [HOOK] Refreshes agents list in database based on cached data from unit configs - * - * @param kEvent $event - */ - function OnRefreshAgents(&$event) - { - $regular_events = $this->Application->EventManager->getAgents(true); - - $object =& $event->getObject( Array ('skip_autoload' => true) ); - /* @var $object kDBItem */ - - $processed_ids = Array (); - $agents = $this->Conn->Query($object->GetSelectSQL(), 'AgentName'); - - foreach ($regular_events as $run_mode => $events) { - - foreach ($events as $agent_name => $agent_params) { - if ( !isset($agents[$agent_name]) ) { - $fields_hash = Array ( - 'Event' => $agent_params['EventName'], - 'AgentName' => $agent_name, - 'AgentType' => Agent::AGENT_TYPE_SYSTEM, - 'Status' => array_key_exists('Status', $agent_params) ? $agent_params['Status'] : STATUS_ACTIVE, - 'RunInterval' => $agent_params['RunInterval'], - 'RunMode' => $run_mode, - ); - - $object->Clear(); - $object->SetDBFieldsFromHash($fields_hash); - $object->Create(); - } - else { - $object->LoadFromHash( $agents[$agent_name] ); - } - - $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::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 - * @param string $type - * @return void - * @access protected - */ - protected function customProcessing(&$event, $type) - { - if ($event->Name == 'OnMassDelete' && $type == 'before') { - if ($this->Application->isDebugMode()) { - // allow to delete system agents in debug mode - return ; - } - - $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::AGENT_TYPE_SYSTEM; - $allowed_ids = $this->Conn->GetCol($sql); - - $event->setEventParam('ids', $allowed_ids); - } - } - } - - /** - * Cancels agents, that are currently 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); - } - - /** - * Runs selected agents - * - * @param kEvent $event - */ - function OnRunAgents(&$event) - { - $ids = $this->StoreSelectedIDs($event); - - if ($ids) { - $object =& $event->getObject( Array ('skip_autoload' => true) ); - /* @var $object kDBItem */ - - $where_clause = Array ( - $object->TableName . '.' . $object->IDField . ' IN (' . implode(',', $ids) . ')', - $object->TableName . '.Status = ' . STATUS_ACTIVE, - $object->TableName . '.LastRunStatus <> ' . Agent::LAST_RUN_RUNNING, - ); - - $sql = $object->GetSelectSQL() . ' - WHERE (' . implode(') AND (', $where_clause) . ')'; - $agents = $this->Conn->Query($sql); - - foreach ($agents as $agent_data) { - $agent_data['EventName'] = $agent_data['Event']; - $this->Application->EventManager->runAgent($agent_data); - } - } - - $this->clearSelectedIDs($event); - } - } \ No newline at end of file Index: branches/5.2.x/core/units/scheduled_tasks/agents_config.php =================================================================== diff -u -N --- branches/5.2.x/core/units/scheduled_tasks/agents_config.php (revision 14880) +++ branches/5.2.x/core/units/scheduled_tasks/agents_config.php (revision 0) @@ -1,173 +0,0 @@ - 'agent', - 'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'), - 'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'), - 'EventHandlerClass' => Array ('class' => 'AgentEventHandler', 'file' => 'agent_eh.php', 'build_event' => 'OnBuild'), - 'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'), - - 'AutoLoad' => true, - - 'QueryString' => Array ( - 1 => 'id', - 2 => 'Page', - 3 => 'PerPage', - 4 => 'event', - 5 => 'mode', - ), - - 'Hooks' => Array ( - Array ( - 'Mode' => hAFTER, - 'Conditional' => false, - 'HookToPrefix' => 'adm', - 'HookToSpecial' => '*', - 'HookToEvent' => Array ('OnAfterCacheRebuild'), - 'DoPrefix' => '', - 'DoSpecial' => '*', - 'DoEvent' => 'OnRefreshAgents', - ), - ), - - 'IDField' => 'AgentId', - - 'TableName' => TABLE_PREFIX . 'Agents', - - 'TitleField' => 'AgentName', - - 'StatusField' => Array ('Status'), - - 'TitlePresets' => Array ( - 'default' => Array ( - 'new_status_labels' => Array ('agent' => '!la_title_AddingAgent!'), - 'edit_status_labels' => Array ('agent' => '!la_title_EditingAgent!'), - 'new_titlefield' => Array ('agent' => '!la_title_NewAgent!'), - ), - - 'agent_list' => Array ( - 'prefixes' => Array ('agent_List'), 'format' => "!la_title_Agents!", - 'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'process', 'cancel', 'view', 'dbl-click'), - ), - - 'agent_edit' => Array ('prefixes' => Array ('agent'), 'format' => "#agent_status# '#agent_titlefield#'", - 'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'), - ), - ), - - 'PermSection' => Array('main' => 'in-portal:agents'), - - 'Sections' => Array ( - 'in-portal:agents' => Array ( - 'parent' => 'in-portal:website_setting_folder', - 'icon' => 'conf_agents', - 'label' => 'la_title_Agents', - 'url' => Array('t' => 'agents/agent_list', 'pass' => 'm'), - 'permissions' => Array('view', 'add', 'edit', 'delete'), - 'priority' => 6, - 'type' => stTREE, - ), - ), - - 'ListSQLs' => Array ( - '' => ' SELECT %1$s.* %2$s FROM %1$s', - ), - - 'ListSortings' => Array ( - '' => Array ( - 'Sorting' => Array ('AgentName' => 'asc'), - ) - ), - - 'Fields' => Array ( - 'AgentId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), - - 'AgentName' => Array ( - 'type' => 'string', 'max_len' => 255, - 'unique' => Array (), - 'required' => 1, 'not_null' => 1, 'default' => '' - ), - - 'AgentType' => Array ( - 'type' => 'int', - 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_User', 2 => 'la_opt_System'), 'use_phrases' => 1, - 'required' => 1, 'not_null' => 1, 'default' => 1 - ), - 'Status' => Array ( - 'type' => 'int', - 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Active', 0 => 'la_opt_Disabled'), 'use_phrases' => 1, - 'required' => 1, 'not_null' => 1, 'default' => 1 - ), - 'Event' => Array ( - 'type' => 'string', 'max_len' => 255, - 'formatter' => 'kFormatter', 'regexp' => '/^[a-z-]*[.]{0,1}[a-z-]*:On[A-Za-z0-9]*$/', - 'required' => 1, 'not_null' => 1, 'default' => '' - ), - 'RunInterval' => Array ('type' => 'int', 'required' => 1, 'not_null' => 1, 'default' => 0), - 'RunMode' => Array ( - 'type' => 'int', - 'formatter' => 'kOptionsFormatter', 'options' => Array (reBEFORE => 'la_opt_Before', reAFTER => 'la_opt_After'), 'use_phrases' => 1, - 'required' => 1, 'not_null' => 1, 'default' => 2 - ), - 'LastRunOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => NULL), - - 'LastRunStatus' => Array ( - 'type' => 'int', - 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Success', 0 => 'la_opt_Failed', 2 => 'la_opt_Running'), 'use_phrases' => 1, - 'not_null' => 1, 'default' => 1 - ), - - 'NextRunOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'), - 'RunTime' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), - 'Timeout' => Array ( - 'type' => 'int', - 'min_value_inc' => 1, - 'not_null' => 1, 'default' => NULL - ), - 'LastTimeoutOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => NULL), - 'SiteDomainLimitation' => Array ( - 'type' => 'string', 'max_len' => 255, - 'formatter' => 'kOptionsFormatter', 'options_sql' => 'SELECT %s FROM ' . TABLE_PREFIX . 'SiteDomains ORDER BY DomainName ASC', 'option_key_field' => 'DomainId', 'option_title_field' => 'DomainName', 'multiple' => 1, - 'not_null' => 1, 'default' => '' - ), - ), - - 'Grids' => Array ( - 'Default' => Array ( - 'Icons' => Array ( - 'default' => 'icon16_item.png', - 0 => 'icon16_disabled.png', - ), - 'Fields' => Array ( - 'AgentId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 50, ), - 'AgentName' => Array ('title' => 'column:la_fld_Name', 'filter_block' => 'grid_like_filter', 'width' => 200, ), - 'AgentType' => Array ('title' => 'column:la_fld_Type', 'filter_block' => 'grid_options_filter', 'width' => 60, ), - 'Event' => Array ('filter_block' => 'grid_like_filter', 'width' => 280, ), - 'RunInterval' => Array ('filter_block' => 'grid_range_filter', 'width' => 100, ), - 'RunMode' => Array ('filter_block' => 'grid_options_filter', 'width' => 85, ), - 'LastRunOn' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ), - 'RunTime' => Array ('filter_block' => 'grid_range_filter', 'width' => 145, ), - 'LastRunStatus' => Array ('filter_block' => 'grid_options_filter', 'width' => 120, ), - 'NextRunOn' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ), - 'Status' => Array ('filter_block' => 'grid_options_filter', 'width' => 65, ), - 'Timeout' => Array ('filter_block' => 'grid_range_filter', 'width' => 85, ), - 'LastTimeoutOn' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ), - 'SiteDomainLimitation' => Array ('data_block' => 'grid_picker_td', 'filter_block' => 'grid_multioptions_filter', 'separator' => ', ', 'width' => 145), - ), - ), - ), - ); \ No newline at end of file Index: branches/5.2.x/core/admin_templates/scheduled_tasks/agent_edit.tpl =================================================================== diff -u -N --- branches/5.2.x/core/admin_templates/scheduled_tasks/agent_edit.tpl (revision 14880) +++ branches/5.2.x/core/admin_templates/scheduled_tasks/agent_edit.tpl (revision 0) @@ -1,97 +0,0 @@ - - - - - - - - - - - - -
- -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - \ No newline at end of file