X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fsearch%2Fclasses.inc.php;h=e0eae2346c1958a3391885db57b4ac42b2b55ec4;hb=7f12e3b4113791f3372f11572a205925d7bb6b97;hp=8113380b48b3ccb0b959ab0dce04c0636795f71f;hpb=92c3f9e5a1c480d9c25dd98aff56e792c378d0fe;p=platal.git diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index 8113380..e0eae23 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -19,8 +19,6 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -require_once("xorg.misc.inc.php"); - // {{{ Global variables used for the search Queries @$globals->search->result_fields = ' @@ -40,7 +38,6 @@ require_once("xorg.misc.inc.php"); // hide private information if not logged if (S::logged()) $globals->search->result_fields .=' - q.profile_mobile AS mobile, q.profile_freetext AS freetext, adr.city, gp.pays AS countrytxt, gr.name AS region, e.entreprise, @@ -48,7 +45,6 @@ if (S::logged()) nwe.name AS networking_name,'; else $globals->search->result_fields .=" - IF(q.profile_mobile_pub='public', q.profile_mobile, '') AS mobile, IF(q.profile_freetext_pub='public', q.profile_freetext, '') AS freetext, IF(adr.pub='public', adr.city, '') AS city, IF(adr.pub='public', gp.pays, '') AS countrytxt, @@ -96,9 +92,10 @@ class ThrowError */ private static function defaultHandler($explain) { - global $page, $globals; + global $globals; + $page =& Platal::page(); $page->changeTpl('search/index.tpl'); - $page->assign('xorg_title','Polytechnique.org - Annuaire'); + $page->setTitle('Polytechnique.org - Annuaire'); $page->assign('baseurl', $globals->baseurl); $page->trigError($explain); $page->run(); @@ -214,6 +211,8 @@ class QuickSearch extends SField /** stores admin searches */ var $email; var $ip; + /** stores phone number */ + var $phone; // }}} // {{{ constructor @@ -232,7 +231,7 @@ class QuickSearch extends SField function isempty() { - return empty($this->strings) && empty($this->ranges) && empty($this->email) && empty($this->ip); + return empty($this->strings) && empty($this->ranges) && empty($this->email) && empty($this->ip) && empty($this->phone); } // }}} @@ -257,8 +256,7 @@ class QuickSearch extends SField $s = preg_replace('!\d+!', ' ', $s); $this->strings = preg_split("![^a-zA-Z%]+!",$s, -1, PREG_SPLIT_NO_EMPTY); if (count($this->strings) > 5) { - global $page; - $page->trigWarning("Tu as indiqué trop d'éléments dans ta recherche, seuls les 5 premiers seront pris en compte"); + Platal::page()->trigWarning("Tu as indiqué trop d'éléments dans ta recherche, seuls les 5 premiers seront pris en compte"); $this->strings = array_slice($this->strings, 0, 5); } @@ -271,6 +269,12 @@ class QuickSearch extends SField foreach ($ranges as $r) { if (preg_match('!^([<>]\d{4}|\d{4}(-\d{4})?)$!', $r)) $this->ranges[] = $r; } + + $t = preg_replace('!(\d{4}-\d{4}|>\d{4}|<\d{4})!', '', $s); + $t = preg_replace('![<>\- ]!', '', $t); + if (strlen($t) > 4) { + $this->phone = $t; + } } // }}} @@ -314,6 +318,11 @@ class QuickSearch extends SField $ip = ip_to_uint($this->ip); $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip ) AND ls.suid = 0"; } + if (!empty($this->phone)){ + require_once("profil.func.inc.php"); + $phone = format_phone_number($this->phone) . "%"; + $where[] = 't.search_tel LIKE ' . XDB::escape($phone); + } return join(" AND ", $where); } @@ -339,6 +348,13 @@ class QuickSearch extends SField if (!empty($this->ip)) { $join .= "INNER JOIN logger.sessions AS ls ON (ls.uid = u.user_id)\n"; } + if (!empty($this->phone)) { + if (!S::logged()) { + $join .= "INNER JOIN profile_phones AS t ON (t.uid = u.user_id AND t.pub = 'public')"; + } else { + $join .= "INNER JOIN profile_phones AS t ON (t.uid = u.user_id)"; + } + } return $join; } // }}}