From b78e5de474f08dee5440f4d672550f806da87989 Mon Sep 17 00:00:00 2001 From: Shashi Gowda Date: Fri, 15 Apr 2011 18:21:47 +0530 Subject: [PATCH] Profile::getOwnedTags -> Profile::getLists, first argument is the current user, or the user accessing the lists. --- actions/apilists.php | 2 +- actions/peopletagautocomplete.php | 4 +- actions/peopletagsbyuser.php | 4 +- classes/Profile.php | 112 ++++++++++++++---------------- lib/listsnav.php | 2 +- lib/profileaction.php | 3 +- 6 files changed, 59 insertions(+), 68 deletions(-) diff --git a/actions/apilists.php b/actions/apilists.php index c5dbd7f290..5eab3e6a1f 100644 --- a/actions/apilists.php +++ b/actions/apilists.php @@ -189,7 +189,7 @@ class ApiListsAction extends ApiBareAuthAction // there is no argument named count $count = 20; $profile = $this->user->getProfile(); - $fn = array($profile, 'getOwnedTags'); + $fn = array($profile, 'getLists'); list($this->lists, $this->next_cursor, diff --git a/actions/peopletagautocomplete.php b/actions/peopletagautocomplete.php index d4ecb34e4f..5b6ae57a53 100644 --- a/actions/peopletagautocomplete.php +++ b/actions/peopletagautocomplete.php @@ -70,7 +70,7 @@ class PeopletagautocompleteAction extends Action } $profile = $this->user->getProfile(); - $tags = $profile->getOwnedTags(common_current_user()); + $tags = $profile->getLists(common_current_user()); $this->tags = array(); while ($tags->fetch()) { @@ -88,7 +88,7 @@ class PeopletagautocompleteAction extends Action $this->tags[] = $arr; } - $tags->free(); + $tags = NULL; return true; } diff --git a/actions/peopletagsbyuser.php b/actions/peopletagsbyuser.php index 7dc70058b2..62c956ff93 100644 --- a/actions/peopletagsbyuser.php +++ b/actions/peopletagsbyuser.php @@ -114,7 +114,7 @@ class PeopletagsbyuserAction extends OwnerDesignAction $user = common_current_user(); if ($this->arg('public')) { - $this->tags = $this->tagger->getOwnedTags(false, $offset, $limit); + $this->tags = $this->tagger->getLists(false, $offset, $limit); } else if ($this->arg('private')) { if (empty($user)) { // TRANS: Error message displayed when trying to perform an action that requires a logged in user. @@ -128,7 +128,7 @@ class PeopletagsbyuserAction extends OwnerDesignAction $this->clientError(_('You cannot view others\' private lists'), 403); } } else { - $this->tags = $this->tagger->getOwnedTags(common_current_user(), $offset, $limit); + $this->tags = $this->tagger->getLists(common_current_user(), $offset, $limit); } return true; } diff --git a/classes/Profile.php b/classes/Profile.php index b9c50905a7..16484fbe6e 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -321,36 +321,66 @@ class Profile extends Memcached_DataObject return false; } - function getOwnedTags($auth_user, $offset=0, $limit=null, $since_id=0, $max_id=0) + function getLists($auth_user, $offset=0, $limit=null, $since_id=0, $max_id=0) { - $tags = new Profile_list(); - $tags->tagger = $this->id; + $ids = array(); - if (($auth_user instanceof User || $auth_user instanceof Profile) && - $auth_user->id === $this->id) { - // no condition, get both private and public tags + $keypart = sprintf('profile:lists:%d', $this->id); + + $idstr = self::cacheGet($keypart); + + if ($idstr !== false) { + $ids = explode(',', $idstr); } else { - $tags->private = false; + $list = new Profile_list(); + $list->selectAdd(); + $list->selectAdd('id'); + $list->tagger = $this->id; + $list->selectAdd('id as "cursor"'); + + if ($since_id>0) { + $list->whereAdd('id > '.$since_id); + } + + if ($max_id>0) { + $list->whereAdd('id <= '.$max_id); + } + + if($offset>=0 && !is_null($limit)) { + $list->limit($offset, $limit); + } + + $list->orderBy('id DESC'); + + if ($list->find()) { + while ($list->fetch()) { + $ids[] = $list->id; + } + } + + self::cacheSet($keypart, implode(',', $ids)); } - $tags->selectAdd('id as "cursor"'); + $showPrivate = (($auth_user instanceof User || + $auth_user instanceof Profile) && + $auth_user->id === $this->id); - if ($since_id>0) { - $tags->whereAdd('id > '.$since_id); + $lists = array(); + + foreach ($ids as $id) { + $list = Profile_list::staticGet('id', $id); + if (!empty($list) && + ($showPrivate || !$list->private)) { + + if (!isset($list->cursor)) { + $list->cursor = $list->id; + } + + $lists[] = $list; + } } - if ($max_id>0) { - $tags->whereAdd('id <= '.$max_id); - } - - if($offset>=0 && !is_null($limit)) { - $tags->limit($offset, $limit); - } - - $tags->orderBy('id DESC'); - $tags->find(); - - return $tags; + return new ArrayWrapper($lists); } function getOtherTags($auth_user=null, $offset=0, $limit=null, $since_id=0, $max_id=0) @@ -1323,42 +1353,4 @@ class Profile extends Memcached_DataObject } return $profile; } - - function getLists() - { - $ids = array(); - - $keypart = sprintf('profile:lists:%d', $this->id); - - $idstr = self::cacheGet($keypart); - - if ($idstr !== false) { - $ids = explode(',', $idstr); - } else { - $list = new Profile_list(); - $list->selectAdd(); - $list->selectAdd('id'); - $list->tagger = $this->id; - - if ($list->find()) { - while ($list->fetch()) { - $ids[] = $list->id; - } - } - - self::cacheSet($keypart, implode(',', $ids)); - } - - $lists = array(); - - foreach ($ids as $id) { - $list = Profile_list::staticGet('id', $id); - if (!empty($list) && - ($showPrivate || !$list->private)) { - $lists[] = $list; - } - } - - return new ArrayWrapper($lists); - } } diff --git a/lib/listsnav.php b/lib/listsnav.php index 67d8941ba3..0f107e8883 100644 --- a/lib/listsnav.php +++ b/lib/listsnav.php @@ -51,7 +51,7 @@ class ListsNav extends Menu $user = common_current_user(); - $this->lists = $profile->getOwnedTags($user); + $this->lists = $profile->getLists($user); } function show() diff --git a/lib/profileaction.php b/lib/profileaction.php index c919cb6bed..ed3589d3b8 100644 --- a/lib/profileaction.php +++ b/lib/profileaction.php @@ -279,9 +279,8 @@ class ProfileAction extends OwnerDesignAction function showLists() { $cur = common_current_user(); - $showPrivate = (!empty($cur) && $cur->id == $this->profile->id); - $lists = $this->profile->getLists($showPrivate); + $lists = $this->profile->getLists($cur); if ($lists->N > 0) { $this->elementStart('div', array('id' => 'entity_lists',