3 +-------------------------------------------------------------------------+
4 | Copyright 2010-2011, Davide Franco |
6 | This program is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU General Public License |
8 | as published by the Free Software Foundation; either version 2 |
9 | of the License, or (at your option) any later version. |
11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. |
15 +-------------------------------------------------------------------------+
18 include_once( 'config/global.inc.php' );
26 define( 'STATUS_ALL', 0 );
27 define( 'STATUS_RUNNING', 1 );
28 define( 'STATUS_WAITING', 2 );
29 define( 'STATUS_COMPLETED', 3 );
30 define( 'STATUS_FAILED', 4 );
31 define( 'STATUS_CANCELED', 5 );
33 $job_status = array( STATUS_ALL => 'All',
34 STATUS_RUNNING => 'Running',
35 STATUS_WAITING => 'Waiting',
36 STATUS_COMPLETED => 'Completed',
37 STATUS_FAILED => 'Failed',
38 STATUS_CANCELED => 'Canceled' );
40 $dbSql->tpl->assign( 'job_status', $job_status );
43 $job_level = array( 'D' => 'Diff', 'I' => 'Incr', 'F' => 'Full' );
45 $query .= "SELECT Job.JobId, Job.Name AS Job_name, Job.Type, Job.StartTime, Job.EndTime, Job.Level, Job.JobBytes, Job.JobFiles, Pool.Name, Job.JobStatus, Pool.Name AS Pool_name, Status.JobStatusLong ";
46 $query .= "FROM Job ";
47 $query .= "LEFT JOIN Pool ON Job.PoolId=Pool.PoolId ";
48 $query .= "LEFT JOIN Status ON Job.JobStatus = Status.JobStatus ";
50 $posts = CHttpRequest::getRequestVars( $_POST );
52 if( $posts != false ) {
53 switch( $posts['status'] )
56 $query .= "WHERE Job.JobStatus = 'R' ";
59 $query .= "WHERE Job.JobStatus IN ('F','S','M','m','s','j','c','d','t','p','C') ";
61 case STATUS_COMPLETED:
62 $query .= "WHERE Job.JobStatus = 'T' ";
65 $query .= "WHERE Job.JobStatus IN ('f', 'E') ";
68 $query .= "WHERE Job.JobStatus = 'A' ";
71 $dbSql->tpl->assign('job_status_filter', $posts['status'] );
75 $query .= "ORDER BY Job.JobId DESC ";
78 $jobs_per_page = array( 25 => '25', 50 => '50', 75 => '75', 100 => '100', 150 => '150' );
80 // Determine how many jobs to display
81 if( isset($posts['jobs_per_page']) ) {
82 $query .= "LIMIT " . $posts['jobs_per_page'];
83 $dbSql->tpl->assign( 'jobs_per_page_selected', $posts['jobs_per_page'] );
85 $query .= "LIMIT 25 ";
86 $dbSql->tpl->assign( 'jobs_per_page', $jobs_per_page );
89 $jobsresult = $dbSql->db_link->runQuery( $query );
91 if( !is_a($jobsresult,'CDBResult') ) {
92 throw new PDOException("Unable to get jobs list from catalog");
94 foreach( $jobsresult->fetchAll() as $job ) {
96 // Determine icon for job status
97 switch( $job['jobstatus'] ) {
99 $job['Job_icon'] = "running.png";
102 $job['Job_icon'] = "ok.png";
105 $job['Job_icon'] = "canceled.png";
107 case J_COMPLETED_ERROR:
108 $job['Job_icon'] = "warning.png";
111 $job['Job_icon'] = "error.png";
113 case J_WAITING_CLIENT:
115 case J_WAITING_MOUNT_MEDIA:
116 case J_WAITING_NEW_MEDIA:
117 case J_WAITING_STORAGE_RES:
118 case J_WAITING_JOB_RES:
119 case J_WAITING_CLIENT_RES:
120 case J_WAITING_MAX_JOBS:
121 case J_WAITING_START_TIME:
123 $job['Job_icon'] = "waiting.png";
128 if( count($last_jobs) % 2)
129 $job['Job_classe'] = 'odd';
131 // Elapsed time for the job
132 $start = $job['starttime'];
133 $end = $job['endtime'];
135 // Job execution execution time
136 $job['elapsed_time'] = CTimeUtils::Get_Elapsed_Time( $start, $end);
138 $job['level'] = $job_level[ $job['level'] ];
140 $job['jobbytes'] = CUtils::Get_Human_Size( $job['jobbytes'] );
142 array_push( $last_jobs, $job);
146 }catch(PDOException $e) {
147 CDBError::raiseError($e);
150 $dbSql->tpl->assign( 'last_jobs', $last_jobs );
153 if( isset( $posts['status'] ) )
154 $total_jobs = $dbSql->countJobs( FIRST_DAY, NOW, $posts['status'] );
156 $total_jobs = $dbSql->countJobs( FIRST_DAY, NOW );
158 $dbSql->tpl->assign( 'total_jobs', $total_jobs );
160 // Process and display the template
161 $dbSql->tpl->display('jobs.tpl');