summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Millette <millette@controlyourself.ca>2009-04-14 23:03:19 +0000
committerRobin Millette <millette@controlyourself.ca>2009-04-14 23:03:19 +0000
commit20394664957a202cc86cc48ee2d115032e82c58a (patch)
treebbce4d5bd0bb522d01e694eae9eb6baf843396a8
parent60245f6a27a21ecfc90a2be76fee657e8c696f96 (diff)
trac#1223 Show most popular notices per tag in the tag page sidebar.
-rw-r--r--actions/tag.php7
-rw-r--r--lib/popularnoticesection.php25
2 files changed, 24 insertions, 8 deletions
diff --git a/actions/tag.php b/actions/tag.php
index d15f64498..cb6572b96 100644
--- a/actions/tag.php
+++ b/actions/tag.php
@@ -45,6 +45,13 @@ class TagAction extends Action
return true;
}
+ function showSections()
+ {
+ $pop = new PopularNoticeSection($this);
+ $pop->show();
+ }
+
+
function title()
{
if ($this->page == 1) {
diff --git a/lib/popularnoticesection.php b/lib/popularnoticesection.php
index 0505f0fa9..a8d47ef54 100644
--- a/lib/popularnoticesection.php
+++ b/lib/popularnoticesection.php
@@ -50,17 +50,26 @@ class PopularNoticeSection extends NoticeSection
{
if (common_config('db', 'type') == 'pgsql') {
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
+ if (!empty($this->out->tag)) {
+ $tag = pg_escape_string($this->tag);
+ }
} else {
$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 ' .
- 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
- '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';
+ $qry = "SELECT notice.*, $weightexpr as weight ";
+ if(isset($tag)) {
+ $qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
+ "WHERE notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag";
+ } else {
+ $qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id';
+ }
+ $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;
$limit = NOTICES_PER_SECTION + 1;