static $bare = array('requesttoken', 'accesstoken', 'userauthorization',
'postnotice', 'updateprofile', 'finishremotesubscribe');
+ const REGEX_TAG = '[^\/]+'; // [\pL\pN_\-\.]{1,64} better if we can do unicode regexes
+
static function get()
{
if (!Router::$inst) {
$m->connect('conversation/:id',
array('action' => 'conversation'),
array('id' => '[0-9]+'));
+ $m->connect('conversation/:id/replies',
+ array('action' => 'conversationreplies'),
+ array('id' => '[0-9]+'));
$m->connect('message/new', array('action' => 'newmessage'));
$m->connect('message/new?to=:to', array('action' => 'newmessage'), array('to' => Nickname::DISPLAY_FMT));
$m->connect('tag', array('action' => 'publictagcloud'));
$m->connect('tag/:tag/rss',
array('action' => 'tagrss'),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect('tag/:tag',
array('action' => 'tag'),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect('peopletag/:tag',
array('action' => 'peopletag'),
- array('tag' => '[a-zA-Z0-9]+'));
+ array('tag' => self::REGEX_TAG));
// groups
$m->connect('api/statuses/public_timeline.:format',
array('action' => 'ApiTimelinePublic',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/friends_timeline.:format',
array('action' => 'ApiTimelineFriends',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/friends_timeline/:id.:format',
array('action' => 'ApiTimelineFriends',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/home_timeline.:format',
array('action' => 'ApiTimelineHome',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/home_timeline/:id.:format',
array('action' => 'ApiTimelineHome',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/user_timeline.:format',
array('action' => 'ApiTimelineUser',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/user_timeline/:id.:format',
array('action' => 'ApiTimelineUser',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/mentions.:format',
array('action' => 'ApiTimelineMentions',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/mentions/:id.:format',
array('action' => 'ApiTimelineMentions',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/replies.:format',
array('action' => 'ApiTimelineMentions',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/replies/:id.:format',
array('action' => 'ApiTimelineMentions',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statuses/retweeted_by_me.:format',
array('action' => 'ApiTimelineRetweetedByMe',
- 'format' => '(xml|json|atom)'));
+ 'format' => '(xml|json|atom|as)'));
$m->connect('api/statuses/retweeted_to_me.:format',
array('action' => 'ApiTimelineRetweetedToMe',
- 'format' => '(xml|json|atom)'));
+ 'format' => '(xml|json|atom|as)'));
$m->connect('api/statuses/retweets_of_me.:format',
array('action' => 'ApiTimelineRetweetsOfMe',
- 'format' => '(xml|json|atom)'));
+ 'format' => '(xml|json|atom|as)'));
$m->connect('api/statuses/friends.:format',
array('action' => 'ApiUserFriends',
$m->connect('api/favorites.:format',
array('action' => 'ApiTimelineFavorites',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/favorites/:id.:format',
array('action' => 'ApiTimelineFavorites',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/favorites/create/:id.:format',
array('action' => 'ApiFavoriteCreate',
$m->connect('api/statusnet/groups/timeline/:id.:format',
array('action' => 'ApiTimelineGroup',
'id' => Nickname::INPUT_FMT,
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
$m->connect('api/statusnet/groups/show.:format',
array('action' => 'ApiGroupShow',
// Tags
$m->connect('api/statusnet/tags/timeline/:tag.:format',
array('action' => 'ApiTimelineTag',
- 'format' => '(xml|json|rss|atom)'));
+ 'format' => '(xml|json|rss|atom|as)'));
// media related
$m->connect(
// Admin
- $m->connect('admin/site', array('action' => 'siteadminpanel'));
- $m->connect('admin/design', array('action' => 'designadminpanel'));
- $m->connect('admin/user', array('action' => 'useradminpanel'));
- $m->connect('admin/access', array('action' => 'accessadminpanel'));
- $m->connect('admin/paths', array('action' => 'pathsadminpanel'));
- $m->connect('admin/sessions', array('action' => 'sessionsadminpanel'));
- $m->connect('admin/sitenotice', array('action' => 'sitenoticeadminpanel'));
- $m->connect('admin/snapshot', array('action' => 'snapshotadminpanel'));
- $m->connect('admin/license', array('action' => 'licenseadminpanel'));
-
- $m->connect('admin/plugins', array('action' => 'pluginsadminpanel'));
- $m->connect('admin/plugins/enable/:plugin',
+ $m->connect('panel/site', array('action' => 'siteadminpanel'));
+ $m->connect('panel/design', array('action' => 'designadminpanel'));
+ $m->connect('panel/user', array('action' => 'useradminpanel'));
+ $m->connect('panel/access', array('action' => 'accessadminpanel'));
+ $m->connect('panel/paths', array('action' => 'pathsadminpanel'));
+ $m->connect('panel/sessions', array('action' => 'sessionsadminpanel'));
+ $m->connect('panel/sitenotice', array('action' => 'sitenoticeadminpanel'));
+ $m->connect('panel/snapshot', array('action' => 'snapshotadminpanel'));
+ $m->connect('panel/license', array('action' => 'licenseadminpanel'));
+
+ $m->connect('panel/plugins', array('action' => 'pluginsadminpanel'));
+ $m->connect('panel/plugins/enable/:plugin',
array('action' => 'pluginenable'),
array('plugin' => '[A-Za-z0-9_]+'));
- $m->connect('admin/plugins/disable/:plugin',
+ $m->connect('panel/plugins/disable/:plugin',
array('action' => 'plugindisable'),
array('plugin' => '[A-Za-z0-9_]+'));
$m->connect($a.'/:tag',
array('action' => $a,
'nickname' => $nickname),
- array('tag' => '[a-zA-Z0-9]+'));
+ array('tag' => self::REGEX_TAG));
}
foreach (array('rss', 'groups') as $a) {
$m->connect('tag/:tag/rss',
array('action' => 'userrss',
'nickname' => $nickname),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect('tag/:tag',
array('action' => 'showstream',
'nickname' => $nickname),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect('rsd.xml',
array('action' => 'rsd',
foreach (array('subscriptions', 'subscribers') as $a) {
$m->connect(':nickname/'.$a.'/:tag',
array('action' => $a),
- array('tag' => '[a-zA-Z0-9]+',
+ array('tag' => self::REGEX_TAG,
'nickname' => Nickname::DISPLAY_FMT));
}
$m->connect(':nickname/tag/:tag/rss',
array('action' => 'userrss'),
array('nickname' => Nickname::DISPLAY_FMT),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect(':nickname/tag/:tag',
array('action' => 'showstream'),
array('nickname' => Nickname::DISPLAY_FMT),
- array('tag' => '[\pL\pN_\-\.]{1,64}'));
+ array('tag' => self::REGEX_TAG));
$m->connect(':nickname/rsd.xml',
array('action' => 'rsd'),
array('action' => 'AtomPubMembershipFeed'),
array('profile' => '[0-9]+'));
+ // URL shortening
+
+ $m->connect('url/:id',
+ array('action' => 'redirecturl',
+ 'id' => '[0-9]+'));
+
// user stuff
Event::handle('RouterInitialized', array($m));