all: build
- build: core conf banana wiki openid medals jquery
+ build: core conf static banana wiki openid medals jquery
+check:
+ @!(find . -name '*.php' -exec php -l {} ";" | grep -v 'No syntax errors detected')
+
q:
@echo -e "Code statistics\n"
@sloccount $(filter-out wiki/ spool/, $(wildcard */)) 2> /dev/null | egrep '^[a-z]*:'
$proxy = 'proxy';
}
- XDB::execute("INSERT INTO logger.sessions
- XDB::execute("INSERT INTO #logger#.sessions
- SET uid={?}, host={?}, ip={?}, forward_ip={?}, forward_host={?}, browser={?}, suid={?}, flags={?}",
++ XDB::execute("INSERT INTO #logger#.sessions
+ SET uid={?}, host={?}, ip={?}, forward_ip={?}, forward_host={?}, browser={?}, suid={?}, flags={?}",
$uid, $host, ip_to_uint($ip), ip_to_uint($forward_ip), $forward_host, $browser, $suid, $proxy);
if ($forward_ip) {
$this->proxy_ip = $ip;
public function log($action, $data = null)
{
if (isset($this->actions[$action])) {
- XDB::execute("INSERT INTO logger.events
- XDB::execute("INSERT INTO #logger#.events
- SET session={?}, action={?}, data={?}",
++ XDB::execute("INSERT INTO #logger#.events
+ SET session={?}, action={?}, data={?}",
$this->session, $this->actions[$action], $data);
} else {
trigger_error("PlLogger: unknown action, $action", E_USER_WARNING);
if (!S::logged()) {
return;
}
- $res = XDB::iterRow(
- "SELECT a.nom, a.diminutif
- FROM #groupex#.asso AS a
- INNER JOIN #groupex#.membres AS m ON m.asso_id = a.id
- WHERE m.uid={?}", S::v('uid'));
+ $res = XDB::iterRow('SELECT a.nom, a.diminutif
- FROM groupex.asso AS a
- INNER JOIN groupex.membres AS m ON m.asso_id = a.id
++ FROM #groupex#.asso AS a
++ INNER JOIN #groupex#.membres AS m ON m.asso_id = a.id
+ WHERE m.uid = {?}', S::i('uid'));
$links = '<a href="exit">déconnexion</a>';
$html = '<div>Mes groupes (' . $links . ') :</div>';
while (list($nom, $mini) = $res->next()) {
}
// Retrieves main user properties.
- $res = XDB::query("SELECT u.user_id AS uid, u.hruid, prenom, prenom_ini, nom, nom_ini, nom_usage, perms, promo, promo_sortie,
- matricule, password, FIND_IN_SET('femme', u.flags) AS femme,
- q.core_mail_fmt AS mail_fmt, UNIX_TIMESTAMP(q.banana_last) AS banana_last, q.watch_last, q.core_rss_hash,
- FIND_IN_SET('watch', u.flags) AS watch_account, q.last_version, g.g_account_name IS NOT NULL AS googleapps,
- UNIX_TIMESTAMP(s.start) AS lastlogin, s.host
- FROM auth_user_md5 AS u
- INNER JOIN auth_user_quick AS q USING(user_id)
- LEFT JOIN gapps_accounts AS g ON (u.user_id = g.l_userid AND g.g_status = 'active')
- LEFT JOIN #logger#.last_sessions AS ls ON (ls.uid = u.user_id)
+ /** TODO: Move needed informations to account tables */
+ /** TODO: Currently suppressed data are matricule, promo */
+ /** TODO: Use the User object to fetch all this */
+ $res = XDB::query("SELECT a.uid, a.hruid, a.display_name, a.full_name,
+ a.sex = 'female' AS femme, a.email_format,
+ a.token, FIND_IN_SET('watch', a.flags) AS watch_account,
+ UNIX_TIMESTAMP(fp.last_seen) AS banana_last, UNIX_TIMESTAMP(w.last) AS watch_last,
+ a.last_version, g.g_account_name IS NOT NULL AS googleapps,
+ UNIX_TIMESTAMP(s.start) AS lastlogin, s.host,
+ a.is_admin, at.perms
+ FROM accounts AS a
+ INNER JOIN account_types AS at ON(a.type = at.type)
+ INNER JOIN watch AS w ON(w.uid = a.uid)
+ LEFT JOIN forum_profiles AS fp ON(fp.uid = a.uid)
+ LEFT JOIN gapps_accounts AS g ON(a.uid = g.l_userid AND g.g_status = 'active')
- LEFT JOIN logger.last_sessions AS ls ON (ls.uid = a.uid)
- LEFT JOIN logger.sessions AS s ON(s.id = ls.id)
++ LEFT JOIN #logger#.last_sessions AS ls ON (ls.uid = a.uid)
+ LEFT JOIN #logger#.sessions AS s ON(s.id = ls.id)
- WHERE u.user_id = {?} AND u.perms IN('admin', 'user')", $uid);
+ WHERE a.uid = {?} AND a.state = 'active'", $user->id());
if ($res->numRows() != 1) {
return false;
}
+ # Versioning links
+ /0.10.*
+
# jQuery and its plugins are downloaded by the Makefile
/jquery.*js
+/ui.*js
!/jquery.autocomplete.js
}
}
- $req = XDB::query("
- SELECT nom, mail, sig,
- FIND_IN_SET('threads', flags),
- FIND_IN_SET('automaj', flags),
- FIND_IN_SET('xface', flags),
- tree_unread,
- tree_read
- FROM #forums#.profils
- WHERE uid = {?}", S::v('uid'));
- if (!(list($nom, $mail, $sig, $disp, $maj, $xface, $unread, $read) = $req->fetchOneRow())) {
- $nom = S::v('prenom').' '.S::v('nom');
- $mail = S::user()->forlifeEmail();
- $sig = $nom.' ('.S::v('promo').')';
- $disp = 0;
- $maj = 0;
- $xface = 0;
- $unread = 'o';
- $read = 'dg';
- }
- $page->assign('nom' , $nom);
- $page->assign('mail', $mail);
- $page->assign('sig', $sig);
- $page->assign('disp', $disp);
- $page->assign('maj', $maj);
- $page->assign('xface', $xface);
- $page->assign('unread', $unread);
- $page->assign('read', $read);
+ $infos = $this->fetchProfile();
- $page->assign('nom' , $infos['name']);
- $page->assign('mail', $infos['mail']);
- $page->assign('sig', $infos['sig']);
- $page->assign('disp', $infos['threads']);
- $page->assign('maj', $infos['maj']);
- $page->assign('xface', $infos['xface']);
++ $page->assign('nom' , $infos['name']);
++ $page->assign('mail', $infos['mail']);
++ $page->assign('sig', $infos['sig']);
++ $page->assign('disp', $infos['threads']);
++ $page->assign('maj', $infos['maj']);
++ $page->assign('xface', $infos['xface']);
+ $page->assign('unread', $infos['tree_unread']);
- $page->assign('read', $infos['tree_read']);
++ $page->assign('read', $infos['tree_read']);
return null;
}
}
return false;
}
if (isset($headers['x-face'])) {
- $res = XDB::query("SELECT p.uid
- FROM #forums#.profils AS p
- INNER JOIN #x4dat#.aliases AS a ON (p.uid = a.id)
- WHERE FIND_IN_SET('xface', p.flags) AND a.alias = {?}",
- $login);
+ $user = User::getSilent($login);
- $res = XDB::query('SELECT pf.uid
++ $res = XDB::query("SELECT pf.uid
+ FROM forum_profiles AS pf
- WHERE pf.uid = {?} AND FIND_IN_SET(\'xface\', pf.flags)',
++ WHERE pf.uid = {?} AND FIND_IN_SET('xface', pf.flags)",
+ $user->id());
if ($res->numRows()) {
+ // User wants his xface to be showed, fallback to default handler
return false;
}
}
'user_id' => array('requests', 'user_changes'));
if ($really_del) {
- array_push($tables_to_clear['uid'], 'emails', 'groupex.membres', 'contacts', 'adresses', 'profile_phones',
+ 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');
+ '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 auth_user_md5
- SET date_ins = 0, promo_sortie = 0, nom_usage = '', password = '', perms = 'pending',
- nationalite = '', nationalite2 = '', nationalite3 = '', cv = '', section = 0,
- date = 0, smtppass = '', mail_storage = ''
- WHERE user_id = {?}", $uid);
+ 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 = {?}",
}
}
- // Fetches user data.
- $userinfo_query = "SELECT *, FIND_IN_SET('watch', flags) AS watch, FIND_IN_SET('femme', flags) AS sexe,
- (year(naissance) > promo - 15 or year(naissance) < promo - 25) AS naiss_err
- FROM auth_user_md5
- WHERE user_id = {?}";
- $mr = XDB::query($userinfo_query, $user->id())->fetchOneAssoc();
- $redirect = ($registered ? new Redirect($user) : null);
-
- // Processes admin requests, if any.
- foreach($_POST as $key => $val) {
- S::assert_xsrf_token();
-
- switch ($key) {
- // Email redirection actions.
- case "add_fwd":
- $email = trim(Env::v('email'));
- if (!isvalid_email_redirection($email)) {
- $page->trigError("Email non valide: $email");
- } else {
- $redirect->add_email($email);
- $page->trigSuccess("Ajout de $email effectué");
- }
- break;
-
- case "del_fwd":
- if (!empty($val)) {
- $redirect->delete_email($val);
- }
- break;
-
- case "activate_fwd":
- if (!empty($val)) {
- $redirect->modify_one_email($val, true);
- }
- break;
- case "deactivate_fwd":
- if (!empty($val)) {
- $redirect->modify_one_email($val, false);
- }
- break;
- case "disable_fwd":
- $redirect->disable();
- break;
- case "enable_fwd":
- $redirect->enable();
- break;
- case "clean_fwd":
- if (!empty($val)) {
- $redirect->clean_errors($val);
- }
- break;
-
- // Alias actions.
- case "add_alias":
- global $globals;
-
- // Splits new alias in user and fqdn.
- $alias = trim(Env::v('email'));
- if (strpos($alias, '@') !== false) {
- list($alias, $domain) = explode('@', $alias);
- } else {
- $domain = $globals->mail->domain;
- }
-
- // Checks for alias' user validity.
- if (!preg_match('/[-a-z0-9\.]+/s', $alias)) {
- $page->trigError("'$alias' n'est pas un alias valide");
- break;
- }
-
- // Eventually adds the alias to the right domain.
- if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) {
- $req = new AliasReq($user, $alias, 'Admin request', false);
- if ($req->commit()) {
- $page->trigSuccess("Nouvel alias '$alias@$domain' attribué");
- } else {
- $page->trigError("Impossible d'ajouter l'alias '$alias@$domain', il est probablement déjà attribué");
- }
- } elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
- $res = XDB::execute("INSERT INTO aliases (id,alias,type) VALUES ({?}, {?}, 'alias')",
- $user->id(), $alias);
- if ($res) {
- $page->trigSuccess("Nouvel alias '$alias' ajouté");
- } else {
- $page->trigError("Impossible d'ajouter l'alias '$alias', il est probablement déjà attribué");
- }
- } else {
- $page->trigError("Le domaine '$domain' n'est pas valide");
- }
- break;
-
- case "del_alias":
- if (!empty($val)) {
- XDB::execute("DELETE FROM aliases
- WHERE id = {?} AND alias = {?} AND
- type NOT IN ('a_vie', 'homonyme')",
- $user->id(), $val);
- XDB::execute("UPDATE emails
- SET rewrite = ''
- WHERE uid = {?} AND rewrite LIKE CONCAT({?}, '@%')",
- $user->id(), $val);
- fix_bestalias($user);
- $page->trigSuccess("L'alias '$val' a été supprimé");
- }
- break;
-
- case "best":
- XDB::execute("UPDATE aliases
- SET flags = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', flags, ','), ',bestalias,', ','))
- WHERE id = {?}", $user->id());
- XDB::execute("UPDATE aliases
- SET flags = CONCAT_WS(',', IF(flags = '', NULL, flags), 'bestalias')
- WHERE id = {?} AND alias = {?}", $user->id(), $val);
-
- // As having a non-null bestalias value is critical in
- // plat/al's code, we do an a posteriori check on the
- // validity of the bestalias.
- fix_bestalias($user);
- break;
-
- // Profile edition.
- case "u_edit":
- // Loads new values from environment.
- require_once('secure_hash.inc.php');
- $pass_encrypted = Env::v('newpass_clair') != "********" ? hash_encrypt(Env::v('newpass_clair')) : Env::v('passw');
- $naiss = Env::v('naissanceN');
- $deces = Env::v('decesN');
- $perms = Env::v('permsN');
- $prenom = Env::v('prenomN');
- $nom = Env::v('nomN');
- $nomusage = Env::v('nomusageN');
- $promo = Env::i('promoN');
- $sexe = Env::v('sexeN');
- $comm = trim(Env::v('commentN'));
- $watch = Env::v('watchN');
-
- $flags = ($sexe ? 'femme' : '');
- if ($watch) {
- $flags .= ($flags ? ',watch' : 'watch');
- }
- if ($watch && !$comm) {
- $page->trigError("Il est nécessaire de mettre un commentaire pour surveiller un compte");
- break;
- }
-
- // Fetches fields to watch for changes.
- $watch_query = "SELECT naissance, deces, password, perms, nom_usage,
- prenom, nom, flags, promo, comment
- FROM auth_user_md5
- WHERE user_id = {?}";
- $old_fields = XDB::query($watch_query, $user->id())->fetchOneAssoc();
-
- // If user was newly banned, we need to ensure her php session
- // is killed. This hack is ugly (and largely overkill); it should
- // however suits our needs.
- if ($perms == 'disabled' && $old_fields['perms'] != 'disabled') {
- kill_sessions();
-
- // Also serve a reminder to the admin: disabling an account
- // does not deactivate email forwarding.
- $page->trigWarning("N'oubliez pas, le cas échéant, de désactiver les redirections et le compte GoogleApps de l'utilisateur.");
- }
-
- // Updates the user profile with the new values.
- $res = XDB::execute("UPDATE auth_user_md5
- SET naissance = {?}, deces = {?}, password = {?},
- perms = {?}, prenom = {?}, nom = {?}, nom_usage = {?},
- flags = {?}, promo = {?}, comment = {?}
- WHERE user_id = {?}",
- $naiss, $deces, $pass_encrypted,
- $perms, $prenom, $nom, $nomusage,
- $flags, $promo, $comm, $user->id());
- if ($res) {
- require_once("user.func.inc.php");
- user_reindex($user->id());
- $new_fields = XDB::query($watch_query, $user->id())->fetchOneAssoc();
-
- // Redacts the password in the notification, to avoid transmitting
- // sensitive information by email.
- $new_fields['password'] = ($old_fields['password'] != $new_fields['password'] ? 'new' : 'old');
- $old_fields['password'] = 'old';
-
- // Notifies the admins of the profile update.
- $mailer = new PlMailer("admin/useredit.mail.tpl");
- $mailer->assign("admin", S::user()->login());
- $mailer->assign("user", $user->login());
- $mailer->assign('old', $old_fields);
- $mailer->assign('new', $new_fields);
- $mailer->send();
-
- $globals->updateNbIns();
- $page->trigSuccess("La mise à jour a été faite avec succès.");
- } else {
- $page->trigError("La mise à jour a échoué. S'il te plaît, vérifie les valeurs.");
- }
-
- // Checks for changes, and updates other tables of plat/al.
- if (Env::v('nomusageN') != $mr['nom_usage']) {
- set_new_usage($user->id(), Env::v('nomusageN'), make_username(Env::v('prenomN'), Env::v('nomusageN')));
- }
- if (Env::v('decesN') != $mr['deces']) {
- require_once 'notifs.inc.php';
- register_watch_op($user->id(), WATCH_DEATH, $mr['deces']);
- user_clear_all_subs($user->id(), false);
- }
-
- // Eventually updates the Google Apps account.
- if ($globals->mailstorage->googleapps_domain) {
- // If the user did choose to use synchronized passwords,
- // and the password was changed, updates the Google Apps
- // password as well.
- if (Env::v('newpass_clair') != "********") {
- require_once 'googleapps.inc.php';
- $account = new GoogleAppsAccount($user);
- if ($account->active() && $account->sync_password) {
- $account->set_password($pass_encrypted);
- }
- }
- }
-
-
- // Reloads the user profile, to ensure the latest version will
- // be served to the administrator.
- $mr = XDB::query($userinfo_query, $user->id())->fetchOneAssoc();
+ // Account Form {{{
+ $to_update = array();
+ if (Post::has('disable_weak_access')) {
+ $to_update['weak_password'] = null;
+ } else if (Post::has('update_account')) {
+ if (Post::s('full_name') != $user->fullName()) {
+ // XXX: Update profile if a profile is associated
+ $to_update['full_name'] = Post::s('full_name');
+ }
+ if (Post::s('display_name') != $user->displayName()) {
+ // XXX: Update profile if a profile is associated
+ $to_update['display_name'] = Post::s('display_name');
+ }
+ if (Post::s('sex') != ($user->isFemale() ? 'female' : 'male')) {
+ $to_update['sex'] = Post::s('sex');
+ }
+ if (!Post::blank('hashpass')) {
+ $to_update['password'] = Post::s('hashpass');
+ // TODO: Propagate the password update to GoogleApps, when required. Eg:
+ // $account = new GoogleAppsAccount($user);
+ // if ($account->active() && $account->sync_password) {
+ // $account->set_password($pass_encrypted);
+ // }
+ }
+ if (!Post::blank('weak_password')) {
+ $to_update['weak_password'] = Post::s('weak_password');
+ }
+ if (Post::i('token_access', 0) != ($user->token_access ? 1 : 0)) {
+ $to_update['token'] = Post::i('token_access') ? rand_url_id(16) : null;
+ }
+ if (Post::i('skin', 0) != $user->skin) {
+ $to_update['skin'] = Post::i('skin', 0);
+ if ($to_update['skin'] == 0) {
+ $to_update['skin'] = null;
+ }
+ }
+ if (Post::s('state') != $user->state) {
+ $to_update['state'] = Post::s('state');
+ }
+ if (Post::i('is_admin', 0) != ($user->is_admin ? 1 : 0)) {
+ $to_update['is_admin'] = Post::b('is_admin');
+ }
+ if (Post::s('type') != $user->type) {
+ $to_update['type'] = Post::s('type');
+ }
+ if (Post::i('watch', 0) != ($user->watch ? 1 : 0)) {
+ $to_update['flags'] = new PlFlagset();
+ $to_update['flags']->addFlag('watch', Post::i('watch'));
+ }
+ if (Post::t('comment') != $user->comment) {
+ $to_update['comment'] = Post::blank('comment') ? null : Post::t('comment');
+ }
+ }
+ if (!empty($to_update)) {
+ // TODO: fetch the initial values of the fields, and eventually send
+ // a summary of the changes to an admin.
+ $set = array();
+ foreach ($to_update as $k => $value) {
+ $set[] = XDB::format($k . ' = {?}', $value);
+ }
+ XDB::execute('UPDATE accounts
+ SET ' . implode(', ', $set) . '
+ WHERE uid = ' . XDB::format('{?}', $user->id()));
+ $page->trigSuccess('Données du compte mise à jour avec succès');
+ $user = User::getWithUID($user->id());
+ }
+ // }}}
+
+ // Profile form {{{
+ if (Post::has('add_profile') || Post::has('del_profile') || Post::has('owner')) {
+ if (Post::i('del_profile', 0) != 0) {
+ XDB::execute('DELETE FROM account_profiles
+ WHERE uid = {?} AND pid = {?}',
+ $user->id(), Post::i('del_profile'));
+ } else if (!Post::blank('new_profile')) {
+ $profile = Profile::get(Post::t('new_profile'));
+ if (!$profile) {
+ $page->trigError('Le profil ' . Post::t('new_profile') . ' n\'existe pas');
+ } else {
+ XDB::execute('INSERT IGNORE INTO account_profiles (uid, pid)
+ VALUES ({?}, {?})',
+ $user->id(), $profile->id());
+ }
+ }
+ XDB::execute('UPDATE account_profiles
+ SET perms = IF(pid = {?}, CONCAT(perms, \',owner\'), REPLACE(perms, \'owner\', \'\'))
+ WHERE uid = {?}',
+ Post::i('owner'), $user->id());
+ }
+ // }}}
- break;
+ // Email forwards form {{{
+ require_once("emails.inc.php");
+ $redirect = ($registered ? new Redirect($user) : null);
+ if (Post::has('add_fwd')) {
+ $email = Post::t('email');
+ if (!isvalid_email_redirection($email)) {
+ $page->trigError("Email non valide: $email");
+ } else {
+ $redirect->add_email($email);
+ $page->trigSuccess("Ajout de $email effectué");
+ }
+ } else if (!Post::blank('del_fwd')) {
+ $redirect->delete_email(Post::t('del_fwd'));
+ } else if (!Post::blank('activate_fwd')) {
+ $redirect->modify_one_email(Post::t('activate_fwd', true));
+ } else if (!Post::blank('deactivate_fwd')) {
+ $redirect->modify_one_email(Post::t('deactivate_fwd', false));
+ } else if (Post::has('disable_fwd')) {
+ $redirect->disable();
+ } else if (Post::has('enable_fwd')) {
+ $redirect->enable();
+ } else if (!Post::blank('clean_fwd')) {
+ $redirect->clean_errors(Post::t('clean_fwd'));
+ }
+ // }}}
+
+ // Email alias form {{{
+ if (Post::has('add_alias')) {
+ // Splits new alias in user and fqdn.
+ $alias = Env::t('email');
+ if (strpos($alias, '@') !== false) {
+ list($alias, $domain) = explode('@', $alias);
+ } else {
+ $domain = $globals->mail->domain;
+ }
- // User re-registration.
- case "u_kill":
- require_once('user.func.inc.php');
- user_clear_all_subs($user->id());
- $globals->updateNbIns();
- $page->trigSuccess($user->login() . ' a été désinscrit !');
-
- $mailer = new PlMailer("admin/useredit.mail.tpl");
- $mailer->assign("admin", S::user()->login());
- $mailer->assign("user", $user->login());
- $mailer->assign("deletion", true);
- $mailer->send();
- break;
+ // Checks for alias' user validity.
+ if (!preg_match('/[-a-z0-9\.]+/s', $alias)) {
+ $page->trigError("'$alias' n'est pas un alias valide");
+ }
- // Forum ban update.
- case "b_edit":
- XDB::execute("DELETE FROM #forums#.innd WHERE uid = {?}", $user->id());
- if (Env::v('write_perm') != "" || Env::v('read_perm') != "" || Env::v('commentaire') != "" ) {
- XDB::execute("INSERT INTO #forums#.innd
- SET ipmin = '0', ipmax = '4294967295',
- write_perm = {?}, read_perm = {?},
- comment = {?}, priority = '200', uid = {?}",
- Env::v('write_perm'), Env::v('read_perm'), Env::v('comment'), $user->id());
- }
- break;
+ // Eventually adds the alias to the right domain.
+ if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) {
+ $req = new AliasReq($user, $alias, 'Admin request', false);
+ if ($req->commit()) {
+ $page->trigSuccess("Nouvel alias '$alias@$domain' attribué");
+ } else {
+ $page->trigError("Impossible d'ajouter l'alias '$alias@$domain', il est probablement déjà attribué");
+ }
+ } elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
+ $res = XDB::execute("INSERT INTO aliases (id, alias, type)
+ VALUES ({?}, {?}, 'alias')",
+ $user->id(), $alias);
+ $page->trigSuccess("Nouvel alias '$alias' ajouté");
+ } else {
+ $page->trigError("Le domaine '$domain' n'est pas valide");
}
+ } else if (!Post::blank('del_alias')) {
+ XDB::execute("DELETE FROM aliases
+ WHERE id = {?} AND alias = {?} AND
+ type NOT IN ('a_vie', 'homonyme')",
+ $user->id(), $val);
+ XDB::execute("UPDATE emails
+ SET rewrite = ''
+ WHERE uid = {?} AND rewrite LIKE CONCAT({?}, '@%')",
+ $user->id(), $val);
+ fix_bestalias($user);
+ $page->trigSuccess("L'alias '$val' a été supprimé");
+ } else if (!Post::blank('best')) {
+ XDB::execute("UPDATE aliases
+ SET flags = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', flags, ','), ',bestalias,', ','))
+ WHERE id = {?}", $user->id());
+ XDB::execute("UPDATE aliases
+ SET flags = CONCAT_WS(',', IF(flags = '', NULL, flags), 'bestalias')
+ WHERE id = {?} AND alias = {?}", $user->id(), $val);
+ // As having a non-null bestalias value is critical in
+ // plat/al's code, we do an a posteriori check on the
+ // validity of the bestalias.
+ fix_bestalias($user);
}
+ // }}}
+
+ // Forum form {{{
+ if (Post::has('b_edit')) {
+ XDB::execute("DELETE FROM forum_innd
+ WHERE uid = {?}", $user->id());
+ if (Env::v('write_perm') != "" || Env::v('read_perm') != "" || Env::v('commentaire') != "" ) {
+ XDB::execute("INSERT INTO forum_innd
+ SET ipmin = '0', ipmax = '4294967295',
+ write_perm = {?}, read_perm = {?},
+ comment = {?}, priority = '200', uid = {?}",
+ Env::v('write_perm'), Env::v('read_perm'), Env::v('comment'), $user->id());
+ }
+ }
+ // }}}
+
+
+ $page->addJsLink('ui.core.js');
+ $page->addJsLink('ui.tabs.js');
-
// Displays last login and last host information.
$res = XDB::query("SELECT start, host
- FROM logger.sessions
+ FROM #logger#.sessions
WHERE uid = {?} AND suid = 0
ORDER BY start DESC
LIMIT 1", $user->id());
$page->setTitle('Administration - Décédés');
$res = XDB::iterator(
- "SELECT u.promo, u.nom, u.prenom, u.deces, u.hruid, DATE(MAX(s.start)) AS last
- FROM #x4dat#.auth_user_md5 AS u
- LEFT JOIN #logger#.sessions AS s ON (s.uid = u.user_id AND suid = 0)
- WHERE perms IN ('admin', 'user') AND deces <> 0
- GROUP BY u.user_id
- ORDER BY u.promo, u.nom");
+ "SELECT a.hruid, pd.promo, p.ax_id, pd.directory_name, p.deathdate, DATE(MAX(s.start)) AS last
- FROM accounts AS a
- INNER JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET('owner', ap.perms))
- INNER JOIN profiles AS p ON (p.pid = ap.pid)
- INNER JOIN profile_display AS pd ON (pd.pid = p.pid)
- LEFT JOIN logger.sessions AS s ON (s.uid = a.uid AND suid = 0)
++ FROM #x4dat#.accounts AS a
++ INNER JOIN #x4dat#.account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET('owner', ap.perms))
++ INNER JOIN #x4dat#.profiles AS p ON (p.pid = ap.pid)
++ INNER JOIN #x4dat#.profile_display AS pd ON (pd.pid = p.pid)
++ LEFT JOIN #logger#.sessions AS s ON (s.uid = a.uid AND suid = 0)
+ WHERE a.state = 'active' AND p.deathdate IS NOT NULL
+ GROUP BY a.uid
+ ORDER BY pd.promo, pd.sort_name");
$page->assign('dead', $res);
}
$table_editor->describe('text', 'Description du problème', false);
$table_editor->apply($page, $action, $id);
}
- function handler_logger_actions(&$page, $action = 'list', $id = null) {
+
+ function handler_logger_actions(&$page, $action = 'list', $id = null)
+ {
$page->setTitle('Administration - Actions');
$page->assign('title', 'Gestion des actions de logger');
- $table_editor = new PLTableEditor('admin/logger/actions','logger.actions','id');
+ $table_editor = new PLTableEditor('admin/logger/actions','#logger#.actions','id');
$table_editor->describe('text','intitulé',true);
$table_editor->describe('description','description',true);
$table_editor->apply($page, $action, $id);
$sql = "SELECT w.ip, IF(s.ip IS NULL,
IF(w.ip = s2.ip, s2.host, s2.forward_host),
IF(w.ip = s.ip, s.host, s.forward_host)),
- w.mask, w.detection, w.state, u.hruid
- FROM #x4dat#.ip_watch AS w
- LEFT JOIN #logger#.sessions AS s ON (s.ip = w.ip)
- LEFT JOIN #logger#.sessions AS s2 ON (s2.forward_ip = w.ip)
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON (u.user_id = s.uid)
- GROUP BY w.ip, u.hruid
- ORDER BY w.state, w.ip, u.hruid";
+ w.mask, w.detection, w.state, a.hruid
- FROM ip_watch AS w
- LEFT JOIN logger.sessions AS s ON (s.ip = w.ip)
- LEFT JOIN logger.sessions AS s2 ON (s2.forward_ip = w.ip)
- LEFT JOIN accounts AS a ON (a.uid = s.uid)
++ FROM #x4dat#.ip_watch AS w
++ LEFT JOIN #logger#.sessions AS s ON (s.ip = w.ip)
++ LEFT JOIN #logger#.sessions AS s2 ON (s2.forward_ip = w.ip)
++ LEFT JOIN #x4dat#.accounts AS a ON (a.uid = s.uid)
+ GROUP BY w.ip, a.hruid
+ ORDER BY w.state, w.ip, a.hruid";
$it = Xdb::iterRow($sql);
$table = array();
$page->assign('table', $table);
} elseif ($action == 'edit') {
$sql = "SELECT w.detection, w.state, w.last, w.description, w.mask,
- u1.hruid AS edit, u2.hruid AS hruid, s.host
- FROM #x4dat#.ip_watch AS w
- LEFT JOIN #x4dat#.auth_user_md5 AS u1 ON (u1.user_id = w.uid)
- LEFT JOIN #logger#.sessions AS s ON (w.ip = s.ip)
- LEFT JOIN #x4dat#.auth_user_md5 AS u2 ON (u2.user_id = s.uid)
+ a1.hruid AS edit, a2.hruid AS hruid, s.host
- FROM ip_watch AS w
- LEFT JOIN accounts AS a1 ON (a1.uid = w.uid)
- LEFT JOIN logger.sessions AS s ON (w.ip = s.ip)
- LEFT JOIN accounts AS a2 ON (a2.uid = s.uid)
++ FROM #x4dat#.ip_watch AS w
++ LEFT JOIN #x4dat#.accounts AS a1 ON (a1.uid = w.uid)
++ LEFT JOIN #logger#.sessions AS s ON (w.ip = s.ip)
++ LEFT JOIN #x4dat#.accounts AS a2 ON (a2.uid = s.uid)
WHERE w.ip = {?}
- GROUP BY u2.hruid
- ORDER BY u2.hruid";
+ GROUP BY a2.hruid
+ ORDER BY a2.hruid";
$it = Xdb::iterRow($sql, ip_to_uint($ip));
$props = array();
}
}
}
-
- $where = join(' OR ',$membres);
-
- $all = XDB::iterRow(
- "SELECT u.prenom,u.nom,a.alias
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON ( u.user_id = a.id AND a.type!='homonyme' )
- WHERE $where
- ORDER BY nom");
-
- $res = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<membres>\n\n";
-
- while (list ($prenom1,$nom1,$email1) = $all->next()) {
- $res .= "<membre>\n";
- $res .= "\t<nom>$nom1</nom>\n";
- $res .= "\t<prenom>$prenom1</prenom>\n";
- $res .= "\t<email>$email1</email>\n";
- $res .= "</membre>\n\n";
- }
-
$res .= "</membres>\n\n";
- header('Content-Type: text/xml; charset="UTF-8"');
+ pl_content_headers("text/xml");
echo $res;
}
exit;
}
echo ($ref = $matches[1]);
- $res = XDB::query("SELECT mail,text,confirmation
+ $res = XDB::query("SELECT mail, text, confirmation
- FROM paiement.paiements
+ FROM #paiement#.paiements
WHERE id={?}", $ref);
- if (!list($conf_mail,$conf_title,$conf_text) = $res->fetchOneRow()) {
+ if (!list($conf_mail, $conf_title, $conf_text) = $res->fetchOneRow()) {
cb_erreur("référence de commande inconnue");
}
/* on extrait le code de retour */
if ($champ906 != "0000") {
- $res = XDB::query("SELECT rcb.text,c.id,c.text
+ $res = XDB::query('SELECT rcb.text, c.id, c.text
- FROM paiement.codeRCB AS rcb
- LEFT JOIN paiement.codeC AS c ON (rcb.codeC = c.id)
+ FROM #paiement#.codeRCB AS rcb
- LEFT JOIN #paiement#.codeC AS c ON rcb.codeC=c.id
- WHERE rcb.id={?}", $champ906);
++ LEFT JOIN #paiement#.codeC AS c ON (rcb.codeC = c.id)
+ WHERE rcb.id = {?}', $champ906);
if (list($rcb_text, $c_id, $c_text) = $res->fetchOneRow()) {
cb_erreur("erreur lors du paiement : $c_text ($c_id)");
} else{
}
/* on fait l'insertion en base de donnees */
- XDB::execute("INSERT INTO paiement.transactions (id, uid, ref, fullref, montant, cle, comment)
- XDB::execute("INSERT INTO #paiement#.transactions (id,uid,ref,fullref,montant,cle,comment)
- VALUES ({?},{?},{?},{?},{?},{?},{?})",
- $champ901, $uid, $ref, $champ200, $montant, $champ905,Env::v('comment'));
++ XDB::execute("INSERT INTO #paiement#.transactions (id, uid, ref, fullref, montant, cle, comment)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})",
+ $champ901, $user->id(), $ref, $champ200, $montant, $champ905, Env::v('comment'));
// We check if it is an Xnet payment and then update the related ML.
$res = XDB::query('SELECT eid
}
$ref = $matches[1];
- $res = XDB::query("SELECT mail,text,confirmation
+ $res = XDB::query("SELECT mail, text, confirmation
- FROM paiement.paiements
+ FROM #paiement#.paiements
- WHERE id={?}", $ref);
+ WHERE id = {?}", $ref);
if (!list($conf_mail,$conf_title,$conf_text) = $res->fetchOneRow()) {
paypal_erreur("référence de commande inconnue");
}
/* on fait l'insertion en base de donnees */
- XDB::execute("INSERT INTO paiement.transactions (id, uid, ref, fullref, montant, cle, comment)
- XDB::execute("INSERT INTO #paiement#.transactions (id,uid,ref,fullref,montant,cle,comment)
- VALUES ({?},{?},{?},{?},{?},{?},{?})",
- $no_transaction, $uid, $ref, $fullref, $montant, $clef, Env::v('comment'));
++ XDB::execute("INSERT INTO #paiement#.transactions (id, uid, ref, fullref, montant, cle, comment)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})",
+ $no_transaction, $user->id(), $ref, $fullref, $montant, $clef, Env::v('comment'));
// We check if it is an Xnet payment and then update the related ML.
$res = XDB::query('SELECT eid
foreach($tit as $foo) {
$pid = $foo['id'];
if (may_update()) {
- $res = XDB::query("SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom,
- u.prenom, u.promo, a.alias, timestamp AS `date`, t.comment, montant
- FROM {$globals->money->mpay_tprefix}transactions AS t
- INNER JOIN auth_user_md5 AS u ON ( t.uid = u.user_id )
- INNER JOIN aliases AS a ON ( t.uid = a.id AND a.type='a_vie' )
- WHERE ref = {?} ".$orderby, $pid);
- $trans[$pid] = $res->fetchAllAssoc();
- $sum = 0;
- foreach ($trans[$pid] as $i => $t) {
- $sum += strtr(substr($t['montant'], 0, strpos($t['montant'], 'EUR')), ',', '.');
- $trans[$pid][$i]['montant'] = str_replace('EUR', '€', $t['montant']);
- }
- $trans[$pid][] = array('nom' => 'somme totale',
- 'montant' => strtr($sum, '.', ',').' €');
+ $res = XDB::query('SELECT t.uid, timestamp AS `date`, t.comment, montant
+ FROM ' . $globals->money->mpay_tprefix . 'transactions AS t
+ WHERE t.ref = {?}', $pid);
+ $trans[$pid] = User::getBulkUsersWithUIDs($res->fetchAllAssoc(), 'uid', 'user');
+ $sum = 0;
+ foreach ($trans[$pid] as $i => $t) {
+ $sum += strtr(substr($t['montant'], 0, strpos($t['montant'], 'EUR')), ',', '.');
+ $trans[$pid][$i]['montant'] = str_replace('EUR', '€', $t['montant']);
+ }
+ $trans[$pid][] = array('nom' => 'somme totale',
+ 'montant' => strtr($sum, '.', ',').' €');
}
$res = XDB::iterRow("SELECT e.eid, e.short_name, e.intitule, ep.nb, ei.montant, ep.paid
- FROM groupex.evenements AS e
- LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND uid = {?})
- INNER JOIN groupex.evenements_items AS ei ON (ep.eid = ei.eid AND ep.item_id = ei.item_id)
+ FROM #groupex#.evenements AS e
+ LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.eid = e.eid AND uid = {?})
+ INNER JOIN #groupex#.evenements_items AS ei ON (ep.eid = ei.eid AND ep.item_id = ei.item_id)
WHERE e.paiement_id = {?}",
S::v('uid'), $pid);
$event[$pid] = array();
public function _prepare(PlPage &$page, $id)
{
$page->assign('mygroups', XDB::iterator("SELECT a.nom, a.site, a.diminutif, a.unsub_url, a.pub, m.perms
- FROM groupex.asso AS a
- INNER JOIN groupex.membres AS m ON (m.asso_id = a.id)
+ FROM #groupex#.asso AS a
+ INNER JOIN #groupex#.membres AS m ON (m.asso_id = a.id)
WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')",
- S::i('uid')));
+ $this->pid()));
$page->assign('listgroups', XDB::iterator("SELECT a.nom, a.diminutif, a.sub_url,
IF (a.cat = 'Institutions', a.cat, d.nom) AS dom
- FROM groupex.asso AS a
- LEFT JOIN groupex.dom AS d ON (d.id = a.dom)
+ FROM #groupex#.asso AS a
+ LEFT JOIN #groupex#.dom AS d ON (d.id = a.dom)
WHERE a.inscriptible != 0
AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')
ORDER BY a.cat, a.dom, a.nom"));
$page->assign('onchange', 'changeCountry(this.value)');
break;
case 'fonction':
- $db = '`fonctions_def`';
- $field = '`fonction_fr`';
+ $db = 'fonctions_def';
+ $field = 'fonction_fr';
break;
case 'diploma':
- header('Content-Type: text/xml; charset="UTF-8"');
+ pl_content_headers("text/xml");
$this->get_diplomas();
$page->changeTpl('search/adv.grade.form.tpl', NO_SKIN);
return;
}
$page->assign('archive', $archive);
- $evenements = XDB::iterator(
- "SELECT e.*, LEFT(10, e.debut) AS first_day, LEFT(10, e.fin) AS last_day,
- IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10),
- 1) AS inscr_open, e.deadline_inscription,
- u.nom, u.prenom, u.promo, a.alias,
- MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
- FROM #groupex#.evenements AS e
- INNER JOIN #x4dat#.auth_user_md5 AS u ON u.user_id = e.organisateur_uid
- INNER JOIN #x4dat#.aliases AS a ON (a.type = 'a_vie' AND a.id = u.user_id)
- LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
- WHERE asso_id = {?}
- AND archive = " . ($archive ? "1 " : "0 ")
- . "GROUP BY e.eid
- ORDER BY inscr_open DESC, debut DESC", S::v('uid'), $globals->asso('id'));
+ $evenements = XDB::iterator('SELECT e.*, LEFT(10, e.debut) AS first_day, LEFT(10, e.fin) AS last_day,
+ IF(e.deadline_inscription,
+ e.deadline_inscription >= LEFT(NOW(), 10),
+ 1) AS inscr_open,
+ e.deadline_inscription,
+ MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
- FROM groupex.evenements AS e
- LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
++ FROM #groupex#.evenements AS e
++ LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+ WHERE asso_id = {?} AND archive = {?}
+ GROUP BY e.eid
+ ORDER BY inscr_open DESC, debut DESC',
+ S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
$evts = array();
$undisplayed_events = 0;
}
$e['show_participants'] = ($e['show_participants'] && (is_member() || may_update()));
- $res = XDB::query(
- "SELECT titre, details, montant, ei.item_id, nb, ep.paid
- FROM #groupex#.evenements_items AS ei
- LEFT JOIN #groupex#.evenements_participants AS ep
- ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND uid = {?})
- WHERE ei.eid = {?}",
- S::v('uid'), $e['eid']);
- $e['moments'] = $res->fetchAllAssoc();
+ $e['moments'] = XDB::fetchAllAssoc('SELECT titre, details, montant, ei.item_id, nb, ep.paid
- FROM groupex.evenements_items AS ei
- LEFT JOIN groupex.evenements_participants AS ep
++ FROM #groupex#.evenements_items AS ei
++ LEFT JOIN #groupex#.evenements_participants AS ep
+ ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND ep.uid = {?})
+ WHERE ei.eid = {?}',
+ S::i('uid'), $e['eid']);
$e['topay'] = 0;
$e['paid'] = $e['moments'][0]['paid'];
$page->assign('moments', $evt['moments']);
}
- $tri = (Env::v('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
- $whereitemid = is_null($item_id) ? '' : "AND ep.item_id = $item_id";
- $res = XDB::iterRow(
- 'SELECT UPPER(SUBSTRING(IF(u.nom IS NULL, m.nom,
- IF(u.nom_usage<>"", u.nom_usage, u.nom)), 1, 1)),
- COUNT(DISTINCT ep.uid)
- FROM #groupex#.evenements_participants AS ep
- INNER JOIN #groupex#.evenements AS e ON (ep.eid = e.eid)
- LEFT JOIN #groupex#.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON ( u.user_id = ep.uid )
- WHERE ep.eid = {?} '.$whereitemid . '
- GROUP BY UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,u.nom), 1, 1))', $evt['eid']);
-
- $alphabet = array();
- $nb_tot = 0;
- while (list($char, $nb) = $res->next()) {
- $alphabet[ord($char)] = $char;
- $nb_tot += $nb;
- if (Env::has('initiale') && $char == mb_strtoupper(Env::v('initiale'))) {
- $tot = $nb;
- }
- }
- ksort($alphabet);
- $page->assign('alphabet', $alphabet);
-
if ($evt['paiement_id']) {
- $res = XDB::iterator(
- "SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, u.prenom,
- u.promo, a.alias AS email, t.montant
- FROM {$globals->money->mpay_tprefix}transactions AS t
- INNER JOIN #x4dat#.auth_user_md5 AS u ON(t.uid = u.user_id)
- INNER JOIN #x4dat#.aliases AS a ON (a.id = t.uid AND a.type='a_vie' )
- LEFT JOIN #groupex#.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?})
- WHERE t.ref = {?} AND ep.uid IS NULL",
- $evt['eid'], $evt['paiement_id']);
- $page->assign('oublis', $res->total());
- $page->assign('oubliinscription', $res);
- }
-
- $absents = XDB::iterator("SELECT p.uid,
- IF(m.origine = 'X', IF(u.nom_usage != '', u.nom_usage, u.nom), m.nom) AS nom,
- IF(m.origine = 'X', u.prenom, u.prenom) AS prenom,
- IF(m.origine = 'X', u.promo, m.origine) AS promo,
- IF(m.origine = 'X', FIND_IN_SET('femme', u.flags), m.sexe) AS sexe,
- IF(m.origine = 'X', a.alias, m.email) AS email
- FROM #groupex#.evenements_participants AS p
- INNER JOIN #groupex#.membres AS m USING(uid)
- LEFT JOIN #groupex#.evenements_participants AS p2 ON (p2.uid = m.uid AND p2.eid = p.eid
- AND p2.nb != 0)
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON (u.user_id = m.uid)
- LEFT JOIN #x4dat#.aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie')
- WHERE p.eid = {?} AND p2.eid IS NULL
- " . (Env::v('initiale') ? " AND IF(u.nom IS NULL, m.nom,
- IF(u.nom_usage<>'', u.nom_usage, u.nom)) LIKE '" . Env::v('initiale') . "%'"
- : "") . "
- GROUP BY m.uid
- ORDER BY nom, prenom, promo", $evt['eid']);
+ $infos = User::getBulkUsersWithUIDs(
+ XDB::fetchAllAssoc('SELECT t.uid, t.montant
+ FROM ' . $globals->money->mpay_tprefix . 'transactions AS t
- LEFT JOIN groupex.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?})
++ LEFT JOIN #groupex#.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?})
+ WHERE t.ref = {?} AND ep.uid IS NULL',
+ $evt['eid'], $evt['paiement_id']),
+ 'uid', 'user');
+ $page->assign('oublis', count($infos));
+ $page->assign('oubliinscription', $infos);
+ }
+
+ $absents = User::getBulkUsersFromDB('SELECT p.uid
- FROM groupex.evenements_participants AS p
- LEFT JOIN groupex.evenements_participants AS p2 ON (p2.uid = p.uid
++ FROM #groupex#.evenements_participants AS p
++ LEFT JOIN #groupex#.evenements_participants AS p2 ON (p2.uid = p.uid
+ AND p2.eid = p.eid
+ AND p2.nb != 0)
+ WHERE p.eid = {?} AND p2.eid IS NULL
+ GROUP BY p.uid', $evt['eid']);
$ofs = Env::i('offset');
$tot = (Env::v('initiale') ? $tot : $nb_tot);
if (is_null($asso_id)) {
$asso_id = $globals->asso('id');
}
- $res = XDB::query(
- "SELECT SUM(nb) AS nb_tot, COUNT(DISTINCT ep.uid) AS nb, e.*,
- IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10), 1) AS inscr_open,
- LEFT(10, e.debut) AS first_day, LEFT(10, e.fin) AS last_day,
- LEFT(NOW(), 10) AS now, ei.titre,
- al.vid AS absent_list, pl.vid AS participant_list,
- bl.vid AS payed_list, ul.vid AS booked_unpayed_list,
- a.nom, a.prenom, a.promo, aa.alias
- FROM #groupex#.evenements AS e
- INNER JOIN #x4dat#.auth_user_md5 AS a ON a.user_id = e.organisateur_uid
- INNER JOIN #x4dat#.aliases AS aa ON (aa.type = 'a_vie' AND aa.id = a.user_id)
- INNER JOIN #groupex#.evenements_items AS ei ON (e.eid = ei.eid)
- LEFT JOIN #groupex#.evenements_participants AS ep ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
- LEFT JOIN #x4dat#.virtual AS al ON (al.type = 'evt' AND al.alias = CONCAT(short_name, {?}))
- LEFT JOIN #x4dat#.virtual AS pl ON (pl.type = 'evt' AND pl.alias = CONCAT(short_name, {?}))
- LEFT JOIN #x4dat#.virtual AS bl ON (bl.type = 'evt' AND bl.alias = CONCAT(short_name, {?}))
- LEFT JOIN #x4dat#.virtual AS ul ON (ul.type = 'evt' AND ul.alias = CONCAT(short_name, {?}))
- WHERE (e.eid = {?} OR e.short_name = {?}) AND ei.item_id = {?} AND e.asso_id = {?}
- GROUP BY ei.item_id",
- '-absents@' . $globals->xnet->evts_domain,
- '-participants@' . $globals->xnet->evts_domain,
- '-paye@' . $globals->xnet->evts_domain,
- '-participants-non-paye@' . $globals->xnet->evts_domain,
- $eid, $eid, $item_id ? $item_id : 1, $asso_id);
-
+ $res = XDB::query('SELECT SUM(nb) AS nb_tot, COUNT(DISTINCT ep.uid) AS nb, e.*,
+ IF(e.deadline_inscription,
+ e.deadline_inscription >= LEFT(NOW(), 10),
+ 1) AS inscr_open,
+ LEFT(10, e.debut) AS start_day, LEFT(10, e.fin) AS last_day,
+ LEFT(NOW(), 10) AS now,
+ ei.titre, al.vid AS absent_list, pl.vid AS participant_list
- FROM groupex.evenements AS e
- INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid)
- LEFT JOIN groupex.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
- LEFT JOIN virtual AS al ON(al.type = \'evt\' AND al.alias = CONCAT(short_name, {?}))
- LEFT JOIN virtual AS pl ON(pl.type = \'evt\' AND pl.alias = CONCAT(short_name, {?}))
++ FROM #groupex#.evenements AS e
++ INNER JOIN #groupex#.evenements_items AS ei ON (e.eid = ei.eid)
++ LEFT JOIN #groupex#.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
++ LEFT JOIN #x4dat#.virtual AS al ON(al.type = \'evt\' AND al.alias = CONCAT(short_name, {?}))
++ LEFT JOIN #x4dat#.virtual AS pl ON(pl.type = \'evt\' AND pl.alias = CONCAT(short_name, {?}))
+ WHERE (e.eid = {?} OR e.short_name = {?}) AND ei.item_id = {?} AND e.asso_id = {?}
+ GROUP BY ei.item_id',
+ '-absents@'.$globals->xnet->evts_domain,
+ '-participants@'.$globals->xnet->evts_domain,
+ '-paye@' . $globals->xnet->evts_domain,
+ '-participants-non-paye@' . $globals->xnet->evts_domain,
+ $eid, $eid, $item_id ? $item_id : 1, $asso_id);
$evt = $res->fetchOneAssoc();
if (!$evt) {
// smart calculation of the total number
if (!$item_id) {
- $res = XDB::query(
- "SELECT MAX(nb)
- FROM #groupex#.evenements AS e
- INNER JOIN #groupex#.evenements_items AS ei ON (e.eid = ei.eid)
- LEFT JOIN #groupex#.evenements_participants AS ep
- ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
- WHERE e.eid = {?}
- GROUP BY ep.uid", $evt['eid']);
+ $res = XDB::query('SELECT MAX(nb)
- FROM groupex.evenements AS e
- INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid)
- LEFT JOIN groupex.evenements_participants AS ep ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
++ FROM #groupex#.evenements AS e
++ INNER JOIN #groupex#.evenements_items AS ei ON (e.eid = ei.eid)
++ LEFT JOIN #groupex#.evenements_participants AS ep ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
+ WHERE e.eid = {?}
+ GROUP BY ep.uid', $evt['eid']);
$evt['nb_tot'] = array_sum($res->fetchColumn());
$evt['titre'] = '';
$evt['item_id'] = 0;
}
- $res = XDB::query(
- "SELECT titre, details, montant, ei.item_id, nb, ep.paid, FIND_IN_SET('notify_payment', ep.flags) AS notify_payment
- FROM #groupex#.evenements_items AS ei
- LEFT JOIN #groupex#.evenements_participants AS ep
- ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND uid = {?})
- WHERE ei.eid = {?}",
- S::v('uid'), $evt['eid']);
- $evt['moments'] = $res->fetchAllAssoc();
-
+ $evt['moments'] = XDB::fetchAllAssoc('SELECT titre, details, montant, ei.item_id, nb,
+ ep.paid, FIND_IN_SET(\'notify_payment\', ep.flags) AS notify_payment
- FROM groupex.evenements_items AS ei
- LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = ei.eid AND ep.item_id = ei.item_id
++ FROM #groupex#.evenements_items AS ei
++ LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.eid = ei.eid AND ep.item_id = ei.item_id
+ AND uid = {?})
+ WHERE ei.eid = {?}',
+ S::i('uid'), $evt['eid']);
$evt['topay'] = 0;
$evt['paid'] = 0;
$evt['notify_payment'] = false;
$money = $evt['money'] && (function_exists('may_update')) && may_update();
$pay_id = $evt['paiement_id'];
- $query =
- "SELECT IF(m.origine != 'X',m.nom,IF(u.nom_usage<>'', u.nom_usage, u.nom)) AS nom,
- IF(m.origine != 'X',m.prenom,u.prenom) AS prenom,
- IF(m.origine != 'X','extérieur',u.promo) AS promo,
- IF(m.origine != 'X' OR u.perms = 'pending',m.email,a.alias) AS email,
- IF(m.origine != 'X',m.sexe,FIND_IN_SET('femme', u.flags)) AS femme,
- m.perms='admin' AS admin,
- (m.origine = 'X' OR m.origine IS NULL) AS x,
- ep.uid, SUM(ep.paid) AS paid, SUM(ep.nb) AS nb,
- FIND_IN_SET('notify_payment', ep.flags) AS notify_payment
- FROM #groupex#.evenements_participants AS ep
- INNER JOIN #groupex#.evenements AS e ON (ep.eid = e.eid)
- LEFT JOIN #groupex#.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON ( u.user_id = ep.uid )
- LEFT JOIN #x4dat#.aliases AS a ON ( a.id = ep.uid AND a.type='a_vie' )
- WHERE ep.eid = {?}
- ".(($item_id)?" AND item_id = $item_id":"")."
- $where
- GROUP BY ep.uid
- ORDER BY $tri $limit";
+ $append = $item_id ? XDB::foramt(' AND ep.item_id = {?}', $item_id) : '';
+ $query = XDB::fetchAllAssoc('uid', 'SELECT ep.uid, SUM(ep.paid) AS paid, SUM(ep.nb) AS nb,
+ FIND_IN_SET(\'notify_payment\', ep.flags) AS notify_payment
- FROM groupex.evenements_participants AS ep
++ FROM #groupex#.evenements_participants AS ep
+ WHERE ep.eid = {?} AND nb > 0 ' . $append . '
+ GROUP BY ep.uid', $eid);
+ $uf = new UserFilter(new UFC_True(), $tri);
+ $users = User::getBulkUsersWithUIDs($uf->filter(array_keys($query), $count, $offset));
+ $tab = array();
+ foreach ($users as $user) {
+ $uid = $user->id();
+ $tab[$uid] = $query[$uid];
+ $tab[$uid]['user'] = $user;
+ }
if ($item_id) {
- $res = XDB::query($query, $eid);
- return $res->fetchAllAssoc();
+ return $tab;
}
- $res = XDB::iterator($query, $eid);
- $tab = array();
- $user = 0;
-
$evt['adminpaid'] = 0;
$evt['telepaid'] = 0;
$evt['topay'] = 0;
}
}
$u['telepayment'] = $u['paid'] - $u['adminpaid'];
- $res_ = XDB::iterator(
- "SELECT ep.nb, ep.item_id, ei.montant
- FROM #groupex#.evenements_participants AS ep
- INNER JOIN #groupex#.evenements_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id)
- WHERE ep.eid = {?} AND ep.uid = {?}",
- $eid, $u['uid']);
+ $res_ = XDB::iterator('SELECT ep.nb, ep.item_id, ei.montant
- FROM groupex.evenements_participants AS ep
- INNER JOIN groupex.evenements_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id)
++ FROM #groupex#.evenements_participants AS ep
++ INNER JOIN #groupex#.evenements_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id)
+ WHERE ep.eid = {?} AND ep.uid = {?}',
+ $eid, $uid);
while ($i = $res_->next()) {
$u[$i['item_id']] = $i['nb'];
$u['montant'] += $i['montant']*$i['nb'];
}
foreach (array('-participants@', '-paye@', '-participants-non-paye@') as $v) {
- XDB::execute("INSERT IGNORE INTO virtual_redirect (
- SELECT {?} AS vid, IF(a.alias IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
- FROM #groupex#.evenements_participants AS ep
- LEFT JOIN #groupex#.membres AS m ON (ep.uid = m.uid)
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON (u.user_id = ep.uid)
- LEFT JOIN #x4dat#.aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie')
- WHERE ep.eid = {?} AND " . $where[$v] . "
- GROUP BY ep.uid)",
- $lastid[$v], '@' . $globals->mail->domain, $eid);
+ XDB::execute("INSERT IGNORE INTO virtual_redirect (
+ SELECT {?} AS vid, IF(al.alias IS NULL, a.email, CONCAT(al.alias, {?})) AS redirect
- FROM groupex.evenements_participants AS ep
- LEFT JOIN accounts AS a ON (ep.uid = a.uid)
- LEFT JOIN aliases AS al ON (al.id = a.uid AND al.type = 'a_vie')
++ FROM #groupex#.evenements_participants AS ep
++ LEFT JOIN #x4dat#.accounts AS a ON (ep.uid = a.uid)
++ LEFT JOIN #x4dat#.aliases AS al ON (al.id = a.uid AND al.type = 'a_vie')
+ WHERE ep.eid = {?} AND " . $where[$v] . "
+ GROUP BY ep.uid)",
+ $lastid[$v], '@' . $globals->mail->domain, $eid);
}
- XDB::execute("INSERT IGNORE INTO virtual_redirect (
- SELECT {?} AS vid, IF(a.alias IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
- FROM #groupex#.membres AS m
- LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON (u.user_id = m.uid)
- LEFT JOIN #x4dat#.aliases AS a ON (a.id = m.uid AND a.type = 'a_vie')
- WHERE m.asso_id = {?} AND ep.uid IS NULL
- GROUP BY m.uid)",
- $lastid['-absents@'], '@' . $globals->mail->domain, $eid, $globals->asso('id'));
+ XDB::execute("INSERT IGNORE INTO virtual_redirect (
+ SELECT {?} AS vid, IF(al.alias IS NULL, a.email, CONCAT(al.alias, {?})) AS redirect
- FROM groupex.membres AS m
- LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
- LEFT JOIN accounts AS a ON (a.uid = m.uid)
- LEFT JOIN aliases AS al ON (al.id = a.uid AND al.type = 'a_vie')
++ FROM #groupex#.membres AS m
++ LEFT JOIN #x4dat#.accounts AS a ON (a.uid = m.uid)
++ LEFT JOIN #x4dat#.aliases AS al ON (al.id = a.uid AND al.type = 'a_vie')
++ LEFT JOIN #groupex#.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
+ WHERE m.asso_id = {?} AND ep.uid IS NULL
+ GROUP BY m.uid)",
+ $lastid['-absents@'], '@' . $globals->mail->domain, $eid, $globals->asso('id'));
return $new;
}
Env::i('unread'), S::i('uid'));
pl_redirect("#art" . Env::i('unread'));
}
- $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, u.hruid,
- FIND_IN_SET('photo', a.flags) AS photo
- FROM #groupex#.announces AS a
- INNER JOIN #x4dat#.auth_user_md5 AS u USING(user_id)
- LEFT JOIN #groupex#.announces_read AS r ON (r.user_id = {?} AND r.announce_id = a.id)
- WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
- AND (promo_min = 0 OR promo_min <= {?})
- AND (promo_max = 0 OR promo_max >= {?})
- AND r.announce_id IS NULL
- ORDER BY a.peremption",
- S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo'));
- $index = XDB::iterator("SELECT a.id, a.titre, r.user_id IS NULL AS nonlu
- FROM #groupex#.announces AS a
- LEFT JOIN #groupex#.announces_read AS r ON (a.id = r.announce_id AND r.user_id = {?})
- WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
+ // XXX: Fix promo_min; promo_max
- $arts = XDB::iterator("SELECT a.*, FIND_IN_SET('photo', a.flags) AS photo
- FROM groupex.announces AS a
- LEFT JOIN groupex.announces_read AS r ON (r.user_id = {?} AND r.announce_id = a.id)
- WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
- AND (promo_min = 0 OR promo_min <= {?})
- AND (promo_max = 0 OR promo_max >= {?})
- AND r.announce_id IS NULL
- ORDER BY a.peremption",
- S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo'));
- $index = XDB::iterator("SELECT a.id, a.titre, r.user_id IS NULL AS nonlu
- FROM groupex.announces AS a
- LEFT JOIN groupex.announces_read AS r ON (a.id = r.announce_id AND r.user_id = {?})
- WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
++ $arts = XDB::iterator("SELECT a.*, FIND_IN_SET('photo', a.flags) AS photo
++ FROM #groupex#.announces AS a
++ LEFT JOIN #groupex#.announces_read AS r ON (r.user_id = {?} AND r.announce_id = a.id)
++ WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
AND (promo_min = 0 OR promo_min <= {?})
AND (promo_max = 0 OR promo_max >= {?})
-- ORDER BY a.peremption",
++ AND r.announce_id IS NULL
++ ORDER BY a.peremption",
++ S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo'));
++ $index = XDB::iterator("SELECT a.id, a.titre, r.user_id IS NULL AS nonlu
++ FROM #groupex#.announces AS a
++ LEFT JOIN #groupex#.announces_read AS r ON (a.id = r.announce_id AND r.user_id = {?})
++ WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
++ AND (promo_min = 0 OR promo_min <= {?})
++ AND (promo_max = 0 OR promo_max >= {?})
++ ORDER BY a.peremption",
S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo'));
$page->assign('article_index', $index);
} else {
- $arts = XDB::iterator("SELECT a.*, FIND_IN_SET('photo', a.flags) AS photo
- FROM groupex.announces AS a
- $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, FIND_IN_SET('photo', a.flags) AS photo
- FROM #groupex#.announces AS a
- INNER JOIN #x4dat#.auth_user_md5 AS u USING(user_id)
-- WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
- AND FIND_IN_SET('public', a.flags)",
- AND FIND_IN_SET('public', u.flags)",
++ $arts = XDB::iterator("SELECT a.*, FIND_IN_SET('photo', a.flags) AS photo
++ FROM #groupex#.announces AS a
++ WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
++ AND FIND_IN_SET('public', a.flags)",
$globals->asso('id'));
}
if (may_update()) {
{
global $globals;
- $logo = $globals->asso('logo');
- if (!empty($logo)) {
- header('Content-type: ' . $globals->asso('logo_mime'));
- header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
- header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT');
- header('Cache-Control: no-cache, must-revalidate');
- header('Pragma: no-cache');
- echo $logo;
- } else {
- header('Content-type: image/jpeg');
- header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
- header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT');
- header('Cache-Control: no-cache, must-revalidate');
- header('Pragma: no-cache');
- readfile(dirname(__FILE__).'/../htdocs/images/dflt_carre.jpg');
- }
- $res = XDB::query("SELECT logo, logo_mime
- FROM #groupex#.asso WHERE id = {?}",
++ $res = XDB::query("SELECT logo, logo_mime
++ FROM #groupex#.asso
++ WHERE id = {?}",
+ $globals->asso('id'));
+ list($logo, $logo_mime) = $res->fetchOneRow();
- if (!empty($logo)) {
- echo $logo;
- } else {
- readfile(dirname(__FILE__) . '/../htdocs/images/dflt_carre.jpg');
- }
+ pl_cached_dynamic_content_headers(empty($logo) ? "image/jpeg" : $logo_mime);
exit;
}
$flags, $globals->asso('id'));
}
+
if ($_FILES['logo']['name']) {
- $logo = file_get_contents($_FILES['logo']['tmp_name']);
- $mime = $_FILES['logo']['type'];
- XDB::execute('UPDATE #groupex#.asso
- SET logo={?}, logo_mime={?}
- WHERE id={?}', $logo, $mime,
- $globals->asso('id'));
+ $upload = PlUpload::get($_FILES['logo'], $globals->asso('id'), 'asso.logo', true);
+ if (!$upload) {
- $page->trigError("Impossible de télécharger le logo");
++ $page->trigError("Impossible de télécharger le logo.");
+ } else {
- XDB::execute('UPDATE groupex.asso
- SET logo={?}, logo_mime={?}
- WHERE id={?}', $upload->getContents(), $upload->contentType(),
++ XDB::execute('UPDATE #groupex#.asso
++ SET logo = {?}, logo_mime = {?}
++ WHERE id = {?}', $upload->getContents(), $upload->contentType(),
+ $globals->asso('id'));
+ $upload->rm();
+ }
}
pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit');
if (is_null($filename)) {
$filename = $globals->asso('diminutif') . '.csv';
}
- $ann = XDB::iterator(
- "SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
- IF(m.origine='X',u.prenom,m.prenom) AS prenom,
- IF(m.origine='X', u.promo, IF(m.origine='ext', 'extérieur', 'personne morale')) AS promo,
- IF(m.origine='X' AND u.perms != 'pending',CONCAT(a.alias, '@', {?}), m.email) AS email,
- IF(m.origine='X',FIND_IN_SET('femme', u.flags), m.sexe) AS femme,
- m.comm as comm
- FROM #groupex#.membres AS m
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON ( u.user_id = m.uid )
- LEFT JOIN #x4dat#.aliases AS a ON ( a.id = m.uid AND a.type = 'a_vie' )
- WHERE m.asso_id = {?}
- AND (m.origine != 'X' OR u.perms != 'pending' OR m.email IS NOT NULL)
- GROUP BY m.uid
- ORDER BY nom, prenom",
- $globals->mail->domain, $globals->asso('id'));
+ $users = $globals->asso()->getMembers(null, new UFO_Name('directory_name'))->getUsers();
+ header('Content-Type: text/x-csv; charset=utf-8;');
+ header('Pragma: ');
+ header('Cache-Control: ');
+ pl_content_headers("text/x-csv");
$page->changeTpl('xnetgrp/annuaire-csv.tpl', NO_SKIN);
- $page->assign('ann', $ann);
+ $page->assign('users', $users);
}
private function removeSubscriptionRequest($uid)
}
}
- $it = XDB::iterator("SELECT IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom,
- u.prenom, u.promo, u.hruid, s.ts AS date
+ $it = XDB::iterator('SELECT s.uid, a.hruid, s.ts AS date
- FROM groupex.membres_sub_requests AS s
- INNER JOIN accounts AS a ON(s.uid = a.uid)
+ FROM #groupex#.membres_sub_requests AS s
- INNER JOIN #x4dat#.auth_user_md5 AS u ON (s.uid = u.user_id)
- WHERE asso_id = {?}
- ORDER BY nom, prenom",
- $globals->asso('id'));
-
++ INNER JOIN #x4dat#.accounts AS a ON(s.uid = a.uid)
+ WHERE s.asso_id = {?}
+ ORDER BY s.ts', $globals->asso('id'));
$page->changeTpl('xnetgrp/subscribe-valid.tpl');
$page->assign('valid', $it);
}
function handler_admin_member_new_ajax(&$page)
{
- header('Content-Type: text/html; charset="UTF-8"');
- $page->changeTpl('xnetgrp/membres-new-search.tpl', NO_SKIN);
+ pl_content_headers("text/html");
+ $page->changeTpl('xnetgrp/membres-new-search.tpl', NO_SKIN);
- $res = null;
+ $users = array();
if (Env::has('login')) {
- require_once 'user.func.inc.php';
- $res = get_not_registered_user(Env::v('login'), true);
+ $user = User::getSilent(Env::t('login'));
+ if ($user && $user->state != 'pending') {
+ $users = array($user);
+ }
}
- if (is_null($res)) {
- list($nom, $prenom) = str_replace(array('-', ' ', "'"), '%', array(Env::v('nom'), Env::v('prenom')));
- $where = "perms = 'pending'";
+ if (empty($users)) {
+ list($nom, $prenom) = str_replace(array('-', ' ', "'"), '%', array(Env::t('nom'), Env::t('prenom')));
+ $cond = new UFC_And(new UFC_Not(new UFC_Registered()));
if (!empty($nom)) {
- $where .= " AND nom LIKE '%$nom%'";
+ $cond->addChild(new UFC_Name(UserFilter::LASTNAME, $nom, UFC_Name::CONTAINS));
}
if (!empty($prenom)) {
- $where .= " AND prenom LIKE '%$prenom%'";
+ $cond->addChild(new UFC_Name(UserFilter::FIRSTNAME, $prenom, UFC_Name::CONTAINS));
}
- if (preg_match('/^[0-9]{4}$/', Env::v('promo'))) {
- $where .= " AND promo = " . Env::i('promo');
- } elseif (preg_match('/^[0-9]{2}$/', Env::v('promo'))) {
- $where .= " AND MOD(promo, 100) = " . Env::i('promo');
- } elseif (Env::has('promo')) {
- return;
+ if (Env::i('promo')) {
+ $cond->addChild(new UFC_Promo('=', UserFilter::GRADE_ING, Env::i('promo')));
+ }
+ $uf = new UserFilter($cond);
+ $users = $uf->getUsers(30);
+ if ($uf->getTotalCount() > 30) {
+ $page->assign('too_many', true);
+ $users = array();
}
- $res = XDB::iterator("SELECT user_id, nom, prenom, promo
- FROM auth_user_md5
- WHERE $where");
- }
- if ($res && $res->total() < 30) {
- $page->assign("choix", $res);
}
+ $page->assign('users', $users);
}
- function unsubscribe(&$user)
+ function unsubscribe(PlUser &$user)
{
global $globals;
- XDB::execute("DELETE FROM groupex.membres
- XDB::execute(
- "DELETE FROM #groupex#.membres WHERE uid={?} AND asso_id={?}",
- $user['uid'], $globals->asso('id'));
++ XDB::execute("DELETE FROM #groupex#.membres
+ WHERE uid = {?} AND asso_id = {?}",
+ $user->id(), $globals->asso('id'));
if ($globals->asso('notif_unsub')) {
$mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl');
}
$perms = Post::i('is_admin');
- $comm = trim(Post::s('comm'));
+ $comm = Post::t('comm');
if ($user['perms'] != $perms || $user['comm'] != $comm) {
- XDB::query('UPDATE groupex.membres
- SET perms={?}, comm={?}
- WHERE uid={?} AND asso_id={?}',
+ XDB::query('UPDATE #groupex#.membres
+ SET perms = {?}, comm = {?}
+ WHERE uid = {?} AND asso_id = {?}',
$perms ? 'admin' : 'membre', $comm,
$user['uid'], $globals->asso('id'));
if ($perms != $user['perms']) {
}
if (empty($art) && !is_null($aid)) {
- $res = XDB::query("SELECT a.*, FIND_IN_SET('public', a.flags) AS public,
- $res = XDB::query("SELECT a.*, u.nom, u.prenom, u.promo, u.hruid,
- FIND_IN_SET('public', a.flags) AS public,
-- FIND_IN_SET('photo', a.flags) AS photo
- FROM groupex.announces AS a
- FROM #groupex#.announces AS a
- INNER JOIN #x4dat#.auth_user_md5 AS u USING(user_id)
-- WHERE asso_id = {?} AND a.id = {?}",
++ $res = XDB::query("SELECT a.*, FIND_IN_SET('public', a.flags) AS public,
++ FIND_IN_SET('photo', a.flags) AS photo
++ FROM #groupex#.announces AS a
++ WHERE asso_id = {?} AND a.id = {?}",
$globals->asso('id'), $aid);
if ($res->numRows()) {
$art = $res->fetchOneAssoc();
{
global $globals;
if (!is_null($user)) {
- return XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.contacts,
- a.create_date AS publication,
- CONCAT(u2.prenom, ' ', IF(u2.nom_usage != '', u2.nom_usage, u2.nom), ' (X', u2.promo, ')') AS author,
- FIND_IN_SET('photo', a.flags) AS photo,
- CONCAT({?}, '/#art', a.id) AS link
- FROM #x4dat#.auth_user_md5 AS u
- INNER JOIN #groupex#.announces AS a ON ((a.promo_min = 0 OR a.promo_min <= u.promo)
- AND (a.promo_max = 0 OR a.promo_max <= u.promo))
- INNER JOIN #x4dat#.auth_user_md5 AS u2 ON (u2.user_id = a.user_id)
- WHERE u.user_id = {?} AND peremption >= NOW() AND a.asso_id = {?}",
- $this->link, $user->id(), $globals->asso('id'));
+ return new UserFilterIterator(
+ XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.contacts,
+ a.create_date AS publication,
+ FIND_IN_SET('photo', a.flags) AS photo,
+ CONCAT({?}, '/#art', a.id) AS link
- FROM groupex.announces AS a
++ FROM #groupex#.announces AS a
+ WHERE peremption >= NOW() AND a.asso_id = {?}",
+ $this->link, $globals->asso('id'), $user));
} else {
- return XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.create_date AS publication,
- CONCAT(u.prenom, ' ', IF(u.nom_usage != '', u.nom_usage, u.nom), ' (X', u.promo, ')') AS author,
- CONCAT({?}, '/#art', a.id) AS link,
- NULL AS photo, NULL AS contacts
- FROM #groupex#.announces AS a
- INNER JOIN #x4dat#.auth_user_md5 AS u USING(user_id)
- WHERE FIND_IN_SET('public', a.flags) AND peremption >= NOW() AND a.asso_id = {?}",
+ return XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.create_date AS publication,
+ CONCAT({?}, '/#art', a.id) AS link,
+ NULL AS photo, NULL AS contacts
- FROM groupex.announces AS a
++ FROM #groupex#.announces AS a
+ WHERE FIND_IN_SET('public', a.flags) AND peremption >= NOW() AND a.asso_id = {?}",
$this->link, $globals->asso('id'));
}
}
$not_in_group_x = array();
$not_in_group_ext = array();
- $ann = XDB::iterator(
- "SELECT if (m.origine='X',if (u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
- if (m.origine='X',u.prenom,m.prenom) AS prenom,
- if (m.origine='X',u.promo,'extérieur') AS promo,
- if (m.origine='X',CONCAT(a.alias, '@{$globals->mail->domain}'),m.email) AS email,
- if (m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
- m.perms='admin' AS admin,
- m.origine='X' AS x
- FROM #groupex#.membres AS m
- LEFT JOIN #x4dat#.auth_user_md5 AS u ON ( u.user_id = m.uid )
- LEFT JOIN #x4dat#.aliases AS a ON ( a.id = m.uid AND a.type='a_vie' )
- WHERE m.asso_id = {?}
- ORDER BY promo, nom, prenom", $globals->asso('id'));
+ $ann = XDB::fetchColumn('SELECT uid
- FROM groupex.membres
++ FROM #groupex#.membres
+ WHERE asso_id = {?}', $globals->asso('id'));
+ $users = User::getBuildUsersWithUIDs($ann, 'promo,full_name');
+
$not_in_list = array();
-
- while ($tmp = $ann->next()) {
- if (!in_array(strtolower($tmp['email']), $subscribers)) {
- $not_in_list[] = $tmp;
+ foreach ($users as $user) {
+ if (!in_array(strtolower($user->forlifeEmail()), $subscribers)) {
+ $not_in_list[] = $user;
}
}
if (Env::has('add_member')) {
S::assert_xsrf_token();
- $add = Env::v('add_member');
- if (strstr($add, '@')) {
- list($mbox,$dom) = explode('@', strtolower($add));
- } else {
- $mbox = $add;
- $dom = 'm4x.org';
+ $add = Env::t('add_member');
+ $user = User::getSilent($add);
+ if ($user) {
+ $add = $user->forlifeEmail();
+ } else if (!User::isForeignEmailAddress($add)) {
+ $add = null;
}
- if ($dom == 'polytechnique.org' || $dom == 'm4x.org') {
- $res = XDB::query(
- "SELECT a.alias, b.alias
- FROM aliases AS a
- LEFT JOIN aliases AS b ON (a.id=b.id AND b.type = 'a_vie')
- WHERE a.alias={?} AND a.type!='homonyme'", $mbox);
- if (list($alias, $blias) = $res->fetchOneRow()) {
- $alias = empty($blias) ? $alias : $blias;
- XDB::query(
- "INSERT IGNORE INTO virtual_redirect (vid,redirect)
- SELECT vid, {?}
- FROM virtual
- WHERE alias={?}", "$alias@m4x.org", $lfull);
- $page->trigSuccess("$alias@m4x.org ajouté");
- } else {
- $page->trigError("$mbox@{$globals->mail->domain} n'existe pas.");
- }
+ if (!empty($add)) {
- XDB::execute('INSERT INTO x4dat.virtual_redirect (vid, redirect)
- SELECT vid, {?},
- FROM x4dat.virtual
++ XDB::execute('INSERT INTO virtual_redirect (vid, redirect)
++ SELECT vid, {?}
++ FROM virtual
+ WHERE alias = {?}', strtolower($add), $lfull);
+ $page->trigSuccess($add . ' ajouté.');
} else {
- XDB::query(
- "INSERT IGNORE INTO virtual_redirect (vid,redirect)
- SELECT vid,{?}
- FROM virtual
- WHERE alias={?}", "$mbox@$dom", $lfull);
- $page->trigSuccess("$mbox@$dom ajouté");
+ $page->trigError($add . " n'existe pas.");
}
}
<script type="text/javascript">//<![CDATA[
{literal}
- $('input.deathDate').change(
- function ()
- {
- $(this).addClass('sendDate');
- });
+ $('input.deathDate').change(function () {
+ $(this).addClass('sendDate');
+ });
- $('#deathDateList').submit(
- function ()
- {
- // Avoid sending useless data to the webserver
- $('input.deathDate').not('.sendDate').attr('disabled', true);
- });
+ $('#deathDateList').submit(function () {
+ // Avoid sending useless data to the webserver
+ $('input.deathDate').not('.sendDate').attr('disabled', true);
+ });
{/literal}
//]]></script>
-
+{/if}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}