// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - elseif( ($action=='creer') && $groupe_id && (isset($tab_types[$groupe_type])) && in_array($qui,$tab_qui) && $date && $date_visible && $date_autoeval && $info && in_array($suite,$tab_suite) && $nb_demandes && $nb_users && $nb_items ) { // Dans le cas d'une évaluation sur une liste d'élèves sélectionnés, if($qui=='select') { // Commencer par créer un nouveau groupe de type "eval", utilisé uniquement pour cette évaluation (c'est transparent pour le professeur) ; y associe automatiquement le prof, en responsable du groupe $groupe_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_groupe_par_prof('eval','',0); } // Insérer l'enregistrement de l'évaluation $date_mysql = convert_date_french_to_mysql($date); $date_visible_mysql = convert_date_french_to_mysql($date_visible); $date_autoeval_mysql = convert_date_french_to_mysql($date_autoeval); $doc_sujet = ''; $doc_corrige = ''; $devoir_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir($_SESSION['USER_ID'],$groupe_id,$date_mysql,$info,$date_visible_mysql,$date_autoeval_mysql,$doc_sujet,$doc_corrige); // Dans le cas d'une évaluation sur une liste d'élèves sélectionnés, // Affecter tous les élèves choisis if($qui=='select') { DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_user($devoir_id,$groupe_id,$tab_user_id,'creer'); } // Insérer les enregistrements des items de l'évaluation DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_item($devoir_id,$tab_item_id,'creer'); // Insérer les scores 'REQ' pour indiquer au prof les demandes dans le tableau de saisie $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); }
$presence_devoir = TRUE; } else { // Si absence d'identifiants transmis, alors soit le devoir n'existe pas, soit il existe et c'est la 1ère saisie d'une série $DB_ROW = DB_STRUCTURE_PROFESSEUR::DB_recuperer_devoir_ponctuel_prof_by_date($_SESSION['USER_ID'], TODAY_MYSQL, $description); if (!empty($DB_ROW)) { $presence_devoir = TRUE; $devoir_id = $DB_ROW['devoir_id']; $groupe_id = $DB_ROW['groupe_id']; } } // Si pas de devoir, il faut l'ajouter if (!$presence_devoir) { // Commencer par créer un nouveau groupe de type "eval", utilisé uniquement pour cette évaluation (c'est transparent pour le professeur) ; y associe automatiquement le prof, en responsable du groupe $groupe_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_groupe_par_prof('eval', '', 0); // Insèrer l'enregistrement de l'évaluation $devoir_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir($_SESSION['USER_ID'], $groupe_id, TODAY_MYSQL, $description, TODAY_MYSQL, NULL, '', '', 'alpha'); } // Maintenant on recupère le contenu de la base déjà enregistré pour le comparer avec la saisie envoyée. $presence_item = FALSE; $presence_eleve = FALSE; $presence_saisie = FALSE; $DB_TAB = $presence_devoir ? DB_STRUCTURE_PROFESSEUR::DB_lister_devoir_saisies($devoir_id, TRUE) : array(); foreach ($DB_TAB as $DB_ROW) { if ($DB_ROW['item_id'] == $item_id) { $presence_item = TRUE; } if ($DB_ROW['eleve_id'] == $eleve_id) { $presence_eleve = TRUE; } if ($DB_ROW['item_id'] == $item_id && $DB_ROW['eleve_id'] == $eleve_id) { $presence_saisie = $DB_ROW['saisie_note'];
if( ($action=='creer') && in_array($qui,$tab_qui) && ( ($qui=='select') || ( (isset($tab_types[$groupe_type])) && $groupe_id ) ) && $date && $date_visible && $date_autoeval && $description && in_array($suite,$tab_suite) && $nb_demandes && $nb_users && $nb_items ) { $date_mysql = convert_date_french_to_mysql($date); $date_visible_mysql = convert_date_french_to_mysql($date_visible); $date_autoeval_mysql = convert_date_french_to_mysql($date_autoeval); // Dans le cas d'une évaluation sur une liste d'élèves sélectionnés, if($qui=='select') { // Commencer par créer un nouveau groupe de type "eval", utilisé uniquement pour cette évaluation (c'est transparent pour le professeur) ; y associe automatiquement le prof, en responsable du groupe $groupe_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_groupe_par_prof('eval','',0); } // Insérer l'enregistrement de l'évaluation $doc_sujet = ''; $doc_corrige = ''; $devoir_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir( $_SESSION['USER_ID'] , $groupe_id , $date_mysql , $description , $date_visible_mysql , $date_autoeval_mysql , $doc_sujet , $doc_corrige , $eleves_ordre='alpha' ); // Affecter tous les élèves choisis (dans le cas d'une évaluation sur une liste d'élèves sélectionnés) if($qui=='select') { DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_eleve($devoir_id,$groupe_id,$tab_user_id,'creer'); } // Affecter tous les profs choisis if($nb_profs) { DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_prof( $devoir_id , $tab_profs , 'creer' ); } // Insérer les enregistrements des items de l'évaluation DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_item($devoir_id,$tab_item_id,'creer'); // Insérer les scores 'REQ' pour indiquer au prof les demandes dans le tableau de saisie $tab_item_for_user = array(); $info = 'À saisir ('.afficher_identite_initiale($_SESSION['USER_NOM'],FALSE,$_SESSION['USER_PRENOM'],TRUE).')';
} // Tester les profs, mais plus leur appartenance au groupe (pour qu'un prof puisse accéder à l'éval même s'il n'a pas le groupe, même si on duplique une évaluation pour un autre groupe...) [absurde dans le cas d'élèves sélectionnés] if(count($tab_profs)) { if(!in_array($_SESSION['USER_ID'],$tab_profs)) { exit('Erreur : absent de la liste des professeurs !'); } } if($type=='selection') { // Commencer par créer un nouveau groupe de type "eval", utilisé uniquement pour cette évaluation (c'est transparent pour le professeur) ; y associe automatiquement le prof, en responsable du groupe $groupe_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_groupe_par_prof($groupe_type,'',0); } // Insèrer l'enregistrement de l'évaluation $devoir_id2 = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir($_SESSION['USER_ID'],$groupe_id,$date_mysql,$description,$date_visible_mysql,$date_autoeval_mysql,$doc_sujet,$doc_corrige,$tab_profs); if($type=='selection') { // Affecter tous les élèves choisis DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_user($devoir_id2,$groupe_id,$tab_eleves,'creer'); } // Insérer les enregistrements des items de l'évaluation DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_item($devoir_id2,$tab_items,'dupliquer',$devoir_id); // Afficher le retour $date_visible = ($date_visible==$date) ? 'identique' : $date_visible ; $date_autoeval = ($date_autoeval=='00/00/0000') ? 'sans objet' : $date_autoeval ; $ref = $devoir_id2.'_'.strtoupper($groupe_type{0}).$groupe_id; $cs = ($nb_items>1) ? 's' : ''; $us = ($nb_eleves>1) ? 's' : ''; $profs_nombre = count($tab_profs) ? count($tab_profs).' profs' : 'moi seul' ; $image_sujet = ($doc_sujet) ? '<a href="'.$dossier_devoir.$doc_sujet.'" target="_blank"><img alt="sujet" src="./_img/document/sujet_oui.png" title="Sujet disponible." /></a>' : '<img alt="sujet" src="./_img/document/sujet_non.png" />' ;
$maxi_stamp = strtotime("+3 month"); $maxi_visible_stamp = strtotime("+10 month"); if( ($date_stamp<$mini_stamp) || ($date_visible_stamp<$mini_stamp) || ($date_stamp>$maxi_stamp) || ($date_visible_stamp>$maxi_visible_stamp) ) { exit('Erreur : date trop éloignée !'); } // Tester les profs, mais plus leur appartenance au groupe (pour qu'un prof puisse accéder à l'éval même s'il n'a pas le groupe, même si on duplique une évaluation pour un autre groupe...) if(count($tab_profs)) { if(!in_array($_SESSION['USER_ID'],$tab_profs)) { exit('Erreur : absent de la liste des professeurs !'); } } // Insérer l'enregistrement de l'évaluation $devoir_id2 = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir($_SESSION['USER_ID'],$groupe_id,$date_mysql,$info,$date_visible_mysql,$tab_profs); // Insérer les enregistrements des items de l'évaluation DB_STRUCTURE_PROFESSEUR::DB_modifier_liaison_devoir_item($devoir_id2,$tab_items,'dupliquer',$devoir_id); // Afficher le retour $date_visible = ($date==$date_visible) ? 'identique' : $date_visible; $ref = $devoir_id2.'_'.strtoupper($groupe_type{0}).$groupe_id; $s = ($nb_items>1) ? 's' : ''; $profs_nombre = count($tab_profs) ? count($tab_profs).' profs' : 'moi seul' ; echo'<td><i>'.html($date_mysql).'</i>'.html($date).'</td>'; echo'<td>'.html($date_visible).'</td>'; echo'<td>{{GROUPE_NOM}}</td>'; echo'<td>'.html($info).'</td>'; echo'<td>'.$nb_items.' item'.$s.'</td>'; echo'<td>'.$profs_nombre.'</td>'; echo'<td class="nu" id="devoir_'.$ref.'">'; echo '<q class="modifier" title="Modifier cette évaluation (date, description, ...)."></q>';
// Si absence d'identifiants transmis, alors soit le devoir n'existe pas, soit il existe et c'est la 1ère saisie d'une série $DB_ROW = DB_STRUCTURE_PROFESSEUR::DB_recuperer_devoir_ponctuel_prof_by_date( $_SESSION['USER_ID'] , TODAY_MYSQL , $description ); if(!empty($DB_ROW)) { $presence_devoir = TRUE; $devoir_id = $DB_ROW['devoir_id']; $groupe_id = $DB_ROW['groupe_id']; } } // Si pas de devoir, il faut l'ajouter if(!$presence_devoir) { // Commencer par créer un nouveau groupe de type "eval", utilisé uniquement pour cette évaluation (c'est transparent pour le professeur) ; y associe automatiquement le prof, en responsable du groupe $groupe_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_groupe_par_prof( 'eval' /*groupe_type*/ , '' /*groupe_nom*/ , 0 /*niveau_id*/ ); // Insèrer l'enregistrement de l'évaluation $devoir_id = DB_STRUCTURE_PROFESSEUR::DB_ajouter_devoir( $_SESSION['USER_ID'] , $groupe_id , TODAY_MYSQL , $description , TODAY_MYSQL /*date_visible_mysql*/ ,NULL /*date_autoeval_mysql*/ , '' /*doc_sujet*/ , '' /*doc_corrige*/ , 'alpha' /*eleves_ordre*/ ); } // Maintenant on recupère le contenu de la base déjà enregistré pour le comparer avec la saisie envoyée. $presence_item = FALSE; $presence_eleve = FALSE; $presence_saisie = FALSE; $DB_TAB = ($presence_devoir) ? DB_STRUCTURE_PROFESSEUR::DB_lister_devoir_saisies( $devoir_id , TRUE /*with_REQ*/ ) : array() ; foreach($DB_TAB as $DB_ROW) { if($DB_ROW['item_id']==$item_id) { $presence_item = TRUE ; } if($DB_ROW['eleve_id']==$eleve_id) { $presence_eleve = TRUE ;