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.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.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 ";
51 if( isset( $_POST['status'] ) ) {
52 switch( $_POST['status'] )
55 $query .= "WHERE Job.JobStatus = 'R' ";
58 $query .= "WHERE Job.JobStatus IN ('F','S','M','m','s','j','c','d','t','p','C') ";
60 case STATUS_COMPLETED:
61 $query .= "WHERE Job.JobStatus IN ('T', 'E') ";
64 $query .= "WHERE Job.JobStatus = 'f' ";
67 $query .= "WHERE Job.JobStatus = 'A' ";
70 $dbSql->tpl->assign('job_status_filter', $_POST['status'] );
74 $query .= "ORDER BY Job.JobId DESC ";
77 $jobs_per_page = array( 25 => '25', 50 => '50', 75 => '75', 100 => '100', 150 => '150' );
79 // Determine how many jobs to display
80 if( isset($_POST['jobs_per_page']) ) {
81 $query .= "LIMIT " . $_POST['jobs_per_page'];
82 $dbSql->tpl->assign( 'jobs_per_page_selected', $_POST['jobs_per_page'] );
84 $query .= "LIMIT 25 ";
85 $dbSql->tpl->assign( 'jobs_per_page', $jobs_per_page );
87 $jobsresult = $dbSql->db_link->query( $query );
89 if( PEAR::isError( $jobsresult ) ) {
90 $dbSql->TriggerDBError( "Unable to get last failed jobs from catalog", $jobresult );
92 while( $job = $jobsresult->fetchRow( DB_FETCHMODE_ASSOC ) ) {
94 // Determine icon for job status
95 switch( $job['jobstatus'] ) {
97 $job['Job_icon'] = "running.png";
100 $job['Job_icon'] = "ok.png";
103 $job['Job_icon'] = "canceled.png";
105 case J_COMPLETED_ERROR:
106 $job['Job_icon'] = "warning.png";
109 $job['Job_icon'] = "error.png";
111 case J_WAITING_CLIENT:
113 case J_WAITING_MOUNT_MEDIA:
114 case J_WAITING_NEW_MEDIA:
115 case J_WAITING_STORAGE_RES:
116 case J_WAITING_JOB_RES:
117 case J_WAITING_CLIENT_RES:
118 case J_WAITING_MAX_JOBS:
119 case J_WAITING_START_TIME:
121 $job['Job_icon'] = "waiting.png";
126 if( count($last_jobs) % 2)
127 $job['Job_classe'] = 'odd';
129 // Elapsed time for the job
130 $start = $job['starttime'];
131 $end = $job['endtime'];
133 // Job execution execution time
134 $job['elapsed_time'] = CTimeUtils::Get_Elapsed_Time( $start, $end);
136 $job['Level'] = $job_level[ $job['level'] ];
138 $job['JobBytes'] = CUtils::Get_Human_Size( $job['jobbytes'] );
140 array_push( $last_jobs, $job);
143 $dbSql->tpl->assign( 'last_jobs', $last_jobs );
146 if( isset( $_POST['status'] ) )
147 $total_jobs = $dbSql->CountJobs( ALL, $_POST['status'] );
149 $total_jobs = $dbSql->CountJobs( ALL );
151 $dbSql->tpl->assign( 'total_jobs', $total_jobs );
153 // Process and display the template
154 $dbSql->tpl->display('jobs.tpl');