} } $tab_donnees[':email_origine'] = 'admin'; } else { $tab_donnees[':email_origine'] = ''; } // Cas du mot de passe if (!$box_password) { $tab_donnees[':password'] = crypter_mdp($password); } // Cas de la date de sortie if ($box_date) { $sortie_date = '-'; $sortie_date_mysql = SORTIE_DEFAUT_MYSQL; } else { $sortie_date_mysql = convert_date_french_to_mysql($sortie_date); } // Mettre à jour l'enregistrement $tab_donnees += array(':sconet_id' => $sconet_id, ':reference' => $reference, ':profil_sigle' => $profil, ':genre' => $genre, ':nom' => $nom, ':prenom' => $prenom, ':courriel' => $courriel, ':id_ent' => $id_ent, ':id_gepi' => $id_gepi, ':sortie_date' => $sortie_date_mysql); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($id, $tab_donnees); // Afficher le retour $checked = $check ? ' checked' : ''; echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $id . '"' . $checked . ' /></td>'; echo '<td class="label">' . html($id_ent) . '</td>'; echo '<td class="label">' . html($id_gepi) . '</td>'; echo '<td class="label">' . html($sconet_id) . '</td>'; echo '<td class="label">' . html($reference) . '</td>'; echo '<td class="label">' . html($profil) . ' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="' . html(html($_SESSION['tmp'][$profil])) . '" /></td>'; echo '<td class="label">' . Html::$tab_genre['adulte'][$genre] . '</td>'; echo '<td class="label">' . html($nom) . '</td>'; echo '<td class="label">' . html($prenom) . '</td>';
$texte_lien_avant = ''; } if (!$aff_lien) { $texte_lien_apres = ''; } $toggle_class = $aff_start ? 'toggle_moins' : 'toggle_plus'; $toggle_etat = $aff_start ? '' : ' class="hide"'; $avec_texte_nombre = !$make_officiel || $_SESSION['OFFICIEL']['BULLETIN_ACQUIS_TEXTE_NOMBRE'] ? TRUE : FALSE; $avec_texte_code = !$make_officiel || $_SESSION['OFFICIEL']['BULLETIN_ACQUIS_TEXTE_CODE'] ? TRUE : FALSE; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Période concernée // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($periode_id == 0) { $date_mysql_debut = convert_date_french_to_mysql($date_debut); $date_mysql_fin = convert_date_french_to_mysql($date_fin); } else { $DB_ROW = DB_STRUCTURE_COMMUN::DB_recuperer_dates_periode($groupe_id, $periode_id); if (empty($DB_ROW)) { exit('La classe et la période ne sont pas reliées !'); } $date_mysql_debut = $DB_ROW['jointure_date_debut']; $date_mysql_fin = $DB_ROW['jointure_date_fin']; $date_debut = convert_date_mysql_to_french($date_mysql_debut); $date_fin = convert_date_mysql_to_french($date_mysql_fin); } if ($date_mysql_debut > $date_mysql_fin) { exit('La date de début est postérieure à la date de fin !'); } $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' : '';
} // Récupérer la liste des périodes, dans l'ordre choisi par l'admin $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_periodes(); if (empty($DB_TAB)) { exit('Aucune période n\'est enregistrée !'); } foreach ($DB_TAB as $DB_ROW) { $tab_periode[$DB_ROW['periode_id']] = $DB_ROW['periode_nom']; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Ajouter des périodes à des classes & groupes // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'ajouter' && $date_debut && $date_fin) { // Formater les dates $date_debut_mysql = convert_date_french_to_mysql($date_debut); $date_fin_mysql = convert_date_french_to_mysql($date_fin); // Vérifier que le date de début est antérieure à la date de fin if ($date_debut_mysql > $date_fin_mysql) { exit('Erreur : la date de début est postérieure à la date de fin !'); } foreach ($tab_select_periodes as $periode_id) { foreach ($tab_select_classes_groupes as $groupe_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode($groupe_id, $periode_id, TRUE, $date_debut_mysql, $date_fin_mysql); } } } elseif ($action == 'retirer') { $notification_contenu = ''; $notification_intro = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM']; foreach ($tab_select_periodes as $periode_id) { foreach ($tab_select_classes_groupes as $groupe_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode($groupe_id, $periode_id, FALSE);
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Compléter une évaluation existante // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - elseif( ($action=='completer') && (isset($tab_types[$groupe_type])) && in_array($qui,$tab_qui) && $devoir_id && $devoir_groupe_id && in_array($suite,$tab_suite) && $nb_demandes && $nb_users && $nb_items && $date && $date_visible ) { // Dans le cas d'une évaluation sur une liste d'élèves sélectionnés if($qui=='select') { // Il faut ajouter tous les élèves choisis DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_user($devoir_id,$devoir_groupe_id,$tab_user_id,'ajouter'); // ($devoir_groupe_id et non $groupe_id qui correspond à la classe d'origine des élèves...) } // Maintenant on peut modifier les items de l'évaluation DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_item($devoir_id,$tab_item_id,'ajouter'); // Insérer les scores 'REQ' pour indiquer au prof les demandes dans le tableau de saisie $date_mysql = convert_date_french_to_mysql($date); $date_visible_mysql = convert_date_french_to_mysql($date_visible); $info = 'Demande en attente ('.$_SESSION['USER_NOM'].' '.$_SESSION['USER_PRENOM']{0}.'.)'; foreach($tab_user_item as $key) { list($eleve_id,$item_id) = explode('x',$key); DB_STRUCTURE_PROFESSEUR::DB_ajouter_saisie($_SESSION['USER_ID'],$eleve_id,$devoir_id,$item_id,$date_mysql,'REQ',$info,$date_visible_mysql); } // Pour terminer, on change le statut des demandes ou on les supprime $listing_demande_id = implode(',',$tab_demande_id); if($suite=='changer') { DB_STRUCTURE_PROFESSEUR::DB_modifier_statut_demandes($listing_demande_id,'prof'); } else { DB_STRUCTURE_PROFESSEUR::DB_supprimer_demandes_devoir($listing_demande_id);
} $memo_date_debut = min($memo_date_debut, $date_debut); $memo_date_fin = max($memo_date_fin, $date_fin); } } } if ($xml->Retards) { $objet = 'retards'; // cas d'un fichier de retards foreach ($xml->Retards as $eleve) { // il n'y a aucun identifiant disponible dans cet export... $nom = $eleve->NOM ? Clean::nom($eleve->NOM) : NULL; $prenom = $eleve->PRENOM ? Clean::prenom($eleve->PRENOM) : NULL; $nb_retard_nj = $eleve->REGLE && $eleve->REGLE == 'N' ? 1 : 0; $id = $nom . '.' . $prenom; $date = $eleve->DATE ? convert_date_french_to_mysql($eleve->DATE) : NULL; if ($nom && $prenom && $date) { if (!isset($tab_users_fichier[$id])) { $tab_users_fichier[$id] = array(NULL, NULL, $nom, $prenom, NULL, NULL, 1, $nb_retard_nj); } else { $tab_users_fichier[$id][6] += 1; $tab_users_fichier[$id][7] += 1; } $memo_date_debut = min($memo_date_debut, $date); $memo_date_fin = max($memo_date_fin, $date); } } } $nb_eleves_trouves = count($tab_users_fichier, COUNT_NORMAL); if (!$nb_eleves_trouves) { exit('Erreur : aucun élève trouvé dans le fichier !');
$tab_demande_supprimer[$key] = $key; } } } unset($tab_post[$key]); } } // Il reste dans $tab_post les données à ajouter (mises dans $tab_nouveau_ajouter) et les données qui ne servent pas (non enregistrées et non saisies) $tab_nouveau_ajouter = array_filter($tab_post,'non_note'); // Il n'y a plus qu'à mettre à jour la base if( !count($tab_nouveau_ajouter) && !count($tab_nouveau_modifier) && !count($tab_nouveau_supprimer) ) { exit('Aucune modification détectée !'); } // L'information associée à la note comporte le nom de l'évaluation + celui du professeur (c'est une information statique, conservée sur plusieurs années) $date_visible_mysql = ($date_visible=='identique') ? $date_mysql : convert_date_french_to_mysql($date_visible); $info = $description.' ('.$_SESSION['USER_NOM'].' '.$_SESSION['USER_PRENOM']{0}.'.)'; foreach($tab_nouveau_ajouter as $key => $note) { list($item_id,$eleve_id) = explode('x',$key); DB_STRUCTURE_PROFESSEUR::DB_ajouter_saisie($_SESSION['USER_ID'],$eleve_id,$devoir_id,$item_id,$date_mysql,$note,$info,$date_visible_mysql); } foreach($tab_nouveau_modifier as $key => $note) { list($item_id,$eleve_id) = explode('x',$key); DB_STRUCTURE_PROFESSEUR::DB_modifier_saisie($eleve_id,$devoir_id,$item_id,$note,$info); } foreach($tab_nouveau_supprimer as $key => $key) { list($item_id,$eleve_id) = explode('x',$key); DB_STRUCTURE_PROFESSEUR::DB_supprimer_saisie($eleve_id,$devoir_id,$item_id);
// Supprimer l'entrée de la base éventuelle afin de ne plus la rechercher pour les utilisateurs suivants if ($id_base) { $tab_i_fichier_TO_id_base[$i_fichier] = $id_base; unset($tab_users_base['sconet_id'][$id_base], $tab_users_base['sconet_num'][$id_base], $tab_users_base['reference'][$id_base], $tab_users_base['nom'][$id_base], $tab_users_base['prenom'][$id_base]); } } // Parcourir chaque entrée de la base if (count($tab_users_base['sconet_id'])) { $tab_indices_base = array_keys($tab_users_base['sconet_id']); foreach ($tab_indices_base as $id_base) { // Cas [7] : absent dans le fichier, présent dans la base, actuel : contenu à retirer (probablement un user nouvellement sortant) if ($tab_users_base['sortie'][$id_base] == SORTIE_DEFAUT_MYSQL) { $indication = $import_profil == 'eleve' ? $tab_users_base['classe'][$id_base] : $tab_users_base['profil_sigle'][$id_base]; $date_sortie_fr = isset($_SESSION['tmp']['date_sortie'][$tab_users_base['sconet_id'][$id_base]]) ? $_SESSION['tmp']['date_sortie'][$tab_users_base['sconet_id'][$id_base]] : TODAY_FR; $lignes_retirer .= '<tr><th>Retirer <input id="del_' . $id_base . '" name="del_' . $id_base . '" type="checkbox" checked /></th><td>' . html($tab_users_base['sconet_id'][$id_base] . ' / ' . $tab_users_base['sconet_num'][$id_base] . ' / ' . $tab_users_base['reference'][$id_base] . ' || ' . $tab_users_base['nom'][$id_base] . ' ' . $tab_users_base['prenom'][$id_base] . ' (' . $indication . ')') . ' || <b>Sortie : non → ' . $date_sortie_fr . '</b></td></tr>' . NL; $tab_users_retirer[$id_base] = convert_date_french_to_mysql($date_sortie_fr); } else { if ($mode == 'complet') { $indication = $import_profil == 'eleve' ? $tab_users_base['classe'][$id_base] : $tab_users_base['profil_sigle'][$id_base]; $lignes_inchanger .= '<tr><th>Conserver</th><td>' . html($tab_users_base['sconet_id'][$id_base] . ' / ' . $tab_users_base['sconet_num'][$id_base] . ' / ' . $tab_users_base['reference'][$id_base] . ' || ' . $tab_users_base['nom'][$id_base] . ' ' . $tab_users_base['prenom'][$id_base] . ' (' . $indication . ')') . '</td></tr>' . NL; } } } } unset($_SESSION['tmp']['date_sortie']); // On enregistre $tab_memo_analyse = array('modifier' => $tab_users_modifier, 'ajouter' => $tab_users_ajouter, 'retirer' => $tab_users_retirer); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_memo_analyse.txt', serialize($tab_memo_analyse)); // On enregistre (tableau mis à jour) $tab_liens_id_base = array('classes' => $tab_i_classe_TO_id_base, 'groupes' => $tab_i_groupe_TO_id_base, 'users' => $tab_i_fichier_TO_id_base); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_liens_id_base.txt', serialize($tab_liens_id_base));
$ligne3 = 'Utilisateur : ' . $login; $ligne4 = 'Mot de passe : ' . $password; $fcontenu_pdf_tab[] = $ligne1 . "\r\n" . $ligne2 . "\r\n" . $ligne3 . "\r\n" . $ligne4; } } } // Modifier des users éventuels $nb_mod = 0; if (count($tab_mod)) { foreach ($tab_mod as $id_base) { // Il peut théoriquement subsister un conflit de sconet_id pour des users ayant même reference, et réciproquement... idem pour l'adresse mail... $tab_champs = $import_profil == 'eleve' ? array('sconet_id', 'sconet_num', 'reference', 'classe', 'genre', 'nom', 'prenom', 'birth_date', 'courriel', 'email_origine') : array('sconet_id', 'reference', 'profil_sigle', 'genre', 'nom', 'prenom', 'courriel', 'email_origine'); $DB_VAR = array(); foreach ($tab_champs as $champ_ref) { if ($tab_memo_analyse['modifier'][$id_base][$champ_ref] !== FALSE) { $DB_VAR[':' . $champ_ref] = $champ_ref != 'birth_date' ? $tab_memo_analyse['modifier'][$id_base][$champ_ref] : convert_date_french_to_mysql($tab_memo_analyse['modifier'][$id_base][$champ_ref]); } } if ($tab_memo_analyse['modifier'][$id_base]['entree'] !== FALSE) { $DB_VAR[':sortie_date'] = $tab_memo_analyse['modifier'][$id_base]['entree']; } // bilan if (count($DB_VAR)) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($id_base, $DB_VAR); } $nb_mod++; } } // On enregistre (tableau mis à jour) $tab_liens_id_base = array('classes' => $tab_i_classe_TO_id_base, 'groupes' => $tab_i_groupe_TO_id_base, 'users' => $tab_i_fichier_TO_id_base); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_liens_id_base.txt', serialize($tab_liens_id_base));