forked from GNUsocial/gnu-social
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
|
// there is no argument named count
|
||||||
$count = 20;
|
$count = 20;
|
||||||
$profile = $this->user->getProfile();
|
$profile = $this->user->getProfile();
|
||||||
$fn = array($profile, 'getOwnedTags');
|
$fn = array($profile, 'getLists');
|
||||||
|
|
||||||
list($this->lists,
|
list($this->lists,
|
||||||
$this->next_cursor,
|
$this->next_cursor,
|
||||||
|
@ -70,7 +70,7 @@ class PeopletagautocompleteAction extends Action
|
|||||||
}
|
}
|
||||||
|
|
||||||
$profile = $this->user->getProfile();
|
$profile = $this->user->getProfile();
|
||||||
$tags = $profile->getOwnedTags(common_current_user());
|
$tags = $profile->getLists(common_current_user());
|
||||||
|
|
||||||
$this->tags = array();
|
$this->tags = array();
|
||||||
while ($tags->fetch()) {
|
while ($tags->fetch()) {
|
||||||
@ -88,7 +88,7 @@ class PeopletagautocompleteAction extends Action
|
|||||||
$this->tags[] = $arr;
|
$this->tags[] = $arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tags->free();
|
$tags = NULL;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ class PeopletagsbyuserAction extends OwnerDesignAction
|
|||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
if ($this->arg('public')) {
|
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')) {
|
} else if ($this->arg('private')) {
|
||||||
if (empty($user)) {
|
if (empty($user)) {
|
||||||
// TRANS: Error message displayed when trying to perform an action that requires a logged in 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);
|
$this->clientError(_('You cannot view others\' private lists'), 403);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->tags = $this->tagger->getOwnedTags(common_current_user(), $offset, $limit);
|
$this->tags = $this->tagger->getLists(common_current_user(), $offset, $limit);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -321,36 +321,66 @@ class Profile extends Memcached_DataObject
|
|||||||
return false;
|
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();
|
$ids = array();
|
||||||
$tags->tagger = $this->id;
|
|
||||||
|
|
||||||
if (($auth_user instanceof User || $auth_user instanceof Profile) &&
|
$keypart = sprintf('profile:lists:%d', $this->id);
|
||||||
$auth_user->id === $this->id) {
|
|
||||||
// no condition, get both private and public tags
|
$idstr = self::cacheGet($keypart);
|
||||||
|
|
||||||
|
if ($idstr !== false) {
|
||||||
|
$ids = explode(',', $idstr);
|
||||||
} else {
|
} else {
|
||||||
$tags->private = false;
|
$list = new Profile_list();
|
||||||
}
|
$list->selectAdd();
|
||||||
|
$list->selectAdd('id');
|
||||||
$tags->selectAdd('id as "cursor"');
|
$list->tagger = $this->id;
|
||||||
|
$list->selectAdd('id as "cursor"');
|
||||||
|
|
||||||
if ($since_id>0) {
|
if ($since_id>0) {
|
||||||
$tags->whereAdd('id > '.$since_id);
|
$list->whereAdd('id > '.$since_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($max_id>0) {
|
if ($max_id>0) {
|
||||||
$tags->whereAdd('id <= '.$max_id);
|
$list->whereAdd('id <= '.$max_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($offset>=0 && !is_null($limit)) {
|
if($offset>=0 && !is_null($limit)) {
|
||||||
$tags->limit($offset, $limit);
|
$list->limit($offset, $limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
$tags->orderBy('id DESC');
|
$list->orderBy('id DESC');
|
||||||
$tags->find();
|
|
||||||
|
|
||||||
return $tags;
|
if ($list->find()) {
|
||||||
|
while ($list->fetch()) {
|
||||||
|
$ids[] = $list->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self::cacheSet($keypart, implode(',', $ids));
|
||||||
|
}
|
||||||
|
|
||||||
|
$showPrivate = (($auth_user instanceof User ||
|
||||||
|
$auth_user instanceof Profile) &&
|
||||||
|
$auth_user->id === $this->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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayWrapper($lists);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOtherTags($auth_user=null, $offset=0, $limit=null, $since_id=0, $max_id=0)
|
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;
|
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();
|
$user = common_current_user();
|
||||||
|
|
||||||
$this->lists = $profile->getOwnedTags($user);
|
$this->lists = $profile->getLists($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
function show()
|
function show()
|
||||||
|
@ -279,9 +279,8 @@ class ProfileAction extends OwnerDesignAction
|
|||||||
function showLists()
|
function showLists()
|
||||||
{
|
{
|
||||||
$cur = common_current_user();
|
$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) {
|
if ($lists->N > 0) {
|
||||||
$this->elementStart('div', array('id' => 'entity_lists',
|
$this->elementStart('div', array('id' => 'entity_lists',
|
||||||
|
Loading…
Reference in New Issue
Block a user