Merge branch 'master' of /home/git/platal into profile_edit
[platal.git] / include / userset.inc.php
index a76b7c1..8789ea9 100644 (file)
@@ -44,10 +44,10 @@ class UserSet extends PlSet
     {
         global $globals;
         parent::__construct('auth_user_md5 AS u',
-                            (!empty($GLOBALS['IS_XNET_SITE']) ? 
-                                'INNER JOIN groupex.membres AS gxm ON (u.user_id = gxm.uid 
+                            (!empty($GLOBALS['IS_XNET_SITE']) ?
+                                'INNER JOIN groupex.membres AS gxm ON (u.user_id = gxm.uid
                                                                        AND gxm.asso_id = ' . $globals->asso('id') . ') ' : '')
-                           . 'LEFT JOIN auth_user_quick AS q USING (user_id) 
+                           . 'LEFT JOIN auth_user_quick AS q USING (user_id)
                               LEFT JOIN aliases         AS a ON (a.id = u.user_id AND type = \'a_vie\')
                               ' . $joins,
                             $where,
@@ -62,7 +62,7 @@ class SearchSet extends UserSet
     private $order = null;
     private $quick = false;
 
-    public function __construct($quick = false, $no_search = false)
+    public function __construct($quick = false, $no_search = false, $join = '', $where = '')
     {
         require_once dirname(__FILE__).'/../modules/search/search.inc.php';
 
@@ -72,13 +72,13 @@ class SearchSet extends UserSet
 
         $this->quick = $quick;
         if ($quick) {
-            $this->getQuick();
+            $this->getQuick($join, $where);
         } else {
-            $this->getAdvanced();
+            $this->getAdvanced($join, $where);
         }
     }
 
-    private function getQuick()
+    private function getQuick($join, $where)
     {
         require_once dirname(__FILE__).'/../modules/search/search.inc.php';
         global $globals;
@@ -91,9 +91,20 @@ class SearchSet extends UserSet
             new ThrowError('Recherche trop générale.');
         }
         $this->score = $qSearch->get_score_statement();
-        parent::__construct("{$fields->get_select_statement()}",
-                            $fields->get_where_statement() .
-                            (S::logged() && Env::has('nonins') ? ' AND u.perms="pending" AND u.deces=0' : ''));
+        $pwhere = $fields->get_where_statement();
+        if (trim($pwhere)) {
+            if (trim($where)) {
+                $where .= ' AND ';
+            }
+            $where .= $pwhere;
+        }
+        if (S::logged() && Env::has('nonins')) {
+            if (trim($where)) {
+                $where .= ' AND ';
+            }
+            $where .= 'u.perms="pending" AND u.deces=0';
+        }
+        parent::__construct($join . ' ' . $fields->get_select_statement(), $where);
 
         $this->order = implode(',',array_filter(array($fields->get_order_statement(),
                                                       'u.promo DESC, NomSortKey, prenom')));
@@ -107,8 +118,8 @@ class SearchSet extends UserSet
         if ($fields->too_large()) {
             new ThrowError('Recherche trop générale.');
         }
-        parent::__construct($fields->get_select_statement(),
-                            $fields->get_where_statement());
+        parent::__construct($join . ' ' . $fields->get_select_statement(),
+                            $where . ' ' . $fields->get_where_statement());
         $this->order = implode(',',array_filter(array($fields->get_order_statement(),
                                                       'promo DESC, NomSortKey, prenom')));
     }
@@ -153,11 +164,11 @@ class MinificheView extends MultipageView
         global $globals;
         $this->entriesPerPage = $globals->search->per_page;
         if (@$params['with_score']) {
-            $this->addSortKey('score', array('-score', '-watch_last', '-promo', 'nom', 'prenom'), 'pertinence');
+            $this->addSortKey('score', array('-score', '-date', '-promo', 'nom', 'prenom'), 'pertinence');
         }
         $this->addSortKey('name', array('nom', 'prenom'), 'nom');
         $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion');
-        $this->addSortKey('date', array('-watch_last', '-promo', 'nom', 'prenom'), 'dernière modification');
+        $this->addSortKey('date_mod', array('-date', '-promo', 'nom', 'prenom'), 'dernière modification');
         parent::__construct($set, $data, $params);
     }
 
@@ -180,7 +191,7 @@ class MinificheView extends MultipageView
 
     public function joins()
     {
-        return  "LEFT JOIN  entreprises    AS e   ON (e.entrid = 0 AND e.uid = u.user_id)
+        return  "LEFT JOIN  entreprises    AS e   ON (e.entrid = 0 AND e.uid = u.user_id".(S::logged() ? "" : " AND e.pub = 'public'").")
                  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)
@@ -189,11 +200,11 @@ class MinificheView extends MultipageView
                  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  adresses       AS adr ON (u.user_id = adr.uid
-                                                      AND FIND_IN_SET('active', adr.statut))
+                                                      AND FIND_IN_SET('active', adr.statut)".(S::logged() ? "" : " AND adr.pub = 'public'").")
                  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')" .
-                (S::logged() ? 
+                (S::logged() ?
                  "LEFT JOIN  contacts       AS c   On (c.contact = u.user_id AND c.uid = " . S::v('uid') . ")"
                  : "");
     }
@@ -208,12 +219,12 @@ class MentorView extends MultipageView
 {
     public function __construct(PlSet &$set, $data, array $params)
     {
-        $this->entriesPerPage = 10; 
+        $this->entriesPerPage = 10;
         $this->addSortKey('rand', array('RAND(' . S::i('uid') . ')'), 'aléatoirement');
-        $this->addSortKey('name', array('nom', 'prenom'), 'nom'); 
-        $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion'); 
-        $this->addSortKey('date', array('-watch_last', '-promo', 'nom', 'prenom'), 'dernière modification'); 
-        parent::__construct($set, $data, $params); 
+        $this->addSortKey('name', array('nom', 'prenom'), 'nom');
+        $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion');
+        $this->addSortKey('date_mod', array('-date', '-promo', 'nom', 'prenom'), 'dernière modification');
+        parent::__construct($set, $data, $params);
     }
 
     public function fields()
@@ -326,11 +337,12 @@ class GeolocView implements PlView
             $page->changeTpl('geoloc/city.tpl', NO_SKIN);
             header('Content-Type: text/xml');
             header('Pragma:');
+            $only_current = Env::v('only_current', false)? ' AND FIND_IN_SET(\'active\', adrf.statut)' : '';
             $it =& $this->set->get('u.user_id AS id, u.prenom, u.nom, u.promo, al.alias',
-                                   "INNER JOIN  adresses AS adrf  ON (adrf.uid = u.user_id)
+                                   "INNER JOIN  adresses AS adrf  ON (adrf.uid = u.user_id $only_current)
                                      LEFT JOIN  aliases  AS al   ON (u.user_id = al.id
-                                                                   AND FIND_IN_SET(al.flags, 'bestalias'))
-                                    INNER JOIN  adresses AS av ON (" . getadr_join('av') . ")",
+                                                                   AND FIND_IN_SET('bestalias', al.flags))
+                                    INNER JOIN  adresses AS avg ON (" . getadr_join('avg') . ")",
                                    'adrf.cityid = ' . Env::i('cityid'), null, null, 11);
             $page->assign('users', $it);
             break;
@@ -354,9 +366,7 @@ class GeolocView implements PlView
             if (!$this->use_map()) {
                 $page->assign('request_geodesix', true);
             }
-            if (!empty($GLOBALS['IS_XNET_SITE'])) {
-                $page->assign('no_annu', true);
-            }
+            $page->assign('annu', @$this->params['with_annu']);
             $page->assign('protocole', @$_SERVER['HTTPS'] ? 'https' : 'http');
             $this->set->get('u.user_id', null, "u.perms != 'pending' AND u.deces = 0", "u.user_id", null);
             return 'include/plview.geoloc.tpl';