echo'<tr id="id_'.$eleve_id.'">'; echo'<td class="nu"><input type="checkbox" name="f_ids" value="'.$eleve_id.'"'.$checked.' /></td>'; echo'<td class="label">'.$tab_eleve_td[$eleve_id].'</td>'; echo'<td class="label">'.$archive_td.'</td>'; echo'</tr>'; } elseif($objet=='voir_archive') { if(!isset($DB_TAB[$eleve_id])) { $archive_td = 'Non, pas encore imprimé' ; } elseif(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $BILAN_TYPE , $periode_id ))) { $_SESSION['tmp_droit_voir_archive'][$eleve_id.$BILAN_TYPE] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et à donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite $archive_td = '<a href="releve_pdf.php?fichier='.$eleve_id.'_'.$BILAN_TYPE.'_'.$periode_id.'" class="lien_ext">Oui, le '.convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']).'</a>' ; } else { $archive_td = 'Oui, mais archive non présente sur ce serveur' ; } echo'<tr>'; echo'<td>'.$tab_eleve_td[$eleve_id].'</td>'; echo'<td>'.$archive_td.'</td>'; echo'</tr>'; } } exit(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$td_date_generation = 'Non, pas encore imprimé' ; $td_date_consult_eleve = $td_date_consult_parent = 'Sans objet' ; } else { if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $BILAN_TYPE , $periode_id ))) { $_SESSION['tmp_droit_voir_archive'][$eleve_id.$BILAN_TYPE] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et a donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite $td_date_generation = '<a href="releve_pdf.php?fichier='.$eleve_id.'_'.$BILAN_TYPE.'_'.$periode_id.'" target="_blank">Oui, le '.convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_generation']).'</a>' ; } else { $td_date_generation = 'Oui, mais archive non présente sur ce serveur' ; } $td_date_consult_eleve = in_array( 'ELV' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? ( ($DB_TAB[$eleve_id][0]['fichier_date_consultation_eleve']) ? convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_consultation_eleve']) : '-' ) : 'Non autorisé' ; $td_date_consult_parent = in_array( 'TUT' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? ( ($DB_TAB[$eleve_id][0]['fichier_date_consultation_parent']) ? convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_consultation_parent']) : '-' ) : 'Non autorisé' ; } echo'<tr>'; echo'<td>'.$tab_eleve_td[$eleve_id].'</td>'; echo'<td class="hc">'.$td_date_generation.'</td>'; echo'<td class="hc">'.$td_date_consult_eleve.'</td>'; echo'<td class="hc">'.$td_date_consult_parent.'</td>'; echo'</tr>'; } } exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // IMPRIMER ETAPE 2/4 - Le PDF complet est généré ; on archive individuellement les bilans anonymes (qui vont y rester une année scolaire) // ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_graphique[$groupe_id] .= '<div class="graph_erreur" style="margin-left:' . $margin_left_erreur . '%;width:' . $width_erreur . '%"></div>'; } elseif ($memo_position > $margin_left + 0.02) { // Deux périodes se chevauchent $margin_left_erreur = $margin_left; $width_erreur = $memo_position - $margin_left; $tab_graphique[$groupe_id] .= '<div class="graph_erreur" style="margin-left:' . $margin_left_erreur . '%;width:' . $width_erreur . '%"></div>'; } $tab_graphique[$groupe_id] .= '<div class="graph_partie" style="margin-left:' . $margin_left . '%;width:' . $width . '%"></div>'; $memo_position = $margin_left + $width; // graphique (fin) } // Fabrication du tableau résultant foreach ($tab_groupe as $groupe_id => $groupe_nom) { $tab_groupe[$groupe_id] = '<th>' . html($groupe_nom) . '</th>'; foreach ($tab_periode as $periode_id => $periode_nom) { $tab_groupe[$groupe_id] .= isset($tab_jointure[$groupe_id][$periode_id]) ? '<td>' . $tab_jointure[$groupe_id][$periode_id] . '</td>' : '<td class="hc">-</td>'; } $tab_groupe[$groupe_id] .= '<td>' . $tab_graphique[$groupe_id] . '</td>'; } foreach ($tab_periode as $periode_id => $periode_nom) { $tab_periode[$periode_id] = '<th>' . html($periode_nom) . '</th>'; } // Affichage du tableau résultant echo '<table>' . NL; echo '<thead>' . NL; echo '<tr><td class="nu"></td>' . implode('', $tab_periode) . '<td class="graph_total">Étendue du ' . convert_date_mysql_to_french($tout_debut) . ' au ' . convert_date_mysql_to_french($toute_fin) . '.</td></tr>' . NL; echo '</thead>' . NL; echo '<tbody>' . NL; echo '<tr>' . implode('</tr>' . NL . '<tr>', $tab_groupe) . '</tr>' . NL; echo '</tbody>' . NL; echo '</table><p> </p>' . NL;
{ unset($tab_autres[$DB_ROW['user_id']]); $tab_demandes[] = $DB_ROW['demande_id'] ; $score = ($DB_ROW['demande_score']!==null) ? $DB_ROW['demande_score'] : false ; $statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ; $class = ($DB_ROW['demande_statut']=='eleve') ? ' class="new"' : '' ; // Afficher une ligne du tableau $retour .= '<tr'.$class.'>'; $retour .= '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['demande_id'].'x'.$DB_ROW['user_id'].'x'.$DB_ROW['item_id'].'" /></td>'; $retour .= '<td class="label">'.html($matiere_nom).'</td>'; $retour .= '<td class="label">'.html($DB_ROW['item_ref']).' <img alt="" src="./_img/bulle_aide.png" title="'.html($DB_ROW['item_nom']).'" /></td>'; $retour .= '<td class="label">$'.$DB_ROW['item_id'].'$</td>'; $retour .= '<td class="label">'.html($groupe_nom).'</td>'; $retour .= '<td class="label">'.html($tab_eleves[$DB_ROW['user_id']]).'</td>'; $retour .= str_replace( '<td class="' , '<td class="label ' , affich_score_html($score,'score',$pourcent='') ); $retour .= '<td class="label"><i>'.html($DB_ROW['demande_date']).'</i>'.convert_date_mysql_to_french($DB_ROW['demande_date']).'</td>'; $retour .= '<td class="label">'.$statut.'</td>'; $retour .= '</tr>'; } // Calculer pour chaque item sa popularité (le nb de demandes pour les élèves affichés) $listing_demande_id = implode(',', $tab_demandes ); $DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_recuperer_item_popularite($listing_demande_id,$listing_user_id); $tab_bad = array(); $tab_bon = array(); foreach($DB_TAB as $DB_ROW) { $s = ($DB_ROW['popularite']>1) ? 's' : '' ; $tab_bad[] = '$'.$DB_ROW['item_id'].'$'; $tab_bon[] = '<i>'.sprintf("%02u",$DB_ROW['popularite']).'</i>'.$DB_ROW['popularite'].' demande'.$s; } // Inclure dans le retour la liste des élèves sans demandes
// en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les entrées foreach ($DB_TAB as $DB_ROW) { $tab_user_entree[$DB_ROW['user_id']][$DB_ROW['entree_id']] = array('etat' => $DB_ROW['validation_entree_etat'], 'date' => convert_date_mysql_to_french($DB_ROW['validation_entree_date']), 'info' => $DB_ROW['validation_entree_info']); } // On commence par remplir tout le tableau des piliers pour ne pas avoir ensuite à tester tout le temps si le champ existe foreach ($tab_eleve_id as $eleve_id) { foreach ($tab_pilier as $pilier_id => $tab) { $tab_user_pilier[$eleve_id][$pilier_id] = array('etat' => 2, 'date' => '', 'info' => ''); } } // Maintenant on complète avec les valeurs de la base $listing_pilier_id = implode(',', array_keys($tab_pilier)); $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($liste_eleve, $listing_pilier_id, $palier_id = 0); // en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les piliers foreach ($DB_TAB as $DB_ROW) { $tab_user_pilier[$DB_ROW['user_id']][$DB_ROW['pilier_id']] = array('etat' => $DB_ROW['validation_pilier_etat'], 'date' => convert_date_mysql_to_french($DB_ROW['validation_pilier_date']), 'info' => $DB_ROW['validation_pilier_info']); } } // //////////////////////////////////////////////////////////////////////////////////////////////////// /* * Libérer de la place mémoire car les scripts de bilans sont assez gourmands. * Supprimer $DB_TAB ne fonctionne pas si on ne force pas auparavant la fermeture de la connexion. * SebR devrait peut-être envisager d'ajouter une méthode qui libère cette mémoire, si c'est possible... */ // //////////////////////////////////////////////////////////////////////////////////////////////////// DB::close(SACOCHE_STRUCTURE_BD_NAME); unset($DB_TAB); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Elaboration de la synthèse de maîtrise du socle, en HTML et PDF => Tableaux, variables, calculs (aucun affichage). [type "pourcentage" uniquement] // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($type == 'pourcentage') {
exit('ok' . ']¤[' . $lignes . ']¤[' . $msg_audio_autre . ']¤[' . $msg_texte_url . ']¤[' . $msg_texte_data); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Enregistrer des notes saisies (auto-évaluation) // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'Enregistrer_saisies' && $devoir_id && in_array($msg_autre, array('oui', 'non'))) { // On récupère les informations associées à ce devoir et on vérifie que l'élève est en droit de s'y auto-évaluer. $DB_ROW = DB_STRUCTURE_ELEVE::DB_recuperer_devoir_infos($devoir_id); if (empty($DB_ROW)) { exit('Devoir introuvable !'); } if ($DB_ROW['devoir_autoeval_date'] === NULL) { exit('Devoir sans auto-évaluation !'); } if ($DB_ROW['devoir_autoeval_date'] < TODAY_MYSQL) { exit('Auto-évaluation terminée le ' . convert_date_mysql_to_french($DB_ROW['devoir_autoeval_date']) . ' !'); } $devoir_proprio_id = $DB_ROW['proprio_id']; $devoir_date_mysql = $DB_ROW['devoir_date']; $devoir_description = $DB_ROW['devoir_info']; $date_visible_mysql = $DB_ROW['devoir_visible_date']; // Tout est transmis : il faut comparer avec le contenu de la base pour ne mettre à jour que ce dont il y a besoin // On récupère les notes transmises dans $tab_post $tab_post = array(); foreach ($_POST as $key => $val) { if (substr($key, 0, 5) == 'item_') { $item_id = (int) substr($key, 5); $note = $val; $tab_post[$item_id] = $note; } }
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' : '' ; $texte_periode = 'Du '.$date_debut.' au '.$date_fin.'';
{ exit('Erreur : cette classe et cette période ne sont pas reliées !'); } // Formater les dates $date_debut_mysql = $DB_ROW['jointure_date_debut']; $date_fin_mysql = $DB_ROW['jointure_date_fin']; } // Lister les évaluations $script = ''; $classe_id = ($aff_classe_txt!='d2') ? $aff_classe_id : -1 ; // 'd2' est transmis si on veut toutes les classes / tous les groupes $DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_devoirs_prof($_SESSION['USER_ID'],$classe_id,$date_debut_mysql,$date_fin_mysql); foreach($DB_TAB as $DB_ROW) { // Formater la date et la référence de l'évaluation $date_affich = convert_date_mysql_to_french($DB_ROW['devoir_date']); $date_visible = ($DB_ROW['devoir_date']==$DB_ROW['devoir_visible_date']) ? 'identique' : convert_date_mysql_to_french($DB_ROW['devoir_visible_date']); $ref = $DB_ROW['devoir_id'].'_'.strtoupper($DB_ROW['groupe_type']{0}).$DB_ROW['groupe_id']; $s = ($DB_ROW['items_nombre']>1) ? 's' : ''; if(!$DB_ROW['devoir_partage']) { $profs_liste = ''; $profs_nombre = 'moi seul'; } else { $profs_liste = str_replace(',','_',mb_substr($DB_ROW['devoir_partage'],1,-1)); $profs_nombre = (mb_substr_count($DB_ROW['devoir_partage'],',')-1).' profs'; } $proprio = ($DB_ROW['prof_id']==$_SESSION['USER_ID']) ? TRUE : FALSE ; // Afficher une ligne du tableau echo'<tr>';
exit(); } // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Indiquer la liste des élèves associés à une évaluation de même nom( uniquement pour une sélection d'élèves) // Reprise d'un développement initié par Alain Pottier <*****@*****.**> // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='indiquer_eleves_deja') && $description && $date_debut ) { $date_debut_mysql = convert_date_french_to_mysql($date_debut); $DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_eleves_devoirs($_SESSION['USER_ID'],$description,$date_debut_mysql); $tab_retour = array(); foreach($DB_TAB as $DB_ROW) { $tab_retour[] = $DB_ROW['user_id'].'_'.convert_date_mysql_to_french($DB_ROW['devoir_date']); } exit( 'ok,'.implode(',',$tab_retour) ); } // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Afficher le formulaire pour saisir les items acquis par les élèves à une évaluation // Générer en même temps un csv à récupérer pour une saisie déportée // Générer en même temps un pdf contenant un tableau de saisie vide // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='saisir') && $devoir_id && $groupe_id && $date_mysql && $date_visible && $date_fr ) // $description et $groupe_nom sont aussi transmis { // liste des items $DB_TAB_COMP = DB_STRUCTURE_PROFESSEUR::DB_lister_items_devoir( $devoir_id , FALSE /*with_lien*/ , TRUE /*with_coef*/ ); // liste des élèves
if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} if($_SESSION['SESAMATH_ID']==ID_DEMO) {} $profil = (isset($_POST['f_profil'])) ? Clean::texte($_POST['f_profil']) : ''; // professeur personnel directeur eleve parent $groupe_type = (isset($_POST['f_groupe_type'])) ? Clean::texte($_POST['f_groupe_type']) : ''; // d n c g b $groupe_id = (isset($_POST['f_groupe_id'])) ? Clean::entier($_POST['f_groupe_id']) : 0; $tab_types = array('d'=>'all' , 'n'=>'niveau' , 'c'=>'classe' , 'g'=>'groupe' , 'b'=>'besoin'); if( (!$profil) || (!$groupe_id) || (!isset($tab_types[$groupe_type])) ) { exit('Erreur avec les données transmises !'); } $champs = ($profil!='parent') ? 'CONCAT(user_nom," ",user_prenom) AS user_identite , user_connexion_date AS connexion_date' : 'CONCAT(parent.user_nom," ",parent.user_prenom," (",enfant.user_nom," ",enfant.user_prenom,")") AS user_identite , parent.user_connexion_date AS connexion_date' ; $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( $profil /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs ) ; foreach($DB_TAB as $DB_ROW) { // Formater la date (dont on ne garde que le jour) $date_mysql = ($DB_ROW['connexion_date']===NULL) ? '0' : substr($DB_ROW['connexion_date'],0,10) ; $date_affich = ($DB_ROW['connexion_date']===NULL) ? '' : convert_date_mysql_to_french($date_mysql) ; // Afficher une ligne du tableau echo'<tr>'; echo '<td>'.html($DB_ROW['user_identite']).'</td>'; echo '<td>'.$date_affich.'</td>'; echo'</tr>'; } exit(); ?>
<th>Date début</th> <th>Date fin</th> <th>Destinataires</th> <th>Contenu</th> <th class="nu"><q class="ajouter" title="Ajouter un message."></q></th> </tr> </thead> <tbody> <?php // Lister les messages dont le user est l'auteur $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_messages_user_auteur($_SESSION['USER_ID']); if (!empty($DB_TAB)) { Layout::add('js_inline_before', '// <![CDATA['); foreach ($DB_TAB as $DB_ROW) { $date_debut_affich = convert_date_mysql_to_french($DB_ROW['message_debut_date']); $date_fin_affich = convert_date_mysql_to_french($DB_ROW['message_fin_date']); $destinataires_liste = str_replace(',', '_', mb_substr($DB_ROW['message_destinataires'], 1, -1)); $destinataires_nombre = mb_substr_count($DB_ROW['message_destinataires'], ',') - 1; $destinataires_nombre = $destinataires_nombre > 1 ? $destinataires_nombre . ' destinataires' : $destinataires_nombre . ' destinataire'; // Afficher une ligne du tableau echo '<tr id="id_' . $DB_ROW['message_id'] . '">'; echo '<td>' . $date_debut_affich . '</td>'; echo '<td>' . $date_fin_affich . '</td>'; echo '<td>' . $destinataires_nombre . '</td>'; echo '<td>' . html(afficher_texte_tronque($DB_ROW['message_contenu'], 60)) . '</td>'; echo '<td class="nu">'; echo '<q class="modifier" title="Modifier ce message."></q>'; echo '<q class="supprimer" title="Supprimer ce message."></q>'; echo '</td>'; echo '</tr>' . NL; // Javascript
$texte .= 'Période : du ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' au ' . convert_date_mysql_to_french($DB_ROW['convention_date_fin']) . "\r\n"; $texte .= "\r\n"; $texte .= 'Le contrat est en deux exemplaires.' . "\r\n"; $texte .= 'L\'un est à retourner signé au président de l\'association (ses coordonnées postales figurent sur le document).' . "\r\n"; $texte .= 'L\'autre est à conserver par votre établissement.' . "\r\n"; $texte .= "\r\n"; $texte .= 'La facture comporte les coordonnées bancaires de l\'association.' . "\r\n"; $texte .= 'Votre service gestionnaire peut régler par mandat administratif.' . "\r\n"; $texte .= "\r\n"; $texte .= 'Ces documents vous resteront accessibles en vous connectant comme administrateur puis en vous rendant dans le menu [Paramétrages établissement] [Mode d\'identification / Connecteur ENT] (cliquer alors sur l\'icône en bout de ligne du tableau).' . "\r\n"; $texte .= URL_DIR_SACOCHE . '?id=' . $_SESSION['BASE'] . "\r\n"; $texte .= "\r\n"; if ($DB_ROW['convention_date_debut'] < TODAY_MYSQL) { $texte .= 'Dès réception du contrat (ou perception du règlement), votre connecteur ENT sera automatiquement activé.' . "\r\n"; } else { $texte .= 'La réception du contrat (ou la perception du règlement) entrainera l\'activation automatique de votre connecteur ENT au ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' (changement d\'année scolaire).' . "\r\n"; } $texte .= 'Un courriel est alors envoyé au contact référent pour l\'en informer.' . "\r\n"; $texte .= 'Vous disposez de 2 mois à compter de l\'activation du connecteur ENT pour le tester et nous faire parvenir votre règlement (ou le contrat).' . "\r\n"; $texte .= "\r\n"; $texte .= 'Nous vous remercions de votre confiance et de votre soutien.' . "\r\n"; $texte .= "\r\n"; $texte .= 'Remarque : si vous ne souhaitez pas donner suite à cette convention, il vous suffit de ne rien envoyer et de sélectionner une connexion avec les identifiants de SACoche.' . "\r\n"; $texte .= "\r\n"; $texte .= 'Cordialement,' . "\r\n"; $texte .= WEBMESTRE_PRENOM . ' ' . WEBMESTRE_NOM . "\r\n"; $texte .= 'Responsable SACoche pour Sésamath' . "\r\n"; $texte .= "\r\n"; $courriel_bilan = Sesamail::mail($DB_ROW2['structure_contact_courriel'], $titre, $texte); // Ce serait mieux si le Reply-To était MAIL_SACOCHE_CONTACT mais cette contante n'est pas connue ici... if (!$courriel_bilan) {
} } if ($tab_users_base[$champ_ref][$id_base] != $tab_users_fichier[$champ_ref][$i_fichier]) { $td_modif .= ' || <b>' . $champ_aff . ' : ' . aff_champ($import_profil, $champ_ref, $tab_users_base[$champ_ref][$id_base]) . ' → ' . aff_champ($import_profil, $champ_ref, $tab_users_fichier[$champ_ref][$i_fichier]) . '</b>'; $tab_users_modifier[$id_base][$champ_ref] = $champ_ref != 'classe' ? $tab_users_fichier[$champ_ref][$i_fichier] : $id_classe; $nb_modif++; if ($champ_ref == 'courriel') { $tab_users_modifier[$id_base]['email_origine'] = 'user'; } } else { $td_modif .= ' || ' . $champ_aff . ' : ' . aff_champ($import_profil, $champ_ref, $tab_users_base[$champ_ref][$id_base]); $tab_users_modifier[$id_base][$champ_ref] = FALSE; } } if ($tab_users_base['sortie'][$id_base] != SORTIE_DEFAUT_MYSQL) { $td_modif .= ' || <b>Sortie : ' . convert_date_mysql_to_french($tab_users_base['sortie'][$id_base]) . ' → non</b>'; $tab_users_modifier[$id_base]['entree'] = SORTIE_DEFAUT_MYSQL; $nb_modif++; } else { $tab_users_modifier[$id_base]['entree'] = FALSE; } // Cas [5] : présent dans le fichier, présent dans la base, classe indiquée dans le fichier si élève, ancien dans la base et/ou différence constatée : contenu à modifier (user revenant ou mise à jour) if ($nb_modif) { $lignes_modifier .= '<tr><th>Modifier <input id="mod_' . $id_base . '" name="mod_' . $id_base . '" type="checkbox" checked /></th><td>' . mb_substr($td_modif, 4) . '</td></tr>' . NL; } else { if ($mode == 'complet') { $indication = $import_profil == 'eleve' ? $tab_users_base['classe'][$id_base] : $tab_users_base['profil_sigle'][$id_base]; $lignes_conserver .= '<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; } } }
$nb_fin_actuel = 0; $nb_fin_ancien = 0; $profil_type = $import_profil != 'professeur' ? $import_profil : array('professeur', 'directeur'); $with_classe = $import_profil == 'eleve' ? TRUE : FALSE; $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users($profil_type, 2, 'user_id,user_sconet_id,user_sconet_elenoet,user_reference,user_profil_nom_court_singulier,user_nom,user_prenom,user_prenom,user_login,user_sortie_date', $with_classe, TRUE); foreach ($DB_TAB as $DB_ROW) { if (TODAY_MYSQL < $DB_ROW['user_sortie_date']) { $nb_fin_actuel++; } else { $nb_fin_ancien++; } if ($mode == 'complet') { $class = isset($tab_password[$DB_ROW['user_id']]) ? ' class="new"' : ''; $td_password = isset($tab_password[$DB_ROW['user_id']]) ? '<td class="new">' . html($tab_password[$DB_ROW['user_id']]) . '</td>' : '<td class="i">champ crypté</td>'; $champ = $import_profil == 'eleve' ? $DB_ROW['groupe_ref'] : $DB_ROW['user_profil_nom_court_singulier']; $date_affich = $DB_ROW['user_sortie_date'] != SORTIE_DEFAUT_MYSQL ? convert_date_mysql_to_french($DB_ROW['user_sortie_date']) : '-'; $lignes .= '<tr' . $class . '><td>' . html($DB_ROW['user_sconet_id']) . '</td><td>' . html($DB_ROW['user_sconet_elenoet']) . '</td><td>' . html($DB_ROW['user_reference']) . '</td><td>' . html($champ) . '</td><td>' . html($DB_ROW['user_nom']) . '</td><td>' . html($DB_ROW['user_prenom']) . '</td><td' . $class . '>' . html($DB_ROW['user_login']) . '</td>' . $td_password . '<td>' . $date_affich . '</td></tr>' . NL; } } $s_debut_actuel = $nb_debut_actuel > 1 ? 's' : ''; $s_debut_ancien = $nb_debut_ancien > 1 ? 's' : ''; $s_fin_actuel = $nb_fin_actuel > 1 ? 's' : ''; $s_fin_ancien = $nb_fin_ancien > 1 ? 's' : ''; $s_mod = $nb_mod > 1 ? 's' : ''; $s_add = $nb_add > 1 ? 's' : ''; $s_del = $nb_del > 1 ? 's' : ''; if ($nb_add) { // On archive les nouveaux identifiants dans un fichier tableur (csv tabulé) $profil = $import_profil == 'eleve' ? 'eleve' : ($import_profil == 'parent' ? 'parent' : 'personnel'); $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_LOGINPASS . $fnom . '.csv', To::csv($fcontenu_csv));
} $affichage .= '</tbody>'; // Ligne avec le drapeau de la LV, si compétence concernée sélectionnée. $affichage .= count(array_intersect($tab_pilier_id,$tab_langue_piliers)) ? '<tfoot>'.$tfoot.'<th class="nu" colspan="3"></th></tfoot>' : '' ; // Récupérer la liste des jointures (validations) $listing_eleve_id = implode(',',$tab_eleve_id); $listing_pilier_id = implode(',',$tab_pilier_id); $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($listing_eleve_id,$listing_pilier_id,$palier_id=0); // en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les piliers $tab_bad = array(); $tab_bon = array(); foreach($DB_TAB as $DB_ROW) { if($DB_ROW['validation_pilier_etat']) { $tab_bad[] = 'U'.$DB_ROW['user_id'].'C'.$DB_ROW['pilier_id'].'" class="v3">'; $tab_bon[] = 'U'.$DB_ROW['user_id'].'C'.$DB_ROW['pilier_id'].'" class="v'.$DB_ROW['validation_pilier_etat'].'" title="Validé le '.convert_date_mysql_to_french($DB_ROW['validation_pilier_date']).' par '.html($DB_ROW['validation_pilier_info']).'" data-etat="lock">'; } } $affichage = str_replace($tab_bad,$tab_bon,$affichage); // Afficher le résultat echo $affichage; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Supprimer une validation positive // //////////////////////////////////////////////////////////////////////////////////////////////////// elseif( ($action=='Enregistrer_validation') && ($delete_id) ) { // Récupérer le duo {eleve;pilier} $string_infos = str_replace( array('U','C') , '_' , $delete_id);
foreach ($tab_eleve_id as $eleve_id) { if ($OBJET == 'imprimer') { $checked = isset($DB_TAB[$eleve_id]) ? '' : ' checked'; $archive_td = isset($DB_TAB[$eleve_id]) ? 'Oui, le ' . convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']) : 'Non'; echo '<tr id="id_' . $eleve_id . '">'; echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $eleve_id . '"' . $checked . ' /></td>'; echo '<td class="label">' . $tab_eleve_td[$eleve_id] . '</td>'; echo '<td class="label hc">' . $archive_td . '</td>'; echo '</tr>'; } elseif ($OBJET == 'voir_archive') { if (!isset($DB_TAB[$eleve_id])) { $archive_td = 'Non, pas encore imprimé'; } elseif (is_file(CHEMIN_DOSSIER_OFFICIEL . $_SESSION['BASE'] . DS . fabriquer_nom_fichier_bilan_officiel($eleve_id, $bilan_type, $annee_session_brevet))) { $_SESSION['tmp_droit_voir_archive'][$eleve_id . $bilan_type] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et a donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite $archive_td = '<a href="releve_pdf.php?fichier=' . $eleve_id . '_' . $bilan_type . '_' . $annee_session_brevet . '" target="_blank">Oui, le ' . convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']) . '</a>'; } else { $archive_td = 'Oui, mais archive non présente sur ce serveur'; } echo '<tr>'; echo '<td>' . $tab_eleve_td[$eleve_id] . '</td>'; echo '<td class="hc">' . $archive_td . '</td>'; echo '</tr>'; } } exit; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // IMPRIMER ETAPE 2/4 - Le PDF complet est généré ; on archive individuellement les fiches brevet informatives (qui sont y rester une année scolaire) // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($ACTION == 'imprimer' && $etape == 2) {
<th>Item</th> <th>Score</th> <th>Statut</th> <th class="nu"></th> </tr> </thead> <tbody> <?php // Lister les demandes d'évaluation $DB_TAB = DB_STRUCTURE_lister_demandes_eleve($_SESSION['USER_ID']); foreach($DB_TAB as $DB_ROW) { $score = ($DB_ROW['demande_score']!==null) ? $DB_ROW['demande_score'] : false ; $statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ; $texte_lien_avant = ($DB_ROW['item_lien']) ? '<a class="lien_ext" href="'.html($DB_ROW['item_lien']).'">' : ''; $texte_lien_apres = ($DB_ROW['item_lien']) ? '</a>' : ''; // Afficher une ligne du tableau echo'<tr id="ids_'.$DB_ROW['demande_id'].'_'.$DB_ROW['item_id'].'_'.$DB_ROW['matiere_id'].'">'; echo '<td><i>'.html($DB_ROW['demande_date']).'</i>'.convert_date_mysql_to_french($DB_ROW['demande_date']).'</td>'; echo '<td>'.html($DB_ROW['matiere_nom']).'</td>'; echo '<td>'.$texte_lien_avant.html($DB_ROW['item_ref']).$texte_lien_apres.' <img alt="" src="./_img/bulle_aide.png" title="'.html($DB_ROW['item_nom']).'" /></td>'; echo affich_score_html($score,'score',$pourcent=''); echo '<td>'.$statut.'</td>'; echo '<td class="nu"><q class="supprimer" title="Supprimer cette demande d\'évaluation."></q></td>'; echo'</tr>'; } ?> </tbody> </table> </form>
$tab_types = array('d'=>'Divers' , 'n'=>'niveau' , 'c'=>'classe' , 'g'=>'groupe'); $groupe_type = $tab_types[$groupe_type]; if($groupe_type=='Divers') { $groupe_type = ($groupe_id==1) ? 'sdf' : 'all' ; } $champs = 'user_id, user_id_ent, user_id_gepi, user_sconet_id, user_sconet_elenoet, user_reference, user_genre, user_nom, user_prenom, user_naissance_date, user_login, user_email, user_sortie_date' ; $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , $statut /*statut*/ , $groupe_type , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs ); if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { // Formater les dates $date_mysql = $DB_ROW['user_sortie_date']; $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL) ? convert_date_mysql_to_french($date_mysql) : '-' ; $date_naissance = ($DB_ROW['user_naissance_date']) ? convert_date_mysql_to_french($DB_ROW['user_naissance_date']) : '-' ; // Afficher une ligne du tableau echo'<tr id="id_'.$DB_ROW['user_id'].'">'; echo '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['user_id'].'" /></td>'; echo '<td class="label">'.html($DB_ROW['user_id_ent']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_id_gepi']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_sconet_id']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_sconet_elenoet']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_reference']).'</td>'; echo '<td class="label">'.Html::$tab_genre['enfant'][$DB_ROW['user_genre']].'</td>'; echo '<td class="label">'.html($DB_ROW['user_nom']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_prenom']).'</td>'; echo '<td class="label">'.$date_naissance.'</td>'; echo '<td class="label">'.html($DB_ROW['user_login']).'</td>'; echo '<td class="label i">champ crypté</td>'; echo '<td class="label">'.html($DB_ROW['user_email']).'</td>';
if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { // Formater certains éléments $texte_signature = ($DB_ROW['convention_signature']===NULL) ? 'Non réceptionné' : 'Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_signature']) ; $texte_paiement = ($DB_ROW['convention_paiement']===NULL) ? 'Non réceptionné' : 'Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_paiement']) ; $texte_activation = (!$DB_ROW['convention_activation']) ? 'Non' : ( ( ($DB_ROW['convention_date_debut']>TODAY_MYSQL) || ($DB_ROW['convention_date_fin']<TODAY_MYSQL) ) ? 'Non (hors période)' : 'Oui' ) ; $class_signature = (substr($texte_signature ,0,3)=='Non') ? 'br' : 'bv' ; $class_paiement = (substr($texte_paiement ,0,3)=='Non') ? 'br' : 'bv' ; $class_activation = (substr($texte_activation,0,3)=='Non') ? 'br' : 'bv' ; // Afficher une ligne du tableau echo'<tr id="id_'.$DB_ROW['convention_id'].'">'; echo '<td>'.html($DB_ROW['connexion_nom']).'</td>'; echo '<td>du '.convert_date_mysql_to_french($DB_ROW['convention_date_debut']).' au '.convert_date_mysql_to_french($DB_ROW['convention_date_fin']).'</td>'; echo '<td>Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_creation']).'</td>'; echo '<td class="'.$class_signature.'">'.$texte_signature.'</td>'; echo '<td class="'.$class_paiement.'">'.$texte_paiement.'</td>'; echo '<td class="'.$class_activation.'">'.$texte_activation.'</td>'; echo '<td class="nu"><q class="voir_archive" title="Récupérer / Imprimer les documents associés."></q></td>'; echo'</tr>'.NL; } } else { echo'<tr class="vide"><td class="nu probleme" colspan="6">Cliquer sur l\'icône ci-dessus (symbole "+" dans un rond vert) pour ajouter une convention.</td><td class="nu"></td></tr>'.NL; } ?> </tbody> </table> <p class="astuce">
$fnom_export = 'messages_'.$_SESSION['BASE'].'_'.Clean::fichier($matiere_nom).'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea(); $separateur = ';'; $messages_html = '<table><thead><tr><th>Matière - Item</th><th>Groupe - Élève</th><th>Message(s)</th></tr></thead><tbody>'; $fichier_csv = 'Matière'.$separateur.'Item Ref'.$separateur.'Item Nom'.$separateur.'Groupe'.$separateur.'Élève'.$separateur.'Score'.$separateur.'Date'.$separateur.'Message'."\r\n"; $tab_demandes = array(); $DB_TAB = DB_STRUCTURE_DEMANDE::DB_lister_demandes_prof( $_SESSION['USER_ID'] , $matiere_id , $listing_user_id ); if(empty($DB_TAB)) { exit('Aucune demande n\'a été formulée selon les critères indiqués !'); } foreach($DB_TAB as $DB_ROW) { unset($tab_autres[$DB_ROW['eleve_id']]); $tab_demandes[] = $DB_ROW['demande_id']; $score = ($DB_ROW['demande_score']!==NULL) ? $DB_ROW['demande_score'] : FALSE ; $date = convert_date_mysql_to_french($DB_ROW['demande_date']); $statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ; $dest = ($DB_ROW['prof_id']==$_SESSION['USER_ID']) ? 'vous seul' : 'collègues concernés' ; $class = ($DB_ROW['demande_statut']=='eleve') ? ' class="new"' : '' ; $matiere_nom = ($selection_matiere) ? $matiere_nom : $DB_ROW['matiere_nom'] ; $commentaire = ($DB_ROW['demande_messages']) ? 'oui <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.str_replace(array("\r\n","\r","\n"),'<br />',html(html($DB_ROW['demande_messages']))).'" />' : 'non' ; // Volontairement 2 html() pour le title sinon <* est pris comme une balise html par l'infobulle. $document = ($DB_ROW['demande_doc']) ? '<a href="'.html($DB_ROW['demande_doc']).'" target="_blank">oui</a>' : 'non' ; $messages_html .= '<tr><td>'.html($matiere_nom).'<br />'.html($DB_ROW['item_ref']).'</td><td>'.html($tab_groupes[$DB_ROW['eleve_id']]).'<br />'.html($tab_eleves[$DB_ROW['eleve_id']]).'</td><td>'.str_replace(array("\r\n","\r","\n"),'<br />',html($DB_ROW['demande_messages'])).'</td></tr>'; $fichier_csv .= '"'.$matiere_nom.'"'.$separateur.'"'.$DB_ROW['item_ref'].'"'.$separateur.'"'.$DB_ROW['item_nom'].'"'.$separateur.'"'.$tab_groupes[$DB_ROW['eleve_id']].'"'.$separateur.'"'.$tab_eleves[$DB_ROW['eleve_id']].'"'.$separateur.'"'.$score.'"'.$separateur.'"'.$date.'"'.$separateur.'"'.$DB_ROW['demande_messages'].'"'."\r\n"; // Afficher une ligne du tableau $retour .= '<tr'.$class.'>'; $retour .= '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['demande_id'].'x'.$DB_ROW['eleve_id'].'x'.$DB_ROW['item_id'].'" /></td>'; $retour .= '<td class="label">'.html($matiere_nom).'</td>'; $retour .= '<td class="label">'.html($DB_ROW['item_ref']).' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.html(html($DB_ROW['item_nom'])).'" /></td>'; // Volontairement 2 html() pour le title sinon <* est pris comme une balise html par l'infobulle. $retour .= '<td class="label">$'.$DB_ROW['item_id'].'$</td>'; $retour .= '<td class="label">'.html($tab_groupes[$DB_ROW['eleve_id']]).'</td>';
$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 !'); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . $fichier_memo, serialize($tab_users_fichier)); // On affiche la demande de confirmation exit('ok' . ']¤[' . $objet . ']¤[' . html($nb_eleves_trouves) . ']¤[' . convert_date_mysql_to_french($memo_date_debut) . ']¤[' . convert_date_mysql_to_french($memo_date_fin)); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traitement d'un fichier d'import déjà réceptionné // //////////////////////////////////////////////////////////////////////////////////////////////////// if (in_array($action, array('traitement_import_sconet', 'traitement_import_siecle', 'traitement_import_gepi', 'traitement_import_pronote')) && $periode_id) { $mode = substr($action, strrpos($action, '_') + 1); // Récupération des données déjà extraites du fichier if (!is_file(CHEMIN_DOSSIER_IMPORT . $fichier_memo)) { exit('Erreur : le fichier ' . CHEMIN_DOSSIER_IMPORT . $fichier_memo . ' contenant les données à traiter est introuvable !'); } $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_memo); $tab_users_fichier = @unserialize($contenu); if ($tab_users_fichier === FALSE) { exit('Erreur : le fichier contenant les données à traiter est syntaxiquement incorrect !'); }
} // //////////////////////////////////////////////////////////////////////////////////////////////////// // Forcer plusieurs mots de passe avec la date de naissance // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'forcer_mdp_birth') { if ($profil != 'eleves') { exit('Fonctionnalité disponible uniquement pour les élèves !'); } $tab_password = array(); // Récupérer les données des utilisateurs concernés (besoin de le faire maintenant, on a besoin des infos pour générer le mdp) $listing_champs = $profil != 'parents' ? 'user_id,user_sconet_id,user_sconet_elenoet,user_reference,user_profil_sigle,user_nom,user_prenom,user_naissance_date,user_login,user_naissance_date' : 'parent.user_id AS parent_id,parent.user_sconet_id AS parent_sconet_id,parent.user_sconet_elenoet AS parent_sconet_elenoet,parent.user_reference AS parent_reference,parent.user_profil_sigle AS parent_profil_sigle,parent.user_nom AS parent_nom,parent.user_prenom AS parent_prenom,parent.user_login AS parent_login'; $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_cibles(implode(',', $tab_user), $listing_champs, $avec_info); // Mettre à jour les mots de passe des utilisateurs concernés foreach ($DB_TAB as $key => $DB_ROW) { if ($DB_ROW['user_naissance_date']) { $password = str_replace('/', '', convert_date_mysql_to_french($DB_ROW['user_naissance_date'])); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($DB_ROW[$prefixe . 'id'], array(':password' => crypter_mdp($password))); $tab_password[$DB_ROW[$prefixe . 'id']] = $password; } } if (!count($tab_password)) { exit('Les mots de passe de ces élèves ne sont pas dans la base !'); } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Générer une sortie csv (login ou mdp) (élève ou prof) // //////////////////////////////////////////////////////////////////////////////////////////////////// $separateur = ';'; $champ_nom = $profil == 'eleves' ? 'CLASSE' : 'PROFIL'; $fcontenu = 'SCONET_ID' . $separateur . 'SCONET_N°' . $separateur . 'REFERENCE' . $separateur . 'PROFIL' . $separateur . 'NOM' . $separateur . 'PRENOM' . $separateur . 'LOGIN' . $separateur . 'MOT DE PASSE' . $separateur . 'INFO' . "\r\n\r\n"; foreach ($DB_TAB as $DB_ROW) {
// Récupérer la liste des classes $tab_groupe = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes(); foreach($DB_TAB as $DB_ROW) { $tab_groupe[$DB_ROW['groupe_id']] = array( 'ref'=>$DB_ROW['groupe_ref'] , 'nom'=>$DB_ROW['groupe_nom'] ); } // Récupérer les données des élèves $champs = 'user_id, user_id_ent, user_id_gepi, user_sconet_id, user_sconet_elenoet, user_reference, user_genre, user_nom, user_prenom, user_naissance_date, user_login, eleve_classe_id'; $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs ); if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { $date_fr = convert_date_mysql_to_french($DB_ROW['user_naissance_date']); $export_csv .= $DB_ROW['user_id'] .$separateur.$DB_ROW['user_id_ent'] .$separateur.$DB_ROW['user_id_gepi'] .$separateur.$DB_ROW['user_sconet_id'] .$separateur.$DB_ROW['user_sconet_elenoet'] .$separateur.$DB_ROW['user_reference'] .$separateur.$DB_ROW['user_login'] .$separateur.Html::$tab_genre['enfant'][$DB_ROW['user_genre']] .$separateur.$DB_ROW['user_nom'] .$separateur.$DB_ROW['user_prenom'] .$separateur.$date_fr .$separateur.$tab_groupe[$DB_ROW['eleve_classe_id']]['ref'] .$separateur.$tab_groupe[$DB_ROW['eleve_classe_id']]['nom'] ."\r\n"; $export_html .= '<tr>'
$tab_accueil['demandes']['contenu'] .= '<p>Vous avez <a href="./index.php?page=' . $page . '"><span class="b">' . $nb_etat_prof . ' demande' . $s . ' d\'évaluation' . $s . '</span></a> en cours de préparation.</p>'; } } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // [saisies] - Notes à saisir (prof) ou auto-évaluations en cours (élèves) // //////////////////////////////////////////////////////////////////////////////////////////////////// // PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER if ($_SESSION['USER_PROFIL_TYPE'] == 'eleve') { $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_devoirs_eleve_avec_autoevaluation_en_cours($_SESSION['USER_ID'], $_SESSION['ELEVE_CLASSE_ID']); if (!empty($DB_TAB)) { $tab_accueil['saisies']['nombre'] = count($DB_TAB); $tab_accueil['saisies']['contenu'] = '<div class="b"><TG> ' . $tab_accueil['saisies']['masque'] . '</div>'; $tab_accueil['saisies']['contenu'] .= '<ul class="puce p">'; foreach ($DB_TAB as $DB_ROW) { $date_affich = convert_date_mysql_to_french($DB_ROW['devoir_date']); $tab_accueil['saisies']['contenu'] .= '<li>' . html($date_affich) . ' || <a href="./index.php?page=evaluation_voir&devoir_id=' . $DB_ROW['devoir_id'] . '&autoeval">' . html(afficher_identite_initiale($DB_ROW['prof_nom'], FALSE, $DB_ROW['prof_prenom'], TRUE, $DB_ROW['prof_genre'])) . ' || ' . html($DB_ROW['devoir_info']) . '</a></li>'; } $tab_accueil['saisies']['contenu'] .= '</ul>'; } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // [officiel] - Bilans officiels ouverts à la saisie (prof) ou à consulter (élèves / parents) // //////////////////////////////////////////////////////////////////////////////////////////////////// // PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER if ($_SESSION['USER_PROFIL_TYPE'] == 'eleve' || $_SESSION['USER_PROFIL_TYPE'] == 'parent' && $_SESSION['NB_ENFANTS'] > 0) { // Cette section reprend pas mal de code issu de la page [officiel_voir_archive.php] $tab_types = array('brevet' => array('droit' => 'FICHE_BREVET', 'titre' => 'Fiche brevet'), 'releve' => array('droit' => 'OFFICIEL_RELEVE', 'titre' => 'Relevé d\'évaluations'), 'bulletin' => array('droit' => 'OFFICIEL_BULLETIN', 'titre' => 'Bulletin scolaire'), 'palier1' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 1'), 'palier2' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 2'), 'palier3' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 3')); $droit_voir_archives_pdf = FALSE; foreach ($tab_types as $BILAN_TYPE => $tab) { $droit_voir_archives_pdf = $droit_voir_archives_pdf || test_user_droit_specifique($_SESSION['DROIT_' . $tab['droit'] . '_VOIR_ARCHIVE']);
$tab_groupe[$DB_ROW['groupe_id']] = '<th>' . html($DB_ROW['groupe_nom']) . '</th>'; } // 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)) { foreach ($DB_TAB as $DB_ROW) { $tab_periode[$DB_ROW['periode_id']] = '<th>' . html($DB_ROW['periode_nom']) . '</th>'; } // Récupérer la liste des jointures $listing_groupes_id = implode(',', array_keys($tab_groupe)); $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_jointure_groupe_periode($listing_groupes_id); $memo_groupe_id = 0; if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { $date_affich_debut = convert_date_mysql_to_french($DB_ROW['jointure_date_debut']); $date_affich_fin = convert_date_mysql_to_french($DB_ROW['jointure_date_fin']); $tab_jointure[$DB_ROW['groupe_id']][$DB_ROW['periode_id']] = html($date_affich_debut) . ' ~ ' . html($date_affich_fin); } } // Fabrication du tableau résultant foreach ($tab_groupe as $groupe_id => $groupe_text) { foreach ($tab_periode as $periode_id => $periode_text) { $tab_groupe[$groupe_id] .= isset($tab_jointure[$groupe_id][$periode_id]) ? '<td>' . $tab_jointure[$groupe_id][$periode_id] . '</td>' : '<td class="hc">-</td>'; } } // Affichage du tableau résultant echo '<table>' . NL; echo '<thead>' . NL; echo '<tr><td class="nu"></td>' . implode('', $tab_periode) . '</tr>' . NL; echo '</thead>' . NL; echo '<tbody>' . NL;
$tab_bad[] = array('De ', 'de ', 'DE '); $tab_bon[] = ''; $tab_bad[] = array('Maternelle', 'maternelle', 'MATERNELLE'); $tab_bon[] = ''; $tab_bad[] = array('Année', 'année', 'ANNÉE', 'Annee', 'annee', 'ANNEE'); // // On passe les utilisateurs en revue : on mémorise leurs infos, les classes trouvées, les groupes trouvés // $tab_genre = array('' => 'I', 'M' => 'M', 'F' => 'F'); foreach ($tab_lignes as $ligne_contenu) { $tab_elements = str_getcsv($ligne_contenu, $separateur); if (count($tab_elements) > $numero_max) { $nom = $tab_elements[$tab_numero_colonne['nom']]; $prenom = $tab_elements[$tab_numero_colonne['prenom']]; $genre = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I'; $birth_date = strpos($tab_elements[$tab_numero_colonne['birth_date']], '-') ? convert_date_mysql_to_french($tab_elements[$tab_numero_colonne['birth_date']]) : $tab_elements[$tab_numero_colonne['birth_date']]; // Selon les fichiers, trouvé au format français ou mysql $niveau = $tab_elements[$tab_numero_colonne['niveau']]; $classe = $tab_elements[$tab_numero_colonne['classe']]; if ($nom != '' && $prenom != '' && $niveau != '' && $classe != '') { // Réduire la longueur du niveau et de la classe foreach ($tab_bon as $i => $bon) { $niveau = str_replace($tab_bad[$i], $bon, $niveau); $classe = str_replace($tab_bad[$i], $bon, $classe); } $niveau_ref = mb_substr(Clean::ref($niveau), 0, 8); $classe_nom = mb_substr('[' . $niveau_ref . '] ' . $classe, 0, 20); // On fait autant de classes que de groupes de niveaux par classes. $classe_ref = mb_substr(Clean::ref($niveau_ref . '_' . md5($niveau_ref . $classe)), 0, 8); $i_classe = 'i' . Clean::login($classe_ref); // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort().
$releve_HTML .= !$make_graph ? '<div class="astuce">Cliquer sur <span class="toggle_plus"></span> / <span class="toggle_moins"></span> pour afficher / masquer le détail.' . $bouton_print_appr . $bouton_print_test . $bouton_import_csv . '</div>' . NL : '<div id="div_graphique"></div>' . NL; $separation = count($tab_eleve_infos) > 1 ? '<hr class="breakafter" />' . NL : ''; // Légende identique pour tous les élèves car pas de codes de notation donc pas de codages spéciaux. $legende_html = $legende == 'oui' ? Html::legende(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, $make_officiel) : ''; $width_barre = !$make_officiel ? 180 : 50; $width_texte = 900 - $width_barre; } if ($make_pdf) { $releve_PDF = new PDF_item_synthese($make_officiel, 'portrait', $marge_gauche, $marge_droite, $marge_haut, $marge_bas, $couleur, $fond, $legende, !empty($is_test_impression)); $releve_PDF->initialiser($synthese_modele, $nb_lignes_total, $eleve_nb); } // Pour chaque élève... foreach ($tab_eleve_infos as $eleve_id => $tab_eleve) { extract($tab_eleve); // $eleve_INE $eleve_nom $eleve_prenom $eleve_genre $date_naissance $date_naissance = $date_naissance ? convert_date_mysql_to_french($date_naissance) : ''; if ($make_officiel) { // Quelques variables récupérées ici car pose pb si placé dans la boucle par destinataire $moyenne_generale_eleve_enregistree = isset($tab_saisie[$eleve_id][0][0]['note']) ? $tab_saisie[$eleve_id][0][0]['note'] : NULL; unset($tab_saisie[$eleve_id][0][0]); $is_appreciation_generale_enregistree = empty($tab_saisie[$eleve_id][0]) ? FALSE : TRUE; list($prof_id_appreciation_generale, $tab_appreciation_generale) = $is_appreciation_generale_enregistree ? each($tab_saisie[$eleve_id][0]) : array(0, array('prof_info' => '', 'appreciation' => '')); } foreach ($tab_destinataires[$eleve_id] as $numero_tirage => $tab_adresse) { // Si cet élève a été évalué... if (isset($tab_infos_acquis_eleve[$eleve_id])) { // Intitulé if ($make_html) { $releve_HTML .= !$make_officiel ? $separation . '<h2>' . html($groupe_nom . ' - ' . $eleve_nom . ' ' . $eleve_prenom) . '</h2>' . NL : ''; } if ($make_pdf) {
foreach ($tab_socle_eleve as $eleve_id => $tab_scores) { if ($tab_scores['nb']) { $tab_modif_cellule[$eleve_id][$socle_id]['html'] = round(50 * (($tab_scores['A'] * 2 + $tab_scores['VA']) / $tab_scores['nb']), 0); } } } // - - - - - - - - - - - - - - - - - - - - - - - - - // Récupérer la liste des jointures : validations d'entrées // - - - - - - - - - - - - - - - - - - - - - - - - - $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_entree($listing_eleve_id, $listing_entree_id, $domaine_id = 0, $pilier_id, $palier_id = 0); $tab_bad = array(); $tab_bon = array(); foreach ($DB_TAB as $DB_ROW) { $etat = $DB_ROW['validation_entree_etat'] ? 'Validé' : 'Invalidé'; $tab_modif_cellule[$DB_ROW['user_id']][$DB_ROW['entree_id']]['class'] = ' class="v' . $DB_ROW['validation_entree_etat'] . '"'; $tab_modif_cellule[$DB_ROW['user_id']][$DB_ROW['entree_id']]['title'] = ' title="' . $etat . ' le ' . convert_date_mysql_to_french($DB_ROW['validation_entree_date']) . ' par ' . html($DB_ROW['validation_entree_info']) . '"'; } // - - - - - - - - - - - - - - - - - - - - - - - - - // Récupérer la liste des jointures : validations de piliers // - - - - - - - - - - - - - - - - - - - - - - - - - $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($listing_eleve_id, $pilier_id, $palier_id = 0); $tab_bad = array(); $tab_bon = array(); foreach ($DB_TAB as $DB_ROW) { if ($DB_ROW['validation_pilier_etat']) { foreach ($tab_pilier_entree[$pilier_id] as $entree_id) { $tab_modif_cellule[$DB_ROW['user_id']][$entree_id]['data_etat'] = ' data-etat="done"'; } } } // Afficher le résultat après adaptation des cellules "centrales".
<th>Login</th> <th>Mot de passe</th> <th>Courriel</th> <th>Date sortie</th> <th class="nu"><q class="ajouter" title="Ajouter un parent."></q></th> </tr> </thead> <tbody> <?php if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { // Formater la date $date_mysql = $DB_ROW['user_sortie_date']; $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL) ? convert_date_mysql_to_french($date_mysql) : '-' ; // Afficher une ligne du tableau echo'<tr id="id_'.$DB_ROW['user_id'].'">'; echo '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['user_id'].'" /></td>'; echo ($DB_ROW['enfants_nombre']) ? '<td>'.$DB_ROW['enfants_nombre'].' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.str_replace('§BR§','<br />',html(html($DB_ROW['enfants_liste']))).'" /></td>' : '<td>0 <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Aucun lien de responsabilité !" /></td>' ; // Volontairement 2 html() pour le title sinon <* est pris comme une balise html par l'infobulle. echo '<td class="label">'.html($DB_ROW['user_id_ent']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_id_gepi']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_sconet_id']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_sconet_elenoet']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_reference']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_profil_sigle']).' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.$_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$DB_ROW['user_profil_sigle']].'" /></td>'; echo '<td class="label">'.Html::$tab_genre['adulte'][$DB_ROW['user_genre']].'</td>'; echo '<td class="label">'.html($DB_ROW['user_nom']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_prenom']).'</td>'; echo '<td class="label">'.html($DB_ROW['user_login']).'</td>'; echo '<td class="label i">champ crypté</td>';
$tab_bon[] = ''; $tab_bad[] = array('De ','de ','DE '); $tab_bon[] = ''; $tab_bad[] = array('Maternelle','maternelle','MATERNELLE'); $tab_bon[] = ''; $tab_bad[] = array('Année','année','ANNÉE','Annee','annee','ANNEE'); // // On passe les utilisateurs en revue : on mémorise leurs infos, les classes trouvées, les groupes trouvés // $tab_genre = array( ''=>'I' , 'M'=>'M' , 'F'=>'F' ); foreach ($tab_lignes as $ligne_contenu) { $tab_elements = str_getcsv($ligne_contenu,$separateur); if(count($tab_elements)>$numero_max) { $nom = $tab_elements[$tab_numero_colonne['nom'] ]; $prenom = $tab_elements[$tab_numero_colonne['prenom']]; $genre = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I' ; $birth_date = strpos($tab_elements[$tab_numero_colonne['birth_date']],'-') ? convert_date_mysql_to_french($tab_elements[$tab_numero_colonne['birth_date']]) : $tab_elements[$tab_numero_colonne['birth_date']] ; // Selon les fichiers, trouvé au format français ou mysql $niveau = $tab_elements[$tab_numero_colonne['niveau']]; $classe = $tab_elements[$tab_numero_colonne['classe']]; if( ($nom!='') && ($prenom!='') && ($niveau!='') && ($classe!='') ) { // Réduire la longueur du niveau et de la classe foreach ($tab_bon as $i=>$bon) { $niveau = str_replace($tab_bad[$i],$bon,$niveau); $classe = str_replace($tab_bad[$i],$bon,$classe); } $niveau_ref = mb_substr(Clean::ref($niveau),0,8); $classe_nom = mb_substr('['.$niveau_ref.'] '.$classe,0,20); // On fait autant de classes que de groupes de niveaux par classes. $classe_ref = mb_substr(Clean::ref($niveau_ref.'_'.md5($niveau_ref.$classe)),0,8); $i_classe = 'i'.Clean::login($classe_ref); // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort(). $tab_users_fichier['sconet_id' ][] = 0;