]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/protected/Portlets/ClientConfiguration.php
baculum: Update copyright dates
[bacula/bacula] / gui / baculum / protected / Portlets / ClientConfiguration.php
1 <?php
2 /**
3  * Bacula® - The Network Backup Solution
4  * Baculum - Bacula web interface
5  *
6  * Copyright (C) 2013-2015 Marcin Haba
7  *
8  * The main author of Baculum is Marcin Haba.
9  * The main author of Bacula is Kern Sibbald, with contributions from many
10  * others, a complete list can be found in the file AUTHORS.
11  *
12  * You may use this file and others of this release according to the
13  * license defined in the LICENSE file, which includes the Affero General
14  * Public License, v3.0 ("AGPLv3") and some additional permissions and
15  * terms pursuant to its AGPLv3 Section 7.
16  *
17  * Bacula® is a registered trademark of Kern Sibbald.
18  */
19
20 Prado::using('System.Web.UI.ActiveControls.TActiveCustomValidator');
21 Prado::using('Application.Portlets.Portlets');
22
23 class ClientConfiguration extends Portlets {
24
25         public function onInit($param) {
26                 parent::onInit($param);
27                 $this->Status->setActionClass($this);
28                 $this->Apply->setActionClass($this);
29         }
30
31         public function configure($clientId) {
32                 $clientdata = $this->Application->getModule('api')->get(array('clients', 'show', $clientId))->output;
33                 $this->ShowClient->Text = implode(PHP_EOL, $clientdata);
34                 $client = $this->Application->getModule('api')->get(array('clients', $clientId))->output;
35                 $this->ClientName->Text = $client->name;
36                 $this->ClientIdentifier->Text = $client->clientid;
37                 $this->ClientDescription->Text = $client->uname;
38                 $this->FileRetention->Text = intval($client->fileretention / 86400); // conversion to days
39                 $this->JobRetention->Text = intval($client->jobretention / 86400); // conversion to days
40                 $this->AutoPrune->Checked = $client->autoprune == 1;
41         }
42
43         public function status($sender, $param) {
44                 $status = $this->Application->getModule('api')->get(array('clients', 'status', $this->ClientIdentifier->Text))->output;
45                 $this->ShowClient->Text = implode(PHP_EOL, $status);
46         }
47
48         public function apply($sender, $param) {
49                 if($this->JobRetentionValidator->IsValid === false || $this->FileRetentionValidator->IsValid === false) {
50                         return false;
51                 }
52                 $client = array();
53                 $client['clientid'] = $this->ClientIdentifier->Text;
54                 $client['fileretention'] = $this->FileRetention->Text * 86400; // conversion to seconds
55                 $client['jobretention'] = $this->JobRetention->Text * 86400; // conversion to seconds
56                 $client['autoprune'] = (integer)$this->AutoPrune->Checked;
57                 $this->Application->getModule('api')->set(array('clients', $client['clientid']), $client);
58         }
59
60         public function fileRetentionValidator($sender, $param) {
61                 $isValid = preg_match('/^\d+$/', $this->FileRetention->Text) && $this->FileRetention->Text >= 0;
62                 $param->setIsValid($isValid);
63         }
64
65         public function jobRetentionValidator($sender, $param) {
66                 $isValid = preg_match('/^\d+$/', $this->JobRetention->Text) && $this->JobRetention->Text >= 0;
67                 $param->setIsValid($isValid);
68         }
69 }
70 ?>