]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Debug some of the subscriptions+tags problems
authorEvan Prodromou <evan@controlyourself.ca>
Thu, 22 Jan 2009 22:38:10 +0000 (22:38 +0000)
committerEvan Prodromou <evan@controlyourself.ca>
Thu, 22 Jan 2009 22:38:10 +0000 (22:38 +0000)
actions/subscribers.php
actions/subscriptions.php
classes/User.php
lib/galleryaction.php
lib/profilelist.php

index 408829b54528a09bf117b8590f1ada08fbc21bc0..be9df2b124732894028a6c7a70573d3c42f9c174 100644 (file)
@@ -75,7 +75,11 @@ class SubscribersAction extends GalleryAction
         $offset = ($this->page-1) * PROFILES_PER_PAGE;
         $limit =  PROFILES_PER_PAGE + 1;
 
-        $subscribers = $this->user->getSubscribers($offset, $limit);
+        if ($this->tag) {
+            $subscribers = $this->user->getTaggedSubscribers($this->tag, $offset, $limit);
+        } else {
+            $subscribers = $this->user->getSubscribers($offset, $limit);
+        }
 
         if ($subscribers) {
             $subscribers_list = new SubscribersList($subscribers, $this->user, $this);
index bcc5578917c6408ba1868809b05227f0e408190c..d7ba0d624b34e32bfae1967a9b402ff79a32d298 100644 (file)
@@ -84,7 +84,11 @@ class SubscriptionsAction extends GalleryAction
         $offset = ($this->page-1) * PROFILES_PER_PAGE;
         $limit =  PROFILES_PER_PAGE + 1;
 
-        $subscriptions = $this->user->getSubscriptions($offset, $limit);
+        if ($this->tag) {
+            $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit);
+        } else {
+            $subscriptions = $this->user->getSubscriptions($offset, $limit);
+        }
 
         if ($subscriptions) {
             $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this);
index 5dadd6b440339878d40e218869ca97708ae40f8b..5f4fb9b6fb057e4eddeabfef4e6209e3d524a89c 100644 (file)
@@ -575,4 +575,58 @@ class User extends Memcached_DataObject
 
         return $profile;
     }
+
+    function getTaggedSubscribers($tag, $offset=0, $limit=null)
+    {
+        $qry =
+          'SELECT profile.* ' .
+          'FROM profile JOIN subscription ' .
+          'ON profile.id = subscription.subscriber ' .
+          'JOIN profile_tag ON (profile_tag.tagged = subscription.subscriber ' .
+          'AND profile_tag.tagger = subscription.subscribed) ' .
+          'WHERE subscription.subscribed = %d ' .
+          'AND profile_tag.tag = "%s" ' .
+          'AND subscription.subscribed != subscription.subscriber ' .
+          'ORDER BY subscription.created DESC ';
+
+        if ($offset) {
+            if (common_config('db','type') == 'pgsql') {
+                $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
+            } else {
+                $qry .= ' LIMIT ' . $offset . ', ' . $limit;
+            }
+        }
+
+        $profile = new Profile();
+
+        $cnt = $profile->query(sprintf($qry, $this->id, $tag));
+
+        return $profile;
+    }
+
+    function getTaggedSubscriptions($tag, $offset=0, $limit=null)
+    {
+        $qry =
+          'SELECT profile.* ' .
+          'FROM profile JOIN subscription ' .
+          'ON profile.id = subscription.subscribed ' .
+          'JOIN profile_tag on (profile_tag.tagged = subscription.subscribed ' .
+          'AND profile_tag.tagger = subscription.subscriber) ' .
+          'WHERE subscription.subscriber = %d ' .
+          'AND profile_tag.tag = "%s" ' .
+          'AND subscription.subscribed != subscription.subscriber ' .
+          'ORDER BY subscription.created DESC ';
+
+        if (common_config('db','type') == 'pgsql') {
+            $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
+        } else {
+            $qry .= ' LIMIT ' . $offset . ', ' . $limit;
+        }
+
+        $profile = new Profile();
+
+        $profile->query(sprintf($qry, $this->id, $tag));
+
+        return $profile;
+    }
 }
index a277762a6594b12af6b09235b8dbea2b8f6efa23..25a5e3fd59dd52386eb25e3bd9bd94386e912aec 100644 (file)
@@ -32,6 +32,7 @@ class GalleryAction extends Action
     var $profile = null;
     var $user = null;
     var $page = null;
+    var $tag = null;
 
     function prepare($args)
     {
@@ -69,6 +70,8 @@ class GalleryAction extends Action
 
         $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 
+        $this->tag = $this->trimmed('tag');
+
         return true;
     }
 
@@ -84,7 +87,7 @@ class GalleryAction extends Action
                # Post from the tag dropdown; redirect to a GET
 
                if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-                   common_redirect($this->self_url(), 307);
+                   common_redirect($this->selfUrl(), 307);
             return;
                }
 
@@ -124,7 +127,7 @@ class GalleryAction extends Action
                            array('href' =>
                                  common_local_url($this->trimmed('action'),
                                                   array('nickname' =>
-                                                        $profile->nickname))),
+                                                        $this->user->nickname))),
                            _('All'));
             $this->elementEnd('li');
             $this->elementStart('li', array('id'=>'filter_tags_item'));
index a510c518c5dffc4564ae779666c58779d4ab3cc1..499d74f7b58400552fc76314a6b8241a1c94afdf 100644 (file)
@@ -169,9 +169,9 @@ class ProfileList extends Widget
                 $this->out->elementStart('ul', 'tags xoxo');
                 foreach ($tags as $tag) {
                     $this->out->elementStart('li');
-                    $this->element('span', 'mark_hash', '#');
+                    $this->out->element('span', 'mark_hash', '#');
                     $this->out->element('a', array('rel' => 'tag',
-                                                   'href' => common_local_url($this->action,
+                                                   'href' => common_local_url($this->action->trimmed('action'),
                                                                               array('nickname' => $this->owner->nickname,
                                                                                     'tag' => $tag))),
                                         $tag);