$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));
    // On archive les nouveaux identifiants dans un fichier pdf (classe fpdf + script étiquettes)
    $pdf = new PDF_Label(array('paper-size' => 'A4', 'metric' => 'mm', 'marginLeft' => 5, 'marginTop' => 5, 'NX' => 3, 'NY' => 8, 'SpaceX' => 7, 'SpaceY' => 5, 'width' => 60, 'height' => 30, 'font-size' => 11));
    $pdf->AddFont('Arial', '', 'arial.php');
    $pdf->SetFont('Arial');
    // Permet de mieux distinguer les "l 1" etc. que la police Times ou Courrier
    $pdf->AddPage();
    $pdf->SetFillColor(245, 245, 245);
    $pdf->SetDrawColor(145, 145, 145);
    sort($fcontenu_pdf_tab);
    foreach ($fcontenu_pdf_tab as $text) {
        $pdf->Add_Label(To::pdf($text));
    }
    FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_LOGINPASS . $fnom . '.pdf', $pdf);
}
Esempio n. 2
0
 * 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 !');
}
/**
 * Code inclus commun aux pages
 * [./pages/releve_synthese_matiere.ajax.php]
 * [./pages/releve_synthese_multimatiere.ajax.php]
 * [./_inc/code_officiel_***.php]
 */
Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE);
// Chemins d'enregistrement
$fichier_nom = $make_action != 'imprimer' ? 'releve_synthese_' . $synthese_modele . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_' . $BILAN_TYPE . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea();
// Initialisation de tableaux
$tab_item = array();
// [item_id] => array(item_ref,item_nom,item_coef,item_cart,item_socle,item_lien,matiere_id,calcul_methode,calcul_limite,calcul_retroactif,synthese_ref);
$tab_liste_item = array();
// [i] => item_id
$tab_eleve_infos = array();
// [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance)
$tab_matiere = array();
// [matiere_id] => array(matiere_nom,matiere_nb_demandes)
$tab_synthese = array();
// [synthese_ref] => synthese_nom
$tab_eval = array();
// [eleve_id][item_id][devoir] => array(note,date,info) On utilise un tableau multidimensionnel vu qu'on ne sait pas à l'avance combien il y a d'évaluations pour un élève et un item donnés.
// Initialisation de variables
if ($make_html || $make_pdf || $make_graph) {
{
  $tab_parametres = array();
  $tab_parametres['officiel_tampon_signature'] = $tampon_signature;
  DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
  // On modifie aussi la session
  $_SESSION['OFFICIEL']['TAMPON_SIGNATURE'] = $tampon_signature ;
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement du formulaire form_tampon (upload d'un fichier image)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='upload_signature') && ($user_id>=0) && ($user_texte!='') )
{
  $fichier_nom = 'signature_'.$_SESSION['BASE'].'_'.$user_id.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.<EXT>';
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('gif','jpg','jpeg','png') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , 100 /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
    exit('Erreur : '.$result);
  }
  // vérifier la conformité du fichier image, récupérer les infos le concernant
  $tab_infos = @getimagesize(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name);
  if($tab_infos==FALSE)
  {
    FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name);
    exit('Erreur : le fichier image ne semble pas valide !');
  }
  list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos;
  $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants
  // vérifier le type 
  // Pour l'affichage du retour
  $thead = '<tr><td colspan="2">Vérification des droits en écriture - '.date('d/m/Y H:i:s').'</td></tr>';
  $tbody = '';
  // Dossiers
  ksort($_SESSION['tmp']['dossier']);
  foreach($_SESSION['tmp']['dossier'] as $dossier => $tab)
  {
    $dossier = ($dossier) ? '.'.$dossier : '.'.DS ;
    $tbody .= (@is_writable($dossier)) ? '<tr><td class="v">Dossier accessible en écriture</td><td>'.$dossier.'</td></tr>' : '<tr><td class="r">Dossier aux droits insuffisants</td><td>'.$dossier.'</td></tr>' ;
  }
  // Fichiers
  ksort($_SESSION['tmp']['fichier']);
  foreach($_SESSION['tmp']['fichier'] as $fichier => $tab)
  {
    $fichier = '.'.$fichier;
    $tbody .= (@is_writable($fichier)) ? '<tr><td class="v">Fichier accessible en écriture</td><td>'.$fichier.'</td></tr>' : '<tr><td class="r">Fichier aux droits insuffisants</td><td>'.$fichier.'</td></tr>' ;
  }
  // Enregistrement du rapport
  $fichier_nom = 'rapport_droits_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody );
  exit(']¤['.URL_DIR_EXPORT.$fichier_nom);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');

?>
            $releve_HTML_body .= '<td class="nu2"></td>';
            foreach ($tab as $socle_id => $socle_nom) {
                $releve_HTML_body .= Html::td_validation('td', $tab_user_entree[$eleve_id][$socle_id], FALSE, $tab_user_pilier[$eleve_id][$pilier_id]['etat']);
            }
        }
        $releve_HTML_body .= '</tr>' . NL;
        $releve_PDF->validation_eleve($eleve_id, $eleve_nom, $eleve_prenom, $tab_user_pilier, $tab_user_entree, $tab_pilier, $tab_socle, $drapeau_langue);
    }
}
$releve_HTML .= $affichage_checkbox ? '<form id="form_synthese" action="#" method="post">' . NL : '';
$releve_HTML .= '<table class="bilan"><thead>' . NL . $releve_HTML_head . '</thead><tbody>' . NL . $releve_HTML_body . '</tbody></table>' . NL;
$releve_HTML .= $affichage_checkbox ? HtmlForm::afficher_synthese_exploitation('eleves') . '</form>' . NL : '';
$releve_HTML .= Html::legende(FALSE, FALSE, FALSE, FALSE, $type == 'pourcentage', $type == 'validation', FALSE);
$releve_PDF->legende($type);
// Chemins d'enregistrement
$fichier = 'releve_socle_synthese_' . Clean::fichier(substr($palier_nom, 0, strpos($palier_nom, ' ('))) . '_' . Clean::fichier($groupe_nom) . '_' . $type . '_' . fabriquer_fin_nom_fichier__date_et_alea();
// On enregistre les sorties HTML et PDF
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier . '.html', $releve_HTML);
FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $fichier . '.pdf', $releve_PDF);
// Affichage du résultat
if ($affichage_direct) {
    echo '<hr />' . NL;
    echo '<ul class="puce">' . NL;
    echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL;
    echo '</ul>' . NL;
    echo $releve_HTML;
} else {
    echo '<ul class="puce">' . NL;
    echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL;
    echo '<li><a target="_blank" href="./releve_html.php?fichier=' . $fichier . '"><span class="file file_htm">Explorer / Détailler (format <em>html</em>).</span></a></li>' . NL;
    echo '</ul>' . NL;
    // On modifie aussi la session
    $_SESSION['ETABLISSEMENT']['DENOMINATION'] = $etablissement_denomination;
    $_SESSION['ETABLISSEMENT']['ADRESSE1'] = $etablissement_adresse1;
    $_SESSION['ETABLISSEMENT']['ADRESSE2'] = $etablissement_adresse2;
    $_SESSION['ETABLISSEMENT']['ADRESSE3'] = $etablissement_adresse3;
    $_SESSION['ETABLISSEMENT']['TELEPHONE'] = $etablissement_telephone;
    $_SESSION['ETABLISSEMENT']['FAX'] = $etablissement_fax;
    $_SESSION['ETABLISSEMENT']['COURRIEL'] = $etablissement_courriel;
    $_SESSION['ETABLISSEMENT']['URL'] = $etablissement_url;
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement du formulaire form_logo (upload d'un fichier image)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'upload_logo') {
    $fichier_nom = 'logo_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.<EXT>';
    $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, array('gif', 'jpg', 'jpeg', 'png'), NULL, 100, NULL);
    if ($result !== TRUE) {
        exit('Erreur : ' . $result);
    }
    // vérifier la conformité du fichier image, récupérer les infos le concernant
    $tab_infos = @getimagesize(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
    if ($tab_infos == FALSE) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
        exit('Erreur : le fichier image ne semble pas valide !');
    }
    list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos;
    $tab_extension_types = array(IMAGETYPE_GIF => 'gif', IMAGETYPE_JPEG => 'jpeg', IMAGETYPE_PNG => 'png');
    // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants
    // vérifier le type
    if (!isset($tab_extension_types[$image_type])) {
 /**
  * Vérifier qu'une arborescence XML d'un référentiel est syntaxiquement valide.
  * 
  * @param string    $arbreXML
  * @return string   "ok" ou "Erreur..."
  */
 public static function verifier_arborescence_XML($arbreXML)
 {
   // On ajoute déclaration et doctype au fichier (évite que l'utilisateur ait à se soucier de cette ligne et permet de le modifier en cas de réorganisation
   // Attention, le chemin du DTD est relatif par rapport à l'emplacement du fichier XML (pas celui du script en cours) !
   $fichier_adresse = CHEMIN_DOSSIER_IMPORT.'referentiel_'.fabriquer_fin_nom_fichier__date_et_alea().'.xml';
   $fichier_contenu = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<!DOCTYPE arbre SYSTEM "../../_dtd/referentiel.dtd">'."\r\n".$arbreXML;
   $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
   // On enregistre temporairement dans un fichier pour analyse
   FileSystem::ecrire_fichier($fichier_adresse,$fichier_contenu);
   // On lance le test
   $test_XML_valide = ServeurCommunautaire::analyser_XML($fichier_adresse);
   // On efface le fichier temporaire
   FileSystem::supprimer_fichier($fichier_adresse);
   return $test_XML_valide;
 }
}
$options_horizontal_gauche = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_GAUCHE'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_GAUCHE'] . '" selected', fabriquer_chaine_option(90, 120));
$options_horizontal_milieu = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_MILIEU'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_MILIEU'] . '" selected', fabriquer_chaine_option(85, 115));
$options_horizontal_droite = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_DROITE'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_DROITE'] . '" selected', fabriquer_chaine_option(15, 25));
$options_vertical_haut = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_HAUT'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_HAUT'] . '" selected', fabriquer_chaine_option(40, 60));
$options_vertical_milieu = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_MILIEU'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_MILIEU'] . '" selected', fabriquer_chaine_option(35, 55));
$options_vertical_bas = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_BAS'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_BAS'] . '" selected', fabriquer_chaine_option(15, 25));
// Formulaire avec la liste des directeurs et professeurs
$select_user = HtmlForm::afficher_select(DB_STRUCTURE_COMMUN::DB_OPT_professeurs_directeurs_etabl(1), 'f_user', 'tampon_structure', FALSE, 'profs_directeurs');
// Récupérer les signatures existantes, dont le tampon de l'établissement.
$li_signatures = '';
$DB_TAB = DB_STRUCTURE_IMAGE::DB_lister_signatures_avec_identite();
foreach ($DB_TAB as $DB_ROW) {
    // Enregistrer temporairement le fichier sur le disque
    $texte = $DB_ROW['user_id'] ? 'Signature ' . $DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom'] : 'Tampon de l\'établissement';
    $fichier_nom = 'signature_' . $_SESSION['BASE'] . '_' . $DB_ROW['user_id'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.' . $DB_ROW['image_format'];
    FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_nom, base64_decode($DB_ROW['image_contenu']));
    // Générer la balise html pour afficher l'image
    list($width, $height) = dimensions_affichage_image($DB_ROW['image_largeur'], $DB_ROW['image_hauteur'], 200, 200);
    $li_signatures .= '<li id="sgn_' . $DB_ROW['user_id'] . '">' . html($texte) . ' : <img src="' . URL_DIR_EXPORT . $fichier_nom . '" alt="' . html($texte) . '" width="' . $width . '" height="' . $height . '" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>';
}
$li_signatures = $li_signatures ? $li_signatures : '<li id="sgn_none">Aucun fichier image trouvé !</li>';
?>

<div><span class="manuel"><a class="pop_up" href="<?php 
echo SERVEUR_DOCUMENTAIRE;
?>
?fichier=releves_bilans__reglages_syntheses_bilans#toggle_officiel_mise_en_page">DOC : Réglages synthèses &amp; bilans &rarr; Mise en page des bilans officiels</a></span></div>

<hr />
  echo'<p class="danger">Le fichier n\'existe pas : probablement qu\'aucune action sensible n\'a encore été effectuée !</p>'.NL;
}
else
{
  
  // 1 En extraire le plus récent (les 100 derniers enregistrements)
  $table_log_extrait = '<table class="p"><thead><tr><th>Date &amp; Heure</th><th>Utilisateur</th><th>Action</th></tr></thead><tbody>';
  $tab_lignes = extraire_lignes($fichier_log_contenu);
  $indice_ligne_debut = count($tab_lignes)-1 ;
  $indice_ligne_fin   = max(-1 , $indice_ligne_debut-100) ;
  $nb_lignes          = $indice_ligne_debut - $indice_ligne_fin ;
  $s = ($nb_lignes>1) ? 's' : '' ;
  for( $indice_ligne=$indice_ligne_debut ; $indice_ligne>$indice_ligne_fin ; $indice_ligne-- )
  {
    list( $balise_debut , $date_heure , $utilisateur , $action , $balise_fin ) = explode("\t",$tab_lignes[$indice_ligne]);
    $table_log_extrait .= '<tr><td>'.$date_heure.'</td><td>'.$utilisateur.'</td><td>'.$action.'</td></tr>'; // Pas de html(), cela a déjà été fait lors de l'enregistrement des logs
  }
  $table_log_extrait .= '</tbody></table>';
  // 2 Enregistrer un csv récupérable
  $fichier_log_contenu = str_replace(array('<?php /*','*/ ?>'),'',$fichier_log_contenu);
  $fichier_export_nom = 'log_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea();
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fichier_export_nom.'.csv' , To::csv($fichier_log_contenu) );
  // Afficher tout ça
  echo'<ul class="puce">'.NL;
  echo  '<li><a target="_blank" href="./force_download.php?fichier='.$fichier_export_nom.'.csv"><span class="file file_txt">Récupérer le fichier complet (format <em>csv</em>).</span></a></li>'.NL;
  echo  '<li>Consulter les derniers logs ('.$nb_lignes.' ligne'.$s.') :</li>'.NL;
  echo'</ul>'.NL;
  echo $table_log_extrait;
}
?>
Esempio n. 10
0
 * [./pages/brevet_moyennes.ajax.php]
 * [./_inc/code_officiel_***.php]
 */

Erreur500::prevention_et_gestion_erreurs_fatales( TRUE /*memory*/ , FALSE /*time*/ );

/*
$type_individuel | $type_synthese | $type_bulletin
$releve_modele [ matiere | selection | multimatiere | professeur ]
*/

$matiere_et_groupe = ($releve_modele=='matiere') ? $matiere_nom.' - '.$groupe_nom : $groupe_nom ;

// Chemins d'enregistrement

$fichier_nom = ($make_action!='imprimer') ? 'releve_item_'.$releve_modele.'_'.Clean::fichier($groupe_nom).'_<REPLACE>_'.fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_'.$BILAN_TYPE.'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea() ;

// Si pas grille générique et si notes demandées ou besoin pour colonne bilan ou besoin pour synthèse
$calcul_acquisitions = ( $type_synthese || $type_bulletin || $aff_etat_acquisition ) ? TRUE : FALSE ;

// Initialisation de tableaux

$tab_item_infos       = array();  // [item_id] => array(item_ref,item_nom,item_coef,item_cart,item_socle,item_lien,calcul_methode,calcul_limite,calcul_retroactif);
$tab_matiere_item     = array();  // [matiere_id][item_id] => item_nom
$tab_eleve_infos      = array();  // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance,eleve_id_gepi)
$tab_matiere          = array();  // [matiere_id] => array(matiere_nom,matiere_nb_demandes)
$tab_eval             = array();  // [eleve_id][matiere_id][item_id][devoir] OU [matiere_id][item_id][eleve_id][devoir] => array(note,date,info)

// Initialisation de variables

if( ($make_html) || ($make_pdf) )
Esempio n. 11
0
  // Afficher le retour
  echo'<li><label class="'.$class.'">'.$texte_etape.'.</label></li>';
  if(strpos($texte_etape,'terminée'))
  {
    echo'<li><a target="_blank" href="'.URL_DIR_DUMP.$fichier_zip_nom.'"><span class="file file_zip">Récupérer le fichier de sauvegarde au format ZIP.</span></a></li>';
  }
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Uploader et dezipper / vérifier un fichier à restaurer
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='uploader')
{
  $fichier_upload_nom = 'dump_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.zip';
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_upload_nom /*fichier_nom*/ , array('zip') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
    exit('<li><label class="alerte">Erreur : '.$result.'</label></li>');
  }
  // 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_upload_nom , $dossier_temp , FALSE /*use_ZipArchive*/ );
  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('<li><label class="alerte">Erreur : votre archive ZIP n\'a pas pu être ouverte ('.FileSystem::$tab_zip_error[$code_erreur].') !</label></li>');
  }
  FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.$fichier_upload_nom);
Esempio n. 12
0
// Vérifications complémentaires

if( !isset($_SESSION['tmp_droit_voir_archive'][$eleve_id.$bilan_type]) || !isset($_SESSION['BASE']) )
{
  exit_error( 'Accès non autorisé' /*titre*/ , 'Cet appel n\'est valide que pour un utilisateur précis, connecté, et ayant affiché la page listant les archives disponibles.<br />Veuillez ne pas appeler ce lien dans un autre contexte (ni le transmettre à un tiers).' /*contenu*/ , '' /*lien*/ );
}

$fichier_archive = CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $bilan_type , $periode_id );
if(!is_file($fichier_archive))
{
  exit_error( 'Document manquant' /*titre*/ , 'Archive non trouvée sur ce serveur.' /*contenu*/ , '' /*lien*/ );
}

// Copie du fichier pour préserver son anonymat

$fichier_copie_nom = 'officiel_'.$bilan_type.'_archive_'.$eleve_id.'_'.$periode_id.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.pdf' ;
copy($fichier_archive,CHEMIN_DOSSIER_EXPORT.$fichier_copie_nom);

// Enregistrement de l'accès
if( in_array( $_SESSION['USER_PROFIL_TYPE'] , array('eleve','parent') ) )
{
  // Connexion à la base de données adaptée (à ce stade, plus besoin de vérif, il s'agit d'une install bien en place...).
  if(HEBERGEUR_INSTALLATION=='multi-structures')
  {
    $fichier_mysql_config = 'serveur_sacoche_structure_'.$_SESSION['BASE'];
    $fichier_class_config = 'class.DB.config.sacoche_structure';
  }
  elseif(HEBERGEUR_INSTALLATION=='mono-structure')
  {
    $fichier_mysql_config = 'serveur_sacoche_structure';
    $fichier_class_config = 'class.DB.config.sacoche_structure';
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}

$tab_base_id = (isset($_POST['f_listing_id'])) ? array_filter( Clean::map_entier( explode(',',$_POST['f_listing_id']) ) , 'positif' ) : array() ;
$nb_bases    = count($tab_base_id);

$action         = (isset($_POST['f_action']))         ? Clean::texte($_POST['f_action'])          : '';
$num            = (isset($_POST['num']))              ? (int)$_POST['num']                        : 0 ;  // Numéro de l'étape en cours
$max            = (isset($_POST['max']))              ? (int)$_POST['max']                        : 0 ;  // Nombre d'étapes à effectuer
$courriel_envoi = (isset($_POST['f_courriel_envoi'])) ? Clean::entier($_POST['f_courriel_envoi']) : 0 ;
$courriel_copie = (isset($_POST['f_courriel_copie'])) ? Clean::entier($_POST['f_courriel_copie']) : 0 ;

$fichier_csv_nom  = 'ajout_structures_'.fabriquer_fin_nom_fichier__date_et_alea().'.csv';

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Import d'un fichier CSV avec le listing des structures
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='importer_csv')
{
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_csv_nom /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
    exit('Erreur : '.$result);
  }
  // On récupère les zones géographiques pour vérifier que l'identifiant transmis est cohérent
  $tab_geo = array();
  $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_zones();
 if ($DB_ROW['convention_paiement'] !== NULL) {
     $texte = 'Règlement acquitté le ' . convert_date_mysql_to_french($DB_ROW['convention_paiement']) . '.';
 } elseif ($DB_ROW['convention_signature'] !== NULL) {
     list($annee, $mois, $jour) = explode('-', $DB_ROW['convention_signature']);
     $timeunix_signature_plus2mois = mktime(0, 0, 0, $mois + 2, $jour, $annee);
     list($annee, $mois, $jour) = explode('-', $DB_ROW['convention_date_debut']);
     $timeunix_anneescolaire_plus3mois = mktime(0, 0, 0, $mois + 2, $jour, $annee);
     $date_limite = date("d/m/Y", max($timeunix_signature_plus2mois, $timeunix_anneescolaire_plus3mois));
     $texte = 'Date limite de règlement : ' . $date_limite . '.';
 } else {
     $texte = 'Date limite de règlement : 2 mois après la mise en service effective du connecteur.';
 }
 $facture_PDF->SetXY(20, 174);
 $facture_PDF->CellFit(180, $hauteur_ligne, To::pdf($texte), 0, 2, 'L', FALSE);
 // On enregistre la sortie PDF
 $facture_fichier_nom = 'convention_facture_' . fabriquer_fin_nom_fichier__date_et_alea() . '.pdf';
 FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $facture_fichier_nom, $facture_PDF);
 //
 // Envoyer un courriel au contact.
 //
 if ($f_first_time == 'oui') {
     $titre = 'Convention connecteur ENT établissement - Documents générés';
     $texte = 'Bonjour ' . $DB_ROW2['structure_contact_prenom'] . ' ' . $DB_ROW2['structure_contact_nom'] . ',' . "\r\n";
     $texte .= "\r\n";
     $texte .= 'Vous venez de générer les documents associés à une convention pour un connecteur ENT :' . "\r\n";
     $texte .= 'Référence : ' . $connecteur_ref . "\r\n";
     $texte .= 'Établissement : ' . $_SESSION['ETABLISSEMENT']['DENOMINATION'] . "\r\n";
     $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";
}
// On récupère les photos
$listing_user_id = implode(',',array_keys($tab_vignettes));
$DB_TAB = DB_STRUCTURE_IMAGE::DB_lister_images( $listing_user_id , 'photo' );
if(!empty($DB_TAB))
{
  foreach($DB_TAB as $DB_ROW)
  {
    $tab_vignettes[$DB_ROW['user_id']]['img_width']  = $DB_ROW['image_largeur'];
    $tab_vignettes[$DB_ROW['user_id']]['img_height'] = $DB_ROW['image_hauteur'];
    $tab_vignettes[$DB_ROW['user_id']]['img_src']    = $DB_ROW['image_contenu'];
    $tab_vignettes[$DB_ROW['user_id']]['img_title']  = FALSE;
  }
}
// Génération de la sortie HTML (affichée directement) et de la sortie PDF (enregistrée dans un fichier)
$fnom_pdf = 'trombinoscope_'.$_SESSION['BASE'].'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea().'.pdf';
$trombinoscope_HTML = '<h2>'.html($groupe_nom).'</h2><p><a target="_blank" href="'.URL_DIR_EXPORT.$fnom_pdf.'"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a> &rarr; <span class="noprint">Afin de préserver l\'environnement, n\'imprimer que si nécessaire !</span></p>';
$trombinoscope_PDF = new PDF_trombinoscope( FALSE /*officiel*/ , 'portrait' /*orientation*/ , 5 /*marge_gauche*/ , 5 /*marge_droite*/ , 5 /*marge_haut*/ , 7 /*marge_bas*/ );
$trombinoscope_PDF->initialiser($groupe_nom);
// On passe les élèves en revue (on a toutes les infos déjà disponibles)
foreach($tab_vignettes as $user_id => $tab)
{
  $trombinoscope_PDF->vignette($tab);
  $img_src   = ($tab['img_src'])   ? ' src="data:'.image_type_to_mime_type(IMAGETYPE_JPEG).';base64,'.$tab['img_src'].'"' : ' src="./_img/trombinoscope_vide.png"' ;
  $img_title = ($tab['img_title']) ? ' title="absence de photo"' : '' ;
  $trombinoscope_HTML .= '<div id="div_'.$user_id.'" class="photo"><img width="'.$tab['img_width'].'" height="'.$tab['img_height'].'" alt=""'.$img_src.$img_title.' /><br />'.html($tab['user_nom']).'<br />'.html($tab['user_prenom']).'</div>';
}
// Enregistrement du PDF
FileSystem::ecrire_sortie_PDF( CHEMIN_DOSSIER_EXPORT.$fnom_pdf , $trombinoscope_PDF );
// Affichage du HTML
exit($trombinoscope_HTML);
        }
      }
    }
    else
    {
      echo'<tr class="vide"><td class="nu" colspan="6"></td><td class="nu"></td></tr>'.NL;
    }
    ?>
  </tbody>
</table>

<?php
if( $levenshtein && !empty($DB_TAB) )
{
  // Finalisation de l'export CSV (archivage dans un fichier)
  $fnom = 'extraction_ressemblances_adresses_'.fabriquer_fin_nom_fichier__date_et_alea();
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) );
  echo'<p><ul class="puce"><li><a target="_blank" href="./force_download.php?fichier='.$fnom.'.csv"><span class="file file_txt">Récupérer les données dans un fichier (format <em>csv</em></span>).</a></li></ul></p>'.NL;
}
?>

<form action="#" method="post" id="form_gestion" class="hide">
  <h2>Modifier une adresse</h2>
  <p>
    <label class="tab">Nom Prénom :</label><b id="gestion_identite"></b><br />
    <label class="tab" for="f_ligne1">Ligne 1 :</label><input id="f_ligne1" name="f_ligne1" type="text" value="" size="50" maxlength="50" /><br />
    <label class="tab" for="f_ligne2">Ligne 2 :</label><input id="f_ligne2" name="f_ligne2" type="text" value="" size="50" maxlength="50" /><br />
    <label class="tab" for="f_ligne3">Ligne 3 :</label><input id="f_ligne3" name="f_ligne3" type="text" value="" size="50" maxlength="50" /><br />
    <label class="tab" for="f_ligne4">Ligne 4 :</label><input id="f_ligne4" name="f_ligne4" type="text" value="" size="50" maxlength="50" /><br />
    <label class="tab" for="f_code_postal">Code postal :</label><input id="f_code_postal" name="f_code_postal" type="text" value="" size="6" maxlength="10" /><br />
    <label class="tab" for="f_commune">Commune :</label><input id="f_commune" name="f_commune" type="text" value="" size="45" maxlength="45" /><br />
    // Pour avoir les élèves dans l'ordre alphabétique, il faut utiliser $tab_eleve_id.
    $archivage_tableau_PDF->SetXY($archivage_tableau_PDF->marge_gauche, $archivage_tableau_PDF->marge_haut + $archivage_tableau_PDF->etiquette_hauteur);
    foreach ($tab_eleve_id as $eleve_id) {
        extract($tab_eleve_infos[$eleve_id]);
        // $eleve_nom $eleve_prenom $date_naissance $eleve_brevet_serie
        $archivage_tableau_PDF->moyennes_reference_eleve($eleve_id, $eleve_nom . ' ' . $eleve_prenom);
        $archivage_tableau_CSV .= '"' . $eleve_nom . ' ' . $eleve_prenom . '"';
        foreach ($tab_brevet_serie as $serie_ref => $serie_nom) {
            foreach ($tab_brevet_epreuve[$serie_ref] as $epreuve_ref => $epreuve_nom) {
                $note = isset($tab_saisie[$eleve_id][$serie_ref . $epreuve_ref]) ? $tab_saisie[$eleve_id][$serie_ref . $epreuve_ref] : NULL;
                $archivage_tableau_PDF->moyennes_note($eleve_id, $epreuve_ref, $note, TRUE);
                $archivage_tableau_CSV .= $separateur . '"' . str_replace('.', ',', $note) . '"';
                // Remplacer le point décimal par une virgule pour le tableur.
            }
        }
        $archivage_tableau_PDF->SetXY($archivage_tableau_PDF->marge_gauche, $archivage_tableau_PDF->GetY() + $archivage_tableau_PDF->cases_hauteur);
        $archivage_tableau_CSV .= "\r\n";
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrement et affichage du retour.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$fichier_export = 'saisies_' . $bilan_type . '_' . $annee_session_brevet . '_' . Clean::fichier($classe_nom) . '_' . $action . '_' . fabriquer_fin_nom_fichier__date_et_alea();
FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $fichier_export . '.pdf', $archivage_tableau_PDF);
echo '<a target="_blank" href="' . URL_DIR_EXPORT . $fichier_export . '.pdf"><span class="file file_pdf">' . $tab_actions[$action] . ' (format <em>pdf</em>).</span></a>';
// Et le csv éventuel
if ($action == 'imprimer_donnees_eleves_moyennes') {
    FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_export . '.csv', To::csv($archivage_tableau_CSV));
    echo '<br />' . NL . '<a target="_blank" href="./force_download.php?fichier=' . $fichier_export . '.csv"><span class="file file_txt">' . $tab_actions[$action] . ' (format <em>csv</em>).</span></a>';
}
exit;
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrement du rapport de récupération des recherches des anomalies éventuelles
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( $num && $max && ($num==$max) )
{
  // Trier les lignes
  array_multisort(
    $_SESSION['tmp']['infos']['niveau_alerte'], SORT_DESC,SORT_NUMERIC,
    $_SESSION['tmp']['infos']['base_id']      , SORT_ASC,SORT_NUMERIC,
    $_SESSION['tmp']['infos']['messages']
  );
  // Enregistrement du rapport
  $fichier_nom = 'rapport_analyser_et_reparer_tables_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  $thead = '<tr><td colspan="2">Analyse et réparation éventuelle des tables de bases de données par établissement - '.date('d/m/Y H:i:s').'</td></tr>';
  $tbody = implode('',$_SESSION['tmp']['infos']['messages']);
  FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody );
  unset($_SESSION['tmp']);
  exit('ok-'.URL_DIR_EXPORT.$fichier_nom);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');

?>
Esempio n. 19
0
        // Fichier différent
        $tbody_pb .= '<tr class="r"><td>Fichier différent</td><td>'.$fichier.'</td></tr>';
      }
    }
    elseif( (!isset($tab['avant'])) && (substr($fichier,-9)!='.htaccess') )
    {
      // Fichier manquant
      $tbody_pb .= '<tr class="r"><td>Fichier manquant</td><td>'.$fichier.'</td></tr>';
    }
    elseif(!isset($tab['apres'])) // (forcément)
    {
      $tbody_pb .= '<tr class="r"><td>Fichier en trop</td><td>'.$fichier.'</td></tr>';
    }
  }
  // Enregistrement du rapport
  $_SESSION['tmp']['rapport_filename'] = 'rapport_verif_file_appli_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  FileSystem::fabriquer_fichier_rapport( $_SESSION['tmp']['rapport_filename'] , $thead , $tbody_pb.$tbody_ok );
  exit(']¤['.'ok'.']¤['.'Rapport des différences trouvées et nettoyage&hellip;');
}

//
// 5. Nettoyage...
//
if($action=='verif_file_appli_etape5')
{
  FileSystem::supprimer_dossier($dossier_dezip);
  $fichier_chemin = URL_DIR_EXPORT.$_SESSION['tmp']['rapport_filename'];
  unset($_SESSION['tmp']);
  exit(']¤['.'ok'.']¤['.$fichier_chemin);
}
 }
 $tab_eleves  = array();
 $tab_autres  = array();
 $tab_groupes = array();
 foreach($DB_TAB as $DB_ROW)
 {
   if( ($selection_groupe) || !isset($tab_eleves[ $DB_ROW['valeur']]) ) // Un élève peut être une classe + un groupe associé au prof ; dans ce cas on ne garde que la 1e entrée (la classe)
   {
     $tab_eleves[ $DB_ROW['valeur']] = $DB_ROW['texte'];
     $tab_autres[ $DB_ROW['valeur']] = $DB_ROW['texte'];
     $tab_groupes[$DB_ROW['valeur']] = ($selection_groupe) ? $groupe_nom : $DB_ROW['optgroup'] ;
   }
 }
 $listing_user_id = implode(',', array_keys($tab_eleves) );
 // Lister les demandes (et les messages associés)
 $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']);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
/* 
 * 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);

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Tableaux et variables pour mémoriser les infos ; dans cette partie on ne fait que les calculs (aucun affichage)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$fichier = 'grille_item_'.Clean::fichier($matiere_nom).'_'.Clean::fichier($niveau_nom).'_<REPLACE>_'.fabriquer_fin_nom_fichier__date_et_alea();
$fichier_nom_type1 = ($type_generique) ? str_replace( '<REPLACE>' , 'generique' , $fichier ) : str_replace( '<REPLACE>' , Clean::fichier($groupe_nom).'_individuel' , $fichier ) ;
$fichier_nom_type2 = str_replace( '<REPLACE>' , Clean::fichier($groupe_nom).'_synthese' , $fichier ) ;

$tab_score_eleve_item         = array();  // Retenir les scores / élève / item
$tab_score_item_eleve         = array();  // Retenir les scores / item / élève
$tab_moyenne_scores_eleve     = array();  // Retenir la moyenne des scores d'acquisitions / élève
$tab_pourcentage_acquis_eleve = array();  // Retenir le pourcentage d'items acquis / élève
$tab_moyenne_scores_item      = array();  // Retenir la moyenne des scores d'acquisitions / item
$tab_pourcentage_acquis_item  = array();  // Retenir le pourcentage d'items acquis / item
$moyenne_moyenne_scores       = 0;  // moyenne des moyennes des scores d'acquisitions
$moyenne_pourcentage_acquis   = 0;  // moyenne des moyennes des pourcentages d'items acquis

/*
  Calcul des états d'acquisition (si besoin) et des données nécessaires pour le tableau de synthèse (si besoin).
  $tab_score_eleve_item[$eleve_id][$item_id]
    echo $lignes_mod ? $lignes_mod : '<tr><td colspan="2">Aucun</td></tr>' . NL;
    echo '</tbody><tbody>' . NL;
    echo '<tr><th colspan="2">Utilisateurs trouvés dans le fichier dont l\'identifiant Gepi n\'a pas pu être modifié.</th></tr>' . NL;
    echo $lignes_pb ? $lignes_pb : '<tr><td colspan="2">Aucun</td></tr>' . NL;
    echo '</tbody><tbody>' . NL;
    echo '<tr><th colspan="2">Utilisateurs trouvés dans le fichier dont l\'identifiant Gepi est inchangé.</th></tr>' . NL;
    echo $lignes_ras ? $lignes_ras : '<tr><td colspan="2">Aucun</td></tr>' . NL;
    echo '</tbody>' . NL;
    echo '</table>' . NL;
    exit;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Import CSV du contenu d'un fichier pour forcer les identifiants d'un ENT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'import_ent') {
    $fichier_nom = $action . '_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.txt';
    $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, array('txt', 'csv'), NULL, NULL, NULL);
    if ($result !== TRUE) {
        exit('Erreur : ' . $result);
    }
    // Récupérer les infos sur le CSV associé à l'ENT
    require CHEMIN_DOSSIER_INCLUDE . 'tableau_sso.php';
    $tab_infos_csv = $tab_connexion_info[$_SESSION['CONNEXION_MODE']][$_SESSION['CONNEXION_DEPARTEMENT'] . '|' . $_SESSION['CONNEXION_NOM']];
    // Pour récupérer les données des utilisateurs
    $tab_users_fichier = array();
    $tab_users_fichier['id_ent'] = array();
    $tab_users_fichier['nom'] = array();
    $tab_users_fichier['prenom'] = array();
    $tab_users_fichier['id_sconet'] = array();
    $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_nom);
    $contenu = To::deleteBOM(To::utf8($contenu));
Esempio n. 23
0
                         .'<td>'.html($DB_ROW['user_id_gepi']).'</td>'
                         .'<td>'.$DB_ROW['user_sconet_id'].'</td>'
                         .'<td>'.$DB_ROW['user_sconet_elenoet'].'</td>'
                         .'<td>'.html($DB_ROW['user_reference']).'</td>'
                         .'<td>'.html($DB_ROW['user_login']).'</td>'
                         .'<td>'.Html::$tab_genre['adulte'][$DB_ROW['user_genre']].'</td>'
                         .'<td>'.html($DB_ROW['user_nom']).'</td>'
                         .'<td>'.html($DB_ROW['user_prenom']).'</td>'
                         .'<td>'.$DB_ROW['user_profil_sigle'].'</td>'
                       .'</tr>'.NL;
      }
    }
  }

  // Finalisation de l'export CSV (archivage dans un fichier)
  $fnom = 'export_infos-professeurs_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea();
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) );
  // Finalisation de l'export HTML
  $export_html .= '</tbody></table>'.NL;

  // Affichage
  echo'<ul class="puce"><li><a target="_blank" href="./force_download.php?fichier='.$fnom.'.csv"><span class="file file_txt">Récupérer les données (fichier <em>csv</em></span>).</a></li></ul>'.NL;
  echo $export_html;
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas arriver jusque là.
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');
Esempio n. 24
0
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}

/**
 * Code inclus commun aux pages
 * [./_inc/code_brevet_fiches_***.php]
 */

Erreur500::prevention_et_gestion_erreurs_fatales( TRUE /*memory*/ , FALSE /*time*/ );

// Chemins d'enregistrement

$fichier_nom = 'fiche_brevet_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea() ;

// Initialisation de tableaux

$tab_eleve_infos    = array();  // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,eleve_genre,date_naissance,eleve_brevet_serie)
$tab_matiere        = array();  // [matiere_id] => matiere_nom
$tab_brevet_serie   = array();  // [serie_ref] => serie_nom
$tab_brevet_epreuve = array();  // [serie_ref][epreuve_code] => epreuve_nom, epreuve_obligatoire, epreuve_note_chiffree, epreuve_point_sup_10, epreuve_note_comptee, epreuve_coefficient, choix_matieres
$tab_eleve_saisie   = array();  // [eleve_id][epreuve_code][prof_id] => array(prof_info,appreciation,note); avec eleve_id=0 pour note ou appréciation sur la classe

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération de l'identité des élèves
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$tab_eleve_infos = DB_STRUCTURE_BILAN::DB_lister_eleves_cibles( $liste_eleve , 'alpha' /*eleves_ordre*/ , FALSE /*with_gepi*/ , FALSE /*with_langue*/ , TRUE /*with_brevet_serie*/ );
if(!is_array($tab_eleve_infos))
Esempio n. 25
0
    $tab_eleves[$DB_ROW['user_id']] = $DB_ROW['user_reference'];
}
// Récupérer les notes enregistrées ; convertir si besoin en nombre de points correspondants
$tab_points = array();
$DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_notes_eleves($listing_eleve_id);
if (count($DB_TAB)) {
    foreach ($DB_TAB as $DB_ROW) {
        if ($DB_ROW['brevet_epreuve_code'] == CODE_BREVET_EPREUVE_TOTAL) {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = $DB_ROW['saisie_note'];
        } elseif ($DB_ROW['brevet_epreuve_point_sup_10']) {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = max(0, $DB_ROW['saisie_note'] - 10);
        } else {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = is_numeric($DB_ROW['saisie_note']) ? $DB_ROW['saisie_note'] * $DB_ROW['brevet_epreuve_coefficient'] : $DB_ROW['saisie_note'];
        }
    }
}
// Fabriquer le fichier csv
$csv_contenu = '';
$csv_separateur = '|';
foreach ($tab_eleves as $eleve_id => $user_reference) {
    foreach ($tab_points[$eleve_id] as $epreuve_code => $points) {
        $csv_code = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? (string) $epreuve_code : 'TOT';
        $format = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? "%05.2f" : "%06.2f";
        $csv_note = is_numeric($points) ? sprintf($format, $points) : (string) $points;
        $csv_contenu .= $user_reference . $csv_separateur . $csv_code . $csv_separateur . $csv_note . $csv_separateur . NL;
    }
}
// Enregistrer le fichier csv / Retour
$fichier_nom = 'export_notanet' . '_' . Clean::fichier($_SESSION['WEBMESTRE_UAI']) . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.txt';
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_nom, To::csv($csv_contenu));
exit($fichier_nom);
Esempio n. 26
0
 * 
 * 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 !');
}
/**
 * Code inclus commun aux pages
 * [./pages/releve_socle.ajax.php]
 * [./_inc/code_officiel_***.php]
 */
Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE);
// Chemins d'enregistrement
$fichier_nom = $make_action != 'imprimer' ? 'releve_socle_detail_' . Clean::fichier(substr($palier_nom, 0, strpos($palier_nom, ' ('))) . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_' . $BILAN_TYPE . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea();
// Tableau des langues
require CHEMIN_DOSSIER_INCLUDE . 'tableau_langues_socle.php';
$tab_item_pilier = array();
// id de l'item => id du pilier
// Initialisation de tableaux
$tab_pilier = array();
// [pilier_id] => pilier_nom;
$tab_section = array();
// [pilier_id][section_id] => section_nom;
$tab_socle = array();
// [section_id][socle_id] => socle_nom;
$tab_entree_id = array();
// [i] => entree_id
$tab_eleve_infos = array();
// [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance,eleve_langue)
// Enregistrer le nouveau fichier de paramètres
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'enregistrer') {
    // Pour le logo, ...
    if (!isset($_SESSION['tmp']['partenaire_logo_new_filename'])) {
        // soit on conserve le précédent (éventuellement rien),
    } elseif ($_SESSION['tmp']['partenaire_logo_new_filename'] == '') {
        // soit on le supprime,
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE);
        $_SESSION['tmp']['partenaire_logo_actuel_filename'] = '';
    } elseif (is_file(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'])) {
        // soit on prend le nouveau, auquel cas il faut aussi le déplacer dans CHEMIN_DOSSIER_PARTENARIAT, et éventuellement supprimer l'ancien
        if ($_SESSION['tmp']['partenaire_logo_actuel_filename']) {
            FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE);
        }
        $_SESSION['tmp']['partenaire_logo_actuel_filename'] = 'logo_' . $_SESSION['USER_ID'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.' . $_SESSION['tmp']['partenaire_logo_new_file_ext'];
        copy(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'], CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename']);
    }
    unset($_SESSION['tmp']['partenaire_logo_new_filename'], $_SESSION['tmp']['partenaire_logo_new_file_ext']);
    // On fabrique le fichier avec les infos et on l'enregistre
    FileSystem::fabriquer_fichier_partenaire_message($_SESSION['USER_ID'], $_SESSION['tmp']['partenaire_logo_actuel_filename'], $adresse_web, $message);
    // Retour
    $partenaire_logo_url = $_SESSION['tmp']['partenaire_logo_actuel_filename'] ? URL_DIR_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'] : URL_DIR_IMG . 'auto.gif';
    $partenaire_lien_ouvrant = $adresse_web ? '<a href="' . html($adresse_web) . '" target="_blank">' : '';
    $partenaire_lien_fermant = $adresse_web ? '</a>' : '';
    exit('ok-' . $partenaire_lien_ouvrant . '<span id="partenaire_logo"><img src="' . html($partenaire_logo_url) . '" /></span><span id="partenaire_message">' . nl2br(html($message)) . '</span>' . $partenaire_lien_fermant . '<hr id="partenaire_hr" />');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (empty($_POST)) {
Esempio n. 28
0
      $export_csv .= ($with_note) ? $separateur."\r\n" : "\r\n" ;
    }
    $export_csv .= "\r\n"; // une valeur NULL donnera une chaine vide
  }
  $fnom_export = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.Clean::fichier($BILAN_TYPE).'_'.Clean::fichier($periode_nom).'_'.Clean::fichier($groupe_nom).'_'.$BILAN_ETAT.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.csv';
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom_export , To::csv($export_csv) );
  exit($fnom_export);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Cas 2 : réception d'un import csv (saisie déportée)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($ACTION=='uploader_saisie_csv')
{
  $fichier_nom = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.Clean::fichier($BILAN_TYPE).'_'.$periode_id.'_'.$groupe_id.'_'.$BILAN_ETAT.'_'.fabriquer_fin_nom_fichier__date_et_alea();
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom.'.<EXT>' /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
    exit('Erreur : '.$result);
  }
  $contenu_csv = file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name);
  $contenu_csv = To::deleteBOM(To::utf8($contenu_csv)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
  $tab_lignes = extraire_lignes($contenu_csv); // Extraire les lignes du fichier
  if(count($tab_lignes)<4)
  {
    exit('Erreur : absence de données suffisantes (fichier comportant moins de 4 lignes) !');
  }
  $separateur = extraire_separateur_csv($tab_lignes[2]); // Déterminer la nature du séparateur
  // Données de la ligne d'en-tête
  $tab_elements = str_getcsv($tab_lignes[0],$separateur);
        }
      }
    }
    else
    {
      echo'<tr class="vide"><td class="nu" colspan="15"></td><td class="nu"></td></tr>'.NL;
    }
    ?>
  </tbody>
</table>

<?php
if( $find_doublon && !empty($DB_TAB) )
{
  // Finalisation de l'export CSV (archivage dans un fichier)
  $fnom = 'extraction_doublons_responsables_'.fabriquer_fin_nom_fichier__date_et_alea();
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) );
  echo'<p><ul class="puce"><li><a target="_blank" href="./force_download.php?fichier='.$fnom.'.csv"><span class="file file_txt">Récupérer les données dans un fichier (format <em>csv</em></span>).</a></li></ul></p>'.NL;
}
?>

<div id="zone_actions" style="margin-left:3em">
  <div class="p"><span class="u">Pour les utilisateurs cochés :</span> <input id="listing_ids" name="listing_ids" type="hidden" value="" /><label id="ajax_msg_actions">&nbsp;</label></div>
  <button id="retirer" type="button" class="user_desactiver">Retirer</button> (date de sortie au <?php echo TODAY_FR ?>).<br />
  <button id="reintegrer" type="button" class="user_ajouter">Réintégrer</button> (retrait de la date de sortie).<br />
  <button id="supprimer" type="button" class="supprimer">Supprimer</button> sans attendre 3 ans (uniquement si déjà sortis).
</div>

<form action="#" method="post" id="form_gestion" class="hide">
  <h2>Ajouter | Modifier un utilisateur</h2>
  <p>
Esempio n. 30
0
  FileSystem::ecrire_fichier(    CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.csv' , To::csv($cartouche_CSV) );
  // On archive le cartouche dans un fichier tex
  FileSystem::ecrire_fichier(    CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.tex' , $cartouche_TEX );
  // On archive le cartouche dans un fichier pdf
  FileSystem::ecrire_sortie_PDF( CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.pdf' , $cartouche_PDF );
  // Affichage
  exit($cartouche_HTM);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traiter une demande d'importation d'une saisie déportée ; on n'enregistre rien, on ne fait que décrypter le contenu du fichier et renvoyer une chaine résultante au javascript
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( (isset($_GET['f_action'])) && ($_GET['f_action']=='importer_saisie_csv') )
{
  $fichier_nom = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.<EXT>';
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
    exit('Erreur : '.$result);
  }
  $contenu_csv = file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name);
  $contenu_csv = To::deleteBOM(To::utf8($contenu_csv)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
  $tab_lignes = extraire_lignes($contenu_csv); // Extraire les lignes du fichier
  $separateur = extraire_separateur_csv($tab_lignes[0]); // Déterminer la nature du séparateur
  // Pas de ligne d'en-tête à supprimer
  // Mémoriser les eleve_id de la 1ère ligne
  $tab_eleve = array();
  $tab_elements = str_getcsv($tab_lignes[0],$separateur);
  unset($tab_elements[0]);
  foreach ($tab_elements as $num_colonne => $element_contenu)