trac#1223 Show most popular notices per tag in the tag page sidebar.
This commit is contained in:
parent
60245f6a27
commit
2039466495
|
@ -45,6 +45,13 @@ class TagAction extends Action
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showSections()
|
||||||
|
{
|
||||||
|
$pop = new PopularNoticeSection($this);
|
||||||
|
$pop->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
if ($this->page == 1) {
|
if ($this->page == 1) {
|
||||||
|
|
|
@ -50,17 +50,26 @@ class PopularNoticeSection extends NoticeSection
|
||||||
{
|
{
|
||||||
if (common_config('db', 'type') == 'pgsql') {
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||||
|
if (!empty($this->out->tag)) {
|
||||||
|
$tag = pg_escape_string($this->tag);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||||
|
if (!empty($this->out->tag)) {
|
||||||
|
$tag = mysql_escape_string($this->out->tag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
$qry = "SELECT notice.*, $weightexpr as weight ";
|
||||||
$qry = 'SELECT notice.*, '.
|
if(isset($tag)) {
|
||||||
$weightexpr . ' as weight ' .
|
$qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
"WHERE notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag";
|
||||||
'GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
} else {
|
||||||
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
$qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id';
|
||||||
'notice.reply_to,notice.is_local,notice.source ' .
|
}
|
||||||
'ORDER BY weight DESC';
|
$qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
||||||
|
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
||||||
|
'notice.reply_to,notice.is_local,notice.source ' .
|
||||||
|
'ORDER BY weight DESC';
|
||||||
|
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
$limit = NOTICES_PER_SECTION + 1;
|
$limit = NOTICES_PER_SECTION + 1;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user