diff -urN cahier-de-prepa9.0.0/ajax.php cahier-de-prepa9.0.1/ajax.php
--- cahier-de-prepa9.0.0/ajax.php	2019-08-28 14:22:21.867100664 +0200
+++ cahier-de-prepa9.0.1/ajax.php	2019-08-29 19:25:39.423850014 +0200
@@ -1000,7 +1000,7 @@
     $id = $mysqli->insert_id;
     $resultat = $mysqli->query("SELECT GROUP_CONCAT(nom ORDER BY FIND_IN_SET(id,'${r['parents']},$parent') SEPARATOR '/' )
                                 FROM reps WHERE FIND_IN_SET(id,'${r['parents']},$parent')");
-    recent($mysqli,3,$id,array('matiere'=>$r['matiere'], 'titre'=>$nom_sql, 'lien'=>".?${r['cle']}", 'texte'=>$mysqli->real_escape_string("$ext|$taille|$parent|".$resultat->fetch_row()[0]), 'protection'=>$protection));
+    recent($mysqli,3,$id,array('matiere'=>$r['matiere'], 'titre'=>$nom_sql, 'lien'=>"download?id=$id", 'texte'=>$mysqli->real_escape_string("$ext|$taille|$parent|".$resultat->fetch_row()[0]), 'protection'=>$protection));
     $resultat->free();
     // Mise à jour de l'affichage de la matière dans le menu et de l'ordre des documents
     $mysqli->query("UPDATE matieres SET docs = 1 WHERE id = ${r['matiere']}");
@@ -1778,7 +1778,7 @@
         return substr($chaine,1);
       }
       // Valeurs à modifier
-      $requete = array_diff_assoc( array( 'nom'=>trim($_REQUEST['nom']), 'prenom'=>trim($_REQUEST['prenom']), 'login'=>trim($_REQUEST['login']), 'mail'=>mb_strtolower(trim($_REQUEST['mail1'])), 'mailexp'=>(trim($_REQUEST['mailexp']) ?? ''), 'mailcopie'=>intval(isset($_REQUEST['mailcopie'])) ), $r);
+      $requete = array_diff_assoc( array( 'nom'=>trim($_REQUEST['nom']), 'prenom'=>trim($_REQUEST['prenom']), 'login'=>trim($_REQUEST['login']), 'mail'=>mb_strtolower(trim($_REQUEST['mail1'])), 'mailexp'=>(trim($_REQUEST['mailexp'] ?? '')), 'mailcopie'=>intval(isset($_REQUEST['mailcopie'])) ), $r);
       if ( isset($requete['nom']) && !($nom = mb_convert_case(strip_tags($requete['nom']),MB_CASE_TITLE)) )
         unset($requete['nom']);
       if ( isset($requete['prenom']) && !($prenom = mb_convert_case(strip_tags($requete['prenom']),MB_CASE_TITLE)) )
@@ -1813,7 +1813,7 @@
         unset($requete['mailexp']);
       if ( !$requete )
         exit('{"etat":"ok","message":"Les valeurs fournies étaient celles déjà enregistrées. Aucune modification n\'a été effectuée."}');
-      if( requete('utilisateurs','UPDATE utilisateurs SET '.fabriqueupdate($requete)." WHERE id = $id",$mysqli) )  {
+      if( requete('utilisateurs','UPDATE utilisateurs SET '.fabriqueupdate($requete,$mysqli)." WHERE id = $id",$mysqli) )  {
         // Si interface globale activée, mise à jour
         if ( ( $r['autorisation'] > 1 ) && $interfaceglobale )  {
           include("${interfaceglobale}majutilisateurs.php");
@@ -2456,7 +2456,7 @@
       $resultat->free();
       // Écriture dans la base de données
       if ( requete('agenda',"UPDATE agenda SET matiere = $mid, type = $tid, debut = '$debut', fin = '$fin', texte = '$texte' WHERE id = $id", $mysqli) )  {
-        recent($mysqli,5,$id,array('titre'=>"$jour/$mois - $type ".( strlen($matiere) ? $mysqli->real_escape_string("en $matiere ") : ''), 'lien'=>"agenda?mois=$annee$mois", 'texte'=>$texte, 'matiere'=>$mid));
+        recent($mysqli,4,$id,array('titre'=>"$jour/$mois - $type ".( strlen($matiere) ? $mysqli->real_escape_string("en $matiere ") : ''), 'lien'=>"agenda?mois=$annee$mois", 'texte'=>$texte, 'matiere'=>$mid));
         $mysqli->query('ALTER TABLE agenda ORDER BY fin, debut');
         exit($_SESSION['message'] = '{"etat":"ok","message":"L\'événement a été modifié."}');
       }
@@ -2465,7 +2465,7 @@
 
     // Nouvel événement
     if ( requete('agenda',"INSERT INTO agenda SET matiere = $mid, type = $tid, debut = '$debut', fin = '$fin', texte = '$texte'", $mysqli) )  {
-      recent($mysqli,5,$mysqli->insert_id,array('titre'=>"$jour/$mois - $type ".( strlen($matiere) ? $mysqli->real_escape_string("en $matiere ") : ''), 'lien'=>"agenda?mois=$annee$mois", 'texte'=>$texte, 'matiere'=>$mid, 'protection'=>0));
+      recent($mysqli,4,$mysqli->insert_id,array('titre'=>"$jour/$mois - $type ".( strlen($matiere) ? $mysqli->real_escape_string("en $matiere ") : ''), 'lien'=>"agenda?mois=$annee$mois", 'texte'=>$texte, 'matiere'=>$mid, 'protection'=>0));
       $mysqli->query('ALTER TABLE agenda ORDER BY fin, debut');
       exit($_SESSION['message'] = '{"etat":"ok","message":"L\'événement a été ajouté."}');
     }
diff -urN cahier-de-prepa9.0.0/CHANGELOG.php cahier-de-prepa9.0.1/CHANGELOG.php
--- cahier-de-prepa9.0.0/CHANGELOG.php	2019-08-29 04:09:15.893212925 +0200
+++ cahier-de-prepa9.0.1/CHANGELOG.php	2019-08-29 19:30:43.158976565 +0200
@@ -1,4 +1,4 @@
-Version actuelle : 9.0.0 (29/08/19)
+Version actuelle : 9.0.1 (29/08/19)
 ===================
 Changements :
 1.0   31/08/11 Première version
@@ -239,6 +239,8 @@
   * Demande de confirmation si un texte a été saisi sans être enregistré (mais
     dépend du réglage du navigateur)
   * Planning dépendant de la zone scolaire
+9.0.1 29/08/19 Correction de bugs
+
 
 ===================
 
diff -urN cahier-de-prepa9.0.0/css/icones.css cahier-de-prepa9.0.1/css/icones.css
--- cahier-de-prepa9.0.0/css/icones.css	2019-08-25 18:11:52.452375669 +0200
+++ cahier-de-prepa9.0.1/css/icones.css	2019-08-29 19:13:16.224201068 +0200
@@ -296,7 +296,7 @@
 .icon-supprutilisateur:before {
   content: "\e657";
 }
-.icon-valideutilisateur:before {
+.icon-validutilisateur:before {
   content: "\e658";
 }
 .icon-lecture:before {
diff -urN cahier-de-prepa9.0.0/css/icones.min.css cahier-de-prepa9.0.1/css/icones.min.css
--- cahier-de-prepa9.0.0/css/icones.min.css	2019-08-28 19:37:25.357431181 +0200
+++ cahier-de-prepa9.0.1/css/icones.min.css	2019-08-29 19:13:33.284376035 +0200
@@ -1 +1 @@
-@font-face{font-family:'icomoon';src:url('../fonts/icomoon.woff?24') format('woff');font-weight:normal;font-style:normal}[class^="icon-"]{font-family:'icomoon'!important;color:black;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a[class^="icon-"]{cursor:pointer;text-decoration:none}span.icon-minilock{position:relative!important;left:-0.3em;top:.1em;color:#777;margin-right:-0.5em}.icon-montre:before{content:"\e600"}.icon-cache:before{content:"\e601"}.icon-aide:before{content:"\e602"}.icon-ajoute:before,.icon-ajoutecolle:before{content:"\e603"}.icon-supprime:before{content:"\e604"}.icon-annule:before{content:"\e605"}.icon-ok:before,.icon-envoidoc:before{content:"\e606"}.icon-prefs:before{content:"\e607"}.icon-monte:before{content:"\e608"}.icon-descend:before{content:"\e609"}.icon-ferme:before{content:"\e60a"}.icon-epingle:before{content:"\e60b"}.icon-par1:before{content:"\e60c"}.icon-par2:before{content:"\e60d"}.icon-par3:before{content:"\e60e"}.icon-gras:before{content:"\e60f"}.icon-italique:before{content:"\e610"}.icon-souligne:before{content:"\e611"}.icon-omega:before{content:"\e612"}.icon-sigma:before{content:"\e613"}.icon-exp:before{content:"\e614"}.icon-ind:before{content:"\e615"}.icon-ol:before{content:"\e616"}.icon-ul:before{content:"\e617"}.icon-lien1:before{content:"\e618"}.icon-lien2:before{content:"\e619"}.icon-retour:before{content:"\e61a"}.icon-source:before{content:"\e61b"}.icon-nosource:before{content:"\e61c"}.icon-tex:before{content:"\e61d"}.icon-titres:before{content:"\e61e"}.icon-edite:before,.icon-editedoc:before,.icon-editerep:before{content:"\e61f"}.icon-precedent:before{content:"\e620"}.icon-suivant:before{content:"\e621"}.icon-recherche:before{content:"\e622"}.icon-voirtout:before{content:"\e623"}.icon-accueil:before{content:"\e624"}.icon-imprime:before{content:"\e625"}.icon-connexion:before{content:"\e626"}.icon-deconnexion:before{content:"\e627"}.icon-mail:before{content:"\e628"}.icon-menu:before{content:"\e629"}.icon-cocher:before{content:"\e62a"}.icon-decocher:before{content:"\e62b"}.icon-rep:before{content:"\e62c"}.icon-rep-open:before{content:"\e62d"}.icon-download:before{content:"\e62e"}.icon-minilock:before{content:"\e62f"}.icon-alphaasc:before{content:"\e630"}.icon-alphadesc:before{content:"\e631"}.icon-chronoasc:before{content:"\e632"}.icon-chronodesc:before{content:"\e633"}.icon-ajouterep:before{content:"\e634"}.icon-ajoutedoc:before{content:"\e635"}.icon-doc:before{content:"\e636"}.icon-doc-pdf:before{content:"\e637"}.icon-doc-doc:before{content:"\e638"}.icon-doc-xls:before{content:"\e639"}.icon-doc-ppt:before{content:"\e63a"}.icon-doc-jpg:before{content:"\e63b"}.icon-doc-zip:before{content:"\e63c"}.icon-doc-mp3:before{content:"\e63d"}.icon-doc-mp4:before{content:"\e63e"}.icon-doc-py:before{content:"\e63f"}.icon-doc-sql:before{content:"\e640"}.icon-doc-db:before{content:"\e641"}.icon-recent:before{content:"\e642"}.icon-rss:before{content:"\e643"}.icon-infos:before{content:"\e644"}.icon-colles:before{content:"\e645"}.icon-lock1:before{content:"\e646"}.icon-lock2:before{content:"\e647"}.icon-lock3:before{content:"\e648"}.icon-lock4:before{content:"\e649"}.icon-lock5:before{content:"\e64a"}.icon-agenda:before{content:"\e64b"}.icon-ajout-colle:before{content:"\e64c"}.icon-messages:before{content:"\e64d"}.icon-lock:before{content:"\e64e"}.icon-locktotal:before{content:"\e64f"}.icon-editemultiple:before{content:"\e650"}.icon-plie:before{content:"\e651"}.icon-deplie:before{content:"\e652"}.icon-mailenvoi:before{content:"\e653"}.icon-nok:before{content:"\e654"}.icon-active:before{content:"\e655"}.icon-desactive:before{content:"\e656"}.icon-supprutilisateur:before{content:"\e657"}.icon-valideutilisateur:before{content:"\e658"}.icon-lecture:before{content:"\e659"}.icon-nolecture:before{content:"\e65a"}.icon-echange:before{content:"\e65b"}.icon-notes:before{content:"\e65c"}.icon-cdt:before{content:"\e65d"}
\ No newline at end of file
+@font-face{font-family:'icomoon';src:url('../fonts/icomoon.woff?24') format('woff');font-weight:normal;font-style:normal}[class^="icon-"]{font-family:'icomoon'!important;color:black;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a[class^="icon-"]{cursor:pointer;text-decoration:none}span.icon-minilock{position:relative!important;left:-0.3em;top:.1em;color:#777;margin-right:-0.5em}.icon-montre:before{content:"\e600"}.icon-cache:before{content:"\e601"}.icon-aide:before{content:"\e602"}.icon-ajoute:before,.icon-ajoutecolle:before{content:"\e603"}.icon-supprime:before{content:"\e604"}.icon-annule:before{content:"\e605"}.icon-ok:before,.icon-envoidoc:before{content:"\e606"}.icon-prefs:before{content:"\e607"}.icon-monte:before{content:"\e608"}.icon-descend:before{content:"\e609"}.icon-ferme:before{content:"\e60a"}.icon-epingle:before{content:"\e60b"}.icon-par1:before{content:"\e60c"}.icon-par2:before{content:"\e60d"}.icon-par3:before{content:"\e60e"}.icon-gras:before{content:"\e60f"}.icon-italique:before{content:"\e610"}.icon-souligne:before{content:"\e611"}.icon-omega:before{content:"\e612"}.icon-sigma:before{content:"\e613"}.icon-exp:before{content:"\e614"}.icon-ind:before{content:"\e615"}.icon-ol:before{content:"\e616"}.icon-ul:before{content:"\e617"}.icon-lien1:before{content:"\e618"}.icon-lien2:before{content:"\e619"}.icon-retour:before{content:"\e61a"}.icon-source:before{content:"\e61b"}.icon-nosource:before{content:"\e61c"}.icon-tex:before{content:"\e61d"}.icon-titres:before{content:"\e61e"}.icon-edite:before,.icon-editedoc:before,.icon-editerep:before{content:"\e61f"}.icon-precedent:before{content:"\e620"}.icon-suivant:before{content:"\e621"}.icon-recherche:before{content:"\e622"}.icon-voirtout:before{content:"\e623"}.icon-accueil:before{content:"\e624"}.icon-imprime:before{content:"\e625"}.icon-connexion:before{content:"\e626"}.icon-deconnexion:before{content:"\e627"}.icon-mail:before{content:"\e628"}.icon-menu:before{content:"\e629"}.icon-cocher:before{content:"\e62a"}.icon-decocher:before{content:"\e62b"}.icon-rep:before{content:"\e62c"}.icon-rep-open:before{content:"\e62d"}.icon-download:before{content:"\e62e"}.icon-minilock:before{content:"\e62f"}.icon-alphaasc:before{content:"\e630"}.icon-alphadesc:before{content:"\e631"}.icon-chronoasc:before{content:"\e632"}.icon-chronodesc:before{content:"\e633"}.icon-ajouterep:before{content:"\e634"}.icon-ajoutedoc:before{content:"\e635"}.icon-doc:before{content:"\e636"}.icon-doc-pdf:before{content:"\e637"}.icon-doc-doc:before{content:"\e638"}.icon-doc-xls:before{content:"\e639"}.icon-doc-ppt:before{content:"\e63a"}.icon-doc-jpg:before{content:"\e63b"}.icon-doc-zip:before{content:"\e63c"}.icon-doc-mp3:before{content:"\e63d"}.icon-doc-mp4:before{content:"\e63e"}.icon-doc-py:before{content:"\e63f"}.icon-doc-sql:before{content:"\e640"}.icon-doc-db:before{content:"\e641"}.icon-recent:before{content:"\e642"}.icon-rss:before{content:"\e643"}.icon-infos:before{content:"\e644"}.icon-colles:before{content:"\e645"}.icon-lock1:before{content:"\e646"}.icon-lock2:before{content:"\e647"}.icon-lock3:before{content:"\e648"}.icon-lock4:before{content:"\e649"}.icon-lock5:before{content:"\e64a"}.icon-agenda:before{content:"\e64b"}.icon-ajout-colle:before{content:"\e64c"}.icon-messages:before{content:"\e64d"}.icon-lock:before{content:"\e64e"}.icon-locktotal:before{content:"\e64f"}.icon-editemultiple:before{content:"\e650"}.icon-plie:before{content:"\e651"}.icon-deplie:before{content:"\e652"}.icon-mailenvoi:before{content:"\e653"}.icon-nok:before{content:"\e654"}.icon-active:before{content:"\e655"}.icon-desactive:before{content:"\e656"}.icon-supprutilisateur:before{content:"\e657"}.icon-validutilisateur:before{content:"\e658"}.icon-lecture:before{content:"\e659"}.icon-nolecture:before{content:"\e65a"}.icon-echange:before{content:"\e65b"}.icon-notes:before{content:"\e65c"}.icon-cdt:before{content:"\e65d"}
diff -urN cahier-de-prepa9.0.0/fonctions.php cahier-de-prepa9.0.1/fonctions.php
--- cahier-de-prepa9.0.0/fonctions.php	2019-08-29 00:19:30.432125603 +0200
+++ cahier-de-prepa9.0.1/fonctions.php	2019-08-29 19:14:18.152836200 +0200
@@ -363,10 +363,11 @@
   // Si $prop['protection'] seule existe, c'est un ajout ou la modification d'une autre propriété
   // Si $ancienne['protection'] seule existe, c'est une suppression
   // Dans les deux cas, on modifie les flux correspondant, aucun si 32.
-  if ( !isset($prop['protection']) || !isset($anciennesprop['protection']) )
+  if ( !isset($prop['protection']) || !isset($anciennesprop['protection']) )  {
     // Si ajout/suppression avec protection=32, rien à faire pour les flux RSS
     if ( ( $protection = $prop['protection'] ?? $anciennesprop['protection'] ) == 32 )
       return true;
+  }
   // Si c'est une modification de protection, les deux existent
   else
     $protection = ( $prop['protection'] && $anciennesprop['protection'] ) ? $prop['protection']^$anciennesprop['protection'] : 0;
@@ -760,8 +761,8 @@
   <title>$head</title>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0">
-  <link rel="stylesheet" href="css/style.min.css?v=900">
-  <link rel="stylesheet" href="css/icones.min.css?v=900">$css
+  <link rel="stylesheet" href="css/style.min.css?v=901">
+  <link rel="stylesheet" href="css/icones.min.css?v=901">$css
   <script type="text/javascript" src="js/jquery.min.js"></script>
   <link rel="alternate" type="application/rss+xml" title="Flux RSS" href="rss/$rss/rss.xml">
 </head>
diff -urN cahier-de-prepa9.0.0/gestioncompte.php cahier-de-prepa9.0.1/gestioncompte.php
--- cahier-de-prepa9.0.0/gestioncompte.php	2019-08-27 00:06:35.887802962 +0200
+++ cahier-de-prepa9.0.1/gestioncompte.php	2019-08-29 17:38:37.405971059 +0200
@@ -233,7 +233,7 @@
           exit('{"etat":"nok_","message":"Un compte avec le même identifiant existe déjà. Merci de vous connecter avec l\'adresse électronique correspondante."}');
         // Écriture du nouveau compte
         $mysqli = connectsql(true);
-        if( requete('utilisateurs',"INSERT INTO utilisateurs SET login = '$login', prenom = '$prenom', nom = '$nom', mail = '$mail', mdp = '*$newmdp', autorisation = 2, matieres = CONCAT('0,',(SELECT GROUP_CONCAT(id) AS matieres FROM matieres)), timeout = 3600, mailexp = '$prenom $nom', mailcopie = 1, mailenvoi = 0, permconn = ''",$mysqli) )  {
+        if( requete('utilisateurs',"INSERT INTO utilisateurs SET login = '$login', prenom = '$prenom', nom = '$nom', mail = '$mail', mdp = '*$newmdp', autorisation = 2, matieres = CONCAT('0,',(SELECT GROUP_CONCAT(id) AS matieres FROM matieres)), timeout = 3600, mailexp = '$prenom $nom', mailcopie = 1, permconn = ''",$mysqli) )  {
           // Si interface globale activée, mise à jour
           if ( $interfaceglobale )  {
             include("${interfaceglobale}majutilisateurs.php");
diff -urN cahier-de-prepa9.0.0/recent.php cahier-de-prepa9.0.1/recent.php
--- cahier-de-prepa9.0.0/recent.php	2019-08-26 10:38:57.111433388 +0200
+++ cahier-de-prepa9.0.1/recent.php	2019-08-29 19:25:51.623975610 +0200
@@ -61,16 +61,16 @@
 
 // Liste des icônes pour affichage
 $icones = array(
-  'pdf' => '-pdf',
+  'pdf' => '-pdf', 'dvi' => '-pdf',
   'doc' => '-doc', 'odt' => '-doc', 'docx' => '-doc',
-  'xls' => '-xls', 'ods' => '-xls', 'xlsx' => '-xls',
-  'ppt' => '-ppt', 'odp' => '-ppt', 'pptx' => '-ppt',
+  'xls' => '-xls', 'ods' => '-xls', 'xlsx' => '-xls', 'csv' => '-xls',
+  'ppt' => '-ppt', 'odp' => '-ppt', 'pptx' => '-ppt', 'pps' => 'ppt',
   'jpg' => '-jpg', 'jpeg' => '-jpg', 'png' => '-jpg', 'gif' => '-jpg', 'svg' => '-jpg', 'tif' => '-jpg', 'tiff' => '-jpg', 'bmp' => '-jpg', 'ps' => '-jpg', 'eps' => '-jpg',
   'mp3' => '-mp3', 'ogg' => '-mp3', 'oga' => '-mp3', 'wma' => '-mp3', 'wav' => '-mp3', 'ra' => '-mp3', 'rm' => '-mp3',
   'mp4' => '-mp4', 'avi' => '-mp4', 'mpeg' => '-mp4', 'mpg' => '-mp4', 'wmv' => '-mp4', 'mp4' => '-mp4', 'ogv' => '-mp4', 'qt' => '-mp4', 'mov' => '-mp4', 'mkv' => '-mp4', 'flv' => '-mp4',
   'zip' => '-zip', 'rar' => '-zip', '7z' => '-zip',
   'py' => '-py', 'exe' => '-py', 'sh' => '-py', 'ml' => '-py', 'mw' => '-py',
-  'db' => '-db', 'db3' => '-db', 'sqlite' => '-db',
+  'db' => '-db', 'db3' => '-db', 'sqlite' => '-db', 'sq3' => '-db',
   'sql' => '-sql',
   'txt' => '', 'rtf' => '', '' => ''
 );
