Un mode « offline » avec CodeIgniter
Tous les sites peuvent un jour ou l’autre se retrouver en position de maintenance. Dans ce billet, je vais vous présenter une méthode que j’utilise assez souvent et qui permet de vous simplifier la vie.
La logique est simple, nous devons détecter si le site est en maintenance, et si c’est le cas, renvoyer tous les visiteurs vers une page pour informer l’utilisateur.
Pour cela nous allons utiliser dans un premier temps une variable que nous allons mettre dans un fichier /application/config/application.php ceci :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
$config['site_offline'] = FALSE;
/* End of file application.php */
/* Location: ./application/config/application.php */
Ensuite nous allons modifier le fichier que nous avions créer dans ce billet afin d’agir en amont de chaque contrôleur de l’application :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
if (config_item('site_offline') && $this->uri->segment(1) == 'offline')) {
$this->load->helper('url');
redirect('offline');
}
}
}
/* End of file MY_Controller.php */
/* Location: ./application/core/MY_Controller.php */
Lorsque l’utilisateur ouvre une page, on vérifie la variable « site_offline » afin d’autoriser ou non la consultation du site. C’est de loin la solution la plus simple à mettre en place. Les dernières étapes consiste à créer un contrôleur, deux vues et une route. Commençons par le fichier /application/config/routes.php que nous allons modifier comme cela :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
$route['default_controller'] = "home";
$route['404_override'] = "";
$route['offline'] = "home/offline";
/* End of file routes.php */
/* Location: ./application/config/routes.php */
Ensuite il nous faut créer notre contrôleur :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Home extends MY_Controller {
public function index() {
$this->load->view('home');
}
public function offline() {
// on contrôle juste que nous sommes bien en maintenance ;-)
if (config_item('offline')) {
$this->load->view('offline');
} else {
$this->load->view('home');
}
}
}
/* End of file home.php */
/* Location: ./application/controllers/home.php */
Nos vue sont assez classiques, je vous laisse donc les créer (vous pourrez récupérer un exemple dans l’archive à télécharger) Donc nous disposons d’une maintenance qu’il suffit d’activer en changeant la valeur de site_offline dans notre fichier de configuration.
Je prépare d’autres billets sur les points suivants :
- Stockage de la configuration en base de données (pour pouvoir l’intégrer plus facilement dans une partie administration du site par exemple)
- Gestion des utilisateurs pour permettre aux administrateurs par exemple de pouvoir accéder au site en maintenance.
Bref encore quelques informations qui devraient vous être utiles ;-)
- 27 janvier 2012 Aucun commentaire Rédigé dans : Développement Tags : CodeIgniter, KISS, PHP
Laisser un commentaire
