]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/baculum/protected/Portlets/VolumeConfiguration.php
baculum: Show jobs stored on volume
[bacula/bacula] / gui / baculum / protected / Portlets / VolumeConfiguration.php
index 0cb702a5623653c64fcb5f3152c2cfb4fddf2fa7..e9e0215528da6b45c7eeae45fece8bbb11141090 100644 (file)
-<?php\r
-/**\r
- * Bacula® - The Network Backup Solution\r
- * Baculum - Bacula web interface\r
- *\r
- * Copyright (C) 2013-2014 Marcin Haba\r
- *\r
- * The main author of Baculum is Marcin Haba.\r
- * The main author of Bacula is Kern Sibbald, with contributions from many\r
- * others, a complete list can be found in the file AUTHORS.\r
- *\r
- * You may use this file and others of this release according to the\r
- * license defined in the LICENSE file, which includes the Affero General\r
- * Public License, v3.0 ("AGPLv3") and some additional permissions and\r
- * terms pursuant to its AGPLv3 Section 7.\r
- *\r
- * Bacula® is a registered trademark of Kern Sibbald.\r
- */\r
\r
-Prado::using('System.Web.UI.ActiveControls.TActiveDropDownList');\r
-Prado::using('System.Web.UI.ActiveControls.TActiveLabel');\r
-Prado::using('System.Web.UI.ActiveControls.TActiveTextBox');\r
-Prado::using('System.Web.UI.ActiveControls.TActiveCheckBox');\r
-Prado::using('System.Web.UI.ActiveControls.TCallback');\r
-Prado::using('Application.Portlets.Portlets');\r
-\r
+<?php
+/*
+ * Bacula(R) - The Network Backup Solution
+ * Baculum   - Bacula web interface
+ *
+ * Copyright (C) 2013-2016 Kern Sibbald
+ *
+ * The main author of Baculum is Marcin Haba.
+ * The original author of Bacula is Kern Sibbald, with contributions
+ * from many others, a complete list can be found in the file AUTHORS.
+ *
+ * You may use this file and others of this release according to the
+ * license defined in the LICENSE file, which includes the Affero General
+ * Public License, v3.0 ("AGPLv3") and some additional permissions and
+ * terms pursuant to its AGPLv3 Section 7.
+ *
+ * This notice must be preserved when any source code is
+ * conveyed and/or propagated.
+ *
+ * Bacula(R) is a registered trademark of Kern Sibbald.
+ */
+
+Prado::using('System.Web.UI.ActiveControls.TActiveDropDownList');
+Prado::using('System.Web.UI.ActiveControls.TActiveDataGrid');
+Prado::using('System.Web.UI.ActiveControls.TActiveLabel');
+Prado::using('System.Web.UI.ActiveControls.TActiveTextBox');
+Prado::using('System.Web.UI.ActiveControls.TActiveCheckBox');
+Prado::using('System.Web.UI.ActiveControls.TCallback');
+Prado::using('Application.Portlets.Portlets');
+
 class VolumeConfiguration extends Portlets {
-\r
-       private $volumeStatesByDirectorOnly = array('Recycle', 'Purged', 'Error', 'Busy');\r
-\r
-       private $volumeStatesForSet = array('Append', 'Archive', 'Disabled', 'Full', 'Used', 'Cleaning', 'Read-Only');\r
-\r
-       public function onInit($param) {
-               parent::onInit($param);\r
-               $this->Apply->setActionClass($this);\r
-               $this->Prune->setActionClass($this);\r
-               $this->Purge->setActionClass($this);\r
-       }\r
-\r
-       public function configure($mediaId) {\r
-               $voldata = $this->Application->getModule('api')->get(array('volumes', $mediaId))->output;\r
-               $this->VolumeID->Text = $voldata->mediaid;\r
-               $this->VolumeName->Text = $voldata->volumename;\r
-               $volstates = $this->getVolumeStates(true);\r
-               if (!in_array($voldata->volstatus, $volstates)) {\r
-                       array_push($volstates, $voldata->volstatus);\r
-               }\r
-               $volstatesSelect = array();\r
-               for($i = 0; $i < count($volstates); $i++) {\r
-                       $volstatesSelect[$volstates[$i]] = $volstates[$i];\r
-               }\r
-               $this->VolumeStatus->DataSource = $volstatesSelect;\r
-               $this->VolumeStatus->SelectedValue = $voldata->volstatus;\r
-               $this->VolumeStatus->dataBind();\r
-               $this->RetentionPeriod->Text = intval($voldata->volretention / 3600); // conversion to hours\r
-               $this->UseDuration->Text = intval($voldata->voluseduration / 3600);  // conversion to hours\r
-               $this->MaxVolJobs->Text = $voldata->maxvoljobs;\r
-               $this->MaxVolFiles->Text = $voldata->maxvolfiles;\r
-               $this->MaxVolBytes->Text = $voldata->maxvolbytes;\r
-               $this->Slot->Text = $voldata->slot;\r
-               $this->Recycle->Checked = ($voldata->recycle == 1);\r
-               $this->Enabled->Checked = ($voldata->enabled == 1);\r
-               $this->InChanger->Checked = ($voldata->inchanger == 1);\r
-               $pools = $this->Application->getModule('api')->get(array('pools'))->output;\r
-               $poolList = array();\r
-               foreach($pools as $pool) {\r
-                       $poolList[$pool->poolid] = $pool->name;\r
-               }\r
-               $this->Pool->dataSource = $poolList;\r
-               $this->Pool->SelectedValue = $voldata->poolid;\r
-               $this->Pool->dataBind();\r
-       }\r
-\r
-       public function save($sender, $param) {\r
-               switch($sender->getParent()->ID) {\r
-                       case $this->Apply->ID: {\r
-                               $isInvalid = $this->RetentionPeriodValidator->IsValid === false || $this->UseDurationValidator->IsValid === false || $this->MaxVolJobsValidator->IsValid === false || $this->MaxVolFilesValidator->IsValid === false || $this->MaxVolBytesValidator->IsValid === false || $this->SlotValidator->IsValid === false;
-                               if($isInvalid) {\r
-                                       return false;\r
-                               }\r
-                               $voldata = array();\r
-                               $voldata['mediaid'] = $this->VolumeID->Text;\r
-                               $voldata['volstatus'] = $this->VolumeStatus->SelectedValue;\r
-                               $voldata['poolid'] = $this->Pool->SelectedValue;\r
-                               $voldata['volretention'] = $this->RetentionPeriod->Text * 3600; // conversion to seconds\r
-                               $voldata['voluseduration'] = $this->UseDuration->Text * 3600;  // conversion to seconds\r
-                               $voldata['maxvoljobs'] = $this->MaxVolJobs->Text;\r
-                               $voldata['maxvolfiles'] = $this->MaxVolFiles->Text;\r
-                               $voldata['maxvolbytes'] = $this->MaxVolBytes->Text;\r
-                               $voldata['slot'] = $this->Slot->Text;\r
-                               $voldata['recycle'] = (integer)$this->Recycle->Checked;\r
-                               $voldata['enabled'] = (integer)$this->Enabled->Checked;\r
-                               $voldata['inchanger'] = (integer)$this->InChanger->Checked;\r
-                               $this->Application->getModule('api')->set(array('volumes', $voldata['mediaid']), $voldata);\r
-                               break;\r
-                       }\r
-                       case $this->Prune->ID: {\r
-                               $this->Application->getModule('api')->get(array('volumes', 'prune', $this->VolumeID->Text));\r
-                               break;\r
-                       }\r
-                       case $this->Purge->ID: {\r
-                               $this->Application->getModule('api')->get(array('volumes', 'purge', $this->VolumeID->Text));\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-\r
-       public function getVolumeStates($forSetOnly = false) {\r
-               $states = ($forSetOnly === true ) ? $this->volumeStatesForSet : array_merge($this->volumeStatesByDirectorOnly, $this->volumeStatesForSet);\r
-               return $states;\r
-       }\r
-\r
-       public function retentionPeriodValidator($sender, $param) {\r
-               $isValid = preg_match('/^\d+$/', $this->RetentionPeriod->Text) && $this->RetentionPeriod->Text >= 0;\r
-               $param->setIsValid($isValid);\r
-       }\r
-       \r
-       public function useDurationValidator($sender, $param) {\r
+
+       private $volumeStatesByDirectorOnly = array('Recycle', 'Purged', 'Error', 'Busy');
+
+       private $volumeStatesForSet = array('Append', 'Archive', 'Disabled', 'Full', 'Used', 'Cleaning', 'Read-Only');
+
+       public function configure($mediaId) {
+               $voldata = $this->Application->getModule('api')->get(array('volumes', $mediaId))->output;
+               $this->VolumeID->Text = $voldata->mediaid;
+               $this->VolumeName->Text = $voldata->volumename;
+               $volstates = $this->getVolumeStates(true);
+               if (!in_array($voldata->volstatus, $volstates)) {
+                       array_push($volstates, $voldata->volstatus);
+               }
+               $volstatesSelect = array();
+               for($i = 0; $i < count($volstates); $i++) {
+                       $volstatesSelect[$volstates[$i]] = $volstates[$i];
+               }
+               $this->VolumeStatus->DataSource = $volstatesSelect;
+               $this->VolumeStatus->SelectedValue = $voldata->volstatus;
+               $this->VolumeStatus->dataBind();
+               $this->RetentionPeriod->Text = intval($voldata->volretention / 3600); // conversion to hours
+               $this->UseDuration->Text = intval($voldata->voluseduration / 3600);  // conversion to hours
+               $this->MaxVolJobs->Text = $voldata->maxvoljobs;
+               $this->MaxVolFiles->Text = $voldata->maxvolfiles;
+               $this->MaxVolBytes->Text = $voldata->maxvolbytes;
+               $this->Slot->Text = $voldata->slot;
+               $this->Recycle->Checked = ($voldata->recycle == 1);
+               $this->Enabled->Checked = ($voldata->enabled == 1);
+               $this->InChanger->Checked = ($voldata->inchanger == 1);
+               $pools = $this->Application->getModule('api')->get(array('pools'))->output;
+               $poolList = array();
+               foreach($pools as $pool) {
+                       $poolList[$pool->poolid] = $pool->name;
+               }
+               $this->Pool->dataSource = $poolList;
+               $this->Pool->SelectedValue = $voldata->poolid;
+               $this->Pool->dataBind();
+
+               $jobs_on_volume = $this->Application->getModule('api')->get(array('volumes', 'jobs', $voldata->mediaid))->output;
+               $this->JobsOnVolume->DataSource = $this->Application->getModule('misc')->objectToArray($jobs_on_volume);
+               $this->JobsOnVolume->dataBind();
+       }
+
+       public function prune($sender, $param) {
+               $this->Application->getModule('api')->get(array('volumes', 'prune', $this->VolumeID->Text));
+       }
+
+       public function purge($sender, $param) {
+               $this->Application->getModule('api')->get(array('volumes', 'purge', $this->VolumeID->Text));
+       }
+
+       public function apply($sender, $param) {
+               $isInvalid = $this->RetentionPeriodValidator->IsValid === false || $this->UseDurationValidator->IsValid === false || $this->MaxVolJobsValidator->IsValid === false || $this->MaxVolFilesValidator->IsValid === false || $this->MaxVolBytesValidator->IsValid === false || $this->SlotValidator->IsValid === false;
+               if($isInvalid) {
+                       return false;
+               }
+               $voldata = array();
+               $voldata['mediaid'] = $this->VolumeID->Text;
+               $voldata['volstatus'] = $this->VolumeStatus->SelectedValue;
+               $voldata['poolid'] = $this->Pool->SelectedValue;
+               $voldata['volretention'] = $this->RetentionPeriod->Text * 3600; // conversion to seconds
+               $voldata['voluseduration'] = $this->UseDuration->Text * 3600;  // conversion to seconds
+               $voldata['maxvoljobs'] = $this->MaxVolJobs->Text;
+               $voldata['maxvolfiles'] = $this->MaxVolFiles->Text;
+               $voldata['maxvolbytes'] = $this->MaxVolBytes->Text;
+               $voldata['slot'] = $this->Slot->Text;
+               $voldata['recycle'] = (integer)$this->Recycle->Checked;
+               $voldata['enabled'] = (integer)$this->Enabled->Checked;
+               $voldata['inchanger'] = (integer)$this->InChanger->Checked;
+               $this->Application->getModule('api')->set(array('volumes', $voldata['mediaid']), $voldata);
+       }
+
+       public function openJob($sender, $param) {
+               $jobid = $param->CallbackParameter;
+               $this->getPage()->JobConfiguration->configure($jobid);
+       }
+
+       public function getVolumeStates($forSetOnly = false) {
+               $states = ($forSetOnly === true ) ? $this->volumeStatesForSet : array_merge($this->volumeStatesByDirectorOnly, $this->volumeStatesForSet);
+               return $states;
+       }
+
+       public function retentionPeriodValidator($sender, $param) {
+               $isValid = preg_match('/^\d+$/', $this->RetentionPeriod->Text) && $this->RetentionPeriod->Text >= 0;
+               $param->setIsValid($isValid);
+       }
+
+       public function useDurationValidator($sender, $param) {
                $isValid = preg_match('/^\d+$/', $this->UseDuration->Text) && $this->UseDuration->Text >= 0;
                $param->setIsValid($isValid);
-       }\r
-\r
-       public function maxVolJobsValidator($sender, $param) {\r
-               $isValid = preg_match('/^\d+$/', $this->MaxVolJobs->Text) && $this->MaxVolJobs->Text >= 0;\r
-               $param->setIsValid($isValid);\r
-       }\r
-\r
-       public function maxVolFilesValidator($sender, $param) {\r
-               $isValid = preg_match('/^\d+$/', $this->MaxVolFiles->Text) && $this->MaxVolFiles->Text >= 0;\r
-               $param->setIsValid($isValid);\r
-       }\r
-\r
-       public function maxVolBytesValidator($sender, $param) {\r
-               $isValid = preg_match('/^\d+$/', $this->MaxVolBytes->Text) && $this->MaxVolBytes->Text >= 0;\r
-               $param->setIsValid($isValid);\r
-       }\r
-\r
-       public function slotValidator($sender, $param) {\r
-               $isValid = preg_match('/^\d+$/', $this->Slot->Text) && $this->Slot->Text >= 0;\r
-               $param->setIsValid($isValid);\r
-       }\r
-}\r
-?>
\ No newline at end of file
+       }
+
+       public function maxVolJobsValidator($sender, $param) {
+               $isValid = preg_match('/^\d+$/', $this->MaxVolJobs->Text) && $this->MaxVolJobs->Text >= 0;
+               $param->setIsValid($isValid);
+       }
+
+       public function maxVolFilesValidator($sender, $param) {
+               $isValid = preg_match('/^\d+$/', $this->MaxVolFiles->Text) && $this->MaxVolFiles->Text >= 0;
+               $param->setIsValid($isValid);
+       }
+
+       public function maxVolBytesValidator($sender, $param) {
+               $isValid = preg_match('/^\d+$/', $this->MaxVolBytes->Text) && $this->MaxVolBytes->Text >= 0;
+               $param->setIsValid($isValid);
+       }
+
+       public function slotValidator($sender, $param) {
+               $isValid = preg_match('/^\d+$/', $this->Slot->Text) && $this->Slot->Text >= 0;
+               $param->setIsValid($isValid);
+       }
+}
+?>