$nli->showNoticeSource();
$nli->showNoticeLocation();
$nli->showPermalink();
- $nli->showRepeat();
$nli->showNoticeOptions();
}
{
$base = $this->twitterSimpleStatusArray($notice, $include_user);
+ // FIXME: MOVE TO SHARE PLUGIN
if (!empty($notice->repeat_of)) {
$original = Notice::getKV('id', $notice->repeat_of);
if ($original instanceof Notice) {
$twitter_status['geo'] = null;
}
- if (!is_null($this->scoped)) {
- $twitter_status['repeated'] = $this->scoped->hasRepeated($notice);
- } else {
- $twitter_status['repeated'] = false;
- }
-
// Enclosures
$attachments = $notice->attachments();
$this->showGeoXML($value);
break;
case 'retweeted_status':
+ // FIXME: MOVE TO SHARE PLUGIN
$this->showTwitterXmlStatus($value, 'retweeted_status');
break;
default:
$this->showNoticeSource();
$this->showNoticeLocation();
$this->showPermalink();
- $this->showRepeat();
Event::handle('EndShowNoticeInfo', array($this));
}
}
}
}
- /**
- * show a link to the author of repeat
- *
- * @return void
- */
- function showRepeat()
- {
- if (!empty($this->repeat)) {
-
- $repeater = Profile::getKV('id', $this->repeat->profile_id);
-
- $attrs = array('href' => $repeater->profileurl,
- 'class' => 'h-card p-author',
- 'title' => $repeater->getFancyName());
-
- $this->out->elementStart('span', 'repeat h-entry');
-
- // TRANS: Addition in notice list item if notice was repeated. Followed by a span with a nickname.
- $this->out->raw(_('Repeated by').' ');
-
- $this->out->element('a', $attrs, $repeater->getNickname());
-
- $this->out->elementEnd('span');
- }
- }
-
/**
* show a link to reply to the current notice
*
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2011, StatusNet, Inc.
- *
- * Stream of notices repeated by me
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Stream
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * Stream of notices repeated by me
- *
- * @category General
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-class RepeatedByMeNoticeStream extends ScopingNoticeStream
-{
- function __construct($user, $profile = -1)
- {
- if (is_int($profile) && $profile == -1) {
- $profile = Profile::current();
- }
- parent::__construct(new CachingNoticeStream(new RawRepeatedByMeNoticeStream($user),
- 'user:repeated_by_me:'.$user->id),
- $profile);
- }
-}
-
-/**
- * Raw stream of notices repeated by me
- *
- * @category General
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-class RawRepeatedByMeNoticeStream extends NoticeStream
-{
- protected $user;
-
- function __construct($user)
- {
- $this->user = $user;
- }
-
- function getNoticeIds($offset, $limit, $since_id, $max_id)
- {
- $notice = new Notice();
-
- $notice->selectAdd(); // clears it
- $notice->selectAdd('id');
-
- $notice->profile_id = $this->user->id;
- $notice->whereAdd('repeat_of IS NOT NULL');
-
- $notice->orderBy('created DESC, id DESC');
-
- if (!is_null($offset)) {
- $notice->limit($offset, $limit);
- }
-
- Notice::addWhereSinceId($notice, $since_id);
- Notice::addWhereMaxId($notice, $max_id);
-
- $ids = array();
-
- if ($notice->find()) {
- while ($notice->fetch()) {
- $ids[] = $notice->id;
- }
- }
-
- $notice->free();
- $notice = NULL;
-
- return $ids;
- }
-}
\ No newline at end of file
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2011, StatusNet, Inc.
- *
- * Stream of notices that are repeats of mine
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Stream
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * Stream of notices that are repeats of mine
- *
- * @category Stream
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-class RepeatsOfMeNoticeStream extends ScopingNoticeStream
-{
- function __construct($user, $profile=-1)
- {
- if (is_int($profile) && $profile == -1) {
- $profile = Profile::current();
- }
- parent::__construct(new CachingNoticeStream(new RawRepeatsOfMeNoticeStream($user),
- 'user:repeats_of_me:'.$user->id),
- $profile);
- }
-}
-
-/**
- * Raw stream of notices that are repeats of mine
- *
- * @category Stream
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-class RawRepeatsOfMeNoticeStream extends NoticeStream
-{
- protected $user;
-
- function __construct($user)
- {
- $this->user = $user;
- }
-
- function getNoticeIds($offset, $limit, $since_id, $max_id)
- {
- $qry =
- 'SELECT DISTINCT original.id AS id ' .
- 'FROM notice original JOIN notice rept ON original.id = rept.repeat_of ' .
- 'WHERE original.profile_id = ' . $this->user->id . ' ';
-
- $since = Notice::whereSinceId($since_id, 'original.id', 'original.created');
- if ($since) {
- $qry .= "AND ($since) ";
- }
-
- $max = Notice::whereMaxId($max_id, 'original.id', 'original.created');
- if ($max) {
- $qry .= "AND ($max) ";
- }
-
- $qry .= 'ORDER BY original.created, original.id DESC ';
-
- if (!is_null($offset)) {
- $qry .= "LIMIT $limit OFFSET $offset";
- }
-
- $ids = array();
-
- $notice = new Notice();
-
- $notice->query($qry);
-
- while ($notice->fetch()) {
- $ids[] = $notice->id;
- }
-
- $notice->free();
- $notice = NULL;
-
- return $ids;
- }
-}
$nli->showNoticeSource();
$nli->showNoticeLocation();
$nli->showPermalink();
- $nli->showRepeat();
$nli->showNoticeOptions();
// Layout stuff
+ /**
+ * show a link to the author of repeat
+ *
+ * FIXME: Some repeat stuff still in lib/noticelistitem.php! ($nli->repeat etc.)
+ */
+ public function onEndShowNoticeInfo(NoticeListItem $nli)
+ {
+ if (!empty($nli->repeat)) {
+ $repeater = $nli->repeat->getProfile();
+
+ $attrs = array('href' => $repeater->getUrl(),
+ 'class' => 'h-card p-author',
+ 'title' => $repeater->getFancyName());
+
+ $nli->out->elementStart('span', 'repeat h-entry');
+
+ // TRANS: Addition in notice list item if notice was repeated. Followed by a span with a nickname.
+ $nli->out->raw(_('Repeated by').' ');
+
+ $nli->out->element('a', $attrs, $repeater->getNickname());
+
+ $nli->out->elementEnd('span');
+ }
+ }
+
public function onEndShowThreadedNoticeTailItems(NoticeListItem $nli, Notice $notice, &$threadActive)
{
if ($nli instanceof ThreadedNoticeListSubItem) {
// pass
}
+ // API stuff
+
+ /**
+ * Typically just used to fill out Twitter-compatible API status data.
+ *
+ * FIXME: Make all the calls before this end up with a Notice instead of ArrayWrapper please...
+ */
+ public function onNoticeSimpleStatusArray($notice, array &$status, Profile $scoped=null, array $args=array())
+ {
+ if ($scoped instanceof Profile) {
+ $status['repeated'] = $scoped->hasRepeated($notice);
+ } else {
+ $status['repeated'] = false;
+ }
+ }
+
+ public function onTwitterUserArray(Profile $profile, array &$userdata, Profile $scoped=null, array $args=array())
+ {
+ $userdata['favourites_count'] = Fave::countByProfile($profile);
+ }
+
+ // Command stuff
+
/**
* EndInterpretCommand for RepeatPlugin will handle the 'repeat' command
* using the class RepeatCommand.
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * Stream of notices repeated by me
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Stream
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Stream of notices repeated by me
+ *
+ * @category General
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class RepeatedByMeNoticeStream extends ScopingNoticeStream
+{
+ function __construct($user, $profile = -1)
+ {
+ if (is_int($profile) && $profile == -1) {
+ $profile = Profile::current();
+ }
+ parent::__construct(new CachingNoticeStream(new RawRepeatedByMeNoticeStream($user),
+ 'user:repeated_by_me:'.$user->id),
+ $profile);
+ }
+}
+
+/**
+ * Raw stream of notices repeated by me
+ *
+ * @category General
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class RawRepeatedByMeNoticeStream extends NoticeStream
+{
+ protected $user;
+
+ function __construct($user)
+ {
+ $this->user = $user;
+ }
+
+ function getNoticeIds($offset, $limit, $since_id, $max_id)
+ {
+ $notice = new Notice();
+
+ $notice->selectAdd(); // clears it
+ $notice->selectAdd('id');
+
+ $notice->profile_id = $this->user->id;
+ $notice->whereAdd('repeat_of IS NOT NULL');
+
+ $notice->orderBy('created DESC, id DESC');
+
+ if (!is_null($offset)) {
+ $notice->limit($offset, $limit);
+ }
+
+ Notice::addWhereSinceId($notice, $since_id);
+ Notice::addWhereMaxId($notice, $max_id);
+
+ $ids = array();
+
+ if ($notice->find()) {
+ while ($notice->fetch()) {
+ $ids[] = $notice->id;
+ }
+ }
+
+ $notice->free();
+ $notice = NULL;
+
+ return $ids;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * Stream of notices that are repeats of mine
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Stream
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Stream of notices that are repeats of mine
+ *
+ * @category Stream
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class RepeatsOfMeNoticeStream extends ScopingNoticeStream
+{
+ function __construct($user, $profile=-1)
+ {
+ if (is_int($profile) && $profile == -1) {
+ $profile = Profile::current();
+ }
+ parent::__construct(new CachingNoticeStream(new RawRepeatsOfMeNoticeStream($user),
+ 'user:repeats_of_me:'.$user->id),
+ $profile);
+ }
+}
+
+/**
+ * Raw stream of notices that are repeats of mine
+ *
+ * @category Stream
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+class RawRepeatsOfMeNoticeStream extends NoticeStream
+{
+ protected $user;
+
+ function __construct($user)
+ {
+ $this->user = $user;
+ }
+
+ function getNoticeIds($offset, $limit, $since_id, $max_id)
+ {
+ $qry =
+ 'SELECT DISTINCT original.id AS id ' .
+ 'FROM notice original JOIN notice rept ON original.id = rept.repeat_of ' .
+ 'WHERE original.profile_id = ' . $this->user->id . ' ';
+
+ $since = Notice::whereSinceId($since_id, 'original.id', 'original.created');
+ if ($since) {
+ $qry .= "AND ($since) ";
+ }
+
+ $max = Notice::whereMaxId($max_id, 'original.id', 'original.created');
+ if ($max) {
+ $qry .= "AND ($max) ";
+ }
+
+ $qry .= 'ORDER BY original.created, original.id DESC ';
+
+ if (!is_null($offset)) {
+ $qry .= "LIMIT $limit OFFSET $offset";
+ }
+
+ $ids = array();
+
+ $notice = new Notice();
+
+ $notice->query($qry);
+
+ while ($notice->fetch()) {
+ $ids[] = $notice->id;
+ }
+
+ $notice->free();
+ $notice = NULL;
+
+ return $ids;
+ }
+}