// //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'modifier_phpCAS' && $chemin_logs) { $chemin_logs = substr($chemin_logs, -1) == DS ? $chemin_logs : $chemin_logs . DS; // Vérifier chemin valide if (!is_dir($chemin_logs)) { exit('Chemin invalide (le dossier n\'existe pas) !'); } // Tester droits en écriture if (!FileSystem::ecrire_fichier_si_possible($chemin_logs . 'debugcas_test_ecriture.txt', 'ok')) { exit('Droits en écriture dans le dossier insuffisants !'); } FileSystem::supprimer_fichier($chemin_logs . 'debugcas_test_ecriture.txt'); // Nettoyer la liste des établissements transmise if ($etabl_id_listing) { $tab_etabl_id = explode(',', $etabl_id_listing); $tab_etabl_id = Clean::map_entier($tab_etabl_id); $tab_etabl_id = array_filter($tab_etabl_id, 'positif'); $etabl_id_listing = count($tab_etabl_id) ? ',' . implode(',', $tab_etabl_id) . ',' : ''; } // ok FileSystem::fabriquer_fichier_hebergeur_info(array('PHPCAS_CHEMIN_LOGS' => $chemin_logs, 'PHPCAS_ETABL_ID_LISTING' => $etabl_id_listing)); exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Effacer un fichier de logs de phpCAS // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'supprimer' && $fichier_logs) { FileSystem::supprimer_fichier(PHPCAS_CHEMIN_LOGS . $fichier_logs . '.txt', TRUE); exit('ok'); } // ////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////// $OBJET = (isset($_POST['f_objet'])) ? Clean::texte($_POST['f_objet']) : ''; $ACTION = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : ''; $BILAN_TYPE = (isset($_POST['f_bilan_type'])) ? Clean::texte($_POST['f_bilan_type']) : ''; $periode_id = (isset($_POST['f_periode'])) ? Clean::entier($_POST['f_periode']) : 0; $classe_id = (isset($_POST['f_classe'])) ? Clean::entier($_POST['f_classe']) : 0; $groupe_id = (isset($_POST['f_groupe'])) ? Clean::entier($_POST['f_groupe']) : 0; $etape = (isset($_POST['f_etape'])) ? Clean::entier($_POST['f_etape']) : 0; $page_parite = (isset($_POST['f_parite'])) ? Clean::entier($_POST['f_parite']) : 0; // Autres chaines spécifiques... $listing_piliers = (isset($_POST['f_listing_piliers'])) ? $_POST['f_listing_piliers'] : '' ; $tab_pilier_id = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' ); $liste_pilier_id = implode(',',$tab_pilier_id); $listing_eleves = (isset($_POST['f_listing_eleves'])) ? $_POST['f_listing_eleves'] : '' ; $tab_eleve_id = array_filter( Clean::map_entier( explode(',',$listing_eleves) ) , 'positif' ); $liste_eleve_id = implode(',',$tab_eleve_id); $is_sous_groupe = ($groupe_id) ? TRUE : FALSE ; $tab_objet = array('imprimer','voir_archive'); $tab_action = array('initialiser','imprimer'); $tab_types = array ( 'releve' => array( 'droit'=>'RELEVE' , 'titre'=>'Relevé d\'évaluations' ) , 'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire' ) , 'palier1' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 1' ) , 'palier2' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 2' ) , 'palier3' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 3' ) , );
* */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') { exit('Action désactivée pour la démo...'); } $action = isset($_GET['action']) ? $_GET['action'] : ''; $date_debut = isset($_POST['f_date_debut']) ? Clean::date_fr($_POST['f_date_debut']) : ''; $date_fin = isset($_POST['f_date_fin']) ? Clean::date_fr($_POST['f_date_fin']) : ''; // Normalement ce sont des tableaux qui sont transmis, mais au cas où... $tab_select_periodes = isset($_POST['select_periodes']) ? is_array($_POST['select_periodes']) ? $_POST['select_periodes'] : explode(',', $_POST['select_periodes']) : array(); $tab_select_classes_groupes = isset($_POST['select_classes_groupes']) ? is_array($_POST['select_classes_groupes']) ? $_POST['select_classes_groupes'] : explode(',', $_POST['select_classes_groupes']) : array(); $tab_select_periodes = array_filter(Clean::map_entier($tab_select_periodes), 'positif'); $tab_select_classes_groupes = array_filter(Clean::map_entier($tab_select_classes_groupes), 'positif'); $tab_groupe = array(); $tab_periode = array(); $tab_jointure = array(); $tab_graphique = array(); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes. // 1/2 - On commence les premières requêtes dès maintenant afin d'avoir les noms des groupes et des périodes à disposition. // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupérer la liste des classes & groupes, dans l'ordre des niveaux $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_et_groupes_avec_niveaux(); if (empty($DB_TAB)) { exit('Aucune classe et aucun groupe ne sont enregistrés !'); } foreach ($DB_TAB as $DB_ROW) { $tab_groupe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
exit('Ce fichier ne peut être appelé directement !'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération des valeurs transmises // //////////////////////////////////////////////////////////////////////////////////////////////////// $BILAN_TYPE = isset($_POST['f_bilan_type']) ? Clean::texte($_POST['f_bilan_type']) : ''; $periode_id = isset($_POST['f_periode']) ? Clean::entier($_POST['f_periode']) : 0; $classe_id = isset($_POST['f_classe']) ? Clean::entier($_POST['f_classe']) : 0; $groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0; // Autres chaines spécifiques... $listing_matieres = isset($_POST['f_listing_matieres']) ? $_POST['f_listing_matieres'] : ''; $listing_piliers = isset($_POST['f_listing_piliers']) ? $_POST['f_listing_piliers'] : ''; $listing_rubriques = isset($_POST['f_listing_rubriques']) ? $_POST['f_listing_rubriques'] : ''; $tab_matiere_id = array_filter(Clean::map_entier(explode(',', $listing_matieres)), 'positif'); $tab_pilier_id = array_filter(Clean::map_entier(explode(',', $listing_piliers)), 'positif'); $tab_rubrique_id = Clean::map_entier(explode(',', $listing_rubriques)); // Pas de array_filter(...,'positif') car la valeur 0 est autorisée $liste_matiere_id = implode(',', $tab_matiere_id); $liste_pilier_id = implode(',', $tab_pilier_id); $liste_rubrique_id = implode(',', $tab_rubrique_id); $is_sous_groupe = $groupe_id ? TRUE : FALSE; $tab_types = array('releve' => array('droit' => 'RELEVE', 'titre' => 'Relevé d\'évaluations'), 'bulletin' => array('droit' => 'BULLETIN', 'titre' => 'Bulletin scolaire'), 'palier1' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 1'), 'palier2' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 2'), 'palier3' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 3')); // On vérifie les paramètres if (!isset($tab_types[$BILAN_TYPE]) || !$periode_id || !$classe_id || !count($tab_rubrique_id)) { exit('Erreur avec les données transmises !'); } // On vérifie que le bilan est bien accessible en modification et on récupère les infos associées $DB_ROW = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_infos($classe_id, $periode_id, $BILAN_TYPE); if (empty($DB_ROW)) { exit('Association classe / période introuvable !'); }
// //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération des valeurs transmises // //////////////////////////////////////////////////////////////////////////////////////////////////// $OBJET = (isset($_POST['f_objet'])) ? Clean::texte($_POST['f_objet']) : ''; $ACTION = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : ''; $BILAN_TYPE = (isset($_POST['f_bilan_type'])) ? Clean::texte($_POST['f_bilan_type']) : ''; $mode = (isset($_POST['f_mode'])) ? Clean::texte($_POST['f_mode']) : ''; $periode_id = (isset($_POST['f_periode'])) ? Clean::entier($_POST['f_periode']) : 0; $classe_id = (isset($_POST['f_classe'])) ? Clean::entier($_POST['f_classe']) : 0; $groupe_id = (isset($_POST['f_groupe'])) ? Clean::entier($_POST['f_groupe']) : 0; $eleve_id = (isset($_POST['f_user'])) ? Clean::entier($_POST['f_user']) : 0; // Autres chaines spécifiques... $listing_piliers = (isset($_POST['f_listing_piliers'])) ? $_POST['f_listing_piliers'] : '' ; $tab_pilier_id = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' ); $liste_pilier_id = implode(',',$tab_pilier_id); $is_sous_groupe = ($groupe_id) ? TRUE : FALSE ; $tab_action = array('initialiser','charger'); $tab_types = array ( 'releve' => array( 'droit'=>'RELEVE' , 'titre'=>'Relevé d\'évaluations' ) , 'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire' ) , 'palier1' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 1' ) , 'palier2' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 2' ) , 'palier3' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 3' ) , );
} if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; $groupe_id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0; $niveau = isset($_POST['f_niveau']) ? Clean::entier($_POST['f_niveau']) : 0; $groupe_nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : ''; // Contrôler la liste des élèves transmis $tab_eleves = isset($_POST['f_eleve_liste']) ? explode('_', $_POST['f_eleve_liste']) : array(); $tab_eleves = Clean::map_entier($tab_eleves); $tab_eleves = array_filter($tab_eleves, 'positif'); $nb_eleves = count($tab_eleves); // Contrôler la liste des profs transmis $tab_profs = isset($_POST['f_prof_liste']) ? explode('_', $_POST['f_prof_liste']) : array(); $tab_profs = Clean::map_entier($tab_profs); $tab_profs = array_filter($tab_profs, 'positif'); $nb_profs = count($tab_profs); // Si profs transmis, en retirer le responsable (si le responsable est le seul prof, rien n'est transmis) $indice = NULL; if (count($tab_profs)) { $indice = array_search($_SESSION['USER_ID'], $tab_profs); if ($indice === FALSE) { exit('Erreur : absent de la liste des collègues !'); } unset($tab_profs[$indice]); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Ajouter un nouveau groupe de besoin // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'ajouter' && $niveau && $groupe_nom && $nb_eleves) {
* SACoche est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation : * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure. * * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * Consultez la Licence Publique Générale GNU Affero pour plus de détails. * * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } $tab_base_id = isset($_POST['f_listing_id']) ? array_filter(Clean::map_entier(explode(',', $_POST['f_listing_id'])), 'positif') : array(); $nb_bases = count($tab_base_id); $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; // "exporter" ou "importer_csv" ou "importer_zip" ou "importer" $num = isset($_POST['num']) ? (int) $_POST['num'] : 0; // Numéro de l'étape en cours $max = isset($_POST['max']) ? (int) $_POST['max'] : 0; // Nombre d'étapes à effectuer if ($action == 'exporter' && $nb_bases || $action == 'importer_csv' || !isset($_SESSION['alea'])) { $_SESSION['datetime'] = date('Y-m-d_H-i-s'); $_SESSION['alea'] = mt_rand(); $_SESSION['tab_info'] = array(); } $dossier_temp_sql = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_sql' . DS; // Pour les sql d'une base $dossier_temp_zip = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_zip' . DS;
* * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * Consultez la Licence Publique Générale GNU Affero pour plus de détails. * * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} if(($_SESSION['SESAMATH_ID']==ID_DEMO)&&($_GET['action']!='initialiser')){exit('Action désactivée pour la démo...');} $action = (isset($_POST['f_action'])) ? $_POST['f_action'] : ''; $eleve_id = (isset($_POST['f_eleve_id'])) ? Clean::entier($_POST['f_eleve_id']) : 0 ; $tab_parents_id = (isset($_POST['f_parents_id'])) ? Clean::map_entier( explode(',','0,'.$_POST['f_parents_id']) ) : array() ; // On ajoute "0," pour que les ids soient indexés sur 1;2;3;4 ($resp_legal_num) // //////////////////////////////////////////////////////////////////////////////////////////////////// // Modifier la liste des parents d'un élève // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='enregistrer_parents') && $eleve_id && (count($tab_parents_id)==5) ) { $tab_parents_id = array_filter($tab_parents_id,'non_zero'); // supprimer les liens de responsabilité de l'élève concerné (il est plus simple de réinitialiser que de traiter les resp un par un puis de vérifier s'il n'en reste pas à supprimer...) DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_jointures_parents_for_eleves($eleve_id); // modifier les liens de responsabilité foreach($tab_parents_id as $resp_legal_num => $parent_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_ajouter_jointure_parent_eleve($parent_id,$eleve_id,$resp_legal_num); }
exit; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Enregistrer les notes pour chaque épreuve // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'enregistrer') { // Récupérer et contrôler les valeurs transmises épreuve par épreuve // Calculer au passage le total des points $tab_notes_transmises = array(); $tab_notes_transmises[CODE_BREVET_EPREUVE_TOTAL] = array('note' => 'AB', 'matieres_id' => ''); foreach ($tab_epreuve as $epreuve_code => $tab_infos) { extract($tab_infos); // $epreuve_* // Matières utilisées $tab_matieres_id = isset($_POST['check_' . $epreuve_code]) ? explode('-', $_POST['check_' . $epreuve_code]) : array(); $tab_matieres_id = Clean::map_entier($tab_matieres_id); $tab_matieres_id = array_filter($tab_matieres_id, 'positif'); $matieres_id = implode(',', $tab_matieres_id); if (!$matieres_id && $epreuve_obligatoire) { exit('Référentiel(s) manquant(s) ou incorrect(s) pour l\'épreuve "' . html($epreuve_nom) . '" !'); } // Note $note_transmise = isset($_POST['note_' . $epreuve_code]) ? str_replace('v5', '.5', $_POST['note_' . $epreuve_code]) : NULL; if ($note_transmise === NULL || $note_transmise === '' && $epreuve_obligatoire) { exit('Note manquante pour l\'épreuve "' . html($epreuve_nom) . '" !'); } if (is_numeric($note_transmise) && (ceilTo($note_transmise, 0.5) != $note_transmise || $note_transmise < 0 || $note_transmise > 20 || !$epreuve_note_chiffree)) { exit('Note ' . html($note_transmise) . ' invalide pour l\'épreuve "' . html($epreuve_nom) . '" !'); } if (!is_numeric($note_transmise) && $note_transmise != '' && strpos($epreuve_code_speciaux, $note_transmise) === FALSE) { exit('Note ' . html($note_transmise) . ' invalide pour l\'épreuve "' . html($epreuve_nom) . '" !');
$groupe_type = 'eval'; $groupe_id = 0; } // Contrôler la liste des items transmis $tab_id = (isset($_POST['tab_id'])) ? explode(',',$_POST['tab_id']) : array() ; $tab_id = Clean::map_entier($tab_id); $tab_id = array_filter($tab_id,'positif'); // Contrôler la liste des items transmis $tab_items = (isset($_POST['f_compet_liste'])) ? explode('_',$_POST['f_compet_liste']) : array() ; $tab_items = Clean::map_entier($tab_items); $tab_items = array_filter($tab_items,'positif'); $nb_items = count($tab_items); // Contrôler la liste des élèves transmis (sur des élèves sélectionnés uniquement) $tab_eleves = (isset($_POST['f_eleve_liste'])) ? explode('_',$_POST['f_eleve_liste']) : array() ; $tab_eleves = Clean::map_entier($tab_eleves); $tab_eleves = array_filter($tab_eleves,'positif'); $nb_eleves = count($tab_eleves); // Contrôler la liste des profs transmis $tab_profs = array(); $tab_droits = array( 'v'=>'voir' , 's'=>'saisir' , 'm'=>'modifier' ); $profs_liste = (isset($_POST['f_prof_liste'])) ? $_POST['f_prof_liste'] : '' ; $tmp_tab = ($profs_liste) ? explode('_',$profs_liste) : array() ; foreach($tmp_tab as $valeur) { $droit = $valeur{0}; $id_prof = (int)substr($valeur,1); if( isset($tab_droits[$droit]) && ($id_prof>0) && ( ($action!='dupliquer') || ($id_prof!=$_SESSION['USER_ID']) ) ) { $tab_profs[$id_prof] = $tab_droits[$droit]; }
} } else { $select_niveau .= '<option value="" disabled>Aucun niveau de classe n\'est choisi pour l\'établissement !</option>'; } // Javascript Layout::add( 'js_inline_before' , '// <![CDATA[' ); Layout::add( 'js_inline_before' , 'var select_niveau="'.str_replace('"','\"',$select_niveau).'";' ); Layout::add( 'js_inline_before' , '// ]]>' ); // Réception d'un formulaire depuis un tableau de synthèse bilan ou une évaluation // Pas de passage par la page ajax.php, mais pas besoin ici de protection contre attaques type CSRF $tab_users = ( isset($_POST['id_user']) && is_array($_POST['id_user']) ) ? $_POST['id_user'] : array() ; $tab_users = Clean::map_entier($tab_users); $tab_users = array_filter($tab_users,'positif'); $tab_users = array_unique($tab_users); // Car un envoi depuis une évaluation peut comporter plusieurs fois le même élève. $nb_users = count($tab_users); $txt_users = ($nb_users) ? ( ($nb_users>1) ? $nb_users.' élèves' : $nb_users.' élève' ) : 'aucun' ; $reception_todo = ($nb_users) ? 'true' : 'false' ; Layout::add( 'js_inline_before' , 'var reception_todo = '.$reception_todo.';' ); Layout::add( 'js_inline_before' , 'var reception_users_texte = "'.$txt_users.'";' ); Layout::add( 'js_inline_before' , 'var reception_users_liste = "'.implode('_',$tab_users).'";' ); ?> <ul class="puce"> <li><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=support_professeur__gestion_groupes_besoin">DOC : Gestion des groupes de besoin.</a></span></li> <li><span class="danger">Un groupe de besoin déjà utilisé lors d'une évaluation ne devrait pas être supprimé (sinon vous n'aurez plus accès aux saisies) !</span></li> </ul>
if(empty($DB_TAB_epreuves)) { exit('Erreur : série inconnue !'); } // Test des paramètres des épreuves $tab_choix_epreuve = array(); foreach($DB_TAB_epreuves as $DB_ROW) { $epreuve = $DB_ROW['brevet_epreuve_code']; $recherche = (isset($_POST['f_'.$serie.'_'.$epreuve.'_recherche'])) ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_recherche']) : NULL ; $moyenne = (isset($_POST['f_'.$serie.'_'.$epreuve.'_moyenne'])) ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_moyenne']) : NULL ; $tab_matieres = (isset($_POST['f_'.$serie.'_'.$epreuve.'_matieres'])) ? explode(',',$_POST['f_'.$serie.'_'.$epreuve.'_matieres']) : array() ; $matieres = implode( ',' , array_filter( Clean::map_entier($tab_matieres) , 'positif' ) ); if( ($recherche===NULL) || ($moyenne===NULL) || ( empty($matieres) && $DB_ROW['brevet_epreuve_obligatoire'] ) ) { exit('Erreur : données manquante pour l\'épreuve "'.html($DB_ROW['brevet_epreuve_nom']).'" !'); } $tab_choix_epreuve[$epreuve] = array( 'recherche'=>$recherche , 'moyenne'=>$moyenne , 'matieres'=>$matieres ); } // Enregistrement foreach($tab_choix_epreuve as $epreuve=>$tab_choix) { DB_STRUCTURE_BREVET::DB_modifier_epreuve_choix( $serie , $epreuve , $tab_choix['recherche'] , $tab_choix['moyenne'] , $tab_choix['matieres'] ); } exit('ok'); ?>
$tab_precision_retroactif = array('auto' => 'notes antérieures selon référentiels', 'oui' => 'avec notes antérieures', 'non' => 'sans notes antérieures', 'annuel' => 'notes antérieures de l\'année scolaire'); $precision_socle = $only_socle ? ', restriction au socle' : ''; $texte_periode = 'Du ' . $date_debut . ' au ' . $date_fin . ' (' . $tab_precision_retroactif[$retroactif] . $precision_socle . ').'; // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération de la liste des items travaillés durant la période choisie, pour les élèves selectionnés, pour la ou les matières ou les items indiqués ou le prof indiqué // Récupération de la liste des matières travaillées // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($releve_modele == 'matiere') { $tab_item_infos = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_bilan($liste_eleve, $matiere_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme); $tab_matiere[$matiere_id] = array('matiere_nom' => $matiere_nom, 'matiere_nb_demandes' => DB_STRUCTURE_DEMANDE::DB_recuperer_demandes_autorisees_matiere($matiere_id)); } elseif ($releve_modele == 'multimatiere') { $matiere_id = -1; list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_bilan($liste_eleve, $matiere_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme); } elseif ($releve_modele == 'selection') { $tab_compet_liste = isset($_POST['f_compet_liste']) ? explode('_', $_POST['f_compet_liste']) : array(); $tab_compet_liste = Clean::map_entier($tab_compet_liste); $liste_compet = implode(',', $tab_compet_liste); list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_selection($liste_eleve, $liste_compet, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme); // Si les items sont issus de plusieurs matières, alors on les regroupe en une seule. if (count($tab_matiere) > 1) { $matiere_id = 0; $tab_matiere = array(0 => array('matiere_nom' => implode(' - ', $tab_matiere), 'matiere_nb_demandes' => NULL)); } else { list($matiere_id, $matiere_nom) = each($tab_matiere); $tab_matiere = array($matiere_id => array('matiere_nom' => $matiere_nom, 'matiere_nb_demandes' => NULL)); } } elseif ($releve_modele == 'professeur') { list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_professeur($liste_eleve, $prof_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme); // Si les items sont issus de plusieurs matières, alors on les regroupe en une seule. if (count($tab_matiere) > 1) { $matiere_id = 0;
if($action=='action_complementaire') { // Récupération des données $action_groupe = (isset($_POST['select_action_groupe'])) ? Clean::texte($_POST['select_action_groupe']) : ''; $granulosite = (isset($_POST['select_action_groupe_modifier_objet'])) ? Clean::texte($_POST['select_action_groupe_modifier_objet']) : ''; $modifier_id = (isset($_POST['select_action_groupe_modifier_id'])) ? Clean::texte($_POST['select_action_groupe_modifier_id']) : ''; $modifier_coef = (isset($_POST['select_action_groupe_modifier_coef'])) ? Clean::entier($_POST['select_action_groupe_modifier_coef']) : -1; $modifier_cart = (isset($_POST['select_action_groupe_modifier_cart'])) ? Clean::entier($_POST['select_action_groupe_modifier_cart']) : -1; $deplacer_id_initial = (isset($_POST['select_action_groupe_deplacer_id_initial'])) ? Clean::texte($_POST['select_action_groupe_deplacer_id_initial']) : ''; $deplacer_id_final = (isset($_POST['select_action_groupe_deplacer_id_final'])) ? Clean::texte($_POST['select_action_groupe_deplacer_id_final']) : ''; $groupe_nom_initial = (isset($_POST['groupe_nom_initial'])) ? Clean::texte($_POST['groupe_nom_initial']) : ''; $groupe_nom_final = (isset($_POST['groupe_nom_final'])) ? Clean::texte($_POST['groupe_nom_final']) : ''; list($matiere_id ,$parent_id ,$objet_id ,$objet_ordre ) = Clean::map_entier(explode('_',$modifier_id)) + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes list($matiere_id_initial,$parent_id_initial,$objet_id_initial,$objet_ordre_initial) = Clean::map_entier(explode('_',$deplacer_id_initial)) + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes list($matiere_id_final ,$parent_id_final ,$objet_id_final ,$objet_ordre_final ) = Clean::map_entier(explode('_',$deplacer_id_final)) + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes // Vérification des données $tab_action_groupe = array('modifier_coefficient','modifier_panier','deplacer_domaine','deplacer_theme'); $test1 = ( ($action_groupe=='modifier_coefficient') && (in_array($granulosite,$tab_granulosite)) && ($matiere_id) && ($parent_id) && ($objet_id) && ($objet_ordre) && ($modifier_coef!=-1) ) ? TRUE : FALSE ; $test2 = ( ($action_groupe=='modifier_panier') && (in_array($granulosite,$tab_granulosite)) && ($matiere_id) && ($objet_id) && ($objet_ordre) && ($modifier_cart!=-1) ) ? TRUE : FALSE ; $test3 = ( ($action_groupe=='deplacer_domaine') && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ) ? TRUE : FALSE ; $test4 = ( ($action_groupe=='deplacer_theme') && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ) ? TRUE : FALSE ; if( (!in_array($action_groupe,$tab_action_groupe)) || ( (!$test1) && (!$test2) && (!$test3) && (!$test4) ) ) { exit('Erreur avec les données transmises !'); } // cas 1/4 : modifier_coefficient if($action_groupe=='modifier_coefficient') { $test_modif = DB_STRUCTURE_REFERENTIEL::DB_modifier_referentiel_items( $granulosite , $matiere_id , $objet_id , 'coef' , $modifier_coef ); $message = ($test_modif) ? 'ok' : 'Contenu inchangé ou items non trouvés !';
* Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') { exit('Action désactivée pour la démo...'); } $action = isset($_GET['action']) ? $_GET['action'] : ''; // Normalement ce sont des tableaux qui sont transmis, mais au cas où... $tab_eleve = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array(); $tab_classe = isset($_POST['f_classe']) ? is_array($_POST['f_classe']) ? $_POST['f_classe'] : explode(',', $_POST['f_classe']) : array(); $tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif'); $tab_classe = array_filter(Clean::map_entier($tab_classe), 'positif'); // Ajouter des élèves à des classes if ($action == 'ajouter') { $classe_id = current($tab_classe); // un élève ne peut être affecté qu'à 1 seule classe : inutile de toutes les passer en revue foreach ($tab_eleve as $user_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $classe_id, 'classe', TRUE); } } elseif ($action == 'retirer') { // on doit tout passer en revue car on ne sait pas si la classe de l'élève est dans la liste transmise foreach ($tab_eleve as $user_id) { foreach ($tab_classe as $classe_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $classe_id, 'classe', FALSE); } } }
$groupe_id = (isset($_POST['f_groupe'])) ? Clean::entier($_POST['f_groupe']) : 0; $groupe_type = (isset($_POST['f_groupe_type'])) ? Clean::texte($_POST['f_groupe_type']) : ''; // En vérité, ne sert pas ici. $eleve_id = (isset($_POST['f_eleve'])) ? Clean::entier($_POST['f_eleve']) : 0; $periode_id = (isset($_POST['f_periode'])) ? Clean::entier($_POST['f_periode']) : 0; $date_debut = (isset($_POST['f_date_debut'])) ? Clean::date_fr($_POST['f_date_debut']) : ''; $date_fin = (isset($_POST['f_date_fin'])) ? Clean::date_fr($_POST['f_date_fin']) : ''; $retroactif = (isset($_POST['f_retroactif'])) ? Clean::calcul_retroactif($_POST['f_retroactif']) : ''; $only_socle = (isset($_POST['f_restriction'])) ? 1 : 0; $eleves_ordre = (isset($_POST['f_eleves_ordre'])) ? Clean::texte($_POST['f_eleves_ordre']) : ''; // En vérité, ne sert pas ici. $echelle = (isset($_POST['f_echelle'])) ? Clean::texte($_POST['f_echelle']) : ''; // Normalement ce sont des tableaux qui sont transmis, mais au cas où... $tab_matiere = (isset($_POST['f_matieres'])) ? ( (is_array($_POST['f_matieres'])) ? $_POST['f_matieres'] : explode(',',$_POST['f_matieres']) ) : array() ; $tab_items = (isset($_POST['f_compet_liste'])) ? ( (is_array($_POST['f_compet_liste'])) ? $_POST['f_compet_liste'] : explode('_',$_POST['f_compet_liste']) ) : array() ; $tab_matiere = array_filter( Clean::map_entier($tab_matiere) , 'positif' ); $tab_items = array_filter( Clean::map_entier($tab_items) , 'positif' ); $liste_matiere_id = implode(',',$tab_matiere); $liste_item_id = implode(',',$tab_items); // En cas de manipulation du formulaire (avec les outils de développements intégrés au navigateur ou un module complémentaire)... if(in_array($_SESSION['USER_PROFIL_TYPE'],array('parent','eleve'))) { if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_MOYENNE_SCORE'])) { $indicateur = 'pourcentage_acquis'; } if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_POURCENTAGE_ACQUIS'])) { $indicateur = 'moyenne_scores'; } if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_ETAT_ACQUISITION'])) { $indicateur = ''; } $conversion_sur_20 = test_user_droit_specifique($_SESSION['DROIT_RELEVE_CONVERSION_SUR_20']) ? $conversion_sur_20 : 0 ; // Pour un élève on surcharge avec les données de session if($_SESSION['USER_PROFIL_TYPE']=='eleve') { $groupe_id = $_SESSION['ELEVE_CLASSE_ID']; $eleve_id = $_SESSION['USER_ID'];
exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; $famille_id = isset($_POST['f_famille']) ? Clean::entier($_POST['f_famille']) : 0; $motclef = isset($_POST['f_motclef']) ? Clean::texte($_POST['f_motclef']) : ''; $id_avant = isset($_POST['f_id_avant']) ? Clean::entier($_POST['f_id_avant']) : 0; $id_apres = isset($_POST['f_id_apres']) ? Clean::entier($_POST['f_id_apres']) : 0; $id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0; $ref = isset($_POST['f_ref']) ? Clean::ref($_POST['f_ref']) : ''; $nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : ''; $nom_avant = isset($_POST['f_nom_avant']) ? Clean::texte($_POST['f_nom_avant']) : ''; $nom_apres = isset($_POST['f_nom_apres']) ? Clean::texte($_POST['f_nom_apres']) : ''; $tab_id = isset($_POST['tab_id']) ? Clean::map_entier(explode(',', $_POST['tab_id'])) : array(); $tab_id = array_filter($tab_id, 'positif'); sort($tab_id); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Afficher les matières partagées d'une famille donnée // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'recherche_matiere_famille' && $famille_id) { $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_matieres_famille($famille_id); foreach ($DB_TAB as $DB_ROW) { $class = $DB_ROW['matiere_active'] ? 'ajouter_non' : 'ajouter'; $title = $DB_ROW['matiere_active'] ? 'Matière déjà choisie.' : 'Ajouter cette matière.'; echo '<li>' . html($DB_ROW['matiere_nom'] . ' (' . $DB_ROW['matiere_ref'] . ')') . '<q id="add_' . $DB_ROW['matiere_id'] . '" class="' . $class . '" title="' . $title . '"></q></li>'; } exit; } // ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_user_item = array(); // Récupérer et contrôler la liste des items transmis $tab_ids = (isset($_POST['ids'])) ? explode(',',$_POST['ids']) : array() ; if(count($tab_ids)) { foreach($tab_ids as $ids) { $tab_id = explode('x',$ids); $tab_demande_id[] = $tab_id[0]; $tab_user_id[] = $tab_id[1]; $tab_item_id[] = $tab_id[2]; $tab_user_item[] = (int)$tab_id[1].'x'.(int)$tab_id[2]; } $tab_demande_id = array_filter( Clean::map_entier($tab_demande_id) ,'positif'); $tab_user_id = array_filter( Clean::map_entier(array_unique($tab_user_id)) ,'positif'); $tab_item_id = array_filter( Clean::map_entier(array_unique($tab_item_id)) ,'positif'); } $nb_demandes = count($tab_demande_id); $nb_users = count($tab_user_id); $nb_items = count($tab_item_id); // Contrôler la liste des profs transmis $tab_profs = array(); $tab_droits = array( 'v'=>'voir' , 's'=>'saisir' , 'm'=>'modifier' ); $profs_liste = (isset($_POST['f_prof_liste'])) ? $_POST['f_prof_liste'] : '' ; $tmp_tab = ($profs_liste) ? explode('_',$profs_liste) : array() ; foreach($tmp_tab as $valeur) { $droit = $valeur{0}; $id_prof = (int)substr($valeur,1); if( isset($tab_droits[$droit]) && ($id_prof>0) && ($id_prof!=$_SESSION['USER_ID']) )
* si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; $selection_id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0; $selection_nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : ''; $origine = isset($_POST['f_origine']) ? Clean::texte($_POST['f_origine']) : ''; // Contrôler la liste des items transmis $tab_items = isset($_POST['f_compet_liste']) ? explode('_', $_POST['f_compet_liste']) : array(); $tab_items = Clean::map_entier($tab_items); $tab_items = array_filter($tab_items, 'positif'); $nb_items = count($tab_items); // Contrôler la liste des profs transmis $tab_profs = array(); $tab_droits = array('v' => 'voir', 'm' => 'modifier'); $profs_liste = isset($_POST['f_prof_liste']) ? $_POST['f_prof_liste'] : ''; $tmp_tab = $profs_liste ? explode('_', $profs_liste) : array(); foreach ($tmp_tab as $valeur) { $droit = $valeur[0]; $id_prof = (int) substr($valeur, 1); if (isset($tab_droits[$droit]) && $id_prof > 0 && ($action != 'dupliquer' || $id_prof != $_SESSION['USER_ID'])) { $tab_profs[$id_prof] = $tab_droits[$droit]; } else { $profs_liste = str_replace(array('_' . $valeur, $valeur . '_', $valeur), '', $profs_liste); }
* * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['action']) ? $_POST['action'] : ''; $profil = isset($_POST['f_profil']) ? $_POST['f_profil'] : ''; // Avant c'était un tableau qui est transmis, mais à cause d'une limitation possible "suhosin" / "max input vars", on est passé à une concaténation en chaine... $tab_user = isset($_POST['f_user']) ? is_array($_POST['f_user']) ? $_POST['f_user'] : explode(',', $_POST['f_user']) : array(); $tab_user = array_filter(Clean::map_entier($tab_user), 'positif'); $tab_profils = array('eleves', 'parents', 'professeurs', 'directeurs'); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Initialiser plusieurs noms d'utilisateurs élèves | parents | professeurs | directeurs // Initialiser plusieurs mots de passe élèves | parents | professeurs | directeurs /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (($action == 'generer_login' || $action == 'generer_mdp' || $action == 'forcer_mdp_birth') && in_array($profil, $tab_profils) && count($tab_user)) { $prefixe = $profil != 'parents' ? 'user_' : 'parent_'; // Nom sans extension des fichiers de sortie $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea(); // La classe n'est affichée que pour l'élève $avec_info = $profil == 'eleves' ? 'classe' : ($profil == 'parents' ? 'enfant' : ''); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Initialiser plusieurs noms d'utilisateurs // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'generer_login') {
$socle_appreciation_rubrique_modele = isset($_POST['f_socle_appreciation_rubrique_modele']) ? Clean::texte($_POST['f_socle_appreciation_rubrique_modele']) : ''; $socle_appreciation_generale_longueur = isset($_POST['f_socle_appreciation_generale_longueur']) ? Clean::entier($_POST['f_socle_appreciation_generale_longueur']) : 0; $socle_appreciation_generale_report = isset($_POST['f_socle_appreciation_generale_report']) ? 1 : 0; $socle_appreciation_generale_modele = isset($_POST['f_socle_appreciation_generale_modele']) ? Clean::texte($_POST['f_socle_appreciation_generale_modele']) : ''; $socle_ligne_supplementaire = isset($_POST['f_socle_check_supplementaire']) ? Clean::texte($_POST['f_socle_ligne_supplementaire']) : ''; $socle_assiduite = isset($_POST['f_socle_assiduite']) ? 1 : 0; $socle_prof_principal = isset($_POST['f_socle_prof_principal']) ? 1 : 0; $socle_only_presence = isset($_POST['f_socle_only_presence']) ? 1 : 0; $socle_pourcentage_acquis = isset($_POST['f_socle_pourcentage_acquis']) ? 1 : 0; $socle_etat_validation = isset($_POST['f_socle_etat_validation']) ? 1 : 0; $socle_couleur = isset($_POST['f_socle_couleur']) ? Clean::texte($_POST['f_socle_couleur']) : ''; $socle_fond = isset($_POST['f_socle_fond']) ? Clean::texte($_POST['f_socle_fond']) : ''; $socle_legende = isset($_POST['f_socle_legende']) ? Clean::texte($_POST['f_socle_legende']) : ''; // Liste de matières transmises $tab_matieres = isset($_POST['f_matiere_liste']) ? explode('_', $_POST['f_matiere_liste']) : array(); $tab_matieres = Clean::map_entier($tab_matieres); $tab_matieres = array_filter($tab_matieres, 'positif'); $bulletin_moyenne_exception_matieres = implode(',', $tab_matieres); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traitement des formulaires "Relevé d'évaluations" + "Bulletin scolaire" + "État de maîtrise du socle" // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_variables = array('releve' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'etat_acquisition', 'moyenne_scores', 'pourcentage_acquis', 'conversion_sur_20', 'cases_nb', 'aff_coef', 'aff_socle', 'aff_domaine', 'aff_theme', 'couleur', 'fond', 'legende', 'pages_nb'), 'bulletin' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'fusion_niveaux', 'barre_acquisitions', 'acquis_texte_code', 'acquis_texte_nombre', 'moyenne_scores', 'conversion_sur_20', 'moyenne_classe', 'moyenne_generale', 'moyenne_exception_matieres', 'couleur', 'fond', 'legende'), 'socle' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'only_presence', 'pourcentage_acquis', 'etat_validation', 'couleur', 'fond', 'legende')); if (isset($tab_variables[$objet])) { $tab_parametres = array(); foreach ($tab_variables[$objet] as $option) { $variable_nom = $objet . '_' . $option; $variable_valeur = ${$variable_nom}; // On modifie la session $_SESSION['OFFICIEL'][strtoupper($variable_nom)] = $variable_valeur; // Pour modifier dans la base $tab_parametres['officiel_' . $variable_nom] = $variable_valeur;
if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if (!isset($STEP)) { exit('Ce fichier ne peut être appelé directement !'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Étape 32 - Traitement des actions à effectuer sur les classes (sconet_professeurs_directeurs | sconet_eleves | base_eleves_eleves | factos_eleves | tableur_professeurs_directeurs | tableur_eleves) // //////////////////////////////////////////////////////////////////////////////////////////////////// // On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['classes'] -> $tab_i_classe_TO_id_base ; $tab_liens_id_base['groupes'] -> $tab_i_groupe_TO_id_base ; $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base $tab_liens_id_base = load_fichier('liens_id_base'); $tab_i_classe_TO_id_base = $tab_liens_id_base['classes']; $tab_i_groupe_TO_id_base = $tab_liens_id_base['groupes']; $tab_i_fichier_TO_id_base = $tab_liens_id_base['users']; // Récupérer les éléments postés $tab_del = !empty($_POST['f_del']) ? Clean::map_entier(explode(',', $_POST['f_del'])) : array(); $tab_add = array(); $tab_tmp = !empty($_POST['f_add']) ? explode(',', $_POST['f_add']) : array(); if (count($tab_tmp)) { foreach ($tab_tmp as $add_infos) { list($i, $niv, $ref, $nom) = explode(']¤[', $add_infos); $tab_add[$i]['ref'] = Clean::ref($ref); $tab_add[$i]['nom'] = Clean::texte($nom); $tab_add[$i]['niv'] = Clean::entier($niv); } } // Ajouter des classes éventuelles $nb_add = 0; if (count($tab_add)) { foreach ($tab_add as $i => $tab) { if ($tab['ref'] && $tab['nom'] && $tab['niv']) {
// Actions complémentaires // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'action_complementaire') { // Récupération des données $action_groupe = isset($_POST['select_action_groupe']) ? Clean::texte($_POST['select_action_groupe']) : ''; $granulosite = isset($_POST['select_action_groupe_modifier_objet']) ? Clean::texte($_POST['select_action_groupe_modifier_objet']) : ''; $modifier_id = isset($_POST['select_action_groupe_modifier_id']) ? Clean::texte($_POST['select_action_groupe_modifier_id']) : ''; $modifier_coef = isset($_POST['select_action_groupe_modifier_coef']) ? Clean::entier($_POST['select_action_groupe_modifier_coef']) : -1; $modifier_cart = isset($_POST['select_action_groupe_modifier_cart']) ? Clean::entier($_POST['select_action_groupe_modifier_cart']) : -1; $deplacer_id_initial = isset($_POST['select_action_groupe_deplacer_id_initial']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_initial']) : ''; $deplacer_id_final = isset($_POST['select_action_groupe_deplacer_id_final']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_final']) : ''; $groupe_nom_initial = isset($_POST['groupe_nom_initial']) ? Clean::texte($_POST['groupe_nom_initial']) : ''; $groupe_nom_final = isset($_POST['groupe_nom_final']) ? Clean::texte($_POST['groupe_nom_final']) : ''; list($matiere_id, $parent_id, $objet_id, $objet_ordre) = Clean::map_entier(explode('_', $modifier_id)) + array(0, 0, 0, 0); list($matiere_id_initial, $parent_id_initial, $objet_id_initial, $objet_ordre_initial) = Clean::map_entier(explode('_', $deplacer_id_initial)) + array(0, 0, 0, 0); list($matiere_id_final, $parent_id_final, $objet_id_final, $objet_ordre_final) = Clean::map_entier(explode('_', $deplacer_id_final)) + array(0, 0, 0, 0); // Vérification des données $tab_action_groupe = array('modifier_coefficient', 'modifier_panier', 'deplacer_domaine', 'deplacer_theme'); $test1 = $action_groupe == 'modifier_coefficient' && in_array($granulosite, $tab_granulosite) && $matiere_id && $parent_id && $objet_id && $objet_ordre && $modifier_coef != -1 ? TRUE : FALSE; $test2 = $action_groupe == 'modifier_panier' && in_array($granulosite, $tab_granulosite) && $matiere_id && $objet_id && $objet_ordre && $modifier_cart != -1 ? TRUE : FALSE; $test3 = $action_groupe == 'deplacer_domaine' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE; $test4 = $action_groupe == 'deplacer_theme' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE; if (!in_array($action_groupe, $tab_action_groupe) || !$test1 && !$test2 && !$test3 && !$test4) { exit('Erreur avec les données transmises !'); } // cas 1/4 : modifier_coefficient if ($action_groupe == 'modifier_coefficient') { $test_modif = DB_STRUCTURE_REFERENTIEL::DB_modifier_referentiel_items($granulosite, $matiere_id, $objet_id, 'coef', $modifier_coef); $message = $test_modif ? 'ok' : 'Contenu inchangé ou items non trouvés !'; exit($message); }
exit('Ce fichier ne peut être appelé directement !'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Forcer des reports de notes par un prof // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_periode_eleves = isset($_POST['f_periode_eleves']) ? explode('_', $_POST['f_periode_eleves']) : ''; $tab_eleves_moyennes = isset($_POST['f_eleves_moyennes']) ? explode('x', $_POST['f_eleves_moyennes']) : ''; $rubrique_id = isset($_POST['f_rubrique']) ? Clean::entier($_POST['f_rubrique']) : 0; $periode_id = count($tab_periode_eleves) ? $tab_periode_eleves[0] : 0; // On vérifie les paramètres principaux if (!$periode_id || !$rubrique_id || count($tab_periode_eleves) < 2 || !count($tab_eleves_moyennes) || $_SESSION['USER_PROFIL_TYPE'] != 'professeur' || !$_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES']) { exit('Erreur avec les données transmises !'); } // On passe en revue les données unset($tab_periode_eleves[0]); $tab_eleve_id = array_filter(Clean::map_entier($tab_periode_eleves), 'positif'); $appreciation = 'Moyenne figée reportée par ' . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']); $nb_reports = 0; foreach ($tab_eleves_moyennes as $eleve_moyenne) { list($eleve_id, $moyenne) = explode('_', $eleve_moyenne); $eleve_id = (int) $eleve_id; $note = round($moyenne, 1); // $tab_eleve_id contient la liste des élèves dont il faut changer les notes ; ce peut n'être qu'une intersection groupe x classe // $tab_eleves_moyennes contient les moyennes de tous les élèves du groupe ou de la classe if (in_array($eleve_id, $tab_eleve_id)) { DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie('bulletin', $periode_id, $eleve_id, $rubrique_id, 0, 'eleve', $note, $appreciation); $nb_reports++; } } // On affiche le résultat if (!$nb_reports) {
$palier_nom = isset($_POST['f_palier_nom']) ? Clean::texte($_POST['f_palier_nom']) : ''; $groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0; $groupe_nom = isset($_POST['f_groupe_nom']) ? Clean::texte($_POST['f_groupe_nom']) : ''; $groupe_type = isset($_POST['f_groupe_type']) ? Clean::texte($_POST['f_groupe_type']) : ''; $couleur = isset($_POST['f_couleur']) ? Clean::texte($_POST['f_couleur']) : ''; $fond = isset($_POST['f_fond']) ? Clean::texte($_POST['f_fond']) : ''; $legende = isset($_POST['f_legende']) ? Clean::texte($_POST['f_legende']) : ''; $marge_min = isset($_POST['f_marge_min']) ? Clean::entier($_POST['f_marge_min']) : 0; $eleves_ordre = isset($_POST['f_eleves_ordre']) ? Clean::texte($_POST['f_eleves_ordre']) : ''; // Normalement ce sont des tableaux qui sont transmis, mais au cas où... $tab_pilier_id = isset($_POST['f_pilier']) ? is_array($_POST['f_pilier']) ? $_POST['f_pilier'] : explode(',', $_POST['f_pilier']) : array(); $tab_eleve_id = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array(); $tab_matiere_id = isset($_POST['f_matiere']) ? is_array($_POST['f_matiere']) ? $_POST['f_matiere'] : explode(',', $_POST['f_matiere']) : array(); $tab_pilier_id = array_filter(Clean::map_entier($tab_pilier_id), 'positif'); $tab_eleve_id = array_filter(Clean::map_entier($tab_eleve_id), 'positif'); $tab_matiere_id = array_filter(Clean::map_entier($tab_matiere_id), 'positif'); $memo_demande = count($tab_pilier_id) > 1 ? 'palier' : 'pilier'; $liste_eleve = implode(',', $tab_eleve_id); if (!$palier_id || !$palier_nom || !$groupe_id || !$groupe_nom || !$groupe_type || !count($tab_eleve_id) || !count($tab_pilier_id) || !in_array($type, array('pourcentage', 'validation')) || !in_array($mode, array('auto', 'manuel')) || !$couleur || !$fond || !$legende || !$marge_min || !$eleves_ordre) { exit('Erreur avec les données transmises !'); } Form::save_choix('releve_synthese_socle'); Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE); $tab_pilier = array(); // [pilier_id] => array(pilier_ref,pilier_nom,pilier_nb_entrees); $tab_socle = array(); // [pilier_id][socle_id] => array(section_nom,socle_nom); $tab_entree_id = array(); // [i] => entree_id $tab_eleve_infos = array(); // [eleve_id] => array(eleve_nom,eleve_prenom,eleve_langue)
// //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération des valeurs transmises // //////////////////////////////////////////////////////////////////////////////////////////////////// $BILAN_TYPE = (isset($_POST['f_bilan_type'])) ? Clean::texte($_POST['f_bilan_type']) : ''; $periode_id = (isset($_POST['f_periode'])) ? Clean::entier($_POST['f_periode']) : 0; $classe_id = (isset($_POST['f_classe'])) ? Clean::entier($_POST['f_classe']) : 0; $groupe_id = (isset($_POST['f_groupe'])) ? Clean::entier($_POST['f_groupe']) : 0; // Autres chaines spécifiques... $listing_matieres = (isset($_POST['f_listing_matieres'])) ? $_POST['f_listing_matieres'] : '' ; $listing_piliers = (isset($_POST['f_listing_piliers'])) ? $_POST['f_listing_piliers'] : '' ; $listing_rubriques = (isset($_POST['f_listing_rubriques'])) ? $_POST['f_listing_rubriques'] : '' ; $tab_matiere_id = array_filter( Clean::map_entier( explode(',',$listing_matieres) ) , 'positif' ); $tab_pilier_id = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' ); $tab_rubrique_id = Clean::map_entier(explode(',',$listing_rubriques) ); // Pas de array_filter(...,'positif') car la valeur 0 est autorisée $liste_matiere_id = implode(',',$tab_matiere_id); $liste_pilier_id = implode(',',$tab_pilier_id); $liste_rubrique_id = implode(',',$tab_rubrique_id); $is_sous_groupe = ($groupe_id) ? TRUE : FALSE ; $tab_types = array ( 'releve' => array( 'droit'=>'RELEVE' , 'titre'=>'Relevé d\'évaluations' ) , 'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire' ) , 'palier1' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 1' ) , 'palier2' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 2' ) , 'palier3' => array( 'droit'=>'SOCLE' , 'titre'=>'Maîtrise du palier 3' ) , );
* SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * Consultez la Licence Publique Générale GNU Affero pour plus de détails. * * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $tab_eleve = isset($_POST['f_eleve']) ? explode(',', $_POST['f_eleve']) : array(); $tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif'); if (!count($tab_eleve)) { exit('Erreur avec les données transmises !'); } $listing_eleve_id = implode(',', $tab_eleve); // Récupérer les données élèves $tab_eleves = array(); // [user_id] => array(nom,prenom,sconet_id) Ordonné par INE. $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_eleves_cibles_actuels_avec_INE($listing_eleve_id); if (empty($DB_TAB)) { exit('Erreur : les élèves trouvés n\'ont pas d\'Identifiant National Élève (INE) ou sont anciens !'); } foreach ($DB_TAB as $DB_ROW) { $tab_eleves[$DB_ROW['user_id']] = $DB_ROW['user_reference']; } // Récupérer les notes enregistrées ; convertir si besoin en nombre de points correspondants
// Supprimer une structure existante // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='supprimer') && $base_id ) { Webmestre::supprimer_multi_structure($base_id); exit('<ok>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Supprimer plusieurs structures existantes // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='supprimer') && $listing_base_id ) { $tab_base_id = array_filter( Clean::map_entier( explode(',',$listing_base_id) ) , 'positif' ); foreach($tab_base_id as $base_id) { Webmestre::supprimer_multi_structure($base_id); } exit('<ok>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Bloquer les accès à une structure // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='bloquer') && $base_id ) { LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'],$base_id,'Action ciblée ; contacter le webmestre pour obtenir des précisions.'); exit('<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />');
$profils_impression_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_IMPRESSION_PDF'], 'br'); // Indication des profils ayant accès aux copies des impressions PDF $profils_archives_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_VOIR_ARCHIVE'], 'br'); // Droit de modifier le statut d'une fiche brevet (dans le cas PP, restera à affiner classe par classe...). $affichage_formulaire_statut = $_SESSION['USER_PROFIL_TYPE'] == 'administrateur' || test_user_droit_specifique($_SESSION['DROIT_FICHE_BREVET_MODIFIER_STATUT']); $tab_etats = array('1vide' => 'Vide (fermé)', '2rubrique' => 'Saisies Profs', '3mixte' => 'Saisies Mixtes', '4synthese' => 'Saisie Synthèse', '5complet' => 'Complet (fermé)'); $annee_session_brevet = annee_session_brevet(); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération et traitement des données postées, si formulaire soumis // Pas de passage par la page ajax.php => protection contre attaques type CSRF ajoutée ici // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($affichage_formulaire_statut && $_SESSION['SESAMATH_ID'] != ID_DEMO) { $tab_ids = isset($_POST['classe_ids']) ? explode(',', $_POST['classe_ids']) : array(); $new_etat = isset($_POST['etat']) ? Clean::texte($_POST['etat']) : ''; $discret = isset($_POST['mode_discret']) ? TRUE : FALSE; $tab_ids = array_intersect(array_filter(Clean::map_entier($tab_ids), 'positif'), $tab_classes_concernees); if (count($tab_ids) && isset($tab_etats[$new_etat])) { Session::verifier_jeton_anti_CSRF($PAGE); // Concernant les notifications, on liste déjà s'il y a des utilisateurs qui s'y seraient abonnés $abonnement_ref = 'fiche_brevet_statut'; $abonnes_nb = 0; if (!$discret && in_array($new_etat, array('2rubrique', '3mixte', '4synthese'))) { $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref); $abonnes_nb = count($DB_TAB); if ($abonnes_nb) { $tab_abonnes = array(); $tab_profils = array(); // On récupère les infos au passage foreach ($DB_TAB as $DB_ROW) { $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable'; $tab_abonnes[$DB_ROW['user_id']] = array('statut' => $notification_statut, 'mailto' => $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>', 'courriel' => $DB_ROW['user_email'], 'contenu' => '');
* Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') { exit('Action désactivée pour la démo...'); } $action = isset($_GET['action']) ? $_GET['action'] : ''; // Normalement ce sont des tableaux qui sont transmis, mais au cas où... $tab_eleve = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array(); $tab_groupe = isset($_POST['f_groupe']) ? is_array($_POST['f_groupe']) ? $_POST['f_groupe'] : explode(',', $_POST['f_groupe']) : array(); $tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif'); $tab_groupe = array_filter(Clean::map_entier($tab_groupe), 'positif'); // Ajouter des élèves à des groupes if ($action == 'ajouter') { foreach ($tab_eleve as $user_id) { foreach ($tab_groupe as $groupe_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $groupe_id, 'groupe', TRUE); } } } elseif ($action == 'retirer') { foreach ($tab_eleve as $user_id) { foreach ($tab_groupe as $groupe_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $groupe_id, 'groupe', FALSE); } } } // Affichage du bilan des affectations des élèves dans les groupes ; en deux requêtes pour récupérer les élèves sans groupes et les groupes sans élèves