We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 51ecd6be authored by mattl's avatar mattl

Fix some ProfileAction stuff, add function profileActionPreparation

Split up files with multiple classes to multiple files for autoload, sorry
for baking this into this commit.
parent 7601e10b
...@@ -41,13 +41,9 @@ class AllAction extends ProfileAction ...@@ -41,13 +41,9 @@ class AllAction extends ProfileAction
{ {
var $notice; var $notice;
protected function prepare(array $args=array()) protected function profileActionPreparation()
{ {
parent::prepare($args); if ($this->scoped instanceof Profile && $this->scoped->isLocal() && $this->scoped->getUser()->streamModeOnly()) {
$user = common_current_user();
if (!empty($user) && $user->streamModeOnly()) {
$stream = new InboxNoticeStream($this->target, $this->scoped); $stream = new InboxNoticeStream($this->target, $this->scoped);
} else { } else {
$stream = new ThreadingInboxNoticeStream($this->target, $this->scoped); $stream = new ThreadingInboxNoticeStream($this->target, $this->scoped);
...@@ -60,8 +56,6 @@ class AllAction extends ProfileAction ...@@ -60,8 +56,6 @@ class AllAction extends ProfileAction
// TRANS: Client error when page not found (404). // TRANS: Client error when page not found (404).
$this->clientError(_('No such page.'), 404); $this->clientError(_('No such page.'), 404);
} }
return true;
} }
function title() function title()
......
...@@ -57,14 +57,12 @@ class ShowstreamAction extends ProfileAction ...@@ -57,14 +57,12 @@ class ShowstreamAction extends ProfileAction
{ {
var $notice; var $notice;
protected function prepare(array $args=array()) protected function profileActionPreparation()
{ {
parent::prepare($args);
if (empty($this->tag)) { if (empty($this->tag)) {
$stream = new ProfileNoticeStream($this->profile, $this->scoped); $stream = new ProfileNoticeStream($this->target, $this->scoped);
} else { } else {
$stream = new TaggedProfileNoticeStream($this->profile, $this->tag, $this->scoped); $stream = new TaggedProfileNoticeStream($this->target, $this->tag, $this->scoped);
} }
$this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); $this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
...@@ -75,7 +73,7 @@ class ShowstreamAction extends ProfileAction ...@@ -75,7 +73,7 @@ class ShowstreamAction extends ProfileAction
function title() function title()
{ {
$base = $this->profile->getFancyName(); $base = $this->target->getFancyName();
if (!empty($this->tag)) { if (!empty($this->tag)) {
if ($this->page == 1) { if ($this->page == 1) {
// TRANS: Page title showing tagged notices in one user's timeline. // TRANS: Page title showing tagged notices in one user's timeline.
...@@ -106,7 +104,7 @@ class ShowstreamAction extends ProfileAction ...@@ -106,7 +104,7 @@ class ShowstreamAction extends ProfileAction
function showProfileBlock() function showProfileBlock()
{ {
$block = new AccountProfileBlock($this, $this->profile); $block = new AccountProfileBlock($this, $this->target);
$block->show(); $block->show();
} }
...@@ -120,12 +118,12 @@ class ShowstreamAction extends ProfileAction ...@@ -120,12 +118,12 @@ class ShowstreamAction extends ProfileAction
if (!empty($this->tag)) { if (!empty($this->tag)) {
return array(new Feed(Feed::RSS1, return array(new Feed(Feed::RSS1,
common_local_url('userrss', common_local_url('userrss',
array('nickname' => $this->target->nickname, array('nickname' => $this->target->getNickname(),
'tag' => $this->tag)), 'tag' => $this->tag)),
// TRANS: Title for link to notice feed. // TRANS: Title for link to notice feed.
// TRANS: %1$s is a user nickname, %2$s is a hashtag. // TRANS: %1$s is a user nickname, %2$s is a hashtag.
sprintf(_('Notice feed for %1$s tagged %2$s (RSS 1.0)'), sprintf(_('Notice feed for %1$s tagged %2$s (RSS 1.0)'),
$this->target->nickname, $this->tag))); $this->target->getNickname(), $this->tag)));
} }
return array(new Feed(Feed::JSON, return array(new Feed(Feed::JSON,
...@@ -136,14 +134,14 @@ class ShowstreamAction extends ProfileAction ...@@ -136,14 +134,14 @@ class ShowstreamAction extends ProfileAction
// TRANS: Title for link to notice feed. // TRANS: Title for link to notice feed.
// TRANS: %s is a user nickname. // TRANS: %s is a user nickname.
sprintf(_('Notice feed for %s (Activity Streams JSON)'), sprintf(_('Notice feed for %s (Activity Streams JSON)'),
$this->target->nickname)), $this->target->getNickname())),
new Feed(Feed::RSS1, new Feed(Feed::RSS1,
common_local_url('userrss', common_local_url('userrss',
array('nickname' => $this->target->nickname)), array('nickname' => $this->target->getNickname())),
// TRANS: Title for link to notice feed. // TRANS: Title for link to notice feed.
// TRANS: %s is a user nickname. // TRANS: %s is a user nickname.
sprintf(_('Notice feed for %s (RSS 1.0)'), sprintf(_('Notice feed for %s (RSS 1.0)'),
$this->target->nickname)), $this->target->getNickname())),
new Feed(Feed::RSS2, new Feed(Feed::RSS2,
common_local_url('ApiTimelineUser', common_local_url('ApiTimelineUser',
array( array(
...@@ -152,7 +150,7 @@ class ShowstreamAction extends ProfileAction ...@@ -152,7 +150,7 @@ class ShowstreamAction extends ProfileAction
// TRANS: Title for link to notice feed. // TRANS: Title for link to notice feed.
// TRANS: %s is a user nickname. // TRANS: %s is a user nickname.
sprintf(_('Notice feed for %s (RSS 2.0)'), sprintf(_('Notice feed for %s (RSS 2.0)'),
$this->target->nickname)), $this->target->getNickname())),
new Feed(Feed::ATOM, new Feed(Feed::ATOM,
common_local_url('ApiTimelineUser', common_local_url('ApiTimelineUser',
array( array(
...@@ -161,24 +159,24 @@ class ShowstreamAction extends ProfileAction ...@@ -161,24 +159,24 @@ class ShowstreamAction extends ProfileAction
// TRANS: Title for link to notice feed. // TRANS: Title for link to notice feed.
// TRANS: %s is a user nickname. // TRANS: %s is a user nickname.
sprintf(_('Notice feed for %s (Atom)'), sprintf(_('Notice feed for %s (Atom)'),
$this->target->nickname)), $this->target->getNickname())),
new Feed(Feed::FOAF, new Feed(Feed::FOAF,
common_local_url('foaf', array('nickname' => common_local_url('foaf', array('nickname' =>
$this->target->nickname)), $this->target->getNickname())),
// TRANS: Title for link to notice feed. FOAF stands for Friend of a Friend. // TRANS: Title for link to notice feed. FOAF stands for Friend of a Friend.
// TRANS: More information at http://www.foaf-project.org. %s is a user nickname. // TRANS: More information at http://www.foaf-project.org. %s is a user nickname.
sprintf(_('FOAF for %s'), $this->target->nickname))); sprintf(_('FOAF for %s'), $this->target->getNickname())));
} }
function extraHead() function extraHead()
{ {
if ($this->profile->bio) { if ($this->target->bio) {
$this->element('meta', array('name' => 'description', $this->element('meta', array('name' => 'description',
'content' => $this->profile->bio)); 'content' => $this->target->getDescription()));
} }
if ($this->user->emailmicroid && $this->user->email && $this->profile->profileurl) { if ($this->target->isLocal() && $this->target->getUser()->emailmicroid && $this->target->getUser()->email && $this->target->getUrl()) {
$id = new Microid('mailto:'.$this->user->email, $id = new Microid('mailto:'.$this->target->getUser()->email,
$this->selfUrl()); $this->selfUrl());
$this->element('meta', array('name' => 'microid', $this->element('meta', array('name' => 'microid',
'content' => $id->toString())); 'content' => $id->toString()));
...@@ -188,10 +186,10 @@ class ShowstreamAction extends ProfileAction ...@@ -188,10 +186,10 @@ class ShowstreamAction extends ProfileAction
$this->element('link', array('rel' => 'microsummary', $this->element('link', array('rel' => 'microsummary',
'href' => common_local_url('microsummary', 'href' => common_local_url('microsummary',
array('nickname' => $this->profile->nickname)))); array('nickname' => $this->target->getNickname()))));
$rsd = common_local_url('rsd', $rsd = common_local_url('rsd',
array('nickname' => $this->profile->nickname)); array('nickname' => $this->target->getNickname()));
// RSD, http://tales.phrasewise.com/rfc/rsd // RSD, http://tales.phrasewise.com/rfc/rsd
$this->element('link', array('rel' => 'EditURI', $this->element('link', array('rel' => 'EditURI',
...@@ -200,7 +198,7 @@ class ShowstreamAction extends ProfileAction ...@@ -200,7 +198,7 @@ class ShowstreamAction extends ProfileAction
if ($this->page != 1) { if ($this->page != 1) {
$this->element('link', array('rel' => 'canonical', $this->element('link', array('rel' => 'canonical',
'href' => $this->profile->profileurl)); 'href' => $this->target->getUrl()));
} }
} }
...@@ -284,10 +282,9 @@ class ShowstreamAction extends ProfileAction ...@@ -284,10 +282,9 @@ class ShowstreamAction extends ProfileAction
function noticeFormOptions() function noticeFormOptions()
{ {
$options = parent::noticeFormOptions(); $options = parent::noticeFormOptions();
$cur = common_current_user();
if (empty($cur) || $cur->id != $this->profile->id) { if (!$this->scoped instanceof Profile || $this->scoped->id != $this->target->id) {
$options['to_profile'] = $this->profile; $options['to_profile'] = $this->target;
} }
return $options; return $options;
...@@ -329,20 +326,23 @@ class ProfileNoticeListItem extends DoFollowListItem ...@@ -329,20 +326,23 @@ class ProfileNoticeListItem extends DoFollowListItem
// FIXME: this code is almost identical to default; need to refactor // FIXME: this code is almost identical to default; need to refactor
$attrs = array('href' => $this->profile->profileurl, $attrs = array();
'class' => 'url'); if (!empty($this->target->fullname)) {
$attrs['title'] = $this->target->getFullname();
}
if (!empty($this->profile->fullname)) { try {
$attrs['title'] = $this->profile->getFancyName(); $attrs = array('href' => $this->target->getUrl(),
'class' => 'url');
$text_tag = 'a';
} catch (InvalidUrlException $e) {
$text_tag = 'abbr';
} }
$this->out->elementStart('span', 'repeat'); $this->out->elementStart('span', 'repeat');
$text_link = XMLStringer::estring($text_tag, $attrs, $this->target->getNickname());
$text_link = XMLStringer::estring('a', $attrs, $this->profile->nickname);
// TRANS: Link to the author of a repeated notice. %s is a linked nickname. // TRANS: Link to the author of a repeated notice. %s is a linked nickname.
$this->out->raw(sprintf(_('Repeat of %s'), $text_link)); $this->out->raw(sprintf(_('Repeat of %s'), $text_link));
$this->out->elementEnd('span'); $this->out->elementEnd('span');
} }
} }
......
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
if (!defined('GNUSOCIAL')) { exit(1); } if (!defined('GNUSOCIAL')) { exit(1); }
require_once INSTALLDIR . '/lib/peopletags.php';
class TagprofileAction extends FormAction class TagprofileAction extends FormAction
{ {
var $error = null; var $error = null;
......
...@@ -28,13 +28,7 @@ ...@@ -28,13 +28,7 @@
* @link http://status.net/ * @link http://status.net/
*/ */
if (!defined('STATUSNET')) { if (!defined('GNUSOCIAL')) { exit(1); }
// This check helps protect against security problems;
// your code file can't be executed directly from the web.
exit(1);
}
require_once INSTALLDIR.'/lib/peopletags.php';
/** /**
* Profile block to show for an account * Profile block to show for an account
......
...@@ -25,11 +25,7 @@ ...@@ -25,11 +25,7 @@
* @link http://status.net/ * @link http://status.net/
*/ */
if (!defined('STATUSNET') && !defined('LACONICA')) { if (!defined('GNUSOCIAL')) { exit(1); }
exit(1);
}
require_once INSTALLDIR.'/lib/widget.php';
/* /*
* Show a bunch of peopletags * Show a bunch of peopletags
...@@ -178,18 +174,3 @@ class PeopletagsWidget extends Widget ...@@ -178,18 +174,3 @@ class PeopletagsWidget extends Widget
return !empty($this->user) && $this->tagger->id == $this->user->id; return !empty($this->user) && $this->tagger->id == $this->user->id;
} }
} }
class SelftagsWidget extends PeopletagsWidget
{
function url($tag)
{
// link to self tag page
return common_local_url('selftag', array('tag' => $tag));
}
function label()
{
// TRANS: Label in self tags widget.
return _m('LABEL','Tags');
}
}
...@@ -28,12 +28,7 @@ ...@@ -28,12 +28,7 @@
* @link http://status.net/ * @link http://status.net/
*/ */
if (!defined('STATUSNET') && !defined('LACONICA')) { if (!defined('GNUSOCIAL')) { exit(1); }
exit(1);
}
require_once INSTALLDIR.'/lib/profileminilist.php';
require_once INSTALLDIR.'/lib/groupminilist.php';
/** /**
* Profile action common superclass * Profile action common superclass
...@@ -46,17 +41,15 @@ require_once INSTALLDIR.'/lib/groupminilist.php'; ...@@ -46,17 +41,15 @@ require_once INSTALLDIR.'/lib/groupminilist.php';
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/ * @link http://status.net/
*/ */
class ProfileAction extends ManagedAction abstract class ProfileAction extends ManagedAction
{ {
var $page = null; var $page = null;
var $tag = null; var $tag = null;
protected $target = null; // Profile that we're showing protected $target = null; // Profile that we're showing
protected function prepare(array $args=array()) protected function doPreparation()
{ {
parent::prepare($args);
try { try {
$nickname_arg = $this->arg('nickname'); $nickname_arg = $this->arg('nickname');
$nickname = common_canonical_nickname($nickname_arg); $nickname = common_canonical_nickname($nickname_arg);
...@@ -106,7 +99,13 @@ class ProfileAction extends ManagedAction ...@@ -106,7 +99,13 @@ class ProfileAction extends ManagedAction
$this->tag = $this->trimmed('tag'); $this->tag = $this->trimmed('tag');
$this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
common_set_returnto($this->selfUrl()); common_set_returnto($this->selfUrl());
return true;
return $this->profileActionPreparation();
}
protected function profileActionPreparation()
{
// No-op by default.
} }
function isReadOnly($args) function isReadOnly($args)
......
...@@ -27,11 +27,7 @@ ...@@ -27,11 +27,7 @@
* @link http://status.net/ * @link http://status.net/
*/ */
if (!defined('STATUSNET') && !defined('LACONICA')) { if (!defined('GNUSOCIAL')) { exit(1); }
exit(1);
}
require_once INSTALLDIR.'/lib/peopletags.php';
/** /**
* Widget to show a list of profiles * Widget to show a list of profiles
...@@ -107,215 +103,3 @@ class ProfileList extends Widget ...@@ -107,215 +103,3 @@ class ProfileList extends Widget
return PROFILES_PER_PAGE; return PROFILES_PER_PAGE;
} }
} }
class ProfileListItem extends Widget
{
/** Current profile. */
var $profile = null;
/** Action object using us. */
var $action = null;
function __construct($profile, $action)
{
parent::__construct($action);
$this->profile = $profile;
$this->action = $action;
}
function show()
{
if (Event::handle('StartProfileListItem', array($this))) {
$this->startItem();
if (Event::handle('StartProfileListItemProfile', array($this))) {
$this->showProfile();
Event::handle('EndProfileListItemProfile', array($this));
}
if (Event::handle('StartProfileListItemActions', array($this))) {
$this->showActions();
Event::handle('EndProfileListItemActions', array($this));
}
$this->endItem();
Event::handle('EndProfileListItem', array($this));
}
}
function startItem()
{
$this->out->elementStart('li', array('class' => 'profile',
'id' => 'profile-' . $this->profile->id));
}
function showProfile()
{
$this->startProfile();
if (Event::handle('StartProfileListItemProfileElements', array($this))) {
if (Event::handle('StartProfileListItemAvatar', array($this))) {
$aAttrs = $this->linkAttributes();
$this->out->elementStart('a', $aAttrs);
$this->showAvatar($this->profile);
$this->out->elementEnd('a');
Event::handle('EndProfileListItemAvatar', array($this));
}
if (Event::handle('StartProfileListItemNickname', array($this))) {
$this->showNickname();
Event::handle('EndProfileListItemNickname', array($this));
}
if (Event::handle('StartProfileListItemFullName', array($this))) {
$this->showFullName();
Event::handle('EndProfileListItemFullName', array($this));
}
if (Event::handle('StartProfileListItemLocation', array($this))) {
$this->showLocation();
Event::handle('EndProfileListItemLocation', array($this));
}
if (Event::handle('StartProfileListItemHomepage', array($this))) {
$this->showHomepage();
Event::handle('EndProfileListItemHomepage', array($this));
}
if (Event::handle('StartProfileListItemBio', array($this))) {
$this->showBio();
Event::handle('EndProfileListItemBio', array($this));
}
if (Event::handle('StartProfileListItemTags', array($this))) {
$this->showTags();
Event::handle('EndProfileListItemTags', array($this));
}
Event::handle('EndProfileListItemProfileElements', array($this));
}
$this->endProfile();
}
function startProfile()
{
$this->out->elementStart('div', 'entity_profile h-card');
}
function showNickname()
{
$this->out->element('a', array('href'=>$this->profile->getUrl(),
'class'=>'p-nickname'),
$this->profile->getNickname());
}
function showFullName()
{
if (!empty($this->profile->fullname)) {
$this->out->element('span', 'p-name', $this->profile->fullname);
}
}
function showLocation()
{
if (!empty($this->profile->location)) {
$this->out->element('span', 'label p-locality', $this->profile->location);
}
}
function showHomepage()
{
if (!empty($this->profile->homepage)) {
$this->out->text(' ');
$aAttrs = $this->homepageAttributes();
$this->out->elementStart('a', $aAttrs);
$this->out->raw($this->highlight($this->profile->homepage));
$this->out->elementEnd('a');
}
}
function showBio()
{
if (!empty($this->profile->bio)) {
$this->out->elementStart('p', 'note');
$this->out->raw($this->highlight($this->profile->bio));
$this->out->elementEnd('p');
}
}
function showTags()
{
$user = common_current_user();
if (!empty($user)) {
if ($user->id == $this->profile->id) {
$tags = new SelftagsWidget($this->out, $user, $this->profile);
$tags->show();
} else if ($user->getProfile()->canTag($this->profile)) {
$tags = new PeopletagsWidget($this->out, $user, $this->profile);
$tags->show();
}
}
}
function endProfile()
{
$this->out->elementEnd('div');
}
function showActions()
{
$this->startActions();
if (Event::handle('StartProfileListItemActionElements', array($this))) {
$this->showSubscribeButton();
Event::handle('EndProfileListItemActionElements', array($this));
}
$this->endActions();
}
function startActions()
{
$this->out->elementStart('div', 'entity_actions');
$this->out->elementStart('ul');
}
function showSubscribeButton()
{
// Is this a logged-in user, looking at someone else's
// profile?
$user = common_current_user();
if (!empty($user) && $this->profile->id != $user->id) {
$this->out->elementStart('li', 'entity_subscribe');
if ($user->isSubscribed($this->profile)) {
$usf = new UnsubscribeForm($this->out, $this->profile);
$usf->show();
} else {
if (Event::handle('StartShowProfileListSubscribeButton', array($this))) {
$sf = new SubscribeForm($this->out, $this->profile);
$sf->show();
Event::handle('EndShowProfileListSubscribeButton', array($this));
}
}
$this->out->elementEnd('li');
}
}
function endActions()
{
$this->out->elementEnd('ul');
$this->out->elementEnd('div');
}
function endItem()
{
$this->out->elementEnd('li');
}