// Copyright: Copyright (C) 2001-2007 Pristine Communications // Constant symbols if (!defined("DUP_OK")) { define("DUP_OK", true); define("DUP_NO", false); } // add_get_arg: Add a get argument to the end of an url function add_get_arg($cururl, $name, $value, $dup_ok = DUP_NO) { // Encode the name and value first $name = urlencode($name); $value = urlencode($value); $pos = strpos($cururl, "?"); // No current arguments were appended yet if ($pos === false) { return "$cururl?$name=$value"; } // It's OK to have duplicated same arguments if ($dup_ok) { return "$cururl&$name=$value"; } // Have arguments already. We need to check if there is already // a duplicated one and replace it if exists. // Split the arguments $script = substr($cururl, 0, $pos); $argslist = substr($cururl, $pos+1); $oldargs = explode("&", $argslist); $newargs = array(); $l = strlen("$name="); $found = false; foreach ($oldargs as $arg) { // Replace existing arguments if (substr($arg, 0, $l) == "$name=") { // Replace the first one and discard the rest if (!$found) { $newargs[] = "$name=$value"; $found = true; } continue; } $newargs[] = $arg; } // Add it if not found at last if (!$found) { $newargs[] = "$name=$value"; } return "$script?" . implode("&", $newargs); } // rem_get_arg: Remove a get argument from the end of an url function rem_get_arg($cururl, $names) { // If $names is not an array, set to an one-element array if (!is_array($names)) { $names = array($names); } // Parse the names $lens = array(); for ($i = 0; $i < count($names); $i++) { // Encode the name first $names[$i] = urlencode($names[$i]); // Save its length $lens[$names[$i]] = strlen($names[$i] . "="); } $pos = strpos($cururl, "?"); // No current arguments are appended yet if ($pos === false) { return $cururl; } // Have arguments already. We need to check if there is already // a duplicated one and remove it if exists. // Split the arguments $script = substr($cururl, 0, $pos); $argslist = substr($cururl, $pos+1); $oldargs = explode("&", $argslist); $newargs = array(); foreach ($oldargs as $arg) { // Skip found arguments foreach ($names as $name) { if (substr($arg, 0, $lens[$name]) == "$name=") { continue 2; } } $newargs[] = $arg; } // No arguments left if (count($newargs) == 0) { return $script; } return "$script?" . implode("&", $newargs); } ?>