public function testParse()
 {
     $testUrl = "test.php?var=value";
     CopixConfig::instance()->significant_url_mode = 'default';
     $this->assertContains("value", CopixUrl::parse($testUrl, true));
     CopixConfig::instance()->significant_url_mode = 'prepend';
     $this->assertContains("value", CopixUrl::parse($testUrl, true));
 }
 /**
  * Construction du controller
  * @param   string  $configFile     chemin du fichier de configuration du projet
  */
 public function __construct($configFile)
 {
     self::$_instance = $this;
     // creating CopixConfig Object and includes the asked configuration file.
     $config = CopixConfig::instance();
     require $configFile;
     if ($config->copixerrorhandler_enabled) {
         Copix::setErrorHandler(new CopixErrorHandler($config));
     }
     CopixRequest::setRequest(array_merge(array('module' => 'default', 'group' => 'default', 'action' => 'default'), CopixUrl::parse(CopixUrl::getRequestedPathInfo(), false, true)));
     // do what we need for each plugin before starting the session
     $this->_beforeSessionStart();
     if ($config->sessionName != null) {
         session_name($config->sessionName);
     }
     session_start();
     $config->afterSessionStart();
 }
 /**
  * It set many properties of the object, get all GET and POST parameters, and start session.
  * @param   string  $configFile     chemin du fichier de configuration du projet
  */
 function CopixCoordination($configFile)
 {
     // register itself in the global variable.
     $GLOBALS['COPIX']['COORD'] =& $this;
     // creating CopixConfig Object and includes the asked configuration file.
     $GLOBALS['COPIX']['CONFIG'] =& CopixConfig::instance();
     require $configFile;
     /**
      * EXPERIMENTAL : support des URLs significatifs
      */
     $scriptNameAndPath = $_SERVER['SCRIPT_NAME'];
     //condidering : http://mysite.com/subdir/index.php/mypath/myaction?myparams=myvalues
     //following is subdir/
     $GLOBALS['COPIX']['CONFIG']->significant_url_script_path = substr($scriptNameAndPath, 0, strrpos($scriptNameAndPath, '/')) . '/';
     //following is index.php
     $GLOBALS['COPIX']['CONFIG']->significant_url_script_name = substr($scriptNameAndPath, strrpos($scriptNameAndPath, '/') + 1);
     //following is mysite.com
     $GLOBALS['COPIX']['CONFIG']->significant_url_domain = $_SERVER['HTTP_HOST'];
     //following is http://mysite.com/subdir/
     $GLOBALS['COPIX']['CONFIG']->significant_url_basepath = 'http://' . $GLOBALS['COPIX']['CONFIG']->significant_url_domain . $GLOBALS['COPIX']['CONFIG']->significant_url_script_path;
     //following is index.php/mypath/myaction
     if (isset($_SERVER['PATH_INFO'])) {
         $pathinfo = $_SERVER['PATH_INFO'];
         $pos = strpos($_SERVER['PATH_INFO'], $GLOBALS['COPIX']['CONFIG']->significant_url_script_path . $GLOBALS['COPIX']['CONFIG']->significant_url_script_name);
         if ($pos !== false) {
             //under IIS, we may get as PATH_INFO /subdir/index.php/mypath/myaction (wich is incorrect)
             $pathinfo = substr($_SERVER['PATH_INFO'], strlen($GLOBALS['COPIX']['CONFIG']->significant_url_script_path . $GLOBALS['COPIX']['CONFIG']->significant_url_script_name));
         }
     } else {
         $pathinfo = substr($_SERVER["PHP_SELF"], strlen($_SERVER['SCRIPT_NAME']));
     }
     $GLOBALS['COPIX']['CONFIG']->significant_url_path_info = $pathinfo;
     /**
      * Fin de "en développement / Test"
      */
     if ($GLOBALS['COPIX']['CONFIG']->errorHandlerOn) {
         $ficEH = COPIX_CONFIG_PATH . $GLOBALS['COPIX']['CONFIG']->errorHandlerConfigFile;
         if (file_exists($ficEH)) {
             require_once COPIX_CORE_PATH . 'CopixErrorHandler.lib.php';
             $GLOBALS['COPIX']['CONFIG']->errorHandler = new CopixErrorHandlerConfig();
             require $ficEH;
             set_error_handler('CopixErrorHandler');
         }
     }
     // registering and creating plugins.
     foreach ($GLOBALS['COPIX']['CONFIG']->plugins as $name => $conf) {
         // pour create, on ne donne pas $conf, car le foreach fait une copie du tableau plugins pour le parcourir
         // et cela ne prend donc pas en compte les eventuelles modifs effectuées dans plugins par un plugin,
         // notament dans debug, si celui ci précise un fichier de conf spécifique
         if ($plug =& CopixPluginFactory::create($name, $GLOBALS['COPIX']['CONFIG']->plugins[$name])) {
             $this->plugins[strtolower($name)] =& $plug;
         }
     }
     $this->url =& new CopixUrl($_SERVER['SCRIPT_NAME'], $_GET, $GLOBALS['COPIX']['CONFIG']->significant_url_path_info);
     $this->vars = CopixUrl::parse($GLOBALS['COPIX']['CONFIG']->significant_url_path_info, false, true);
     // do what we need for each plugin before starting the session
     $this->_beforeSessionStart();
     session_start();
 }