/** * 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 } }