X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Faccountprofileblock.php;h=fe11a0fc1571c3658fa38253c4073a18aa543127;hb=98b65763b0d53ae0e674b0bdb5cfe7cb5acec74d;hp=f31503353dd297dcf409863771b2904b5e83296e;hpb=07d9cca0040e8124ed7c5c35965c76932aed3272;p=quix0rs-gnu-social.git diff --git a/lib/accountprofileblock.php b/lib/accountprofileblock.php index f31503353d..fe11a0fc15 100644 --- a/lib/accountprofileblock.php +++ b/lib/accountprofileblock.php @@ -4,7 +4,7 @@ * Copyright (C) 2011, StatusNet, Inc. * * Profile block to show for an account - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -34,6 +34,8 @@ if (!defined('STATUSNET')) { exit(1); } +require_once INSTALLDIR.'/lib/peopletags.php'; + /** * Profile block to show for an account * @@ -44,28 +46,21 @@ if (!defined('STATUSNET')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ - class AccountProfileBlock extends ProfileBlock { protected $profile = null; protected $user = null; - function __construct($out, $profile) + function __construct(Action $out, Profile $profile) { parent::__construct($out); $this->profile = $profile; - $this->user = User::staticGet('id', $profile->id); - } - - function avatar() - { - $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE); - if (empty($avatar)) { - $avatar = $this->profile->getAvatar(73); + try { + $this->user = $this->profile->getUser(); + } catch (NoSuchUserException $e) { + // The profile presented is non-local + assert(!$this->profile->isLocal()); } - return (!empty($avatar)) ? - $avatar->displayUrl() : - Avatar::defaultImage(AVATAR_PROFILE_SIZE); } function name() @@ -78,54 +73,64 @@ class AccountProfileBlock extends ProfileBlock return $this->profile->profileurl; } - function canEdit() + function location() { - $user = common_current_user(); - return ((!empty($user)) && ($user->id == $this->profile->id)); + return $this->profile->location; } - function editUrl() + function homepage() { - return common_local_url('profilesettings'); + return $this->profile->homepage; } - function editText() + function description() { - return _('Edit'); + return $this->profile->bio; } - function location() + function otherProfiles() { - return $this->profile->location; - } + $others = array(); - function homepage() - { - return $this->profile->homepage; + Event::handle('OtherAccountProfiles', array($this->profile, &$others)); + + return $others; } - function description() + function showTags() { - return $this->profile->bio; + $cur = common_current_user(); + + $self_tags = new SelftagsWidget($this->out, $this->profile, $this->profile); + $self_tags->show(); + + if ($cur) { + // don't show self-tags again + if ($cur->id != $this->profile->id && $cur->getProfile()->canTag($this->profile)) { + $tags = new PeopletagsWidget($this->out, $cur, $this->profile); + $tags->show(); + } + } } function showActions() { - if ($this->profile->hasRole(Profile_role::DELETED)) { - $this->out->elementStart('div', 'entity_actions'); - // TRANS: H2 for user actions in a profile. - $this->out->element('h2', null, _('User actions')); - $this->out->elementStart('ul'); - $this->out->elementStart('p', array('class' => 'profile_deleted')); - // TRANS: Text shown in user profile of not yet compeltely deleted users. - $this->out->text(_('User deletion in progress...')); - $this->out->elementEnd('p'); - $this->out->elementEnd('ul'); - $this->out->elementEnd('div'); - return; - } if (Event::handle('StartProfilePageActionsSection', array($this->out, $this->profile))) { + if ($this->profile->hasRole(Profile_role::DELETED)) { + $this->out->elementStart('div', 'entity_actions'); + // TRANS: H2 for user actions in a profile. + $this->out->element('h2', null, _('User actions')); + $this->out->elementStart('ul'); + $this->out->elementStart('p', array('class' => 'profile_deleted')); + // TRANS: Text shown in user profile of not yet compeltely deleted users. + $this->out->text(_('User deletion in progress...')); + $this->out->elementEnd('p'); + $this->out->elementEnd('ul'); + $this->out->elementEnd('div'); + return; + } + $cur = common_current_user(); $this->out->elementStart('div', 'entity_actions'); @@ -136,9 +141,6 @@ class AccountProfileBlock extends ProfileBlock if (Event::handle('StartProfilePageActionsElements', array($this->out, $this->profile))) { if (empty($cur)) { // not logged in if (Event::handle('StartProfileRemoteSubscribe', array($this->out, $this->profile))) { - $this->out->elementStart('li', 'entity_subscribe'); - $this->showRemoteSubscribeLink(); - $this->out->elementEnd('li'); Event::handle('EndProfileRemoteSubscribe', array($this->out, $this->profile)); } } else { @@ -146,9 +148,9 @@ class AccountProfileBlock extends ProfileBlock $this->out->elementStart('li', 'entity_edit'); $this->out->element('a', array('href' => common_local_url('profilesettings'), // TRANS: Link title for link on user profile. - 'title' => _('Edit profile settings')), + 'title' => _('Edit profile settings.')), // TRANS: Link text for link on user profile. - _('Edit')); + _m('BUTTON','Edit')); $this->out->elementEnd('li'); } else { // someone else's page @@ -159,27 +161,19 @@ class AccountProfileBlock extends ProfileBlock if ($cur->isSubscribed($this->profile)) { $usf = new UnsubscribeForm($this->out, $this->profile); $usf->show(); + } else if ($cur->hasPendingSubscription($this->profile)) { + $sf = new CancelSubscriptionForm($this->out, $this->profile); + $sf->show(); } else { $sf = new SubscribeForm($this->out, $this->profile); $sf->show(); } $this->out->elementEnd('li'); - if ($cur->mutuallySubscribed($this->profile)) { - - // message - - $this->out->elementStart('li', 'entity_send-a-message'); - $this->out->element('a', array('href' => common_local_url('newmessage', array('to' => $this->user->id)), - // TRANS: Link title for link on user profile. - 'title' => _('Send a direct message to this user')), - // TRANS: Link text for link on user profile. - _('Message')); - $this->out->elementEnd('li'); - + if ($this->profile->isLocal() && $cur->mutuallySubscribed($this->profile)) { // nudge - if ($this->user && $this->user->email && $this->user->emailnotifynudge) { + if ($this->user->email && $this->user->emailnotifynudge) { $this->out->elementStart('li', 'entity_nudge'); $nf = new NudgeForm($this->out, $this->user); $nf->show(); @@ -293,13 +287,13 @@ class AccountProfileBlock extends ProfileBlock $this->out->elementEnd('li'); } - function showRemoteSubscribeLink() + function show() { - $url = common_local_url('remotesubscribe', - array('nickname' => $this->profile->nickname)); - $this->out->element('a', array('href' => $url, - 'class' => 'entity_remote_subscribe'), - // TRANS: Link text for link that will subscribe to a remote profile. - _('Subscribe')); + $this->out->elementStart('div', 'profile_block account_profile_block section'); + if (Event::handle('StartShowAccountProfileBlock', array($this->out, $this->profile))) { + parent::show(); + Event::handle('EndShowAccountProfileBlock', array($this->out, $this->profile)); + } + $this->out->elementEnd('div'); } -} \ No newline at end of file +}