]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/profileaction.php
cache frequently-used subscriber, subscription, notice and fave count values
[quix0rs-gnu-social.git] / lib / profileaction.php
index a3437ff4ddbec567d630c3f25e4985aa8b3f73a8..9e9c79c78a90436c76397427826ecf40f4d41bc2 100644 (file)
@@ -47,9 +47,8 @@ require_once INSTALLDIR.'/lib/groupminilist.php';
  * @link     http://laconi.ca/
  */
 
-class ProfileAction extends Action
+class ProfileAction extends OwnerDesignAction
 {
-    var $user    = null;
     var $page    = null;
     var $profile = null;
     var $tag     = null;
@@ -109,8 +108,10 @@ class ProfileAction extends Action
 
         $this->element('h2', null, _('Subscriptions'));
 
-        if ($profile) {
-            $pml = new ProfileMiniList($profile, $this->user, $this);
+        $cnt = 0;
+
+        if (!empty($profile)) {
+            $pml = new ProfileMiniList($profile, $this);
             $cnt = $pml->show();
             if ($cnt == 0) {
                 $this->element('p', null, _('(None)'));
@@ -138,8 +139,10 @@ class ProfileAction extends Action
 
         $this->element('h2', null, _('Subscribers'));
 
-        if ($profile) {
-            $pml = new ProfileMiniList($profile, $this->user, $this);
+        $cnt = 0;
+
+        if (!empty($profile)) {
+            $pml = new ProfileMiniList($profile, $this);
             $cnt = $pml->show();
             if ($cnt == 0) {
                 $this->element('p', null, _('(None)'));
@@ -160,18 +163,9 @@ class ProfileAction extends Action
 
     function showStatistics()
     {
-        // XXX: WORM cache this
-        $subs = new Subscription();
-        $subs->subscriber = $this->profile->id;
-        $subs_count = (int) $subs->count() - 1;
-
-        $subbed = new Subscription();
-        $subbed->subscribed = $this->profile->id;
-        $subbed_count = (int) $subbed->count() - 1;
-
-        $notices = new Notice();
-        $notices->profile_id = $this->profile->id;
-        $notice_count = (int) $notices->count();
+        $subs_count   = $this->profile->subscriptionCount();
+        $subbed_count = $this->profile->subscriberCount();
+        $notice_count = $this->profile->noticeCount();
 
         $this->elementStart('div', array('id' => 'entity_statistics',
                                          'class' => 'section'));
@@ -196,7 +190,7 @@ class ProfileAction extends Action
                                                              array('nickname' => $this->profile->nickname))),
                        _('Subscriptions'));
         $this->elementEnd('dt');
-        $this->element('dd', null, (is_int($subs_count)) ? $subs_count : '0');
+        $this->element('dd', null, $subs_count);
         $this->elementEnd('dl');
 
         $this->elementStart('dl', 'entity_subscribers');
@@ -205,12 +199,12 @@ class ProfileAction extends Action
                                                              array('nickname' => $this->profile->nickname))),
                        _('Subscribers'));
         $this->elementEnd('dt');
-        $this->element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0');
+        $this->element('dd', 'subscribers', $subbed_count);
         $this->elementEnd('dl');
 
         $this->elementStart('dl', 'entity_notices');
         $this->element('dt', null, _('Notices'));
-        $this->element('dd', null, (is_int($notice_count)) ? $notice_count : '0');
+        $this->element('dd', null, $notice_count);
         $this->elementEnd('dl');
 
         $this->elementEnd('div');