Example #1
0
 // Récupérer les bilans déjà existants pour savoir s'il faut faire un INSERT ou un UPDATE (sinon, un REPLACE efface les dates de consultation)
 $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers( $BILAN_TYPE , $periode_id , array_keys($_SESSION['tmp']['tab_pages_decoupe_pdf']) );
 $tab_notif = array();
 foreach($_SESSION['tmp']['tab_pages_decoupe_pdf'] as $eleve_id => $tab_tirages)
 {
   list( $eleve_identite , $page_plage ) = $tab_tirages[0];
   if(!isset($DB_TAB[$eleve_id]))
   {
     DB_STRUCTURE_OFFICIEL::DB_ajouter_bilan_officiel_fichier( $eleve_id , $BILAN_TYPE , $periode_id );
     $tab_notif[$eleve_id] = $eleve_id;
   }
   else
   {
     DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_fichier_date( $eleve_id , $BILAN_TYPE , $periode_id , 'generation' );
   }
   $fichier_extraction_chemin = CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $BILAN_TYPE , $periode_id );
   unset($_SESSION['tmp']['tab_pages_decoupe_pdf'][$eleve_id][0]);
   $releve_pdf = new PDFMerger;
   $pdf_string = $releve_pdf -> addPDF( CHEMIN_DOSSIER_EXPORT.$_SESSION['tmp']['fichier_nom'].'.pdf' , $page_plage ) -> merge( 'file' , $fichier_extraction_chemin );
 }
 // Notifications (rendues visibles ultérieurement parce que plus simple comme cela)
 if(!empty($tab_notif))
 {
   $abonnement_ref = 'bilan_officiel_visible';
   $is_acces_parent = in_array( 'TUT' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? TRUE : FALSE ;
   $is_acces_enfant = in_array( 'ELV' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? TRUE : FALSE ;
   if( $is_acces_parent || $is_acces_enfant )
   {
     $listing_eleves = implode(',',$tab_notif);
     $listing_parents = DB_STRUCTURE_NOTIFICATION::DB_lister_parents_listing_id($listing_eleves);
     $listing_users = ($listing_parents) ? $listing_eleves.','.$listing_parents : $listing_eleves ;
	{
		foreach($_SESSION['OPT_PARENT_ENFANTS'] as $tab)
		{
			$tab_eleve_id[] = $tab['valeur'];
			$tab_tbody[$tab['valeur']][0] = '<th>'.html($tab['texte']).'</th>';
		}
	}

	// lister les bilans officiels archivés de l'année courante
	$DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers( '' /*BILAN_TYPE*/ , 0 /*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($DB_TAB as $DB_ROW)
	{
		if(strpos($_SESSION['DROIT_OFFICIEL_'.$tab_types[$DB_ROW['officiel_type']]['droit'].'_VOIR_ARCHIVE'],$_SESSION['USER_PROFIL'])!==FALSE)
		{
			if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $DB_ROW['user_id'] , $DB_ROW['officiel_type'] , $DB_ROW['periode_id'] )))
			{
				$_SESSION['tmp_droit_voir_archive'][$DB_ROW['user_id'].$DB_ROW['officiel_type']] = TRUE; // 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
				$tab_tbody[$DB_ROW['user_id']][$DB_ROW['periode_id']][] = '<a href="releve_pdf.php?fichier='.$DB_ROW['user_id'].'_'.$DB_ROW['officiel_type'].'_'.$DB_ROW['periode_id'].'" class="lien_ext">'.$tab_types[$DB_ROW['officiel_type']]['titre'].'</a>' ;
			}
		}
	}

	// Assemblage et affichage du tableau.

	echo'<p class="astuce">Ces bilans ne sont que des copies partielles, laissées à disposition pour information jusqu\'à la fin de l\'année scolaire.<br /><span class="u">Seul le document original fait foi.</span></p>';
	echo'<table id="table_bilans"><thead><tr>'.implode('',$tab_thead).'</tr></thead><tbody>'."\r\n";
	unset($tab_thead[0]);
	foreach($tab_eleve_id as $eleve_id)
	{
		echo'<tr>'.$tab_tbody[$eleve_id][0] ;
            echo '<td>' . $tab_eleve_td[$eleve_id] . '</td>';
            echo '<td class="hc">' . $archive_td . '</td>';
            echo '</tr>';
        }
    }
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 2/4 - Le PDF complet est généré ; on archive individuellement les fiches brevet informatives (qui sont y rester une année scolaire)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($ACTION == 'imprimer' && $etape == 2) {
    Erreur500::prevention_et_gestion_erreurs_fatales(FALSE, TRUE);
    foreach ($_SESSION['tmp']['tab_pages_decoupe_pdf'] as $eleve_id => $tab_tirages) {
        list($eleve_identite, $page_numero) = $tab_tirages[1];
        DB_STRUCTURE_BREVET::DB_modifier_brevet_fichier($eleve_id);
        $fichier_extraction_chemin = CHEMIN_DOSSIER_OFFICIEL . $_SESSION['BASE'] . DS . fabriquer_nom_fichier_bilan_officiel($eleve_id, $bilan_type, $annee_session_brevet);
        unset($_SESSION['tmp']['tab_pages_decoupe_pdf'][$eleve_id][1]);
        $releve_pdf = new PDFMerger();
        $pdf_string = $releve_pdf->addPDF(CHEMIN_DOSSIER_EXPORT . $_SESSION['tmp']['fichier_nom'] . '.pdf', $page_numero)->merge('file', $fichier_extraction_chemin);
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 3/4 - Le PDF complet est généré ; on découpe individuellement les fiches brevet par élève puis on zippe l'ensemble
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($ACTION == 'imprimer' && $etape == 3) {
    Erreur500::prevention_et_gestion_erreurs_fatales(FALSE, TRUE);
    $date = date('Y-m-d');
    $tab_pages_non_anonymes = array();
    $chemin_temp_pdf = CHEMIN_DOSSIER_EXPORT . 'pdf_' . mt_rand() . DS;
    FileSystem::creer_ou_vider_dossier($chemin_temp_pdf);
Example #4
0
    if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $DB_ROW['user_id'] , $DB_ROW['officiel_type'] , $DB_ROW['periode_id'] )))
    {
      $_SESSION['tmp_droit_voir_archive'][$DB_ROW['user_id'].$DB_ROW['officiel_type']] = TRUE; // 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
      $tab_tbody[$DB_ROW['user_id']][$DB_ROW['periode_id']][] = '<a href="releve_pdf.php?fichier='.$DB_ROW['user_id'].'_'.$DB_ROW['officiel_type'].'_'.$DB_ROW['periode_id'].'" target="_blank">'.$tab_types[$DB_ROW['officiel_type']]['titre'].'</a>' ;
    }
  }
}

// autre boucle pour les fiches brevet (ce n'est pas la même table)
if(test_user_droit_specifique($_SESSION['DROIT_'.$tab_types['brevet']['droit'].'_VOIR_ARCHIVE']))
{
  $bilan_type = 'brevet';
  $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_fichiers( implode(',',$tab_eleve_id) );
  foreach($DB_TAB as $user_id => $tab)
  {
    if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $user_id , $bilan_type , $annee_session_brevet )))
    {
      $_SESSION['tmp_droit_voir_archive'][$user_id.$bilan_type] = TRUE; // 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
      $tab_tbody[$user_id]['+'.$annee_session_brevet][] = '<a href="releve_pdf.php?fichier='.$user_id.'_'.$bilan_type.'_'.$annee_session_brevet.'" target="_blank">'.$tab_types['brevet']['titre'].'</a>' ;
      $tab_thead['+'.$annee_session_brevet] = '<th class="hc">Année</th>';
    }
  }
}

// Assemblage et affichage du tableau.

echo'<p>Ces bilans sont des copies numériques, laissées à disposition <span class="danger">seulement jusqu\'à la fin de l\'année scolaire.</span></p>'.NL;
echo'<p class="astuce">Cliquer sur un lien atteste que vous avez pris connaissance du document correspondant.</p>'.NL;
echo'<hr />'.NL;
echo'<table id="table_bilans"><thead>'.NL.'<tr>'.implode('',$tab_thead).'</tr>'.NL.'</thead><tbody>'.NL;
unset($tab_thead[0]);
Example #5
0
  exit_error( 'Paramètre manquant' /*titre*/ , 'Page appelée sans indiquer la référence de l\'archive PDF à récupérer.' /*contenu*/ , '' /*lien*/ );
}

if( (!in_array($bilan_type,$tab_types)) || !$periode_id || !$eleve_id )
{
  exit_error( 'Paramètre incorrect' /*titre*/ , 'La valeur "'.html($FICHIER).'" transmise n\'est pas conforme.' /*contenu*/ , '' /*lien*/ );
}

// 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')