├── .gitignore ├── MaintenanceController.php ├── MaintenanceMode.php ├── composer.json ├── readme.md └── views └── index.php /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /MaintenanceController.php: -------------------------------------------------------------------------------- 1 | renderPartial('index'); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /MaintenanceMode.php: -------------------------------------------------------------------------------- 1 | enabledMode) { 23 | 24 | $disable = in_array(Yii::app()->user->name, $this->users); 25 | foreach ($this->roles as $role) { 26 | $disable = $disable || Yii::app()->user->checkAccess($role); 27 | } 28 | 29 | $disable = $disable || in_array(Yii::app()->request->getPathInfo(), $this->urls); 30 | 31 | $disable = $disable || in_array($this->getIp(), $this->ips);//check "allowed IP" 32 | 33 | if (!$disable) { 34 | if ($this->capUrl === 'maintenance/index') { 35 | Yii::app()->controllerMap['maintenance'] = 'application.extensions.MaintenanceMode.MaintenanceController'; 36 | } 37 | 38 | Yii::app()->catchAllRequest = array($this->capUrl); 39 | } 40 | } 41 | 42 | } 43 | 44 | //get user IP 45 | protected function getIp() 46 | { 47 | $strRemoteIP = $_SERVER['REMOTE_ADDR']; 48 | if (!$strRemoteIP) { $strRemoteIP = urldecode(getenv('HTTP_CLIENTIP')); } 49 | if (getenv('HTTP_X_FORWARDED_FOR')) { $strIP = getenv('HTTP_X_FORWARDED_FOR'); } 50 | elseif (getenv('HTTP_X_FORWARDED')) { $strIP = getenv('HTTP_X_FORWARDED'); } 51 | elseif (getenv('HTTP_FORWARDED_FOR')) { $strIP = getenv('HTTP_FORWARDED_FOR'); } 52 | elseif (getenv('HTTP_FORWARDED')) { $strIP = getenv('HTTP_FORWARDED'); } 53 | else { $strIP = $_SERVER['REMOTE_ADDR']; } 54 | 55 | if ($strRemoteIP != $strIP) { $strIP = $strRemoteIP.", ".$strIP; } 56 | return $strIP; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ekaragodin/yii-maintenance-mode", 3 | "description": "Maintenance mode for Yii framework.", 4 | "license": "BSD-3-Clause", 5 | "authors": [ 6 | { 7 | "name": "ekaragodin", 8 | "email": "ekaragodin@gmail.com" 9 | } 10 | ], 11 | "minimum-stability": "dev", 12 | "require": {}, 13 | "autoload": { 14 | "psr-4": { 15 | "": "" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | #Maintenance mode for Yii framework. 2 | 3 | ##Install 4 | Copy extension to your folder path/to/extensions. 5 | 6 | Or add 7 | 8 | ``` 9 | "ekaragodin/yii-maintenance-mode": "dev-master" 10 | ``` 11 | 12 | to the require section of your `composer.json` file. 13 | 14 | Add to config/main.php: 15 | 16 | 'preload' => array('log', 'maintenanceMode'), 17 | ... 18 | 'components' => array( 19 | 'maintenanceMode' => array( 20 | 'class' => 'application.extensions.MaintenanceMode.MaintenanceMode', 21 | ), 22 | ... 23 | ), 24 | 25 | ##Options 26 | 27 | 'maintenanceMode' => array( 28 | 'class' => 'application.extensions.MaintenanceMode.MaintenanceMode', 29 | 'enabledMode' => true, 30 | 'message' => 'Hello!', 31 | // or 32 | //'capUrl' => 'site/contact', 33 | // allowed users 34 | 'users' => array('admin', ), 35 | // allowed roles 36 | 'roles' => array('Administrator', ), 37 | // allowed IP 38 | 'ips' => array('123.456.789.000', ), 39 | // allowed urls 40 | 'urls' => array('/site/login', '/login', ), 41 | ), 42 | 43 | -------------------------------------------------------------------------------- /views/index.php: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 | 6 | 7 | 8 |