Fixed issue 62, crash when searching in the issues.
The issue search is now correctly limiting the search to the issues.
This commit is contained in:
parent
d8870e6df0
commit
c86cf6e5f1
@ -43,10 +43,11 @@ class IDF_Search extends Pluf_Search
|
||||
*
|
||||
* @param string Query string.
|
||||
* @param int Project id to limit the results (null)
|
||||
* @param string Stemmer class.
|
||||
* @return array Results.
|
||||
* @param string Model class (null)
|
||||
* @param string Stemmer class ('Pluf_Text_Stemmer_Porter')
|
||||
* @return array Results
|
||||
*/
|
||||
public static function mySearch($query, $project=null, $stemmer='Pluf_Text_Stemmer_Porter')
|
||||
public static function mySearch($query, $project=null, $model=null, $stemmer='Pluf_Text_Stemmer_Porter')
|
||||
{
|
||||
$query = Pluf_Text::cleanString(html_entity_decode($query, ENT_QUOTES, 'UTF-8'));
|
||||
$words = Pluf_Text::tokenize($query);
|
||||
@ -61,7 +62,7 @@ class IDF_Search extends Pluf_Search
|
||||
if (in_array(null, $word_ids)) {
|
||||
return array();
|
||||
}
|
||||
return self::mySearchDocuments($word_ids, $project);
|
||||
return self::mySearchDocuments($word_ids, $project, $model);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -72,9 +73,10 @@ class IDF_Search extends Pluf_Search
|
||||
*
|
||||
* @param array Ids.
|
||||
* @param IDF_Project Project to limit the search.
|
||||
* @param string Model class to limit the search.
|
||||
* @return array Sorted by score, returns model_class, model_id and score.
|
||||
*/
|
||||
public static function mySearchDocuments($wids, $project)
|
||||
public static function mySearchDocuments($wids, $project, $model)
|
||||
{
|
||||
$db =& Pluf::db();
|
||||
$gocc = new IDF_Search_Occ();
|
||||
@ -83,7 +85,8 @@ class IDF_Search extends Pluf_Search
|
||||
$where[] = $db->qn('word').'='.(int)$id;
|
||||
}
|
||||
$prj = (is_null($project)) ? '' : ' AND project='.(int)$project->id;
|
||||
$select = 'SELECT model_class, model_id, SUM(pondocc) AS score FROM '.$gocc->getSqlTable().' WHERE '.implode(' OR ', $where).$prj.' GROUP BY model_class, model_id HAVING COUNT(*)='.count($wids).' ORDER BY score DESC';
|
||||
$md = (is_null($model)) ? '' : ' AND model_class='.$db->esc($model);
|
||||
$select = 'SELECT model_class, model_id, SUM(pondocc) AS score FROM '.$gocc->getSqlTable().' WHERE '.implode(' OR ', $where).$prj.$md.' GROUP BY model_class, model_id HAVING COUNT(*)='.count($wids).' ORDER BY score DESC';
|
||||
return $db->select($select);
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,7 @@ class IDF_Views_Issue
|
||||
}
|
||||
$q = $request->REQUEST['q'];
|
||||
$title = sprintf(__('Search Issues - %s'), Pluf_esc($q));
|
||||
$issues = new Pluf_Search_ResultSet(IDF_Search::mySearch($q, $prj));
|
||||
$issues = new Pluf_Search_ResultSet(IDF_Search::mySearch($q, $prj, 'IDF_Issue'));
|
||||
if (count($issues) > 100) {
|
||||
// no more than 100 results as we do not care
|
||||
$issues->results = array_slice($issues->results, 0, 100);
|
||||
|
Loading…
Reference in New Issue
Block a user