* Bacula(R) - The Network Backup Solution
* Baculum - Bacula web interface
*
- * Copyright (C) 2013-2015 Marcin Haba
+ * Copyright (C) 2013-2016 Kern Sibbald
*
* The main author of Baculum is Marcin Haba.
* The original author of Bacula is Kern Sibbald, with contributions
class JobManager extends TModule {
- public function getJobs($limit) {
+ public function getJobs($limit, $allowedJobs = array()) {
$criteria = new TActiveRecordCriteria;
$order = 'JobId';
$cfg = $this->Application->getModule('configuration');
if(is_int($limit) && $limit > 0) {
$criteria->Limit = $limit;
}
+
+ if (count($allowedJobs) > 0) {
+ $where = array();
+ $names = array();
+ for ($i = 0; $i < count($allowedJobs); $i++) {
+ $where[] = "name = :name$i";
+ $names[":name$i"] = $allowedJobs[$i];
+ }
+ $criteria->Condition = implode(' OR ', $where);
+ foreach($names as $name => $jobname) {
+ $criteria->Parameters[$name] = $jobname;
+ }
+ }
return JobRecord::finder()->findAll($criteria);
}
}
public function getRecentJobids($jobname, $clientid) {
- $sql = "name='$jobname' AND clientid='$clientid' AND jobstatus IN ('T', 'W') AND level IN ('F', 'I', 'D') ORDER BY endtime DESC";
+ $sql = "name='$jobname' AND clientid='$clientid' AND jobstatus IN ('T', 'W') AND level IN ('F', 'I', 'D')";
$finder = JobRecord::finder();
- $jobs = $finder->findAll($sql);
+ $criteria = new TActiveRecordCriteria;
+ $order = 'EndTime';
+ $cfg = $this->Application->getModule('configuration');
+ $appCfg = $cfg->getApplicationConfig();
+ if($cfg->isPostgreSQLType($appCfg['db']['type'])) {
+ $order = strtolower($order);
+ }
+ $criteria->OrdersBy[$order] = 'desc';
+ $criteria->Condition = $sql;
+ $jobs = $finder->findAll($criteria);
$jobids = array();
$waitForFull = false;
return $jobids;
}
- public function getJobTotals() {
+ public function getJobTotals($allowedJobs = array()) {
$jobtotals = array('bytes' => 0, 'files' => 0);
$connection = JobRecord::finder()->getDbConnection();
$connection->setActive(true);
- $sql = "SELECT sum(JobFiles) AS files, sum(JobBytes) AS bytes FROM Job";
+
+ $where = '';
+ if (count($allowedJobs) > 0) {
+ $where = " WHERE name='" . implode("' OR name='", $allowedJobs) . "'";
+ }
+
+ $sql = "SELECT sum(JobFiles) AS files, sum(JobBytes) AS bytes FROM Job $where";
$pdo = $connection->getPdoInstance();
$result = $pdo->query($sql);
$ret = $result->fetch();