forked from GNUsocial/gnu-social
		
	[TagSub] Fix User's tags list issue
Issue introduced with6d9f390band9a92b58057
This commit is contained in:
		@@ -32,7 +32,7 @@ defined('GNUSOCIAL') || die();
 | 
				
			|||||||
define('GNUSOCIAL_ENGINE', 'GNU social');
 | 
					define('GNUSOCIAL_ENGINE', 'GNU social');
 | 
				
			||||||
define('GNUSOCIAL_ENGINE_URL', 'https://www.gnu.org/software/social/');
 | 
					define('GNUSOCIAL_ENGINE_URL', 'https://www.gnu.org/software/social/');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define('GNUSOCIAL_BASE_VERSION', '1.20.2');
 | 
					define('GNUSOCIAL_BASE_VERSION', '1.20.3');
 | 
				
			||||||
define('GNUSOCIAL_LIFECYCLE', 'release'); // 'dev', 'alpha[0-9]+', 'beta[0-9]+', 'rc[0-9]+', 'release'
 | 
					define('GNUSOCIAL_LIFECYCLE', 'release'); // 'dev', 'alpha[0-9]+', 'beta[0-9]+', 'rc[0-9]+', 'release'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define('GNUSOCIAL_VERSION', GNUSOCIAL_BASE_VERSION . '-' . GNUSOCIAL_LIFECYCLE);
 | 
					define('GNUSOCIAL_VERSION', GNUSOCIAL_BASE_VERSION . '-' . GNUSOCIAL_LIFECYCLE);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,14 +37,18 @@ class ProfileListItem extends Widget
 | 
				
			|||||||
    /** Action object using us. */
 | 
					    /** Action object using us. */
 | 
				
			||||||
    var $action = null;
 | 
					    var $action = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // FIXME: Directory plugin sends a User_group here, but should send a Profile and handle User_group specifics itself
 | 
					    // FIXME: Directory plugin sends a User_group here, but should send a Profile and handle User_group specifics itself?
 | 
				
			||||||
    function __construct($target, HTMLOutputter $action)
 | 
					    function __construct($target, HTMLOutputter $action, Profile $owner = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($action);
 | 
					        parent::__construct($action);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->target = $target;
 | 
					        $this->target = $target;
 | 
				
			||||||
        $this->profile = $this->target;
 | 
					        if ($owner !== null) {
 | 
				
			||||||
        $this->action  = $action;
 | 
					            $this->profile = $owner;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $this->profile = $this->target;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this->action = $action;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function getTarget()
 | 
					    function getTarget()
 | 
				
			||||||
@@ -165,7 +169,7 @@ class ProfileListItem extends Widget
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = common_current_user();
 | 
				
			||||||
        if (!empty($user)) {
 | 
					        if (!empty($user)) {
 | 
				
			||||||
            if ($user->id == $this->profile->id) {
 | 
					            if ($user->id == $this->profile->getID()) {
 | 
				
			||||||
                $tags = new SelftagsWidget($this->out, $user, $this->profile);
 | 
					                $tags = new SelftagsWidget($this->out, $user, $this->profile);
 | 
				
			||||||
                $tags->show();
 | 
					                $tags->show();
 | 
				
			||||||
            } else if ($user->getProfile()->canTag($this->profile)) {
 | 
					            } else if ($user->getProfile()->canTag($this->profile)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ class SubscriptionList extends ProfileList
 | 
				
			|||||||
    /** Owner of this list */
 | 
					    /** Owner of this list */
 | 
				
			||||||
    var $owner = null;
 | 
					    var $owner = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct(Profile $profile, $owner=null, $action=null)
 | 
					    public function __construct($profile, $owner=null, $action=null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($profile, $action);
 | 
					        parent::__construct($profile, $action);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,9 +7,14 @@ class SubscriptionListItem extends ProfileListItem
 | 
				
			|||||||
    /** Owner of this list */
 | 
					    /** Owner of this list */
 | 
				
			||||||
    var $owner = null;
 | 
					    var $owner = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function __construct(Profile $profile, $owner, $action)
 | 
					    // FIXME: TagSubs plugin sends a TagSub here, but should send a Profile and handle TagSub specifics itself?
 | 
				
			||||||
 | 
					    function __construct($target, $owner, HTMLOutputter $action)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($profile, $action);
 | 
					        if ($owner instanceof Profile) {
 | 
				
			||||||
 | 
					            parent::__construct($target, $action, $owner);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            parent::__construct($target, $action);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->owner = $owner;
 | 
					        $this->owner = $owner;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ msgid ""
 | 
				
			|||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: \n"
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
"POT-Creation-Date: 2019-06-11 18:37+0100\n"
 | 
					"POT-Creation-Date: 2019-06-17 15:27+0100\n"
 | 
				
			||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,16 +44,16 @@ if (!defined('STATUSNET')) {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class TagSubPlugin extends Plugin
 | 
					class TagSubPlugin extends Plugin
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const PLUGIN_VERSION = '0.1.0';
 | 
					    const PLUGIN_VERSION = '0.1.1';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Database schema setup
 | 
					     * Database schema setup
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 | 
					     * @return bool hook value; true means continue processing, false means stop.
 | 
				
			||||||
     * @see Schema
 | 
					     * @see Schema
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return boolean hook value; true means continue processing, false means stop.
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function onCheckSchema()
 | 
					    public function onCheckSchema()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $schema = Schema::get();
 | 
					        $schema = Schema::get();
 | 
				
			||||||
        $schema->ensureTable('tagsub', TagSub::schemaDef());
 | 
					        $schema->ensureTable('tagsub', TagSub::schemaDef());
 | 
				
			||||||
@@ -69,16 +69,22 @@ class TagSubPlugin extends Plugin
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public function onRouterInitialized(URLMapper $m)
 | 
					    public function onRouterInitialized(URLMapper $m)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $m->connect('tag/:tag/subscribe',
 | 
					        $m->connect(
 | 
				
			||||||
                    array('action' => 'tagsub'),
 | 
					            'tag/:tag/subscribe',
 | 
				
			||||||
                    array('tag' => Router::REGEX_TAG));
 | 
					            array('action' => 'tagsub'),
 | 
				
			||||||
        $m->connect('tag/:tag/unsubscribe',
 | 
					            array('tag' => Router::REGEX_TAG)
 | 
				
			||||||
                    array('action' => 'tagunsub'),
 | 
					        );
 | 
				
			||||||
                    array('tag' => Router::REGEX_TAG));
 | 
					        $m->connect(
 | 
				
			||||||
 | 
					            'tag/:tag/unsubscribe',
 | 
				
			||||||
 | 
					            array('action' => 'tagunsub'),
 | 
				
			||||||
 | 
					            array('tag' => Router::REGEX_TAG)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $m->connect(':nickname/tag-subscriptions',
 | 
					        $m->connect(
 | 
				
			||||||
                    array('action' => 'tagsubs'),
 | 
					            ':nickname/tag-subscriptions',
 | 
				
			||||||
                    array('nickname' => Nickname::DISPLAY_FMT));
 | 
					            array('action' => 'tagsubs'),
 | 
				
			||||||
 | 
					            array('nickname' => Nickname::DISPLAY_FMT)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,17 +93,17 @@ class TagSubPlugin extends Plugin
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param array &$versions array of version data
 | 
					     * @param array &$versions array of version data
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return value
 | 
					     * @return bool true hook value
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function onPluginVersion(array &$versions)
 | 
					    public function onPluginVersion(array &$versions)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $versions[] = array('name' => 'TagSub',
 | 
					        $versions[] = ['name' => 'TagSub',
 | 
				
			||||||
                            'version' => self::PLUGIN_VERSION,
 | 
					            'version' => self::PLUGIN_VERSION,
 | 
				
			||||||
                            'author' => 'Brion Vibber',
 | 
					            'author' => 'Brion Vibber',
 | 
				
			||||||
                            'homepage' => 'https://git.gnu.io/gnu/gnu-social/tree/master/plugins/TagSub',
 | 
					            'homepage' => 'https://git.gnu.io/gnu/gnu-social/tree/master/plugins/TagSub',
 | 
				
			||||||
                            'rawdescription' =>
 | 
					            'rawdescription' =>
 | 
				
			||||||
                            // TRANS: Plugin description.
 | 
					            // TRANS: Plugin description.
 | 
				
			||||||
                            _m('Plugin to allow following all messages with a given tag.'));
 | 
					                _m('Plugin to allow following all messages with a given tag.')];
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -113,7 +119,7 @@ class TagSubPlugin extends Plugin
 | 
				
			|||||||
     * @param array $ni in/out map of profile IDs to inbox constants
 | 
					     * @param array $ni in/out map of profile IDs to inbox constants
 | 
				
			||||||
     * @return boolean hook result
 | 
					     * @return boolean hook result
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function onStartNoticeWhoGets(Notice $notice, array &$ni)
 | 
					    public function onStartNoticeWhoGets(Notice $notice, array &$ni)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        foreach ($notice->getTags() as $tag) {
 | 
					        foreach ($notice->getTags() as $tag) {
 | 
				
			||||||
            $tagsub = new TagSub();
 | 
					            $tagsub = new TagSub();
 | 
				
			||||||
@@ -133,13 +139,13 @@ class TagSubPlugin extends Plugin
 | 
				
			|||||||
     * @param TagAction $action
 | 
					     * @param TagAction $action
 | 
				
			||||||
     * @return boolean hook result
 | 
					     * @return boolean hook result
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function onStartTagShowContent(TagAction $action)
 | 
					    public function onStartTagShowContent(TagAction $action)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = common_current_user();
 | 
				
			||||||
        if ($user) {
 | 
					        if ($user) {
 | 
				
			||||||
            $tag = $action->trimmed('tag');
 | 
					            $tag = $action->trimmed('tag');
 | 
				
			||||||
            $tagsub = TagSub::pkeyGet(array('tag' => $tag,
 | 
					            $tagsub = TagSub::pkeyGet(array('tag' => $tag,
 | 
				
			||||||
                                            'profile_id' => $user->id));
 | 
					                'profile_id' => $user->id));
 | 
				
			||||||
            if ($tagsub) {
 | 
					            if ($tagsub) {
 | 
				
			||||||
                $form = new TagUnsubForm($action, $tag);
 | 
					                $form = new TagUnsubForm($action, $tag);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -162,28 +168,30 @@ class TagSubPlugin extends Plugin
 | 
				
			|||||||
     * @param Widget $widget Widget being executed
 | 
					     * @param Widget $widget Widget being executed
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return boolean hook return
 | 
					     * @return boolean hook return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function onEndSubGroupNav($widget)
 | 
					    public function onEndSubGroupNav($widget)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $action = $widget->out;
 | 
					        $action = $widget->out;
 | 
				
			||||||
        $action_name = $action->trimmed('action');
 | 
					        $action_name = $action->trimmed('action');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $action->menuItem(common_local_url('tagsubs', array('nickname' => $action->user->nickname)),
 | 
					        $action->menuItem(
 | 
				
			||||||
                          // TRANS: SubMirror plugin menu item on user settings page.
 | 
					            common_local_url('tagsubs', array('nickname' => $action->user->nickname)),
 | 
				
			||||||
                          _m('MENU', 'Tags'),
 | 
					            // TRANS: SubMirror plugin menu item on user settings page.
 | 
				
			||||||
                          // TRANS: SubMirror plugin tooltip for user settings menu item.
 | 
					            _m('MENU', 'Tags'),
 | 
				
			||||||
                          _m('Configure tag subscriptions'),
 | 
					            // TRANS: SubMirror plugin tooltip for user settings menu item.
 | 
				
			||||||
                          $action_name == 'tagsubs' && $action->arg('nickname') == $action->user->nickname);
 | 
					            _m('Configure tag subscriptions'),
 | 
				
			||||||
 | 
					            $action_name == 'tagsubs' && $action->arg('nickname') == $action->user->nickname
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function onEndDefaultLocalNav($menu, $user)
 | 
					    public function onEndDefaultLocalNav($menu, $user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = $user ? $user : common_current_user();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!empty($user)) {
 | 
					        if (!empty($user)) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            $tags = TagSub::forProfile($user->getProfile());
 | 
					            $tags = TagSub::forProfile($user->getProfile());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!empty($tags) && count($tags) > 0) {
 | 
					            if (!empty($tags) && count($tags) > 0) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,8 +53,8 @@ if (!defined('STATUSNET')) {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class TagsubAction extends Action
 | 
					class TagsubAction extends Action
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    var $user;
 | 
					    public $user;
 | 
				
			||||||
    var $tag;
 | 
					    public $tag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Check pre-requisites and instantiate attributes
 | 
					     * Check pre-requisites and instantiate attributes
 | 
				
			||||||
@@ -62,8 +62,9 @@ class TagsubAction extends Action
 | 
				
			|||||||
     * @param Array $args array of arguments (URL, GET, POST)
 | 
					     * @param Array $args array of arguments (URL, GET, POST)
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return boolean success flag
 | 
					     * @return boolean success flag
 | 
				
			||||||
 | 
					     * @throws ClientException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function prepare(array $args = array())
 | 
					    public function prepare(array $args = array())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::prepare($args);
 | 
					        parent::prepare($args);
 | 
				
			||||||
        if ($this->boolean('ajax')) {
 | 
					        if ($this->boolean('ajax')) {
 | 
				
			||||||
@@ -84,8 +85,8 @@ class TagsubAction extends Action
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (!$token || $token != common_session_token()) {
 | 
					        if (!$token || $token != common_session_token()) {
 | 
				
			||||||
            // TRANS: Client error displayed when the session token is not okay.
 | 
					            // TRANS: Client error displayed when the session token is not okay.
 | 
				
			||||||
            $this->clientError(_m('There was a problem with your session token.'.
 | 
					            $this->clientError(_m('There was a problem with your session token.' .
 | 
				
			||||||
                                 ' Try again, please.'));
 | 
					                ' Try again, please.'));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Only for logged-in users
 | 
					        // Only for logged-in users
 | 
				
			||||||
@@ -114,16 +115,17 @@ class TagsubAction extends Action
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * Does the subscription and returns results.
 | 
					     * Does the subscription and returns results.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param Array $args unused.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws ClientException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function handle()
 | 
					    public function handle()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // Throws exception on error
 | 
					        // Throws exception on error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        TagSub::start($this->user->getProfile(),
 | 
					        TagSub::start(
 | 
				
			||||||
                      $this->tag);
 | 
					            $this->user->getProfile(),
 | 
				
			||||||
 | 
					            $this->tag
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->boolean('ajax')) {
 | 
					        if ($this->boolean('ajax')) {
 | 
				
			||||||
            $this->startHTML('text/xml;charset=utf-8');
 | 
					            $this->startHTML('text/xml;charset=utf-8');
 | 
				
			||||||
@@ -137,8 +139,10 @@ class TagsubAction extends Action
 | 
				
			|||||||
            $this->elementEnd('body');
 | 
					            $this->elementEnd('body');
 | 
				
			||||||
            $this->endHTML();
 | 
					            $this->endHTML();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            $url = common_local_url('tag',
 | 
					            $url = common_local_url(
 | 
				
			||||||
                                    array('tag' => $this->tag));
 | 
					                'tag',
 | 
				
			||||||
 | 
					                array('tag' => $this->tag)
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
            common_redirect($url, 303);
 | 
					            common_redirect($url, 303);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,9 @@
 | 
				
			|||||||
 * @link      http://status.net/
 | 
					 * @link      http://status.net/
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!defined('GNUSOCIAL')) { exit(1); }
 | 
					if (!defined('GNUSOCIAL')) {
 | 
				
			||||||
 | 
					    exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * A list of the user's subscriptions
 | 
					 * A list of the user's subscriptions
 | 
				
			||||||
@@ -41,7 +43,7 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class TagSubsAction extends GalleryAction
 | 
					class TagSubsAction extends GalleryAction
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    function title()
 | 
					    public function title()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->page == 1) {
 | 
					        if ($this->page == 1) {
 | 
				
			||||||
            // TRANS: Header for subscriptions overview for a user (first page).
 | 
					            // TRANS: Header for subscriptions overview for a user (first page).
 | 
				
			||||||
@@ -50,35 +52,45 @@ class TagSubsAction extends GalleryAction
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // TRANS: Header for subscriptions overview for a user (not first page).
 | 
					            // TRANS: Header for subscriptions overview for a user (not first page).
 | 
				
			||||||
            // TRANS: %1$s is a user nickname, %2$d is the page number.
 | 
					            // TRANS: %1$s is a user nickname, %2$d is the page number.
 | 
				
			||||||
            return sprintf(_m('%1$s\'s tag subscriptions, page %2$d'),
 | 
					            return sprintf(
 | 
				
			||||||
                           $this->getTarget()->getNickname(),
 | 
					                _m('%1$s\'s tag subscriptions, page %2$d'),
 | 
				
			||||||
                           $this->page);
 | 
					                $this->getTarget()->getNickname(),
 | 
				
			||||||
 | 
					                $this->page
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showPageNotice()
 | 
					    public function showPageNotice()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->scoped instanceof Profile && $this->scoped->sameAs($this->getTarget())) {
 | 
					        if ($this->scoped instanceof Profile && $this->scoped->sameAs($this->getTarget())) {
 | 
				
			||||||
            $this->element('p', null,
 | 
					            $this->element(
 | 
				
			||||||
                           // TRANS: Page notice for page with an overview of all tag subscriptions
 | 
					                'p',
 | 
				
			||||||
                           // TRANS: of the logged in user's own profile.
 | 
					                null,
 | 
				
			||||||
                           _m('You have subscribed to receive all notices on this site containing the following tags:'));
 | 
					                // TRANS: Page notice for page with an overview of all tag subscriptions
 | 
				
			||||||
 | 
					                // TRANS: of the logged in user's own profile.
 | 
				
			||||||
 | 
					                _m('You have subscribed to receive all notices on this site containing the following tags:')
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            $this->element('p', null,
 | 
					            $this->element(
 | 
				
			||||||
                           // TRANS: Page notice for page with an overview of all subscriptions of a user other
 | 
					                'p',
 | 
				
			||||||
                           // TRANS: than the logged in user. %s is the user nickname.
 | 
					                null,
 | 
				
			||||||
                           sprintf(_m('%s has subscribed to receive all notices on this site containing the following tags:'),
 | 
					                // TRANS: Page notice for page with an overview of all subscriptions of a user other
 | 
				
			||||||
                                   $this->getTarget()->getNickname()));
 | 
					                // TRANS: than the logged in user. %s is the user nickname.
 | 
				
			||||||
 | 
					                sprintf(
 | 
				
			||||||
 | 
					                    _m('%s has subscribed to receive all notices on this site containing the following tags:'),
 | 
				
			||||||
 | 
					                    $this->getTarget()->getNickname()
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showContent()
 | 
					    public function showContent()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Event::handle('StartShowTagSubscriptionsContent', array($this))) {
 | 
					        if (Event::handle('StartShowTagSubscriptionsContent', array($this))) {
 | 
				
			||||||
            parent::showContent();
 | 
					            parent::showContent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $offset = ($this->page-1) * PROFILES_PER_PAGE;
 | 
					            $offset = ($this->page - 1) * PROFILES_PER_PAGE;
 | 
				
			||||||
            $limit =  PROFILES_PER_PAGE + 1;
 | 
					            $limit = PROFILES_PER_PAGE + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $cnt = 0;
 | 
					            $cnt = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,30 +109,33 @@ class TagSubsAction extends GalleryAction
 | 
				
			|||||||
                $this->showEmptyListMessage();
 | 
					                $this->showEmptyListMessage();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
 | 
					            $this->pagination(
 | 
				
			||||||
                              $this->page, 'tagsubs',
 | 
					                $this->page > 1,
 | 
				
			||||||
                              array('nickname' => $this->getTarget()->getNickname()));
 | 
					                $cnt > PROFILES_PER_PAGE,
 | 
				
			||||||
 | 
					                $this->page,
 | 
				
			||||||
 | 
					                'tagsubs',
 | 
				
			||||||
 | 
					                array('nickname' => $this->getTarget()->getNickname())
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Event::handle('EndShowTagSubscriptionsContent', array($this));
 | 
					            Event::handle('EndShowTagSubscriptionsContent', array($this));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showEmptyListMessage()
 | 
					    public function showEmptyListMessage()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (common_logged_in()) {
 | 
					        if (common_logged_in()) {
 | 
				
			||||||
            if ($this->scoped->sameAs($this->getTarget())) {
 | 
					            if ($this->scoped->sameAs($this->getTarget())) {
 | 
				
			||||||
                // TRANS: Tag subscription list text when the logged in user has no tag subscriptions.
 | 
					                // TRANS: Tag subscription list text when the logged in user has no tag subscriptions.
 | 
				
			||||||
                $message = _m('You are not listening to any hash tags right now. You can push the "Subscribe" button ' .
 | 
					                $message = _m('You are not listening to any hash tags right now. You can push the "Subscribe" button ' .
 | 
				
			||||||
                              'on any hashtag page to automatically receive any public messages on this site that use that ' .
 | 
					                    'on any hashtag page to automatically receive any public messages on this site that use that ' .
 | 
				
			||||||
                              'tag, even if you are not subscribed to the poster.');
 | 
					                    'tag, even if you are not subscribed to the poster.');
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                // TRANS: Tag subscription list text when looking at the subscriptions for a of a user other
 | 
					                // TRANS: Tag subscription list text when looking at the subscriptions for a of a user other
 | 
				
			||||||
                // TRANS: than the logged in user that has no tag subscriptions. %s is the user nickname.
 | 
					                // TRANS: than the logged in user that has no tag subscriptions. %s is the user nickname.
 | 
				
			||||||
                $message = sprintf(_m('%s is not following any tags.'), $this->getTarget()->getNickname());
 | 
					                $message = sprintf(_m('%s is not following any tags.'), $this->getTarget()->getNickname());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        } else {
 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
            // TRANS: Subscription list text when looking at the subscriptions for a of a user that has none
 | 
					            // TRANS: Subscription list text when looking at the subscriptions for a of a user that has none
 | 
				
			||||||
            // TRANS: as an anonymous user. %s is the user nickname.
 | 
					            // TRANS: as an anonymous user. %s is the user nickname.
 | 
				
			||||||
            $message = sprintf(_m('%s is not following any tags.'), $this->getTarget()->getNickname());
 | 
					            $message = sprintf(_m('%s is not following any tags.'), $this->getTarget()->getNickname());
 | 
				
			||||||
@@ -136,7 +151,7 @@ class TagSubsAction extends GalleryAction
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class TagSubscriptionsList extends SubscriptionList
 | 
					class TagSubscriptionsList extends SubscriptionList
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    function newListItem(Profile $tagsub)
 | 
					    public function newListItem($tagsub)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return new TagSubscriptionsListItem($tagsub, $this->owner, $this->action);
 | 
					        return new TagSubscriptionsListItem($tagsub, $this->owner, $this->action);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -144,14 +159,14 @@ class TagSubscriptionsList extends SubscriptionList
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class TagSubscriptionsListItem extends SubscriptionListItem
 | 
					class TagSubscriptionsListItem extends SubscriptionListItem
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    function startItem()
 | 
					    public function startItem()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->out->elementStart('li', array('class' => 'tagsub'));
 | 
					        $this->out->elementStart('li', array('class' => 'tagsub'));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showProfile()
 | 
					    public function showProfile()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $tagsub = $this->profile;
 | 
					        $tagsub = $this->getTarget();
 | 
				
			||||||
        $tag = $tagsub->tag;
 | 
					        $tag = $tagsub->tag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Relevant portion!
 | 
					        // Relevant portion!
 | 
				
			||||||
@@ -163,10 +178,12 @@ class TagSubscriptionsListItem extends SubscriptionListItem
 | 
				
			|||||||
        $url = common_local_url('tag', array('tag' => $tag));
 | 
					        $url = common_local_url('tag', array('tag' => $tag));
 | 
				
			||||||
        // TRANS: %1$s is a URL to a tag, %2$s is a tag,
 | 
					        // TRANS: %1$s is a URL to a tag, %2$s is a tag,
 | 
				
			||||||
        // TRANS: %3$s a date string.
 | 
					        // TRANS: %3$s a date string.
 | 
				
			||||||
        $linkline = sprintf(_m('#<a href="%1$s">%2$s</a> since %3$s'),
 | 
					        $linkline = sprintf(
 | 
				
			||||||
                            htmlspecialchars($url),
 | 
					            _m('#<a href="%1$s">%2$s</a> since %3$s'),
 | 
				
			||||||
                            htmlspecialchars($tag),
 | 
					            htmlspecialchars($url),
 | 
				
			||||||
                            common_date_string($tagsub->created));
 | 
					            htmlspecialchars($tag),
 | 
				
			||||||
 | 
					            common_date_string($tagsub->created)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->out->elementStart('div', 'tagsub-item');
 | 
					        $this->out->elementStart('div', 'tagsub-item');
 | 
				
			||||||
        $this->out->raw($linkline);
 | 
					        $this->out->raw($linkline);
 | 
				
			||||||
@@ -174,15 +191,15 @@ class TagSubscriptionsListItem extends SubscriptionListItem
 | 
				
			|||||||
        $this->out->elementEnd('div');
 | 
					        $this->out->elementEnd('div');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showActions()
 | 
					    public function showActions()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function showOwnerControls()
 | 
					    public function showOwnerControls()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->out->elementStart('div', 'entity_actions');
 | 
					        $this->out->elementStart('div', 'entity_actions');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $tagsub = $this->profile; // ?
 | 
					        $tagsub = $this->target;
 | 
				
			||||||
        $form = new TagUnsubForm($this->out, $tagsub->tag);
 | 
					        $form = new TagUnsubForm($this->out, $tagsub->tag);
 | 
				
			||||||
        $form->show();
 | 
					        $form->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,16 +58,17 @@ class TagunsubAction extends TagsubAction
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * Does the subscription and returns results.
 | 
					     * Does the subscription and returns results.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param Array $args unused.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws ClientException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function handle()
 | 
					    public function handle()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // Throws exception on error
 | 
					        // Throws exception on error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        TagSub::cancel($this->user->getProfile(),
 | 
					        TagSub::cancel(
 | 
				
			||||||
                       $this->tag);
 | 
					            $this->user->getProfile(),
 | 
				
			||||||
 | 
					            $this->tag
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->boolean('ajax')) {
 | 
					        if ($this->boolean('ajax')) {
 | 
				
			||||||
            $this->startHTML('text/xml;charset=utf-8');
 | 
					            $this->startHTML('text/xml;charset=utf-8');
 | 
				
			||||||
@@ -81,8 +82,10 @@ class TagunsubAction extends TagsubAction
 | 
				
			|||||||
            $this->elementEnd('body');
 | 
					            $this->elementEnd('body');
 | 
				
			||||||
            $this->endHTML();
 | 
					            $this->endHTML();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            $url = common_local_url('tag',
 | 
					            $url = common_local_url(
 | 
				
			||||||
                                    array('tag' => $this->tag));
 | 
					                'tag',
 | 
				
			||||||
 | 
					                array('tag' => $this->tag)
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
            common_redirect($url, 303);
 | 
					            common_redirect($url, 303);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ class TagSub extends Managed_DataObject
 | 
				
			|||||||
     * @param string $tag subscribee
 | 
					     * @param string $tag subscribee
 | 
				
			||||||
     * @return TagSub
 | 
					     * @return TagSub
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    static function start(Profile $profile, $tag)
 | 
					    public static function start(Profile $profile, $tag)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $ts = new TagSub();
 | 
					        $ts = new TagSub();
 | 
				
			||||||
        $ts->tag = $tag;
 | 
					        $ts->tag = $tag;
 | 
				
			||||||
@@ -96,35 +96,35 @@ class TagSub extends Managed_DataObject
 | 
				
			|||||||
     * @param profile $profile subscriber
 | 
					     * @param profile $profile subscriber
 | 
				
			||||||
     * @param string $tag subscribee
 | 
					     * @param string $tag subscribee
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    static function cancel(Profile $profile, $tag)
 | 
					    public static function cancel(Profile $profile, $tag)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $ts = TagSub::pkeyGet(array('tag' => $tag,
 | 
					        $ts = TagSub::pkeyGet(array('tag' => $tag,
 | 
				
			||||||
                                    'profile_id' => $profile->id));
 | 
					            'profile_id' => $profile->id));
 | 
				
			||||||
        if ($ts) {
 | 
					        if ($ts) {
 | 
				
			||||||
            $ts->delete();
 | 
					            $ts->delete();
 | 
				
			||||||
            self::blow('tagsub:by_profile:%d', $profile->id);
 | 
					            self::blow('tagsub:by_profile:%d', $profile->id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static function forProfile(Profile $profile)
 | 
					    public static function forProfile(Profile $profile)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $tags = array();
 | 
					        $tags = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $keypart = sprintf('tagsub:by_profile:%d', $profile->id);
 | 
					        $keypart = sprintf('tagsub:by_profile:%d', $profile->id);
 | 
				
			||||||
        $tagstring = self::cacheGet($keypart);
 | 
					        $tagstring = self::cacheGet($keypart);
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        if ($tagstring !== false) { // cache hit
 | 
					        if ($tagstring !== false) { // cache hit
 | 
				
			||||||
        	if (!empty($tagstring)) {
 | 
					            if (!empty($tagstring)) {
 | 
				
			||||||
            	$tags = explode(',', $tagstring);
 | 
					                $tags = explode(',', $tagstring);
 | 
				
			||||||
        	}
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            $tagsub             = new TagSub();
 | 
					            $tagsub = new TagSub();
 | 
				
			||||||
            $tagsub->profile_id = $profile->id;
 | 
					            $tagsub->profile_id = $profile->id;
 | 
				
			||||||
            $tagsub->selectAdd();
 | 
					            $tagsub->selectAdd();
 | 
				
			||||||
            $tagsub->selectAdd('tag');
 | 
					            $tagsub->selectAdd('tag');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ($tagsub->find()) {
 | 
					            if ($tagsub->find()) {
 | 
				
			||||||
				$tags = $tagsub->fetchAll('tag');
 | 
					                $tags = $tagsub->fetchAll('tag');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self::cacheSet($keypart, implode(',', $tags));
 | 
					            self::cacheSet($keypart, implode(',', $tags));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,15 +51,15 @@ class TagSubForm extends Form
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Name of tag to subscribe to
 | 
					     * Name of tag to subscribe to
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    var $tag = '';
 | 
					    public $tag = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Constructor
 | 
					     * Constructor
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param HTMLOutputter $out     output channel
 | 
					     * @param HTMLOutputter $out output channel
 | 
				
			||||||
     * @param string        $tag     name of tag to subscribe to
 | 
					     * @param string $tag name of tag to subscribe to
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function __construct($out=null, $tag=null)
 | 
					    public function __construct($out = null, $tag = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($out);
 | 
					        parent::__construct($out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,7 +71,7 @@ class TagSubForm extends Form
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return int ID of the form
 | 
					     * @return int ID of the form
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function id()
 | 
					    public function id()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'tag-subscribe-' . $this->tag;
 | 
					        return 'tag-subscribe-' . $this->tag;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -81,7 +81,7 @@ class TagSubForm extends Form
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return string of the form class
 | 
					     * @return string of the form class
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formClass()
 | 
					    public function formClass()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // class to match existing styles...
 | 
					        // class to match existing styles...
 | 
				
			||||||
        return 'form_user_subscribe ajax';
 | 
					        return 'form_user_subscribe ajax';
 | 
				
			||||||
@@ -92,7 +92,7 @@ class TagSubForm extends Form
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return string URL of the action
 | 
					     * @return string URL of the action
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function action()
 | 
					    public function action()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return common_local_url('tagsub', array('tag' => $this->tag));
 | 
					        return common_local_url('tagsub', array('tag' => $this->tag));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -101,8 +101,9 @@ class TagSubForm extends Form
 | 
				
			|||||||
     * Legend of the Form
 | 
					     * Legend of the Form
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formLegend()
 | 
					    public function formLegend()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Form legend.
 | 
					        // TRANS: Form legend.
 | 
				
			||||||
        $this->out->element('legend', null, _m('Subscribe to this tag'));
 | 
					        $this->out->element('legend', null, _m('Subscribe to this tag'));
 | 
				
			||||||
@@ -113,23 +114,31 @@ class TagSubForm extends Form
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formData()
 | 
					    public function formData()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->out->hidden('subscribeto-' . $this->tag,
 | 
					        $this->out->hidden(
 | 
				
			||||||
                           $this->tag,
 | 
					            'subscribeto-' . $this->tag,
 | 
				
			||||||
                           'subscribeto');
 | 
					            $this->tag,
 | 
				
			||||||
 | 
					            'subscribeto'
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Action elements
 | 
					     * Action elements
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formActions()
 | 
					    public function formActions()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Submit button text to subscribe to a tag.
 | 
					        // TRANS: Submit button text to subscribe to a tag.
 | 
				
			||||||
        $this->out->submit('submit', _m('BUTTON','Subscribe'),
 | 
					        $this->out->submit(
 | 
				
			||||||
                           // TRANS: Submit button title to subscribe to a tag.
 | 
					            'submit',
 | 
				
			||||||
                           'submit', null, _m('Subscribe to this tag.'));
 | 
					            _m('BUTTON', 'Subscribe'),
 | 
				
			||||||
 | 
					            // TRANS: Submit button title to subscribe to a tag.
 | 
				
			||||||
 | 
					            'submit',
 | 
				
			||||||
 | 
					            null,
 | 
				
			||||||
 | 
					            _m('Subscribe to this tag.')
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ class TagUnsubForm extends TagSubForm
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return int ID of the form
 | 
					     * @return int ID of the form
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function id()
 | 
					    public function id()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'tag-unsubscribe-' . $this->tag;
 | 
					        return 'tag-unsubscribe-' . $this->tag;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -63,7 +63,7 @@ class TagUnsubForm extends TagSubForm
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return string of the form class
 | 
					     * @return string of the form class
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formClass()
 | 
					    public function formClass()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // class to match existing styles...
 | 
					        // class to match existing styles...
 | 
				
			||||||
        return 'form_user_unsubscribe ajax';
 | 
					        return 'form_user_unsubscribe ajax';
 | 
				
			||||||
@@ -74,7 +74,7 @@ class TagUnsubForm extends TagSubForm
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return string URL of the action
 | 
					     * @return string URL of the action
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function action()
 | 
					    public function action()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return common_local_url('tagunsub', array('tag' => $this->tag));
 | 
					        return common_local_url('tagunsub', array('tag' => $this->tag));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -83,8 +83,9 @@ class TagUnsubForm extends TagSubForm
 | 
				
			|||||||
     * Legend of the Form
 | 
					     * Legend of the Form
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formLegend()
 | 
					    public function formLegend()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Form legend.
 | 
					        // TRANS: Form legend.
 | 
				
			||||||
        $this->out->element('legend', null, _m('Unsubscribe from this tag'));
 | 
					        $this->out->element('legend', null, _m('Unsubscribe from this tag'));
 | 
				
			||||||
@@ -94,12 +95,18 @@ class TagUnsubForm extends TagSubForm
 | 
				
			|||||||
     * Action elements
 | 
					     * Action elements
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return void
 | 
					     * @return void
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function formActions()
 | 
					    public function formActions()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TRANS: Submit button text to unsubscribe from a tag.
 | 
					        // TRANS: Submit button text to unsubscribe from a tag.
 | 
				
			||||||
        $this->out->submit('submit', _m('BUTTON','Unsubscribe'),
 | 
					        $this->out->submit(
 | 
				
			||||||
                           // TRANS: Submit button title to unsubscribe from a tag.
 | 
					            'submit',
 | 
				
			||||||
                           'submit', null, _m('Unsubscribe from this tag.'));
 | 
					            _m('BUTTON', 'Unsubscribe'),
 | 
				
			||||||
 | 
					            // TRANS: Submit button title to unsubscribe from a tag.
 | 
				
			||||||
 | 
					            'submit',
 | 
				
			||||||
 | 
					            null,
 | 
				
			||||||
 | 
					            _m('Unsubscribe from this tag.')
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,40 +49,40 @@ class TagSubMenu extends MoreMenu
 | 
				
			|||||||
    protected $user;
 | 
					    protected $user;
 | 
				
			||||||
    protected $tags;
 | 
					    protected $tags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function __construct($out, $user, $tags)
 | 
					    public function __construct($out, $user, $tags)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct($out);
 | 
					        parent::__construct($out);
 | 
				
			||||||
        $this->user = $user;
 | 
					        $this->user = $user;
 | 
				
			||||||
        $this->tags = $tags;
 | 
					        $this->tags = $tags;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function getItems()
 | 
					    public function getItems()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $items = array();
 | 
					        $items = array();
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        foreach ($this->tags as $tag) {
 | 
					        foreach ($this->tags as $tag) {
 | 
				
			||||||
            if (!empty($tag)) {
 | 
					            if (!empty($tag)) {
 | 
				
			||||||
                $items[] = array('tag',
 | 
					                $items[] = array('tag',
 | 
				
			||||||
                                 array('tag' => $tag),
 | 
					                    array('tag' => $tag),
 | 
				
			||||||
                                 sprintf('#%s', $tag),
 | 
					                    sprintf('#%s', $tag),
 | 
				
			||||||
                                 // TRANS: Menu item title. %s is a tag.
 | 
					                    // TRANS: Menu item title. %s is a tag.
 | 
				
			||||||
                                 sprintf(_('Notices tagged with "%s".'), $tag));
 | 
					                    sprintf(_('Notices tagged with "%s".'), $tag));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $items;
 | 
					        return $items;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function tag()
 | 
					    public function tag()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'tagsubs';
 | 
					        return 'tagsubs';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function seeAllItem()
 | 
					    public function seeAllItem()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return array('tagsubs',
 | 
					        return array('tagsubs',
 | 
				
			||||||
                     array('nickname' => $this->user->nickname),
 | 
					            array('nickname' => $this->user->nickname),
 | 
				
			||||||
                     _('See all'),
 | 
					            _('See all'),
 | 
				
			||||||
                     _('See all tags you are following'));
 | 
					            _('See all tags you are following'));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ msgid ""
 | 
				
			|||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: \n"
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
"POT-Creation-Date: 2019-06-08 18:20+0100\n"
 | 
					"POT-Creation-Date: 2019-06-13 00:46+0100\n"
 | 
				
			||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
@@ -19,29 +19,25 @@ msgstr ""
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#. TRANS: Header for subscriptions overview for a user (first page).
 | 
					#. TRANS: Header for subscriptions overview for a user (first page).
 | 
				
			||||||
#. TRANS: %s is a user nickname.
 | 
					#. TRANS: %s is a user nickname.
 | 
				
			||||||
#: actions/tagsubs.php:49
 | 
					#: actions/tagsubs.php:51
 | 
				
			||||||
#, php-format
 | 
					#, php-format
 | 
				
			||||||
msgid "%s's tag subscriptions"
 | 
					msgid "%s's tag subscriptions"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Header for subscriptions overview for a user (not first page).
 | 
					#: actions/tagsubs.php:56
 | 
				
			||||||
#. TRANS: %1$s is a user nickname, %2$d is the page number.
 | 
					 | 
				
			||||||
#: actions/tagsubs.php:53
 | 
					 | 
				
			||||||
#, php-format
 | 
					#, php-format
 | 
				
			||||||
msgid "%1$s's tag subscriptions, page %2$d"
 | 
					msgid "%1$s's tag subscriptions, page %2$d"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Page notice for page with an overview of all tag subscriptions
 | 
					#. TRANS: Page notice for page with an overview of all tag subscriptions
 | 
				
			||||||
#. TRANS: of the logged in user's own profile.
 | 
					#. TRANS: of the logged in user's own profile.
 | 
				
			||||||
#: actions/tagsubs.php:65
 | 
					#: actions/tagsubs.php:71
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"You have subscribed to receive all notices on this site containing the "
 | 
					"You have subscribed to receive all notices on this site containing the "
 | 
				
			||||||
"following tags:"
 | 
					"following tags:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Page notice for page with an overview of all subscriptions of a user other
 | 
					#: actions/tagsubs.php:80
 | 
				
			||||||
#. TRANS: than the logged in user. %s is the user nickname.
 | 
					 | 
				
			||||||
#: actions/tagsubs.php:70
 | 
					 | 
				
			||||||
#, php-format
 | 
					#, php-format
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"%s has subscribed to receive all notices on this site containing the "
 | 
					"%s has subscribed to receive all notices on this site containing the "
 | 
				
			||||||
@@ -49,7 +45,7 @@ msgid ""
 | 
				
			|||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Tag subscription list text when the logged in user has no tag subscriptions.
 | 
					#. TRANS: Tag subscription list text when the logged in user has no tag subscriptions.
 | 
				
			||||||
#: actions/tagsubs.php:114
 | 
					#: actions/tagsubs.php:130
 | 
				
			||||||
msgid ""
 | 
					msgid ""
 | 
				
			||||||
"You are not listening to any hash tags right now. You can push the "
 | 
					"You are not listening to any hash tags right now. You can push the "
 | 
				
			||||||
"\"Subscribe\" button on any hashtag page to automatically receive any public "
 | 
					"\"Subscribe\" button on any hashtag page to automatically receive any public "
 | 
				
			||||||
@@ -61,98 +57,92 @@ msgstr ""
 | 
				
			|||||||
#. TRANS: than the logged in user that has no tag subscriptions. %s is the user nickname.
 | 
					#. TRANS: than the logged in user that has no tag subscriptions. %s is the user nickname.
 | 
				
			||||||
#. TRANS: Subscription list text when looking at the subscriptions for a of a user that has none
 | 
					#. TRANS: Subscription list text when looking at the subscriptions for a of a user that has none
 | 
				
			||||||
#. TRANS: as an anonymous user. %s is the user nickname.
 | 
					#. TRANS: as an anonymous user. %s is the user nickname.
 | 
				
			||||||
#: actions/tagsubs.php:120 actions/tagsubs.php:126
 | 
					#: actions/tagsubs.php:136 actions/tagsubs.php:141
 | 
				
			||||||
#, php-format
 | 
					#, php-format
 | 
				
			||||||
msgid "%s is not following any tags."
 | 
					msgid "%s is not following any tags."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: %1$s is a URL to a tag, %2$s is a tag,
 | 
					#: actions/tagsubs.php:182
 | 
				
			||||||
#. TRANS: %3$s a date string.
 | 
					 | 
				
			||||||
#: actions/tagsubs.php:166
 | 
					 | 
				
			||||||
#, php-format
 | 
					#, php-format
 | 
				
			||||||
msgid "#<a href=\"%1$s\">%2$s</a> since %3$s"
 | 
					msgid "#<a href=\"%1$s\">%2$s</a> since %3$s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Client error displayed trying to perform any request method other than POST.
 | 
					#. TRANS: Client error displayed trying to perform any request method other than POST.
 | 
				
			||||||
#. TRANS: Do not translate POST.
 | 
					#. TRANS: Do not translate POST.
 | 
				
			||||||
#: actions/tagsub.php:78
 | 
					#: actions/tagsub.php:79
 | 
				
			||||||
msgid "This action only accepts POST requests."
 | 
					msgid "This action only accepts POST requests."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Client error displayed when the session token is not okay.
 | 
					#. TRANS: Client error displayed when the session token is not okay.
 | 
				
			||||||
#: actions/tagsub.php:87
 | 
					#: actions/tagsub.php:88
 | 
				
			||||||
msgid "There was a problem with your session token. Try again, please."
 | 
					msgid "There was a problem with your session token. Try again, please."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Error message displayed when trying to perform an action that requires a logged in user.
 | 
					#. TRANS: Error message displayed when trying to perform an action that requires a logged in user.
 | 
				
			||||||
#: actions/tagsub.php:97
 | 
					#: actions/tagsub.php:98
 | 
				
			||||||
msgid "Not logged in."
 | 
					msgid "Not logged in."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Client error displayed trying to subscribe to a non-existing profile.
 | 
					#. TRANS: Client error displayed trying to subscribe to a non-existing profile.
 | 
				
			||||||
#: actions/tagsub.php:106
 | 
					#: actions/tagsub.php:107
 | 
				
			||||||
msgid "No such profile."
 | 
					msgid "No such profile."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Page title when tag subscription succeeded.
 | 
					#. TRANS: Page title when tag subscription succeeded.
 | 
				
			||||||
#: actions/tagsub.php:132
 | 
					#: actions/tagsub.php:134
 | 
				
			||||||
msgid "Subscribed"
 | 
					msgid "Subscribed"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Page title when tag unsubscription succeeded.
 | 
					#. TRANS: Page title when tag unsubscription succeeded.
 | 
				
			||||||
#: actions/tagunsub.php:76
 | 
					#: actions/tagunsub.php:77
 | 
				
			||||||
msgid "Unsubscribed"
 | 
					msgid "Unsubscribed"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Plugin description.
 | 
					#. TRANS: Plugin description.
 | 
				
			||||||
#: TagSubPlugin.php:100
 | 
					#: TagSubPlugin.php:106
 | 
				
			||||||
msgid "Plugin to allow following all messages with a given tag."
 | 
					msgid "Plugin to allow following all messages with a given tag."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: SubMirror plugin menu item on user settings page.
 | 
					#. TRANS: SubMirror plugin menu item on user settings page.
 | 
				
			||||||
#: TagSubPlugin.php:173
 | 
					#: TagSubPlugin.php:181
 | 
				
			||||||
msgctxt "MENU"
 | 
					msgctxt "MENU"
 | 
				
			||||||
msgid "Tags"
 | 
					msgid "Tags"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: SubMirror plugin tooltip for user settings menu item.
 | 
					#. TRANS: SubMirror plugin tooltip for user settings menu item.
 | 
				
			||||||
#: TagSubPlugin.php:175
 | 
					#: TagSubPlugin.php:183
 | 
				
			||||||
msgid "Configure tag subscriptions"
 | 
					msgid "Configure tag subscriptions"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Menu item text for tags submenu.
 | 
					#. TRANS: Menu item text for tags submenu.
 | 
				
			||||||
#: TagSubPlugin.php:192
 | 
					#: TagSubPlugin.php:200
 | 
				
			||||||
msgid "Tags"
 | 
					msgid "Tags"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Form legend.
 | 
					#. TRANS: Form legend.
 | 
				
			||||||
#: forms/tagsub.php:108
 | 
					#: forms/tagsub.php:109
 | 
				
			||||||
msgid "Subscribe to this tag"
 | 
					msgid "Subscribe to this tag"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Submit button text to subscribe to a tag.
 | 
					#: forms/tagsub.php:137
 | 
				
			||||||
#: forms/tagsub.php:131
 | 
					 | 
				
			||||||
msgctxt "BUTTON"
 | 
					msgctxt "BUTTON"
 | 
				
			||||||
msgid "Subscribe"
 | 
					msgid "Subscribe"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Submit button title to subscribe to a tag.
 | 
					#: forms/tagsub.php:141
 | 
				
			||||||
#: forms/tagsub.php:133
 | 
					 | 
				
			||||||
msgid "Subscribe to this tag."
 | 
					msgid "Subscribe to this tag."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Form legend.
 | 
					#. TRANS: Form legend.
 | 
				
			||||||
#: forms/tagunsub.php:90
 | 
					#: forms/tagunsub.php:91
 | 
				
			||||||
msgid "Unsubscribe from this tag"
 | 
					msgid "Unsubscribe from this tag"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Submit button text to unsubscribe from a tag.
 | 
					#: forms/tagunsub.php:105
 | 
				
			||||||
#: forms/tagunsub.php:101
 | 
					 | 
				
			||||||
msgctxt "BUTTON"
 | 
					msgctxt "BUTTON"
 | 
				
			||||||
msgid "Unsubscribe"
 | 
					msgid "Unsubscribe"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. TRANS: Submit button title to unsubscribe from a tag.
 | 
					#: forms/tagunsub.php:109
 | 
				
			||||||
#: forms/tagunsub.php:103
 | 
					 | 
				
			||||||
msgid "Unsubscribe from this tag."
 | 
					msgid "Unsubscribe from this tag."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user