forked from GNUsocial/gnu-social
		
	Merge branch 'people_tag_fixes' into 1.0.x
This commit is contained in:
		@@ -49,11 +49,11 @@ class EditpeopletagAction extends OwnerDesignAction
 | 
				
			|||||||
        if ($_SERVER['REQUEST_METHOD'] == 'POST' && $this->boolean('delete')) {
 | 
					        if ($_SERVER['REQUEST_METHOD'] == 'POST' && $this->boolean('delete')) {
 | 
				
			||||||
            // TRANS: Title for edit people tag page after deleting a tag.
 | 
					            // TRANS: Title for edit people tag page after deleting a tag.
 | 
				
			||||||
            // TRANS: %s is a tag.
 | 
					            // TRANS: %s is a tag.
 | 
				
			||||||
            return sprintf(_('Delete %s people tag'), $this->peopletag->tag);
 | 
					            return sprintf(_('Delete %s list'), $this->peopletag->tag);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // TRANS: Title for edit people tag page.
 | 
					        // TRANS: Title for edit people tag page.
 | 
				
			||||||
        // TRANS: %s is a tag.
 | 
					        // TRANS: %s is a tag.
 | 
				
			||||||
        return sprintf(_('Edit people tag %s'), $this->peopletag->tag);
 | 
					        return sprintf(_('Edit list %s'), $this->peopletag->tag);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -106,7 +106,7 @@ class EditpeopletagAction extends OwnerDesignAction
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (!$this->peopletag) {
 | 
					        if (!$this->peopletag) {
 | 
				
			||||||
            // TRANS: Client error displayed when referring to a non-exsting people tag.
 | 
					            // TRANS: Client error displayed when referring to a non-exsting people tag.
 | 
				
			||||||
            $this->clientError(_('No such people tag.'), 404);
 | 
					            $this->clientError(_('No such list.'), 404);
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -216,7 +216,7 @@ class EditpeopletagAction extends OwnerDesignAction
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            $this->element('p', 'instructions',
 | 
					            $this->element('p', 'instructions',
 | 
				
			||||||
                           // TRANS: Form instruction for edit people tag form.
 | 
					                           // TRANS: Form instruction for edit people tag form.
 | 
				
			||||||
                           _('Use this form to edit the people tag.'));
 | 
					                           _('Use this form to edit the list.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -294,7 +294,7 @@ class EditpeopletagAction extends OwnerDesignAction
 | 
				
			|||||||
        if (!$result) {
 | 
					        if (!$result) {
 | 
				
			||||||
            common_log_db_error($this->group, 'UPDATE', __FILE__);
 | 
					            common_log_db_error($this->group, 'UPDATE', __FILE__);
 | 
				
			||||||
            // TRANS: TRANS: Server error displayed when updating a people tag fails.
 | 
					            // TRANS: TRANS: Server error displayed when updating a people tag fails.
 | 
				
			||||||
            $this->serverError(_('Could not update people tag.'));
 | 
					            $this->serverError(_('Could not update list.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->peopletag->query('COMMIT');
 | 
					        $this->peopletag->query('COMMIT');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,7 +93,7 @@ class PeopletaggedAction extends OwnerDesignAction
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (!$this->peopletag) {
 | 
					        if (!$this->peopletag) {
 | 
				
			||||||
            // TRANS: Client error displayed when referring to non-existing people tag.
 | 
					            // TRANS: Client error displayed when referring to non-existing people tag.
 | 
				
			||||||
            $this->clientError(_('No such people tag.'), 404);
 | 
					            $this->clientError(_('No such list.'), 404);
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -105,12 +105,12 @@ class PeopletaggedAction extends OwnerDesignAction
 | 
				
			|||||||
        if ($this->page == 1) {
 | 
					        if ($this->page == 1) {
 | 
				
			||||||
            // TRANS: Title for list of people tagged by the user with a tag.
 | 
					            // TRANS: Title for list of people tagged by the user with a tag.
 | 
				
			||||||
            // TRANS: %1$s is a tag, %2$s is a username.
 | 
					            // TRANS: %1$s is a tag, %2$s is a username.
 | 
				
			||||||
            return sprintf(_('People tagged %1$s by %2$s'),
 | 
					            return sprintf(_('People listed in %1$s by %2$s'),
 | 
				
			||||||
                           $this->peopletag->tag, $this->tagger->nickname);
 | 
					                           $this->peopletag->tag, $this->tagger->nickname);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // TRANS: Title for list of people tagged by the user with a tag.
 | 
					            // TRANS: Title for list of people tagged by the user with a tag.
 | 
				
			||||||
            // TRANS: %1$s is a tag, %2$s is a username, %2$s is a page number.
 | 
					            // TRANS: %1$s is a tag, %2$s is a username, %2$s is a page number.
 | 
				
			||||||
            return sprintf(_('People tagged %1$s by %2$s, page %3$d'),
 | 
					            return sprintf(_('People listed in %1$s by %2$s, page %3$d'),
 | 
				
			||||||
                           $this->peopletag->tag, $this->user->nickname,
 | 
					                           $this->peopletag->tag, $this->user->nickname,
 | 
				
			||||||
                           $this->page);
 | 
					                           $this->page);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * StatusNet, the distributed open-source microblogging tool
 | 
					 * StatusNet, the distributed open-source microblogging tool
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * People tags by a user
 | 
					 * Lists by a user
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * PHP version 5
 | 
					 * PHP version 5
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -49,22 +49,22 @@ class PeopletagsbyuserAction extends OwnerDesignAction
 | 
				
			|||||||
        if ($this->page == 1) {
 | 
					        if ($this->page == 1) {
 | 
				
			||||||
            if ($this->isOwner()) {
 | 
					            if ($this->isOwner()) {
 | 
				
			||||||
                if ($this->arg('private')) {
 | 
					                if ($this->arg('private')) {
 | 
				
			||||||
                    // TRANS: Title for people tags by a user page for a private tag.
 | 
					                    // TRANS: Title for lists by a user page for a private tag.
 | 
				
			||||||
                    return _('Private people tags by you');
 | 
					                    return _('Private lists by you');
 | 
				
			||||||
                } else if ($this->arg('public')) {
 | 
					                } else if ($this->arg('public')) {
 | 
				
			||||||
                    // TRANS: Title for people tags by a user page for a public tag.
 | 
					                    // TRANS: Title for lists by a user page for a public tag.
 | 
				
			||||||
                    return _('Public people tags by you');
 | 
					                    return _('Public lists by you');
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                // TRANS: Title for people tags by a user page.
 | 
					                // TRANS: Title for lists by a user page.
 | 
				
			||||||
                return _('People tags by you');
 | 
					                return _('Lists by you');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // TRANS: Title for people tags by a user page.
 | 
					            // TRANS: Title for lists by a user page.
 | 
				
			||||||
            // TRANS: %s is a user nickname.
 | 
					            // TRANS: %s is a user nickname.
 | 
				
			||||||
            return sprintf(_('People tags by %s'), $this->tagger->nickname);
 | 
					            return sprintf(_('Lists by %s'), $this->tagger->nickname);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // TRANS: Title for people tags by a user page.
 | 
					            // TRANS: Title for lists by a user page.
 | 
				
			||||||
            // TRANS: %1$s is a user nickname, %2$d is a page number.
 | 
					            // TRANS: %1$s is a user nickname, %2$d is a page number.
 | 
				
			||||||
            return sprintf(_('People tags by %1$s, page %2$d'), $this->tagger->nickname, $this->page);
 | 
					            return sprintf(_('Lists by %1$s, page %2$d'), $this->tagger->nickname, $this->page);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -124,8 +124,8 @@ class PeopletagsbyuserAction extends OwnerDesignAction
 | 
				
			|||||||
            if ($this->isOwner()) {
 | 
					            if ($this->isOwner()) {
 | 
				
			||||||
                $this->tags = $this->tagger->getPrivateTags($offset, $limit);
 | 
					                $this->tags = $this->tagger->getPrivateTags($offset, $limit);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                // TRANS: Client error displayed when trying view another user's private people tags.
 | 
					                // TRANS: Client error displayed when trying view another user's private lists.
 | 
				
			||||||
                $this->clientError(_('You cannot view others\' private people tags'), 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->getOwnedTags(common_current_user(), $offset, $limit);
 | 
				
			||||||
@@ -160,8 +160,8 @@ class PeopletagsbyuserAction extends OwnerDesignAction
 | 
				
			|||||||
                       array('href' =>
 | 
					                       array('href' =>
 | 
				
			||||||
                             common_local_url('peopletagsforuser',
 | 
					                             common_local_url('peopletagsforuser',
 | 
				
			||||||
                                              array('nickname' => $this->user->nickname))),
 | 
					                                              array('nickname' => $this->user->nickname))),
 | 
				
			||||||
                       // TRANS: Link text to show people tags for user %s.
 | 
					                       // TRANS: Link text to show lists for user %s.
 | 
				
			||||||
                       sprintf(_('People tags for %s'), $this->tagger->nickname));
 | 
					                       sprintf(_('Lists for %s'), $this->tagger->nickname));
 | 
				
			||||||
        $this->elementEnd('li');
 | 
					        $this->elementEnd('li');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->isOwner()) {
 | 
					        if ($this->isOwner()) {
 | 
				
			||||||
@@ -204,11 +204,11 @@ class PeopletagsbyuserAction extends OwnerDesignAction
 | 
				
			|||||||
    function showAnonymousMessage()
 | 
					    function showAnonymousMessage()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $notice =
 | 
					        $notice =
 | 
				
			||||||
          // TRANS: Message displayed for anonymous users on page that displays people tags by a user.
 | 
					          // TRANS: Message displayed for anonymous users on page that displays lists by a user.
 | 
				
			||||||
          // TRANS: This message contains Markdown links in the form [description](links).
 | 
					          // TRANS: This message contains Markdown links in the form [description](links).
 | 
				
			||||||
          // TRANS: %s is a tagger nickname.
 | 
					          // TRANS: %s is a tagger nickname.
 | 
				
			||||||
          sprintf(_('These are people tags created by **%s**. ' .
 | 
					          sprintf(_('These are lists created by **%s**. ' .
 | 
				
			||||||
                    'People tags are how you sort similar ' .
 | 
					                    'Lists are how you sort similar ' .
 | 
				
			||||||
                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
					                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
				
			||||||
                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
					                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
				
			||||||
                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
					                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
				
			||||||
@@ -259,17 +259,29 @@ class PeopletagsbyuserAction extends OwnerDesignAction
 | 
				
			|||||||
        return !empty($user) && $user->id == $this->tagger->id;
 | 
					        return !empty($user) && $user->id == $this->tagger->id;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showObjectNav()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $nav = new PeopletagNav($this, $this->tagger);
 | 
				
			||||||
 | 
					        $nav->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showEmptyListMessage()
 | 
					    function showEmptyListMessage()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
          // TRANS: Message displayed on page that displays people tags by a user when there are none.
 | 
					          // TRANS: Message displayed on page that displays lists by a user when there are none.
 | 
				
			||||||
          // TRANS: This message contains Markdown links in the form [description](links).
 | 
					          // TRANS: This message contains Markdown links in the form [description](links).
 | 
				
			||||||
          // TRANS: %s is a tagger nickname.
 | 
					          // TRANS: %s is a tagger nickname.
 | 
				
			||||||
        $message = sprintf(_('%s has not created any [people tags](%%%%doc.tags%%%%) yet.'), $this->tagger->nickname);
 | 
					        $message = sprintf(_('%s has not created any [lists](%%%%doc.lists%%%%) yet.'), $this->tagger->nickname);
 | 
				
			||||||
        $this->elementStart('div', 'guide');
 | 
					        $this->elementStart('div', 'guide');
 | 
				
			||||||
        $this->raw(common_markup_to_html($message));
 | 
					        $this->raw(common_markup_to_html($message));
 | 
				
			||||||
        $this->elementEnd('div');
 | 
					        $this->elementEnd('div');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showProfileBlock()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $block = new AccountProfileBlock($this, $this->tagger);
 | 
				
			||||||
 | 
					        $block->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showSections()
 | 
					    function showSections()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        #TODO: tags with most subscribers
 | 
					        #TODO: tags with most subscribers
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,10 +47,10 @@ class PeopletagsforuserAction extends OwnerDesignAction
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->page == 1) {
 | 
					        if ($this->page == 1) {
 | 
				
			||||||
            // Page title. %s is a tagged user's nickname.
 | 
					            // Page title. %s is a tagged user's nickname.
 | 
				
			||||||
            return sprintf(_('People tags for %s'), $this->tagged->nickname);
 | 
					            return sprintf(_('Lists with %s in them'), $this->tagged->nickname);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // Page title. %1$s is a tagged user's nickname, %2$s is a page number.
 | 
					            // Page title. %1$s is a tagged user's nickname, %2$s is a page number.
 | 
				
			||||||
            return sprintf(_('People tags for %1$s, page %2$d'), $this->tagged->nickname, $this->page);
 | 
					            return sprintf(_('Lists with %1$s, page %2$d'), $this->tagged->nickname, $this->page);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -105,8 +105,8 @@ class PeopletagsforuserAction extends OwnerDesignAction
 | 
				
			|||||||
          // TRANS: Message displayed for anonymous users on page that displays people tags for a user.
 | 
					          // TRANS: Message displayed for anonymous users on page that displays people tags for a user.
 | 
				
			||||||
          // TRANS: This message contains Markdown links in the form [description](links).
 | 
					          // TRANS: This message contains Markdown links in the form [description](links).
 | 
				
			||||||
          // TRANS: %s is a tagger nickname.
 | 
					          // TRANS: %s is a tagger nickname.
 | 
				
			||||||
          sprintf(_('These are people tags for **%s**. ' .
 | 
					          sprintf(_('These are lists for **%s**. ' .
 | 
				
			||||||
                    'People tags are how you sort similar ' .
 | 
					                    'lists are how you sort similar ' .
 | 
				
			||||||
                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
					                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
				
			||||||
                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
					                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
				
			||||||
                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
					                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
				
			||||||
@@ -117,27 +117,6 @@ class PeopletagsforuserAction extends OwnerDesignAction
 | 
				
			|||||||
        $this->elementEnd('div');
 | 
					        $this->elementEnd('div');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showPageNotice()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $this->elementStart('dl', 'filter_tags');
 | 
					 | 
				
			||||||
        $this->elementStart('dd', array('id' => 'filter_tags_for',
 | 
					 | 
				
			||||||
                                         'class' => 'child_1'));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $user = common_current_user();
 | 
					 | 
				
			||||||
        // TRANS: Page notice.
 | 
					 | 
				
			||||||
        $text = ($this->tagged->id == @$user->id) ? _('People tags by you') :
 | 
					 | 
				
			||||||
                // TRANS: Page notice. %s is a tagger's nickname.
 | 
					 | 
				
			||||||
                sprintf(_('People tags by %s'), $this->tagged->nickname);
 | 
					 | 
				
			||||||
        $this->element('a',
 | 
					 | 
				
			||||||
                       array('href' =>
 | 
					 | 
				
			||||||
                             common_local_url('peopletagsbyuser',
 | 
					 | 
				
			||||||
                                              array('nickname' => $this->tagged->nickname))),
 | 
					 | 
				
			||||||
                           $text);
 | 
					 | 
				
			||||||
        $this->elementEnd('dd');
 | 
					 | 
				
			||||||
        $this->elementEnd('dl');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function showContent()
 | 
					    function showContent()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        #TODO: controls here.
 | 
					        #TODO: controls here.
 | 
				
			||||||
@@ -162,12 +141,24 @@ class PeopletagsforuserAction extends OwnerDesignAction
 | 
				
			|||||||
        // TRANS: Message displayed on page that displays people tags for a user when there are none.
 | 
					        // TRANS: Message displayed on page that displays people tags for a user when there are none.
 | 
				
			||||||
        // TRANS: This message contains Markdown links in the form [description](links).
 | 
					        // TRANS: This message contains Markdown links in the form [description](links).
 | 
				
			||||||
        // TRANS: %s is a tagger nickname.
 | 
					        // TRANS: %s is a tagger nickname.
 | 
				
			||||||
        $message = sprintf(_('%s has not been [tagged](%%%%doc.tags%%%%) by anyone yet.'), $this->tagged->nickname);
 | 
					        $message = sprintf(_('%s has not been [listed](%%%%doc.lists%%%%) by anyone yet.'), $this->tagged->nickname);
 | 
				
			||||||
        $this->elementStart('div', 'guide');
 | 
					        $this->elementStart('div', 'guide');
 | 
				
			||||||
        $this->raw(common_markup_to_html($message));
 | 
					        $this->raw(common_markup_to_html($message));
 | 
				
			||||||
        $this->elementEnd('div');
 | 
					        $this->elementEnd('div');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showObjectNav()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $nav = new PeopletagNav($this, $this->tagged);
 | 
				
			||||||
 | 
					        $nav->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showProfileBlock()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $block = new AccountProfileBlock($this, $this->tagged);
 | 
				
			||||||
 | 
					        $block->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showSections()
 | 
					    function showSections()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        #TODO: tags with most subscribers
 | 
					        #TODO: tags with most subscribers
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,11 +48,11 @@ class PeopletagsubscriptionsAction extends OwnerDesignAction
 | 
				
			|||||||
        if ($this->page == 1) {
 | 
					        if ($this->page == 1) {
 | 
				
			||||||
            // TRANS: Title for page that displays people tags subscribed to by a user.
 | 
					            // TRANS: Title for page that displays people tags subscribed to by a user.
 | 
				
			||||||
            // TRANS: %s is a profile nickname.
 | 
					            // TRANS: %s is a profile nickname.
 | 
				
			||||||
            return sprintf(_('People tags subscriptions by %s'), $this->profile->nickname);
 | 
					            return sprintf(_('Lists subscribed to by %s'), $this->profile->nickname);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // TRANS: Title for page that displays people tags subscribed to by a user.
 | 
					            // TRANS: Title for page that displays people tags subscribed to by a user.
 | 
				
			||||||
            // TRANS: %1$s is a profile nickname, %2$d is a page number.
 | 
					            // TRANS: %1$s is a profile nickname, %2$d is a page number.
 | 
				
			||||||
            return sprintf(_('People tags subscriptions by %1$s, page %2$d'), $this->profile->nickname, $this->page);
 | 
					            return sprintf(_('Lists subscribed to by %1$s, page %2$d'), $this->profile->nickname, $this->page);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -107,13 +107,13 @@ class PeopletagsubscriptionsAction extends OwnerDesignAction
 | 
				
			|||||||
          // TRANS: Message displayed for anonymous users on page that displays people tags subscribed to by a user.
 | 
					          // TRANS: Message displayed for anonymous users on page that displays people tags subscribed to by a user.
 | 
				
			||||||
          // TRANS: This message contains Markdown links in the form [description](links).
 | 
					          // TRANS: This message contains Markdown links in the form [description](links).
 | 
				
			||||||
          // TRANS: %s is a profile nickname.
 | 
					          // TRANS: %s is a profile nickname.
 | 
				
			||||||
          sprintf(_('These are people tags subscribed to by **%s**. ' .
 | 
					          sprintf(_('These are lists subscribed to by **%s**. ' .
 | 
				
			||||||
                    'People tags are how you sort similar ' .
 | 
					                    'Lists are how you sort similar ' .
 | 
				
			||||||
                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
					                    'people on %%%%site.name%%%%, a [micro-blogging]' .
 | 
				
			||||||
                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
					                    '(http://en.wikipedia.org/wiki/Micro-blogging) service ' .
 | 
				
			||||||
                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
					                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
 | 
				
			||||||
                    'You can easily keep track of what they ' .
 | 
					                    'You can easily keep track of what they ' .
 | 
				
			||||||
                    'are doing by subscribing to the tag\'s timeline.' ), $this->profile->nickname);
 | 
					                    'are doing by subscribing to the list\'s timeline.' ), $this->profile->nickname);
 | 
				
			||||||
        $this->elementStart('div', array('id' => 'anon_notice'));
 | 
					        $this->elementStart('div', array('id' => 'anon_notice'));
 | 
				
			||||||
        $this->raw(common_markup_to_html($notice));
 | 
					        $this->raw(common_markup_to_html($notice));
 | 
				
			||||||
        $this->elementEnd('div');
 | 
					        $this->elementEnd('div');
 | 
				
			||||||
@@ -133,6 +133,18 @@ class PeopletagsubscriptionsAction extends OwnerDesignAction
 | 
				
			|||||||
                          $this->page, 'peopletagsubscriptions', array('nickname' => $this->profile->id));
 | 
					                          $this->page, 'peopletagsubscriptions', array('nickname' => $this->profile->id));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showObjectNav()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $nav = new PeopletagNav($this, $this->profile);
 | 
				
			||||||
 | 
					        $nav->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showProfileBlock()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $block = new AccountProfileBlock($this, $this->profile);
 | 
				
			||||||
 | 
					        $block->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showSections()
 | 
					    function showSections()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        #TODO: tags with most subscribers
 | 
					        #TODO: tags with most subscribers
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ require_once INSTALLDIR.'/lib/feedlist.php';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class ShowprofiletagAction extends Action
 | 
					class ShowprofiletagAction extends Action
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    var $notice, $tagger, $peopletag;
 | 
					    var $notice, $tagger, $peopletag, $userProfile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function isReadOnly($args)
 | 
					    function isReadOnly($args)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -88,7 +88,12 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 | 
					        $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 | 
				
			||||||
        $this->notice = $this->peopletag->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
 | 
					        $this->userProfile = Profile::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $stream = new PeopletagNoticeStream($this->peopletag, $this->userProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE,
 | 
				
			||||||
 | 
					                                            NOTICES_PER_PAGE + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->page > 1 && $this->notice->N == 0) {
 | 
					        if ($this->page > 1 && $this->notice->N == 0) {
 | 
				
			||||||
            // TRANS: Server error when page not found (404).
 | 
					            // TRANS: Server error when page not found (404).
 | 
				
			||||||
@@ -117,7 +122,7 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
            if($this->peopletag->private) {
 | 
					            if($this->peopletag->private) {
 | 
				
			||||||
                // TRANS: Title for private people tag timeline.
 | 
					                // TRANS: Title for private people tag timeline.
 | 
				
			||||||
                // TRANS: %1$s is a people tag, %2$s is a page number.
 | 
					                // TRANS: %1$s is a people tag, %2$s is a page number.
 | 
				
			||||||
                return sprintf(_('Private timeline for people tagged %1$s by you, page %2$d'),
 | 
					                return sprintf(_('Private timeline for %1$s list by you, page %2$d'),
 | 
				
			||||||
                                $this->peopletag->tag, $this->page);
 | 
					                                $this->peopletag->tag, $this->page);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -125,13 +130,13 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
            if (!empty($current) && $current->id == $this->peopletag->tagger) {
 | 
					            if (!empty($current) && $current->id == $this->peopletag->tagger) {
 | 
				
			||||||
                // TRANS: Title for public people tag timeline where the viewer is the tagger.
 | 
					                // TRANS: Title for public people tag timeline where the viewer is the tagger.
 | 
				
			||||||
                // TRANS: %1$s is a people tag, %2$s is a page number.
 | 
					                // TRANS: %1$s is a people tag, %2$s is a page number.
 | 
				
			||||||
                return sprintf(_('Timeline for people tagged %1$s by you, page %2$d'),
 | 
					                return sprintf(_('Timeline for %1$s list by you, page %2$d'),
 | 
				
			||||||
                                $this->peopletag->tag, $this->page);
 | 
					                                $this->peopletag->tag, $this->page);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // TRANS: Title for private people tag timeline.
 | 
					            // TRANS: Title for private people tag timeline.
 | 
				
			||||||
            // TRANS: %1$s is a people tag, %2$s is the tagger's nickname, %3$d is a page number.
 | 
					            // TRANS: %1$s is a people tag, %2$s is the tagger's nickname, %3$d is a page number.
 | 
				
			||||||
            return sprintf(_('Timeline for people tagged %1$s by %2$s, page %3$d'),
 | 
					            return sprintf(_('Timeline for %1$s list by %2$s, page %3$d'),
 | 
				
			||||||
                                $this->peopletag->tag,
 | 
					                                $this->peopletag->tag,
 | 
				
			||||||
                                $this->tagger->nickname,
 | 
					                                $this->tagger->nickname,
 | 
				
			||||||
                                $this->page
 | 
					                                $this->page
 | 
				
			||||||
@@ -140,7 +145,7 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
            if($this->peopletag->private) {
 | 
					            if($this->peopletag->private) {
 | 
				
			||||||
                // TRANS: Title for private people tag timeline.
 | 
					                // TRANS: Title for private people tag timeline.
 | 
				
			||||||
                // TRANS: %s is a people tag.
 | 
					                // TRANS: %s is a people tag.
 | 
				
			||||||
                return sprintf(_('Private timeline of people tagged %s by you'),
 | 
					                return sprintf(_('Private timeline of %s list by you'),
 | 
				
			||||||
                                $this->peopletag->tag);
 | 
					                                $this->peopletag->tag);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -148,13 +153,13 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
            if (!empty($current) && $current->id == $this->peopletag->tagger) {
 | 
					            if (!empty($current) && $current->id == $this->peopletag->tagger) {
 | 
				
			||||||
                // TRANS: Title for public people tag timeline where the viewer is the tagger.
 | 
					                // TRANS: Title for public people tag timeline where the viewer is the tagger.
 | 
				
			||||||
                // TRANS: %s is a people tag.
 | 
					                // TRANS: %s is a people tag.
 | 
				
			||||||
                return sprintf(_('Timeline for people tagged %s by you'),
 | 
					                return sprintf(_('Timeline for %s list by you'),
 | 
				
			||||||
                                $this->peopletag->tag);
 | 
					                                $this->peopletag->tag);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // TRANS: Title for private people tag timeline.
 | 
					            // TRANS: Title for private people tag timeline.
 | 
				
			||||||
            // TRANS: %1$s is a people tag, %2$s is the tagger's nickname.
 | 
					            // TRANS: %1$s is a people tag, %2$s is the tagger's nickname.
 | 
				
			||||||
            return sprintf(_('Timeline for people tagged %1$s by %2$s'),
 | 
					            return sprintf(_('Timeline for %1$s list by %2$s'),
 | 
				
			||||||
                                $this->peopletag->tag,
 | 
					                                $this->peopletag->tag,
 | 
				
			||||||
                                $this->tagger->nickname
 | 
					                                $this->tagger->nickname
 | 
				
			||||||
                          );
 | 
					                          );
 | 
				
			||||||
@@ -185,7 +190,7 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
                ),
 | 
					                ),
 | 
				
			||||||
                // TRANS: Feed title.
 | 
					                // TRANS: Feed title.
 | 
				
			||||||
                // TRANS: %1$s is a people tag, %2$s is tagger's nickname.
 | 
					                // TRANS: %1$s is a people tag, %2$s is tagger's nickname.
 | 
				
			||||||
                sprintf(_('Feed for people tagged %1$s by %2$s (Atom)'),
 | 
					                sprintf(_('Feed for %1$s list by %2$s (Atom)'),
 | 
				
			||||||
                            $this->peopletag->tag, $this->tagger->nickname
 | 
					                            $this->peopletag->tag, $this->tagger->nickname
 | 
				
			||||||
                       )
 | 
					                       )
 | 
				
			||||||
              )
 | 
					              )
 | 
				
			||||||
@@ -202,7 +207,7 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Empty list message for people tag timeline.
 | 
					        // TRANS: Empty list message for people tag timeline.
 | 
				
			||||||
        // TRANS: %1$s is a people tag, %2$s is a tagger's nickname.
 | 
					        // TRANS: %1$s is a people tag, %2$s is a tagger's nickname.
 | 
				
			||||||
        $message = sprintf(_('This is the timeline for people tagged %1$s by %2$s but no one has posted anything yet.'),
 | 
					        $message = sprintf(_('This is the timeline for %1$s list by %2$s but no one has posted anything yet.'),
 | 
				
			||||||
                           $this->peopletag->tag,
 | 
					                           $this->peopletag->tag,
 | 
				
			||||||
                           $this->tagger->nickname) . ' ';
 | 
					                           $this->tagger->nickname) . ' ';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -239,7 +244,7 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
    function showNotices()
 | 
					    function showNotices()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Event::handle('StartShowProfileTagContent', array($this))) {
 | 
					        if (Event::handle('StartShowProfileTagContent', array($this))) {
 | 
				
			||||||
            $nl = new NoticeList($this->notice, $this);
 | 
					            $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $cnt = $nl->show();
 | 
					            $cnt = $nl->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -247,9 +252,11 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
                $this->showEmptyListMessage();
 | 
					                $this->showEmptyListMessage();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $this->pagination(
 | 
					            $this->pagination($this->page > 1,
 | 
				
			||||||
                $this->page > 1, $cnt > NOTICES_PER_PAGE,
 | 
					                              $cnt > NOTICES_PER_PAGE,
 | 
				
			||||||
                $this->page, 'showprofiletag', array('tag' => $this->peopletag->tag,
 | 
					                              $this->page,
 | 
				
			||||||
 | 
					                              'showprofiletag',
 | 
				
			||||||
 | 
					                              array('tag' => $this->peopletag->tag,
 | 
				
			||||||
                                    'tagger' => $this->tagger->nickname)
 | 
					                                    'tagger' => $this->tagger->nickname)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -284,11 +291,11 @@ class ShowprofiletagAction extends Action
 | 
				
			|||||||
            if(!empty($current) && $this->peopletag->tagger == $current->id) {
 | 
					            if(!empty($current) && $this->peopletag->tagger == $current->id) {
 | 
				
			||||||
                // TRANS: Header on show profile tag page.
 | 
					                // TRANS: Header on show profile tag page.
 | 
				
			||||||
                // TRANS: %s is a people tag.
 | 
					                // TRANS: %s is a people tag.
 | 
				
			||||||
                $title =  sprintf(_('People tagged %s by you'), $this->peopletag->tag);
 | 
					                $title =  sprintf(_('Listed'), $this->peopletag->tag);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                // TRANS: Header on show profile tag page.
 | 
					                // TRANS: Header on show profile tag page.
 | 
				
			||||||
                // TRANS: %1$s is a people tag, %2$s is a tagger's nickname.
 | 
					                // TRANS: %1$s is a people tag, %2$s is a tagger's nickname.
 | 
				
			||||||
                $title = sprintf(_('People tagged %1$s by %2$s'),
 | 
					                $title = sprintf(_('Listed'),
 | 
				
			||||||
                                $this->peopletag->tag,
 | 
					                                $this->peopletag->tag,
 | 
				
			||||||
                                $this->tagger->nickname);
 | 
					                                $this->tagger->nickname);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -545,12 +545,6 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $notice->saveKnownGroups($groups);
 | 
					        $notice->saveKnownGroups($groups);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isset($peopletags)) {
 | 
					 | 
				
			||||||
            $notice->saveProfileTags($peopletags);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            $notice->saveProfileTags();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (isset($urls)) {
 | 
					        if (isset($urls)) {
 | 
				
			||||||
            $notice->saveKnownUrls($urls);
 | 
					            $notice->saveKnownUrls($urls);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@@ -596,6 +590,11 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
        if (!empty($profile)) {
 | 
					        if (!empty($profile)) {
 | 
				
			||||||
            $profile->blowNoticeCount();
 | 
					            $profile->blowNoticeCount();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $ptags = $this->getProfileTags();
 | 
				
			||||||
 | 
					        foreach ($ptags as $ptag) {
 | 
				
			||||||
 | 
					            $ptag->blowNoticeStreamCache();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -618,6 +617,11 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
            // In case we're the first, will need to calc a new root.
 | 
					            // In case we're the first, will need to calc a new root.
 | 
				
			||||||
            self::blow('notice:conversation_root:%d', $this->conversation);
 | 
					            self::blow('notice:conversation_root:%d', $this->conversation);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $ptags = $this->getProfileTags();
 | 
				
			||||||
 | 
					        foreach ($ptags as $ptag) {
 | 
				
			||||||
 | 
					            $ptag->blowNoticeStreamCache(true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** save all urls in the notice to the db
 | 
					    /** save all urls in the notice to the db
 | 
				
			||||||
@@ -1030,33 +1034,13 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function getProfileTags()
 | 
					    function getProfileTags()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // Don't save ptags for repeats, for now.
 | 
					        $profile = $this->getProfile();
 | 
				
			||||||
 | 
					        $list    = $profile->getOtherTags($profile);
 | 
				
			||||||
        if (!empty($this->repeat_of)) {
 | 
					 | 
				
			||||||
            return array();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // XXX: cache me
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ptags   = array();
 | 
					        $ptags   = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $ptagi = new Profile_tag_inbox();
 | 
					        while($list->fetch()) {
 | 
				
			||||||
 | 
					            $ptags[] = clone($list);
 | 
				
			||||||
        $ptagi->selectAdd();
 | 
					 | 
				
			||||||
        $ptagi->selectAdd('profile_tag_id');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ptagi->notice_id = $this->id;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($ptagi->find()) {
 | 
					 | 
				
			||||||
            while ($ptagi->fetch()) {
 | 
					 | 
				
			||||||
                $profile_list = Profile_list::staticGet('id', $ptagi->profile_tag_id);
 | 
					 | 
				
			||||||
                if ($profile_list) {
 | 
					 | 
				
			||||||
                    $ptags[] = $profile_list;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ptagi->free();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $ptags;
 | 
					        return $ptags;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1173,72 +1157,6 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * record targets into profile_tag_inbox.
 | 
					 | 
				
			||||||
     * @return array of Profile_list objects
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    function saveProfileTags($known=array())
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // Don't save ptags for repeats, for now
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!empty($this->repeat_of)) {
 | 
					 | 
				
			||||||
            return array();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (is_array($known)) {
 | 
					 | 
				
			||||||
            $ptags = $known;
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            $ptags = array();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ptag = new Profile_tag();
 | 
					 | 
				
			||||||
        $ptag->tagged = $this->profile_id;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if($ptag->find()) {
 | 
					 | 
				
			||||||
            while($ptag->fetch()) {
 | 
					 | 
				
			||||||
                $plist = Profile_list::getByTaggerAndTag($ptag->tagger, $ptag->tag);
 | 
					 | 
				
			||||||
                if (!empty($plist)) {
 | 
					 | 
				
			||||||
                    $ptags[] = clone($plist);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        foreach ($ptags as $target) {
 | 
					 | 
				
			||||||
            $this->addToProfileTagInbox($target);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $ptags;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function addToProfileTagInbox($plist)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $ptagi = Profile_tag_inbox::pkeyGet(array('profile_tag_id' => $plist->id,
 | 
					 | 
				
			||||||
                                         'notice_id' => $this->id));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (empty($ptagi)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            $ptagi = new Profile_tag_inbox();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            $ptagi->query('BEGIN');
 | 
					 | 
				
			||||||
            $ptagi->profile_tag_id  = $plist->id;
 | 
					 | 
				
			||||||
            $ptagi->notice_id = $this->id;
 | 
					 | 
				
			||||||
            $ptagi->created   = $this->created;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            $result = $ptagi->insert();
 | 
					 | 
				
			||||||
            if (!$result) {
 | 
					 | 
				
			||||||
                common_log_db_error($ptagi, 'INSERT', __FILE__);
 | 
					 | 
				
			||||||
                // TRANS: Server exception thrown when saving profile_tag inbox fails.
 | 
					 | 
				
			||||||
                throw new ServerException(_('Problem saving profile_tag inbox.'));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            $ptagi->query('COMMIT');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            self::blow('profile_tag:notice_ids:%d', $ptagi->profile_tag_id);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Save reply records indicating that this notice needs to be
 | 
					     * Save reply records indicating that this notice needs to be
 | 
				
			||||||
     * delivered to the local users with the given URIs.
 | 
					     * delivered to the local users with the given URIs.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -170,51 +170,6 @@ class Profile_list extends Memcached_DataObject
 | 
				
			|||||||
        return $stream->getNotices($offset, $limit, $since_id, $max_id);
 | 
					        return $stream->getNotices($offset, $limit, $since_id, $max_id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Query notices by users associated with this tag from the database.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param integer $offset   offset
 | 
					 | 
				
			||||||
     * @param integer $limit    maximum no of results
 | 
					 | 
				
			||||||
     * @param integer $since_id=null    since this id
 | 
					 | 
				
			||||||
     * @param integer $max_id=null  maximum id in result
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return array array of notice ids.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function _streamDirect($offset, $limit, $since_id, $max_id)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $inbox = new Profile_tag_inbox();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $inbox->profile_tag_id = $this->id;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $inbox->selectAdd();
 | 
					 | 
				
			||||||
        $inbox->selectAdd('notice_id');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($since_id != 0) {
 | 
					 | 
				
			||||||
            $inbox->whereAdd('notice_id > ' . $since_id);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($max_id != 0) {
 | 
					 | 
				
			||||||
            $inbox->whereAdd('notice_id <= ' . $max_id);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $inbox->orderBy('notice_id DESC');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!is_null($offset)) {
 | 
					 | 
				
			||||||
            $inbox->limit($offset, $limit);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ids = array();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($inbox->find()) {
 | 
					 | 
				
			||||||
            while ($inbox->fetch()) {
 | 
					 | 
				
			||||||
                $ids[] = $inbox->notice_id;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $ids;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get subscribers (local and remote) to this people tag
 | 
					     * Get subscribers (local and remote) to this people tag
 | 
				
			||||||
     * Order by reverse chronology
 | 
					     * Order by reverse chronology
 | 
				
			||||||
@@ -515,6 +470,23 @@ class Profile_list extends Memcached_DataObject
 | 
				
			|||||||
        return $count;
 | 
					        return $count;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * get the cached number of profiles subscribed to this
 | 
				
			||||||
 | 
					     * people tag, re-count if the argument is true.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param boolean $recount  whether to ignore cache
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return integer count
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function blowNoticeStreamCache($all=false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        self::blow('profile_list:notice_ids:%d', $this->id);
 | 
				
			||||||
 | 
					        if ($all) {
 | 
				
			||||||
 | 
					            self::blow('profile_list:notice_ids:%d;last', $this->id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * get the Profile_list object by the
 | 
					     * get the Profile_list object by the
 | 
				
			||||||
     * given tagger and with given tag
 | 
					     * given tagger and with given tag
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
<?php
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Table Definition for profile_tag_inbox
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Profile_tag_inbox extends Memcached_DataObject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    ###START_AUTOCODE
 | 
					 | 
				
			||||||
    /* the code below is auto generated do not remove the above tag */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public $__table = 'profile_tag_inbox';                     // table name
 | 
					 | 
				
			||||||
    public $profile_tag_id;                        // int(4)  primary_key not_null
 | 
					 | 
				
			||||||
    public $notice_id;                       // int(4)  primary_key not_null
 | 
					 | 
				
			||||||
    public $created;                         // datetime()   not_null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* Static get */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_tag_inbox',$k,$v); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* the code above is auto generated do not remove the tag below */
 | 
					 | 
				
			||||||
    ###END_AUTOCODE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function pkeyGet($kv)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return Memcached_DataObject::pkeyGet('Profile_tag_inbox', $kv);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -480,15 +480,6 @@ id = U
 | 
				
			|||||||
tagger = K
 | 
					tagger = K
 | 
				
			||||||
tag = K
 | 
					tag = K
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[profile_tag_inbox]
 | 
					 | 
				
			||||||
profile_tag_id = 129
 | 
					 | 
				
			||||||
notice_id = 129
 | 
					 | 
				
			||||||
created = 142
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[profile_tag_inbox__keys]
 | 
					 | 
				
			||||||
profile_tag_id = K
 | 
					 | 
				
			||||||
notice_id = K
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[profile_tag_subscription]
 | 
					[profile_tag_subscription]
 | 
				
			||||||
profile_tag_id = 129
 | 
					profile_tag_id = 129
 | 
				
			||||||
profile_id = 129
 | 
					profile_id = 129
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ id = profile:id
 | 
				
			|||||||
[notice]
 | 
					[notice]
 | 
				
			||||||
profile_id = profile:id
 | 
					profile_id = profile:id
 | 
				
			||||||
reply_to = notice:id
 | 
					reply_to = notice:id
 | 
				
			||||||
 | 
					profile_id = profile_tag:tagged
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[reply]
 | 
					[reply]
 | 
				
			||||||
notice_id = notice:id
 | 
					notice_id = notice:id
 | 
				
			||||||
@@ -67,10 +68,6 @@ tagged = profile:id
 | 
				
			|||||||
[profile_list]
 | 
					[profile_list]
 | 
				
			||||||
tagger = profile:id
 | 
					tagger = profile:id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[profile_tag_inbox]
 | 
					 | 
				
			||||||
profile_tag_id = profile_list:id
 | 
					 | 
				
			||||||
notice_id = notice:id
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[profile_tag_subscription]
 | 
					[profile_tag_subscription]
 | 
				
			||||||
profile_tag_id = profile_list:id
 | 
					profile_tag_id = profile_list:id
 | 
				
			||||||
profile_id = profile:id
 | 
					profile_id = profile:id
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1354,13 +1354,16 @@ class Action extends HTMLOutputter // lawsuit
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return nothing
 | 
					     * @return nothing
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function menuItem($url, $text, $title=null, $is_selected=false, $id=null)
 | 
					    function menuItem($url, $text, $title=null, $is_selected=false, $id=null, $class=null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // Added @id to li for some control.
 | 
					        // Added @id to li for some control.
 | 
				
			||||||
        // XXX: We might want to move this to htmloutputter.php
 | 
					        // XXX: We might want to move this to htmloutputter.php
 | 
				
			||||||
        $lattrs = array();
 | 
					        $lattrs = array();
 | 
				
			||||||
 | 
					        if ($class !== null) {
 | 
				
			||||||
 | 
					            $lattrs['class'] = $class;
 | 
				
			||||||
            if ($is_selected) {
 | 
					            if ($is_selected) {
 | 
				
			||||||
            $lattrs['class'] = 'current';
 | 
					                $lattrs['class'] = trim('current ' . $lattrs['class']);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (is_null($id)) ? $lattrs : $lattrs['id'] = $id;
 | 
					        (is_null($id)) ? $lattrs : $lattrs['id'] = $id;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,14 @@ class DefaultLocalNav extends Menu
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!empty($user)) {
 | 
				
			||||||
 | 
					                $sn = new ListsNav($this->action, $user->getProfile());
 | 
				
			||||||
 | 
					                if ($sn->hasLists()) {
 | 
				
			||||||
 | 
					                    // TRANS: Menu item in default local navigation panel.
 | 
				
			||||||
 | 
					                    $this->submenu(_m('MENU', 'Lists'), $sn);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Event::handle('EndDefaultLocalNav', array($this, $user));
 | 
					            Event::handle('EndDefaultLocalNav', array($this, $user));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										90
									
								
								lib/listsnav.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								lib/listsnav.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * StatusNet, the distributed open-source microblogging tool
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Lists a user has created
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * PHP version 5
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LICENCE: This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU Affero General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 * GNU Affero General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU Affero General Public License
 | 
				
			||||||
 | 
					 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category  Widget
 | 
				
			||||||
 | 
					 * @package   StatusNet
 | 
				
			||||||
 | 
					 * @author    Shashi Gowda <connect2shashi@gmail.com>
 | 
				
			||||||
 | 
					 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link      http://status.net/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) {
 | 
				
			||||||
 | 
					    exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Peopletags a user has subscribed to
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category Widget
 | 
				
			||||||
 | 
					 * @package  StatusNet
 | 
				
			||||||
 | 
					 * @author   Shashi Gowda <connect2shashi@gmail.com>
 | 
				
			||||||
 | 
					 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class ListsNav extends Menu
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    var $profile=null;
 | 
				
			||||||
 | 
					    var $lists=null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function __construct($out, Profile $profile)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        parent::__construct($out);
 | 
				
			||||||
 | 
					        $this->profile = $profile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $user = common_current_user();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->lists = $profile->getOwnedTags($user);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function show()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $action = $this->actionName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->out->elementStart('ul', array('class' => 'nav'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Event::handle('StartListsNav', array($this))) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            while ($this->lists->fetch()) {
 | 
				
			||||||
 | 
					                $mode = $this->lists->private ? 'private' : 'public';
 | 
				
			||||||
 | 
					                $this->out->menuItem(($this->lists->mainpage) ?
 | 
				
			||||||
 | 
					                                     $this->lists->mainpage :
 | 
				
			||||||
 | 
					                                     common_local_url('showprofiletag',
 | 
				
			||||||
 | 
					                                                      array('tagger' => $this->profile->nickname,
 | 
				
			||||||
 | 
					                                                            'tag'    => $this->lists->tag)),
 | 
				
			||||||
 | 
					                                     $this->lists->tag,
 | 
				
			||||||
 | 
					                                     '',
 | 
				
			||||||
 | 
					                                     $action == 'showprofiletag' &&
 | 
				
			||||||
 | 
					                                     $this->action->arg('tagger') == $this->profile->nickname &&
 | 
				
			||||||
 | 
					                                     $this->action->arg('tag')    == $this->lists->tag,
 | 
				
			||||||
 | 
					                                     'nav_timeline_list_'.$this->lists->id,
 | 
				
			||||||
 | 
					                                     'mode-' . $mode);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Event::handle('EndListsNav', array($this));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->out->elementEnd('ul');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function hasLists()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return (!empty($this->lists) && $this->lists->N > 0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -107,7 +107,7 @@ class PeopletagEditForm extends Form
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Form legend for people tag edit form.
 | 
					        // TRANS: Form legend for people tag edit form.
 | 
				
			||||||
        // TRANS: %s is a people tag.
 | 
					        // TRANS: %s is a people tag.
 | 
				
			||||||
        $this->out->element('legend', null, sprintf(_('Edit people tag %s'), $this->peopletag->tag));
 | 
					        $this->out->element('legend', null, sprintf(_('Edit list %s'), $this->peopletag->tag));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -138,12 +138,12 @@ class PeopletagEditForm extends Form
 | 
				
			|||||||
        $desclimit = Profile_list::maxDescription();
 | 
					        $desclimit = Profile_list::maxDescription();
 | 
				
			||||||
        if ($desclimit == 0) {
 | 
					        if ($desclimit == 0) {
 | 
				
			||||||
            // TRANS: Field title for description of people tag.
 | 
					            // TRANS: Field title for description of people tag.
 | 
				
			||||||
            $descinstr = _('Describe the people tag or topic.');
 | 
					            $descinstr = _('Describe the list or topic.');
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // TRANS: Field title for description of people tag.
 | 
					            // TRANS: Field title for description of people tag.
 | 
				
			||||||
            // TRANS: %d is the maximum number of characters for the description.
 | 
					            // TRANS: %d is the maximum number of characters for the description.
 | 
				
			||||||
            $descinstr = sprintf(_m('Describe the people tag or topic in %d character.',
 | 
					            $descinstr = sprintf(_m('Describe the list or topic in %d character.',
 | 
				
			||||||
                                    'Describe the people tag or topic in %d characters.',
 | 
					                                    'Describe the list or topic in %d characters.',
 | 
				
			||||||
                                    $desclimit),
 | 
					                                    $desclimit),
 | 
				
			||||||
                                 $desclimit);
 | 
					                                 $desclimit);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -172,7 +172,7 @@ class PeopletagEditForm extends Form
 | 
				
			|||||||
                      'submit',
 | 
					                      'submit',
 | 
				
			||||||
                      'delete',
 | 
					                      'delete',
 | 
				
			||||||
                      // TRANS: Button title to delete a people tag.
 | 
					                      // TRANS: Button title to delete a people tag.
 | 
				
			||||||
                      _('Delete this people tag.'));
 | 
					                      _('Delete this list.'));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showProfileList()
 | 
					    function showProfileList()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,10 +104,10 @@ class PeopletagGroupNav extends Widget
 | 
				
			|||||||
            $this->out->menuItem(common_local_url('showprofiletag', array('tagger' => $user_profile->nickname,
 | 
					            $this->out->menuItem(common_local_url('showprofiletag', array('tagger' => $user_profile->nickname,
 | 
				
			||||||
                                                                          'tag'    => $tag->tag)),
 | 
					                                                                          'tag'    => $tag->tag)),
 | 
				
			||||||
                             // TRANS: Menu item in people tag navigation panel.
 | 
					                             // TRANS: Menu item in people tag navigation panel.
 | 
				
			||||||
                             _m('MENU','People tag'),
 | 
					                             _m('MENU','List'),
 | 
				
			||||||
                             // TRANS: Menu item title in people tag navigation panel.
 | 
					                             // TRANS: Menu item title in people tag navigation panel.
 | 
				
			||||||
                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
					                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
				
			||||||
                             sprintf(_('%1$s tag by %2$s.'), $tag->tag,
 | 
					                             sprintf(_('%1$s list by %2$s.'), $tag->tag,
 | 
				
			||||||
                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
					                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
				
			||||||
                             $action == 'showprofiletag', 'nav_timeline_peopletag');
 | 
					                             $action == 'showprofiletag', 'nav_timeline_peopletag');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -115,10 +115,10 @@ class PeopletagGroupNav extends Widget
 | 
				
			|||||||
            $this->out->menuItem(common_local_url('peopletagged', array('tagger' => $user->nickname,
 | 
					            $this->out->menuItem(common_local_url('peopletagged', array('tagger' => $user->nickname,
 | 
				
			||||||
                                                                        'tag'    => $tag->tag)),
 | 
					                                                                        'tag'    => $tag->tag)),
 | 
				
			||||||
                             // TRANS: Menu item in people tag navigation panel.
 | 
					                             // TRANS: Menu item in people tag navigation panel.
 | 
				
			||||||
                             _m('MENU','Tagged'),
 | 
					                             _m('MENU','Listed'),
 | 
				
			||||||
                             // TRANS: Menu item title in people tag navigation panel.
 | 
					                             // TRANS: Menu item title in people tag navigation panel.
 | 
				
			||||||
                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
					                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
				
			||||||
                             sprintf(_('%1$s tag by %2$s.'), $tag->tag,
 | 
					                             sprintf(_('%1$s list by %2$s.'), $tag->tag,
 | 
				
			||||||
                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
					                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
				
			||||||
                             $action == 'peopletagged', 'nav_peopletag_tagged');
 | 
					                             $action == 'peopletagged', 'nav_peopletag_tagged');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,7 +129,7 @@ class PeopletagGroupNav extends Widget
 | 
				
			|||||||
                             _m('MENU','Subscribers'),
 | 
					                             _m('MENU','Subscribers'),
 | 
				
			||||||
                             // TRANS: Menu item title in people tag navigation panel.
 | 
					                             // TRANS: Menu item title in people tag navigation panel.
 | 
				
			||||||
                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
					                             // TRANS: %1$s is a tag, %2$s is a nickname.
 | 
				
			||||||
                             sprintf(_('Subscribers to %1$s tag by %2$s.'), $tag->tag,
 | 
					                             sprintf(_('Subscribers to %1$s list by %2$s.'), $tag->tag,
 | 
				
			||||||
                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
					                                (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
				
			||||||
                             $action == 'peopletagsubscribers', 'nav_peopletag_subscribers');
 | 
					                             $action == 'peopletagsubscribers', 'nav_peopletag_subscribers');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -142,7 +142,7 @@ class PeopletagGroupNav extends Widget
 | 
				
			|||||||
                                 _m('MENU','Edit'),
 | 
					                                 _m('MENU','Edit'),
 | 
				
			||||||
                                 // TRANS: Menu item title in people tag navigation panel.
 | 
					                                 // TRANS: Menu item title in people tag navigation panel.
 | 
				
			||||||
                                 // TRANS: %s is a tag.
 | 
					                                 // TRANS: %s is a tag.
 | 
				
			||||||
                                 sprintf(_('Edit %s tag by you.'), $tag->tag,
 | 
					                                 sprintf(_('Edit %s list by you.'), $tag->tag,
 | 
				
			||||||
                                    (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
					                                    (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
 | 
				
			||||||
                                 $action == 'editpeopletag', 'nav_peopletag_edit');
 | 
					                                 $action == 'editpeopletag', 'nav_peopletag_edit');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -193,7 +193,7 @@ class PeopletagListItem extends Widget
 | 
				
			|||||||
                    common_local_url('editpeopletag', array('tagger' => $this->profile->nickname,
 | 
					                    common_local_url('editpeopletag', array('tagger' => $this->profile->nickname,
 | 
				
			||||||
                                                    'tag' => $this->peopletag->tag)),
 | 
					                                                    'tag' => $this->peopletag->tag)),
 | 
				
			||||||
                                  // TRANS: Title for link to edit people tag settings.
 | 
					                                  // TRANS: Title for link to edit people tag settings.
 | 
				
			||||||
                                  'title' => _('Edit people tag settings.')),
 | 
					                                  'title' => _('Edit list settings.')),
 | 
				
			||||||
                       // TRANS: Text for link to edit people tag settings.
 | 
					                       // TRANS: Text for link to edit people tag settings.
 | 
				
			||||||
                       _('Edit'));
 | 
					                       _('Edit'));
 | 
				
			||||||
        $this->out->elementEnd('li');
 | 
					        $this->out->elementEnd('li');
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										106
									
								
								lib/peopletagnav.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								lib/peopletagnav.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * StatusNet, the distributed open-source microblogging tool
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Tabset for a particular list
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * PHP version 5
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LICENCE: This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU Affero General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 * GNU Affero General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU Affero General Public License
 | 
				
			||||||
 | 
					 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category  Action
 | 
				
			||||||
 | 
					 * @package   StatusNet
 | 
				
			||||||
 | 
					 * @author    Shashi Gowda <connect2shashi@gmail.com>
 | 
				
			||||||
 | 
					 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link      http://status.net/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) {
 | 
				
			||||||
 | 
					    exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once INSTALLDIR.'/lib/widget.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Tabset for a group
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Shows a group of tabs for a particular user group
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category Output
 | 
				
			||||||
 | 
					 * @package  StatusNet
 | 
				
			||||||
 | 
					 * @author   Shashi Gowda <connect2shashi@gmail.com>
 | 
				
			||||||
 | 
					 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @see      HTMLOutputter
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class PeopletagNav extends Menu
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    var $group = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Construction
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param Action $action current action, used for output
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    function __construct($action=null, $profile=null)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        parent::__construct($action);
 | 
				
			||||||
 | 
					        $this->profile = $profile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Show the menu
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    function show()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $action_name = $this->action->trimmed('action');
 | 
				
			||||||
 | 
					        $nickname = $this->profile->nickname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->out->elementStart('ul', array('class' => 'nav'));
 | 
				
			||||||
 | 
					        if (Event::handle('StartPeopletagGroupNav', array($this))) {
 | 
				
			||||||
 | 
					            $this->out->menuItem(common_local_url('peopletagsubscriptions', array('nickname' =>
 | 
				
			||||||
 | 
					                                                                     $nickname)),
 | 
				
			||||||
 | 
					                                 // TRANS: Menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 _m('MENU','List Subscriptions'),
 | 
				
			||||||
 | 
					                                 // TRANS: Tooltip for menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 // TRANS: %s is the nickname of the group.
 | 
				
			||||||
 | 
					                                 sprintf(_m('TOOLTIP','Lists subscribed to by %s'), $nickname),
 | 
				
			||||||
 | 
					                                 $action_name == 'peopletagsubscriptions',
 | 
				
			||||||
 | 
					                                 'nav_list_group');
 | 
				
			||||||
 | 
					            $this->out->menuItem(common_local_url('peopletagsforuser', array('nickname' =>
 | 
				
			||||||
 | 
					                                                                        $nickname)),
 | 
				
			||||||
 | 
					                                 // TRANS: Menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 sprintf(_m('MENU','Lists with %s'), $nickname),
 | 
				
			||||||
 | 
					                                 // TRANS: Tooltip for menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 // TRANS: %s is the nickname of the group.
 | 
				
			||||||
 | 
					                                 sprintf(_m('TOOLTIP','Lists with %s'), $nickname),
 | 
				
			||||||
 | 
					                                 $action_name == 'peopletagsforuser',
 | 
				
			||||||
 | 
					                                 'nav_lists_with');
 | 
				
			||||||
 | 
					            $this->out->menuItem(common_local_url('peopletagsbyuser', array('nickname' =>
 | 
				
			||||||
 | 
					                                                                        $nickname)),
 | 
				
			||||||
 | 
					                                 // TRANS: Menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 sprintf(_m('MENU','Lists by %s'), $nickname),
 | 
				
			||||||
 | 
					                                 // TRANS: Tooltip for menu item in the group navigation page.
 | 
				
			||||||
 | 
					                                 // TRANS: %s is the nickname of the group.
 | 
				
			||||||
 | 
					                                 sprintf(_m('TOOLTIP','Lists by %s'), $nickname),
 | 
				
			||||||
 | 
					                                 $action_name == 'peopletagsbyuser',
 | 
				
			||||||
 | 
					                                 'nav_lists_by');
 | 
				
			||||||
 | 
					            Event::handle('EndGroupGroupNav', array($this));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this->out->elementEnd('ul');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -71,36 +71,54 @@ class PeopletagNoticeStream extends ScopingNoticeStream
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class RawPeopletagNoticeStream extends NoticeStream
 | 
					class RawPeopletagNoticeStream extends NoticeStream
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    protected $profile_tag;
 | 
					    protected $profile_list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function __construct($profile_tag)
 | 
					    function __construct($profile_list)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->profile_tag = $profile_tag;
 | 
					        $this->profile_list = $profile_list;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Query notices by users associated with this tag from the database.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param integer $offset   offset
 | 
				
			||||||
 | 
					     * @param integer $limit    maximum no of results
 | 
				
			||||||
 | 
					     * @param integer $since_id=null    since this id
 | 
				
			||||||
 | 
					     * @param integer $max_id=null  maximum id in result
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return array array of notice ids.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function getNoticeIds($offset, $limit, $since_id, $max_id)
 | 
					    function getNoticeIds($offset, $limit, $since_id, $max_id)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $inbox = new Profile_tag_inbox();
 | 
					        $notice = new Notice();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $inbox->profile_tag_id = $this->profile_tag->id;
 | 
					        $notice->selectAdd();
 | 
				
			||||||
 | 
					        $notice->selectAdd('notice.id');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $inbox->selectAdd();
 | 
					        $ptag = new Profile_tag();
 | 
				
			||||||
        $inbox->selectAdd('notice_id');
 | 
					        $ptag->tag    = $this->profile_list->tag;
 | 
				
			||||||
 | 
					        $ptag->tagger = $this->profile_list->tagger;
 | 
				
			||||||
 | 
					        $notice->joinAdd($ptag);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Notice::addWhereSinceId($inbox, $since_id, 'notice_id');
 | 
					        if ($since_id != 0) {
 | 
				
			||||||
        Notice::addWhereMaxId($inbox, $max_id, 'notice_id');
 | 
					            $notice->whereAdd('notice.id > ' . $since_id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $inbox->orderBy('created DESC, notice_id DESC');
 | 
					        if ($max_id != 0) {
 | 
				
			||||||
 | 
					            $notice->whereAdd('notice.id <= ' . $max_id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $notice->orderBy('notice.id DESC');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!is_null($offset)) {
 | 
					        if (!is_null($offset)) {
 | 
				
			||||||
            $inbox->limit($offset, $limit);
 | 
					            $notice->limit($offset, $limit);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $ids = array();
 | 
					        $ids = array();
 | 
				
			||||||
 | 
					        if ($notice->find()) {
 | 
				
			||||||
        if ($inbox->find()) {
 | 
					            while ($notice->fetch()) {
 | 
				
			||||||
            while ($inbox->fetch()) {
 | 
					                $ids[] = $notice->id;
 | 
				
			||||||
                $ids[] = $inbox->notice_id;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,7 @@ class PeopletagsBySubsSection extends PeopletagSection
 | 
				
			|||||||
    function title()
 | 
					    function title()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Title for section contaning people tags with the most subscribers.
 | 
					        // TRANS: Title for section contaning people tags with the most subscribers.
 | 
				
			||||||
        return _('People tags with most subscribers');
 | 
					        return _('Lists with most subscribers');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function divId()
 | 
					    function divId()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,6 +83,7 @@ class PeopletagSection extends Section
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class PeopletagSectionItem extends PeopletagListItem
 | 
					class PeopletagSectionItem extends PeopletagListItem
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showStart()
 | 
					    function showStart()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -104,10 +105,11 @@ class PeopletagSectionItem extends PeopletagListItem
 | 
				
			|||||||
            common_log(LOG_WARNING, "Trying to show missing peopletag; skipping.");
 | 
					            common_log(LOG_WARNING, "Trying to show missing peopletag; skipping.");
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        $mode = ($this->peopletag->private) ? 'private' : 'public';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->out->elementStart('tr');
 | 
					        $this->out->elementStart('tr');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->out->elementStart('td', 'peopletag');
 | 
					        $this->out->elementStart('td', 'peopletag mode-' . $mode);
 | 
				
			||||||
        $this->showPeopletag();
 | 
					        $this->showPeopletag();
 | 
				
			||||||
        $this->out->elementEnd('td');
 | 
					        $this->out->elementEnd('td');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,11 +123,12 @@ class PeopletagSectionItem extends PeopletagListItem
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Tag summary. %1$d is the number of users tagged with the tag,
 | 
					        // TRANS: Tag summary. %1$d is the number of users tagged with the tag,
 | 
				
			||||||
        // TRANS: %2$d is the number of subscribers to the tag.
 | 
					        // TRANS: %2$d is the number of subscribers to the tag.
 | 
				
			||||||
        $title = sprintf(_('Tagged: %1$d Subscribers: %2$d'),
 | 
					        $title = sprintf(_('Listed: %1$d Subscribers: %2$d'),
 | 
				
			||||||
                         $this->peopletag->taggedCount(),
 | 
					                         $this->peopletag->taggedCount(),
 | 
				
			||||||
                         $this->peopletag->subscriberCount());
 | 
					                         $this->peopletag->subscriberCount());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->out->elementStart('span', 'entry-title tag');
 | 
					        $this->out->elementStart('span', 'entry-title tag');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->out->element('a',
 | 
					        $this->out->element('a',
 | 
				
			||||||
            array('rel'   => 'bookmark',
 | 
					            array('rel'   => 'bookmark',
 | 
				
			||||||
                  'href'  => $this->url(),
 | 
					                  'href'  => $this->url(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,13 +62,15 @@ class PeopletagsForUserSection extends PeopletagSection
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function title()
 | 
					    function title()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $name = $this->profile->getBestName();
 | 
					        $user = common_current_user();
 | 
				
			||||||
        if ($this->profile->id == common_current_user()->id) {
 | 
					
 | 
				
			||||||
            $name = 'you';
 | 
					        if (!empty($user) && $this->profile->id == $user->id) {
 | 
				
			||||||
 | 
					            return sprintf(_('Lists with you'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // TRANS: Title for page that displays which people tags a user has been tagged with.
 | 
					        // TRANS: Title for page that displays
 | 
				
			||||||
 | 
					        //        which people tags a user has been tagged with.
 | 
				
			||||||
        // TRANS: %s is a profile name.
 | 
					        // TRANS: %s is a profile name.
 | 
				
			||||||
        return sprintf(_('People tags for %s'), $name);
 | 
					        return sprintf(_('Lists with %s'), $this->profile->getBestName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function link()
 | 
					    function link()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,27 +42,28 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
 | 
				
			|||||||
class PeopletagSubscriptionsSection extends PeopletagSection
 | 
					class PeopletagSubscriptionsSection extends PeopletagSection
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    var $profile=null;
 | 
					    var $profile=null;
 | 
				
			||||||
 | 
					    var $ptags=null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function __construct($out, Profile $profile)
 | 
					    function __construct($out, Profile $profile)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($out);
 | 
					        parent::__construct($out);
 | 
				
			||||||
        $this->profile = $profile;
 | 
					        $this->profile = $profile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $limit = PEOPLETAGS_PER_SECTION+1;
 | 
				
			||||||
 | 
					        $offset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->ptags = $this->profile->getTagSubscriptions($offset, $limit);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function getPeopletags()
 | 
					    function getPeopletags()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $limit = PEOPLETAGS_PER_SECTION+1;
 | 
					        return $this->ptags;
 | 
				
			||||||
        $offset = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $ptags = $this->profile->getTagSubscriptions($offset, $limit);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $ptags;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function title()
 | 
					    function title()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Title for page that displays people tags a user has subscribed to.
 | 
					        // TRANS: Title for page that displays people tags a user has subscribed to.
 | 
				
			||||||
        return _('People tag subscriptions');
 | 
					        return _('List subscriptions');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function link()
 | 
					    function link()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -103,18 +103,6 @@ class PersonalGroupNav extends Menu
 | 
				
			|||||||
                                         // TRANS: Replaces %s in '%s\'s favorite notices'. (Yes, we know we need to fix this.)
 | 
					                                         // TRANS: Replaces %s in '%s\'s favorite notices'. (Yes, we know we need to fix this.)
 | 
				
			||||||
                                         ($user_profile) ? $name : _m('FIXME','User')),
 | 
					                                         ($user_profile) ? $name : _m('FIXME','User')),
 | 
				
			||||||
                                 $mine && $action =='showfavorites', 'nav_timeline_favorites');
 | 
					                                 $mine && $action =='showfavorites', 'nav_timeline_favorites');
 | 
				
			||||||
            $this->out->menuItem(common_local_url('peopletagsbyuser', array('nickname' =>
 | 
					 | 
				
			||||||
                                                                  $nickname)),
 | 
					 | 
				
			||||||
                             // TRANS: Menu item in personal group navigation menu.
 | 
					 | 
				
			||||||
                             _m('MENU','People tags'),
 | 
					 | 
				
			||||||
                             // @todo i18n FIXME: Need to make this two messages.
 | 
					 | 
				
			||||||
                             // TRANS: Menu item title in personal group navigation menu.
 | 
					 | 
				
			||||||
                             // TRANS: %s is a username.
 | 
					 | 
				
			||||||
                             sprintf(_('People tags by %s'),
 | 
					 | 
				
			||||||
                                     // TRANS: Replaces %s in 'People tags by %s'. (Yes, we know we need to fix this.)
 | 
					 | 
				
			||||||
                                     ($user_profile) ? $name : _('User')),
 | 
					 | 
				
			||||||
                             in_array($action, array('peopletagsbyuser', 'peopletagsforuser')),
 | 
					 | 
				
			||||||
                             'nav_timeline_peopletags');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $cur = common_current_user();
 | 
					            $cur = common_current_user();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,8 +97,8 @@ class ProfileAction extends OwnerDesignAction
 | 
				
			|||||||
        $this->showSubscriptions();
 | 
					        $this->showSubscriptions();
 | 
				
			||||||
        $this->showSubscribers();
 | 
					        $this->showSubscribers();
 | 
				
			||||||
        $this->showGroups();
 | 
					        $this->showGroups();
 | 
				
			||||||
        $this->showPeopletagSubs();
 | 
					        $this->showListsFor();
 | 
				
			||||||
        $this->showPeopletags();
 | 
					        $this->showListSubscriptions();
 | 
				
			||||||
        $this->showStatistics();
 | 
					        $this->showStatistics();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -190,29 +190,25 @@ class ProfileAction extends OwnerDesignAction
 | 
				
			|||||||
        $this->elementEnd('div');
 | 
					        $this->elementEnd('div');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showPeopletagSubs()
 | 
					    function showListsFor()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = common_current_user();
 | 
					        if (Event::handle('StartShowListsForSection', array($this))) {
 | 
				
			||||||
        if (!empty($user) && $this->profile->id == $user->id) {
 | 
					 | 
				
			||||||
            if (Event::handle('StartShowPeopletagSubscriptionsSection', array($this))) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                $profile = $user->getProfile();
 | 
					 | 
				
			||||||
                $section = new PeopletagSubscriptionsSection($this, $profile);
 | 
					 | 
				
			||||||
                $section->show();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                Event::handle('EndShowPeopletagSubscriptionsSection', array($this));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function showPeopletags()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (Event::handle('StartShowPeopletagsSection', array($this))) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $section = new PeopletagsForUserSection($this, $this->profile);
 | 
					            $section = new PeopletagsForUserSection($this, $this->profile);
 | 
				
			||||||
            $section->show();
 | 
					            $section->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Event::handle('EndShowPeopletagsSection', array($this));
 | 
					            Event::handle('EndShowListsForSection', array($this));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showListSubscriptions()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (Event::handle('StartShowListSubscriptionsSection', array($this))) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $section = new PeopletagSubscriptionsSection($this, $this->profile);
 | 
				
			||||||
 | 
					            $section->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Event::handle('EndShowListSubscriptionsSection', array($this));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,12 +77,6 @@ class PublicGroupNav extends Menu
 | 
				
			|||||||
                // TRANS: Menu item title in search group navigation panel.
 | 
					                // TRANS: Menu item title in search group navigation panel.
 | 
				
			||||||
                _('Recent tags'), $this->actionName == 'publictagcloud', 'nav_recent-tags');
 | 
					                _('Recent tags'), $this->actionName == 'publictagcloud', 'nav_recent-tags');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // TRANS: Menu item in search group navigation panel.
 | 
					 | 
				
			||||||
            $this->out->menuItem(common_local_url('publicpeopletagcloud'), _m('MENU','People tags'),
 | 
					 | 
				
			||||||
                // TRANS: Menu item title in search group navigation panel.
 | 
					 | 
				
			||||||
                _('People tags'), in_array($this->actionName, array('publicpeopletagcloud',
 | 
					 | 
				
			||||||
                                    'peopletag', 'selftag')), 'nav_people-tags');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (count(common_config('nickname', 'featured')) > 0) {
 | 
					            if (count(common_config('nickname', 'featured')) > 0) {
 | 
				
			||||||
                // TRANS: Menu item in search group navigation panel.
 | 
					                // TRANS: Menu item in search group navigation panel.
 | 
				
			||||||
                $this->out->menuItem(common_local_url('featured'), _m('MENU','Featured'),
 | 
					                $this->out->menuItem(common_local_url('featured'), _m('MENU','Featured'),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,16 +128,16 @@ class SubGroupNav extends Menu
 | 
				
			|||||||
                                         $this->user->nickname),
 | 
					                                         $this->user->nickname),
 | 
				
			||||||
                                 $action == 'usergroups',
 | 
					                                 $action == 'usergroups',
 | 
				
			||||||
                                 'nav_usergroups');
 | 
					                                 'nav_usergroups');
 | 
				
			||||||
            $this->out->menuItem(common_local_url('peopletagsbyuser',
 | 
					            $this->out->menuItem(common_local_url('peopletagsubscriptions',
 | 
				
			||||||
                                                  array('nickname' =>
 | 
					                                                  array('nickname' =>
 | 
				
			||||||
                                                        $this->user->nickname)),
 | 
					                                                        $this->user->nickname)),
 | 
				
			||||||
                                 // TRANS: Menu item title in local navigation menu.
 | 
					                                 // TRANS: Menu item title in local navigation menu.
 | 
				
			||||||
                                 _m('MENU','People tags'),
 | 
					                                 _m('MENU','Lists'),
 | 
				
			||||||
                                 // TRANS: Menu item title in local navigation menu.
 | 
					                                 // TRANS: Menu item title in local navigation menu.
 | 
				
			||||||
                                 // TRANS: %s is a user nickname.
 | 
					                                 // TRANS: %s is a user nickname.
 | 
				
			||||||
                                 sprintf(_('People tags by %s.'),
 | 
					                                 sprintf(_('List subscriptions by %s.'),
 | 
				
			||||||
                                         $this->user->nickname),
 | 
					                                         $this->user->nickname),
 | 
				
			||||||
                                 in_array($action, array('peopletagsbyuser', 'peopletagsforuser')),
 | 
					                                 in_array($action, array('peopletagsbyuser', 'peopletagsubscriptions', 'peopletagsforuser')),
 | 
				
			||||||
                                 'nav_timeline_peopletags');
 | 
					                                 'nav_timeline_peopletags');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) {
 | 
					            if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -855,7 +855,7 @@ class OStatusPlugin extends Plugin
 | 
				
			|||||||
        if ($oprofile) {
 | 
					        if ($oprofile) {
 | 
				
			||||||
            if (!$oprofile->subscribe()) {
 | 
					            if (!$oprofile->subscribe()) {
 | 
				
			||||||
                // TRANS: Exception thrown when setup of remote people tag subscription fails.
 | 
					                // TRANS: Exception thrown when setup of remote people tag subscription fails.
 | 
				
			||||||
                throw new Exception(_m('Could not set up remote people tag subscription.'));
 | 
					                throw new Exception(_m('Could not set up remote list subscription.'));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $sub = $user->getProfile();
 | 
					            $sub = $user->getProfile();
 | 
				
			||||||
@@ -876,7 +876,7 @@ class OStatusPlugin extends Plugin
 | 
				
			|||||||
            $act->title = _m('TITLE','Follow list');
 | 
					            $act->title = _m('TITLE','Follow list');
 | 
				
			||||||
            // TRANS: Success message for remote list follow through OStatus.
 | 
					            // TRANS: Success message for remote list follow through OStatus.
 | 
				
			||||||
            // TRANS: %1$s is the subscriber name, %2$s the prople tag, %3$s is the tagger's name.
 | 
					            // TRANS: %1$s is the subscriber name, %2$s the prople tag, %3$s is the tagger's name.
 | 
				
			||||||
            $act->content = sprintf(_m("%1$s is now following people tagged %2$s by %3$s."),
 | 
					            $act->content = sprintf(_m("%1$s is now following people listed in %2$s by %3$s."),
 | 
				
			||||||
                                    $sub->getBestName(),
 | 
					                                    $sub->getBestName(),
 | 
				
			||||||
                                    $oprofile->getBestName(),
 | 
					                                    $oprofile->getBestName(),
 | 
				
			||||||
                                    $tagger->getBestName());
 | 
					                                    $tagger->getBestName());
 | 
				
			||||||
@@ -1000,7 +1000,7 @@ class OStatusPlugin extends Plugin
 | 
				
			|||||||
                                  common_date_iso8601(time()));
 | 
					                                  common_date_iso8601(time()));
 | 
				
			||||||
        $act->time = time();
 | 
					        $act->time = time();
 | 
				
			||||||
        $act->title = _m('TITLE','Tag');
 | 
					        $act->title = _m('TITLE','Tag');
 | 
				
			||||||
        $act->content = sprintf(_m('%1$s tagged %2$s in the list %3$s.'),
 | 
					        $act->content = sprintf(_m('%1$s listed %2$s in the list %3$s.'),
 | 
				
			||||||
                                $tagger->getBestName(),
 | 
					                                $tagger->getBestName(),
 | 
				
			||||||
                                $tagged->getBestName(),
 | 
					                                $tagged->getBestName(),
 | 
				
			||||||
                                $plist->getBestName());
 | 
					                                $plist->getBestName());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -169,7 +169,7 @@ class OStatusPeopletagAction extends OStatusSubAction
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function getInstructions()
 | 
					    function getInstructions()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return _m('You can subscribe to people tags from other supported sites. Paste the tag\'s profile URI below:');
 | 
					        return _m('You can subscribe to lists from other supported sites. Paste the lists\'s URI below:');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function selfLink()
 | 
					    function selfLink()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,13 +42,13 @@ class PeopletagsalmonAction extends SalmonAction
 | 
				
			|||||||
        $this->peopletag = Profile_list::staticGet('id', $id);
 | 
					        $this->peopletag = Profile_list::staticGet('id', $id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (empty($this->peopletag)) {
 | 
					        if (empty($this->peopletag)) {
 | 
				
			||||||
            $this->clientError(_m('No such people tag.'));
 | 
					            $this->clientError(_m('No such list.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $oprofile = Ostatus_profile::staticGet('peopletag_id', $id);
 | 
					        $oprofile = Ostatus_profile::staticGet('peopletag_id', $id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!empty($oprofile)) {
 | 
					        if (!empty($oprofile)) {
 | 
				
			||||||
            $this->clientError(_m('Cannot accept remote posts for a remote people tag.'));
 | 
					            $this->clientError(_m('Cannot accept remote posts for a remote list.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
@@ -89,7 +89,7 @@ class PeopletagsalmonAction extends SalmonAction
 | 
				
			|||||||
            $this->clientError(_m('Cannot read profile to set up profile tag subscription.'));
 | 
					            $this->clientError(_m('Cannot read profile to set up profile tag subscription.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if ($oprofile->isGroup()) {
 | 
					        if ($oprofile->isGroup()) {
 | 
				
			||||||
            $this->clientError(_m('Groups cannot subscribe to people tags.'));
 | 
					            $this->clientError(_m('Groups cannot subscribe to lists.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        common_log(LOG_INFO, "Remote profile {$oprofile->uri} subscribing to local peopletag ".$this->peopletag->getBestName());
 | 
					        common_log(LOG_INFO, "Remote profile {$oprofile->uri} subscribing to local peopletag ".$this->peopletag->getBestName());
 | 
				
			||||||
@@ -107,7 +107,7 @@ class PeopletagsalmonAction extends SalmonAction
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            Profile_tag_subscription::add($this->peopletag, $profile);
 | 
					            Profile_tag_subscription::add($this->peopletag, $profile);
 | 
				
			||||||
        } catch (Exception $e) {
 | 
					        } catch (Exception $e) {
 | 
				
			||||||
            $this->serverError(sprintf(_m('Could not subscribe remote user %1$s to people tag %2$s.'),
 | 
					            $this->serverError(sprintf(_m('Could not subscribe remote user %1$s to list %2$s.'),
 | 
				
			||||||
                                       $oprofile->uri, $this->peopletag->getBestName()));
 | 
					                                       $oprofile->uri, $this->peopletag->getBestName()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -120,10 +120,10 @@ class PeopletagsalmonAction extends SalmonAction
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        $oprofile = $this->ensureProfile();
 | 
					        $oprofile = $this->ensureProfile();
 | 
				
			||||||
        if (!$oprofile) {
 | 
					        if (!$oprofile) {
 | 
				
			||||||
            $this->clientError(_m('Cannot read profile to cancel people tag membership.'));
 | 
					            $this->clientError(_m('Cannot read profile to cancel list membership.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if ($oprofile->isGroup()) {
 | 
					        if ($oprofile->isGroup()) {
 | 
				
			||||||
            $this->clientError(_m('Groups cannot subscribe to people tags.'));
 | 
					            $this->clientError(_m('Groups cannot subscribe to lists.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        common_log(LOG_INFO, "Remote profile {$oprofile->uri} unsubscribing from local peopletag ".$this->peopletag->getBestName());
 | 
					        common_log(LOG_INFO, "Remote profile {$oprofile->uri} unsubscribing from local peopletag ".$this->peopletag->getBestName());
 | 
				
			||||||
@@ -133,7 +133,7 @@ class PeopletagsalmonAction extends SalmonAction
 | 
				
			|||||||
                Profile_tag_subscription::remove($this->peopletag->tagger, $this->peopletag->tag, $profile->id);
 | 
					                Profile_tag_subscription::remove($this->peopletag->tagger, $this->peopletag->tag, $profile->id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (Exception $e) {
 | 
					        } catch (Exception $e) {
 | 
				
			||||||
            $this->serverError(sprintf(_m('Could not remove remote user %1$s from people tag %2$s.'),
 | 
					            $this->serverError(sprintf(_m('Could not remove remote user %1$s from list %2$s.'),
 | 
				
			||||||
                                       $oprofile->uri, $this->peopletag->getBestName()));
 | 
					                                       $oprofile->uri, $this->peopletag->getBestName()));
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user