+ $start_date = date( "Y-m-d H:i:s", $start_date );
+ $end_date = date( "Y-m-d H:i:s", $end_date );
+
+ // Job status
+ switch( $type )
+ {
+ case 'completed':
+ $where = "AND JobStatus = 'T' ";
+ $label = "Completed";
+ break;
+ case 'terminated_errors':
+ $where = $interval_where . "JobStatus = 'E' ";
+ $label = "Terminated with errors";
+ break;
+ case 'failed':
+ $where = "AND JobStatus = 'f' ";
+ $label = "Failed";
+ break;
+ case 'waiting':
+ $where = "AND JobStatus IN ('F','S','M','m','s','j','c','d','t') ";
+ $label = "Waiting";
+ break;
+ case 'created':
+ $where = "AND JobStatus = 'C' ";
+ $label = "Created but not running";
+ break;
+ case 'running':
+ $where = "AND JobStatus = 'R' ";
+ $label = "Running";
+ break;
+ case 'error':
+ $where = "AND JobStatus IN ('e','f') ";
+ $label = "Errors";
+ break;
+ }
+
+ $query = 'SELECT COUNT(JobId) AS ' . $type . ' ';
+ $query .= 'FROM Job ';
+ $query .= "WHERE EndTime BETWEEN '$start_date' AND '$end_date' ";
+ $query .= $where;
+
+ $jobs = $this->db_link->query( $query );
+
+ if (PEAR::isError( $jobs ) ) {
+ die( "Unable to get last $type jobs status from catalog<br />" . $status->getMessage() );
+ }else {
+ $res = $jobs->fetchRow();
+ return array( $label , current($res) );
+ }
+ } // end function GetJobsStatistics()
+
+ public function GetPoolsStatistics( $pools )
+ {
+ foreach( $pools as $pool_name => $pool ) {
+ //var_dump( $pool );
+ $query = "SELECT COUNT(*) AS nb_vol FROM Media WHERE PoolId = '$pool'";
+ //echo $query . '<br />';
+ //echo 'Pool name ' . $pool_name . '<br />';
+ $result = $this->db_link->query( $query );
+
+ if( PEAR::isError( $result ) ) {
+ die("Unable to get volume number from catalog");
+ }else{
+ $nb_vol = $result->fetchRow(DB_FETCHMODE_ASSOC);
+ return array( $pool_name, $nb_vol['nb_vol'] );
+ }
+ }
+ }
+
+ public function GetStoredFiles()
+ {
+ $nbfiles = 0;
+ $query = "SELECT COUNT(FilenameId) AS nbfiles FROM Filename";
+ $result = $this->db_link->query( $query );
+
+ if( !PEAR::isError($result) ) {
+ $nbfiles = $result->fetchRow(DB_FETCHMODE_ASSOC);
+ $nbfiles = $nbfiles['nbfiles'];
+ }else{
+ die("Unable to get protected files from catalog");
+ }
+ return $nbfiles;
+ }
+
+ public function GetStoredBytes( $delay = LAST_DAY )
+ {
+ $query = "SELECT SUM(JobBytes) as stored_bytes FROM Job ";
+
+ // Interval calculation
+ $end_date = mktime();
+ $start_date = $end_date - $delay;
+
+ $start_date = date( "Y-m-d H:i:s", $start_date );
+ $end_date = date( "Y-m-d H:i:s", $end_date );
+
+ if( $delay != ALL ) {
+ $query .= "WHERE EndTime BETWEEN '$start_date' AND '$end_date'";
+ }
+
+ $result = $this->db_link->query( $query );
+
+ if( PEAR::isError( $result ) ) {
+ die( "Unable to get Job Bytes from catalog" );
+ }else{
+ return $result->fetchRow( DB_FETCHMODE_ASSOC );
+ }
+ }