X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffavorited.php;h=ff4a99cd60742bb234dd388a811e44db77787f92;hb=c075b9f73068066897f2d42cdbcf1be1bf812380;hp=27da25435b7921c8dc3972cfa88382838a475a12;hpb=5385692ff37e619de29e3c811a01c1a62414dd6f;p=quix0rs-gnu-social.git diff --git a/actions/favorited.php b/actions/favorited.php index 27da25435b..ff4a99cd60 100644 --- a/actions/favorited.php +++ b/actions/favorited.php @@ -1,6 +1,6 @@ . * * @category Public - * @package Laconica - * @author Zach Copley - * @author Evan Prodromou - * @copyright 2008-2009 Control Yourself, Inc. + * @package StatusNet + * @author Zach Copley + * @author Evan Prodromou + * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -42,13 +42,12 @@ require_once INSTALLDIR.'/lib/noticelist.php'; * is measured by * * @category Personal - * @package Laconica - * @author Zach Copley - * @author Evan Prodromou + * @package StatusNet + * @author Zach Copley + * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ - class FavoritedAction extends Action { var $page = null; @@ -62,8 +61,11 @@ class FavoritedAction extends Action function title() { if ($this->page == 1) { + // TRANS: Page title for first page of favorited notices. return _('Popular notices'); } else { + // TRANS: Page title for all but first page of favorited notices. + // TRANS: %d is the page number being displayed. return sprintf(_('Popular notices, page %d'), $this->page); } } @@ -73,9 +75,9 @@ class FavoritedAction extends Action * * @return instructions for use */ - function getInstructions() { + // TRANS: Description on page displaying favorited notices. return _('The most popular notices on the site right now.'); } @@ -84,8 +86,7 @@ class FavoritedAction extends Action * * @return boolean true */ - - function isReadOnly() + function isReadOnly($args) { return true; } @@ -99,14 +100,13 @@ class FavoritedAction extends Action * * @todo move queries from showContent() to here */ - function prepare($args) { parent::prepare($args); $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; - + common_set_returnto($this->selfUrl()); - + return true; } @@ -119,7 +119,6 @@ class FavoritedAction extends Action * * @return void */ - function handle($args) { parent::handle($args); @@ -134,7 +133,6 @@ class FavoritedAction extends Action * * @return void */ - function showPageNotice() { $instr = $this->getInstructions(); @@ -143,19 +141,20 @@ class FavoritedAction extends Action $this->elementStart('div', 'instructions'); $this->raw($output); $this->elementEnd('div'); + } - $favorite = new Fave; - - if ($favorite->count()) { - return; - } - + function showEmptyList() + { + // TRANS: Text displayed instead of a list when a site does not yet have any favourited notices. $message = _('Favorite notices appear on this page but no one has favorited one yet.') . ' '; if (common_logged_in()) { + // TRANS: Additional text displayed instead of a list when a site does not yet have any favourited notices for logged in users. $message .= _('Be the first to add a notice to your favorites by clicking the fave button next to any notice you like.'); } else { + // TRANS: Additional text displayed instead of a list when a site does not yet have any favourited notices for not logged in users. + // TRANS: %%action.register%% is a registration link. "[link text](link)" is Mark Down. Do not change the formatting. $message .= _('Why not [register an account](%%action.register%%) and be the first to add a notice to your favorites!'); } @@ -164,20 +163,6 @@ class FavoritedAction extends Action $this->elementEnd('div'); } - /** - * Local navigation - * - * This page is part of the public group, so show that. - * - * @return void - */ - - function showLocalNav() - { - $nav = new PublicGroupNav($this); - $nav->show(); - } - /** * Content area * @@ -185,38 +170,19 @@ class FavoritedAction extends Action * * @return void */ - function showContent() { - if (common_config('db', 'type') == 'pgsql') { - $weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))'; - } else { - $weightexpr='sum(exp(-(now() - fave.modified) / %s))'; - } - - $qry = 'SELECT notice.*, '. - $weightexpr . ' as weight ' . - 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . - 'GROUP BY id,profile_id,uri,content,rendered,url,created,notice.modified,reply_to,is_local,source ' . - 'ORDER BY weight DESC'; - - $offset = ($this->page - 1) * NOTICES_PER_PAGE; - $limit = NOTICES_PER_PAGE + 1; - - if (common_config('db', 'type') == 'pgsql') { - $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; - } else { - $qry .= ' LIMIT ' . $offset . ', ' . $limit; - } - - $notice = Memcached_DataObject::cachedQuery('Notice', - sprintf($qry, common_config('popular', 'dropoff')), - 600); + $stream = new PopularNoticeStream(Profile::current()); + $notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE+1); $nl = new NoticeList($notice, $this); $cnt = $nl->show(); + if ($cnt == 0) { + $this->showEmptyList(); + } + $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE, $this->page, 'favorited'); }