getFormName() === 'webmaster-jobs') { if ($this->getState() === 'add_job') { $this->_addScheduledJobs(); } } } /** * This function gets the Jobs status * * @return array * */ public function getJobStatus() { if (is_null($this->job_status)) { $this->_fetchJobStatus(); } return $this->job_status; } /** * This function gets the Pending Jobs * * @return array * */ public function getPendingJobs() { if (is_null($this->pending_jobs)) { $this->_fetchPendingJobs(); } return $this->pending_jobs; } /** * This function fetches the 5 latest Jobs status * * @return array * */ private function _fetchJobStatus() { $sql = "SELECT sj.job_id as job_id, sj.job as job, sj.options as options, sjs.job_status as job_status, sjs.node as node, sjs.run_when as run_when FROM scheduled_jobs as sj LEFT JOIN scheduled_jobs_status as sjs ON sj.job_id = sjs.job_id WHERE sj.date_code < " . time() . " AND sj.job_id IN ( select DISTINCT job_id FROM scheduled_jobs_status ORDER BY run_when DESC ) ORDER BY sj.job_id DESC LIMIT 5"; $result = $this->App->eclipse_sql($sql); $status = array(); while ($row = mysql_fetch_array($result)) { $status[] = $row; } $this->job_status = $status; return $status; } /** * This function fetches the 25 latest pending jobs * * @return array * */ private function _fetchPendingJobs() { $sql = "SELECT job_id, job, options, date_code FROM scheduled_jobs WHERE job_id NOT IN (SELECT DISTINCT job_id FROM scheduled_jobs_status) ORDER BY job_id DESC LIMIT 25"; $result = $this->App->eclipse_sql($sql); $pending_jobs = array(); while ($row = mysql_fetch_array($result)) { $row['date_code'] = date("F j, Y, g:i a", $row['date_code']); $pending_jobs[] = $row; } $this->pending_jobs = $pending_jobs; return $pending_jobs; } /** * This function adds new scheduled jobs to the scheduled_jobs table * */ private function _addScheduledJobs() { $rsync = filter_var($this->App->getHTTPParameter('rsync', 'POST'), FILTER_SANITIZE_STRING); $postfix = filter_var($this->App->getHTTPParameter('postfix', 'POST'), FILTER_SANITIZE_STRING); $nscd = filter_var($this->App->getHTTPParameter('nscd', 'POST'), FILTER_SANITIZE_STRING); $newaliases = filter_var($this->App->getHTTPParameter('newaliases', 'POST'), FILTER_SANITIZE_STRING); $options = ''; if ($rsync == 'on') { $options .= "rsync,"; } if ($postfix == 'on') { $options .= "postfix,"; } if ($nscd == 'on') { $options .= "nscd,"; } if ($newaliases == 'on') { $options .= "newaliases,"; } // trim any trailing commas $options = rtrim($options, ","); // Default status message $msg = "The new job couldn't be created"; $msg_type = 'danger'; if (empty($options)) { $msg .= "
- You need at least one rsync configs job option"; } if (empty($this->rsync_config_job)) { $msg .= "
- You need to enter a valid path for the rsync config job"; } if (!empty($this->rsync_config_job) && !empty($options)) { $sql = "INSERT INTO scheduled_jobs (job,options,date_code) VALUES ( '" . $this->App->sqlSanitize($this->rsync_config_job) . "', " . $this->App->returnQuotedString($options) . ", UNIX_TIMESTAMP() )"; $result = $this->App->eclipse_sql($sql); // Set Success System Message $msg = 'You have successfully added a new job.'; $msg_type = 'success'; } $this->App->setSystemMessage('add_job', $msg, $msg_type); } }