/** * Enregistrer les choix mémorisées d'un formulaire. * * @param string $page * @return void */ public static function save_choix($page) { switch($page) { case 'cartouche' : global $orientation,$couleur,$legende,$marge_min,$cart_contenu,$cart_detail; $tab_choix_new = compact('orientation','couleur','legende','marge_min','cart_contenu','cart_detail'); break; case 'grille_referentiel' : global $matiere_id,$niveau_id,$type_generique,$type_individuel,$type_synthese,$tableau_tri_objet,$tableau_tri_mode,$only_socle,$aff_coef,$aff_socle,$aff_lien,$cases_nb,$cases_largeur,$remplissage,$colonne_bilan,$colonne_vide,$orientation,$couleur,$legende,$marge_min; $tab_choix_new = compact('matiere_id','niveau_id','type_generique','type_individuel','type_synthese','only_socle','aff_coef','aff_socle','aff_lien','cases_nb','cases_largeur','remplissage','colonne_bilan','colonne_vide','orientation','couleur','legende','marge_min'); break; case 'items_matiere' : global $matiere_id,$type_individuel,$type_synthese,$type_bulletin,$aff_bilan_MS,$aff_bilan_PA,$aff_conv_sur20,$tableau_tri_objet,$tableau_tri_mode,$retroactif,$only_socle,$aff_coef,$aff_socle,$aff_lien,$aff_domaine,$aff_theme,$cases_nb,$cases_largeur,$orientation,$couleur,$legende,$marge_min,$pages_nb; $tab_choix_new = compact('matiere_id','type_individuel','type_synthese','type_bulletin','aff_bilan_MS','aff_bilan_PA','aff_conv_sur20','tableau_tri_objet','tableau_tri_mode','retroactif','only_socle','aff_coef','aff_socle','aff_lien','aff_domaine','aff_theme','cases_nb','cases_largeur','orientation','couleur','legende','marge_min','pages_nb'); break; case 'items_selection' : global $type_individuel,$type_synthese,$type_bulletin,$aff_bilan_MS,$aff_bilan_PA,$aff_conv_sur20,$tableau_tri_objet,$tableau_tri_mode,$with_coef,$retroactif,$aff_coef,$aff_socle,$aff_lien,$aff_domaine,$aff_theme,$cases_nb,$cases_largeur,$orientation,$couleur,$legende,$marge_min,$pages_nb; $tab_choix_new = compact('type_individuel','type_synthese','type_bulletin','aff_bilan_MS','aff_bilan_PA','aff_conv_sur20','tableau_tri_objet','tableau_tri_mode','with_coef','retroactif','aff_coef','aff_socle','aff_lien','aff_domaine','aff_theme','cases_nb','cases_largeur','orientation','couleur','legende','marge_min','pages_nb'); break; case 'items_multimatiere' : global $aff_bilan_MS,$aff_bilan_PA,$aff_conv_sur20,$retroactif,$only_socle,$aff_coef,$aff_socle,$aff_lien,$aff_domaine,$aff_theme,$cases_nb,$cases_largeur,$orientation,$couleur,$legende,$marge_min,$pages_nb; $tab_choix_new = compact('aff_bilan_MS','aff_bilan_PA','aff_conv_sur20','retroactif','only_socle','aff_coef','aff_socle','aff_lien','aff_domaine','aff_theme','cases_nb','cases_largeur','orientation','couleur','legende','marge_min','pages_nb'); break; case 'synthese_matiere' : global $matiere_id,$mode_synthese,$retroactif,$only_socle,$only_niveau,$aff_coef,$aff_socle,$aff_lien,$aff_start,$couleur,$legende,$marge_min; $tab_choix_new = compact('matiere_id','mode_synthese','retroactif','only_socle','only_niveau','aff_coef','aff_socle','aff_lien','aff_start','couleur','legende','marge_min'); break; case 'synthese_multimatiere' : global $retroactif,$only_socle,$only_niveau,$aff_coef,$aff_socle,$aff_lien,$aff_start,$couleur,$legende,$marge_min; $tab_choix_new = compact('retroactif','only_socle','only_niveau','aff_coef','aff_socle','aff_lien','aff_start','couleur','legende','marge_min'); break; case 'releve_socle' : global $palier_id,$only_presence,$aff_coef,$aff_socle,$aff_lien,$aff_start,$aff_socle_PA,$aff_socle_EV,$mode,$couleur,$legende,$marge_min; $tab_choix_new = compact('palier_id','only_presence','aff_coef','aff_socle','aff_lien','aff_start','aff_socle_PA','aff_socle_EV','mode','couleur','legende','marge_min'); case 'synthese_socle' : global $palier_id,$type,$mode,$couleur,$legende,$marge_min; $tab_choix_new = compact('palier_id','type','mode','couleur','legende','marge_min'); break; case 'matiere' : global $matiere_id; $tab_choix_new = compact('matiere_id'); break; case 'palier' : global $palier_id; $tab_choix_new = compact('palier_id'); break; case 'validation_socle_item' : global $palier_id,$mode; $tab_choix_new = compact('palier_id','mode'); break; default : $tab_choix_new = array(); } // Récupération du contenu du "cookie", surchargé avec les choix effectués Formulaire::load_choix_memo(); Formulaire::$tab_choix = array_merge( Formulaire::$tab_choix , $tab_choix_new ); /* Remarque : il y a un problème de serialize avec les type float : voir http://fr2.php.net/manual/fr/function.serialize.php#85988 Dans ce cas il faut remplacer serialize(Formulaire::$tab_choix) par preg_replace( '/d:([0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?);/e', "'d:'.(round($1,9)).';'", serialize(Formulaire::$tab_choix) ); */ Ecrire_Fichier(Formulaire::$fichier_cookie,serialize(Formulaire::$tab_choix)); }
extract($tab); // $eleve_id $eleve_nom $eleve_prenom $eleve_id_gepi // Si cet élève a été évalué... if(isset($tab_eval[$eleve_id])) { $note = ($tab_moyenne_scores_eleve[$matiere_id][$eleve_id] !== false) ? sprintf("%04.1f",$tab_moyenne_scores_eleve[$matiere_id][$eleve_id]/5) : '-' ; $appreciation = ($tab_pourcentage_acquis_eleve[$matiere_id][$eleve_id] !== false) ? $tab_pourcentage_acquis_eleve[$matiere_id][$eleve_id].'% d\'items acquis ('.$tab_infos_acquis_eleve[$matiere_id][$eleve_id].')' : '-' ; $bulletin_body .= '<tr><th>'.html($eleve_nom.' '.$eleve_prenom).'</th><td>'.$note.'</td><td>'.$appreciation.'</td></tr>'."\r\n"; $note = str_replace('.',',',$note); // Pour GEPI je remplace le point décimal par une virgule sinon le tableur convertit en date... $tab_bulletin_csv_gepi['note_appreciation'] .= $eleve_id_gepi.';'.$note.';'.$appreciation."\r\n"; $tab_bulletin_csv_gepi['note'] .= $eleve_id_gepi.';'.$note."\r\n"; $tab_bulletin_csv_gepi['appreciation'] .= $eleve_id_gepi.';'.'' .';'.$appreciation."\r\n"; } } $bulletin_head = '<thead><tr><th>Elève</th><th>Moyenne '.$info_ponderation_complete.' sur 20<br />(des scores d\'acquisitions)</th><th>Élément d\'appréciation<br />(pourcentage d\'items acquis)</th></tr></thead>'."\r\n"; $bulletin_body = '<tbody>'."\r\n".$bulletin_body.'</tbody>'."\r\n"; $bulletin_foot = '<tfoot><tr><th>Moyenne '.$info_ponderation_complete.' sur 20</th><th>'.sprintf("%04.1f",$moyenne_moyenne_scores/5).'</th><th>'.$moyenne_pourcentage_acquis.'% d\'items acquis</th></tr></tfoot>'."\r\n"; $bulletin_html = '<h1>Bilan disciplinaire</h1>'; $bulletin_html .= '<h2>'.html($matiere_nom.' - '.$groupe_nom).'</h2>'; $bulletin_html .= '<h2>Du '.$date_debut.' au '.$date_fin.$date_complement.'</h2>'; $bulletin_html .= '<h2>Tableau de notes sur 20</h2>'; $bulletin_html .= '<table id="export20" class="hsort">'."\r\n".$bulletin_head.$bulletin_foot.$bulletin_body.'</table>'."\r\n"; $bulletin_html .= '<script type="text/javascript">$("#export20").tablesorter({ headers:{2:{sorter:false}} });</script>'; // On enregistre la sortie HTML et CSV Ecrire_Fichier($dossier.str_replace('<REPLACE>','bulletin',$fichier_nom).'.html',$bulletin_html); foreach($tab_bulletin_csv_gepi as $format => $bulletin_csv_gepi_contenu) { Ecrire_Fichier($dossier.str_replace('<REPLACE>','bulletin_'.$format,$fichier_nom).'.csv',utf8_decode($bulletin_csv_gepi_contenu)); } } ?>
if($uai) { // Vérifier que le n°UAI est disponible if( DB_WEBMESTRE_tester_structure_UAI($uai) ) { exit('Erreur : numéro UAI déjà utilisé !'); } } // Insérer l'enregistrement dans la base du webmestre // Créer le fichier de connexion de la base de données de la structure // Créer la base de données de la structure // Créer un utilisateur pour la base de données de la structure et lui attribuer ses droits $base_id = DB_WEBMESTRE_ajouter_structure($base_id=0,$geo_id,$uai,$localisation,$denomination,$contact_nom,$contact_prenom,$contact_courriel); // Créer un dossier pour accueillir les vignettes verticales avec l'identité des élèves Creer_Dossier('./__tmp/badge/'.$base_id); Ecrire_Fichier('./__tmp/badge/'.$base_id.'/index.htm','Circulez, il n\'y a rien à voir par ici !'); // Lancer les requêtes pour créer et remplir les tables charger_parametres_mysql_supplementaires($base_id); DB_STRUCTURE_creer_remplir_tables_structure('./_sql/structure/'); // Il est arrivé que la fonction DB_STRUCTURE_modifier_parametres() retourne une erreur disant que la table n'existe pas. // Comme si les requêtes de DB_STRUCTURE_creer_remplir_tables_structure() étaient en cache, et pas encore toutes passées (parcequ'au final, quand on va voir la base, toutes les tables sont bien là). // Est-ce que c'est possible au vu du fonctionnement de la classe de connexion ? Et, bien sûr, y a-t-il quelque chose à faire pour éviter ce problème ? // En attendant une réponse de SebR, j'ai mis ce sleep(1)... sans trop savoir si cela pouvait aider... @sleep(1); // Personnaliser certains paramètres de la structure $tab_parametres = array(); $tab_parametres['version_base'] = VERSION_BASE; $tab_parametres['uai'] = $uai; $tab_parametres['denomination'] = $denomination; DB_STRUCTURE_modifier_parametres($tab_parametres); // Insérer le compte administrateur dans la base de cette structure
$tab_bad[] = '1A'; $tab_bon[] = '1 acquise ;'; $tab_bad[] = 'A'; $tab_bon[] = ' acquises ;'; // pour str_replace($tab_bad,$tab_bon,$tab_infos_acquis_eleve[$matiere_id][$eleve_id]) */ $bulletin_body = ''; $bulletin_csv_gepi = 'GEPI_IDENTIFIANT;NOTE;APPRECIATION'."\r\n"; // Ajout du préfixe 'GEPI_' pour éviter un bug avec M$ Excel « SYLK : Format de fichier non valide » (http://support.microsoft.com/kb/323626/fr) // Pour chaque élève... foreach($tab_eleve as $tab) { extract($tab); // $eleve_id $eleve_nom $eleve_prenom $eleve_id_gepi $note = ($tab_moyenne_scores_eleve[$matiere_id][$eleve_id] !== false) ? sprintf("%04.1f",$tab_moyenne_scores_eleve[$matiere_id][$eleve_id]/5) : '-' ; $appreciation = ($tab_pourcentage_acquis_eleve[$matiere_id][$eleve_id] !== false) ? $tab_pourcentage_acquis_eleve[$matiere_id][$eleve_id].'% d\'items acquis ('.$tab_infos_acquis_eleve[$matiere_id][$eleve_id].')' : '-' ; $bulletin_body .= '<tr><th>'.html($eleve_nom.' '.$eleve_prenom).'</th><td>'.$note.'</td><td>'.$appreciation.'</td></tr>'."\r\n"; // Pour gépi je remplace le point décimal par une virgule sinon le tableur convertit en date... $bulletin_csv_gepi .= $eleve_id_gepi.';'.str_replace('.',',',$note).';'.$appreciation."\r\n"; } $bulletin_head = '<thead><tr><th>Elève</th><th>Moyenne pondérée sur 20<br />(des scores d\'acquisitions)</th><th>Élément d\'appréciation<br />(pourcentage d\'items acquis)</th></tr></thead>'."\r\n"; $bulletin_body = '<tbody>'."\r\n".$bulletin_body.'</tbody>'."\r\n"; $bulletin_foot = '<tfoot><tr><th>Moyenne sur 20</th><th>'.sprintf("%04.1f",$moyenne_moyenne_scores/5).'</th><th>'.$moyenne_pourcentage_acquis.'% d\'items acquis</th></tr></tfoot>'."\r\n"; $bulletin_html = '<h1>Bilan disciplinaire</h1>'; $bulletin_html .= '<h2>'.html($matiere_nom.' - '.$groupe_nom).'</h2>'; $bulletin_html .= '<h2>Du '.$date_debut.' au '.$date_fin.$date_complement.'</h2>'; $bulletin_html .= '<h2>Tableau de notes sur 20</h2>'; $bulletin_html .= '<table id="export20">'."\r\n".$bulletin_head.$bulletin_foot.$bulletin_body.'</table>'."\r\n"; $bulletin_html .= '<script type="text/javascript">$("#export20").tablesorter({ headers:{2:{sorter:false}} });</script>'; // On enregistre la sortie HTML et CSV Ecrire_Fichier($dossier.$fichier_lien.'_bulletin.html',$bulletin_html); Ecrire_Fichier($dossier.$fichier_lien.'_bulletin.csv',utf8_decode($bulletin_csv_gepi)); } ?>
if(is_file($fichier_mysql_config)) { require_once($fichier_mysql_config); // DEBUT A compter du 02/08/2010, déplacement du port dans le fichier créé à l'installation. [à retirer dans quelques mois] if(!defined('SACOCHE_'.$PATCH.'_BD_PORT')) { $tab_fichier = scandir($CHEMIN_MYSQL); $bad = array( "define('SACOCHE_STRUCTURE_BD_NAME" , "define('SACOCHE_WEBMESTRE_BD_NAME" ); $bon = array( "define('SACOCHE_STRUCTURE_BD_PORT','3306'); // Port de connexion\r\ndefine('SACOCHE_STRUCTURE_BD_NAME" , "define('SACOCHE_WEBMESTRE_BD_PORT','3306'); // Port de connexion\r\ndefine('SACOCHE_WEBMESTRE_BD_NAME" ); foreach($tab_fichier as $fichier) { if( ($fichier!='.') && ($fichier!='..') ) { $fichier_contenu = file_get_contents($CHEMIN_MYSQL.'/'.$fichier); $fichier_contenu = str_replace($bad,$bon,$fichier_contenu); Ecrire_Fichier($CHEMIN_MYSQL.'/'.$fichier,$fichier_contenu); } } define('SACOCHE_'.$PATCH.'_BD_PORT','3306'); // Port de connexion } // FIN A compter du 02/08/2010, déplacement du port dans le fichier créé à l'installation. [à retirer dans quelques mois] require_once($fichier_class_config); } elseif($PAGE!='public_installation') { affich_message_exit($titre='Paramètres BDD manquants',$contenu='Paramètres de connexion à la base de données manquants.<br /><a href="./index.php?page=public_installation">Procédure d\'installation du site SACoche.</a>'); } // DEBUT A compter du 05/12/2010, ajout de paramètres dans le fichier de constantes pour paramétrer cURL. [à retirer dans quelques mois] if(!defined('SERVEUR_PROXY_USED') && function_exists('enregistrer_informations_session')) { fabriquer_fichier_hebergeur_info( array('SERVEUR_PROXY_USED'=>'','SERVEUR_PROXY_NAME'=>'','SERVEUR_PROXY_PORT'=>'','SERVEUR_PROXY_TYPE'=>'','SERVEUR_PROXY_AUTH_USED'=>'','SERVEUR_PROXY_AUTH_METHOD'=>'','SERVEUR_PROXY_AUTH_USER'=>'','SERVEUR_PROXY_AUTH_PASS'=>'') );
} $releve_html .= '</tr>'."\r\n"; } } } } } } $releve_html .= '</table><p />'; } // Chemins d'enregistrement $dossier = './__tmp/export/'; $fichier_lien = 'grille_niveau_etabl'.$_SESSION['BASE'].'_user'.$_SESSION['USER_ID'].'_'.time(); // On enregistre les sorties HTML et PDF Ecrire_Fichier($dossier.$fichier_lien.'.html',$releve_html); $releve_pdf->Output($dossier.$fichier_lien.'.pdf','F'); // Affichage du résultat if($_SESSION['USER_PROFIL']=='eleve') { echo'<ul class="puce">'; echo'<li><label class="alerte"><a class="lien_ext" href="'.$dossier.$fichier_lien.'.pdf">Téléchargez au format PDF le fichier généré avec la grille de compétences (selon les options choisies).</a></label></li>'; echo'</ul><p />'; echo $releve_html; } else { echo'<ul class="puce">'; echo'<li><a class="lien_ext" href="./releve-html.php?fichier='.$fichier_lien.'">Grille au format HTML (bulles d\'information, liens...).</a></li>'; echo'<li><a class="lien_ext" href="'.$dossier.$fichier_lien.'.pdf">Grille au format PDF (imprimable).</a></li>'; echo'</ul><p />';
function deleteBOM($file) { $fcontenu = file_get_contents($file); if (substr($fcontenu,0,3) == "\xEF\xBB\xBF") // Ne pas utiliser mb_substr() sinon ça ne fonctionne pas { Ecrire_Fichier($file, substr($fcontenu,3)); // Ne pas utiliser mb_substr() sinon ça ne fonctionne pas } }
$releve_HTML .= '<table class="bilan" style="width:900px;margin-bottom:0"><tbody>'; $releve_HTML .= '<tr><th style="width:540px">'.html($tab_matiere[$matiere_id]).'</th>'.affich_barre_synthese_html($width=360,$tab_infos_matiere['total'],$total).'</tr>'; $releve_HTML .= '</tbody></table>'; // Utilisation de 2 tableaux sinon bugs constatés lors de l'affichage des détails... $releve_HTML .= '<table class="bilan" style="width:900px;margin-top:0"><tbody>'; // On passe en revue les synthèses... unset($tab_infos_matiere['total']); foreach($tab_infos_matiere as $synthese_ref => $tab_infos_synthese) { $tab_infos_synthese = array_filter($tab_infos_synthese,'non_zero'); // Retirer les valeurs nulles $total = array_sum($tab_infos_synthese) ; // La somme ne peut être nulle (sinon la matière ne se serait pas affichée) $releve_PDF->bilan_synthese_ligne_synthese($tab_synthese[$synthese_ref],$tab_infos_synthese,$total); $releve_HTML .= '<tr>'.affich_barre_synthese_html($width=180,$tab_infos_synthese,$total).'<td style="width:720px">'; $releve_HTML .= '<a href="#" id="to_'.$synthese_ref.'_'.$eleve_id.'"><img src="./_img/toggle_plus.gif" alt="" title="Voir / masquer le détail des items associés." class="toggle" /></a> '; $releve_HTML .= html($tab_synthese[$synthese_ref]); $releve_HTML .= '<div id="'.$synthese_ref.'_'.$eleve_id.'" class="hide">'.implode('<br />',$tab_infos_detail_synthese[$eleve_id][$synthese_ref]).'</div>'; $releve_HTML .= '</td></tr>'; } $releve_HTML .= '</tbody></table>'; } if($legende=='oui') { $releve_PDF->bilan_synthese_legende($format); $releve_HTML .= affich_legende_html($note_Lomer=FALSE,$etat_bilan=TRUE); } } } // On enregistre les sorties HTML et PDF Ecrire_Fichier($dossier.$fichier_nom.'.html',$releve_HTML); $releve_PDF->Output($dossier.$fichier_nom.'.pdf','F'); ?>
/** * Sauver un cookie avec des options de mise en page pdf * * @param string $page * @return void */ function save_cookie_select($page) { switch($page) { case 'cartouche' : global $orientation,$couleur,$legende,$marge_min,$cart_contenu,$cart_detail; $tab_cookie = compact('orientation','couleur','legende','marge_min','cart_contenu','cart_detail'); break; case 'grille_referentiel' : global $orientation,$couleur,$legende,$marge_min,$cases_nb,$cases_largeur,$colonne_vide; $tab_cookie = compact('orientation','couleur','legende','marge_min','cases_nb','cases_largeur','colonne_vide'); break; case 'matiere' : global $matiere_id; $tab_cookie = compact('matiere_id'); break; case 'palier' : global $palier_id; $tab_cookie = compact('palier_id'); break; case 'releve_synthese' : global $couleur,$legende; $tab_cookie = compact('couleur','legende'); break; case 'releve_items' : global $orientation,$couleur,$legende,$marge_min,$cases_nb,$cases_largeur; $tab_cookie = compact('orientation','couleur','legende','marge_min','cases_nb','cases_largeur'); break; } // Si le dossier n'existe pas, on le créé (possible car au début tous les Cookies des établissements étaient dans un même dossier commun). $dossier_nom = './__tmp/cookie/'.$_SESSION['BASE']; if(!is_dir($dossier_nom)) { Creer_Dossier($dossier_nom); Ecrire_Fichier($dossier_nom.'/index.htm','Circulez, il n\'y a rien à voir par ici !'); } /* Remarque : il y a un problème de serialize avec les type float : voir http://fr2.php.net/manual/fr/function.serialize.php#85988 Dans ce cas il faut remplacer serialize($tab_cookie) par preg_replace( '/d:([0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?);/e', "'d:'.(round($1,9)).';'", serialize($tab_cookie) ); */ $filename = $dossier_nom.'/user'.$_SESSION['USER_ID'].'_'.$page.'.txt'; Ecrire_Fichier($filename,serialize($tab_cookie)); }