* Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * 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.
    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);
    foreach ($_SESSION['tmp']['tab_pages_decoupe_pdf'] as $eleve_id => $tab_tirages) {
        list($eleve_identite, $page_numero) = $tab_tirages[0];
        $tab_pages_non_anonymes[] = $page_numero;
        $fichier_extraction_chemin = $chemin_temp_pdf . 'officiel_' . $bilan_type . '_' . Clean::fichier($eleve_identite) . '_' . $date . '.pdf';
        $releve_pdf = new PDFMerger();
        $pdf_string = $releve_pdf->addPDF(CHEMIN_DOSSIER_EXPORT . $_SESSION['tmp']['fichier_nom'] . '.pdf', $page_numero)->merge('file', $fichier_extraction_chemin);
    }
    FileSystem::zipper_fichiers($chemin_temp_pdf, CHEMIN_DOSSIER_EXPORT, $_SESSION['tmp']['fichier_nom'] . '.zip');
    FileSystem::supprimer_dossier($chemin_temp_pdf);
    $_SESSION['tmp']['pages_non_anonymes'] = implode(',', $tab_pages_non_anonymes);
    unset($_SESSION['tmp']['tab_pages_decoupe_pdf']);
          }
        }
      }
    }
  }
  // Retour
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 3/4 - Le PDF complet est généré ; on découpe individuellement les bilans par responsables puis on zippe l'ensemble
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($ACTION=='imprimer') && ($etape==3) )
{
  Erreur500::prevention_et_gestion_erreurs_fatales( FALSE /*memory*/ , TRUE /*time*/ );
  $date = date('Y-m-d');
  $tab_pages_non_anonymes     = array();
  $tab_pages_nombre_par_bilan = array();
  $chemin_temp_pdf = CHEMIN_DOSSIER_EXPORT.'pdf_'.mt_rand().DS;
  FileSystem::creer_ou_vider_dossier($chemin_temp_pdf);
  foreach($_SESSION['tmp']['tab_pages_decoupe_pdf'] as $eleve_id => $tab_tirages)
  {
    foreach($tab_tirages as $numero_tirage => $tab)
    {
      list( $eleve_identite , $page_plage , $page_nombre ) = $tab;
      $tab_pages_non_anonymes[]     = $page_plage;
      $tab_pages_nombre_par_bilan[] = $page_nombre;
      $fichier_extraction_chemin = $chemin_temp_pdf.'officiel_'.$BILAN_TYPE.'_'.Clean::fichier($eleve_identite).'_'.$date.'_resp'.$numero_tirage.'.pdf';
      $releve_pdf = new PDFMerger;
      $pdf_string = $releve_pdf -> addPDF( CHEMIN_DOSSIER_EXPORT.$_SESSION['tmp']['fichier_nom'].'.pdf' , $page_plage ) -> merge( 'file' , $fichier_extraction_chemin );
Exemple #4
0
 public static function prevention_et_gestion_erreurs_fatales($memory, $time)
 {
     if ($memory) {
         Erreur500::augmenter_memory_limit();
     }
     if ($time) {
         Erreur500::augmenter_max_execution_time();
     }
     register_shutdown_function(array('Erreur500', 'rapporter_erreur_fatale_memoire_ou_duree'));
     // @see http://fr.php.net/manual/fr/language.types.callable.php
 }