rendered paste body/** * Construit une URL en reprenant l'URL actuelle et certains de ses paramètres GET. * * si $keep est un array, seuls les éléments de $keep sont conservés<br> * si $remove est un array, les éléments de $remove sont enlevés<br> * si $add est un array( clef => valeur ), ces paramètres sont ajoutés à l'URL<br> * Exemple : * url actuelle : truc.php?a=1&b=2 * url_from_get_vars( array( 'a' ), false, array( 'c' => 3 ) ) * => truc.php?a=1&c=3 * url_from_get_vars( false, array( 'a' ), array( 'c' => 3 ) ) * => truc.php?b=2&c=3 */function url_from_get_vars( $keep=false, $remove=false, $add = array() ){ $params = array(); foreach($_GET as $key => $value) { if ((!$keep || in_array($key, $keep)) && !($remove && in_array($key, $remove))) { $params[] = $key.'='.urlencode( $value ); } } foreach($add as $key => $value) { $params[] = $key.'='.urlencode( $value ); } return $_SERVER['PHP_SELF'].'?'.implode( '&', $params );}/** * Construit un tableau contenant PATH_INFO splité a partir ses slashes qu'il contient. * * Par exemple, si j'ai /mod/page/content. L'array retourné sera array('mod','page','content') * * @param string $add Ajoute des données supplémentaire au tableau retourné. */function url_get_path($add=array(),$keep=array(),$remove=array()) { if (isset($_SERVER['ORIG_PATH_INFO'])) { $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; } elseif (!isset($_SERVER['ORIG_PATH_INFO']) && !isset($_SERVER['PATH_INFO'])) { $_SERVER['PATH_INFO'] = '/'; } $_SERVER['PATH_INFO'] = substr($_SERVER['PATH_INFO'],1,($_SERVER['PATH_INFO'][strlen($_SERVER['PATH_INFO'])-1] == '/') ? -1 : strlen($_SERVER['PATH_INFO'])-1); $path = explode('/',$_SERVER['PATH_INFO']); if ($keep || $remove) { $opath = $path; $path = array(); foreach ($opath as $value) { if ((!$keep || in_array($value,$keep)) && !($remove && in_array($value, $remove))) { $path[] = $value; } } unset($opath); } if (!empty($add)) { if (!is_array($add)) { $path[] = $add; } else { while (!empty($add)) { $path[] = array_shift($add); } } } return $path;}/** * Contruit quelque chose ressemblant au contenu de PATH_INFO. * Peut récupérer l'array retourné par url_get_path * * @see url_get_path() */function build_url_path() { $args = func_get_args(); $arg = array_shift($args); if (is_array($arg)) { $_ = array_shift($arg); $args = $arg; $arg = $_; } $url = get_param('baseurl').'/index.php/'.$arg.'/'; if (count($args) > 0 && !empty($arg)) { $url.= implode('/',$args); } return $url;}