exit(1);
}
-require_once 'Net/URL/Mapper.php';
-
-class StatusNet_URL_Mapper extends Net_URL_Mapper
-{
- private static $_singleton = null;
- private $_actionToPath = array();
-
- private function __construct()
- {
- }
-
- public static function getInstance($id = '__default__')
- {
- if (empty(self::$_singleton)) {
- self::$_singleton = new StatusNet_URL_Mapper();
- }
- return self::$_singleton;
- }
-
- public function connect($path, $defaults = array(), $rules = array())
- {
- $result = null;
- if (Event::handle('StartConnectPath', array(&$path, &$defaults, &$rules, &$result))) {
- $result = parent::connect($path, $defaults, $rules);
- if (array_key_exists('action', $defaults)) {
- $action = $defaults['action'];
- } elseif (array_key_exists('action', $rules)) {
- $action = $rules['action'];
- } else {
- $action = null;
- }
- $this->_mapAction($action, $result);
- Event::handle('EndConnectPath', array($path, $defaults, $rules, $result));
- }
- return $result;
- }
-
- protected function _mapAction($action, $path)
- {
- if (!array_key_exists($action, $this->_actionToPath)) {
- $this->_actionToPath[$action] = array();
- }
- $this->_actionToPath[$action][] = $path;
- return;
- }
-
- public function generate($values = array(), $qstring = array(), $anchor = '')
- {
- if (!array_key_exists('action', $values)) {
- return parent::generate($values, $qstring, $anchor);
- }
-
- $action = $values['action'];
-
- if (!array_key_exists($action, $this->_actionToPath)) {
- return parent::generate($values, $qstring, $anchor);
- }
-
- $oldPaths = $this->paths;
- $this->paths = $this->_actionToPath[$action];
- $result = parent::generate($values, $qstring, $anchor);
- $this->paths = $oldPaths;
-
- return $result;
- }
-}
-
/**
* URL Router
*
* you're running and the plugins that are enabled. To avoid having bad routes
* get stuck in the cache, the key includes a list of plugins and the software
* version.
- *
- * There can still be problems with a) differences in versions of the plugins and
+ *
+ * There can still be problems with a) differences in versions of the plugins and
* b) people running code between official versions, but these tend to be more
* sophisticated users who can grok what's going on and clear their caches.
*
function initialize()
{
- $m = StatusNet_URL_Mapper::getInstance();
+ $m = new URLMapper();
if (Event::handle('StartInitializeRouter', array(&$m))) {
{
try {
$match = $this->m->match($path);
- } catch (Net_URL_Mapper_InvalidException $e) {
+ } catch (Exception $e) {
common_log(LOG_ERR, "Problem getting route for $path - " .
$e->getMessage());
// TRANS: Client error on action trying to visit a non-existing page.
}
$url = $this->m->generate($args, $params, $fragment);
-
// Due to a bug in the Net_URL_Mapper code, the returned URL may
// contain a malformed query of the form ?p1=v1?p2=v2?p3=v3. We
// repair that here rather than modifying the upstream code...