xdb->query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $uid); $alias = $res->fetchOneCell(); if ($really_del) { $globals->xdb->execute("DELETE FROM emails WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM newsletter_ins WHERE user_id={?}", $uid); } $globals->xdb->execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain); $globals->xdb->execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain2); $globals->xdb->execute("UPDATE auth_user_md5 SET password='',smtppass='' WHERE user_id={?}", $uid); $globals->xdb->execute("UPDATE auth_user_quick SET watch_flags='' WHERE user_id={?}", $uid); $globals->xdb->execute("DELETE FROM competences_ins WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM entreprises WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM langues_ins WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM mentor_pays WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM mentor_secteur WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM mentor WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM perte_pass WHERE uid={?}", $uid); $globals->xdb->execute("DELETE FROM requests WHERE user_id={?}", $uid); $globals->xdb->execute("DELETE FROM user_changes WHERE user_id={?}", $uid); $globals->xdb->execute("DELETE FROM watch_sub WHERE uid={?}", $uid); include_once('lists.inc.php'); if (function_exists(lists_xmlrpc)) { $client =& lists_xmlrpc(Session::getInt('id'), Session::get('password')); $client->kill($alias, $really_del); } } // }}} // {{{ function get_user_login() function get_user_login($data, $get_forlife = false) { global $globals, $page; if (preg_match(',^[0-9]*$,', $data)) { $res = $globals->xdb->query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $data); if ($res->numRows()) { return $res->fetchOneCell(); } else { $page->trig("il n'y a pas d'utilisateur avec cet id"); return false; } } $data = trim(strtolower($data)); if (strstr($data, '@')===false) { $data = $data.'@'.$globals->mail->domain; } list($mbox, $fqdn) = explode('@', $data); if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) { $res = $globals->xdb->query("SELECT a.alias FROM aliases AS a INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) WHERE a.type = 'a_vie'", $mbox); if ($res->numRows()) { return $get_forlife ? $res->fetchOneCell() : $mbox; } else { $page->trig("il n'y a pas d'utilisateur avec ce login"); return false; } } elseif ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) { $res = $globals->xdb->query("SELECT redirect FROM virtual_redirect INNER JOIN virtual USING(vid) WHERE alias={?}", $mbox.'@'.$globals->mail->alias_dom); if ($redir = $res->fetchOneCell()) { list($alias) = explode('@', $redir); } else { $page->trig("il n'y a pas d'utilisateur avec cet alias"); $alias = false; } return $alias; } else { $res = $globals->xdb->query("SELECT alias FROM aliases AS a INNER JOIN emails AS e ON e.uid=a.id WHERE e.email={?} AND a.type='a_vie'", $data); switch ($i = $res->numRows()) { case 0: $page->trig("il n'y a pas d'utilisateur avec cette addresse mail"); return false; case 1: return $res->fetchOneCell(); default: if (has_perms()) { $aliases = $res->fetchColumn(); $page->trig("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases)); } else { $res->free(); } } } return false; } // }}} // {{{ function get_user_forlife() function get_user_forlife($data) { return get_user_login($data, true); } // }}} // {{{ function get_user_details_pro() function get_user_details_pro($uid) { global $globals; $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, 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 = $globals->xdb->query($sql, $uid); return $res->fetchAllAssoc(); } // }}} // {{{ function get_user_details() function &get_user_details($login, $from_uid = '') { global $globals; $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') 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_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, c.uid IS NOT NULL AS is_contact, s.text AS section, p.x, p.y, p.pub AS photo_pub, m.expertise != '' AS is_referent 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') INNER JOIN aliases AS a2 ON (u.user_id=a2.id AND FIND_IN_SET('bestalias',a2.flags)) LEFT JOIN contacts AS c ON (c.uid = {?} and c.contact = u.user_id) LEFT JOIN geoloc_pays AS gp ON (gp.a2 = u.nationalite) INNER JOIN sections AS s ON (s.id = u.section) LEFT JOIN photo AS p ON (p.uid = u.user_id) LEFT JOIN mentor AS m ON (m.uid = u.user_id) WHERE a.alias = {?}"; $res = $globals->xdb->query($reqsql, $from_uid, $login); $user = $res->fetchOneAssoc(); $uid = $user['user_id']; $user['adr_pro'] = get_user_details_pro($uid); $sql = "SELECT a.adr1,a.adr2,a.adr3,a.postcode,a.city, gp.pays AS countrytxt,a.region, a.regiontxt, a.tel,a.fax, FIND_IN_SET('active', a.statut) AS active, a.adrid, FIND_IN_SET('res-secondaire', a.statut) AS secondaire, a.pub, a.tel_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 = $globals->xdb->query($sql, $uid); $user['adr'] = $res->fetchAllAssoc(); $sql = "SELECT text FROM binets_ins LEFT JOIN binets_def ON binets_ins.binet_id = binets_def.id WHERE user_id = {?}"; $res = $globals->xdb->query($sql, $uid); $user['binets'] = $res->fetchColumn(); $user['binets_join'] = join(', ', $user['binets']); $res = $globals->xdb->iterRow("SELECT text, url FROM groupesx_ins LEFT JOIN groupesx_def ON groupesx_ins.gid = groupesx_def.id WHERE guid = {?}", $uid); $user['gpxs'] = Array(); while (list($gxt, $gxu) = $res->next()) { $user['gpxs'][] = $gxu ? "$gxt" : $gxt; } $user['gpxs_join'] = join(', ', $user['gpxs']); $res = $globals->xdb->iterRow("SELECT applis_def.text, applis_def.url, applis_ins.type FROM applis_ins INNER JOIN applis_def ON applis_def.id = applis_ins.aid WHERE uid={?} ORDER BY ordre", $uid); $user['applis_fmt'] = Array(); while (list($txt, $url, $type) = $res->next()) { require_once('applis.func.inc.php'); $user['applis_fmt'][] = applis_fmt($type, $txt, $url); } $user['applis_join'] = join(', ', $user['applis_fmt']); $res = $globals->xdb->iterator("SELECT m.id, m.text AS medal, m.type, m.img, s.gid, g.text AS grade FROM profile_medals_sub AS s INNER JOIN profile_medals AS m ON ( s.mid = m.id ) LEFT JOIN profile_medals_grades AS g ON ( s.mid = g.mid AND s.gid = g.gid ) WHERE s.uid = {?}", $uid); $user['medals'] = Array(); while ($tmp = $res->next()) { $user['medals'][] = $tmp; } return $user; } // }}} // {{{ function _user_reindex function _user_reindex($uid, $keys, $muls) { global $globals; foreach ($keys as $i => $key) { if ($key == '') { continue; } $toks = preg_split('/[ \'\-]+/', $key); $token = ""; $first = 5; while ($toks) { $token = strtolower(replace_accent(array_pop($toks) . $token)); $score = ($toks ? 0 : 10 + $first) * $muls[$i]; mysql_query("REPLACE INTO search_name (token, uid, score) VALUES('$token',$uid,$score)"); $first = 0; } } } // }}} // {{{ function user_reindex function user_reindex($uid) { global $globals; $globals->xdb->execute("DELETE FROM search_name WHERE uid={?}", $uid); $res = $globals->xdb->query("SELECT prenom, nom, nom_usage, profile_nick FROM auth_user_md5 INNER JOIN auth_user_quick USING(user_id) WHERE auth_user_md5.user_id = {?}", $uid); _user_reindex($uid, $res->fetchOneRow(), array(1,1,1,0.2)); } // }}} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker: ?>