X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fuser.func.inc.php;h=8ee201e4bac31dcef504634d39d73a1a2d7d7857;hb=7f12e3b4113791f3372f11572a205925d7bb6b97;hp=21bcbb50af1272ed3ee0db5dc397a55ab6b125e7;hpb=e4501b5162ac1c70590205cc038db5d4b8188265;p=platal.git diff --git a/include/user.func.inc.php b/include/user.func.inc.php index 21bcbb5..8ee201e 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -41,7 +41,7 @@ function user_clear_all_subs($user_id, $really_del=true) 'user_id' => array('requests', 'user_changes')); if ($really_del) { - array_push($tables_to_clear['uid'], 'emails', 'groupex.membres', 'contacts', 'adresses', 'tels', + array_push($tables_to_clear['uid'], 'emails', 'groupex.membres', 'contacts', 'adresses', 'profile_phones', 'photo', 'perte_pass', 'langues_ins', 'forums.abos', 'forums.profils'); array_push($tables_to_clear['user_id'], 'newsletter_ins', 'auth_user_quick', 'binets_ins'); $tables_to_clear['id'] = array('aliases'); @@ -275,8 +275,8 @@ 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 + gp.pays AS countrytxt, gr.name AS region, e.entrid, + e.pub, e.adr_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) @@ -310,16 +310,18 @@ function get_user_details_pro($uid, $view = 'private') $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'] = ''; + $sql = "SELECT pub AS tel_pub, tel_type, display_tel AS tel, comment + FROM profile_phones AS t + WHERE uid = {?} AND link_type = 'pro' AND link_id = {?} + ORDER BY link_id, tel_type DESC, tel_id"; + $restel = XDB::iterator($sql, $uid, $pro['entrid']); + while ($nexttel = $restel->next()) { + if (has_user_right($nexttel['tel_pub'], $view)) { + if (!isset($all_pro[$i]['tels'])) { + $all_pro[$i]['tels'] = array($nexttel); + } else { + $all_pro[$i]['tels'][] = $nexttel; + } } } if (!has_user_right($pro['email_pub'], $view)) { @@ -339,9 +341,7 @@ function get_user_details_pro($uid, $view = 'private') $all_pro[$i]['fonction'] == '' && $all_pro[$i]['secteur'] == '' && $all_pro[$i]['poste'] == '' && - $all_pro[$i]['tel'] == '' && - $all_pro[$i]['fax'] == '' && - $all_pro[$i]['mobile'] == '' && + (!isset($all_pro[$i]['tels'])) && $all_pro[$i]['email'] == '') unset($all_pro[$i]); } @@ -358,7 +358,7 @@ function get_user_details_adr($uid, $view = 'private') { 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 + a.pub, gp.display, a.comment 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) @@ -373,11 +373,10 @@ function get_user_details_adr($uid, $view = 'private') { $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"; + $sql = "SELECT link_id AS adrid, pub AS tel_pub, tel_type, display_tel AS tel, tel_id AS telid, comment + FROM profile_phones AS t + WHERE uid = {?} AND link_type = 'address' + ORDER BY link_id, tel_type DESC, tel_id"; $restel = XDB::iterator($sql, $uid); while ($nexttel = $restel->next()) { if (has_user_right($nexttel['tel_pub'], $view)) { @@ -401,8 +400,8 @@ function &get_user_details($login, $from_uid = '', $view = 'private') { $reqsql = "SELECT u.user_id, u.promo, u.promo_sortie, u.prenom, u.nom, u.nom_usage, u.date, u.cv, u.perms IN ('admin','user','disabled') AS inscrit, FIND_IN_SET('femme', u.flags) AS sexe, u.deces != 0 AS dcd, u.deces, - q.profile_nick AS nickname, q.profile_from_ax, q.profile_mobile AS mobile, q.profile_web AS web, q.profile_freetext AS freetext, - q.profile_mobile_pub AS mobile_pub, q.profile_web_pub AS web_pub, q.profile_freetext_pub AS freetext_pub, + q.profile_nick AS nickname, q.profile_from_ax, q.profile_freetext AS freetext, + q.profile_freetext_pub AS freetext_pub, q.profile_medals_pub AS medals_pub, IF(gp.nat='',gp.pays,gp.nat) AS nationalite, gp.a2 AS iso3166, a.alias AS forlife, a2.alias AS bestalias, @@ -410,7 +409,8 @@ function &get_user_details($login, $from_uid = '', $view = 'private') s.text AS section, p.x, p.y, p.pub AS photo_pub, u.matricule_ax, m.expertise != '' AS is_referent, - (COUNT(e.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif + (COUNT(e.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif, + nd.display AS name_display, nd.tooltip AS name_tooltip FROM auth_user_md5 AS u INNER JOIN auth_user_quick AS q USING(user_id) INNER JOIN aliases AS a ON (u.user_id=a.id AND a.type='a_vie') @@ -421,6 +421,7 @@ function &get_user_details($login, $from_uid = '', $view = 'private') LEFT JOIN photo AS p ON (p.uid = u.user_id) LEFT JOIN mentor AS m ON (m.uid = u.user_id) LEFT JOIN emails AS e ON (e.uid = u.user_id AND e.flags='active') + INNER JOIN profile_names_display AS nd ON (nd.user_id = u.user_id) WHERE a.alias = {?} GROUP BY u.user_id"; $res = XDB::query($reqsql, $from_uid, $login); @@ -433,20 +434,7 @@ function &get_user_details($login, $from_uid = '', $view = 'private') $user['nickname'] = ''; $user['section'] = ''; } - // hide mobile - if (!has_user_right($user['mobile_pub'], $view)) { - if ($user['mobile'] == '') - $user['mobile_pub'] = $view; - else - $user['mobile'] = ''; - } - // hide web - if (!has_user_right($user['web_pub'], $view)) { - if ($user['web'] == '') - $user['web_pub'] = $view; - else - $user['web'] = ''; - } + // hide freetext if (!has_user_right($user['freetext_pub'], $view)) { if ($user['freetext'] == '') @@ -455,6 +443,21 @@ function &get_user_details($login, $from_uid = '', $view = 'private') $user['freetext'] = ''; } + $sql = "SELECT pub AS tel_pub, tel_type, display_tel AS tel, comment + FROM profile_phones AS t + WHERE uid = {?} AND link_type = 'user' + ORDER BY tel_type DESC, tel_id"; + $restel = XDB::iterator($sql, $uid); + while ($nexttel = $restel->next()) { + if (has_user_right($nexttel['tel_pub'], $view)) { + if (!isset($user['tels'])) { + $user['tels'] = array($nexttel); + } else { + $user['tels'][] = $nexttel; + } + } + } + $user['adr_pro'] = get_user_details_pro($uid, $view); $user['adr'] = get_user_details_adr($uid, $view); @@ -511,6 +514,19 @@ function &get_user_details($login, $from_uid = '', $view = 'private') } } + $user['networking'] = Array(); + $res = XDB::iterator("SELECT n.address, n.pub, m.network_type AS type, m.name, m.filter, m.link + FROM profile_networking AS n + INNER JOIN profile_networking_enum AS m ON (n.network_type = m.network_type) + WHERE n.uid = {?}", $uid); + while($network = $res->next()) + { + if (has_user_right($network['pub'], $view)) { + $network['link'] = str_replace('%s', $network['address'], $network['link']); + $user['networking'][] = $network; + } + } + return $user; } // }}} @@ -527,7 +543,7 @@ function add_user_address($uid, $adrid, $adr) { if (isset($adr['tels']) && is_array($adr['tels'])) { $telid = 0; foreach ($adr['tels'] as $tel) if ($tel['tel']) { - add_user_tel($uid, $adrid, $telid, $tel); + add_user_tel($uid, 'address', $adrid, $telid, $tel); $telid ++; } } @@ -545,17 +561,17 @@ function update_user_address($uid, $adrid, $adr) { $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['postcode'], $adr['city'], $adr['pub'], $adrid, $uid); if (isset($adr['tels']) && is_array($adr['tels'])) { - $res = XDB::query("SELECT telid FROM tels WHERE uid = {?} AND adrid = {?} ORDER BY telid", $uid, $adrid); + $res = XDB::query("SELECT tel_id FROM profile_phones WHERE uid = {?} AND link_type = 'address' AND link_id = {?} ORDER BY tel_id", $uid, $adrid); $telids = $res->fetchColumn(); foreach ($adr['tels'] as $tel) { if (isset($tel['telid']) && isset($tel['remove']) && $tel['remove']) { - remove_user_tel($uid, $adrid, $tel['telid']); + remove_user_tel($uid, 'address', $adrid, $tel['telid']); if (isset($telids[$tel['telid']])) unset($telids[$tel['telid']]); } else if (isset($tel['telid'])) { - update_user_tel($uid, $adrid, $tel['telid'], $tel); + update_user_tel($uid, 'address', $adrid, $tel['telid'], $tel); } else { for ($telid = 0; isset($telids[$telid]) && ($telids[$telid] == $telid); $telid++); - add_user_tel($uid, $adrid, $telid, $tel); + add_user_tel($uid, 'address', $adrid, $telid, $tel); } } } @@ -564,36 +580,41 @@ function update_user_address($uid, $adrid, $adr) { // {{{ function remove_user_address() function remove_user_address($uid, $adrid) { XDB::execute("DELETE FROM adresses WHERE adrid = {?} AND uid = {?}", $adrid, $uid); - XDB::execute("DELETE FROM tels WHERE adrid = {?} AND uid = {?}", $adrid, $uid); + XDB::execute("DELETE FROM profile_phones WHERE link_id = {?} AND uid = {?} AND link_type = 'address'", $adrid, $uid); } // }}} // {{{ function add_user_tel() -function add_user_tel($uid, $adrid, $telid, $tel) { - XDB::execute( - "INSERT INTO tels SET uid = {?}, adrid = {?}, telid = {?}, tel = {?}, tel_type = {?}, tel_pub = {?}", - $uid, $adrid, $telid, $tel['tel'], $tel['tel_type'], $tel['tel_pub']); +function add_user_tel($uid, $link_type, $link_id, $telid, $tel) { + require('profil.func.inc.php'); + $fmt_phone = format_phone_number($tel['tel']); + $disp_phone = format_display_number($fmt_phone, $error); + XDB::execute("INSERT INTO profile_phones (uid, link_type, link_id, tel_id, tel_type, search_tel, display_tel, pub) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", + $uid, $link_type, $link_id, $telid, $tel['tel_type'], $fmt_phone, $disp_phone, $tel['tel_pub']); } // }}} // {{{ function update_user_tel() -function update_user_tel($uid, $adrid, $telid, $tel) { - XDB::execute( - "UPDATE tels SET tel = {?}, tel_type = {?}, tel_pub = {?} - WHERE telid = {?} AND adrid = {?} AND uid = {?}", - $tel['tel'], $tel['tel_type'], $tel['tel_pub'], - $telid, $adrid, $uid); +function update_user_tel($uid, $link_type, $link_id, $telid, $tel) { + require('profil.func.inc.php'); + $fmt_phone = format_phone_number($tel['tel']); + $disp_phone = format_display_number($fmt_phone, $error); + XDB::execute("UPDATE profile_phones SET search_tel = {?}, display_tel = {?}, tel_type = {?}, pub = {?} + WHERE link_type = {?} AND tel_id = {?} AND link_id = {?} AND uid = {?}", + $fmt_phone, $disp_phone, $tel['tel_type'], $tel['tel_pub'], + $link_type, $telid, $link_id, $uid); } // }}} // {{{ function remove_user_tel() -function remove_user_tel($uid, $adrid, $telid) { - XDB::execute("DELETE FROM tels WHERE telid = {?} AND adrid = {?} AND uid = {?}", - $telid, $adrid, $uid); +function remove_user_tel($uid, $link_type, $link_id, $telid) { + XDB::execute("DELETE FROM profile_phones WHERE tel_id = {?} AND link_id = {?} AND uid = {?} AND link_type = {?}", + $telid, $link_id, $uid, $link_type); } // }}} // {{{ function add_user_pro() function add_user_pro($uid, $entrid, $pro) { XDB::execute( "INSERT INTO entreprises (`uid`, `entrid`, `entreprise`, `poste`, `secteur`, `ss_secteur`, `fonction`, - `adr1`, `adr2`, `adr3`, `postcode`, `city`, `country`, `region`, `tel`, `fax`, `mobile`, `email`, `web`, `pub`, `adr_pub`, `tel_pub`, `email_pub`) + `adr1`, `adr2`, `adr3`, `postcode`, `city`, `country`, `region`, `email`, `web`, `pub`, `adr_pub`, `email_pub`) SELECT u.user_id, {?}, {?}, {?}, s.id, ss.id, f.id, {?}, {?}, {?}, {?}, {?}, gp.a2, gr.region, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?} FROM auth_user_md5 AS u @@ -605,10 +626,19 @@ function add_user_pro($uid, $entrid, $pro) { WHERE u.user_id = {?} LIMIT 1", $entrid, $pro['entreprise'], $pro['poste'], - $pro['adr1'], $pro['adr2'], $pro['adr3'], $pro['postcode'], $pro['city'], $pro['tel'], $pro['fax'], $pro['mobile'], $pro['email'], $pro['web'], $pro['pub'], $pro['adr_pub'], $pro['tel_pub'], $pro['email_pub'], + $pro['adr1'], $pro['adr2'], $pro['adr3'], $pro['postcode'], $pro['city'], $pro['email'], $pro['web'], $pro['pub'], $pro['adr_pub'], $pro['email_pub'], $pro['secteur'], $pro['sous_secteur'], $pro['fonction'], $pro['fonction'], $pro['countrytxt'], $pro['countrytxt'], $pro['region'], $uid); + if (isset($pro['tels']) && is_array($pro['tels'])) { + $telid = 0; + foreach ($pro['tels'] as $tel) { + if ($pro['tel']) { + add_user_tel($uid, 'pro', $entrid, $telid, $tel); + $telid ++; + } + } + } } // }}} // {{{ function update_user_pro() @@ -646,13 +676,6 @@ function update_user_pro($uid, $entrid, $pro) { $args_set[] = $pro['adr_pub']; } - if (isset($pro['tel'])) { - $set .= ", e.`tel` = {?}, e.`fax` = {?}, e.`mobile` = {?}, e.tel_pub = {?}"; - $args_set[] = $pro['tel']; - $args_set[] = $pro['fax']; - $args_set[] = $pro['mobile']; - $args_set[] = $pro['tel_pub']; - } if (isset($pro['email'])) { $set .= ", e.`email` = {?}, e.`email_pub` = {?}"; $args_set[] = $pro['email']; @@ -662,14 +685,32 @@ function update_user_pro($uid, $entrid, $pro) { $args_where = array($uid, $entrid); $args = array_merge(array($query), $args_join, $args_set, $args_where); call_user_func_array(array('XDB', 'execute'), $args); + + + if (isset($pro['tels']) && is_array($pro['tels'])) { + $res = XDB::query("SELECT tel_id FROM profile_phones WHERE uid = {?} AND link_type = 'pro' AND link_id = {?} ORDER BY tel_id", $uid, $entrid); + $telids = $res->fetchColumn(); + foreach ($pro['tels'] as $tel) { + if (isset($tel['telid']) && isset($tel['remove']) && $tel['remove']) { + remove_user_tel($uid, 'pro', $entrid, $tel['telid']); + if (isset($telids[$tel['telid']])) unset($telids[$tel['telid']]); + } else if (isset($tel['telid'])) { + update_user_tel($uid, 'pro', $entrid, $tel['telid'], $tel); + } else { + for ($telid = 0; isset($telids[$telid]) && ($telids[$telid] == $telid); $telid++); + add_user_tel($uid, 'pro', $entrid, $telid, $tel); + } + } + } } // }}} // {{{ function remove_user_pro() function remove_user_pro($uid, $entrid) { XDB::execute("DELETE FROM entreprises WHERE entrid = {?} AND uid = {?}", $entrid, $uid); + XDB::execute("DELETE FROM profile_phones WHERE link_id = {?} AND uid = {?} AND link_type = 'pro'", $entrid, $uid); } // }}} -// {{{ function set_user_details() +// {{{ function set_user_details_addresses() function set_user_details_addresses($uid, $adrs) { $res = XDB::query("SELECT adrid FROM adresses WHERE uid = {?} AND adrid >= 1 ORDER BY adrid", $uid); $adrids = $res->fetchColumn(); @@ -714,9 +755,6 @@ function set_user_details($uid, $details) { if (isset($details['nom_usage'])) { XDB::execute("UPDATE auth_user_md5 SET nom_usage = {?} WHERE user_id = {?}", strtoupper($details['nom_usage']), $uid); } - if (isset($details['mobile'])) { - XDB::execute("UPDATE auth_user_quick SET profile_mobile = {?} WHERE user_id = {?}", $details['mobile'], $uid); - } if (isset($details['nationalite'])) { XDB::execute( "UPDATE auth_user_md5 AS u @@ -747,6 +785,22 @@ function set_user_details($uid, $details) { $uid, $groupex); } } + if (isset($details['tels']) && is_array($details['tels'])) { + $res = XDB::query("SELECT tel_id FROM profile_phones WHERE uid = {?} AND link_type = 'user' ORDER BY tel_id", $uid); + $telids = $res->fetchColumn(); + foreach ($details['tels'] as $tel) { + if (isset($tel['telid']) && isset($tel['remove']) && $tel['remove']) { + remove_user_tel($uid, 'user', 0, $tel['telid']); + if (isset($telids[$tel['telid']])) unset($telids[$tel['telid']]); + } else if (isset($tel['telid'])) { + update_user_tel($uid, 'user', 0, $tel['telid'], $tel); + } else { + for ($telid = 0; isset($telids[$telid]) && ($telids[$telid] == $telid); $telid++); + add_user_tel($uid, 'user', 0, $telid, $tel); + } + } + } + // applis // medals }