// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($ACTION == 'supprimer_appr') {
    if ($BILAN_ETAT == '2rubrique' && $epreuve_id == CODE_BREVET_EPREUVE_TOTAL) {
        exit('Erreur avec les données transmises !');
    }
    DB_STRUCTURE_BREVET::DB_modifier_brevet_appreciation($serie_ref, $epreuve_id, $eleve_id, 0, '');
    $ACTION = $epreuve_id != CODE_BREVET_EPREUVE_TOTAL ? '<button type="button" class="ajouter">Ajouter l\'appréciation.</button>' : '<button type="button" class="ajouter">Ajouter l\'avis de synthèse.</button>';
    exit('<div class="hc">' . $ACTION . '</div>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Cas 3 & 4 : affichage des données d'un élève (le premier si initialisation ; l'élève indiqué sinon)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Si besoin, fabriquer le formulaire avec la liste des élèves concernés : soit d'une classe (en général) soit d'une classe ET d'un sous-groupe pour un prof affecté à un groupe d'élèves
$groupe_nom = !$is_sous_groupe ? $classe_nom : $classe_nom . ' - ' . DB_STRUCTURE_COMMUN::DB_recuperer_groupe_nom($groupe_id);
if ($ACTION == 'initialiser') {
    $DB_TAB = !$is_sous_groupe ? DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', 1, 'classe', $classe_id, 'alpha') : DB_STRUCTURE_COMMUN::DB_lister_eleves_classe_et_groupe($classe_id, $groupe_id);
    if (empty($DB_TAB)) {
        exit('Aucun élève trouvé dans ce regroupement !');
    }
    $tab_eleve_id = array();
    $form_choix_eleve = '<form action="#" method="post" id="form_choix_eleve"><div><b>' . html($classe_nom) . ' :</b> <button id="go_premier_eleve" type="button" class="go_premier">Premier</button> <button id="go_precedent_eleve" type="button" class="go_precedent">Précédent</button> <select id="go_selection_eleve" name="go_selection" class="b">';
    foreach ($DB_TAB as $DB_ROW) {
        if (in_array($DB_ROW['user_id'], $tab_id_eleves_avec_notes)) {
            $form_choix_eleve .= '<option value="' . $DB_ROW['user_id'] . '">' . html($DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom']) . '</option>';
            $tab_eleve_id[] = $DB_ROW['user_id'];
        }
    }
    if (empty($tab_eleve_id)) {
        exit('Aucun élève concerné dans ce regroupement !');
    }
    $form_choix_eleve .= '</select> <button id="go_suivant_eleve" type="button" class="go_suivant">Suivant</button> <button id="go_dernier_eleve" type="button" class="go_dernier">Dernier</button>&nbsp;&nbsp;&nbsp;<button id="fermer_zone_action_eleve" type="button" class="retourner">Retour</button>';
Example #2
0
 {
   $tab_eleve_id[] = $DB_ROW['user_id'];
   $tab_eleve_td[$DB_ROW['user_id']] = html($DB_ROW['user_nom'].' '.$DB_ROW['user_prenom']);
 }
 // (re)calculer les moyennes des élèves (matières et générales), ainsi que les moyennes de classe (matières et générales).
 if( ($OBJET=='imprimer') && ($BILAN_TYPE=='bulletin') && $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES'] )
 {
   // Attention ! On doit calculer des moyennes de classe, pas de groupe !
   if(!$is_sous_groupe)
   {
     $liste_eleve_id = implode(',',$tab_eleve_id);
   }
   else
   {
     $tab_eleve_id_tmp = array();
     $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , 'classe' , $classe_id , 'alpha' /*eleves_ordre*/ );
     foreach($DB_TAB as $DB_ROW)
     {
       $tab_eleve_id_tmp[] = $DB_ROW['user_id'];
     }
     $liste_eleve_id = implode(',',$tab_eleve_id_tmp);
   }
   calculer_et_enregistrer_moyennes_eleves_bulletin( $periode_id , $classe_id , $liste_eleve_id , '' /*liste_matiere_id*/ , $_SESSION['OFFICIEL']['BULLETIN_ONLY_SOCLE'] , $_SESSION['OFFICIEL']['BULLETIN_RETROACTIF'] , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_CLASSE'] , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_GENERALE'] );
 }
 // lister les bilans officiels archivés de l'année courante, affichage du retour
 $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers( $BILAN_TYPE , $periode_id , $tab_eleve_id );
 $_SESSION['tmp_droit_voir_archive'] = array(); // 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
 foreach($tab_eleve_id as $eleve_id)
 {
   if($OBJET=='imprimer')
   {
foreach ($DB_TAB as $DB_ROW) {
    $tab_eleve_id[] = $DB_ROW['user_id'];
}
$liste_eleve_id = implode(',', $tab_eleve_id);
// Il ne s'agit pas de simplement récupérer ce qui est présent dans la table sacoche_officiel_saisie ; en effet :
// - pour un relevé de notes ou un bulletin il faut se restreindre à ce qui est vraiment évalué pour l'élève
// - pour une maîtrise du socle on peut se restreindre à ce qui contient des éléments
// Du coup le plus simple est de simuler la génération du document, sans sortie html / pdf, mais en notant au fur et à mesure ce qui manque
// (re)calculer les moyennes des élèves
if ($BILAN_TYPE == 'bulletin' && $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES']) {
    // Attention ! On doit calculer des moyennes de classe, pas de groupe !
    if (!$is_sous_groupe) {
        $liste_eleve_id_tmp = $liste_eleve_id;
    } else {
        $tab_eleve_id_tmp = array();
        $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', 1, 'classe', $classe_id, 'alpha');
        foreach ($DB_TAB as $DB_ROW) {
            $tab_eleve_id_tmp[] = $DB_ROW['user_id'];
        }
        $liste_eleve_id_tmp = implode(',', $tab_eleve_id_tmp);
    }
    calculer_et_enregistrer_moyennes_eleves_bulletin($periode_id, $classe_id, $liste_eleve_id_tmp, $liste_rubrique_id, $_SESSION['OFFICIEL']['BULLETIN_RETROACTIF'], FALSE, FALSE);
}
// Récupérer les saisies déjà effectuées pour le bilan officiel concerné
$tab_saisie = array();
// [eleve_id][rubrique_id][prof_id] => array(prof_info,appreciation,note);
$tab_moyenne_exception_matieres = $BILAN_TYPE != 'bulletin' || !$_SESSION['OFFICIEL']['BULLETIN_MOYENNE_EXCEPTION_MATIERES'] ? array() : explode(',', $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_EXCEPTION_MATIERES']);
// sert plus tard
$DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves($BILAN_TYPE, $periode_id, $liste_eleve_id, 0, FALSE, FALSE, FALSE);
foreach ($DB_TAB as $DB_ROW) {
    $prof_info = $DB_ROW['prof_id'] ? afficher_identite_initiale($DB_ROW['user_nom'], FALSE, $DB_ROW['user_prenom'], TRUE, $DB_ROW['user_genre']) : '';
Example #4
0
                   .'<th>Id. Sconet</th>'
                   .'<th>Num. Sconet</th>'
                   .'<th>Référence</th>'
                   .'<th>Login</th>'
                   .'<th>Civilité</th>'
                   .'<th>Nom</th>'
                   .'<th>Prénom</th>'
                   .'<th>Profil</th>'
                 .'</tr>'.NL.'</thead><tbody>'.NL;

  // Récupérer les données des professeurs et des personnels
  $tab_profil = array('professeur','personnel');
  $champs = 'user_id, user_id_ent, user_id_gepi, user_sconet_id, user_sconet_elenoet, user_reference, user_genre, user_nom, user_prenom, user_login, user_profil_sigle' ;
  foreach($tab_profil as $profil)
  {
    $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( $profil /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs );
    if(!empty($DB_TAB))
    {
      foreach($DB_TAB as $DB_ROW)
      {
        $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['adulte'][$DB_ROW['user_genre']]
          .$separateur.$DB_ROW['user_nom']
          .$separateur.$DB_ROW['user_prenom']
          .$separateur.$DB_ROW['user_profil_sigle']
	$form_choix_eleve .= '</select> <button id="go_suivant_eleve" type="button" class="go_suivant">Suivant</button> <button id="go_dernier_eleve" type="button" class="go_dernier">Dernier</button>&nbsp;&nbsp;&nbsp;<button id="fermer_zone_action_eleve" type="button" class="retourner">Retour</button>';
	$form_choix_eleve .= ($BILAN_TYPE=='bulletin') ? ( ($mode=='texte') ? ' <button id="change_mode" type="button" class="stats">Interface graphique</button>' : ' <button id="change_mode" type="button" class="texte">Interface détaillée</button>' ) : '' ;
	$form_choix_eleve .= '</div></form><hr />';
	$eleve_id = $tab_eleve_id[0];
	// (re)calculer les moyennes des élèves, ainsi que les moyennes de classe et générales (mises dans $_SESSION['tmp_moyenne_classe'][$periode_id][$classe_id][$matiere_id] et $_SESSION['tmp_moyenne_generale'][$periode_id][$classe_id][$eleve_id]) 
	if( ($BILAN_TYPE=='bulletin') && $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES'] )
	{
		// Attention ! On doit calculer des moyennes de classe, pas de groupe !
		if(!$is_sous_groupe)
		{
			$liste_eleve_id = implode(',',$tab_eleve_id);
		}
		else
		{
			$tab_eleve_id_tmp = array();
			$DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' , 1 /*statut*/ , 'classe' , $classe_id );
			foreach($DB_TAB as $DB_ROW)
			{
				$tab_eleve_id_tmp[] = $DB_ROW['user_id'];
			}
			$liste_eleve_id = implode(',',$tab_eleve_id_tmp);
		}
		calculer_et_enregistrer_moyennes_eleves_bulletin( $periode_id , $classe_id , $liste_eleve_id , '' /*liste_matiere_id*/ , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_CLASSE'] , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_GENERALE'] );
	}
}

// Récupérer les saisies déjà effectuées pour le bilan officiel concerné

$tab_saisie = array();	// [eleve_id][rubrique_id][prof_id] => array(prof_info,appreciation,note,info);
$DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies( $BILAN_TYPE , $periode_id , $eleve_id , 0 /*prof_id*/ );
foreach($DB_TAB as $DB_ROW)
  exit('Fiche brevet introuvable !');
}
if(!in_array($BILAN_ETAT,array('2rubrique','3mixte','4synthese')))
{
  exit('Fiche brevet interdite d\'accès pour cette action !');
}
if(!$DB_ROW['listing_user_id'])
{
  exit('Aucun élève concerné dans cette classe !');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Lister les élèves concernés : soit d'une classe (en général) soit d'une classe ET d'un sous-groupe pour un prof affecté à un groupe d'élèves
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$DB_TAB = (!$is_sous_groupe) ? DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , 'classe' , $classe_id , 'alpha' /*eleves_ordre*/ ) : DB_STRUCTURE_COMMUN::DB_lister_eleves_classe_et_groupe($classe_id,$groupe_id) ;
if(empty($DB_TAB))
{
  exit('Aucun élève trouvé dans ce regroupement !');
}
$tab_eleve_id = array();
foreach($DB_TAB as $DB_ROW)
{
  if(in_array($DB_ROW['user_id'],$tab_id_eleves_avec_notes))
  {
    $tab_eleve_id[] = $DB_ROW['user_id'];
  }
}
if(empty($tab_eleve_id))
{
  exit('Aucun élève concerné dans ce regroupement !');
      <th>Mot de passe</th>
      <th>Courriel</th>
      <th>Date sortie</th>
      <th class="nu"><q class="ajouter" title="Ajouter un élève."></q></th>
    </tr>
  </thead>
  <tbody>
    <?php 
// Lister les élèves
$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', $statut, $groupe_type, $groupe_id, 'alpha', $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>';
     <th>Courriel</th>
     <th>Date sortie</th>
     <th class="nu"><q class="ajouter" title="Ajouter un élève."></q></th>
   </tr>
 </thead>
 <tbody>
   <?php
   // Lister les élèves
   $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>';
Example #9
0
  exit('<ok>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Imprimer un cartouche d'une évaluation
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='imprimer_cartouche') && $devoir_id && $groupe_id && $date_fr && $description && $cart_detail && in_array($cart_cases_nb,array(1,5)) && $cart_contenu && $orientation && $marge_min && $couleur && $fond && in_array($eleves_ordre,array('alpha','classe')) )
{
  Form::save_choix('evaluation_cartouche');
  $with_nom    = (substr($cart_contenu,0,8)=='AVEC_nom')  ? TRUE : FALSE ;
  $with_result = (substr($cart_contenu,9)=='AVEC_result') ? TRUE : FALSE ;
  // liste des items
  $DB_TAB_COMP = DB_STRUCTURE_PROFESSEUR::DB_lister_devoir_items( $devoir_id , FALSE /*with_lien*/ , TRUE /*with_coef*/ );
  // liste des élèves
  $DB_TAB_USER = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , $groupe_type , $groupe_id , $eleves_ordre );
  // Let's go
  if(empty($DB_TAB_COMP))
  {
    exit('Aucun item n\'est associé à cette évaluation !');
  }
  if(empty($DB_TAB_USER))
  {
    exit('Aucun élève n\'est associé à cette évaluation !');
  }
  $tab_result  = array(); // tableau bi-dimensionnel [n°ligne=id_item][n°colonne=id_user]
  $tab_user_id = array(); // pas indispensable, mais plus lisible
  $tab_comp_id = array(); // pas indispensable, mais plus lisible
  $tab_user_nb_req = array(); // pour retenir le nb d'items par utilisateur : variable et utile uniquement si cartouche avec les demandes d'évaluations 
  $tab_user_comm   = array(); // pour retenir les commentaires écrits pour par élève
  // enregistrer noms prénoms des élèves
Example #10
0
$tab_types = array('d' => 'all', 'n' => 'niveau', 'c' => 'classe', 'g' => 'groupe', 'b' => 'besoin');
if (!$critere_valide || !$groupe_id || !$groupe_nom || !isset($tab_types[$groupe_type]) || !in_array($mode, array('auto', 'manuel'))) {
    exit('Erreur avec les données transmises !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Variables pour récupérer les données
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_eleve = array();
// [i] => array(eleve_id,eleve_nom,eleve_prenom)
// Tableau des langues
require CHEMIN_DOSSIER_INCLUDE . 'tableau_langues_socle.php';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération de la liste des élèves
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$champs = 'user_id, user_nom, user_prenom, eleve_langue';
$tab_eleve = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', TRUE, $tab_types[$groupe_type], $groupe_id, 'alpha', $champs);
$eleve_nb = count($tab_eleve);
if (!$eleve_nb) {
    exit('Aucun élève trouvé dans le regroupement indiqué !');
}
$tab_eleve_id = array();
$tab_eleve_langue = array();
foreach ($tab_eleve as $DB_ROW) {
    $tab_eleve_id[] = $DB_ROW['user_id'];
    $tab_eleve_langue[$DB_ROW['user_id']] = $DB_ROW['eleve_langue'];
}
$liste_eleve = implode(',', $tab_eleve_id);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Suite du code un peu en vrac avec des reprises et des adaptations de morceaux existants...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$affichage_checkbox = $_SESSION['USER_PROFIL_TYPE'] == 'professeur' && SACoche != 'webservices' ? TRUE : FALSE;
 * 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) {
}
$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, TRUE, $tab_types[$groupe_type], $groupe_id, 'alpha', $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>Login</th>
				<th>Mot de passe</th>
				<th>Date sortie</th>
				<th class="nu"><q class="ajouter" title="Ajouter un élève."></q></th>
			</tr>
		</thead>
		<tbody>
			<?php
			// Lister les élèves
			$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' ;
			}
			$DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil*/ , $statut /*statut*/ , $groupe_type , $groupe_id , 'user_id,user_id_ent,user_id_gepi,user_sconet_id,user_sconet_elenoet,user_reference,user_nom,user_prenom,user_login,user_sortie_date' );
			if(!empty($DB_TAB))
			{
				foreach($DB_TAB as $DB_ROW)
				{
					// Formater la date (dont on ne garde que le jour)
					$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	'<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>';
/**
 * recuperer_user_id_from_destinataires
 *
 * @param array $tab_destinataires
 * @return array
 */
public static function DB_recuperer_user_id_from_destinataires( $tab_destinataires )
{
  $tab_user_id = array();
  foreach($tab_destinataires as $destinataire_infos)
  {
    list( $user_profil_type , $destinataire_type , $destinataire_id ) = explode('_',$destinataire_infos);
    if($destinataire_type=='user')
    {
      $tab_user_id[$destinataire_id] = $destinataire_id;
    }
    else
    {
      $champs = ($user_profil_type!='parent') ? 'user_id AS destinataire_id' : 'parent.user_id AS destinataire_id' ;
      $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( $user_profil_type /*profil_type*/ , 1 /*statut*/ , $destinataire_type , $destinataire_id , 'alpha' /*eleves_ordre*/ , $champs ) ;
      foreach($DB_TAB as $DB_ROW)
      {
        $tab_user_id[$DB_ROW['destinataire_id']] = $DB_ROW['destinataire_id'];
      }
    }
  return $tab_user_id;
  }
}
    }
    // Mise à jour dans la base
    DB_STRUCTURE_PROFESSEUR::DB_modifier_ordre_item($devoir_id, $tab_id);
    exit('<ok>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Imprimer un cartouche d'une évaluation
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'imprimer_cartouche' && $devoir_id && $groupe_id && $date_fr && $description && $cart_detail && in_array($cart_cases_nb, array(1, 5)) && $cart_contenu && $orientation && $marge_min && $couleur && $fond && in_array($eleves_ordre, array('alpha', 'classe'))) {
    Form::save_choix('evaluation_cartouche');
    $with_nom = substr($cart_contenu, 0, 8) == 'AVEC_nom' ? TRUE : FALSE;
    $with_result = substr($cart_contenu, 9) == 'AVEC_result' ? TRUE : FALSE;
    // liste des items
    $DB_TAB_COMP = DB_STRUCTURE_PROFESSEUR::DB_lister_devoir_items($devoir_id, FALSE, TRUE);
    // liste des élèves
    $DB_TAB_USER = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', TRUE, $groupe_type, $groupe_id, $eleves_ordre);
    // Let's go
    if (empty($DB_TAB_COMP)) {
        exit('Aucun item n\'est associé à cette évaluation !');
    }
    if (empty($DB_TAB_USER)) {
        exit('Aucun élève n\'est associé à cette évaluation !');
    }
    $tab_result = array();
    // tableau bi-dimensionnel [n°ligne=id_item][n°colonne=id_user]
    $tab_user_id = array();
    // pas indispensable, mais plus lisible
    $tab_comp_id = array();
    // pas indispensable, mais plus lisible
    $tab_user_nb_req = array();
    // pour retenir le nb d'items par utilisateur : variable et utile uniquement si cartouche avec les demandes d'évaluations
     exit('Erreur : masque des noms de fichiers contenus dans l\'archive non conforme !');
 }
 // Créer ou vider le dossier temporaire
 FileSystem::creer_ou_vider_dossier($dossier_temp);
 // Dezipper dans le dossier temporaire
 $code_erreur = FileSystem::unzip(CHEMIN_DOSSIER_IMPORT . $fichier_nom, $dossier_temp, FALSE);
 FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . $fichier_nom);
 if ($code_erreur) {
     FileSystem::supprimer_dossier($dossier_temp);
     // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive.
     exit('Erreur : votre archive ZIP n\'a pas pu être ouverte (' . FileSystem::$tab_zip_error[$code_erreur] . ') !');
 }
 // Récupérer la liste des élèves et fabriquer le nom de fichier attendu correspondant à chacun
 $tab_bad = array('[sconet_id]', '[sconet_num]', '[reference]', '[nom]', '[prenom]', '[login]', '[ent_id]');
 $champs = 'user_id, user_id_ent, user_sconet_id, user_sconet_elenoet, user_reference, user_nom, user_prenom, user_login';
 $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', 1, 'all', 0, 'alpha', $champs);
 if (!empty($DB_TAB)) {
     foreach ($DB_TAB as $DB_ROW) {
         $tab_bon = array($DB_ROW['user_sconet_id'], $DB_ROW['user_sconet_elenoet'], Clean::fichier($DB_ROW['user_reference']), Clean::fichier($DB_ROW['user_nom']), Clean::fichier($DB_ROW['user_prenom']), Clean::fichier($DB_ROW['user_login']), Clean::fichier($DB_ROW['user_id_ent']));
         $tab_fichier_masque[$DB_ROW['user_id']] = Clean::fichier(str_replace($tab_bad, $tab_bon, $masque));
     }
 }
 // Pour l'affichage du retour
 $thead = '<tr><td colspan="2">Import d\'un fichier de photos zippées le ' . date('d/m/Y H:i:s') . '</td></tr>';
 $tbody = '';
 // Traiter les fichier un à un
 $tab_fichier = FileSystem::lister_contenu_dossier($dossier_temp);
 foreach ($tab_fichier as $fichier_nom) {
     // echo'*'.$fichier_nom;
     $tab_user_id = array_keys($tab_fichier_masque, $fichier_nom);
     $nb_user_find = count($tab_user_id);