diff -urN cahier-de-prepa3.1.1/admin.php cahier-de-prepa3.2.0/admin.php --- cahier-de-prepa3.1.1/admin.php 2013-10-22 16:52:51.324399507 +0200 +++ cahier-de-prepa3.2.0/admin.php 2013-12-27 11:25:14.174363180 +0100 @@ -10,7 +10,7 @@ //// HTML //// ////////////// // Haut de page, menu et message -$p = 'accueil_admin'; +$p = ".$urladmin2"; $t = 'Cahier de Prépa - Administration'; $mysqli = new mysqli($serveur,$base,$mdp,$base); $mysqli->set_charset('utf8'); @@ -139,7 +139,7 @@ ?>
+ +
@@ -227,7 +256,7 @@$monte$descend$cache diff -urN cahier-de-prepa3.1.1/installation.php cahier-de-prepa3.2.0/installation.php --- cahier-de-prepa3.1.1/installation.php 2013-11-03 16:39:52.781667522 +0100 +++ cahier-de-prepa3.2.0/installation.php 2013-12-26 22:34:19.660883030 +0100 @@ -141,6 +141,7 @@ `id` tinyint(2) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `ordre` tinyint(2) unsigned NOT NULL, `cle` varchar(50) NOT NULL, + `mat` tinyint(2) NOT NULL, `nom` varchar(50) NOT NULL, `titre` text NOT NULL, `bandeau` text NOT NULL, @@ -229,6 +230,7 @@ `nbdoc_v` tinyint(2) unsigned NOT NULL, `nbdoc_nv` tinyint(2) unsigned NOT NULL, `protection` tinyint(1) unsigned NOT NULL, + `menu` tinyint(1) unsigned NOT NULL, KEY `parent` (`parent`), KEY `matiere` (`matiere`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff -urN cahier-de-prepa3.1.1/MAJSQL.sql cahier-de-prepa3.2.0/MAJSQL.sql --- cahier-de-prepa3.1.1/MAJSQL.sql 2013-11-03 16:35:22.777658882 +0100 +++ cahier-de-prepa3.2.0/MAJSQL.sql 2013-12-26 22:35:06.148884518 +0100 @@ -108,3 +108,12 @@ -- ALTER TABLE recents CHANGE lien lien VARCHAR( 30 ) NOT NULL; + +-- +-- Voilà les modifications à effectuer sur chaque base pour passer de Cahier de +-- Prépa 3.1.1 à Cahier de Prépa 3.2.0. +-- + +ALTER TABLE pages ADD mat TINYINT( 2 ) UNSIGNED NOT NULL AFTER cle; +ALTER TABLE reps ADD menu TINYINT( 1 ) UNSIGNED NOT NULL; + diff -urN cahier-de-prepa3.1.1/matieres.php cahier-de-prepa3.2.0/matieres.php --- cahier-de-prepa3.1.1/matieres.php 2013-10-21 01:02:05.843809234 +0200 +++ cahier-de-prepa3.2.0/matieres.php 2013-12-27 11:04:18.894323011 +0100 @@ -99,6 +99,7 @@ && $mysqli->query("DELETE FROM `cdt-types` WHERE matiere = $id") && $mysqli->query("DELETE FROM `cdt-seances` WHERE matiere = $id") && $mysqli->query("DELETE FROM reps WHERE matiere = $id") + && $mysqli->query("UPDATE pages SET mat = 0 WHERE mat = $id") ) ? "La matière $nom a bien été supprimée." : "La matière $nom n'a pas pu être supprimée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; } } @@ -111,7 +112,7 @@ // HTML // ////////// // Haut de page, menu et message -$p = 'matieres'; +$p = "matieres$urladmin2"; $t = 'Modifications des matieres'; $mysqli = new mysqli($serveur,$base,$mdp,$base); $mysqli->set_charset('utf8'); diff -urN cahier-de-prepa3.1.1/pages.php cahier-de-prepa3.2.0/pages.php --- cahier-de-prepa3.1.1/pages.php 2013-08-21 01:21:08.725539702 +0200 +++ cahier-de-prepa3.2.0/pages.php 2013-12-29 00:06:42.026590008 +0100 @@ -14,12 +14,10 @@ // Vérification que l'identifiant est valide. Défaut : id=0 (nouvelle page) if ( $id ) { - $resultat = $mysqli->query("SELECT id, nom, ordre, (SELECT MAX(p.ordre) FROM pages AS p) AS max FROM pages WHERE id = $id"); + $resultat = $mysqli->query("SELECT id, nom, ordre, mat, (SELECT MAX(p.ordre) FROM pages AS p WHERE p.mat = pages.mat) AS max FROM pages WHERE id = $id"); if ( $resultat->num_rows ) { $r = $resultat->fetch_assoc(); $resultat->free(); - $nom = $r['nom']; - $ordre = $r['ordre']; } else $id = 0; @@ -39,43 +37,58 @@ $cle = $mysqli->real_escape_string($_REQUEST['cle']); $nom = $mysqli->real_escape_string($_REQUEST['nom']); $protection = ( isset($_REQUEST['protection']) ) ? 1 : 0; + $mat = ( is_numeric($_REQUEST['mat']) ) ? $_REQUEST['mat'] : 0; // Si identifiant numérique non nul, modification d'une page existante - if ( $id ) - $message = ( $mysqli->query("UPDATE pages SET cle = '$cle', nom = '$nom', titre = '$titre', - bandeau = '$bandeau', protection = $protection WHERE id = $id") - ) ? 'La page '.stripslashes($nom).' a bien été modifiée.' : "La page ${r['nom']} n'a pas pu être modifiée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + if ( $id ) { + // Si matière identique + if ( $mat == $r['mat'] ) + $message = ( $mysqli->query("UPDATE pages SET cle = '$cle', nom = '$nom', titre = '$titre', + bandeau = '$bandeau', protection = $protection WHERE id = $id") + ) ? 'La page '.stripslashes($nom).' a bien été modifiée.' : "La page ${r['nom']} n'a pas pu être modifiée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + else { + $resultat = $mysqli->query("SELECT IFNULL(MAX(ordre)+1,1) AS max FROM pages WHERE mat = $mat"); + $m = $resultat->fetch_assoc(); + $resultat->free(); + $message = ( $mysqli->query("UPDATE pages SET cle = '$cle', nom = '$nom', mat = $mat, titre = '$titre', + ordre = ${m['max']}, bandeau = '$bandeau', protection = $protection WHERE id = $id") + && $mysqli->query("UPDATE pages SET ordre = (ordre-1) WHERE mat = ${r['mat']} AND ordre > ${r['ordre']}") + && $mysqli->query('ALTER TABLE pages ORDER BY mat,ordre') + ) ? 'La page '.stripslashes($nom).' a bien été modifiée.' : "La page ${r['nom']} n'a pas pu être modifiée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + } + } // Si id = 0, ajout d'une nouvelle page else - $message = ( $mysqli->query("INSERT INTO pages SET cle = '$cle', nom = '$nom', titre = '$titre', - bandeau = '$bandeau', protection = $protection, ordre = ((SELECT MAX(p.ordre) FROM pages AS p)+1)") - && $mysqli->query('ALTER TABLE pages ORDER BY ordre') + $message = ( $mysqli->query("INSERT INTO pages SET cle = '$cle', nom = '$nom', mat = $mat, titre = '$titre', + bandeau = '$bandeau', protection = $protection, ordre = (SELECT IFNULL(MAX(ordre)+1,1) FROM pages AS p WHERE p.mat = $mat)") + && $mysqli->query('ALTER TABLE pages ORDER BY mat,ordre') ) ? 'La page « '.stripslashes($nom).' a bien été ajoutée.' : 'La page '.stripslashes($nom).' n\'a pas pu être ajoutée. Erreur MySQL n°'.$mysqli->errno.', «'.$mysqli->error.'».'; } } elseif ( $id ) { + $ordre = $r['ordre']; // Sauvegarde de la table contenant les données sauvegarde_mysql('pages'); // Déplacement vers le haut if ( isset($_REQUEST['monte']) && ( $ordre > 1 ) ) - $message = ( $mysqli->query("UPDATE pages SET ordre = (2*$ordre-1-ordre) WHERE ordre = $ordre OR ordre = ($ordre-1)") - && $mysqli->query('ALTER TABLE pages ORDER BY ordre') - ) ? "La page $nom a bien été montée d'une place." : "La page $nom n'a pas pu être déplacée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + $message = ( $mysqli->query("UPDATE pages SET ordre = (2*$ordre-1-ordre) WHERE mat = ${r['mat']} AND ( ordre = $ordre OR ordre = ($ordre-1) )") + && $mysqli->query('ALTER TABLE pages ORDER BY mat,ordre') + ) ? "La page ${r['nom']} a bien été montée d'une place." : "La page ${r['nom']} n'a pas pu être déplacée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; // Déplacement vers le bas elseif ( isset($_REQUEST['descend']) && ( $ordre < $r['max'] ) ) - $message = ( $mysqli->query("UPDATE pages SET ordre = (2*$ordre+1-ordre) WHERE ordre = $ordre OR ordre = ($ordre+1)") - && $mysqli->query('ALTER TABLE pages ORDER BY ordre') - ) ? "La page $nom a bien été descendue d'une place." : "La page $nom n'a pas pu être déplacée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + $message = ( $mysqli->query("UPDATE pages SET ordre = (2*$ordre+1-ordre) WHERE mat = ${r['mat']} AND ( ordre = $ordre OR ordre = ($ordre+1) )") + && $mysqli->query('ALTER TABLE pages ORDER BY mat,ordre') + ) ? "La page ${r['nom']} a bien été descendue d'une place." : "La page ${r['nom']} n'a pas pu être déplacée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; - // Suppression - elseif ( isset($_REQUEST['supprime']) && ( $r['max'] > 1 ) ) + // Suppression : possible uniquement hors page d'accueil, page n°1 sans matière associée (mat=0) + elseif ( isset($_REQUEST['supprime']) && ( $r['max']+$r['mat'] > 1 ) ) $message = ( $mysqli->query("DELETE FROM pages WHERE id = $id") && $mysqli->query("DELETE FROM infos WHERE page = $id") - && $mysqli->query("UPDATE pages SET ordre = (ordre-1) WHERE ordre > $ordre") - ) ? "La page $nom a bien été supprimée, ainsi que les informations qu'elle comportait." : "La page $nom n'a pas pu être supprimée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; + && $mysqli->query("UPDATE pages SET ordre = (ordre-1) WHERE mat = ${r['mat']} AND ordre > $ordre") + ) ? "La page ${r['nom']} a bien été supprimée, ainsi que les informations qu'elle comportait." : "La page ${r['nom']} n'a pas pu être supprimée. Erreur MySQL n°".$mysqli->errno.', «'.$mysqli->error.'».'; } $mysqli->close(); @@ -85,7 +98,7 @@ // HTML // ////////// // Haut de page, menu et message -$p = 'pages'; +$p = "pages$urladmin2"; $t = 'Modifications des pages d\'informations'; $mysqli = new mysqli($serveur,$base,$mdp,$base); $mysqli->set_charset('utf8'); @@ -95,7 +108,8 @@
Vous pouvez ci-dessous ajouter une page d'information ou modifier les pages existantes ou leur ordre d'apparition dans le menu. Supprimer une page supprime automatiquement les informations qui y sont.
+Vous pouvez ci-dessous ajouter une page d'information ou modifier les pages existantes ou leur ordre d'apparition dans le menu. Les pages non associées à une matière apparaîssent en début de menu (sur la partie publique), une page associée à une matière donnée apparaît au sein de cette matière.
+Supprimer une page supprime automatiquement les informations qui y sont.
$valide$monte$descend$suppr
- - - - - + + + ++ +
+ +Utilisateur de type professeur, associé aux matières ${r['mats']}
"; + $r['mats'] = ( strpos($r['mats'],'') ) ? "\nUtilisateur de type professeur, associé aux matières ${r['mats']}
" : "\nUtilisateur de type professeur, associé à la matière ${r['mats']}
" ; $mdp = "\n "; } else {