+ @list($login, $domain) = explode('@', $login);
+ if ($domain && $domain != $globals->mail->domain && $domain != $globals->mail->domain2) {
+ return null;
+ }
+ @list($prenom, $nom, $promo) = explode('.', $login);
+ $where = 'REPLACE(REPLACE(REPLACE(nom, " ", ""), "-", ""), "\'", "") LIKE CONCAT("%", {?}, "%")
+ AND REPLACE(REPLACE(REPLACE(prenom, " ", ""), "-", ""), "\'", "") LIKE CONCAT("%", {?}, "%")';
+ if ($promo) {
+ if (preg_match('/^[0-9]{2}$/', $promo)) {
+ $where .= 'AND MOD(promo, 100) = {?}';
+ } elseif (preg_match('/^[0-9]{4}$/', $promo)) {
+ $where .= 'AND promo = {?}';
+ }
+ }
+ $sql = "SELECT user_id, nom, prenom, promo
+ FROM auth_user_md5
+ WHERE $where
+ ORDER BY promo, nom, prenom";
+ if ($iterator) {
+ return XDB::iterator($sql, $nom, $prenom, $promo);
+ } else {
+ $res = XDB::query($sql, $nom, $prenom, $promo);
+ return $res->fetchAllAssoc();
+ }
+}
+
+// }}}
+// {{{ function get_user_details_pro()
+
+function get_user_details_pro($uid, $view = 'private')
+{
+ $sql = "SELECT e.entreprise, s.label as secteur , ss.label as sous_secteur , f.fonction_fr as fonction,
+ e.poste, e.adr1, e.adr2, e.adr3, e.postcode, e.city, e.entrid,
+ gp.pays AS countrytxt, gr.name AS region, e.tel, e.fax, e.mobile, e.entrid,
+ e.pub, e.adr_pub, e.tel_pub, e.email, e.email_pub, e.web
+ FROM entreprises AS e
+ LEFT JOIN emploi_secteur AS s ON(e.secteur = s.id)
+ LEFT JOIN emploi_ss_secteur AS ss ON(e.ss_secteur = ss.id AND e.secteur = ss.secteur)
+ LEFT JOIN fonctions_def AS f ON(e.fonction = f.id)
+ LEFT JOIN geoloc_pays AS gp ON (gp.a2 = e.country)
+ LEFT JOIN geoloc_region AS gr ON (gr.a2 = e.country and gr.region = e.region)
+ WHERE e.uid = {?}
+ ORDER BY e.entrid";
+ $res = XDB::query($sql, $uid);
+ $all_pro = $res->fetchAllAssoc();
+ foreach ($all_pro as $i => $pro) {
+ if (!has_user_right($pro['pub'], $view))
+ unset($all_pro[$i]);
+ else {
+ if (!has_user_right($pro['adr_pub'], $view)) {
+ if ($pro['adr1'] == '' &&
+ $pro['adr2'] == '' &&
+ $pro['adr3'] == '' &&
+ $pro['postcode'] == '' &&
+ $pro['city'] == '' &&
+ $pro['countrytxt'] == '' &&
+ $pro['region'] == '') {
+ $all_pro[$i]['adr_pub'] = $view;
+ } else {
+ $all_pro[$i]['adr1'] = '';
+ $all_pro[$i]['adr2'] = '';
+ $all_pro[$i]['adr3'] = '';
+ $all_pro[$i]['postcode'] = '';
+ $all_pro[$i]['city'] = '';
+ $all_pro[$i]['countrytxt'] = '';
+ $all_pro[$i]['region'] = '';
+ }
+ }
+ if (!has_user_right($pro['tel_pub'], $view)) {
+ // if no tel was defined, then the viewer will be able to write it
+ if ($pro['tel'] == '' &&
+ $pro['fax'] == '' &&
+ $pro['mobile'] == '') {
+ $all_pro[$i]['tel_pub'] = $view;
+ } else {
+ $all_pro[$i]['tel'] = '';
+ $all_pro[$i]['fax'] = '';
+ $all_pro[$i]['mobile'] = '';
+ }
+ }
+ if (!has_user_right($pro['email_pub'], $view)) {
+ if ($pro['email'] == '')
+ $all_pro[$i]['email_pub'] = $view;
+ else
+ $all_pro[$i]['email'] = '';
+ }
+ if ($all_pro[$i]['adr1'] == '' &&
+ $all_pro[$i]['adr2'] == '' &&
+ $all_pro[$i]['adr3'] == '' &&
+ $all_pro[$i]['postcode'] == '' &&
+ $all_pro[$i]['city'] == '' &&
+ $all_pro[$i]['countrytxt'] == '' &&
+ $all_pro[$i]['region'] == '' &&
+ $all_pro[$i]['entreprise'] == '' &&
+ $all_pro[$i]['fonction'] == '' &&
+ $all_pro[$i]['secteur'] == '' &&
+ $all_pro[$i]['poste'] == '' &&
+ $all_pro[$i]['tel'] == '' &&
+ $all_pro[$i]['fax'] == '' &&
+ $all_pro[$i]['mobile'] == '' &&
+ $all_pro[$i]['email'] == '')
+ unset($all_pro[$i]);
+ }
+ }
+ if (!count($all_pro)) return false;
+ return $all_pro;
+}
+
+// }}}
+// {{{ function get_user_details_adr()
+
+function get_user_details_adr($uid, $view = 'private') {
+ $sql = "SELECT a.adrid, a.adr1,a.adr2,a.adr3,a.postcode,a.city,
+ gp.pays AS countrytxt,a.region, a.regiontxt,
+ FIND_IN_SET('active', a.statut) AS active, a.adrid,
+ FIND_IN_SET('res-secondaire', a.statut) AS secondaire,
+ a.pub, gp.display
+ FROM adresses AS a
+ LEFT JOIN geoloc_pays AS gp ON (gp.a2=a.country)
+ WHERE uid= {?} AND NOT FIND_IN_SET('pro',a.statut)
+ ORDER BY NOT FIND_IN_SET('active',a.statut), FIND_IN_SET('temporaire',a.statut), FIND_IN_SET('res-secondaire',a.statut)";
+ $res = XDB::query($sql, $uid);
+ $all_adr = $res->fetchAllAssoc();
+ $adrid_index = array();
+ foreach ($all_adr as $i => $adr) {
+ if (!has_user_right($adr['pub'], $view))
+ unset($all_adr[$i]);
+ else
+ $adrid_index[$adr['adrid']] = $i;
+ }
+
+ $sql = "SELECT t.adrid, t.tel_pub, t.tel_type, t.tel, t.telid
+ FROM tels AS t
+ INNER JOIN adresses AS a ON (a.uid = t.uid) AND (a.adrid = t.adrid)
+ WHERE t.uid = {?} AND NOT FIND_IN_SET('pro',a.statut)
+ ORDER BY t.adrid, t.tel_type DESC, t.telid";
+ $restel = XDB::iterator($sql, $uid);
+ while ($nexttel = $restel->next()) {
+ if (has_user_right($nexttel['tel_pub'], $view)) {
+ $adrid = $nexttel['adrid'];
+ unset($nexttel['adrid']);
+ if (isset($adrid_index[$adrid])) {
+ if (!isset($all_adr[$adrid_index[$adrid]]['tels']))
+ $all_adr[$adrid_index[$adrid]]['tels'] = array($nexttel);
+ else
+ $all_adr[$adrid_index[$adrid]]['tels'][] = $nexttel;
+ }
+ }
+ }
+ return $all_adr;
+}
+
+// }}}
+// {{{ function get_user_details()
+
+function &get_user_details($login, $from_uid = '', $view = 'private')
+{