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 $job_status = array( 'Any', 'Waiting', 'Running', 'Completed', 'Failed', 'Canceled' );
27 $dbSql->tpl->assign( 'job_status', $job_status );
30 $jobs_per_page = array( 25,50,75,100,150 );
31 $dbSql->tpl->assign( 'jobs_per_page', $jobs_per_page );
34 $job_level = array( 'D' => 'Diff', 'I' => 'Incr', 'F' => 'Full' );
36 $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 ";
37 $query .= "FROM Job ";
38 $query .= "LEFT JOIN Pool ON Job.PoolId=Pool.PoolId ";
39 $query .= "LEFT JOIN Status ON Job.JobStatus = Status.JobStatus ";
42 if( isset( $_POST['status'] ) ) {
43 switch( strtolower( $_POST['status'] ) )
46 $query .= "WHERE Job.JobStatus = 'R' ";
49 $query .= "WHERE Job.JobStatus IN ('F','S','M','m','s','j','c','d','t','p','C') ";
52 $query .= "WHERE Job.JobStatus IN ('T', 'E') ";
55 $query .= "WHERE Job.JobStatus = 'f' ";
58 $query .= "WHERE Job.JobStatus = 'A' ";
64 $query .= "ORDER BY Job.JobId DESC ";
66 // Determine how many jobs to display
67 if( isset($_POST['jobs_per_page']) )
68 $query .= "LIMIT " . $_POST['jobs_per_page'];
70 $query .= "LIMIT 25 ";
72 //echo $query . '<br />';
74 $jobsresult = $dbSql->db_link->query( $query );
76 if( PEAR::isError( $jobsresult ) ) {
77 echo "SQL query = $query <br />";
78 die("Unable to get last failed jobs from catalog" . $jobsresult->getMessage() );
80 while( $job = $jobsresult->fetchRow( DB_FETCHMODE_ASSOC ) ) {
82 // Determine icon for job status
83 switch( $job['JobStatus'] ) {
85 $job['Job_icon'] = "running.png";
88 $job['Job_icon'] = "ok.png";
91 $job['Job_icon'] = "canceled.png";
93 case J_COMPLETED_ERROR:
94 $job['Job_icon'] = "warning.png";
97 $job['Job_icon'] = "error.png";
99 case J_WAITING_CLIENT:
101 case J_WAITING_MOUNT_MEDIA:
102 case J_WAITING_NEW_MEDIA:
103 case J_WAITING_STORAGE_RES:
104 case J_WAITING_JOB_RES:
105 case J_WAITING_CLIENT_RES:
106 case J_WAITING_MAX_JOBS:
107 case J_WAITING_START_TIME:
109 $job['Job_icon'] = "waiting.png";
114 if( count($last_jobs) % 2)
115 $job['Job_classe'] = 'odd';
117 // Elapsed time for the job
118 $start = $job['StartTime'];
119 $end = $job['EndTime'];
121 if( $start == '0000-00-00 00:00:00' )
122 $job['elapsed_time'] = 'N/A';
123 elseif( $end == '0000-00-00 00:00:00' )
124 $job['elapsed_time'] = TimeUtils::Get_Elapsed_Time( strtotime($start), mktime() );
126 $job['elapsed_time'] = TimeUtils::Get_Elapsed_Time( strtotime($start), strtotime($end) );
129 $job['Level'] = $job_level[ $job['Level'] ];
132 $job['JobBytes'] = Utils::Get_Human_Size( $job['JobBytes'] );
134 array_push( $last_jobs, $job);
137 $dbSql->tpl->assign( 'last_jobs', $last_jobs );
140 if( isset( $_POST['status'] ) )
141 $total_jobs = $dbSql->CountJobs( ALL, $_POST['status'] );
143 $total_jobs = $dbSql->CountJobs( ALL );
145 $dbSql->tpl->assign( 'total_jobs', $total_jobs );
147 // Process and display the template
148 $dbSql->tpl->display('jobs.tpl');