diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index 74c1cd69e..fc9f6c7e4 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -16,6 +16,7 @@ require_once "Database.php"; require_once "Timezone.php"; require_once __DIR__.'/forms/helpers/ValidationTypes.php'; require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php'; +require_once __DIR__.'/controllers/plugins/Maintenance.php'; require_once (APPLICATION_PATH."/logging/Logging.php"); Logging::setLogPath('/var/log/airtime/zendphp.log'); @@ -198,5 +199,11 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 'action' => 'password-change', ))); } + + public function _initPlugins() + { + $front = Zend_Controller_Front::getInstance(); + $front->registerPlugin(new Zend_Controller_Plugin_Maintenance()); + } } diff --git a/airtime_mvc/application/controllers/IndexController.php b/airtime_mvc/application/controllers/IndexController.php index 8dcdb3a64..232623bc9 100644 --- a/airtime_mvc/application/controllers/IndexController.php +++ b/airtime_mvc/application/controllers/IndexController.php @@ -18,4 +18,9 @@ class IndexController extends Zend_Controller_Action $this->_helper->layout->setLayout('layout'); } + public function maintenanceAction() + { + $this->getResponse()->setHttpResponseCode(503); + } + } diff --git a/airtime_mvc/application/controllers/UpgradeController.php b/airtime_mvc/application/controllers/UpgradeController.php index 28b1abc87..c09d58953 100644 --- a/airtime_mvc/application/controllers/UpgradeController.php +++ b/airtime_mvc/application/controllers/UpgradeController.php @@ -17,6 +17,12 @@ class UpgradeController extends Zend_Controller_Action return; } + //Disable Airtime UI + //create a temporary maintenance notification file + $maintenanceFile = '/tmp/maintenance.txt'; + $file = fopen($maintenanceFile, 'w'); + fclose($file); + //Begin upgrade $filename = isset($_SERVER['AIRTIME_CONF']) ? $_SERVER['AIRTIME_CONF'] : "/etc/airtime/airtime.conf"; $values = parse_ini_file($filename, true); @@ -75,6 +81,8 @@ class UpgradeController extends Zend_Controller_Action $file = new SplFileObject($iniFile, "w"); $file->fwrite($beginning."\n".$newLines.$end); + unlink($maintenanceFile); + $this->getResponse() ->setHttpResponseCode(200) ->appendBody("Upgrade to Airtime 2.5.3 OK"); diff --git a/airtime_mvc/application/controllers/plugins/Maintenance.php b/airtime_mvc/application/controllers/plugins/Maintenance.php new file mode 100644 index 000000000..46937f582 --- /dev/null +++ b/airtime_mvc/application/controllers/plugins/Maintenance.php @@ -0,0 +1,15 @@ +maintenanceFile)) { + $request->setModuleName('default') + ->setControllerName('index') + ->setActionName('maintenance') + ->setDispatched(true); + } + } +} \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/index/maintenance.phtml b/airtime_mvc/application/views/scripts/index/maintenance.phtml new file mode 100644 index 000000000..5a2277989 --- /dev/null +++ b/airtime_mvc/application/views/scripts/index/maintenance.phtml @@ -0,0 +1 @@ +Airtime is down for maintenance. We'll be back soon!