X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Furlmapper.php;h=d17493e21d5a8cfd645cecbf57da84eea3304b94;hb=98b65763b0d53ae0e674b0bdb5cfe7cb5acec74d;hp=dffb32c8149579aa10e29e7492ff26d7ff7e8078;hpb=40924842f4fde6f832f7284a30177f72864f86f8;p=quix0rs-gnu-social.git diff --git a/lib/urlmapper.php b/lib/urlmapper.php index dffb32c814..d17493e21d 100644 --- a/lib/urlmapper.php +++ b/lib/urlmapper.php @@ -4,7 +4,7 @@ * Copyright (C) 2011, StatusNet, Inc. * * URL mapper - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * @category Cache + * @category URL * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. @@ -40,7 +40,7 @@ if (!defined('STATUSNET')) { * Converts a path into a set of parameters, and vice versa * * We used to use Net_URL_Mapper, so there's a wrapper class at Router, q.v. - * + * * NUM's vagaries are the main reason we have weirdnesses here. * * @category URL @@ -58,13 +58,16 @@ class URLMapper protected $statics = array(); protected $variables = array(); protected $reverse = array(); + protected $allpaths = array(); - function connect($path, $args, $paramPatterns=null) + function connect($path, $args, $paramPatterns=array()) { if (!array_key_exists(self::ACTION, $args)) { throw new Exception(sprintf("Can't connect %s; path has no action.", $path)); } + $allpaths[] = $path; + $action = $args[self::ACTION]; $paramNames = $this->getParamNames($path); @@ -119,7 +122,7 @@ class URLMapper return $results; } } - + throw new Exception(sprintf('No match for path "%s"', $path)); } @@ -147,7 +150,7 @@ class URLMapper } } // success - return $tryPath; + $path = $tryPath; } else { list($tryArgs, $format, $paramNames) = $candidate; @@ -171,15 +174,18 @@ class URLMapper } $path = vsprintf($format, $toFormat); + } - if (!empty($qstring)) { - $path .= '?' . http_build_query($qstring); - } - - return $path; + if (!empty($qstring)) { + $formatted = http_build_query($qstring); + $path .= '?' . $formatted; } + + return $path; } + // failure; some reporting twiddles + unset($args['action']); if (empty($args)) { @@ -209,7 +215,7 @@ class URLMapper array($pr, 'toPattern'), $path); - $regex = '#' . str_replace('#', '\#', $regex) . '#'; + $regex = '#^' . str_replace('#', '\#', $regex) . '$#'; return $regex; } @@ -220,6 +226,11 @@ class URLMapper return $format; } + + public function getPaths() + { + return $this->allpaths; + } } class PatternReplacer