Exemple #1
0
/**
 * Retourne une valeur du tableau config contenu dans le registre
 * @return mixed
 * @param $key String
 */
function _c($key)
{
    $cfg = Registery::get('config');
    if (is_array($cfg)) {
        if (isset($cfg[$key])) {
            return $cfg[$key];
        }
    }
    return null;
}
Exemple #2
0
 /**
  * Le dispatcher qui va lancer l'action en fonction des paramètres
  * @return void
  */
 public static function init()
 {
     // On stock la variable d'environnement qui vient d'apache, pour cela, placer
     // SetEnv Environment (development|production|test)
     $environment = getenv('Environment');
     if ($environment === false) {
         $environment = 'production';
     }
     Registery::set('environment', $environment);
     // configuration du site
     $config = (require LI_APP . '/Config/Config.php');
     Registery::set('config', $config[$environment]);
     $config = Registery::get('config');
     // configuration par default
     Registery::setAndMerge('config', array('default_module' => 'Front', 'default_controller' => 'Index', 'default_action' => 'Index'), true);
     Registery::load('routes', LI_APP . '/Config/Routes.php');
     $db_config = array();
     if (file_exists(LI_APP . '/Config/Database.php')) {
         $db_configs = (require LI_APP . '/Config/Database.php');
         $db_config = $db_configs[$environment];
         Registery::set('db_config', $db_config);
         // initialisation de la bdd
         if (!empty($db_config['dsn']) && !empty($db_config['user'])) {
             Registery::set('db', new Db($db_config['dsn'], $db_config['user'], $db_config['pass']));
         }
     }
     // On construit l'objet requete qui va contenir les params d'entrées
     // ainsi que l'analyse de l'url pour déterminer l'app/controller/action
     // à utiliser
     $request = new Request();
     $params =& $request->getParams();
     Registery::set('params', $params);
     // On insère l'éventuel helper lié à notre application
     if (file_exists(LI_APP . '/Helper/Helper.php')) {
         require_once LI_APP . '/Helper/Helper.php';
     }
     // si le projet contient un fichier boot dans la config
     if (file_exists(LI_APP . '/Config/Boot.php')) {
         include_once LI_APP . '/Config/Boot.php';
         if (function_exists('onBoot')) {
             onBoot($request, $config);
         }
     }
     $response = self::launch($request);
     $response->out();
 }
Exemple #3
0
 /**
  * sous la forme complet : module:controller:action|id=8&user_id=9
  */
 public static function selector($query)
 {
     // requête actuelle (pour compléter les éléments manquants
     $params = Registery::get('params');
     $queryParams = array();
     $tabQuery = explode('|', $query);
     $tabParams = explode(':', $tabQuery[0]);
     if (count($tabParams) == 0) {
         $queryParams['module'] = $params['module'];
         $queryParams['controller'] = $params['controller'];
         $queryParams['action'] = $params['action'];
     } elseif (count($tabParams) == 1) {
         $queryParams['module'] = $params['module'];
         $queryParams['controller'] = $params['controller'];
         $queryParams['action'] = $tabParams[0];
     } elseif (count($tabParams) == 2) {
         $queryParams['module'] = $params['module'];
         $queryParams['controller'] = $tabParams[0];
         $queryParams['action'] = $tabParams[1];
     } elseif (count($tabParams) == 3) {
         $queryParams['module'] = $tabParams[0];
         $queryParams['controller'] = $tabParams[1];
         $queryParams['action'] = $tabParams[2];
     } elseif (count($tabParams) == 4) {
         $queryParams['module'] = $tabParams[0];
         $queryParams['controller'] = $tabParams[1];
         $queryParams['action'] = $tabParams[2];
         $queryParams['id'] = $tabParams[3];
     } else {
         throw new Exception('Mauvais selecteur dans le lien');
     }
     if (!empty($tabQuery[1])) {
         $tabVars = explode('&', $tabQuery[1]);
         if (!empty($tabVars)) {
             foreach ($tabVars as $var) {
                 $tabVar = explode('=', $var);
                 if ($tabVar[0] != 'module' && $tabVar[0] != 'controller' && $tabVar[0] != 'action') {
                     $queryParams[$tabVar[0]] = $tabVar[1];
                 }
             }
         }
     }
     return $queryParams;
 }
Exemple #4
0
 public function init()
 {
     // On commence à virer les magic quote (beuuuuuuuuuuuurk)
     $this->stripslashes();
     $config = Registery::get('config');
     if ($config['url_handler'] == 'modrewrite') {
         $pathinfo = isset($_GET['pathinfo']) ? $_GET['pathinfo'] : '';
     } elseif ($config['url_handler'] == 'multiviews') {
         if (isset($_SERVER['PATH_INFO'])) {
             $pathinfo = substr($_SERVER['PATH_INFO'], 1, strlen($_SERVER['PATH_INFO']) - 1);
         }
     } elseif ($config['url_handler'] == 'querystring') {
         if (isset($_GET['qs'])) {
             $pathinfo = substr($_GET['qs'], 1, strlen($_GET['qs']) - 1);
         }
     } elseif ($config['url_handler'] == 'simple') {
         // Do nothing !
     } else {
         throw new \Exception('Impossible de trouver un support pour ce type d\'url');
     }
     $urlEngineClassName = 'Mynd\\Core\\Url\\' . ucwords($config['url_handler']) . 'Url';
     try {
         $urlEngine = new $urlEngineClassName();
         $route = $urlEngine->url2params($pathinfo, $_GET);
         $this->params = $route['params'];
         $this->routeName = $route['route_name'];
         if (isset($this->params['pathinfo'])) {
             unset($this->params['pathinfo']);
         }
     } catch (Exception $e) {
         echo $e->getMessage();
         die;
     }
     $this->params = array_merge($this->params, $_POST);
     // On stocke les paramètres dans le registre
     Registery::set('route_name', $this->routeName);
     Registery::set('params', $this->params);
 }
 public function params2path($params)
 {
     if (empty($params['controller'])) {
         $params['controller'] = _c('default_controller');
     }
     if (empty($params['action'])) {
         $params['action'] = _c('default_action');
     }
     if (empty($params['module'])) {
         $params['module'] = _c('default_module');
     }
     $routes = Registery::get('routes');
     $url = null;
     foreach ($routes as $route) {
         $badparams = false;
         preg_match_all("/:([a-zA-Z0-9_]*)/", $route['url'], $neededParams);
         if (empty($route['params'])) {
             $route['params'] = array();
         }
         // On vérifie pour chaque variable de l'url que la params correspondant bien
         // à ce qu'on a spécifié dans le tableau params
         $ValueParamsURL = array();
         foreach ($neededParams['1'] as $p) {
             if (isset($params[$p])) {
                 if (isset($route['params'][$p])) {
                     $regexp = $route['params'][$p];
                 } else {
                     $regexp = '[a-zA-Z0-9_]*';
                 }
                 if (preg_match('#' . $regexp . '#i', $params[$p])) {
                     $ValueParamsURL[$p] = $params[$p];
                     // Le params initiale ne correspond pas à la regexp donnée par la route
                 } else {
                     $badparams = true;
                 }
                 // le params existe dans l'url, mais pas de le tableau initial
             } else {
                 $badparams = true;
             }
         }
         if ($badparams) {
             continue;
         }
         // On regroupe les paramètres de l'url et ceux de la route
         $tabParamsURL = array_merge($route['params'], $ValueParamsURL);
         // On vérifie qu'on a bien tous nos paramètres !
         foreach ($tabParamsURL as $key => $value) {
             if (!isset($params[$key]) || $value != $params[$key]) {
                 $badparams = true;
             }
         }
         if ($badparams) {
             continue;
         }
         // On a notre route !
         $finalTabParams = $route;
         $finalNeededParams = $neededParams['1'];
         $finalParamsURL = $tabParamsURL;
         break;
     }
     // on vire le module si on l'a rajouté au début (pour eviter une erreur sur l'indexe null)
     if (is_null($params['module'])) {
         unset($params['module']);
     }
     // On a notre route
     // On met les paramètres de l'url dans l'url
     $url = $finalTabParams['url'];
     foreach ($finalNeededParams as $p) {
         $url = str_replace(':' . $p, $params[$p], $url);
     }
     // On ajoute les ?key=value en regardant ce qui n'a pas encore été mis
     $getParams = array_diff_key($params, $finalParamsURL);
     if (count($getParams) > 0) {
         $tabTempurl = array();
         foreach ($getParams as $key => $value) {
             if (isset($value)) {
                 if (is_array($value)) {
                     foreach ($value as $v) {
                         $tabTempurl[] = $key . '[]=' . urlencode($v);
                     }
                 } else {
                     $tabTempurl[] = $key . '=' . urlencode($value);
                 }
             }
         }
         if (count($tabTempurl)) {
             $url .= '?';
             $url .= implode('&', $tabTempurl);
         }
     }
     return $url;
 }