3 * Bacula(R) - The Network Backup Solution
4 * Baculum - Bacula web interface
6 * Copyright (C) 2013-2016 Kern Sibbald
8 * The main author of Baculum is Marcin Haba.
9 * The original author of Bacula is Kern Sibbald, with contributions
10 * from many others, a complete list can be found in the file AUTHORS.
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.
17 * This notice must be preserved when any source code is
18 * conveyed and/or propagated.
20 * Bacula(R) is a registered trademark of Kern Sibbald.
23 Prado::using('System.Web.UI.ActiveControls.TActiveCustomValidator');
24 Prado::using('Application.Portlets.Portlets');
26 class ClientConfiguration extends Portlets {
28 public function onInit($param) {
29 parent::onInit($param);
30 $this->Status->setActionClass($this);
31 $this->Apply->setActionClass($this);
34 public function configure($clientId) {
35 $clientdata = $this->Application->getModule('api')->get(array('clients', 'show', $clientId))->output;
36 $this->ShowClient->Text = implode(PHP_EOL, $clientdata);
37 $client = $this->Application->getModule('api')->get(array('clients', $clientId))->output;
38 $this->ClientName->Text = $client->name;
39 $this->ClientIdentifier->Text = $client->clientid;
40 $this->ClientDescription->Text = $client->uname;
41 $this->FileRetention->Text = intval($client->fileretention / 86400); // conversion to days
42 $this->JobRetention->Text = intval($client->jobretention / 86400); // conversion to days
43 $this->AutoPrune->Checked = $client->autoprune == 1;
46 public function status($sender, $param) {
47 $status = $this->Application->getModule('api')->get(array('clients', 'status', $this->ClientIdentifier->Text))->output;
48 $this->ShowClient->Text = implode(PHP_EOL, $status);
51 public function apply($sender, $param) {
52 if($this->JobRetentionValidator->IsValid === false || $this->FileRetentionValidator->IsValid === false) {
56 $client['clientid'] = $this->ClientIdentifier->Text;
57 $client['fileretention'] = $this->FileRetention->Text * 86400; // conversion to seconds
58 $client['jobretention'] = $this->JobRetention->Text * 86400; // conversion to seconds
59 $client['autoprune'] = (integer)$this->AutoPrune->Checked;
60 $this->Application->getModule('api')->set(array('clients', $client['clientid']), $client);
63 public function fileRetentionValidator($sender, $param) {
64 $isValid = preg_match('/^\d+$/', $this->FileRetention->Text) && $this->FileRetention->Text >= 0;
65 $param->setIsValid($isValid);
68 public function jobRetentionValidator($sender, $param) {
69 $isValid = preg_match('/^\d+$/', $this->JobRetention->Text) && $this->JobRetention->Text >= 0;
70 $param->setIsValid($isValid);