Example #1
0
 /**
  * Cette fonction permet le chargement d'un model
  * 
  * Appel possible dans un contrôleur : 
  * 
  * 		$databaseConfigs = array(
  * 			'host' => "localhost",
  * 			'login' => "root",
  * 			'password' => "",
  * 			'database' => "koezion_madatabase",
  * 			'prefix' => "",
  * 			'socket' => "",
  * 			'port' => "",
  * 			'source' => "mysql"
  * 		);
  * 		$externalSlider = $this->load_model('Slider', true, $databaseConfigs);
  * 		pr($externalSlider->find());
  *
  * @param varchar 	$name 				Nom du model à charger
  * @param boolean 	$return 			Indique si il faut ou non retourner l'objet
  * @param array 	$databaseConfigs 	Configuration de connexion différentes de celles par défaut
  * @return Objet ou rien
  * @access public
  * @author koéZionCMS
  * @version 0.1 - 23/12/2011 by FI
  * @version 0.2 - 18/03/2014 by FI - Reprise du chargement des modèles des plugins
  * @version 0.3 - 03/06/2014 by FI - Rajout de la variable $databaseConfigs permettant la connexion à une autre BDD
  * @version 0.4 - 08/08/2014 by FI - Modification des données envoyées au constructeur, création de la variable $modelParams
  */
 public function load_model($name, $return = false, $databaseConfigs = null)
 {
     //En premier lieu on test si le model n'est pas déjà instancié
     //et si il ne l'est pas on procède à son intenciation
     if (!isset($this->{$name})) {
         $file_path = '';
         $file_name = Inflector::underscore($name) . '.php';
         //Nom du fichier à charger
         $file_path_default = ROOT . DS . 'models' . DS . $file_name;
         //Chemin vers le fichier à charger
         //Pour déterminer le dossier du plugin nous devons transformer le nom du model à charger
         //Etape 1 : passage au pluriel
         //Etape 2 : transformation du camelCased en _
         $pluginPluralizeName = Inflector::pluralize($name);
         $pluginUnderscoreName = Inflector::underscore($pluginPluralizeName);
         //////////////////////////////////////////////
         //   RECUPERATION DES CONNECTEURS PLUGINS   //
         $pluginsConnectors = get_plugins_connectors();
         if (isset($pluginsConnectors[$pluginUnderscoreName])) {
             $connectorModel = $pluginsConnectors[$pluginUnderscoreName];
             $file_path_plugin = PLUGINS . DS . $connectorModel . DS . 'models' . DS . $file_name;
             //Chargement de l'éventuel fichier supplémentaire pour les models
             $pluginModelBoostrap = PLUGINS . DS . $connectorModel . DS . 'model.php';
             if (file_exists($pluginModelBoostrap)) {
                 require_once $pluginModelBoostrap;
             }
         }
         //////////////////////////////////////////////
         if (isset($file_path_plugin) && file_exists($file_path_plugin)) {
             $file_path = $file_path_plugin;
         } else {
             if (file_exists($file_path_default)) {
                 $file_path = $file_path_default;
             }
         }
         //Sinon on test si le model par défaut existe
         //On va tester l'existence de ce fichier
         if (!file_exists($file_path)) {
             Session::write('redirectMessage', "Impossible de charger le modèle " . $name . " dans le fichier controller");
             $this->redirect('home/e404');
             die;
         }
         require_once $file_path;
         //Inclusion du fichier
         $modelParams = null;
         if (isset($this->request)) {
             $modelParams['url'] = $this->request->fullUrl;
             $modelParams['controller_action'] = isset($this->request->controller) && isset($this->request->action) ? $this->request->controller . '/' . $this->request->action : '';
         }
         if ($return) {
             return new $name($modelParams, $databaseConfigs);
         } else {
             $this->{$name} = new $name($modelParams, $databaseConfigs);
         }
         //Création d'un objet Model de type $name que l'on va instancier dans la classe
     }
 }
Example #2
0
 /**
  * Cette fonction va charger le fichier contenant la classe d'un controller
  *
  * @param 	varchar	$controllerToLoad Contrôleur à charger
  * @return 	varchar Nom du contrôleur souhaité
  * @access	public
  * @author	koéZionCMS
  * @version 0.1 - 23/12/2011
  * @version 0.2 - 20/10/2013 by AB - Rajout de la gestion du dossier du plugin 
  * @version 0.3 - 18/03/2014 by FI - Allègement de la gestion du chargement du fichier du controller 
  * @version 0.4 - 12/04/2014 by FI - Suppression de _plugin dans le nom d'un controller de plugin 
  * @version 0.5 - 12/04/2014 by FI - Annulation suppression de _plugin dans le nom d'un controller de plugin car un plugin peut potentiellement avoir le même nom qu'un controller existant 
  */
 public function load_controller_file($controllerToLoad = null)
 {
     if (isset($controllerToLoad) && !empty($controllerToLoad)) {
         $this->request->controller = $controllerToLoad;
     }
     $controllerName = strtolower($this->request->controller . '_controller');
     //On récupère dans une variable le nom du controller
     $controllerPath = CONTROLLERS . DS . $controllerName . '.php';
     //On récupère dans une variable le chemin du controller
     //////////////////////////////////////////////
     //   RECUPERATION DES CONNECTEURS PLUGINS   //
     //Les connecteurs sont utilisés pour la correspondance entre les plugins et les dossiers des plugins
     $pluginsConnectors = get_plugins_connectors();
     if (isset($pluginsConnectors[$this->request->controller])) {
         $this->request->pluginFolder = $folderPlugin = $pluginsConnectors[$this->request->controller];
         //Récupération du dossier du plugin si le controller appellé est dans un connector d'un plugin
         $controllerPath = PLUGINS . DS . $folderPlugin . DS . 'controllers' . DS . $controllerName . '.php';
         $controllerName = strtolower($this->request->controller . '_plugin_controller');
     }
     //////////////////////////////////////////////
     if (file_exists($controllerPath)) {
         if (isset($folderPlugin)) {
             //On doit contrôler si le plugin est installé en allant lire le fichiers
             $pluginsList = Cache::exists_cache_file(TMP . DS . 'cache' . DS . 'variables' . DS . 'Plugins' . DS, "plugins");
             $pluginControllerToLoad = Inflector::camelize($folderPlugin);
             if (!isset($pluginsList[$pluginControllerToLoad])) {
                 $message = "Le controller du plugin " . $this->request->controller . " n'existe pas" . " dans le fichier dispatcher ou n'est pas correctement installé";
                 $this->error($message);
                 die;
             }
             $pluginControllerBoostrap = PLUGINS . DS . $folderPlugin . DS . 'controller.php';
             if (file_exists($pluginControllerBoostrap)) {
                 require_once $pluginControllerBoostrap;
             }
         }
         require_once $controllerPath;
         //Inclusion de ce fichier si il existe
         return $controllerName;
     } else {
         if (isset($folderPlugin)) {
             $message = "Le controller du plugin " . $this->request->controller . " n'existe pas" . " dans le fichier dispatcher ou n'est pas correctement installé";
         } else {
             $message = "Le controller " . $this->request->controller . " n'existe pas" . " dans le fichier dispatcher";
         }
         $this->error($message);
         die;
     }
 }
Example #3
0
 * @param varchar $file Chemin 
 * @access 	public
 * @author 	koéZionCMS
 * @version 0.1 - 16/10/2014 by FI 
 */
function get_path_from_server_origin($file)
{
    $file = str_replace(BASE_URL, '', $file);
    $file = str_replace('/', DS, $file);
    return ROOT . $file;
}
/**
 * Gestion de la fonction _() utilisée par GetText pour la localisation
 * On test si le plugin localization n'est pas en cours d'utilisation car la fonction _() est déjà implémentée dans la librairie GetText
 */
if (!in_array('localization', get_plugins_connectors()) && !function_exists('_')) {
    function _($text)
    {
        return $text;
    }
}
/**
 * Convenience method for echo().
 *
 * @param string $text String to echo
 * @link http://book.cakephp.org/view/1129/e
 * @deprecated Will be removed in 2.0
 */
function e($text)
{
    echo $text;