forlifeEmail()); // TODO: clear profile. $tables_to_clear = array('uid' => array('competences_ins', 'profile_job', 'langues_ins', 'profile_mentor_country', 'profile_mentor_sector', 'profile_mentor', 'perte_pass', 'watch_sub'), 'user_id' => array('requests', 'user_changes')); if ($really_del) { array_push($tables_to_clear['uid'], 'emails', '#groupex#.membres', 'contacts', 'adresses', 'profile_phones', 'photo', 'perte_pass', 'langues_ins', 'forum_subs', 'forum_profiles'); array_push($tables_to_clear['user_id'], 'newsletter_ins', 'binets_ins'); $tables_to_clear['id'] = array('aliases'); $tables_to_clear['contact'] = array('contacts'); XDB::execute("UPDATE accounts SET registration_date = 0, state = 'pending', password = NULL, weak_password = NULL, token = NULL, is_admin = 0 WHERE uid = {?}", $uid); XDB::execute("DELETE virtual.* FROM virtual INNER JOIN virtual_redirect AS r USING(vid) WHERE redirect = {?}", $alias.'@'.$globals->mail->domain); XDB::execute("DELETE virtual.* FROM virtual INNER JOIN virtual_redirect AS r USING(vid) WHERE redirect = {?}", $alias.'@'.$globals->mail->domain2); } else { XDB::execute("UPDATE accounts SET password = NULL, weak_password = NULL, token = NULL WHERE uid = {?}", $uid); } XDB::execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain); XDB::execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain2); /* TODO: handle both account and profile foreach ($tables_to_clear as $key=>&$tables) { foreach ($tables as $table) { XDB::execute("DELETE FROM $table WHERE $key={?}", $uid); } }*/ $mmlist = new MMList($user); $mmlist->kill($alias, $really_del); // Deactivates, when available, the Google Apps account of the user. if ($globals->mailstorage->googleapps_domain) { require_once 'googleapps.inc.php'; if (GoogleAppsAccount::account_status($uid)) { $account = new GoogleAppsAccount($user); $account->suspend(); } } } // }}} // {{{ function _user_reindex function _user_reindex($uid, $keys) { foreach ($keys as $i => $key) { if ($key['name'] == '') { continue; } $toks = preg_split('/[ \'\-]+/', $key['name']); $token = ""; $first = 5; while ($toks) { $token = strtolower(replace_accent(array_pop($toks) . $token)); $score = ($toks ? 0 : 10 + $first) * ($key['score'] / 10); XDB::execute("REPLACE INTO search_name (token, uid, soundex, score, flags) VALUES ({?}, {?}, {?}, {?}, {?})", $token, $uid, soundex_fr($token), $score, $key['public']); $first = 0; } } } // }}} // {{{ function user_reindex function user_reindex($uid) { XDB::execute("DELETE FROM search_name WHERE uid = {?}", $uid); $res = XDB::iterator("SELECT CONCAT(n.particle, n.name) AS name, e.score, FIND_IN_SET('public', e.flags) AS public FROM profile_name AS n INNER JOIN profile_name_enum AS e ON (n.typeid = e.id) WHERE n.pid = {?}", $uid); _user_reindex($uid, $res); } // }}} // {{{ function get_X_mat function get_X_mat($ourmat) { if (!preg_match('/^[0-9]{8}$/', $ourmat)) { // le matricule de notre base doit comporter 8 chiffres return 0; } $year = intval(substr($ourmat, 0, 4)); $rang = intval(substr($ourmat, 5, 3)); if ($year < 1996) { return; } elseif ($year < 2000) { $year = intval(substr(1900 - $year, 1, 3)); return sprintf('%02u0%03u', $year, $rang); } else { $year = intval(substr(1900 - $year, 1, 3)); return sprintf('%03u%03u', $year, $rang); } } // }}} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>