$days_stored_files = array(); $job_levels = array('D' => 'Differential', 'I' => 'Incremental', 'F' => 'Full'); try { if (!is_null(CHttpRequest::get_Value('client_id'))) { $clientid = CHttpRequest::get_Value('client_id'); } else { throw new Exception("Application error: client ID not specified as expected in Client report page"); } // Check time period if (!is_null(CHttpRequest::get_Value('period'))) { $period = CHttpRequest::get_Value('period'); } else { throw new Exception("Application error: the period hasn't been provided as expected"); } // Client informations $client = Clients_Model::getClientInfos($dbSql->db_link, $clientid); // Get job names for the client foreach (Jobs_Model::get_Jobs_List($dbSql->db_link, $clientid) as $jobname) { // Last good client's for each backup jobs $query = 'SELECT Job.Name, Job.Jobid, Job.Level, Job.Endtime, Job.Jobbytes, Job.Jobfiles, Status.JobStatusLong FROM Job '; $query .= "LEFT JOIN Status ON Job.JobStatus = Status.JobStatus "; $query .= "WHERE Job.Name = '{$jobname}' AND Job.JobStatus = 'T' AND Job.Type = 'B' "; $query .= 'ORDER BY Job.EndTime DESC '; $query .= 'LIMIT 1'; $jobs_result = CDBUtils::runQuery($query, $dbSql->db_link); foreach ($jobs_result->fetchAll() as $job) { $job['level'] = $job_levels[$job['level']]; $job['jobfiles'] = CUtils::format_Number($job['jobfiles']); $job['jobbytes'] = CUtils::Get_Human_Size($job['jobbytes']); $backup_jobs[] = $job; }
$query = ""; $last_jobs = array(); // Job Status list define('STATUS_ALL', 0); define('STATUS_RUNNING', 1); define('STATUS_WAITING', 2); define('STATUS_COMPLETED', 3); define('STATUS_COMPLETED_WITH_ERRORS', 4); define('STATUS_FAILED', 5); define('STATUS_CANCELED', 6); $job_status = array(STATUS_ALL => 'All', STATUS_RUNNING => 'Running', STATUS_WAITING => 'Waiting', STATUS_COMPLETED => 'Completed', STATUS_COMPLETED_WITH_ERRORS => 'Completed with errors', STATUS_FAILED => 'Failed', STATUS_CANCELED => 'Canceled'); $view->assign('job_status', $job_status); // Global variables $job_levels = array('D' => 'Diff', 'I' => 'Incr', 'F' => 'Full'); // Clients list filter $clients_list = Clients_Model::getClients($dbSql->db_link); $clients_list[0] = 'Any'; $view->assign('clients_list', $clients_list); $query .= "SELECT Job.JobId, Job.Name AS Job_name, Job.Type, Job.StartTime, Job.EndTime, Job.Level, Job.ReadBytes, Job.JobBytes, Job.JobFiles, Pool.Name, Job.JobStatus, Pool.Name AS Pool_name, Status.JobStatusLong "; $query .= "FROM Job "; $query .= "LEFT JOIN Pool ON Job.PoolId=Pool.PoolId "; $query .= "LEFT JOIN Status ON Job.JobStatus = Status.JobStatus "; // Check job status filter if (!is_null(CHttpRequest::get_Value('status'))) { // Selected job status filter switch (CHttpRequest::get_Value('status')) { case STATUS_RUNNING: $query .= "WHERE Job.JobStatus = 'R' "; break; case STATUS_WAITING: $query .= "WHERE Job.JobStatus IN ('F','S','M','m','s','j','c','d','t','p','C') ";
// Defined Jobs and Filesets $view->assign('defined_filesets', FileSets_Model::count($dbSql->db_link)); $view->assign('defined_jobs', Jobs_Model::count_Job_Names($dbSql->db_link)); // Incremental, Differential and Full jobs over the last 24 hours $view->assign('incr_jobs', Jobs_Model::count_Jobs($dbSql->db_link, $custom_period, null, J_INCR)); $view->assign('diff_jobs', Jobs_Model::count_Jobs($dbSql->db_link, $custom_period, null, J_DIFF)); $view->assign('full_jobs', Jobs_Model::count_Jobs($dbSql->db_link, $custom_period, null, J_FULL)); // Volumes disk usage $volumes_size = Volumes_Model::getDiskUsage($dbSql->db_link); $view->assign('volumes_size', CUtils::Get_Human_Size($volumes_size)); // Pools count $view->assign('pools_nb', Pools_Model::count($dbSql->db_link)); // Backup Job list $view->assign('jobs_list', Jobs_Model::get_Jobs_List($dbSql->db_link)); // Clients list $view->assign('clients_list', Clients_Model::getClients($dbSql->db_link)); // Count volumes $view->assign('volumes_nb', Volumes_Model::count($dbSql->db_link)); // ============================================================== // Last period <Job status graph> // ============================================================== $jobs_status = array('Running', 'Completed', 'Waiting', 'Failed', 'Canceled'); $jobs_status_data = array(); foreach ($jobs_status as $status) { $jobs_count = Jobs_Model::count_Jobs($dbSql->db_link, $custom_period, strtolower($status)); $jobs_status_data[] = array($status, $jobs_count); } $graph = new CGraph("dashboard-graph01.jpg"); $graph->SetData($jobs_status_data, 'pie'); $graph->setPieLegendColors(array('gray', 'green', 'blue', 'red', 'orange')); // Graph rendering