}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$check = isset($_POST['f_check']) ? Clean::entier($_POST['f_check']) : 0;
$id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0;
$id_ent = isset($_POST['f_id_ent']) ? Clean::texte($_POST['f_id_ent']) : '';
$id_gepi = isset($_POST['f_id_gepi']) ? Clean::texte($_POST['f_id_gepi']) : '';
$sconet_id = isset($_POST['f_sconet_id']) ? Clean::entier($_POST['f_sconet_id']) : 0;
$reference = isset($_POST['f_reference']) ? Clean::ref($_POST['f_reference']) : '';
$profil = isset($_POST['f_profil']) ? Clean::texte($_POST['f_profil']) : '';
$genre = isset($_POST['f_genre']) ? Clean::texte($_POST['f_genre']) : '';
$nom = isset($_POST['f_nom']) ? Clean::nom($_POST['f_nom']) : '';
$prenom = isset($_POST['f_prenom']) ? Clean::prenom($_POST['f_prenom']) : '';
$login = isset($_POST['f_login']) ? Clean::login($_POST['f_login']) : '';
$password = isset($_POST['f_password']) ? Clean::password($_POST['f_password']) : '';
$sortie_date = isset($_POST['f_sortie_date']) ? Clean::date_fr($_POST['f_sortie_date']) : '';
$box_login = isset($_POST['box_login']) ? Clean::entier($_POST['box_login']) : 0;
$box_password = isset($_POST['box_password']) ? Clean::entier($_POST['box_password']) : 0;
$box_date = isset($_POST['box_date']) ? Clean::entier($_POST['box_date']) : 0;
$courriel = isset($_POST['f_courriel']) ? Clean::courriel($_POST['f_courriel']) : '';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Ajouter un nouveau personnel
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'ajouter' && $profil && isset(Html::$tab_genre['adulte'][$genre]) && $nom && $prenom && ($box_login || $login) && ($box_password || $password) && ($box_date || $sortie_date)) {
    // Vérifier le profil
    if (!isset($_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil]) || !in_array($_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil], array('professeur', 'directeur'))) {
        exit('Erreur : profil incorrect !');
    }
    // Vérifier que l'identifiant ENT est disponible (parmi tous les utilisateurs de l'établissement)
 //
 // On passe les utilisateurs en revue : on mémorise leurs infos, les classes trouvées
 // Attention : en l'absence de donnée, un champ peut contenir la valeur "Non saisi"
 //
 $tab_genre = array('' => 'I', 'Masculin' => 'M', 'Féminin' => 'F');
 foreach ($tab_lignes as $ligne_contenu) {
     $tab_elements = str_getcsv($ligne_contenu, $separateur);
     if (count($tab_elements) > $numero_max) {
         $sconet_num = $tab_elements[$tab_numero_colonne['sconet_num']] != "Non saisi" ? $tab_elements[$tab_numero_colonne['sconet_num']] : '';
         $nom = $tab_elements[$tab_numero_colonne['nom']] != "Non saisi" ? $tab_elements[$tab_numero_colonne['nom']] : '';
         $prenom = $tab_elements[$tab_numero_colonne['prenom']] != "Non saisi" ? $tab_elements[$tab_numero_colonne['prenom']] : '';
         $genre = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I';
         $birth_date = $tab_elements[$tab_numero_colonne['birth_date']] != "Non saisi" ? $tab_elements[$tab_numero_colonne['birth_date']] : '';
         $classe = $tab_elements[$tab_numero_colonne['classe']] != "Non saisi" ? $tab_elements[$tab_numero_colonne['classe']] : '';
         if ($nom != '' && $prenom != '' && $classe != '') {
             $i_classe = 'i' . Clean::login($classe);
             // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort().
             $tab_users_fichier['sconet_id'][] = 0;
             $tab_users_fichier['sconet_num'][] = Clean::entier($sconet_num);
             $tab_users_fichier['reference'][] = '';
             $tab_users_fichier['profil_sigle'][] = 'ELV';
             $tab_users_fichier['genre'][] = $genre;
             $tab_users_fichier['nom'][] = Clean::nom($nom);
             $tab_users_fichier['prenom'][] = Clean::prenom($prenom);
             $tab_users_fichier['birth_date'][] = Clean::texte($birth_date);
             $tab_users_fichier['courriel'][] = '';
             $tab_users_fichier['classe'][] = $i_classe;
             if (!isset($tab_classes_fichier['ref'][$i_classe])) {
                 $tab_classes_fichier['ref'][$i_classe] = mb_substr(Clean::ref($classe), 0, 8);
                 $tab_classes_fichier['nom'][$i_classe] = mb_substr(Clean::texte($classe), 0, 20);
                 $tab_classes_fichier['niveau'][$i_classe] = '';
Example #3
0
/**
 * Fabriquer un login à partir de nom/prénom selon le format paramétré par l'administrateur (reste à tester sa disponibilité).
 * Cette fonction n'est appelée que depuis un espace administrateur ; $_SESSION['TAB_PROFILS_ADMIN']['LOGIN_MODELE'] est donc défini.
 * 
 * @param string $prenom
 * @param string $nom
 * @param string $profil_sigle
 * @return string
 */
function fabriquer_login($prenom,$nom,$profil_sigle)
{
  $modele = $_SESSION['TAB_PROFILS_ADMIN']['LOGIN_MODELE'][$profil_sigle];
  $login_prenom = mb_substr( str_replace(array('.','-','_'),'',Clean::login($prenom)) , 0 , mb_substr_count($modele,'p') );
  $login_nom    = mb_substr( str_replace(array('.','-','_'),'',Clean::login($nom))    , 0 , mb_substr_count($modele,'n') );
  $login_separe = str_replace(array('p','n'),'',$modele);
  $login = ($modele{0}=='p') ? $login_prenom.$login_separe.$login_nom : $login_nom.$login_separe.$login_prenom ;
  return $login;
}
 $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_nom);
 $contenu = To::deleteBOM(To::utf8($contenu));
 // Mettre en UTF-8 si besoin et retirer le BOM éventuel
 $tab_lignes = extraire_lignes($contenu);
 // Extraire les lignes du fichier
 $separateur = extraire_separateur_csv($tab_lignes[0]);
 // Déterminer la nature du séparateur
 unset($tab_lignes[0]);
 // Supprimer la 1e ligne
 foreach ($tab_lignes as $ligne_contenu) {
     $tab_elements = str_getcsv($ligne_contenu, $separateur);
     $tab_elements = array_slice($tab_elements, 0, 4);
     if (count($tab_elements) == 4) {
         list($login, $mdp, $nom, $prenom) = $tab_elements;
         if ($nom != '' && $prenom != '') {
             $tab_users_fichier['login'][] = mb_substr(Clean::login($login), 0, 20);
             $tab_users_fichier['mdp'][] = $mdp != 'inchangé' ? mb_substr(Clean::password($mdp), 0, 20) : '';
             $tab_users_fichier['nom'][] = Clean::nom($nom);
             $tab_users_fichier['prenom'][] = Clean::prenom($prenom);
         }
     }
 }
 // On trie
 array_multisort($tab_users_fichier['nom'], SORT_ASC, SORT_STRING, $tab_users_fichier['prenom'], SORT_ASC, SORT_STRING, $tab_users_fichier['login'], $tab_users_fichier['mdp']);
 // On récupère le contenu de la base pour comparer, y compris les professeurs afin de comparer avec leurs logins, et y compris les classes pour les étiquettes pdf
 $tab_users_base = array();
 $tab_users_base['login'] = array();
 $tab_users_base['mdp'] = array();
 $tab_users_base['nom'] = array();
 $tab_users_base['prenom'] = array();
 $tab_users_base['info'] = array();
Example #5
0
 * Donc imagecolorallocatealpha() a été remplacé par imagecolorallocate() et imagealphablending($image_finale, false); + imagesavealpha($image_finale, true); ont été retirés.
 */
// Ce fichier est directement appelé par le navigateur et n'inclut pas tous les fichiers habituels.
header("Content-type: image/png");
// Constantes / Configuration serveur / Autoload classes / Fonction de sortie
require '../../_inc/_loader.php';
// Non chargé par le loader dont on ne prend que le début
require CHEMIN_DOSSIER_INCLUDE . 'class.Clean.php';
$dossier = isset($_GET['dossier']) ? Clean::entier($_GET['dossier']) : 'x';
$nom = isset($_GET['nom']) ? Clean::nom($_GET['nom']) : ' ';
$prenom = isset($_GET['prenom']) ? Clean::prenom($_GET['prenom']) : ' ';
$br_line = isset($_GET['br']) ? 2 : 1;
// 2 pour nom / retour à la ligne / prénom ; 1 pour nom / prénom à la suite
$font_size = isset($_GET['size']) ? Clean::entier($_GET['size']) : 10;
$chemin = CHEMIN_DOSSIER_BADGE . $dossier . DS;
$fichier = $chemin . Clean::login($nom . '_' . $prenom) . '_' . $br_line . '_' . $font_size . '.png';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Créer l'image si elle n'existe pas
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (!file_exists($fichier)) {
    // S'assurer que le dossier, lui, existe bien au moins, sinon ce n'est pas la peine de poursuivre
    if (!is_dir($chemin)) {
        header('Status: 404 Not Found', true, 404);
        exit;
    }
    // On commence par créer une image temporaire plus large et plus haute que nécessaire
    $interligne = $font_size * 1.2;
    $hauteur_tmp = $font_size * 2 * $br_line;
    $largeur_tmp = $font_size * 40;
    // imagecreatetruecolor() n'est pas utilisé ici sinon imagecopy() utilisé ensuite peut faire apparaitre une bande noire...
    // $image_tmp      = function_exists('imagecreatetruecolor') ? imagecreatetruecolor($largeur_tmp,$hauteur_tmp) : imagecreate($largeur_tmp,$hauteur_tmp) ;
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$BASE = isset($_POST['f_base']) ? Clean::entier($_POST['f_base']) : 0;
$nom = isset($_POST['f_nom']) ? Clean::nom($_POST['f_nom']) : '';
$prenom = isset($_POST['f_prenom']) ? Clean::prenom($_POST['f_prenom']) : '';
$courriel = isset($_POST['f_courriel']) ? Clean::courriel($_POST['f_courriel']) : '';
$message = isset($_POST['f_message']) ? Clean::texte($_POST['f_message']) : '';
$captcha = isset($_POST['f_captcha']) ? Clean::texte($_POST['f_captcha']) : '';
$code = isset($_POST['f_code']) ? Clean::entier($_POST['f_code']) : 0;
$md5 = isset($_POST['f_md5']) ? Clean::login($_POST['f_md5']) : '';
if (!$nom || !$prenom || !$courriel || !$message || HEBERGEUR_INSTALLATION == 'multi-structures' && !$BASE || $code && !$md5 || $md5 && !$code) {
    exit_json(FALSE, 'Erreur avec les données transmises !');
}
// Protection contre les robots (pour éviter des envois intempestifs de courriels)
if (!isset($_SESSION['TMP']['CAPTCHA'])) {
    exit_json(FALSE, 'Session perdue ou absence de cookie : merci d\'actualiser la page.');
} else {
    if ($_SERVER['REQUEST_TIME'] - $_SESSION['TMP']['CAPTCHA']['TIME'] < $_SESSION['TMP']['CAPTCHA']['DELAI']) {
        $_SESSION['TMP']['CAPTCHA']['TIME'] = $_SERVER['REQUEST_TIME'];
        exit_json(FALSE, 'Sécurité : patienter ' . $_SESSION['TMP']['CAPTCHA']['DELAI'] . 's avant une nouvelle tentative.');
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Première soumission : envoyer un code de confirmation par courriel et conserver un code de contrôle
// ////////////////////////////////////////////////////////////////////////////////////////////////////
 $tab_users_fichier['prenom'] = array();
 $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT.$fichier_nom);
 $contenu = To::deleteBOM(To::utf8($contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
 $tab_lignes = extraire_lignes($contenu); // Extraire les lignes du fichier
 $separateur = extraire_separateur_csv($tab_lignes[0]); // Déterminer la nature du séparateur
 unset($tab_lignes[0]); // Supprimer la 1e ligne
 foreach ($tab_lignes as $ligne_contenu)
 {
   $tab_elements = str_getcsv($ligne_contenu,$separateur);
   $tab_elements = array_slice($tab_elements,0,4);
   if(count($tab_elements)==4)
   {
     list($login,$mdp,$nom,$prenom) = $tab_elements;
     if( ($nom!='') && ($prenom!='') )
     {
       $tab_users_fichier['login'][]  = mb_substr(Clean::login($login),0,LOGIN_LONGUEUR_MAX);
       $tab_users_fichier['mdp'][]    = ($mdp!='inchangé') ? mb_substr(Clean::password($mdp),0,PASSWORD_LONGUEUR_MAX) : '';
       $tab_users_fichier['nom'][]    = Clean::nom($nom);
       $tab_users_fichier['prenom'][] = Clean::prenom($prenom);
     }
   }
 }
 // On trie
 array_multisort(
   $tab_users_fichier['nom']   , SORT_ASC,SORT_STRING,
   $tab_users_fichier['prenom'], SORT_ASC,SORT_STRING,
   $tab_users_fichier['login'],
   $tab_users_fichier['mdp']
 );
 // On récupère le contenu de la base pour comparer, y compris les professeurs afin de comparer avec leurs logins, et y compris les classes pour les étiquettes pdf
 $tab_users_base           = array();
 //
 $tab_genre = array( ''=>'I' , 'Non saisi'=>'I' , 'Masculin'=>'M' , 'Féminin'=>'F' );
 foreach ($tab_lignes as $ligne_contenu)
 {
   $tab_elements = str_getcsv($ligne_contenu,$separateur);
   if(count($tab_elements)>$numero_max)
   {
     $sconet_num = ($tab_elements[$tab_numero_colonne['sconet_num']]!="Non saisi") ? $tab_elements[$tab_numero_colonne['sconet_num']] : '' ;
     $nom        = ($tab_elements[$tab_numero_colonne['nom'       ]]!="Non saisi") ? $tab_elements[$tab_numero_colonne['nom'       ]] : '' ;
     $prenom     = ($tab_elements[$tab_numero_colonne['prenom'    ]]!="Non saisi") ? $tab_elements[$tab_numero_colonne['prenom'    ]] : '' ;
     $genre      = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I' ;
     $birth_date = ($tab_elements[$tab_numero_colonne['birth_date']]!="Non saisi") ? $tab_elements[$tab_numero_colonne['birth_date']] : '' ;
     $classe     = ($tab_elements[$tab_numero_colonne['classe'    ]]!="Non saisi") ? $tab_elements[$tab_numero_colonne['classe'    ]] : '' ;
     if( ($nom!='') && ($prenom!='') && ($classe!='') )
     {
       $i_classe   = 'i'.Clean::login($classe); // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort().
       $tab_users_fichier['sconet_id'   ][] = 0;
       $tab_users_fichier['sconet_num'  ][] = Clean::entier($sconet_num);
       $tab_users_fichier['reference'   ][] = '';
       $tab_users_fichier['profil_sigle'][] = 'ELV' ;
       $tab_users_fichier['genre'       ][] = $genre;
       $tab_users_fichier['nom'         ][] = Clean::nom($nom);
       $tab_users_fichier['prenom'      ][] = Clean::prenom($prenom);
       $tab_users_fichier['birth_date'  ][] = Clean::texte($birth_date);
       $tab_users_fichier['courriel'    ][] = '';
       $tab_users_fichier['classe'      ][] = $i_classe;
       if( !isset($tab_classes_fichier['ref'][$i_classe]))
       {
         $tab_classes_fichier['ref'   ][$i_classe] = mb_substr(Clean::ref($classe),0,8);
         $tab_classes_fichier['nom'   ][$i_classe] = mb_substr(Clean::texte($classe),0,20);
         $tab_classes_fichier['niveau'][$i_classe] = '';