From 579a8c9adeec924a4f18957e22d3fb30807c214f Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 16 Sep 2007 15:25:24 +0200 Subject: [PATCH] FS#28 - step 3: Use xnet groups for search & autocomplete Signed-off-by: Florent Bruneau --- ChangeLog | 3 +++ modules/search.php | 24 ++++++++++++++++-------- modules/search/search.inc.php | 4 +++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 108e2f6..58aafda 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ New: * Lists: - Asynchronous mail moderation (should avoid server overload) -FRU + * Profile: + - #28: Use group/subscription list from Xnet -FRU + * Search: - Shortcuts to open profiles or search in documentation -FRU diff --git a/modules/search.php b/modules/search.php index ddbd700..ee08963 100644 --- a/modules/search.php +++ b/modules/search.php @@ -166,7 +166,9 @@ class SearchModule extends PLModule 'secteur' => array('field' => 'id', 'table' => 'emploi_secteur', 'text' => 'label', 'exact' => false), 'nationalite' => array('field' => 'a2', 'table' => 'geoloc_pays', 'text' => 'nat', 'exact' => 'false'), 'binet' => array('field' => 'id', 'table' => 'binets_def', 'text' => 'text', 'exact' => false), - 'groupex' => array('field' => 'id', 'table' => 'groupesx_def', 'text' => 'text', 'exact' => false), + 'groupex' => array('field' => 'id', 'table' => 'groupex.asso', + 'text' => "(a.cat = 'GroupesX' OR a.cat = 'Institutions') AND pub = 'public' AND nom", + 'exact' => false), 'section' => array('field' => 'id', 'table' => 'sections', 'text' => 'text', 'exact' => false), 'school' => array('field' => 'id', 'table' => 'applis_def', 'text' => 'text', 'exact' => false) ); @@ -174,7 +176,8 @@ class SearchModule extends PLModule if (!Env::v($field) && Env::v($field . 'Txt')) { $res = XDB::query("SELECT {$query['field']} FROM {$query['table']} - WHERE {$query['text']} " . ($query['exact'] ? " = {?}" : " LIKE CONCAT({?}, '%')"), + WHERE {$query['text']} " . ($query['exact'] ? " = {?}" : + " LIKE CONCAT('%', {?}, '%')"), Env::v($field . 'Txt')); $_REQUEST[$field] = $res->fetchOneCell(); } @@ -284,13 +287,16 @@ class SearchModule extends PLModule $beginwith = false; break; case 'groupexTxt': - $db = '`groupesx_def` INNER JOIN - `groupesx_ins` ON(`groupesx_def`.`id` = `groupesx_ins`.`gid`)'; - $field='`groupesx_def`.`text`'; + $db = "groupex.asso AS a INNER JOIN + groupex.membres AS m ON(a.id = m.asso_id + AND (a.cat = 'GroupesX' OR a.cat = 'Institutions') + AND a.pub = 'public')"; + $field='a.nom'; + $field2 = 'a.diminutif'; if (strlen($q) > 2) $beginwith = false; - $realid = '`groupesx_def`.`id`'; - $unique = '`guid`'; + $realid = 'a.id'; + $unique = 'm.uid'; break; case 'name': $field = '`nom`'; @@ -411,7 +417,9 @@ class SearchModule extends PLModule $page->changeTpl('search/adv.grade.form.tpl', NO_SKIN); return; case 'groupex': - $db = '`groupesx_def`'; + $db = 'groupex.asso'; + $where = " WHERE (cat = 'GroupesX' OR cat = 'Institutions') AND pub = 'public'"; + $field = 'nom'; break; case 'nationalite': $db = '`geoloc_pays` INNER JOIN diff --git a/modules/search/search.inc.php b/modules/search/search.inc.php index db8eb70..7d0bd4c 100644 --- a/modules/search/search.inc.php +++ b/modules/search/search.inc.php @@ -56,7 +56,9 @@ function advancedSearchFromInput() $natField = new RefSField('nationalite',array('u.nationalite'),'','',''); $binetField = new RefSField('binet',array('b.binet_id'),'binets_ins','b','u.user_id=b.user_id'); - $groupexField = new RefSField('groupex',array('g.gid'),'groupesx_ins','g','u.user_id=g.guid'); + $groupexField = new RefSField('groupex',array('g.id'),array('groupex.asso', 'groupex.membres'),array('g', 'gm'), + array("(g.cat = 'GroupesX' OR g.cat = 'Institutions') AND g.pub = 'public'", + 'gm.asso_id = g.id AND u.user_id=gm.uid')); $sectionField = new RefSField('section',array('u.section'),'','',''); $schoolField = new RefSField('school',array('as.aid'),'applis_ins','`as`','u.user_id=as.uid'); $diplomaField = new RefSField('diploma',array('ad.type'),'applis_ins','ad','u.user_id=ad.uid'); -- 2.1.4