Profile::getOwnedTags -> Profile::getLists, first argument is the current user, or the user accessing the lists.
This commit is contained in:
parent
abcfde4d7d
commit
b78e5de474
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ class ListsNav extends Menu
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
$this->lists = $profile->getOwnedTags($user);
|
||||
$this->lists = $profile->getLists($user);
|
||||
}
|
||||
|
||||
function show()
|
||||
|
@ -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',
|
||||
|
Loading…
Reference in New Issue
Block a user