Adds a networking address field in advanced search form
authorGuillaume Bandet <guillaume.bandet@polytechnique.org>
Tue, 10 Jun 2008 10:12:52 +0000 (12:12 +0200)
committerGuillaume Bandet <guillaume.bandet@polytechnique.org>
Tue, 10 Jun 2008 23:01:56 +0000 (01:01 +0200)
modules/search.php
modules/search/classes.inc.php
modules/search/search.inc.php
templates/search/adv.form.tpl

index 1a98912..55e5d20 100644 (file)
@@ -168,6 +168,11 @@ class SearchModule extends PLModule
         $page->assign('advanced',1);
         $page->addJsLink('jquery.autocomplete.js');
 
+        $res = XDB::iterator("SELECT  nw.network_type AS type, nw.name
+                                FROM  profile_networking_enum AS nw
+                            ORDER BY  name ;");
+        $page->assign('network_list', $res->fetchAllAssoc());
+
         if (!Env::has('rechercher') && $action != 'geoloc') {
             $this->form_prepare();
         } else {
index 91c924d..5ef9fd6 100644 (file)
@@ -44,7 +44,9 @@ if (S::logged())
         q.profile_mobile AS mobile,
         q.profile_freetext AS freetext,
         adr.city, gp.pays AS countrytxt, gr.name AS region,
-        e.entreprise,';
+        e.entreprise,
+        nw.address AS networking_address,
+        nwe.name AS networking_name,';
 else
     $globals->search->result_fields .="
     IF(q.profile_web_pub='public', q.profile_web, '') AS web,
@@ -53,20 +55,24 @@ else
         IF(adr.pub='public', adr.city, '') AS city,
         IF(adr.pub='public', gp.pays, '') AS countrytxt,
         IF(adr.pub='public', gr.name, '') AS region,
-        IF(e.pub='public', e.entreprise, '') AS entreprise,";
+        IF(e.pub='public', e.entreprise, '') AS entreprise,
+        IF(nw.pub='public', nw.address, '') AS networking_address,
+        IF(nw.pub='public', nwe.name, '') AS networking_name,";
 @$globals->search->result_where_statement = '
-    LEFT JOIN  applis_ins     AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0)
-    LEFT JOIN  applis_def     AS ad0 ON (ad0.id = ai0.aid)
-    LEFT JOIN  applis_ins     AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1)
-    LEFT JOIN  applis_def     AS ad1 ON (ad1.id = ai1.aid)
-    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  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)
-    LEFT JOIN  emails         AS em  ON (em.uid = u.user_id AND em.flags = \'active\')';
+    LEFT JOIN  applis_ins              AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0)
+    LEFT JOIN  applis_def              AS ad0 ON (ad0.id = ai0.aid)
+    LEFT JOIN  applis_ins              AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1)
+    LEFT JOIN  applis_def              AS ad1 ON (ad1.id = ai1.aid)
+    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  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)
+    LEFT JOIN  emails                  AS em  ON (em.uid = u.user_id AND em.flags = \'active\')
+    LEFT JOIN  profile_networking      AS nw  ON (nw.uid = u.user_id)
+    LEFT JOIN  profile_networking_enum AS nwe ON (nwe.network_type = nw.network_type)';
 
 // }}}
 // {{{ class ThrowError
index 0d23a78..52575b5 100644 (file)
@@ -73,13 +73,20 @@ function advancedSearchFromInput()
 
     $freeField       = new RefSField('free',array('q.profile_freetext'),'','','',false);
 
+    $nwAddressField  = new RefSField('networking_address', array('nw.address'), 'profile_networking', 'nw', 'nw.uid=u.user_id', false);
+    if (Env::v('networking_address') == '') {
+        $nwTypeField     = new RefSField('networking_type', array('nwe.name'), array('profile_networking', 'profile_networking_enum'), array('nw', 'nwe'), array('nw.uid = u.user_id', 'nwe.network_type = nw.network_type'), true);
+    } else {
+        $nwTypeField     = new RefSField('networking_type', array('nwe.name'), 'profile_networking_enum', 'nwe', 'nwe.network_type = nw.network_type', true);
+    }
     return array(
                 $nameField, $firstnameField, $nicknameField, $promo1Field,
-                $promo2Field, $womanField, $subscriberField, $aliveField, $referentField,
+                $promo2Field, $womanField, $subscriberField, $aliveField,
                 $townField, $countryField, $regionField, $mapField, $entrepriseField,
                 $posteField, $secteurField, $cvField, $natField, $binetField,
                 $groupexField, $sectionField, $schoolField, $diplomaField,
-                $freeField, $fonctionField);
+                $freeField, $fonctionField, $nwAddressField, $nwTypeField,
+                $referentField);
 }
 
 // }}}
index 6f36626..c1ef43a 100644 (file)
@@ -404,6 +404,34 @@ checked="checked"{/if}/>Chercher uniquement les adresses où les camarades sont
       <td>Commentaire contient</td>
       <td><input type="text" name="free" size="32" value="{$smarty.request.free}" /></td>
     </tr>
+    <tr>
+      <td colspan="2">Messageries, networking et sites webs</td>
+    </tr>
+    <tr>
+      <td>
+        <span style="margin-left:2em">Adresse</span>
+      </td>
+      <td>
+        <input type="text" name="networking_address" size="32" value="{$smarty.request.networking_address}" />
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <span style="margin-left:2em">Type</span>
+      </td>
+      <td>
+        <select name="networking_type">
+          <option value="" {if $smarty.request.networking_type eq ""} selected="selected"{/if}>
+            Tout
+          </option>
+        {foreach from=$network_list item=network}
+          <option value="{$network.name}" {if $smarty.request.networking_type eq $network.name} selected="selected" {/if}>
+            {$network.name}
+          </option>
+        {/foreach}
+        </select>
+      </td>
+    </tr>
         {if $smarty.session.auth ge AUTH_COOKIE}
     <tr>
       <td colspan="2">