]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/profileaction.php
Avatar resizing improvements and better code reuse
[quix0rs-gnu-social.git] / lib / profileaction.php
index ed3589d3b82cebafa4a6bdef3a89b5e1702ba7f1..f36f099c712b2947b438aa1129e6e0ddcf21029e 100644 (file)
@@ -23,7 +23,7 @@
  * @package   StatusNet
  * @author    Evan Prodromou <evan@status.net>
  * @author    Sarven Capadisli <csarven@status.net>
- * @copyright 2008-2009 StatusNet, Inc.
+ * @copyright 2008-2011 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
  */
@@ -46,7 +46,7 @@ require_once INSTALLDIR.'/lib/groupminilist.php';
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-class ProfileAction extends OwnerDesignAction
+class ProfileAction extends Action
 {
     var $page    = null;
     var $profile = null;
@@ -70,7 +70,7 @@ class ProfileAction extends OwnerDesignAction
             return false;
         }
 
-        $this->user = User::staticGet('nickname', $nickname);
+        $this->user = User::getKV('nickname', $nickname);
 
         if (!$this->user) {
             // TRANS: Client error displayed when calling a profile action without specifying a user.
@@ -81,11 +81,18 @@ class ProfileAction extends OwnerDesignAction
         $this->profile = $this->user->getProfile();
 
         if (!$this->profile) {
-            // TRANS: Server error displayed when calling a profile action while the specified user does not have a profile.
+            // TRANS: Error message displayed when referring to a user without a profile.
             $this->serverError(_('User has no profile.'));
             return false;
         }
 
+        $user = common_current_user();
+
+        if ($this->profile->hasRole(Profile_role::SILENCED) &&
+            (empty($user) || !$user->hasRight(Right::SILENCEUSER))) {
+            throw new ClientException(_('This profile has been silenced by site moderators'), 403);
+        }
+
         $this->tag = $this->trimmed('tag');
         $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
         common_set_returnto($this->selfUrl());
@@ -118,8 +125,6 @@ class ProfileAction extends OwnerDesignAction
 
     function showSubscriptions()
     {
-        $profile = $this->profile->getSubscriptions(0, PROFILES_PER_MINILIST + 1);
-
         $this->elementStart('div', array('id' => 'entity_subscriptions',
                                          'class' => 'section'));
         if (Event::handle('StartShowSubscriptionsMiniList', array($this))) {
@@ -129,16 +134,14 @@ class ProfileAction extends OwnerDesignAction
             $this->text(' ');
             $this->text($this->profile->subscriptionCount());
             $this->elementEnd('h2');
-
-            $cnt = 0;
-
-            if (!empty($profile)) {
+        
+            try {
+                $profile = $this->profile->getSubscribed(0, PROFILES_PER_MINILIST + 1);
                 $pml = new ProfileMiniList($profile, $this);
-                $cnt = $pml->show();
-                if ($cnt == 0) {
-                    // TRANS: Text for user subscription statistics if the user has no subscriptions.
-                    $this->element('p', null, _('(None)'));
-                }
+                $pml->show();
+            } catch (NoResultException $e) {
+                // TRANS: Text for user subscription statistics if the user has no subscription
+                $this->element('p', null, _('(None)'));
             }
 
             Event::handle('EndShowSubscriptionsMiniList', array($this));
@@ -148,8 +151,6 @@ class ProfileAction extends OwnerDesignAction
 
     function showSubscribers()
     {
-        $profile = $this->profile->getSubscribers(0, PROFILES_PER_MINILIST + 1);
-
         $this->elementStart('div', array('id' => 'entity_subscribers',
                                          'class' => 'section'));
 
@@ -162,15 +163,13 @@ class ProfileAction extends OwnerDesignAction
             $this->text($this->profile->subscriberCount());
             $this->elementEnd('h2');
 
-            $cnt = 0;
-
-            if (!empty($profile)) {
+            try {
+                $profile = $this->profile->getSubscribers(0, PROFILES_PER_MINILIST + 1);
                 $sml = new SubscribersMiniList($profile, $this);
-                $cnt = $sml->show();
-                if ($cnt == 0) {
-                    // TRANS: Text for user subscriber statistics if user has no subscribers.
-                    $this->element('p', null, _('(None)'));
-                }
+                $sml->show();
+            } catch (NoResultException $e) {
+                // TRANS: Text for user subscriber statistics if user has no subscribers.
+                $this->element('p', null, _('(None)'));
             }
 
             Event::handle('EndShowSubscribersMiniList', array($this));
@@ -259,7 +258,7 @@ class ProfileAction extends OwnerDesignAction
             // TRANS: H2 text for user group membership statistics.
             $this->statsSectionLink('usergroups', _('Groups'));
             $this->text(' ');
-            $this->text($this->profile->getGroups()->N);
+            $this->text($this->profile->getGroups(0, null)->N);
             $this->elementEnd('h2');
 
             if ($groups) {
@@ -292,9 +291,9 @@ class ProfileAction extends OwnerDesignAction
                                         array('nickname' => $this->profile->nickname));
 
                 $this->elementStart('h2');
-                // TRANS: H2 text for user list membership statistics.
                 $this->element('a',
                                array('href' => $url),
+                               // TRANS: H2 text for user list membership statistics.
                                _('Lists'));
                 $this->text(' ');
                 $this->text($lists->N);