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
|
<?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: ProjectSearchQuery.class 5270 2006-02-05 17:12:19Z tperdue $
*/
require_once('common/search/SearchQuery.class');
class ProjectSearchQuery 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 ProjectSearchQuery($words, $offset, $isExact) {
$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) {
$sql = "SELECT * FROM groups_search('".$this->getFormattedWords()."')";
} 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, group_id, short_description '
.'FROM groups '
.'WHERE status IN (\'A\', \'H\') '
.'AND is_public=\'1\' '
.'AND (('.$groupNameCond.') OR ('.$groupDescriptionCond.') OR ('.$groupUnixNameCond.'))';
}
return $sql;
}
}
?>
|