From f781871ccc09f9067575a65a86712ba07bacaa0d Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Wed, 23 Jul 2008 00:09:08 +0200 Subject: [PATCH] Enables search through any of the 3 possible nationality and thus closes #386 --- modules/search.php | 9 +++++++-- modules/search/classes.inc.php | 8 ++++++-- modules/search/search.inc.php | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/modules/search.php b/modules/search.php index 7fe8707..b33fa6c 100644 --- a/modules/search.php +++ b/modules/search.php @@ -323,7 +323,9 @@ class SearchModule extends PLModule break; case 'nationaliteTxt': $db = '`geoloc_pays` INNER JOIN - `auth_user_md5` ON(`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite`)'; + `auth_user_md5` ON (`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite` OR + `geoloc_pays`.`a2` = `auth_user_md5`.`nationalite2` OR + `geoloc_pays`.`a2` = `auth_user_md5`.`nationalite3`)'; $field = 'IF(`geoloc_pays`.`nat`=\'\', `geoloc_pays`.`pays`, `geoloc_pays`.`nat`)'; @@ -392,6 +394,7 @@ class SearchModule extends PLModule LIMIT 11', $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch); + $nbResults = 0; $res = ""; while ($result = $list->next()) { @@ -452,7 +455,9 @@ class SearchModule extends PLModule break; case 'nationalite': $db = '`geoloc_pays` INNER JOIN - `auth_user_md5` ON (`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite`)'; + `auth_user_md5` ON (`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite` OR + `geoloc_pays`.`a2` = `auth_user_md5`.`nationalite2` OR + `geoloc_pays`.`a2` = `auth_user_md5`.`nationalite3`)'; $field = 'IF(`nat`=\'\', `pays`, `nat`)'; $id = '`a2`'; break; diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index e0eae23..f92ccbe 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -33,7 +33,9 @@ ad0.text AS app0text, ad0.url AS app0url, ai0.type AS app0type, ad1.text AS app1text, ad1.url AS app1url, ai1.type AS app1type, es.label AS secteur, ef.fonction_fr AS fonction, - IF(n.nat=\'\',n.pays,n.nat) AS nat, n.a2 AS iso3166, + IF(n1.nat=\'\',n1.pays,n1.nat) AS nat1, n1.a2 AS iso3166_1, + IF(n2.nat=\'\',n2.pays,n2.nat) AS nat2, n2.a2 AS iso3166_2, + IF(n3.nat=\'\',n3.pays,n3.nat) AS nat3, n3.a2 AS iso3166_3, (COUNT(em.email) > 0 OR FIND_IN_SET("googleapps", u.mail_storage) > 0) AS actif,'; // hide private information if not logged if (S::logged()) @@ -60,7 +62,9 @@ else LEFT JOIN entreprises AS e ON (e.entrid = 0 AND e.uid = u.user_id) LEFT JOIN emploi_secteur AS es ON (e.secteur = es.id) LEFT JOIN fonctions_def AS ef ON (e.fonction = ef.id) - LEFT JOIN geoloc_pays AS n ON (u.nationalite = n.a2) + LEFT JOIN geoloc_pays AS n1 ON (u.nationalite = n1.a2) + LEFT JOIN geoloc_pays AS n2 ON (u.nationalite2 = n2.a2) + LEFT JOIN geoloc_pays AS n3 ON (u.nationalite3 = n3.a2) LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET(\'active\',adr.statut)) LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) diff --git a/modules/search/search.inc.php b/modules/search/search.inc.php index c8e62fe..20d5956 100644 --- a/modules/search/search.inc.php +++ b/modules/search/search.inc.php @@ -62,7 +62,7 @@ function advancedSearchFromInput() $secteurField = new RefSField('secteur',array('fm.secteur'),'entreprises','fm','u.user_id=fm.uid'); $cvField = new RefSField('cv',array('u.cv'),'','','',false); - $natField = new RefSField('nationalite',array('u.nationalite'),'','',''); + $natField = new RefSField('nationalite',array('u.nationalite', 'u.nationalite2', 'u.nationalite3'),'','',''); $binetField = new RefSField('binet',array('b.binet_id'),'binets_ins','b','u.user_id=b.user_id'); $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'", -- 2.1.4