/**
  * Cette fonction permet la mise à jour du statut d'un élement directement depuis le listing
  *
  * @param 	integer $id Identifiant de l'élément dont le statut doit être modifié
  * @access 	public
  * @author 	koéZionCMS
  * @version 0.1 - 24/09/2012 by FI
  * @version 0.2 - 26/02/2013 by FI - Modification de la gestion de l'installation des plugins
  * @version 0.3 - 03/10/2014 by FI - Correction erreur surcharge de la fonction, rajout de tous les paramètres
  */
 public function backoffice_statut($id, $redirect = true)
 {
     $elementStatus = parent::backoffice_statut($id, false);
     //On fait appel à la fonction d'édition parente
     $conditions = array('conditions' => array('id' => $id));
     $plugin = $this->Plugin->findFirst($conditions);
     //On arrive dans ce cas si online = 0 et installed = 0
     //Du coup après la mise à jour du status on à online = 1 et installed = 0
     //Le plugin n'est donc pas en ligne et pas installé
     //On l'installe et on l'active
     if ($plugin['online'] && !$plugin['installed']) {
         $isInstalled = false;
         //Par défaut le plugin est considéré comme non installé
         $pluginName = Inflector::camelize($plugin['code']) . 'Plugin';
         //Génération du nom du plugin
         $pluginFile = PLUGINS . DS . $plugin['code'] . DS . 'plugin.php';
         //Chemin vers le fichier d'installation du plugin
         $isInstalled = true;
         //Par défaut on considère que le plugin est installé
         if (FileAndDir::fexists($pluginFile)) {
             //Si le fichier existe
             require_once $pluginFile;
             //Chargement du fichier
             $pluginClass = new $pluginName();
             //Création d'un objet plugin
             $isInstalled = $pluginClass->install($this);
             //on lance le process d'installation
             /*if(method_exists($pluginClass, 'install')) { //On teste si le plugin possède une méthode d'installation
             			
             			if($pluginClass->install($this)) { $isInstalled = true; } //Si oui on la lance
             		} 
             		else { $isInstalled = true; } //Si non on considère qu'il est installé*/
         }
         /*else { $isInstalled = true; }*/
         //Si non on considère qu'il est installé
         //Si le plugin est installé on va le sauvegarder en bdd
         if ($isInstalled) {
             $this->Plugin->save(array('id' => $id, 'installed' => 1));
             Session::setFlash('Le plugin est correctement installé');
         } else {
             Session::setFlash("Problème lors de l'installation du plugin", 'error');
         }
         //On arrive dans ce cas si online = 1 et installed = 1
         //Du coup après la mise à jour du status on à online = 0 et installed = 1
         //Le plugin est donc en ligne et installé cela veut donc dire qu'on souhaite le passer hors ligne
     } else {
         if (!$plugin['online'] && $plugin['installed']) {
             //Si le plugin est désactivé on désactive également le module
             $sqlModule = "UPDATE modules SET online = 0 WHERE plugin_id = " . $id . ";";
             $this->Plugin->query($sqlModule);
             Session::setFlash('Le plugin est correctement désactivé');
             //On arrive dans ce cas si online = 0 et installed = 1
             //Du coup après la mise à jour du status online = 1 et installed = 1
             //Le plugin était donc installé mais hors ligne donc on le réactive
         } else {
             if ($plugin['online'] && $plugin['installed']) {
                 //Si le plugin est désactivé on désactive également le module
                 $sqlModule = "UPDATE modules SET online = 1 WHERE plugin_id = " . $id . ";";
                 $this->Plugin->query($sqlModule);
                 Session::setFlash('Le plugin est correctement activé');
             }
         }
     }
     //On va contrôller la valeur du champ online pour le plugin et remettre à jour la table des modules
     //if($plugin['online']) { $sqlModule = "UPDATE modules SET online = 1 WHERE plugin_id = ".$id.";"; }
     //else { $sqlModule = "UPDATE modules SET online = 0 WHERE plugin_id = ".$id.";"; }
     //$this->Plugin->query($sqlModule);
     FileAndDir::delete_directory_file(TMP . DS . 'cache' . DS . 'models' . DS);
     //Suppression du fichier de cache de la bdd
     FileAndDir::remove(TMP . DS . 'cache' . DS . 'variables' . DS . 'Plugins' . DS . 'plugins.cache');
     //Suppression du fichier de cache des plugins
     $this->redirect('backoffice/plugins/index');
     //On retourne sur la page de listing
 }
 /**
  * Cette fonction permet la mise à jour du statut d'un élement directement depuis le listing
  *
  * @param 	integer $id Identifiant de l'élément dont le statut doit être modifié
  * @access 	public
  * @author 	koéZionCMS
  * @version 0.1 - 23/03/2012 by FI
  * @version 0.2 - 03/10/2014 by FI - Correction erreur surcharge de la fonction, rajout de tous les paramètres
  */
 public function backoffice_statut($id, $redirect = true)
 {
     $parentStatut = parent::backoffice_statut($id, false);
     //On fait appel à la fonction d'édition parente
     if ($parentStatut) {
         $vars = $this->get('vars');
         //Récupération des données
         $this->_update_children_statut($id, $vars['newOnline']);
         $this->redirect('backoffice/categories/index');
         //On retourne sur la page de listing
     }
 }