]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/baculum/protected/Web/Portlets/DirectiveSchedule.php
baculum: Fix saving boolean values in schedule Run directive
[bacula/bacula] / gui / baculum / protected / Web / Portlets / DirectiveSchedule.php
index b34d8f1cc3e630ea3216b506037ca62655e6f66a..8b7ead3167ce4e5261a03cbfca7a4e3a2c66b638 100644 (file)
@@ -79,7 +79,6 @@ class DirectiveSchedule extends DirectiveListTemplate {
                'WdayRangeTo',
                'TimeHourAt',
                'TimeMinAt',
-               'TimeHourHourly',
                'TimeMinHourly'
        );
 
@@ -106,9 +105,6 @@ class DirectiveSchedule extends DirectiveListTemplate {
                                $directive_desc = $resource_desc[$this->overwrite_directives[$i]];
                        }
                        if (is_object($directive_desc)) {
-                               if (property_exists($directive_desc, 'Required')) {
-                                       $required = $directive_desc->Required;
-                               }
                                if (property_exists($directive_desc, 'DefaultValue')) {
                                        $default_value = $directive_desc->DefaultValue;
                                }
@@ -246,6 +242,9 @@ class DirectiveSchedule extends DirectiveListTemplate {
                $this->WeekRangeTo->setDirectiveValue($week_range_to);
 
                $wdays_long = array_values(Params::$wdays);
+               $this->Wday->setData(Params::$wdays);
+               $this->WdayRangeFrom->setData(Params::$wdays);
+               $this->WdayRangeTo->setData(Params::$wdays);
 
                $wday_single = null;
                $wday_range_from = null;
@@ -271,13 +270,30 @@ class DirectiveSchedule extends DirectiveListTemplate {
                $minute = null;
                if ($load_values) {
                        $hour = $directives->Hour[0]; // @TODO: Check for many hour values;
-                       $minute = $directives->Minute;
+                       /**
+                        * Check if Minute property exists because of bug about missing Minute
+                        * @see http://bugs.bacula.org/view.php?id=2318
+                        */
+                       $minute = property_exists($directives, 'Minute') ? $directives->Minute : 0;
                }
                $this->directives['time'] = array(
                        'hour' => $hour,
                        'minute' => $minute
                );
-               $this->TimeAt->Checked = true;
+               if ($load_values) {
+                       if (count($directives->Hour) == 24) {
+                               $this->TimeHourly->Checked = true;
+                               $this->TimeMinHourly->setDirectiveValue($minute);
+                       } elseif (count($directives->Hour) == 1) {
+                               $this->TimeAt->Checked = true;
+                               $this->TimeHourAt->setDirectiveValue($hour);
+                               $this->TimeMinAt->setDirectiveValue($minute);
+                       } else {
+                               $this->TimeDisable->Checked = true;
+                       }
+               } else {
+                       $this->TimeDisable->Checked = true;
+               }
        }
 
        public function getDirectiveValue() {
@@ -302,7 +318,10 @@ class DirectiveSchedule extends DirectiveListTemplate {
                                        // value the same as default value, skip it
                                        continue;
                                }
-                               $directive_values[] = "{$directive_name}={$directive_value}";
+                               if ($this->directive_types[$i] === 'DirectiveBoolean') {
+                                       $directive_value = Params::getBoolValue($directive_value);
+                               }
+                               $directive_values[] = "{$directive_name}=\"{$directive_value}\"";
                        }
                }
 
@@ -343,9 +362,9 @@ class DirectiveSchedule extends DirectiveListTemplate {
                        $minute = sprintf('%02d', $this->TimeMinAt->getDirectiveValue());
                        $directive_values[] = "at {$hour}:{$minute}";
                } elseif ($this->TimeHourly->Checked === true) {
-                       $hour = $this->TimeHourHourly->getDirectiveValue();
+                       $hour = '00';
                        $minute = sprintf('%02d', $this->TimeMinHourly->getDirectiveValue());
-                       $directive_values[] = "at {$hour}:{$minute}";
+                       $directive_values[] = "hourly at {$hour}:{$minute}";
                }
 
                $directive_value = array('Run' => implode(' ', $directive_values));