| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * URL routing utilities | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  URL | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package   StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @copyright 2009 StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link      http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-26 10:41:36 -04:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once 'Net/URL/Mapper.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-23 12:33:41 -04:00
										 |  |  | class StatusNet_URL_Mapper extends Net_URL_Mapper { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static $_singleton = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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); | 
					
						
							|  |  |  |             Event::handle('EndConnectPath', array($path, $defaults, $rules, $result)); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $result; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * URL Router | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Cheap wrapper around Net_URL_Mapper | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category URL | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package  StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author   Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link     http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Router | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-02-20 16:48:49 -05:00
										 |  |  |     var $m = null; | 
					
						
							| 
									
										
										
										
											2009-02-11 00:45:11 -05:00
										 |  |  |     static $inst = null; | 
					
						
							| 
									
										
										
										
											2009-03-06 17:18:21 -08:00
										 |  |  |     static $bare = array('requesttoken', 'accesstoken', 'userauthorization', | 
					
						
							| 
									
										
										
										
											2010-01-13 05:06:35 +00:00
										 |  |  |                          'postnotice', 'updateprofile', 'finishremotesubscribe'); | 
					
						
							| 
									
										
										
										
											2009-02-11 00:45:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     static function get() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!Router::$inst) { | 
					
						
							|  |  |  |             Router::$inst = new Router(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return Router::$inst; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function __construct() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-02-10 22:49:25 -05:00
										 |  |  |         if (!$this->m) { | 
					
						
							|  |  |  |             $this->m = $this->initialize(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-25 12:56:52 -04:00
										 |  |  |     function initialize() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-03-23 12:33:41 -04:00
										 |  |  |         $m = StatusNet_URL_Mapper::getInstance(); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |         if (Event::handle('StartInitializeRouter', array(&$m))) { | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-31 10:12:26 -05:00
										 |  |  |             $m->connect('robots.txt', array('action' => 'robotstxt')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('opensearch/people', array('action' => 'opensearch', | 
					
						
							|  |  |  |                                                    'type' => 'people')); | 
					
						
							|  |  |  |             $m->connect('opensearch/notice', array('action' => 'opensearch', | 
					
						
							|  |  |  |                                                    'type' => 'notice')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // docs
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('doc/:title', array('action' => 'doc')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-08 17:20:25 -08:00
										 |  |  |             $m->connect('main/otp/:user_id/:token', | 
					
						
							|  |  |  |                         array('action' => 'otp'), | 
					
						
							|  |  |  |                         array('user_id' => '[0-9]+', | 
					
						
							|  |  |  |                               'token' => '.+')); | 
					
						
							| 
									
										
										
										
											2009-12-05 21:03:27 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // main stuff is repetitive
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $main = array('login', 'logout', 'register', 'subscribe', | 
					
						
							|  |  |  |                           'unsubscribe', 'confirmaddress', 'recoverpassword', | 
					
						
							|  |  |  |                           'invite', 'favor', 'disfavor', 'sup', | 
					
						
							|  |  |  |                           'block', 'unblock', 'subedit', | 
					
						
							| 
									
										
										
										
											2009-11-16 17:06:35 +01:00
										 |  |  |                           'groupblock', 'groupunblock', | 
					
						
							|  |  |  |                           'sandbox', 'unsandbox', | 
					
						
							|  |  |  |                           'silence', 'unsilence', | 
					
						
							| 
									
										
										
										
											2010-03-03 15:43:49 -08:00
										 |  |  |                           'grantrole', 'revokerole', | 
					
						
							| 
									
										
										
										
											2009-12-11 11:51:09 -05:00
										 |  |  |                           'repeat', | 
					
						
							| 
									
										
										
										
											2009-12-29 16:17:17 -05:00
										 |  |  |                           'deleteuser', | 
					
						
							| 
									
										
										
										
											2010-01-07 17:26:40 -08:00
										 |  |  |                           'geocode', | 
					
						
							|  |  |  |                           'version', | 
					
						
							|  |  |  |                           ); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             foreach ($main as $a) { | 
					
						
							|  |  |  |                 $m->connect('main/'.$a, array('action' => $a)); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-04-01 18:29:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-20 12:46:36 -07:00
										 |  |  |             // Also need a block variant accepting ID on URL for mail links
 | 
					
						
							|  |  |  |             $m->connect('main/block/:profileid', | 
					
						
							|  |  |  |                         array('action' => 'block'), | 
					
						
							|  |  |  |                         array('profileid' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('main/sup/:seconds', array('action' => 'sup'), | 
					
						
							|  |  |  |                         array('seconds' => '[0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-02-20 10:04:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('main/tagother/:id', array('action' => 'tagother')); | 
					
						
							| 
									
										
										
										
											2009-07-30 15:37:35 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('main/oembed', | 
					
						
							|  |  |  |                         array('action' => 'oembed')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-29 16:01:25 -04:00
										 |  |  |             $m->connect('main/xrds', | 
					
						
							|  |  |  |                         array('action' => 'publicxrds')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // these take a code
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             foreach (array('register', 'confirmaddress', 'recoverpassword') as $c) { | 
					
						
							|  |  |  |                 $m->connect('main/'.$c.'/:code', array('action' => $c)); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // exceptional
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('main/remote', array('action' => 'remotesubscribe')); | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |             $m->connect('main/remote?nickname=:nickname', array('action' => 'remotesubscribe'), array('nickname' => '[A-Za-z0-9_-]+')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             foreach (Router::$bare as $action) { | 
					
						
							|  |  |  |                 $m->connect('index.php?action=' . $action, array('action' => $action)); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // settings
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-13 19:02:18 -08:00
										 |  |  |             foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections', | 
					
						
							| 
									
										
										
										
											2010-01-13 07:33:51 +00:00
										 |  |  |                            'oauthapps', 'email', 'sms', 'userdesign', 'other') as $s) { | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                 $m->connect('settings/'.$s, array('action' => $s.'settings')); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2010-01-10 21:35:46 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |             $m->connect('settings/oauthapps/show/:id', | 
					
						
							|  |  |  |                 array('action' => 'showapplication'), | 
					
						
							|  |  |  |                 array('id' => '[0-9]+') | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             $m->connect('settings/oauthapps/new', | 
					
						
							|  |  |  |                 array('action' => 'newapplication') | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             $m->connect('settings/oauthapps/edit/:id', | 
					
						
							|  |  |  |                 array('action' => 'editapplication'), | 
					
						
							|  |  |  |                 array('id' => '[0-9]+') | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2010-02-02 06:26:03 +00:00
										 |  |  |             $m->connect('settings/oauthapps/delete/:id', | 
					
						
							|  |  |  |                 array('action' => 'deleteapplication'), | 
					
						
							|  |  |  |                 array('id' => '[0-9]+') | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // search
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             foreach (array('group', 'people', 'notice') as $s) { | 
					
						
							|  |  |  |                 $m->connect('search/'.$s, array('action' => $s.'search')); | 
					
						
							|  |  |  |                 $m->connect('search/'.$s.'?q=:q', | 
					
						
							|  |  |  |                             array('action' => $s.'search'), | 
					
						
							|  |  |  |                             array('q' => '.+')); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // The second of these is needed to make the link work correctly
 | 
					
						
							|  |  |  |             // when inserted into the page. The first is needed to match the
 | 
					
						
							|  |  |  |             // route on the way in. Seems to be another Net_URL_Mapper bug to me.
 | 
					
						
							|  |  |  |             $m->connect('search/notice/rss', array('action' => 'noticesearchrss')); | 
					
						
							|  |  |  |             $m->connect('search/notice/rss?q=:q', array('action' => 'noticesearchrss'), | 
					
						
							| 
									
										
										
										
											2009-03-25 12:56:52 -04:00
										 |  |  |                         array('q' => '.+')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('attachment/:attachment', | 
					
						
							|  |  |  |                         array('action' => 'attachment'), | 
					
						
							|  |  |  |                         array('attachment' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('attachment/:attachment/ajax', | 
					
						
							|  |  |  |                         array('action' => 'attachment_ajax'), | 
					
						
							|  |  |  |                         array('attachment' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('attachment/:attachment/thumbnail', | 
					
						
							|  |  |  |                         array('action' => 'attachment_thumbnail'), | 
					
						
							|  |  |  |                         array('attachment' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('notice/new', array('action' => 'newnotice')); | 
					
						
							|  |  |  |             $m->connect('notice/new?replyto=:replyto', | 
					
						
							|  |  |  |                         array('action' => 'newnotice'), | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                         array('replyto' => '[A-Za-z0-9_-]+')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('notice/new?replyto=:replyto&inreplyto=:inreplyto', | 
					
						
							|  |  |  |                         array('action' => 'newnotice'), | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                         array('replyto' => '[A-Za-z0-9_-]+'), | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                         array('inreplyto' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('notice/:notice/file', | 
					
						
							|  |  |  |                         array('action' => 'file'), | 
					
						
							|  |  |  |                         array('notice' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('notice/:notice', | 
					
						
							|  |  |  |                         array('action' => 'shownotice'), | 
					
						
							|  |  |  |                         array('notice' => '[0-9]+')); | 
					
						
							|  |  |  |             $m->connect('notice/delete', array('action' => 'deletenotice')); | 
					
						
							|  |  |  |             $m->connect('notice/delete/:notice', | 
					
						
							|  |  |  |                         array('action' => 'deletenotice'), | 
					
						
							|  |  |  |                         array('notice' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-29 13:18:51 +01:00
										 |  |  |             $m->connect('bookmarklet/new', array('action' => 'bookmarklet')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // conversation
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('conversation/:id', | 
					
						
							|  |  |  |                         array('action' => 'conversation'), | 
					
						
							|  |  |  |                         array('id' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('message/new', array('action' => 'newmessage')); | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |             $m->connect('message/new?to=:to', array('action' => 'newmessage'), array('to' => '[A-Za-z0-9_-]+')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('message/:message', | 
					
						
							|  |  |  |                         array('action' => 'showmessage'), | 
					
						
							|  |  |  |                         array('message' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('user/:id', | 
					
						
							|  |  |  |                         array('action' => 'userbyid'), | 
					
						
							|  |  |  |                         array('id' => '[0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('tags/', array('action' => 'publictagcloud')); | 
					
						
							|  |  |  |             $m->connect('tag/', array('action' => 'publictagcloud')); | 
					
						
							|  |  |  |             $m->connect('tags', array('action' => 'publictagcloud')); | 
					
						
							|  |  |  |             $m->connect('tag', array('action' => 'publictagcloud')); | 
					
						
							|  |  |  |             $m->connect('tag/:tag/rss', | 
					
						
							|  |  |  |                         array('action' => 'tagrss'), | 
					
						
							| 
									
										
										
										
											2010-06-14 15:51:49 -04:00
										 |  |  |                         array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('tag/:tag', | 
					
						
							|  |  |  |                         array('action' => 'tag'), | 
					
						
							|  |  |  |                         array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('peopletag/:tag', | 
					
						
							|  |  |  |                         array('action' => 'peopletag'), | 
					
						
							|  |  |  |                         array('tag' => '[a-zA-Z0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // groups
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('group/new', array('action' => 'newgroup')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-12 15:49:20 -07:00
										 |  |  |             foreach (array('edit', 'join', 'leave', 'delete') as $v) { | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                 $m->connect('group/:nickname/'.$v, | 
					
						
							|  |  |  |                             array('action' => $v.'group'), | 
					
						
							|  |  |  |                             array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							| 
									
										
										
										
											2010-02-25 13:02:08 -08:00
										 |  |  |                 $m->connect('group/:id/id/'.$v, | 
					
						
							|  |  |  |                             array('action' => $v.'group'), | 
					
						
							|  |  |  |                             array('id' => '[0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             foreach (array('members', 'logo', 'rss', 'designsettings') as $n) { | 
					
						
							|  |  |  |                 $m->connect('group/:nickname/'.$n, | 
					
						
							|  |  |  |                             array('action' => 'group'.$n), | 
					
						
							|  |  |  |                             array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('group/:nickname/foaf', | 
					
						
							|  |  |  |                         array('action' => 'foafgroup'), | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |                         array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('group/:nickname/blocked', | 
					
						
							|  |  |  |                         array('action' => 'blockedfromgroup'), | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |                         array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-09-27 17:17:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('group/:nickname/makeadmin', | 
					
						
							|  |  |  |                         array('action' => 'makeadmin'), | 
					
						
							|  |  |  |                         array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-09-30 10:22:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('group/:id/id', | 
					
						
							|  |  |  |                         array('action' => 'groupbyid'), | 
					
						
							|  |  |  |                         array('id' => '[0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-09-30 10:22:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('group/:nickname', | 
					
						
							|  |  |  |                         array('action' => 'showgroup'), | 
					
						
							|  |  |  |                         array('nickname' => '[a-zA-Z0-9]+')); | 
					
						
							| 
									
										
										
										
											2009-09-23 13:45:51 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('group/', array('action' => 'groups')); | 
					
						
							|  |  |  |             $m->connect('group', array('action' => 'groups')); | 
					
						
							|  |  |  |             $m->connect('groups/', array('action' => 'groups')); | 
					
						
							|  |  |  |             $m->connect('groups', array('action' => 'groups')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Twitter-compatible API
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // statuses API
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/public_timeline.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelinePublic', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/friends_timeline.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineFriends', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/friends_timeline/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineFriends', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-12-14 16:10:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/home_timeline.:format', | 
					
						
							| 
									
										
										
										
											2009-12-14 16:10:16 -05:00
										 |  |  |                         array('action' => 'ApiTimelineHome', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/home_timeline/:id.:format', | 
					
						
							| 
									
										
										
										
											2009-12-14 16:10:16 -05:00
										 |  |  |                         array('action' => 'ApiTimelineHome', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-09-30 17:08:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/user_timeline.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineUser', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-09-30 17:08:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/user_timeline/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineUser', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/mentions.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineMentions', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/mentions/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineMentions', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/replies.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineMentions', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/replies/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineMentions', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 15:35:05 -05:00
										 |  |  |             $m->connect('api/statuses/retweeted_by_me.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineRetweetedByMe', | 
					
						
							|  |  |  |                               'format' => '(xml|json|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 16:15:23 -05:00
										 |  |  |             $m->connect('api/statuses/retweeted_to_me.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineRetweetedToMe', | 
					
						
							|  |  |  |                               'format' => '(xml|json|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 16:00:27 -05:00
										 |  |  |             $m->connect('api/statuses/retweets_of_me.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineRetweetsOfMe', | 
					
						
							|  |  |  |                               'format' => '(xml|json|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/friends.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserFriends', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/friends/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserFriends', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/followers.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserFollowers', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-10-01 17:35:28 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/followers/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserFollowers', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/show.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesShow', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/show/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesShow', | 
					
						
							|  |  |  |                               'id' => '[0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/update.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesUpdate', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/destroy.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesDestroy', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statuses/destroy/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesDestroy', | 
					
						
							|  |  |  |                               'id' => '[0-9]+', | 
					
						
							| 
									
										
										
										
											2009-12-11 12:40:05 -05:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/retweet/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesRetweet', | 
					
						
							|  |  |  |                               'id' => '[0-9]+', | 
					
						
							| 
									
										
										
										
											2009-12-12 14:46:24 -05:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statuses/retweets/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusesRetweets', | 
					
						
							|  |  |  |                               'id' => '[0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-20 15:07:59 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // users
 | 
					
						
							| 
									
										
										
										
											2009-02-20 15:07:59 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-01 10:02:22 -08:00
										 |  |  |             $m->connect('api/users/show.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserShow', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/users/show/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiUserShow', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // direct messages
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/direct_messages.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiDirectMessage', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/direct_messages/sent.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiDirectMessage', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)', | 
					
						
							|  |  |  |                               'sent' => true)); | 
					
						
							| 
									
										
										
										
											2009-10-05 10:04:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/direct_messages/new.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiDirectMessageNew', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-10-05 10:04:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // friendships
 | 
					
						
							| 
									
										
										
										
											2009-10-05 10:04:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/show.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsShow', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-10-05 10:04:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/exists.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsExists', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/create.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsCreate', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-22 20:04:47 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/destroy.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsDestroy', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/create/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsCreate', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friendships/destroy/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFriendshipsDestroy', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-22 20:04:47 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // Social graph
 | 
					
						
							| 
									
										
										
										
											2009-02-22 20:04:47 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friends/ids/:id.:format', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiUserFriends', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'ids_only' => true)); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/followers/ids/:id.:format', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiUserFollowers', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'ids_only' => true)); | 
					
						
							| 
									
										
										
										
											2009-10-05 17:10:30 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/friends/ids.:format', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiUserFriends', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'ids_only' => true)); | 
					
						
							| 
									
										
										
										
											2009-10-05 17:10:30 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/followers/ids.:format', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiUserFollowers', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'ids_only' => true)); | 
					
						
							| 
									
										
										
										
											2009-10-05 17:10:30 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // account
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/account/verify_credentials.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountVerifyCredentials')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-09 23:13:59 -08:00
										 |  |  |             $m->connect('api/account/update_profile.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountUpdateProfile')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-04 21:00:26 -08:00
										 |  |  |             $m->connect('api/account/update_profile_image.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountUpdateProfileImage')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-08 15:29:04 -08:00
										 |  |  |             $m->connect('api/account/update_profile_background_image.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountUpdateProfileBackgroundImage')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-09 22:06:22 -08:00
										 |  |  |             $m->connect('api/account/update_profile_colors.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountUpdateProfileColors')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-10 14:36:41 -08:00
										 |  |  |             $m->connect('api/account/update_delivery_device.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountUpdateDeliveryDevice')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // special case where verify_credentials is called w/out a format
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/account/verify_credentials', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountVerifyCredentials')); | 
					
						
							| 
									
										
										
										
											2009-10-05 13:50:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/account/rate_limit_status.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiAccountRateLimitStatus')); | 
					
						
							| 
									
										
										
										
											2009-10-05 13:50:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // favorites
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/favorites.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineFavorites', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/favorites/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineFavorites', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2010-06-11 11:52:06 -07:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/favorites/create/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFavoriteCreate', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/favorites/destroy/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiFavoriteDestroy', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  |             // blocks
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/blocks/create/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiBlockCreate', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-10-08 15:45:45 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/blocks/destroy/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiBlockDestroy', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  |             // help
 | 
					
						
							| 
									
										
										
										
											2009-07-15 10:29:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/help/test.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiHelpTest', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // statusnet
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statusnet/version.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusnetVersion', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-07-10 18:22:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             $m->connect('api/statusnet/config.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusnetConfig', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-10-06 17:26:45 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // For older methods, we provide "laconica" base action
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/laconica/version.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusnetVersion', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/laconica/config.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiStatusnetConfig', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							| 
									
										
										
										
											2009-08-27 09:34:32 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // Groups and tags are newer than 0.8.1 so no backward-compatibility
 | 
					
						
							|  |  |  |             // necessary
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Groups
 | 
					
						
							|  |  |  |             //'list' has to be handled differently, as php will not allow a method to be named 'list'
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/timeline/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineGroup', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							| 
									
										
										
										
											2010-06-11 11:52:06 -07:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/show.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupShow', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/show/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupShow', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/join.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupJoin', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/join/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupJoin', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/leave.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupLeave', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/leave/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupLeave', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/is_member.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupIsMember', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/list.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupList', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/list/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupList', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/list_all.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupListAll', | 
					
						
							|  |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/membership.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupMembership', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/membership/:id.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupMembership', | 
					
						
							|  |  |  |                               'id' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/groups/create.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiGroupCreate', | 
					
						
							|  |  |  |                               'format' => '(xml|json)')); | 
					
						
							|  |  |  |             // Tags
 | 
					
						
							|  |  |  |             $m->connect('api/statusnet/tags/timeline/:tag.:format', | 
					
						
							|  |  |  |                         array('action' => 'ApiTimelineTag', | 
					
						
							| 
									
										
										
										
											2010-06-11 11:52:06 -07:00
										 |  |  |                               'format' => '(xml|json|rss|atom)')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-15 22:10:32 +00:00
										 |  |  |             // media related
 | 
					
						
							|  |  |  |             $m->connect( | 
					
						
							|  |  |  |                 'api/statusnet/media/upload', | 
					
						
							|  |  |  |                 array('action' => 'ApiMediaUpload') | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             // search
 | 
					
						
							| 
									
										
										
										
											2010-06-24 18:11:50 -07:00
										 |  |  |             $m->connect('api/search.atom', array('action' => 'ApiSearchAtom')); | 
					
						
							|  |  |  |             $m->connect('api/search.json', array('action' => 'ApiSearchJSON')); | 
					
						
							|  |  |  |             $m->connect('api/trends.json', array('action' => 'ApiTrends')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |             $m->connect('api/oauth/request_token', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiOauthRequestToken')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/oauth/access_token', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiOauthAccessToken')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $m->connect('api/oauth/authorize', | 
					
						
							| 
									
										
										
										
											2010-09-22 23:30:50 +00:00
										 |  |  |                         array('action' => 'ApiOauthAuthorize')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // Admin
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-07 23:17:52 -05:00
										 |  |  |             $m->connect('admin/site', array('action' => 'siteadminpanel')); | 
					
						
							| 
									
										
										
										
											2009-11-11 01:43:56 -05:00
										 |  |  |             $m->connect('admin/design', array('action' => 'designadminpanel')); | 
					
						
							| 
									
										
										
										
											2009-11-19 15:02:25 -08:00
										 |  |  |             $m->connect('admin/user', array('action' => 'useradminpanel')); | 
					
						
							| 
									
										
										
										
											2010-01-28 22:04:14 -08:00
										 |  |  | 	        $m->connect('admin/access', array('action' => 'accessadminpanel')); | 
					
						
							| 
									
										
										
										
											2009-11-19 11:55:07 -08:00
										 |  |  |             $m->connect('admin/paths', array('action' => 'pathsadminpanel')); | 
					
						
							| 
									
										
										
										
											2010-01-28 22:04:14 -08:00
										 |  |  |             $m->connect('admin/sessions', array('action' => 'sessionsadminpanel')); | 
					
						
							| 
									
										
										
										
											2010-03-03 14:32:14 -08:00
										 |  |  |             $m->connect('admin/sitenotice', array('action' => 'sitenoticeadminpanel')); | 
					
						
							| 
									
										
										
										
											2010-03-03 16:47:27 -08:00
										 |  |  |             $m->connect('admin/snapshot', array('action' => 'snapshotadminpanel')); | 
					
						
							| 
									
										
										
										
											2010-09-17 16:38:12 -07:00
										 |  |  |             $m->connect('admin/license', array('action' => 'licenseadminpanel')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-19 11:55:07 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 14:43:01 -04:00
										 |  |  |             $m->connect('getfile/:filename', | 
					
						
							|  |  |  |                         array('action' => 'getfile'), | 
					
						
							|  |  |  |                         array('filename' => '[A-Za-z0-9._-]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |             // In the "root"
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |             if (common_config('singleuser', 'enabled')) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-20 14:34:25 -07:00
										 |  |  |                 $user = User::singleUser(); | 
					
						
							|  |  |  |                 $nickname = $user->nickname; | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('subscriptions', 'subscribers', | 
					
						
							|  |  |  |                                'all', 'foaf', 'xrds', | 
					
						
							| 
									
										
										
										
											2010-02-25 18:39:55 -05:00
										 |  |  |                                'replies', 'microsummary', 'hcard') as $a) { | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                     $m->connect($a, | 
					
						
							|  |  |  |                                 array('action' => $a, | 
					
						
							|  |  |  |                                       'nickname' => $nickname)); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('subscriptions', 'subscribers') as $a) { | 
					
						
							|  |  |  |                     $m->connect($a.'/:tag', | 
					
						
							|  |  |  |                                 array('action' => $a, | 
					
						
							|  |  |  |                                       'nickname' => $nickname), | 
					
						
							|  |  |  |                                 array('tag' => '[a-zA-Z0-9]+')); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('rss', 'groups') as $a) { | 
					
						
							|  |  |  |                     $m->connect($a, | 
					
						
							|  |  |  |                                 array('action' => 'user'.$a, | 
					
						
							|  |  |  |                                       'nickname' => $nickname)); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('all', 'replies', 'favorites') as $a) { | 
					
						
							|  |  |  |                     $m->connect($a.'/rss', | 
					
						
							|  |  |  |                                 array('action' => $a.'rss', | 
					
						
							|  |  |  |                                       'nickname' => $nickname)); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect('favorites', | 
					
						
							|  |  |  |                             array('action' => 'showfavorites', | 
					
						
							|  |  |  |                                   'nickname' => $nickname)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect('avatar/:size', | 
					
						
							|  |  |  |                             array('action' => 'avatarbynickname', | 
					
						
							|  |  |  |                                   'nickname' => $nickname), | 
					
						
							|  |  |  |                             array('size' => '(original|96|48|24)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect('tag/:tag/rss', | 
					
						
							|  |  |  |                             array('action' => 'userrss', | 
					
						
							|  |  |  |                                   'nickname' => $nickname), | 
					
						
							| 
									
										
										
										
											2010-06-14 15:51:49 -04:00
										 |  |  |                             array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect('tag/:tag', | 
					
						
							|  |  |  |                             array('action' => 'showstream', | 
					
						
							|  |  |  |                                   'nickname' => $nickname), | 
					
						
							| 
									
										
										
										
											2010-06-14 15:51:49 -04:00
										 |  |  |                             array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-31 15:16:59 -05:00
										 |  |  |                 $m->connect('rsd.xml', | 
					
						
							|  |  |  |                             array('action' => 'rsd', | 
					
						
							|  |  |  |                                   'nickname' => $nickname)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                 $m->connect('', | 
					
						
							|  |  |  |                             array('action' => 'showstream', | 
					
						
							|  |  |  |                                   'nickname' => $nickname)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect('', array('action' => 'public')); | 
					
						
							|  |  |  |                 $m->connect('rss', array('action' => 'publicrss')); | 
					
						
							|  |  |  |                 $m->connect('featuredrss', array('action' => 'featuredrss')); | 
					
						
							|  |  |  |                 $m->connect('favoritedrss', array('action' => 'favoritedrss')); | 
					
						
							|  |  |  |                 $m->connect('featured/', array('action' => 'featured')); | 
					
						
							|  |  |  |                 $m->connect('featured', array('action' => 'featured')); | 
					
						
							|  |  |  |                 $m->connect('favorited/', array('action' => 'favorited')); | 
					
						
							|  |  |  |                 $m->connect('favorited', array('action' => 'favorited')); | 
					
						
							| 
									
										
										
										
											2010-01-31 15:16:59 -05:00
										 |  |  |                 $m->connect('rsd.xml', array('action' => 'rsd')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('subscriptions', 'subscribers', | 
					
						
							|  |  |  |                                'nudge', 'all', 'foaf', 'xrds', | 
					
						
							| 
									
										
										
										
											2010-02-25 18:39:55 -05:00
										 |  |  |                                'replies', 'inbox', 'outbox', 'microsummary', 'hcard') as $a) { | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                     $m->connect(':nickname/'.$a, | 
					
						
							|  |  |  |                                 array('action' => $a), | 
					
						
							|  |  |  |                                 array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('subscriptions', 'subscribers') as $a) { | 
					
						
							|  |  |  |                     $m->connect(':nickname/'.$a.'/:tag', | 
					
						
							|  |  |  |                                 array('action' => $a), | 
					
						
							|  |  |  |                                 array('tag' => '[a-zA-Z0-9]+', | 
					
						
							|  |  |  |                                       'nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('rss', 'groups') as $a) { | 
					
						
							|  |  |  |                     $m->connect(':nickname/'.$a, | 
					
						
							|  |  |  |                                 array('action' => 'user'.$a), | 
					
						
							|  |  |  |                                 array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 foreach (array('all', 'replies', 'favorites') as $a) { | 
					
						
							|  |  |  |                     $m->connect(':nickname/'.$a.'/rss', | 
					
						
							|  |  |  |                                 array('action' => $a.'rss'), | 
					
						
							|  |  |  |                                 array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect(':nickname/favorites', | 
					
						
							|  |  |  |                             array('action' => 'showfavorites'), | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                             array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							| 
									
										
										
										
											2009-11-16 16:58:49 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                 $m->connect(':nickname/avatar/:size', | 
					
						
							|  |  |  |                             array('action' => 'avatarbynickname'), | 
					
						
							|  |  |  |                             array('size' => '(original|96|48|24)', | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                                   'nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                 $m->connect(':nickname/tag/:tag/rss', | 
					
						
							|  |  |  |                             array('action' => 'userrss'), | 
					
						
							|  |  |  |                             array('nickname' => '[a-zA-Z0-9]{1,64}'), | 
					
						
							| 
									
										
										
										
											2010-06-14 15:51:49 -04:00
										 |  |  |                             array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 $m->connect(':nickname/tag/:tag', | 
					
						
							|  |  |  |                             array('action' => 'showstream'), | 
					
						
							|  |  |  |                             array('nickname' => '[a-zA-Z0-9]{1,64}'), | 
					
						
							| 
									
										
										
										
											2010-06-14 15:51:49 -04:00
										 |  |  |                             array('tag' => '[\pL\pN_\-\.]{1,64}')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-31 15:16:59 -05:00
										 |  |  |                 $m->connect(':nickname/rsd.xml', | 
					
						
							|  |  |  |                             array('action' => 'rsd'), | 
					
						
							|  |  |  |                             array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |                 $m->connect(':nickname', | 
					
						
							|  |  |  |                             array('action' => 'showstream'), | 
					
						
							| 
									
										
										
										
											2009-11-19 14:58:32 -05:00
										 |  |  |                             array('nickname' => '[a-zA-Z0-9]{1,64}')); | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-26 00:21:05 -05:00
										 |  |  |             // user stuff
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 16:07:57 -04:00
										 |  |  |             Event::handle('RouterInitialized', array($m)); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-03-04 15:34:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:49:25 -05:00
										 |  |  |         return $m; | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function map($path) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-02-20 15:07:59 -08:00
										 |  |  |         try { | 
					
						
							|  |  |  |             $match = $this->m->match($path); | 
					
						
							|  |  |  |         } catch (Net_URL_Mapper_InvalidException $e) { | 
					
						
							|  |  |  |             common_log(LOG_ERR, "Problem getting route for $path - " . | 
					
						
							| 
									
										
										
										
											2009-03-25 12:56:52 -04:00
										 |  |  |                        $e->getMessage()); | 
					
						
							| 
									
										
										
										
											2009-02-20 15:07:59 -08:00
										 |  |  |             $cac = new ClientErrorAction("Page not found.", 404); | 
					
						
							|  |  |  |             $cac->showPage(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $match; | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-20 17:30:09 -05:00
										 |  |  |     function build($action, $args=null, $params=null, $fragment=null) | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         $action_arg = array('action' => $action); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($args) { | 
					
						
							| 
									
										
										
										
											2009-02-11 00:45:11 -05:00
										 |  |  |             $args = array_merge($action_arg, $args); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             $args = $action_arg; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-25 15:39:58 +00:00
										 |  |  |         $url = $this->m->generate($args, $params, $fragment); | 
					
						
							| 
									
										
										
										
											2009-03-25 15:39:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // 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...
 | 
					
						
							| 
									
										
										
										
											2009-03-25 12:56:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $qpos = strpos($url, '?'); | 
					
						
							| 
									
										
										
										
											2009-03-25 15:39:58 +00:00
										 |  |  |         if ($qpos !== false) { | 
					
						
							|  |  |  |             $url = substr($url, 0, $qpos+1) . | 
					
						
							| 
									
										
										
										
											2009-03-25 12:56:52 -04:00
										 |  |  |               str_replace('?', '&', substr($url, $qpos+1)); | 
					
						
							| 
									
										
										
										
											2009-03-25 15:39:58 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         return $url; | 
					
						
							| 
									
										
										
										
											2009-02-10 22:32:38 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-02-21 18:51:56 +01:00
										 |  |  | } |