Exemple #1
0
 /**
  * @param array $urlinfo
  *                       array(1,'entrypoint', https true/false,
  *                       array('year','month',), // list of dynamic values included in the url
  *                       array(true, false..), // list of integers which indicates for each
  *                       // dynamic value: 0: urlencode, 1:urlencode except '/', 2:escape
  *                       "/news/%1/%2/", // the url
  *                       true/false, // false : this is a secondary action
  *                       array('bla'=>'whatIWant' ) // list of static values
  *                       )
  */
 protected function buildWithSpecificPathinfo(\jUrlAction $urlact, \jUrl $url, $urlinfo)
 {
     $pi = $urlinfo[5];
     foreach ($urlinfo[3] as $k => $param) {
         $escape = $urlinfo[4][$k];
         $value = $url->getParam($param, '');
         if ($escape & self::ESCAPE_NON_ASCII) {
             $value = \jUrl::escape($value, true);
         } elseif ($escape & self::ESCAPE_SLASH) {
             $value = str_replace('%2F', '/', urlencode($value));
         } elseif ($escape & self::ESCAPE_LANG) {
             if ($value == '') {
                 $value = Locale::getCurrentLang();
             } elseif (preg_match('/^(\\w{2,3})_\\w{2,3}$/', $value, $m)) {
                 $value = $m[1];
             }
         } elseif ($escape & self::ESCAPE_LOCALE) {
             if ($value == '') {
                 $value = App::config()->locale;
             } elseif (preg_match('/^\\w{2,3}$/', $value, $m)) {
                 $value = Locale::langToLocale($value);
             }
         } else {
             $value = urlencode($value);
         }
         $pi = str_replace(':' . $param, $value, $pi);
         $url->delParam($param);
     }
     $url->pathInfo = $pi != '/' ? $pi : '';
     if ($urlinfo[6]) {
         $url->setParam('action', $urlact->getParam('action'));
     }
     // removed parameters corresponding to static values
     foreach ($urlinfo[7] as $name => $value) {
         $url->delParam($name);
     }
 }