]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'unicode-tag' into 0.9.x
authorBrion Vibber <brion@pobox.com>
Fri, 25 Feb 2011 18:17:03 +0000 (10:17 -0800)
committerBrion Vibber <brion@pobox.com>
Fri, 25 Feb 2011 18:17:03 +0000 (10:17 -0800)
1  2 
classes/Notice.php
lib/router.php
lib/util.php

diff --combined classes/Notice.php
index 6b56a613db013b161099b3256013fb74e15a3887,a640919094f97cc98239cd35cc4fe33f56b4eb53..a25991fa322fc779d17299fa5944ba2a7a9caaa8
@@@ -153,7 -153,7 +153,7 @@@ class Notice extends Memcached_DataObje
      function saveTags()
      {
          /* extract all #hastags */
-         $count = preg_match_all('/(?:^|\s)#([\pL\pN_\-\.]{1,64})/', strtolower($this->content), $match);
+         $count = preg_match_all('/(?:^|\s)#([\pL\pN_\-\.]{1,64})/u', strtolower($this->content), $match);
          if (!$count) {
              return true;
          }
       * @return Activity activity object representing this Notice.
       */
  
 -    function asActivity()
 +    function asActivity($cur)
      {
          $act = self::cacheGet(Cache::codeKey('notice:as-activity:'.$this->id));
  
          if (!empty($act)) {
              return $act;
          }
 -
          $act = new Activity();
  
          if (Event::handle('StartNoticeAsActivity', array($this, &$act))) {
  
              $profile = $this->getProfile();
  
 -            $act->actor     = ActivityObject::fromProfile($profile);
 -            $act->verb      = ActivityVerb::POST;
 -            $act->objects[] = ActivityObject::fromNotice($this);
 +            $act->actor            = ActivityObject::fromProfile($profile);
 +            $act->actor->extra[]   = $profile->profileInfo($cur);
 +            $act->verb             = ActivityVerb::POST;
 +            $act->objects[]        = ActivityObject::fromNotice($this);
  
              // XXX: should this be handled by default processing for object entry?
  
                           $author=true,
                           $cur=null)
      {
 -        $act = $this->asActivity();
 +        $act = $this->asActivity($cur);
          $act->extra[] = $this->noticeInfo($cur);
          return $act->asString($namespace, $author, $source);
      }
diff --combined lib/router.php
index a4547b325807d5d1b8d7c3f08e5b54d7aa4c0e97,69b27da21c5bde959884dc25f978661e19ceb8e5..e956b02c631067f56c2aaa01397cbb23a54b7fdd
@@@ -116,6 -116,8 +116,8 @@@ class Route
      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('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(
                      $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'),
diff --combined lib/util.php
index 1e73ff9ac9b0c1428ef2c0b25d444476c54d5b05,b710a4391bb7870a3d27762a9064d8b9fd9b24be..f734062eced327cec4423eaf9732634778af207d
@@@ -300,10 -300,7 +300,10 @@@ function common_set_user($user
  
      if ($user) {
          if (Event::handle('StartSetUser', array(&$user))) {
 -            if($user){
 +            if (!empty($user)) {
 +                if (!$user->hasRight(Right::WEBLOGIN)) {
 +                    throw new AuthorizationException(_('Not allowed to log in.'));
 +                }
                  common_ensure_session();
                  $_SESSION['userid'] = $user->id;
                  $_cur = $user;
@@@ -787,7 -784,7 +787,7 @@@ function common_render_text($text
  
      $r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
      $r = common_replace_urls_callback($r, 'common_linkify');
-     $r = preg_replace('/(^|\&quot\;|\'|\(|\[|\{|\s+)#([\pL\pN_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
+     $r = preg_replace('/(^|\&quot\;|\'|\(|\[|\{|\s+)#([\pL\pN_\-\.]{1,64})/ue', "'\\1#'.common_tag_link('\\2')", $r);
      // XXX: machine tags
      return $r;
  }