diff -urN cahier-de-prepa4.0.3/admin/docs.php cahier-de-prepa4.0.4/admin/docs.php --- cahier-de-prepa4.0.3/admin/docs.php 2014-08-30 23:27:51.512191421 +0200 +++ cahier-de-prepa4.0.4/admin/docs.php 2014-09-20 15:05:44.805288387 +0200 @@ -177,7 +177,7 @@ // Récupération des données relatives au document if ( $id ) { - $resultat = $mysqli->query("SELECT nom, protection, ext, lien FROM docs WHERE id = $id AND parent = $rid"); + $resultat = $mysqli->query("SELECT nom, protection, ext, lien, parent FROM docs WHERE id = $id AND FIND_IN_SET(matiere,'0,${_SESSION['matieres']}')"); if ( $resultat->num_rows ) { $doc = $resultat->fetch_assoc(); $resultat->free(); @@ -222,7 +222,7 @@ ) ? " L'accès au document ${doc['nom']} a bien été modifié." : " L'accès au document ${doc['nom']} n'a pas pu être modifié. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; // Déplacement dans un autre répertoire - if ( is_numeric($parent = $_REQUEST['parent']) && ( $parent != $rid ) ) { + if ( is_numeric($parent = $_REQUEST['parent']) && ( $parent != $doc['parent'] ) ) { $resultat = $mysqli->query("SELECT parents, matiere FROM reps WHERE id = $parent AND FIND_IN_SET(matiere,'0,${_SESSION['matieres']}')"); if ( $resultat->num_rows ) { $r = $resultat->fetch_assoc(); @@ -246,7 +246,7 @@ if ( $doc['protection'] == 4 ) recent($mysqli,3,$id," $path","download?id=$id","
Nouveau document : $path
"); // Document auparavant visible : on met à jour les chemins, sans mettre en avant le document - // Remarque : le RSS n'est pas modifié, le sera leur d'une nouvelle information récente + // Remarque : le RSS n'est pas modifié, le sera lors d'une nouvelle information récente // Le lien de téléchargement est de toutes façons inchangé else $mysqli->query("UPDATE recents SET texte = 'Nouveau document : $path
', titre = ' $path' WHERE id = 3000+$id"); @@ -309,7 +309,8 @@ elseif ( isset($_REQUEST['envoie']) ) { // Vérifications des données envoyées (on fait confiance aux utilisateurs connectés pour ne pas envoyer de scripts malsains) $nom = $_FILES['fichier']['name']; - $ext = ( strpos($nom,'.') ) ? strrchr($nom,'.') : ''; + // $est ne doit pas faire plus de 4 caractères sinon fichier plus accessible + $ext = ( strpos($nom,'.') ) ? substr(strrchr($nom,'.'),0,4) : ''; setlocale(LC_CTYPE, "fr_FR.UTF-8"); $nom = basename(str_replace('/','-',str_replace($ext,'', ( strlen($_REQUEST['nom']) ) ? $_REQUEST['nom'] : $nom ))); $protection = ( in_array($_REQUEST['protection'],array(0,1,2,3,4)) ) ? $_REQUEST['protection'] : 0; @@ -357,9 +358,9 @@ } // Mise à jour des champs nbrep/nbdoc dans la table 'reps' - $mysqli->query('UPDATE reps AS r SET - nbrep = (SELECT COUNT(id) FROM (SELECT * FROM reps ) AS r1 WHERE r.id = r1.parent), - nbrep_v = (SELECT COUNT(id) FROM (SELECT * FROM reps WHERE reps.protection<4) AS r2 WHERE r.id = r2.parent), + $mysqli->query('UPDATE reps AS r SET + nbrep = IFNULL((SELECT n FROM (SELECT COUNT(id) AS n, parent FROM reps GROUP BY parent) AS r1 WHERE r.id = r1.parent),0), + nbrep_v =IFNULL((SELECT n FROM (SELECT COUNT(id) AS n, parent FROM reps WHERE reps.protection<4 GROUP BY parent) AS r1 WHERE r.id =r1.parent),0), nbdoc = (SELECT COUNT(id) FROM docs AS d WHERE r.id = d.parent), nbdoc_v = (SELECT COUNT(id) FROM docs AS d WHERE r.id = d.parent AND d.protection<4)'); $mysqli->query('ALTER TABLE docs ORDER BY parents,nom_nat'); diff -urN cahier-de-prepa4.0.3/admin/mail.php cahier-de-prepa4.0.4/admin/mail.php --- cahier-de-prepa4.0.3/admin/mail.php 2014-09-02 14:39:02.663470526 +0200 +++ cahier-de-prepa4.0.4/admin/mail.php 2014-09-19 23:44:59.135520519 +0200 @@ -27,10 +27,11 @@ case 1 : $g = 'M. '; break; case 2 : $g = 'Mme '; break; case 3 : $g = 'Melle '; break; + default : $g = ''; } switch ( $u['mailexp'] ) { - case 1 : $exp = "$g ${u['nom']}"; break; - case 2 : $exp = "$g ${u['prenom']} ${u['nom']}"; break; + case 1 : $exp = "$g${u['nom']}"; break; + case 2 : $exp = "$g${u['prenom']} ${u['nom']}"; break; case 3 : $exp = "${u['prenom']} ${u['nom']}"; break; case 4 : $exp = "${u['nom']}"; break; } diff -urN cahier-de-prepa4.0.3/admin/notes-saisie.php cahier-de-prepa4.0.4/admin/notes-saisie.php --- cahier-de-prepa4.0.3/admin/notes-saisie.php 2014-08-30 23:15:13.864167176 +0200 +++ cahier-de-prepa4.0.4/admin/notes-saisie.php 2014-09-19 11:14:46.734080116 +0200 @@ -176,14 +176,15 @@ FIN; // Affichage des élèves - $select_notes = ' '; + $select_notes = ''; $eleves = $GLOBALS['eleves']; $notes = array_combine(explode(',',$r['eleves']),explode(',',$r['notes'])); foreach ( $eleves as $eleve ) { $id = $eleve['id']; echo "-
"; } diff -urN cahier-de-prepa4.0.3/admin/pages.php cahier-de-prepa4.0.4/admin/pages.php --- cahier-de-prepa4.0.3/admin/pages.php 2014-08-31 09:25:03.513338050 +0200 +++ cahier-de-prepa4.0.4/admin/pages.php 2014-09-15 23:14:40.936403093 +0200 @@ -144,7 +144,7 @@ $id = 0; // Pour les informations récentes - $lien_recent = 'pages?'.addslashes($page['cle']); + $lien_recent = '?'.addslashes($page['cle']); // Traitement d'un ajout/modification if ( isset($_REQUEST['modifie']) && strlen($_REQUEST['texte']) ) { diff -urN cahier-de-prepa4.0.3/admin/prefs.php cahier-de-prepa4.0.4/admin/prefs.php --- cahier-de-prepa4.0.3/admin/prefs.php 2014-08-26 22:21:02.293003883 +0200 +++ cahier-de-prepa4.0.4/admin/prefs.php 2014-09-19 23:31:33.387494735 +0200 @@ -346,10 +346,11 @@ case 1 : $g = 'M. '; break; case 2 : $g = 'Mme '; break; case 3 : $g = 'Melle '; break; + default : $g = ''; } $select_mailexp = str_replace("\"${u['mailexp']}\"","\"${u['mailexp']}\" selected"," - - + + "); } diff -urN cahier-de-prepa4.0.3/admin/utilisateurs.php cahier-de-prepa4.0.4/admin/utilisateurs.php --- cahier-de-prepa4.0.3/admin/utilisateurs.php 2014-08-26 17:42:35.388469260 +0200 +++ cahier-de-prepa4.0.4/admin/utilisateurs.php 2014-09-03 00:20:39.856587241 +0200 @@ -124,7 +124,7 @@ FROM utilisateurs AS u1 WHERE id = $u AND login RLIKE '^tmp[0-9]{5}'"); if ( $resultat->num_rows ) { $r = $resultat->fetch_assoc(); - $login = ( $r['n'] ) ? $r['l'].$r['n'] : $r['l']; + $login = ( $r['n'] ) ? $mysqli->real_escape_string($r['l'].$r['n']) : $mysqli->real_escape_string($r['l']); if ( requete('utilisateurs',"UPDATE utilisateurs SET login = '$login' WHERE id = $u") ) { $liste[] = $r['prenom'].' '.$r['nom']; if ( strlen($r['mail']) ) diff -urN cahier-de-prepa4.0.3/cdt.php cahier-de-prepa4.0.4/cdt.php --- cahier-de-prepa4.0.3/cdt.php 2014-08-27 02:16:32.785456061 +0200 +++ cahier-de-prepa4.0.4/cdt.php 2014-09-19 17:03:41.226750023 +0200 @@ -44,6 +44,8 @@ $mois = array('','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'); return $semaine[substr($date,0,1)].' '.substr($date,7).' '.$mois[intval(substr($date,5,2))].' '.substr($date,1,4); } +// Remarque : génère une erreur de redéfinition si on vient de se connecter +// (->login.php) avec un mot de passe temporaire (->admin/fonctions.php) // Récupération de l'ensemble des semaines $resultat = $mysqli->query("SELECT id, DATE_FORMAT(debut,'%w%Y%m%e') AS debut, vacances FROM semaines"); diff -urN cahier-de-prepa4.0.3/CHANGELOG.php cahier-de-prepa4.0.4/CHANGELOG.php --- cahier-de-prepa4.0.3/CHANGELOG.php 2014-09-02 16:06:37.779638691 +0200 +++ cahier-de-prepa4.0.4/CHANGELOG.php 2014-09-20 15:40:15.013354634 +0200 @@ -1,4 +1,4 @@ -Version actuelle : 4.0.3 (02/09/14) +Version actuelle : 4.0.4 (20/09/14) =================== Changements : 1.0 31/08/11 Première version @@ -129,22 +129,32 @@ 4.0.1 31/08/14 Correction de divers bugs et fautes dans l'aide 4.0.2 02/09/14 Correction de bug (erreur de syntaxe) 4.0.3 02/09/14 Correction de bug (réinitialisation des mots de passe) +4.0.4 20/09/14 Correction de bugs multiples (merci O. Bouverot, E. Saudrais) =================== Todo : [ 4.1 ] Novembre 2014 + * Envoi de mail pour les colleurs * Gestion des groupes de colles * Gestion des informations récentes : suppression/modification * Récupération des notes de colles en .xls + * Retour d'un compte invité au mot de passe non modifiable + * Bug : modification de matière -> modification du nom de répertoire principal + * Bug : gestion des informations récentes lors des suppressions/modifications + massives (nom de répertoire...) + * Bug : supprimer les notes, les entrées de cahier de textes et les programmes + de colles lors de la modification du planning [ 4.2 ] Avril 2015 + * Suppression multiple de documents * Récupération des documents en .zip * Version mobile * Agenda * Récupération des données de la base (via la sauvegarde) [ 5.0 ] Août 2015 + * Identité visuelle : favicon, logo * Flux RSS multiples et paramétrables * Vérification des saisies de texte et aide au formatage en HTML, ajout automatique de balises, suppression des lignes vides initiales/finales... diff -urN cahier-de-prepa4.0.3/css/style.css cahier-de-prepa4.0.4/css/style.css --- cahier-de-prepa4.0.3/css/style.css 2014-08-28 16:06:32.765814477 +0200 +++ cahier-de-prepa4.0.4/css/style.css 2014-09-19 11:10:15.886071449 +0200 @@ -102,8 +102,8 @@ .admin h3 span, .aide h3 span { cursor: pointer; font-size: 0.9em; padding: 0 0.2em; border: 1px solid black; margin-left: 1em; } #aide_js p, p.boutons, p.ligne, p.symboles { padding: 0; width: 92%; margin: 0.5em 4% 0.2em; } input.ligne, textarea { width: 92%; margin: 0.5em 4% 0.2em; } -p.ligne label { font-weight: 700; vertical-align: sub; } -p.ligne input, p.ligne select, p.ligne code { width: 60%; float: right; margin-top: -0.2em; } +p.ligne label { font-weight: 700; vertical-align: middle; } +p.ligne input, p.ligne select, p.ligne code { width: 60%; float: right; margin-top: -0.1em; } p.ligne input[type="checkbox"] { width: 1em;} p.ligne code { padding-top: 0.4em; } p.ligne + textarea { margin-top: 0; } diff -urN cahier-de-prepa4.0.3/download.php cahier-de-prepa4.0.4/download.php --- cahier-de-prepa4.0.3/download.php 2014-08-04 01:35:34.161786739 +0200 +++ cahier-de-prepa4.0.4/download.php 2014-09-20 00:37:24.679621176 +0200 @@ -8,7 +8,7 @@ /////////////////////////////////// // Récupération du lien -if ( isset($_REQUEST['id']) && is_numeric($id = $_REQUEST['id']) ) { +if ( isset($_REQUEST['id']) && ctype_digit($id = $_REQUEST['id']) ) { $mysqli = premiere_connexion(); $resultat = $mysqli->query("SELECT d.id, d.parents, d.nom, d.lien, d.ext, d.protection, m.cle FROM docs AS d LEFT JOIN matieres AS m ON d.matiere = m.id diff -urN cahier-de-prepa4.0.3/haut.php cahier-de-prepa4.0.4/haut.php --- cahier-de-prepa4.0.3/haut.php 2014-08-28 02:10:02.324208377 +0200 +++ cahier-de-prepa4.0.4/haut.php 2014-09-05 14:46:33.435779383 +0200 @@ -69,7 +69,7 @@ $menu .= "\n Cahier de texte"; if ( $r['docs'] ) { $menu .= "\n Documents à télécharger"; - $resultat_doc = $mysqli->query("SELECT id, nom FROM reps WHERE matiere = ${r['id']} AND menu = 1"); + $resultat_doc = $mysqli->query("SELECT id, nom FROM reps WHERE matiere = ${r['id']} AND menu = 1 AND protection < 4"); if ( $resultat_doc->num_rows ) { while ( $d = $resultat_doc->fetch_assoc() ) $menu .= "\n ${d['nom']}"; @@ -108,13 +108,7 @@ break; // Si compte colleur/professeur default: - /*/ Si une seule matière, pas de matière à spécifier pour l'ajout de notes de colles - if ( is_numeric($_SESSION['matieres']) ) { - $resultat = $mysqli->query("SELECT cle FROM matieres WHERE id = ${_SESSION['matieres']}"); - $r = $resultat->fetch_assoc(); - $notes = "\n Ajouter des notes de colles"; - $resultat->free(); - }*/ + // Si une seule matière, pas de matière à spécifier pour l'ajout de notes de colles if ( is_numeric($_SESSION['matieres']) ) { if ( substr($p,0,5) == 'notes' ) $p = 'notes';