Index: branches/5.2.x/core/kernel/managers/agent_manager.php =================================================================== diff -u -N -r14670 -r14879 --- branches/5.2.x/core/kernel/managers/agent_manager.php (.../agent_manager.php) (revision 14670) +++ branches/5.2.x/core/kernel/managers/agent_manager.php (.../agent_manager.php) (revision 14879) @@ -1,6 +1,6 @@ beforeAgents = $data['EventManager.beforeRegularEvents']; - $this->afterAgents = $data['EventManager.afterRegularEvents']; + $this->before = $data['EventManager.beforeRegularEvents']; + $this->after = $data['EventManager.afterRegularEvents']; } /** @@ -53,113 +53,113 @@ public function getToCache() { return Array ( - 'EventManager.beforeRegularEvents' => $this->beforeAgents, - 'EventManager.afterRegularEvents' => $this->afterAgents, + 'EventManager.beforeRegularEvents' => $this->before, + 'EventManager.afterRegularEvents' => $this->after, ); } /** - * Returns information about registered agents + * Returns information about registered scheduled tasks * * @param bool $from_cache * @return Array * @access public */ public function getAll($from_cache = false) { - static $agents = null; + static $scheduled_tasks = null; if ($from_cache) { return Array ( - reBEFORE => $this->beforeAgents, - reAFTER => $this->afterAgents, + reBEFORE => $this->before, + reAFTER => $this->after, ); } - if ( !isset($agents) ) { - $timeout_clause = 'LastRunStatus = ' . Agent::LAST_RUN_RUNNING . ' AND Timeout > 0 AND ' . adodb_mktime() . ' - LastRunOn > Timeout'; + if ( !isset($scheduled_tasks) ) { + $timeout_clause = 'LastRunStatus = ' . ScheduledTask::LAST_RUN_RUNNING . ' AND Timeout > 0 AND ' . adodb_mktime() . ' - LastRunOn > Timeout'; $sql = 'SELECT * - FROM ' . $this->Application->getUnitOption('agent', 'TableName') . ' - WHERE (Status = ' . STATUS_ACTIVE . ') AND ((LastRunStatus != ' . Agent::LAST_RUN_RUNNING . ') OR (' . $timeout_clause . '))'; - $all_agents = $this->Conn->Query($sql); + FROM ' . $this->Application->getUnitOption('scheduled-task', 'TableName') . ' + WHERE (Status = ' . STATUS_ACTIVE . ') AND ((LastRunStatus != ' . ScheduledTask::LAST_RUN_RUNNING . ') OR (' . $timeout_clause . '))'; + $all_scheduled_tasks = $this->Conn->Query($sql); - $agents = Array ( + $scheduled_tasks = Array ( reBEFORE => Array (), reAFTER => Array (), ); - foreach ($all_agents as $agent_data) { - $agents[ $agent_data['RunMode'] ][ $agent_data['AgentName'] ] = Array ( - 'EventName' => $agent_data['Event'], - 'RunInterval' => (int)$agent_data['RunInterval'], - 'LastRunOn' => (int)$agent_data['LastRunOn'], - 'NextRunOn' => (int)$agent_data['NextRunOn'], - 'Status' => $agent_data['Status'], - 'LastRunStatus' => $agent_data['LastRunStatus'], - 'SiteDomainLimitation' => $agent_data['SiteDomainLimitation'], + foreach ($all_scheduled_tasks as $scheduled_task_data) { + $scheduled_tasks[ $scheduled_task_data['RunMode'] ][ $scheduled_task_data['Name'] ] = Array ( + 'EventName' => $scheduled_task_data['Event'], + 'RunInterval' => (int)$scheduled_task_data['RunInterval'], + 'LastRunOn' => (int)$scheduled_task_data['LastRunOn'], + 'NextRunOn' => (int)$scheduled_task_data['NextRunOn'], + 'Status' => $scheduled_task_data['Status'], + 'LastRunStatus' => $scheduled_task_data['LastRunStatus'], + 'SiteDomainLimitation' => $scheduled_task_data['SiteDomainLimitation'], ); } } - return $agents; + return $scheduled_tasks; } /** - * Returns agents by type + * Returns scheduled tasks by type * * @param int $type * @return Array * @access protected */ - protected function &getAgentsByType($type) + protected function &getByType($type) { if ($type == reBEFORE) { - return $this->beforeAgents; + return $this->before; } - return $this->afterAgents; + return $this->after; } /** - * Add new agent + * Add new scheduled task * * @param string $short_name name to be used to store last maintenance run info * @param string $event_name * @param int $run_interval run interval in seconds - * @param int $type before or after agent + * @param int $type before or after scheduled task * @param int $status * @access public */ public function add($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) { - $agents =& $this->getAgentsByType($type); + $scheduled_tasks =& $this->getByType($type); - $agents[$short_name] = Array ( + $scheduled_tasks[$short_name] = Array ( 'EventName' => $event_name, 'RunInterval' => $run_interval, 'Status' => $status ); } /** - * Run registered agents with specified event type + * Run registered scheduled tasks with specified event type * * @param int $event_type * @param bool $from_cron * @access public */ - public function runAgents($event_type = reBEFORE, $from_cron = false) + public function runAll($event_type = reBEFORE, $from_cron = false) { if ( defined('IS_INSTALL') ) { return ; } - if ( !$from_cron && $this->Application->ConfigValue('UseCronForRegularEvent') ) { - // if RegularEvents are set to run from cron + if ( !$from_cron && $this->Application->ConfigValue('RunScheduledTasksFromCron') ) { + // if scheduled tasks are set to run from cron return ; } - $agents = $this->getAll(); - $events_source = $agents[$event_type]; + $scheduled_tasks = $this->getAll(); + $events_source = $scheduled_tasks[$event_type]; $user_id = $this->Application->RecallVar('user_id'); $this->Application->StoreVar('user_id', USER_ROOT, true); // to prevent permission checking inside events, true for optional storage @@ -174,14 +174,14 @@ $site_domains = explode('|', substr($event_data['SiteDomainLimitation'], 1, -1)); if ( !in_array($site_domain_id, $site_domains) ) { - // agent isn't allowed on this site domain + // scheduled task isn't allowed on this site domain continue; } } // remember LastTimeoutOn only for events that are still running and will be reset - if ( $event_data['LastRunStatus'] == Agent::LAST_RUN_RUNNING ) { - $this->updateAgent($short_name, Array ('LastTimeoutOn' => adodb_mktime())); + if ( $event_data['LastRunStatus'] == ScheduledTask::LAST_RUN_RUNNING ) { + $this->update($short_name, Array ('LastTimeoutOn' => adodb_mktime())); } $next_run = $event_data['NextRunOn']; @@ -190,77 +190,77 @@ continue; } - $event_data['AgentName'] = $short_name; - $this->runAgent($event_data); + $event_data['Name'] = $short_name; + $this->run($event_data); } $this->Application->StoreVar('user_id', $user_id, $user_id == USER_GUEST); } /** - * Runs agent based on given data + * Runs scheduled task based on given data * - * @param Array $agent_data + * @param Array $scheduled_task_data * @return bool * @access public */ - public function runAgent($agent_data) + public function run($scheduled_task_data) { - $event = new kEvent($agent_data['EventName']); + $event = new kEvent($scheduled_task_data['EventName']); if ( !$this->Application->prefixRegistred($event->Prefix) ) { - // don't process agents, left from disabled modules + // don't process scheduled tasks, left from disabled modules return false; } $start_time = adodb_mktime(); - // remember, when agent execution started + // remember, when scheduled task execution started $fields_hash = Array ( 'LastRunOn' => $start_time, - 'LastRunStatus' => Agent::LAST_RUN_RUNNING, - 'NextRunOn' => $start_time + $agent_data['RunInterval'], + 'LastRunStatus' => ScheduledTask::LAST_RUN_RUNNING, + 'NextRunOn' => $start_time + $scheduled_task_data['RunInterval'], ); - $this->updateAgent($agent_data['AgentName'], $fields_hash); + $this->update($scheduled_task_data['Name'], $fields_hash); $event->redirect = false; $this->Application->HandleEvent($event); $now = adodb_mktime(); - $next_run = $agent_data['RunInterval'] ? $start_time + $agent_data['RunInterval'] : $now; + $next_run = $scheduled_task_data['RunInterval'] ? $start_time + $scheduled_task_data['RunInterval'] : $now; while ($next_run < $now) { // in case event execution took longer, then RunInterval (don't use <=, because RunInterval can be 0) - $next_run += $agent_data['RunInterval']; + $next_run += $scheduled_task_data['RunInterval']; } - // remember, when agent execution ended + // remember, when scheduled task execution ended $fields_hash = Array ( 'NextRunOn' => $next_run, 'RunTime' => round(($now - $start_time) / 60), - 'LastRunStatus' => $event->status == kEvent::erSUCCESS ? Agent::LAST_RUN_SUCCEDED : Agent::LAST_RUN_FAILED, + 'LastRunStatus' => $event->status == kEvent::erSUCCESS ? ScheduledTask::LAST_RUN_SUCCEEDED : ScheduledTask::LAST_RUN_FAILED, ); - $this->updateAgent($agent_data['AgentName'], $fields_hash); + $this->update($scheduled_task_data['Name'], $fields_hash); return true; } /** - * Updates agent record with latest changes about it's invocation progress + * Updates scheduled task record with latest changes about it's invocation progress * - * @param string $agent_name + * @param string $scheduled_task_name * @param Array $fields_hash * @return void * @access protected */ - protected function updateAgent($agent_name, $fields_hash) + protected function update($scheduled_task_name, $fields_hash) { $this->Conn->doUpdate( $fields_hash, - $this->Application->getUnitOption('agent', 'TableName'), - 'AgentName = ' . $this->Conn->qstr($agent_name) + $this->Application->getUnitOption('scheduled-task', 'TableName'), + 'Name = ' . $this->Conn->qstr($scheduled_task_name) ); } } \ No newline at end of file