diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/action.php | 46 | ||||
-rw-r--r-- | lib/popularnoticesection.php | 25 |
2 files changed, 63 insertions, 8 deletions
diff --git a/lib/action.php b/lib/action.php index 1ba062812..b9e8ee6c1 100644 --- a/lib/action.php +++ b/lib/action.php @@ -124,6 +124,7 @@ class Action extends HTMLOutputter // lawsuit $this->showShortcutIcon(); $this->showStylesheets(); $this->showScripts(); + $this->showRelationshipLinks(); $this->showOpenSearch(); $this->showFeeds(); $this->showDescription(); @@ -265,6 +266,19 @@ class Action extends HTMLOutputter // lawsuit } /** + * Show document relationship links + * + * SHOULD overload + * + * @return nothing + */ + function showRelationshipLinks() + { + // output <link> elements with appropriate HTML4.01 link types: + // http://www.w3.org/TR/html401/types.html#type-links + } + + /** * Show OpenSearch headers * * @return nothing @@ -1042,4 +1056,36 @@ class Action extends HTMLOutputter // lawsuit { return null; } + + /** + * Generate document metadata for sequential navigation + * + * @param boolean $have_before is there something before? + * @param boolean $have_after is there something after? + * @param integer $page current page + * @param string $action current action + * @param array $args rest of query arguments + * + * @return nothing + */ + function sequenceRelationships($have_next, $have_previous, $page, $action, $args=null) + { + // Outputs machine-readable pagination in <link> elements. + // Pattern taken from $this->pagination() method. + + // "next" is equivalent to "after" + if ($have_next) { + $pargs = array('page' => $page-1); + $this->element('link', array('rel' => 'next', + 'href' => common_local_url($action, $args, $pargs), + 'title' => _('Next'))); + } + // "previous" is equivalent to "before" + if ($have_previous=true) { // FIXME + $pargs = array('page' => $page+1); + $this->element('link', array('rel' => 'prev', + 'href' => common_local_url($action, $args, $pargs), + 'title' => _('Previous'))); + } + } } 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; |