forked from GNUsocial/gnu-social
		
	trac#1223 Show most popular notices per tag in the tag page sidebar.
This commit is contained in:
		@@ -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,14 +50,23 @@ 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.*, '.
 | 
					        $qry = "SELECT notice.*, $weightexpr as weight ";
 | 
				
			||||||
          $weightexpr . ' as weight ' .
 | 
					        if(isset($tag)) {
 | 
				
			||||||
          'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
 | 
					            $qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
 | 
				
			||||||
          'GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
 | 
					                    "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.rendered,notice.url,notice.created,notice.modified,' .
 | 
				
			||||||
                'notice.reply_to,notice.is_local,notice.source ' .
 | 
					                'notice.reply_to,notice.is_local,notice.source ' .
 | 
				
			||||||
                'ORDER BY weight DESC';
 | 
					                'ORDER BY weight DESC';
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user