Esempio n. 1
0
    $tab_destinataires[$eleve_id][2] = ($_SESSION['OFFICIEL']['INFOS_RESPONSABLES']=='non') ? NULL : $tab_coords_resp2 ;
  }
  // Ajouter sur le 1er tirage le nom du 2e responsable si les adresses sont identiques et que le 2e bilan n'est imprimé qu'en cas d'adresses différentes
  if( ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES']=='deux_si_besoin') && ($tab_destinataires[$eleve_id][1]!=NULL) && (!isset($tab_destinataires[$eleve_id][2])) )
  {
    array_unshift($tab_destinataires[$eleve_id][1], $tab_coords_resp2[0]);
  }
}

// Récupérer le logo de l'établissement

$tab_etabl_logo = NULL;
$logo_hauteur = 0;
if(mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'],'logo'))
{
  $DB_ROW = DB_STRUCTURE_IMAGE::DB_recuperer_image( 0 /*user_id*/ , 'logo' );
  if(!empty($DB_ROW))
  {
    $tab_etabl_logo = array( base64_decode($DB_ROW['image_contenu']) , $DB_ROW['image_format'] , $DB_ROW['image_largeur'] , $DB_ROW['image_hauteur'] );
    $logo_hauteur = 7;
  }
}

// Bloc des coordonnées de l'établissement

$tab_etabl_coords = array();
if(mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'],'denomination'))
{
  $tab_etabl_coords['denomination'] = $_SESSION['ETABLISSEMENT']['DENOMINATION'];
}
if(mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'],'adresse'))
  $image_format = $tab_extension_types[$image_type];
  // stocker l'image dans la base
  DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'signature' , base64_encode(file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name)) , $image_format , $image_largeur , $image_hauteur );
  // Générer la balise html et afficher le retour
  list($width,$height) = dimensions_affichage_image( $image_largeur , $image_hauteur , 200 /*largeur_maxi*/ , 200 /*hauteur_maxi*/ );
  $user_texte = ($user_id) ? 'Signature '.$user_texte : $user_texte ;
  exit('<li id="sgn_'.$user_id.'">'.html($user_texte).' : <img src="'.URL_DIR_IMPORT.FileSystem::$file_saved_name.'" alt="'.html($user_texte).'" width="'.$width.'" height="'.$height.'" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un fichier image (tampon de l'établissement ou signature)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='delete_signature') && ($user_id>=0) )
{
  DB_STRUCTURE_IMAGE::DB_supprimer_image( $user_id , 'signature' );
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if(empty($_POST))
{
  exit('Erreur : aucune donnée reçue ! Fichier trop lourd ? '.InfoServeur::minimum_limitations_upload());
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$img_height = PHOTO_DIMENSION_MAXI;
$img_width  = PHOTO_DIMENSION_MAXI*2/3;
foreach($DB_TAB as $DB_ROW)
{
  $tab_vignettes[$DB_ROW['user_id']] = array(
    'user_nom'    => $DB_ROW['user_nom'],
    'user_prenom' => $DB_ROW['user_prenom'],
    'img_width'   => $img_width,
    'img_height'  => $img_height,
    'img_src'     => '',
    'img_title'   => TRUE,
  );
}
// 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);
    if (!isset($tab_extension_types[$image_type])) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
        exit('Erreur : le fichier transmis n\'est pas un fichier image (type ' . $image_type . ') !');
    }
    $image_format = $tab_extension_types[$image_type];
    // stocker l'image dans la base
    DB_STRUCTURE_IMAGE::DB_modifier_image(0, 'logo', base64_encode(file_get_contents(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name)), $image_format, $image_largeur, $image_hauteur);
    // Générer la balise html et afficher le retour
    list($width, $height) = dimensions_affichage_image($image_largeur, $image_hauteur, 200, 200);
    exit('<li><img src="' . URL_DIR_IMPORT . FileSystem::$file_saved_name . '" alt="Logo établissement" width="' . $width . '" height="' . $height . '" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un fichier image (logo de l'établissement)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'delete_logo') {
    DB_STRUCTURE_IMAGE::DB_supprimer_image(0, 'logo');
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mettre à jour mois_bascule_annee_scolaire
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($mois_bascule_annee_scolaire) {
    $tab_parametres = array();
    $tab_parametres['mois_bascule_annee_scolaire'] = $mois_bascule_annee_scolaire;
    DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
    // On modifie aussi la session
    $_SESSION['MOIS_BASCULE_ANNEE_SCOLAIRE'] = $mois_bascule_annee_scolaire;
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mettre à jour la langue par défaut
    for ($i = $mini; $i <= $maxi; $i++) {
        $options .= '<option value="' . $i . '">' . number_format($i / 10, 1, ',', '') . 'cm</option>';
    }
    return $options;
}
$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;
?>
Esempio n. 6
0
 * 
 * Ce fichier est une partie de SACoche.
 * 
 * SACoche est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes 
 * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation :
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
}
// On récupère l'identifiant de l'élève
$user_id = isset($_GET['user_id']) ? (int) $_GET['user_id'] : -1;
if ($user_id == -1) {
    exit('Erreur avec les données transmises !');
}
// On récupère la photo
// $user_id=0 possible si mode bulletin et consultation des données sur le groupe classe (pas un élève en particulier)
$DB_ROW = $user_id ? DB_STRUCTURE_IMAGE::DB_recuperer_image($user_id, 'photo') : NULL;
$image = !empty($DB_ROW) ? '<img width="' . $DB_ROW['image_largeur'] . '" height="' . $DB_ROW['image_hauteur'] . '" src="data:' . image_type_to_mime_type(IMAGETYPE_JPEG) . ';base64,' . $DB_ROW['image_contenu'] . '" alt="" />' : '<img width="' . PHOTO_DIMENSION_MAXI * 2 / 3 . '" height="' . PHOTO_DIMENSION_MAXI . '" src="./_img/trombinoscope_vide.png" alt="" title="absence de photo" />';
// On affiche le résultat
exit($image);
/**
 * Traiter un fichier photo : le vérifier, redimensionner l'image, enregistrer en BDD son contenu, effacer les fichiers correspondants
 *
 * @param int      $user_id
 * @param string   $fichier_chemin
 * @return string|array   un message d'erreur ou un tableau avec [ contenu_base_64 , largeur , hauteur ]
 */
function photo_file_to_base($user_id,$fichier_chemin)
{
  // vérifier la conformité du fichier image, récupérer les infos le concernant
  $tab_infos = @getimagesize($fichier_chemin);
  if($tab_infos==FALSE)
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'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]))
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis n\'est pas un fichier image';
  }
  // vérifier les dimensions
  if( ($image_largeur>1024) || ($image_hauteur>1024) )
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis a des dimensions trop grandes ('.$image_largeur.' sur '.$image_hauteur.')';
  }
  if( ($image_largeur==0) && ($image_hauteur==0) )
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis a des dimensions indéterminables';
  }
  // C'est bon, on continue
  $fichier_chemin_vignette = $fichier_chemin.'.mini.jpeg';
  $image_format = $tab_extension_types[$image_type];
  $coef = PHOTO_DIMENSION_MAXI / max($image_largeur,$image_hauteur);
  $largeur_new = round($image_largeur*$coef);
  $hauteur_new = round($image_hauteur*$coef);
  $image_new    = function_exists('imagecreatetruecolor') ? imagecreatetruecolor($largeur_new,$hauteur_new) : imagecreate($largeur_new,$hauteur_new) ;
  $couleur_fond = imagecolorallocate($image_new,255,255,255); // Le premier appel à imagecolorallocate() remplit la couleur de fond si imagecreate().
  $couleur_fill = imagefill($image_new, 0, 0, $couleur_fond); // Si imagecreatetruecolor(), l'image est noire et il faut la remplir explicitement.
  $image_depart = call_user_func( 'imagecreatefrom'.$image_format, $fichier_chemin );
  imagecopyresampled($image_new , $image_depart , 0 /* dest_x */ , 0 /* dest_y */ , 0 /* dep_x */ , 0 /* dep_y */ , $largeur_new , $hauteur_new , $image_largeur , $image_hauteur );
  imagedestroy($image_depart);
  imagejpeg($image_new , $fichier_chemin_vignette , JPEG_QUALITY );
  imagedestroy($image_new);
  // stocker l'image dans la base
  $image_contenu_base_64 = base64_encode(file_get_contents($fichier_chemin_vignette)) ;
  DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'photo' , $image_contenu_base_64 , 'jpeg' , $largeur_new , $hauteur_new );
  // effacer les fichiers images
  FileSystem::supprimer_fichier($fichier_chemin);
  FileSystem::supprimer_fichier($fichier_chemin_vignette);
  // retour des informations
  return array( $image_contenu_base_64 , $largeur_new , $hauteur_new );
}
Esempio n. 8
0
    // Tirage pour le 1er responsable
    $tab_destinataires[$eleve_id][1] = $_SESSION['OFFICIEL']['INFOS_RESPONSABLES'] == 'non' ? NULL : $tab_coords_resp1;
    // Tirage pour le 2e responsable
    if ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES'] == 'deux_de_force' && $tab_coords_resp2 != NULL || $_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES'] == 'deux_si_besoin' && $tab_coords_resp2 != NULL && ($tab_coords_resp1 == NULL || array_slice($tab_coords_resp2, 1) != array_slice($tab_coords_resp1, 1))) {
        $tab_destinataires[$eleve_id][2] = $_SESSION['OFFICIEL']['INFOS_RESPONSABLES'] == 'non' ? NULL : $tab_coords_resp2;
    }
    // Ajouter sur le 1er tirage le nom du 2e responsable si les adresses sont identiques et que le 2e bilan n'est imprimé qu'en cas d'adresses différentes
    if ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES'] == 'deux_si_besoin' && $tab_destinataires[$eleve_id][1] != NULL && !isset($tab_destinataires[$eleve_id][2])) {
        array_unshift($tab_destinataires[$eleve_id][1], $tab_coords_resp2[0]);
    }
}
// Récupérer le logo de l'établissement
$tab_etabl_logo = NULL;
$logo_hauteur = 0;
if (mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'], 'logo')) {
    $DB_ROW = DB_STRUCTURE_IMAGE::DB_recuperer_image(0, 'logo');
    if (!empty($DB_ROW)) {
        $tab_etabl_logo = array(base64_decode($DB_ROW['image_contenu']), $DB_ROW['image_format'], $DB_ROW['image_largeur'], $DB_ROW['image_hauteur']);
        $logo_hauteur = 7;
    }
}
// Bloc des coordonnées de l'établissement
$tab_etabl_coords = array();
if (mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'], 'denomination')) {
    $tab_etabl_coords['denomination'] = $_SESSION['ETABLISSEMENT']['DENOMINATION'];
}
if (mb_substr_count($_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'], 'adresse')) {
    if ($_SESSION['ETABLISSEMENT']['ADRESSE1']) {
        $tab_etabl_coords['adresse1'] = $_SESSION['ETABLISSEMENT']['ADRESSE1'];
    }
    if ($_SESSION['ETABLISSEMENT']['ADRESSE2']) {
  }
  $image_format = $tab_extension_types[$image_type];
  // stocker l'image dans la base
  DB_STRUCTURE_IMAGE::DB_modifier_image( 0 /*user_id*/ , 'logo' , base64_encode(file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name)) , $image_format , $image_largeur , $image_hauteur );
  // Générer la balise html et afficher le retour
  list($width,$height) = dimensions_affichage_image( $image_largeur , $image_hauteur , 200 /*largeur_maxi*/ , 200 /*hauteur_maxi*/ );
  exit('<li><img src="'.URL_DIR_IMPORT.FileSystem::$file_saved_name.'" alt="Logo établissement" width="'.$width.'" height="'.$height.'" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un fichier image (logo de l'établissement)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='delete_logo')
{
  DB_STRUCTURE_IMAGE::DB_supprimer_image( 0 /*user_id*/ , 'logo' );
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mettre à jour mois_bascule_annee_scolaire
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( $mois_bascule_annee_scolaire )
{
  $tab_parametres = array();
  $tab_parametres['mois_bascule_annee_scolaire'] = $mois_bascule_annee_scolaire;
  DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
  // On modifie aussi la session
  $_SESSION['MOIS_BASCULE_ANNEE_SCOLAIRE'] = $mois_bascule_annee_scolaire;
  exit('ok');