'MSG', 'BIDI' => 'BIDI', 'USER_PREF' => 'UP', 'MODULE' => 'MODULE'); private $substitutions = array(); public function __construct() { foreach ($this->types as $type) { $this->substitutions[$type] = array(); } } public function addSubstitution($type, $key, $value) { $this->substitutions[$type]["__{$type}_{$key}__"] = $value; } public function addSubstitutions($type, $array) { foreach ($array as $key => $value) { $this->addSubstitution($type, $key, $value); } } public function substitute($input) { foreach ($this->types as $type) { $input = $this->substituteType($type, $input); } return $input; } public function substituteType($type, $input) { if (empty($this->substitutions[$type])) { return $input; } return str_replace(array_keys($this->substitutions[$type]), array_values($this->substitutions[$type]), $input); } /** * Substitutes a uri * @param type The type to substitute, or null for all types. * @param uri * @return The substituted uri, or a dummy value if the result is invalid. */ public function substituteUri($type, $uri) { if (empty($uri)) { return null; } try { if (! empty($type)) { return $this->substituteType($type, $uri); } else { return $this->substitute($uri); } } catch (Exception $e) { return ""; } } }