1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<?php
/**
* GForge Search Engine
*
* Copyright 2004 (c) Dominik Haas, GForge Team
*
* http://gforge.org
*
* @version $Id: NewsSearchQuery.class 5273 2006-02-08 18:47:59Z danper $
*/
require_once('common/search/SearchQuery.class');
class NewsSearchQuery extends SearchQuery {
/**
* group id
*
* @var int $groupId
*/
var $groupId;
/**
* Constructor
*
* @param string $words words we are searching for
* @param int $offset offset
* @param boolean $isExact if we want to search for all the words or if only one matching the query is sufficient
* @param int $groupId group id
*/
function NewsSearchQuery($words, $offset, $isExact, $groupId) {
$this->groupId = $groupId;
$this->SearchQuery($words, $offset, $isExact);
}
/**
* getQuery - get the sql query built to get the search results
*
* @return string sql query to execute
*/
function getQuery() {
global $sys_use_fti;
if ($sys_use_fti) {
$words = $this->getFormattedWords();
$group_id=$this->groupId;
$sql = "SELECT headline(news_bytes.summary, q) as summary,
news_bytes.post_date,
news_bytes.forum_id,
users.realname
FROM news_bytes, users, to_tsquery('$words') AS q, news_bytes_idx
WHERE (news_bytes.group_id='$group_id' AND news_bytes.is_approved <> '4'
AND news_bytes_idx.id = news_bytes.id
AND news_bytes.submitted_by=users.user_id) AND
(vectors @@ q)
ORDER BY rank(vectors, q) DESC";
} else {
$sql = 'SELECT news_bytes.summary, news_bytes.post_date, news_bytes.forum_id, users.realname'
. ' FROM news_bytes, users'
. ' WHERE (group_id='.$this->groupId.' AND is_approved <> \'4\' AND news_bytes.submitted_by = users.user_id'
. ' AND (('.$this->getIlikeCondition('summary', $this->words).')'
. ' OR ('.$this->getIlikeCondition('details', $this->words).')))'
. ' ORDER BY post_date DESC';
}
return $sql;
}
}
?>
|