Vous êtes connecté en tant que anonymous Se Deconnecter
application/class/Url.php
137b5e76
 <?php
 
daf6e125
 namespace MVC\Classe;
 
137b5e76
 class Url
 {
 	public $page;
c2e0b12e
 	public $registre;
137b5e76
 	
 	
aed8ee26
 	public function __construct(){
ff461209
 
59ab808b
 	    //on créé le registre des modules symfony
c2e0b12e
 	    $this->registre = new \MVC\Classe\ModularRegister();
3957c7ee
 
59ab808b
 	    //définition des parametres de base
c2e0b12e
         $page = array();
         $page['name'] = 'accueil';
         $page['description'] = "";
         $page['params'] = array();
         $page['control'] = false;
3957c7ee
 
 
 
c2e0b12e
         $url = parse_url($_SERVER['REQUEST_URI']);
         $urlTrim = trim( $url['path'] , '/' );
         $urlParts = explode('/' , $urlTrim );
 
         //print_r($urlParts);
         if(isset($urlParts[0])) {
             //Récupération du nom de la page
             ($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'accueil' : $page['name'] = $urlParts[0];
             //array_shift($urlParts);
             unset($urlParts[0]);
         }else{
             $page['name'] = 'accueil';
         }
3957c7ee
 
c2e0b12e
         if($page['name'] == 'control'){
             $page['control'] = true;
             ($urlParts[1] == 'index' || $urlParts[1] == '' ) ? $page['name']='accueil' : $page['name']=$urlParts[1];
             //array_shift($urlParts);
             unset($urlParts[1]);
3957c7ee
 
c2e0b12e
         }
aed8ee26
 
59ab808b
         //vérification du nombre de parametres:
c2e0b12e
         $numParts = count($urlParts);
59ab808b
         //s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony
c2e0b12e
         if ( $numParts%2 != 0 ) {
59ab808b
             //si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
c2e0b12e
             if( !in_array($page['name'], $this->registre->getIndex()) ){
                 $page['name'] = 'error';
                 $page['params'] = array();
71ac33a8
                 $this->page = $page;
                 return;
c2e0b12e
             }
59ab808b
         //cas d'utilisation normal : il existe autant de clé que de valeurs
         } else if ( $numParts != 0 ) {
c2e0b12e
             $values = array();
             $keys = array();
             foreach( $urlParts as $key => $value ){
                 if($key%2 == 0) {
                     $values[] = $value;
                 } else {
                     $keys[] = $value;
                 }
             }
             if($page['control']){
                 $page['params'] = array_combine($values, $keys);
             }else {
                 $page['params'] = array_combine($keys, $values);
             }
         }
         //verification de l'existence de la page dans les controlleurs
         if($page['control']){
             $pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
3957c7ee
         }else {
c2e0b12e
             $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
3957c7ee
         }
c2e0b12e
 
         if(!file_exists($pageFile)){
             $page['name'] = 'error';
         }
         $this->page = $page;
 
     }
137b5e76
 }