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
|
<?php
/**
* GForge Search Engine
*
* Portions Copyright 1999-2001 (c) VA Linux Systems
* The rest Copyright 2004 (c) Guillaume Smet / Open Wide
*
* http://gforge.org
*
* @version $Id: ExportProjectSearchQuery.class 5273 2006-02-08 18:47:59Z danper $
*/
require_once('common/search/SearchQuery.class');
class ExportProjectSearchQuery extends SearchQuery {
/**
* 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
*/
function ExportProjectSearchQuery($words, $offset, $isExact) {
$this->SearchQuery($words, $offset, $isExact, 200);
}
/**
* 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();
$sql = "SELECT headline(group_name, q) as group_name,
headline(unix_group_name, q) as unix_group_name,
type_id,groups.group_id,headline(short_description, q) as short_description,
license,register_time FROM groups, to_tsquery('$words') AS q, groups_idx
WHERE groups.group_id = groups_idx.group_id AND vectors @@ q AND
status IN ('A', 'H') AND is_public='1' AND short_description <> ''
ORDER BY rank(vectors, q) DESC";
} else {
$groupNameCond = $this->getIlikeCondition('group_name', $this->words);
$groupDescriptionCond = $this->getIlikeCondition('short_description', $this->words);
$groupUnixNameCond = $this->getIlikeCondition('unix_group_name', $this->words);
$sql = 'SELECT group_name,unix_group_name,type_id,groups.group_id, '
.'short_description,license,register_time '
.'FROM groups '
.'WHERE status IN (\'A\', \'H\') '
.'AND is_public=\'1\' '
.'AND groups.short_description<>\'\' '
.'AND (('.$groupNameCond.') OR ('.$groupDescriptionCond.') OR ('.$groupUnixNameCond.'))';
}
return $sql;
}
}
?>
|