} // Maintenant on complète avec les valeurs de la base $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_entree($liste_eleve, $listing_entree_id, $domaine_id = 0, $pilier_id = 0, $palier_id = 0); // 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); // ////////////////////////////////////////////////////////////////////////////////////////////////////
$affichage .= '<tr>'; foreach($tab_eleve_id as $eleve_id) { $affichage .= '<td id="U'.$eleve_id.'C'.$pilier_id.'" class="v3"></td>'; } $affichage .= '<th class="nu" colspan="2"><div class="n1">'.html($DB_ROW['rubrique_nom']).'</div></th>'; $affichage .= '</tr>'; } } $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; }