]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/router.php
fix ModPlus 'remote profile options' popup for Realtime
[quix0rs-gnu-social.git] / lib / router.php
index 0ced86f34ef94bccb75385fb9e97e2a80f57df5e..e956b02c631067f56c2aaa01397cbb23a54b7fdd 100644 (file)
@@ -116,6 +116,8 @@ class Router
     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) {
@@ -160,7 +162,16 @@ class Router
     
     static function cacheKey()
     {
-        return Cache::codeKey('router');
+        $parts = array('router');
+
+        // Many router paths depend on this setting.
+        if (common_config('singleuser', 'enabled')) {
+            $parts[] = '1user';
+        } else {
+            $parts[] = 'multi';
+        }
+
+        return Cache::codeKey(implode(':', $parts));
     }
     
     function initialize()
@@ -199,6 +210,9 @@ class Router
                           'deleteuser',
                           'geocode',
                           'version',
+                          'backupaccount',
+                          'deleteaccount',
+                          'restoreaccount',
             );
 
             foreach ($main as $a) {
@@ -336,14 +350,14 @@ class Router
             $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
 
@@ -395,64 +409,64 @@ class Router
 
             $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',
@@ -515,6 +529,11 @@ class Router
                               'id' => Nickname::INPUT_FMT,
                               'format' => '(xml|json)'));
 
+            $m->connect('api/users/profile_image/:screen_name.:format',
+                        array('action' => 'ApiUserProfileImage',
+                              'screen_name' => Nickname::DISPLAY_FMT,
+                              'format' => '(xml|json)'));
+
             // direct messages
 
             $m->connect('api/direct_messages.:format',
@@ -608,12 +627,12 @@ class Router
 
             $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',
@@ -678,7 +697,7 @@ class Router
             $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',
@@ -739,7 +758,7 @@ class Router
             // 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(
@@ -795,7 +814,7 @@ class Router
                     $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) {
@@ -822,12 +841,12 @@ class Router
                 $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',
@@ -858,7 +877,7 @@ class Router
                 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));
                 }
 
@@ -886,12 +905,12 @@ class Router
                 $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'),
@@ -905,8 +924,8 @@ class Router
             // AtomPub API
 
             $m->connect('api/statusnet/app/service/:id.xml',
-                        array('action' => 'ApiAtomService',
-                              'id' => Nickname::DISPLAY_FMT));
+                        array('action' => 'ApiAtomService'),
+                        array('id' => Nickname::DISPLAY_FMT));
 
             $m->connect('api/statusnet/app/service.xml',
                         array('action' => 'ApiAtomService'));
@@ -929,6 +948,15 @@ class Router
                         array('action' => 'AtomPubFavoriteFeed'),
                         array('profile' => '[0-9]+'));
 
+            $m->connect('api/statusnet/app/memberships/:profile/:group.atom',
+                        array('action' => 'AtomPubShowMembership'),
+                        array('profile' => '[0-9]+',
+                              'group' => '[0-9]+'));
+
+            $m->connect('api/statusnet/app/memberships/:profile.atom',
+                        array('action' => 'AtomPubMembershipFeed'),
+                        array('profile' => '[0-9]+'));
+
             // user stuff
 
             Event::handle('RouterInitialized', array($m));