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 string Query string.
|
||||||
* @param int Project id to limit the results (null)
|
* @param int Project id to limit the results (null)
|
||||||
* @param string Stemmer class.
|
* @param string Model class (null)
|
||||||
* @return array Results.
|
* @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'));
|
$query = Pluf_Text::cleanString(html_entity_decode($query, ENT_QUOTES, 'UTF-8'));
|
||||||
$words = Pluf_Text::tokenize($query);
|
$words = Pluf_Text::tokenize($query);
|
||||||
@ -61,7 +62,7 @@ class IDF_Search extends Pluf_Search
|
|||||||
if (in_array(null, $word_ids)) {
|
if (in_array(null, $word_ids)) {
|
||||||
return array();
|
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 array Ids.
|
||||||
* @param IDF_Project Project to limit the search.
|
* @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.
|
* @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();
|
$db =& Pluf::db();
|
||||||
$gocc = new IDF_Search_Occ();
|
$gocc = new IDF_Search_Occ();
|
||||||
@ -83,7 +85,8 @@ class IDF_Search extends Pluf_Search
|
|||||||
$where[] = $db->qn('word').'='.(int)$id;
|
$where[] = $db->qn('word').'='.(int)$id;
|
||||||
}
|
}
|
||||||
$prj = (is_null($project)) ? '' : ' AND project='.(int)$project->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);
|
return $db->select($select);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ class IDF_Views_Issue
|
|||||||
}
|
}
|
||||||
$q = $request->REQUEST['q'];
|
$q = $request->REQUEST['q'];
|
||||||
$title = sprintf(__('Search Issues - %s'), Pluf_esc($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) {
|
if (count($issues) > 100) {
|
||||||
// no more than 100 results as we do not care
|
// no more than 100 results as we do not care
|
||||||
$issues->results = array_slice($issues->results, 0, 100);
|
$issues->results = array_slice($issues->results, 0, 100);
|
||||||
|
Loading…
Reference in New Issue
Block a user