private function save()
 {
     $this->maintain_type = $this->form->get_value('maintain_type')->get_raw_value();
     switch ($this->maintain_type) {
         case 'during':
             $maintain_during = $this->form->get_value('maintain_during')->get_raw_value();
             $this->maintenance_config->enable_maintenance();
             $this->maintenance_config->set_unlimited_maintenance(false);
             $this->maintenance_config->set_end_date(new Date(time() + 5 + $maintain_during, Timezone::SERVER_TIMEZONE));
             break;
         case 'until':
             $this->maintenance_config->enable_maintenance();
             $this->maintenance_config->set_unlimited_maintenance(false);
             $this->maintenance_config->set_end_date($this->form->get_value('maintain_until'));
             break;
         case 'unlimited':
             $this->maintenance_config->enable_maintenance();
             $this->maintenance_config->set_unlimited_maintenance(true);
             break;
         default:
             $this->maintenance_config->disable_maintenance();
             $this->maintenance_config->set_end_date(new Date());
     }
     if ($this->form->get_value('display_duration')) {
         $this->maintenance_config->set_display_duration(true);
         $this->maintenance_config->set_display_duration_for_admin($this->form->get_value('display_duration_for_admin'));
     } else {
         $this->maintenance_config->set_display_duration(false);
     }
     $this->maintenance_config->set_message($this->form->get_value('message'));
     $this->maintenance_config->set_auth($this->form->get_value('authorizations')->build_auth_array());
     MaintenanceConfig::save();
 }
 public function put_site_under_maintenance()
 {
     $maintenance_config = MaintenanceConfig::load();
     if (!$maintenance_config->is_under_maintenance()) {
         $maintenance_config->enable_maintenance();
         $maintenance_config->set_unlimited_maintenance(true);
         MaintenanceConfig::save();
     }
 }