ajout de admin/utilisateurs.php (et croyez moi, il y a encore du boulot sur cette page)
| admin/evenements.php |
| admin/homonymes.php |
| admin/ins_confirmees.php |
- | admin/marketing.php |
- | admin/marketing_promo.php |
- | admin/marketing_volontaire.php |
| admin/pg.php |
- | admin/relance.php |
| admin/utilisateurs.php |
- | admin/utilisateurs_identification.php |
- | admin/utilisateurs_marketing.php |
+------+-[ marketing ]-----------------------------+----------------
+ | admin/marketing.php | marketing/
+ | admin/marketing_promo.php | marketing/
+ | admin/marketing_volontaire.php | marketing/
+ | admin/relance.php | marketing/
+ | admin/utilisateurs_identification.php | marketing/
+ | admin/utilisateurs_marketing.php | marketing/
+ | marketing.php | marketing/index
------+-[ docs ]----------------------------------+----------------
| docs/FROM.php | docs/from.php
| en-cours.php | docs/en-cours.php
| emploi_public.php |
| evenements.php |
| index.coupure.php |
- | marketing.php |
| mescontacts.php |
| mescontacts_pdf.php |
| pg.confirm.php |
--- /dev/null
+<?php
+require("auto.prepend.inc.php");
+new_admin_page('admin/utilisateurs.tpl', true, 'admin/utilisateurs.head.tpl');
+require("db_connectpolyedu.inc.php");
+require("xorg.misc.inc.php");
+
+$assignates = Array(
+ 'add_email', 'add_polyedu_alias', 'aliasalias_edu', 'email', 'fwd', 'hashpass', 'homonyme',
+ 'id_edu', 'login', 'loginbis', 'matricule', 'naissanceN', 'newpass_clair', 'nomN', 'num',
+ 'oldlogin', 'olduid', 'passw', 'password1', 'perms', 'permsN', 'prenomN', 'promoN',
+ 'remove_email', 'remove_polyedu_alias', 'select', 'suid_button', 'user_id', 'u_edit',
+ 'u_kill', 'u_kill_conf'
+);
+foreach($assignates as $ass) $$ass=isset($_REQUEST[$ass]) ? $_REQUEST[$ass] : '';
+
+$errors = Array();
+$succes = Array();
+function my_error($msg) { global $erreur; $erreur[] = "<p class='erreur'>Erreur: $msg</p>"; }
+function my_msg($msg) { global $succes; $succes[] = "<p class='succes'>O.K.: $msg</p>"; }
+
+
+/*
+ * SUID
+ */
+if(isset($_REQUEST['suid_button']) and isset($_REQUEST['login'])
+ and !isset($_SESSION['suid']) // pas de su imbriqués
+ ) {
+ $res = @mysql_query( "SELECT user_id,prenom,nom,promo,perms FROM auth_user_md5 WHERE username='{$_REQUEST['login']}'",$conn);
+ if(@mysql_num_rows($res) != 0) {
+ list($uid,$prenom,$nom,$promo,$perms)=mysql_fetch_row($res);
+ // on déplace le log de l'admin dans slog, et on crée un log de suid en log
+ // on loggue le démarrage de la session suid pour l'admin et l'utilisateur
+ $log_data = $_REQUEST['login']." by ".$_SESSION['username'];
+ $_SESSION['log']->log("suid_start",$log_data);
+ $_SESSION['slog'] = $_SESSION['log'];
+ $_SESSION['log'] = new DiogenesCoreLogger($uid,$_SESSION['uid']);
+ $_SESSION['log']->log("suid_start",$log_data);
+ // on modifie les variables de session suffisantes pour faire un su
+ // rem : la skin n'est pas modifiée
+ $_SESSION['suid'] = $_SESSION['uid'];
+ $_SESSION['username'] = $_REQUEST['login'];
+ $_SESSION['perms'] = $perms;
+ $_SESSION['uid'] = $uid;
+ $_SESSION['prenom'] = $prenom;
+ $_SESSION['nom'] = $nom;
+ $_SESSION['promo'] = $promo;
+ }
+ header("Location: ../");
+}
+
+if(isset($_REQUEST['password'])) $pass_clair = $_REQUEST['password'];
+
+// Check if there was a submission
+foreach($_POST as $key => $val) {
+ switch ($key) {
+ // ajout d'email
+ case "add_email":
+ if (!isvalid_email_redirection($email)) {
+ my_error("invalid email");
+ break;
+ }
+ mysql_query("INSERT INTO emails (uid,num,email,flags) VALUES ($user_id,$num,'$email','active')",$conn);
+ my_msg("Ajout de $email effectué");
+ break;
+
+ // supprime un email
+
+ case "remove_email":
+ mysql_query("delete from emails where uid=$user_id and email = '$email'",$conn);
+ my_msg("Suppression de $email effectué");
+ break;
+
+ // ajoute un alias sur polyedu
+ case "add_polyedu_alias":
+ $db_edu = connect_polyedu();
+ if($db_edu) {
+ // récupération de l'id_edu
+ $result=mysql_query("select id from x where matricule='$matricule'",$db_edu);
+ $id_edu=false;
+ if(!$result) {
+ my_error("Erreur select dans x: ".mysql_error($db_edu));
+ } elseif (mysql_num_rows($result) == 0) {
+ // pas d'X du matricule correspondant dans la base !
+ // il faut l'ajouter
+ $id_edu=0;
+ } elseif (list($id_edu) = mysql_fetch_row($result)) {
+ // rien à faire, id_edu a la bonne valeur
+ } else {
+ my_error("Impossible d'obtenir l'id_edu, recommence ".mysql_error($db_edu));
+ }
+ if($result) mysql_free_result($result);
+ if(is_bool($id_edu) and !$id_edu) {
+ mysql_close($db_edu);
+ break;
+ }
+ // ajout de l'entrée dans aliases
+ if($alias_edu == '') {
+ $alias_edu = $login;
+ }
+ // vérification de la présence d'un alias
+ $alias_exist=false;
+ $alias_pris=false;
+ $exist_id_edu=0;
+ $result = mysql_query("select a.id, x.matricule, u.prenom, u.nom from aliases as a LEFT JOIN x USING(id) LEFT JOIN users as u ON(u.id=a.id) where a.alias = '$alias_edu'",$db_edu);
+ if(!$result) {
+ my_error("Erreur select dans aliases, x et users: ".mysql_error($db_edu));
+ mysql_close($db_edu);
+ break;
+ } elseif (mysql_num_rows($result) == 0) {
+ // pas d'alias, il faut l'ajouter
+ } elseif (list($exist_id_edu,$xmatricule_edu,$prenom_edu, $nom_edu) = mysql_fetch_row($result)) {
+ $alias_exist=true;
+ if(isset($xmatricule_edu) and $xmatricule_edu != $matricule) {
+ my_error("Alias $login déjà pris par un autre X : $xmatricule_edu");
+ $alias_pris=true;
+ } elseif(isset($nom_edu)) {
+ my_error("Alias $login déjà pris par un non-X : $prenom_edu $nom_edu ");
+ $alias_pris=true;
+ }
+ } else {
+ my_error("Impossible d'obtenir l'alias_edu, recommence ".mysql_error($db_edu));
+ mysql_close($db_edu);
+ break;
+ }
+ if($result) mysql_free_result($result);
+ if($alias_pris) {
+ mysql_close($db_edu);
+ break;
+ }
+ if(!$alias_exist) { // l'alias n'existe pas, on l'ajoute
+ mysql_query("insert into aliases (id,type,alias) VALUES ($id_edu,'X','$alias_edu')",$db_edu);
+ if (mysql_errno($db_edu) != 0) {
+ my_error("Failed: ".mysql_errno($db_edu).", ".mysql_error($db_edu));
+ mysql_close($db_edu);
+ break;
+ }
+ $exist_id_edu = ($id_edu?$id_edu:mysql_insert_id($db_edu));
+ }
+ // ajout de l'entrée dans la table X si nécessaire
+ // arrive typiquement en mode réparation
+ if ($id_edu == 0) {
+ // il faut ajouter l'enregistrement dans la table X
+ mysql_query("insert into x (id,matricule) values ($exist_id_edu,$matricule)",$db_edu);
+ if (mysql_errno($db_edu) != 0) {
+ my_error("Erreur ajout dans la table X: ".mysql_errno($db_edu).", ".mysql_error($db_edu));
+ mysql_close($db_edu);
+ break;
+ }
+ $id_edu = $exist_id_edu;
+ }
+ // on vérifie que le champ email est bien présent dans la table emails
+ $result=mysql_query("select email, flags, FIND_IN_SET('active', flags) from emails where id='$id_edu'",$db_edu);
+ if(!$result) {
+ my_error("Erreur select dans emails: ".mysql_error($db_edu));
+ mysql_close($db_edu);
+ break;
+ }
+ if (list($email_edu, $flags_edu, $active_edu) = mysql_fetch_row($result)
+ and $email_edu == ($login."@m4x.org")
+ and $active_edu != 0) {
+ // c'est ok
+ my_msg("Ajout de $alias_edu sur polyedu effectué");
+ mysql_free_result($result);
+ mysql_close($db_edu);
+ break;
+ }
+ mysql_free_result($result);
+ // pas d'email ou mauvais email pour l'X
+ // il faut supprimer l'ancien et ajouter le nouveau
+ mysql_query("delete from emails where id = $id_edu",$db_edu);
+ mysql_query("insert into emails (id,email,flags) values ($id_edu,'$login@m4x.org','active,$flags_edu')",$db_edu);
+ if (mysql_errno($db_edu) != 0) {
+ my_error("Erreur ajout dans la table email: ".mysql_errno($db_edu).", ".mysql_error($db_edu));
+ } else {
+ my_msg("Ajout de $alias_edu et email sur polyedu effectué");
+ }
+ mysql_close($db_edu);
+ } // if($db_edu)
+ else {
+ my_error("Connexion à la BD polyedu impossible");
+ } // if(!$db_edu)
+ break;
+
+ // supprime un alias sur polyedu
+ case "remove_polyedu_alias":
+ $db_edu = connect_polyedu();
+ if($db_edu) {
+ mysql_query("delete from aliases where id='$id_edu' and alias = '$alias_edu'",$db_edu);
+ if (mysql_errno($db_edu) != 0) {
+ my_error("Failed: ".mysql_error($db_edu));
+ } else {
+ my_msg("Suppression de $alias_edu effectué");
+ }
+ mysql_close($db_edu);
+ } // if($db_edu)
+ else {
+ my_error("Connexion à la BD polyedu impossible: ".mysql_error($db_edu));
+ } // if(!$db_edu)
+ break;
+
+ // Faire un suid (une partie du code se trouve tout là-haut pour affecter l'affichage du menu)
+ case "suid_button":
+ if(isset($_SESSION['suid'])) {
+ my_msg("SUID effectué, clique sur exit pour quitter.");
+ } else {
+ my_error("login inconnu, suid non effectué.");
+ }
+ break;
+
+
+ // Editer un profil
+ case "u_edit":
+ if ($newpass_clair != "********") {
+ $pass_md5B=md5($newpass_clair);
+ } else {
+ $pass_md5B=$passw;
+ }
+
+ $query = "UPDATE auth_user_md5 SET
+ username='$login',
+ naissance=$naissanceN,
+ password='$pass_md5B',
+ perms='$permsN',
+ loginbis='$loginbis',
+ prenom='$prenomN',
+ nom='$nomN',
+ promo=$promoN,
+ alias='$alias'
+ WHERE user_id=$olduid";
+
+ mysql_query($query,$conn);
+ if (mysql_errno($conn) != 0) {
+ my_error("<b>Failed:</b> $query");
+ break;
+ }
+ my_msg("\"$login\" updaté correctement.");
+ // envoi du mail au webmaster
+ $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion();
+ $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['username']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration";
+ mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER);
+ break;
+
+ // DELETE FROM auth_user_md5
+ case "u_kill":
+
+ $result=mysql_query("select user_id from auth_user_md5 where username='$login'",$conn);
+ if(list($user_id) = mysql_fetch_row($result)) {
+ $query = "DELETE FROM auth_user_md5 WHERE username='$login'";
+ mysql_query($query,$conn);
+ mysql_query("delete from emails where uid=$user_id",$conn);
+ mysql_query("delete from binets_ins where user_id=$user_id",$conn);
+ mysql_query("delete from groupesx_ins where guid=$user_id",$conn);
+ mysql_query("delete from photo where uid=$user_id",$conn);
+ mysql_query("delete from perte_pass where uid=$user_id",$conn);
+ mysql_query("delete from user_changes where user_id=$user_id",$conn);
+ mysql_query("delete from aliases where id=$user_id and type in ('login','epouse','alias')",$conn);
+ mysql_query("delete from listes_ins where idu=$user_id",$conn);
+ mysql_query("delete from listes_mod where idu=$user_id",$conn);
+ mysql_query("delete from forums_abo where uid=$user_id",$conn);
+ mysql_query("delete from applis_ins where uid=$user_id",$conn);
+ mysql_query("delete from contacts where uid=$user_id",$conn);
+ mysql_query("delete from contacts where contact=$user_id",$conn);
+ // on purge les entrees dans logger
+ $res=mysql_query("select id from logger.sessions where uid=$user_id",$conn);
+ while (list($session_id)=mysql_fetch_row($res))
+ mysql_query("delete from logger.events where session=$session_id",$conn);
+ mysql_query("delete from logger.sessions where uid=$user_id",$conn);
+
+ my_msg(" \"$login\" a été supprimé !<BR>");
+ $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion();
+ $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['username']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration";
+ mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER);
+ } else {
+ my_error("pas de login $login");
+ }
+ break;
+ }
+}
+
+
+$page->assign('login', $login);
+
+if (!empty($_REQUEST['select'])) {
+ $numeric_login = false;
+ $looking_field = 'username';
+ if (preg_match("/^\d*$/",$login)) {
+ $numeric_login = true;
+ $looking_field = 'user_id';
+ }
+ $r=mysql_query("select * from auth_user_md5 where $looking_field='$login' order by username",$conn);
+ if ($mr=mysql_fetch_assoc($r)){
+ if ($numeric_login) $login = $mr['username'];
+ $param=mysql_query("SELECT UNIX_TIMESTAMP(lastlogin) FROM auth_user_md5 WHERE username='$login'",$conn);
+ list($lastlogin) = mysql_fetch_row($param);
+ mysql_free_result($param);
+
+ $page->assign_by_ref('mr',$mr);
+
+ $str=false;
+
+ $db_edu = connect_polyedu();
+ if($db_edu) {
+ $page->assign('db_edu', 1);
+ $result=mysql_query("SELECT x.id, a.alias, e.email, FIND_IN_SET('active', e.flags) AS act
+ FROM x LEFT JOIN aliases AS a USING(id)
+ LEFT JOIN emails as e ON(e.id=x.id)
+ WHERE x.matricule = {$mr['matricule']}",$db_edu);
+ if(!$result) {
+ $str="Erreur sur la requête: ".mysql_error($db_edu);
+ } elseif(mysql_num_rows($result) == 0) {
+ $str="Pas d'entrée dans la base !";
+ } else {
+ $alias_edu = Array();
+ while($alias_edu[] = mysql_fetch_assoc($result));
+ array_pop($alias_edu);
+ $page->assign_by_ref('alias_edu', $alias_edu);
+ } // mysql_num_rows != 0
+ mysql_free_result($result);
+ mysql_close($db_edu);
+ }
+
+ $sql = "SELECT email, num, flags, panne
+ FROM emails
+ WHERE num != 0 AND uid = {$mr['user_id']} order by num";
+ $result=mysql_query($sql,$conn);
+ $xorgmails = Array();
+ $email_panne = "";
+ while($l = mysql_fetch_assoc($result)) {
+ $xorgmails[] = $l;
+ if($l['panne']!="0000-00-00")
+ $email_panne .= "Adresse {$l['email']} signalée comme HS le {$l['panne']}<br />";
+ $next_num = $l['num']+1;
+ }
+ mysql_free_result($result);
+
+ $page->assign_by_ref('xorgmails', $xorgmails);
+ $page->assign('email_panne', $email_panne);
+ $page->assign('next_num', $next_num);
+ } // if(mysql_fetch_row)
+}
+
+$page->display();
+?>
/*************************/
#suid {
- color: white;
- background: red;
+ color: red;
+ background: pink;
width: 100%;
+ font-weight: bold;
}
+#suid td { padding: 2px; }
+#suid a { color: red; }
#body {
width: 740px;
vertical-align: top;
}
/* vim: set et ts=4 sts=4 sw=4: */
-/* $Id: default.css,v 1.14 2004-02-11 15:35:32 x2000habouzit Exp $ */
+/* $Id: default.css,v 1.15 2004-02-11 20:00:37 x2000habouzit Exp $ */
<?php
-require("auto.prepend.inc.php")
-
-#
-# TODO : CODE à vérifier : je ne sais pas si la page va bien s'afficher au final, c'est pas sur du tout...
-#
-
+require("auto.prepend.inc.php");
new_skinned_page('index.tpl',AUTH_MDP);
if (isset($_SESSION['suid'])) {
}
}
-$page->display();
+header("Location: login.php");
?>
--- /dev/null
+<?php
+require("config.xorg.inc.php");
+
+
+
+/** connexion à polyedu.polytechnique.fr
+ * @return une connexion MySQL
+ * @see admin/utilisateurs.php
+ * @see step4.php
+ * @see x.php
+ */
+function connect_polyedu () {
+ global $dbuser, $dbpwd;
+ // pas pour les test
+ $dbhost = "polyedu.polytechnique.fr";
+ $db_edu = @mysql_connect($dbhost,$dbuser,$dbpwd);
+ if (!$db_edu) {
+ echo mysql_error();
+ return false;
+ } else {
+ mysql_select_db("polyedu",$db_edu);
+ return $db_edu;
+ }
+}
+
+
+
+?>
--- /dev/null
+<?php
+/** vérifie si une adresse email (sans @) correspond à un username ou alias ou une liste...
+ * @param $email l'adresse email a verifier
+ * @return BOOL
+ */
+function isvalid_email_local($email) {
+ // ATTENTION, les requêtes sur le username et l'alias ne doivent pas être faites
+ // dans la même requête MySQL, car elles portent sur 2 index de la table avec un OR
+ // et MySQL ne sait pas utiliser les index dans ce cas
+ // (ce n'est plus vrai dans MySQL 4.x donc quand on y passera, on pourra
+ // combiner les 2 requêtes suivantes en une seule)
+ $req = mysql_query("select count(*) from auth_user_md5 where username='$email'");
+ list($nb)=mysql_fetch_row($req);
+ mysql_free_result($req);
+ if ($nb>0) return true;
+
+ $req = mysql_query("select count(*) from auth_user_md5 where alias='$email'");
+ list($nb)=mysql_fetch_row($req);
+ mysql_free_result($req);
+ if ($nb>0) return true;
+
+ // vérification des adresses types $liste et $liste-request
+ // ATTENTION, il ne faut pas accepter les adresses types owner-$liste et sm-$liste
+ $req = mysql_query("select count(*) from aliases where (alias='$email' and type='liste') or (alias='$email-request' and type='liste-request')");
+ list($nb)=mysql_fetch_row($req);
+ mysql_free_result($req);
+ if ($nb>0) return true;
+
+ // reste à vérifier si c'est pas une adresse dans /etc/aliases
+ // surement possible en utilisant postmap -q $email hash:/etc/aliases
+
+ return false;
+}
+
+/** vérifie si une adresse email convient comme adresse de redirection
+ * @param $email l'adresse email a verifier
+ * @return BOOL
+ */
+function isvalid_email_redirection($email) {
+ return isvalid_email($email) &&
+ !preg_match("/@(polytechnique\.(org|edu)|melix\.(org|net)|m4x\.org)$/", $email);
+}
+
+/* Un soundex en français posté par Frédéric Bouchery
+Voici une adaptation en PHP de la fonction soundex2 francisée de Frédéric BROUARD (http://sqlpro.developpez.com/Soundex/).
+C'est une bonne démonstration de la force des expressions régulières compatible Perl.
+trouvé sur http://expreg.com/voirsource.php?id=40&type=Chaines%20de%20caract%E8res */
+function soundex_fr($sIn)
+{
+ // Si il n'y a pas de mot, on sort immédiatement
+ if ( $sIn === '' ) return ' ';
+ // On met tout en minuscule
+ $sIn = strtoupper( $sIn );
+ // On supprime les accents
+ $sIn = strtr( $sIn, 'ÂÄÀÇÈÉÊ˼ÎÏÔÖÙÛÜ', 'AAASEEEEEIIOOUUU' );
+ // On supprime tout ce qui n'est pas une lettre
+ $sIn = preg_replace( '`[^A-Z]`', '', $sIn );
+ // Si la chaîne ne fait qu'un seul caractère, on sort avec.
+ if ( strlen( $sIn ) === 1 ) return $sIn . ' ';
+ // on remplace les consonnances primaires
+ $convIn = array( 'GUI', 'GUE', 'GA', 'GO', 'GU', 'CA', 'CO', 'CU', 'Q', 'CC', 'CK' );
+ $convOut = array( 'KI', 'KE', 'KA', 'KO', 'K', 'KA', 'KO', 'KU', 'K', 'K', 'K' );
+ $sIn = str_replace( $convIn, $convOut, $sIn );
+ // on remplace les voyelles sauf le Y et sauf la première par A
+ $sIn = preg_replace( '`(?<!^)[EIOU]`', 'A', $sIn );
+ // on remplace les préfixes puis on conserve la première lettre
+ // et on fait les remplacements complémentaires
+ $convIn = array( '`^KN`', '`^(PH|PF)`', '`^MAC`', '`^SCH`', '`^ASA`', '`(?<!^)KN`', '`(?<!^)(PH|PF)`', '`(?<!^)MAC`', '`(?<!^)SCH`', '`(?<!^)ASA`' );
+ $convOut = array( 'NN', 'FF', 'MCC', 'SSS', 'AZA', 'NN', 'FF', 'MCC', 'SSS', 'AZA' );
+ $sIn = preg_replace( $convIn, $convOut, $sIn );
+ // suppression des H sauf CH ou SH
+ $sIn = preg_replace( '`(?<![CS])H`', '', $sIn );
+ // suppression des Y sauf précédés d'un A
+ $sIn = preg_replace( '`(?<!A)Y`', '', $sIn );
+ // on supprime les terminaisons A, T, D, S
+ $sIn = preg_replace( '`[ATDS]$`', '', $sIn );
+ // suppression de tous les A sauf en tête
+ $sIn = preg_replace( '`(?!^)A`', '', $sIn );
+ // on supprime les lettres répétitives
+ $sIn = preg_replace( '`(.)\1`', '$1', $sIn );
+ // on ne retient que 4 caractères ou on complète avec des blancs
+ return substr( $sIn . ' ', 0, 4);
+}
+?>
}
function display($append_to_id="") {
+ if(isset($_SESSION['suid']))
+ $this->caching=false;
$id = $this->make_id($append_to_id);
if($this->_page_type == POPUP)
parent::display('skin/'.$_SESSION['skin_popup'], $id);
*/
function smarty_insert_getNbIns($params, &$smarty)
{
+ global $conn;
$result=mysql_query("SELECT COUNT(*) FROM auth_user_md5 AS a INNER JOIN identification AS i
- ON a.matricule=i.matricule where i.deces = 0");
+ ON a.matricule=i.matricule where i.deces = 0",$conn);
list($stats_count)=mysql_fetch_row($result);
mysql_free_result($result);
return "$stats_count";
<?php
function nb_trk($pri,$tr) {
+ global $conn;
$req = mysql_query("select count(rq_id) from trackers.requests left join trackers.states as st using(st_id)
- where tr_id='$tr' and admin_id<=0 and pri='$pri' and st.texte!='fermé'");
+ where tr_id='$tr' and admin_id<=0 and pri='$pri' and st.texte!='fermé'", $conn);
list($res) = mysql_fetch_row($req);
mysql_free_result($req);
return ($res?$res:"-");
*/
function smarty_insert_mkStats($params, &$smarty)
{
- $req = mysql_query("select count(*) from requests");
+ global $conn;
+ $req = mysql_query("select count(*) from requests",$conn);
list($stats_req) = mysql_fetch_row($req);
mysql_free_result($req);
$stats_req = ($stats_req ? $stats_req : "-");
--- /dev/null
+{* $Id: utilisateurs.head.tpl,v 1.1 2004-02-11 20:00:38 x2000habouzit Exp $ *}
+
+{literal}
+<script language="javascript" type="text/javascript" src="md5.js"></script>
+<style type="text/css" media="screen,print">
+ <!--
+ p.succes {font-weight: bold;}
+ table.admin {width: 100%; color: #000000; background-color: #eeeeee;}
+ table.admin th.login,th.password,th.perms {border-top: 1px solid black;}
+ table.admin th.login,td.login {background-color: #f9e89b;}
+ table.admin td.loginr {background-color: #f9e89b; font-weight: bold; text-align: right;}
+ table.admin th.action,td.action {background-color: blue; color: yellow;}
+ table.admin th.password,th.perms,td.password,td.perms {background-color: #ffc0c0;}
+ table.admin th.detail {text-align: center;}
+ table.admin th.alias,td.alias { background-color: #F9E89B;}
+ table.admin th.polyedu,td.polyedu { border-top: 1px solid black; border-bottom: 1px solid black;}
+ table.admin th.alias {text-align: center;}
+ -->
+</style>
+
+<script language="javascript" type="text/javascript">
+<!--
+function doAddUser() {
+ document.add.hashpass.value = MD5(document.add.password.value);
+ document.add.password.value = "";
+ document.add.submit();
+}
+function doEditUser() {
+ document.edit.hashpass.value = MD5(document.edit.password.value);
+ document.edit.password.value = "";
+ document.edit.submit();
+}
+// -->
+</script>
+{/literal}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
--- /dev/null
+{* $Id: utilisateurs.tpl,v 1.1 2004-02-11 20:00:38 x2000habouzit Exp $ *}
+
+{if $smarty.session.suid}
+<p class="erreur">
+Attention, déjà en SUID !!!
+</p>
+{/if}
+
+<div class="rubrique">
+ Gestion des utilisateurs
+</div>
+
+{dynamic}
+
+{if $smarty.post.u_kill_conf}
+<div class="center">
+ <form name="yes" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="login" value="{$smarty.request.login}">
+ Confirmer la suppression de {$smarty.request.login}
+ <input type="submit" name="u_kill" value="continuer">
+ </form>
+</div>
+{/if}
+
+{/dynamic}
+
+<form name="add" method="post" action="{$smarty.server.PHP_SELF}">
+ <table class="tinybicol" border="0" cellspacing="0" cellpadding="3">
+ <tr>
+ <th>
+ Administrer
+ </th>
+ </tr>
+ <tr>
+ <td class="center">
+ <input type="text" name="login" size="40" maxlength="255" value="{$login}">
+ </td>
+ </tr>
+ <tr>
+ <td class="center">
+ <input type="submit" name="select" value=" edit ">
+ <input type="hidden" name="hashpass" value="">
+ <input type="submit" name="suid_button" value=" su ">
+ </td>
+ </tr>
+ </table>
+</form>
+
+{dynamic on="0`$smarty.request.select`"}
+<table border="0" cellspacing="0" cellpadding="0" class="admin">
+ <p class="smaller">
+ Derniére connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
+ depuis <strong>{$mr.host}</strong>
+ </p>
+ <form name="edit" method="post" action="{$smarty.server.PHP_SELF}">
+ <tr valign=top align=left>
+ <th class="login">
+ Login
+ </th>
+ <input type="hidden" name="hashpass" value="">
+ <th class="password">
+ Password
+ </th>
+ <th class="perms">
+ Perms
+ </th>
+ </tr>
+ <tr>
+ <td class="login">
+ <input type="hidden" name="hashpass" value="">
+ <input type="text" name="login" size=20 maxlength=50 value="{$mr.username}">
+ </td>
+ <td class="password">
+ <input type="text" name="newpass_clair" size=10 maxlength=10 value="********">
+ <input type="hidden" name="passw" size=32 maxlength=32 value="{$mr.password}">
+ </td>
+ <td class="perms">
+ <select name="permsN">
+ <option value="user" {if $mr.perms eq "user"}selected="selected"{/if}>user</option>
+ <option value="admin" {if $mr.perms eq "admin"}selected="selected"{/if}>admin</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="loginr">
+ if (login!=prenom.nom)
+ </td>
+ <td class="login">
+ <select name="homonyme">
+ {if $mr.loginbis && ($mr.loginbis neq $mr.username)}
+ <option value="1" selected="selected"> OUI </option>
+ <option value="0"> NON </option>
+ {else}
+ <option value="1"> OUI </option>
+ <option value="0" selected="selected"> NON </option>
+ {/if}
+ </select>
+ /* pour homonymes */
+ </td>
+ <th class="action">
+
+ </th>
+ </tr>
+ <tr>
+ <td class="loginr">
+ then prenom.nom=
+ </td>
+ <td class="login">
+ <input type="text" name="loginbis" size=24 maxlength=255 value="{$mr.loginbis}">
+ </td>
+ <th class="action">
+ Action
+ </th>
+ </tr>
+ <tr>
+ <th>UID</th>
+ <td>
+ {$mr.user_id}
+ <input type="hidden" name="olduid" size=6 maxlength=6 value="{$mr.user_id}">
+ <input type="hidden" name="oldlogin" size=100 maxlength=100 value="{$mr.username}">
+ </td>
+ <td class="action">
+ <input type="submit" name="u_kill_conf" value="DELETE">
+ </td>
+ </tr>
+ <tr>
+ <th class="detail">
+ Matricule
+ </th>
+ <td class="detail">
+ {$mr.matricule}
+ </td>
+ <td class="action">
+ <input onClick="doEditUser(); return true;" type="submit" name="u_edit" value="UPDATE">
+ </td>
+ </tr>
+ <tr>
+ <th class="detail">
+ Date de naissance
+ </th>
+ <td class="detail">
+ <input type="text" name="naissanceN" size=10 maxlength=10 value="{$mr.naissance}">
+ </td>
+ <td class="action">
+
+ </td>
+ </tr>
+ <tr>
+ <th class="detail">
+ Promo
+ </th>
+ <td class="detail">
+ <input type="text" name="promoN" size=4 maxlength=4 value="{$mr.promo}">
+ </td>
+ <td class="action">
+
+ </td>
+ </tr>
+ <tr>
+ <th class="detail">
+ Nom
+ </th>
+ <td class="detail">
+ <input type="text" name="nomN" size=20 maxlength=255 value="{$mr.nom}">
+ </td>
+ <td class="action">
+ <a href="javascript:x()" onclick="popWin('{"x.php?x=`$mr.username`"|url}')">[Voir fiche]</a>
+ </td>
+ </tr>
+ <tr>
+ <th class="detail">
+ Prénom
+ </th>
+ <td class="detail">
+ <input type="text" name="prenomN" size=20 maxlength=30 value="{$mr.prenom}">
+ </td>
+ <td class="action">
+ <a href="admin_trombino.php?uid={$mr.user_id}">[Trombino]</a>
+ </td>
+ </tr>
+ <tr>
+ <th class="alias">
+ Alias e-mail
+ </th>
+ <td class="alias">
+ <input type="text" name="alias" size=20 maxlength=255 value="{$mr.alias}">@m4x.org
+ </td>
+ <td class="action">
+
+ </td>
+ </tr>
+{if $db_edu}
+ {foreach item=alias from=$alias_edu}
+ <tr>
+ <th class="polyedu">Alias polyedu
+ {if !$alias.email}
+ <br /><span="erreur">Attention, email indéfini !</span>
+ {assign var="edu_err" value=1}
+ {/if}
+ {if $alias.email neq "`$mr.username`@m4x.org"}
+ <br /><span="erreur">Attention, email mal défini !</span>
+ {assign var="edu_err" value=1}
+ {/if}
+ {if $alias.email && !$alias.act}
+ <br /><span="erreur">Attention, email inactif !</span>
+ {assign var="edu_err" value=1}
+ {/if}
+ </th>
+ {if $alias.alias}
+ <td class="polyedu">
+ <input type="text" name="alias_edu" size=20 maxlength=255 value="{$alias.alias}" />
+ </td>
+ <td class="polyedu">
+ <form name="rmedu" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="id_edu" value="{$alias.id}">
+ <input type="hidden" name="alias_edu" value="{$alias.alias}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="select" value="edit">
+ <input type="submit" name="remove_polyedu_alias" value="Supprimer">
+ </form>
+ </td>
+ {else}
+ <td class="polyedu">
+ Erreur : entrée dans la table x mais pas dans la table alias
+ </td>
+ <td class="polyedu">
+ <form name="addedu" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="user_id" value="{$mr.user_id}">
+ <input type="hidden" name="matricule" value="{$mr.matricule}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="select" value="edit">
+ <input type="hidden" name="alias_edu" value="">
+ <input type="submit" name="add_polyedu_alias" value="Réparer">
+ </form>
+ </td>
+ {/if}
+ </tr>
+ {/foreach}
+ {if $edu_err}
+ <tr>
+ <th class="polyedu">
+ Alias polyedu
+ </th>
+ <td class="polyedu">
+ Un problème existe !!!
+ </td>
+ <td class="polyedu">
+ <form name="addedu" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="user_id" value="{$mr.user_id}">
+ <input type="hidden" name="matricule" value="{$mr.matricule}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="select" value="edit">
+ <input type="hidden" name="alias_edu" value="">
+ <input type="submit" name="add_polyedu_alias" value="Réparer">
+ </form>
+ </td>
+ </tr>
+ {/if}
+ <form name="addedu" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="user_id" value="{$mr.user_id}">
+ <input type="hidden" name="matricule" value="{$mr.matricule}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="select" value="edit">
+ <tr>
+ <th class="polyedu">
+ Ajouter un alias polyedu
+ </th>
+ <td class="polyedu">
+ <input type="text" name="alias_edu" size=29 maxlength=60 value="">
+ </td>
+ <td class="polyedu">
+ <input type="submit" name="add_polyedu_alias" value="Ajouter">
+ </td>
+ </tr>
+ </form>
+{else}{* db_edu *}
+ <tr>
+ <th class="polyedu" colspan="3">
+ Polyedu non joignable
+ </th>
+ </tr>
+{/if}
+ {foreach item=mail from=$xorgmails}
+ <form name="remove" method="post" action="{$smarty.server.PHP_SELF}">
+ <tr>
+ <th class="detail">
+ e-mail forward {$mail.num} ({$mail.flags})
+ </th>
+ <td class="detail">
+ <input type="text" name="fwd" size=29 maxlength=255 value="{$mail.email}">
+ </td>
+ <td class="action">
+ <input type="hidden" name="user_id" value="{$mr.user_id}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="email" value="{$mail.email}">
+ <input type="hidden" name="select" value="edit">
+ <input type="submit" name="remove_email" value="Supprimer">
+ </td>
+ </tr>
+ </form>
+ {/foreach}
+ <form name="add" method="post" action="{$smarty.server.PHP_SELF}">
+ <input type="hidden" name="user_id" value="{$mr.user_id}">
+ <input type="hidden" name="login" value="{$mr.username}">
+ <input type="hidden" name="select" value="edit">
+ <input type="hidden" name="num" value="{$next_num}">
+ <tr>
+ <th class="detail">
+ Ajouter un email
+ </td>
+ <td class="detail">
+ <input type="text" name="email" size=29 maxlength=60 value="">
+ </td>
+ <td class="action">
+ <input type="submit" name="add_email" value="Ajouter">
+ </td>
+ </tr>
+ </form>
+ </table>
+</form>
+<p class="erreur">
+{$email_panne}
+</p>
+{/dynamic}
+{* vim:set et sw=2 sts=2 sws=2: *}
-{* $Id: default.tpl,v 1.6 2004-02-04 22:47:45 x2000habouzit Exp $ *}
+{* $Id: default.tpl,v 1.7 2004-02-11 20:00:39 x2000habouzit Exp $ *}
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
{if $smarty.session.suid}
<table id="suid" cellpadding="0" cellspacing="0">
<tr>
- <td>{$smarty.session.suid}</strong></td>
- <td><a href="#####exit.php######">exit</a></td>
+ <td>
+ {dynamic}
+ {$smarty.session.suid} ({$smarty.session.username})
+ {/dynamic}
+ [<a href="{"exit.php"|url}">exit</a>]
+ </td>
</tr>
</table>
{/if}