X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Frouter.php;h=28ee42662df5e3ec966f9400c38d422d9b1d1c35;hb=95d415257a43d5d4338ce22089463c1820b6bf8b;hp=b0124375deb62726d3e8b00507c13a54963a17b8;hpb=8e04dce94778d0a8df43802b3813481c58307897;p=quix0rs-gnu-social.git diff --git a/lib/router.php b/lib/router.php index b0124375de..28ee42662d 100644 --- a/lib/router.php +++ b/lib/router.php @@ -108,6 +108,11 @@ class Router if (Event::handle('StartInitializeRouter', array(&$m))) { + // top of the menu hierarchy, sometimes "Home" + $m->connect('', array('action' => 'top')); + + // public endpoints + $m->connect('robots.txt', array('action' => 'robotstxt')); $m->connect('opensearch/people', array('action' => 'opensearch', @@ -143,39 +148,35 @@ class Router $main = array('login', 'logout', 'register', 'subscribe', 'unsubscribe', 'cancelsubscription', 'approvesub', 'confirmaddress', 'recoverpassword', - 'invite', 'favor', 'disfavor', 'sup', + 'invite', 'sup', 'block', 'unblock', 'subedit', 'groupblock', 'groupunblock', 'sandbox', 'unsandbox', 'silence', 'unsilence', 'grantrole', 'revokerole', - 'repeat', 'deleteuser', 'geocode', 'version', 'backupaccount', 'deleteaccount', 'restoreaccount', + 'top', + 'public', ); foreach ($main as $a) { $m->connect('main/'.$a, array('action' => $a)); } + $m->connect('main/all', array('action' => 'networkpublic')); + $m->connect('main/tagprofile/:id', array('action' => 'tagprofile'), array('id' => '[0-9]+')); $m->connect('main/tagprofile', array('action' => 'tagprofile')); - $m->connect('main/oembed', - array('action' => 'oembed')); - $m->connect('main/xrds', array('action' => 'publicxrds')); - $m->connect('.well-known/host-meta', - array('action' => 'hostmeta')); - $m->connect('main/xrd', - array('action' => 'userxrd')); // settings @@ -224,10 +225,6 @@ class Router 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]+')); @@ -243,36 +240,19 @@ class Router $m->connect('notice/new', array('action' => 'newnotice')); - $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/:notice', + $m->connect('notice/:notice/delete', array('action' => 'deletenotice'), array('notice' => '[0-9]+')); - $m->connect('notice/delete', array('action' => 'deletenotice')); - - $m->connect('bookmarklet/new', array('action' => 'bookmarklet')); - // conversation $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('message/:message', - array('action' => 'showmessage'), - array('message' => '[0-9]+')); $m->connect('user/:id', array('action' => 'userbyid'), @@ -334,6 +314,10 @@ class Router array('action' => 'showgroup'), array('nickname' => Nickname::DISPLAY_FMT)); + $m->connect('group/:nickname/', + array('action' => 'showgroup'), + array('nickname' => Nickname::DISPLAY_FMT)); + $m->connect('group/', array('action' => 'groups')); $m->connect('group', array('action' => 'groups')); $m->connect('groups/', array('action' => 'groups')); @@ -352,6 +336,11 @@ class Router array('action' => 'ApiTimelinePublic', 'format' => '(xml|json|rss|atom|as)')); + // this is not part of the Twitter API. Also may require authentication depending on server config! + $m->connect('api/statuses/networkpublic_timeline.:format', + array('action' => 'ApiTimelineNetworkPublic', + 'format' => '(xml|json|rss|atom|as)')); + $m->connect('api/statuses/friends_timeline/:id.:format', array('action' => 'ApiTimelineFriends', 'id' => Nickname::INPUT_FMT, @@ -396,18 +385,15 @@ class Router $m->connect('api/statuses/replies.:format', array('action' => 'ApiTimelineMentions', 'format' => '(xml|json|rss|atom|as)')); + + $m->connect('api/statuses/mentions_timeline/:id.:format', + array('action' => 'ApiTimelineMentions', + 'id' => Nickname::INPUT_FMT, + 'format' => '(xml|json|rss|atom|as)')); - $m->connect('api/statuses/retweeted_by_me.:format', - array('action' => 'ApiTimelineRetweetedByMe', - 'format' => '(xml|json|atom|as)')); - - $m->connect('api/statuses/retweeted_to_me.:format', - array('action' => 'ApiTimelineRetweetedToMe', - 'format' => '(xml|json|atom|as)')); - - $m->connect('api/statuses/retweets_of_me.:format', - array('action' => 'ApiTimelineRetweetsOfMe', - 'format' => '(xml|json|atom|as)')); + $m->connect('api/statuses/mentions_timeline.:format', + array('action' => 'ApiTimelineMentions', + 'format' => '(xml|json|rss|atom|as)')); $m->connect('api/statuses/friends/:id.:format', array('action' => 'ApiUserFriends', @@ -449,16 +435,44 @@ class Router array('action' => 'ApiStatusesDestroy', 'format' => '(xml|json)')); - $m->connect('api/statuses/retweet/:id.:format', - array('action' => 'ApiStatusesRetweet', + // START qvitter API additions + + $m->connect('api/attachment/:id.:format', + array('action' => 'ApiAttachment', 'id' => '[0-9]+', 'format' => '(xml|json)')); + + $m->connect('api/checkhub.:format', + array('action' => 'ApiCheckHub', + 'format' => '(xml|json)')); + + $m->connect('api/externalprofile/show.:format', + array('action' => 'ApiExternalProfileShow', + 'format' => '(xml|json)')); - $m->connect('api/statuses/retweets/:id.:format', - array('action' => 'ApiStatusesRetweets', - 'id' => '[0-9]+', + $m->connect('api/statusnet/groups/admins/:id.:format', + array('action' => 'ApiGroupAdmins', + 'id' => Nickname::INPUT_FMT, + 'format' => '(xml|json)')); + + $m->connect('api/account/update_link_color.:format', + array('action' => 'ApiAccountUpdateLinkColor', + 'format' => '(xml|json)')); + + $m->connect('api/account/update_background_color.:format', + array('action' => 'ApiAccountUpdateBackgroundColor', 'format' => '(xml|json)')); + $m->connect('api/account/register.:format', + array('action' => 'ApiAccountRegister', + 'format' => '(xml|json)')); + + $m->connect('api/check_nickname.:format', + array('action' => 'ApiCheckNickname', + 'format' => '(xml|json)')); + + // END qvitter API additions + // users $m->connect('api/users/show/:id.:format', @@ -475,21 +489,6 @@ class Router 'screen_name' => Nickname::DISPLAY_FMT, 'format' => '(xml|json)')); - // direct messages - - $m->connect('api/direct_messages.:format', - array('action' => 'ApiDirectMessage', - 'format' => '(xml|json|rss|atom)')); - - $m->connect('api/direct_messages/sent.:format', - array('action' => 'ApiDirectMessage', - 'format' => '(xml|json|rss|atom)', - 'sent' => true)); - - $m->connect('api/direct_messages/new.:format', - array('action' => 'ApiDirectMessageNew', - 'format' => '(xml|json)')); - // friendships $m->connect('api/friendships/show.:format', @@ -558,26 +557,6 @@ class Router $m->connect('api/account/rate_limit_status.:format', array('action' => 'ApiAccountRateLimitStatus')); - // favorites - - $m->connect('api/favorites/:id.:format', - array('action' => 'ApiTimelineFavorites', - 'id' => Nickname::INPUT_FMT, - 'format' => '(xml|json|rss|atom|as)')); - - $m->connect('api/favorites.:format', - array('action' => 'ApiTimelineFavorites', - 'format' => '(xml|json|rss|atom|as)')); - - $m->connect('api/favorites/create/:id.:format', - array('action' => 'ApiFavoriteCreate', - 'id' => '[0-9]+', - 'format' => '(xml|json)')); - - $m->connect('api/favorites/destroy/:id.:format', - array('action' => 'ApiFavoriteDestroy', - 'id' => '[0-9]+', - 'format' => '(xml|json)')); // blocks $m->connect('api/blocks/create/:id.:format', @@ -607,21 +586,21 @@ class Router // statusnet $m->connect('api/statusnet/version.:format', - array('action' => 'ApiStatusnetVersion', + array('action' => 'ApiGNUsocialVersion', 'format' => '(xml|json)')); $m->connect('api/statusnet/config.:format', - array('action' => 'ApiStatusnetConfig', + array('action' => 'ApiGNUsocialConfig', 'format' => '(xml|json)')); - // For older methods, we provide "laconica" base action + // For our current software name, we provide "gnusocial" base action - $m->connect('api/laconica/version.:format', - array('action' => 'ApiStatusnetVersion', + $m->connect('api/gnusocial/version.:format', + array('action' => 'ApiGNUsocialVersion', 'format' => '(xml|json)')); - $m->connect('api/laconica/config.:format', - array('action' => 'ApiStatusnetConfig', + $m->connect('api/gnusocial/config.:format', + array('action' => 'ApiGNUsocialConfig', 'format' => '(xml|json)')); // Groups and tags are newer than 0.8.1 so no backward-compatibility @@ -646,11 +625,11 @@ class Router $m->connect('api/statusnet/groups/join/:id.:format', array('action' => 'ApiGroupJoin', + 'id' => Nickname::INPUT_FMT, 'format' => '(xml|json)')); $m->connect('api/statusnet/groups/join.:format', array('action' => 'ApiGroupJoin', - 'id' => Nickname::INPUT_FMT, 'format' => '(xml|json)')); $m->connect('api/statusnet/groups/leave/:id.:format', @@ -703,6 +682,9 @@ class Router 'format' => '(xml|json|rss|atom|as)')); // Lists (people tags) + $m->connect('api/lists/list.:format', + array('action' => 'ApiListSubscriptions', + 'format' => '(xml|json)')); $m->connect('api/lists/memberships.:format', array('action' => 'ApiListMemberships', @@ -772,6 +754,7 @@ class Router // Tags $m->connect('api/statusnet/tags/timeline/:tag.:format', array('action' => 'ApiTimelineTag', + 'tag' => self::REGEX_TAG, 'format' => '(xml|json|rss|atom|as)')); // media related @@ -779,6 +762,10 @@ class Router 'api/statusnet/media/upload', array('action' => 'ApiMediaUpload') ); + $m->connect( + 'api/statuses/update_with_media.json', + array('action' => 'ApiMediaUpload') + ); // search $m->connect('api/search.atom', array('action' => 'ApiSearchAtom')); @@ -786,23 +773,22 @@ class Router $m->connect('api/trends.json', array('action' => 'ApiTrends')); $m->connect('api/oauth/request_token', - array('action' => 'ApiOauthRequestToken')); + array('action' => 'ApiOAuthRequestToken')); $m->connect('api/oauth/access_token', - array('action' => 'ApiOauthAccessToken')); + array('action' => 'ApiOAuthAccessToken')); $m->connect('api/oauth/authorize', - array('action' => 'ApiOauthAuthorize')); + array('action' => 'ApiOAuthAuthorize')); // Admin $m->connect('panel/site', array('action' => 'siteadminpanel')); $m->connect('panel/user', array('action' => 'useradminpanel')); - $m->connect('panel/access', array('action' => 'accessadminpanel')); + $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')); @@ -817,6 +803,22 @@ class Router array('action' => 'getfile'), array('filename' => '[A-Za-z0-9._-]+')); + // Common people-tag stuff + + $m->connect('peopletag/:tag', array('action' => 'peopletag', + 'tag' => self::REGEX_TAG)); + + $m->connect('selftag/:tag', array('action' => 'selftag', + 'tag' => self::REGEX_TAG)); + + $m->connect('main/addpeopletag', array('action' => 'addpeopletag')); + + $m->connect('main/removepeopletag', array('action' => 'removepeopletag')); + + $m->connect('main/profilecompletion', array('action' => 'profilecompletion')); + + $m->connect('main/peopletagautocomplete', array('action' => 'peopletagautocomplete')); + // In the "root" if (common_config('singleuser', 'enabled')) { @@ -825,7 +827,7 @@ class Router foreach (array('subscriptions', 'subscribers', 'all', 'foaf', 'replies', - 'microsummary', 'hcard') as $a) { + 'microsummary') as $a) { $m->connect($a, array('action' => $a, 'nickname' => $nickname)); @@ -848,20 +850,19 @@ class Router 'nickname' => $nickname)); } - foreach (array('all', 'replies', 'favorites') as $a) { + foreach (array('all', 'replies') as $a) { $m->connect($a.'/rss', array('action' => $a.'rss', 'nickname' => $nickname)); } - $m->connect('favorites', - array('action' => 'showfavorites', + $m->connect('avatar', + array('action' => 'avatarbynickname', 'nickname' => $nickname)); - $m->connect('avatar/:size', array('action' => 'avatarbynickname', 'nickname' => $nickname), - array('size' => '(original|96|48|24)')); + array('size' => '(|original|\d+)')); $m->connect('tag/:tag/rss', array('action' => 'userrss', @@ -877,86 +878,35 @@ class Router array('action' => 'rsd', 'nickname' => $nickname)); - $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')); - $m->connect('rsd.xml', array('action' => 'rsd')); - - foreach (array('subscriptions', 'subscribers', - 'nudge', 'all', 'foaf', 'replies', - 'inbox', 'outbox', 'microsummary', 'hcard') as $a) { - $m->connect(':nickname/'.$a, - array('action' => $a), - array('nickname' => Nickname::DISPLAY_FMT)); - } - $m->connect(':nickname/subscribers/pending', - array('action' => 'subqueue'), - array('nickname' => Nickname::DISPLAY_FMT)); - - // people tags - - if (!common_config('performance', 'high')) { - $m->connect('peopletags', array('action' => 'publicpeopletagcloud')); - } - - $m->connect('peopletag/:tag', array('action' => 'peopletag', - 'tag' => self::REGEX_TAG)); - - $m->connect('selftag/:tag', array('action' => 'selftag', - 'tag' => self::REGEX_TAG)); - - $m->connect('main/addpeopletag', array('action' => 'addpeopletag')); + // peopletags - $m->connect('main/removepeopletag', array('action' => 'removepeopletag')); + $m->connect('peopletags', + array('action' => 'peopletagsbyuser')); - $m->connect('main/profilecompletion', array('action' => 'profilecompletion')); + $m->connect('peopletags/private', + array('action' => 'peopletagsbyuser', + 'private' => 1)); - $m->connect('main/peopletagautocomplete', array('action' => 'peopletagautocomplete')); + $m->connect('peopletags/public', + array('action' => 'peopletagsbyuser', + 'public' => 1)); - $m->connect(':nickname/peopletags', - array('action' => 'peopletagsbyuser', - 'nickname' => Nickname::DISPLAY_FMT)); + $m->connect('othertags', + array('action' => 'peopletagsforuser')); - $m->connect(':nickname/peopletags/private', - array('action' => 'peopletagsbyuser', - 'nickname' => Nickname::DISPLAY_FMT, - 'private' => 1)); + $m->connect('peopletagsubscriptions', + array('action' => 'peopletagsubscriptions')); - $m->connect(':nickname/peopletags/public', - array('action' => 'peopletagsbyuser', - 'nickname' => Nickname::DISPLAY_FMT, - 'public' => 1)); - - $m->connect(':nickname/othertags', - array('action' => 'peopletagsforuser', - 'nickname' => Nickname::DISPLAY_FMT)); - - $m->connect(':nickname/peopletagsubscriptions', - array('action' => 'peopletagsubscriptions', - 'nickname' => Nickname::DISPLAY_FMT)); - - $m->connect(':tagger/all/:tag/subscribers', - array('action' => 'peopletagsubscribers', - 'tagger' => Nickname::DISPLAY_FMT, - 'tag' => self::REGEX_TAG)); + $m->connect('all/:tag/subscribers', + array('action' => 'peopletagsubscribers', + 'tag' => self::REGEX_TAG)); - $m->connect(':tagger/all/:tag/tagged', + $m->connect('all/:tag/tagged', array('action' => 'peopletagged', - 'tagger' => Nickname::DISPLAY_FMT, 'tag' => self::REGEX_TAG)); - $m->connect(':tagger/all/:tag/edit', + $m->connect('all/:tag/edit', array('action' => 'editpeopletag', - 'tagger' => Nickname::DISPLAY_FMT, 'tag' => self::REGEX_TAG)); foreach(array('subscribe', 'unsubscribe') as $v) { @@ -969,58 +919,139 @@ class Router 'tagger_id' => '[0-9]+', 'id' => '[0-9]+')); - $m->connect(':tagger/all/:tag', + $m->connect('all/:tag', array('action' => 'showprofiletag', - 'tagger' => Nickname::DISPLAY_FMT, + 'nickname' => $nickname, 'tag' => self::REGEX_TAG)); foreach (array('subscriptions', 'subscribers') as $a) { - $m->connect(':nickname/'.$a.'/:tag', + $m->connect($a.'/:tag', array('action' => $a), - array('tag' => self::REGEX_TAG, - 'nickname' => Nickname::DISPLAY_FMT)); - } - - foreach (array('rss', 'groups') as $a) { - $m->connect(':nickname/'.$a, - array('action' => 'user'.$a), - array('nickname' => Nickname::DISPLAY_FMT)); + array('tag' => self::REGEX_TAG)); } + } - foreach (array('all', 'replies', 'favorites') as $a) { - $m->connect(':nickname/'.$a.'/rss', - array('action' => $a.'rss'), - array('nickname' => Nickname::DISPLAY_FMT)); - } + $m->connect('rss', array('action' => 'publicrss')); + $m->connect('featuredrss', array('action' => 'featuredrss')); + $m->connect('featured/', array('action' => 'featured')); + $m->connect('featured', array('action' => 'featured')); + $m->connect('rsd.xml', array('action' => 'rsd')); + + foreach (array('subscriptions', 'subscribers', + 'nudge', 'all', 'foaf', 'replies', + 'inbox', 'outbox', 'microsummary') as $a) { + $m->connect(':nickname/'.$a, + array('action' => $a), + array('nickname' => Nickname::DISPLAY_FMT)); + } + $m->connect(':nickname/subscribers/pending', + array('action' => 'subqueue'), + array('nickname' => Nickname::DISPLAY_FMT)); - $m->connect(':nickname/favorites', - array('action' => 'showfavorites'), + // some targeted RSS 1.0 actions (extends TargetedRss10Action) + foreach (array('all', 'replies') as $a) { + $m->connect(':nickname/'.$a.'/rss', + array('action' => $a.'rss'), array('nickname' => Nickname::DISPLAY_FMT)); + } - $m->connect(':nickname/avatar/:size', - array('action' => 'avatarbynickname'), - array('size' => '(original|96|48|24)', + // people tags + + $m->connect(':nickname/peopletags', + array('action' => 'peopletagsbyuser', 'nickname' => Nickname::DISPLAY_FMT)); - $m->connect(':nickname/tag/:tag/rss', - array('action' => 'userrss'), - array('nickname' => Nickname::DISPLAY_FMT), - array('tag' => self::REGEX_TAG)); + $m->connect(':nickname/peopletags/private', + array('action' => 'peopletagsbyuser', + 'nickname' => Nickname::DISPLAY_FMT, + 'private' => 1)); - $m->connect(':nickname/tag/:tag', - array('action' => 'showstream'), - array('nickname' => Nickname::DISPLAY_FMT), - array('tag' => self::REGEX_TAG)); + $m->connect(':nickname/peopletags/public', + array('action' => 'peopletagsbyuser', + 'nickname' => Nickname::DISPLAY_FMT, + 'public' => 1)); - $m->connect(':nickname/rsd.xml', - array('action' => 'rsd'), - array('nickname' => Nickname::DISPLAY_FMT)); + $m->connect(':nickname/othertags', + array('action' => 'peopletagsforuser', + 'nickname' => Nickname::DISPLAY_FMT)); + + $m->connect(':nickname/peopletagsubscriptions', + array('action' => 'peopletagsubscriptions', + 'nickname' => Nickname::DISPLAY_FMT)); + + $m->connect(':tagger/all/:tag/subscribers', + array('action' => 'peopletagsubscribers', + 'tagger' => Nickname::DISPLAY_FMT, + 'tag' => self::REGEX_TAG)); + + $m->connect(':tagger/all/:tag/tagged', + array('action' => 'peopletagged', + 'tagger' => Nickname::DISPLAY_FMT, + 'tag' => self::REGEX_TAG)); + + $m->connect(':tagger/all/:tag/edit', + array('action' => 'editpeopletag', + 'tagger' => Nickname::DISPLAY_FMT, + 'tag' => self::REGEX_TAG)); + + foreach(array('subscribe', 'unsubscribe') as $v) { + $m->connect('peopletag/:id/'.$v, + array('action' => $v.'peopletag', + 'id' => '[0-9]{1,64}')); + } + $m->connect('user/:tagger_id/profiletag/:id/id', + array('action' => 'profiletagbyid', + 'tagger_id' => '[0-9]+', + 'id' => '[0-9]+')); + + $m->connect(':nickname/all/:tag', + array('action' => 'showprofiletag'), + array('nickname' => Nickname::DISPLAY_FMT, + 'tag' => self::REGEX_TAG)); + + foreach (array('subscriptions', 'subscribers') as $a) { + $m->connect(':nickname/'.$a.'/:tag', + array('action' => $a), + array('tag' => self::REGEX_TAG, + 'nickname' => Nickname::DISPLAY_FMT)); + } - $m->connect(':nickname', - array('action' => 'showstream'), + foreach (array('rss', 'groups') as $a) { + $m->connect(':nickname/'.$a, + array('action' => 'user'.$a), array('nickname' => Nickname::DISPLAY_FMT)); } + $m->connect(':nickname/avatar', + array('action' => 'avatarbynickname'), + array('nickname' => Nickname::DISPLAY_FMT)); + $m->connect(':nickname/avatar/:size', + array('action' => 'avatarbynickname'), + array('size' => '(|original|\d+)', + 'nickname' => Nickname::DISPLAY_FMT)); + + $m->connect(':nickname/tag/:tag/rss', + array('action' => 'userrss'), + array('nickname' => Nickname::DISPLAY_FMT), + array('tag' => self::REGEX_TAG)); + + $m->connect(':nickname/tag/:tag', + array('action' => 'showstream'), + array('nickname' => Nickname::DISPLAY_FMT), + array('tag' => self::REGEX_TAG)); + + $m->connect(':nickname/rsd.xml', + array('action' => 'rsd'), + array('nickname' => Nickname::DISPLAY_FMT)); + + $m->connect(':nickname', + array('action' => 'showstream'), + array('nickname' => Nickname::DISPLAY_FMT)); + + $m->connect(':nickname/', + array('action' => 'showstream'), + array('nickname' => Nickname::DISPLAY_FMT)); + // AtomPub API $m->connect('api/statusnet/app/service/:id.xml', @@ -1039,15 +1070,6 @@ class Router array('action' => 'AtomPubSubscriptionFeed'), array('subscriber' => '[0-9]+')); - $m->connect('api/statusnet/app/favorites/:profile/:notice.atom', - array('action' => 'AtomPubShowFavorite'), - array('profile' => '[0-9]+', - 'notice' => '[0-9]+')); - - $m->connect('api/statusnet/app/favorites/:profile.atom', - array('action' => 'AtomPubFavoriteFeed'), - array('profile' => '[0-9]+')); - $m->connect('api/statusnet/app/memberships/:profile/:group.atom', array('action' => 'AtomPubShowMembership'), array('profile' => '[0-9]+',