Beispiel #1
0
function afficher_formulaire_identification($profil,$mode='normal',$nom='')
{
  $affichage = '';
  if($profil=='webmestre')
  {
    $affichage .= '<label class="tab" for="f_password">Mot de passe :</label><input id="f_password" name="f_password" size="'.(PASSWORD_LONGUEUR_MAX-5).'" maxlength="'.PASSWORD_LONGUEUR_MAX.'" type="password" value="" tabindex="1" autocomplete="off" /><br />'.NL;
    $affichage .= '<span class="tab"></span><input id="f_login" name="f_login" type="hidden" value="'.$profil.'" /><input id="f_mode" name="f_mode" type="hidden" value="normal" /><input id="f_profil" name="f_profil" type="hidden" value="'.$profil.'" /><input id="f_action" name="f_action" type="hidden" value="identifier" /><button id="f_submit" type="submit" tabindex="2" class="mdp_perso">Accéder à son espace.</button><label id="ajax_msg">&nbsp;</label><br />'.NL;
    $affichage .= '<span class="tab"></span><a id="lien_lost" href="#webmestre">[ Identifiants perdus ]</a>'.NL;
  }
  elseif($profil=='partenaire')
  {
    // Lecture d'un cookie sur le poste client servant à retenir le dernier partenariat sélectionné si identification avec succès
    $selection = (isset($_COOKIE[COOKIE_PARTENAIRE])) ? Clean::entier($_COOKIE[COOKIE_PARTENAIRE]) : FALSE ;
    $options_partenaires = HtmlForm::afficher_select(DB_WEBMESTRE_SELECT::DB_OPT_partenaires_conventionnes() , FALSE /*select_nom*/ , '' /*option_first*/ , $selection , '' /*optgroup*/ );
    $affichage .= '<label class="tab" for="f_partenaire">Partenariat :</label><select id="f_partenaire" name="f_partenaire" tabindex="1" class="t9">'.$options_partenaires.'</select><br />'.NL;
    $affichage .= '<label class="tab" for="f_password">Mot de passe :</label><input id="f_password" name="f_password" size="'.(PASSWORD_LONGUEUR_MAX-5).'" maxlength="'.PASSWORD_LONGUEUR_MAX.'" type="password" value="" tabindex="2" autocomplete="off" /><br />'.NL;
    $affichage .= '<span class="tab"></span><input id="f_mode" name="f_mode" type="hidden" value="normal" /><input id="f_profil" name="f_profil" type="hidden" value="'.$profil.'" /><input id="f_action" name="f_action" type="hidden" value="identifier" /><button id="f_submit" type="submit" tabindex="3" class="mdp_perso">Accéder à son espace.</button><label id="ajax_msg">&nbsp;</label><br />'.NL;
    $affichage .= '<span class="tab"></span><a id="lien_lost" href="#partenaire">[ Identifiants perdus ]</a>'.NL;
  }
  elseif($profil=='developpeur')
  {
    $affichage .= '<label class="tab" for="f_password">Mot de passe :</label><input id="f_password" name="f_password" size="'.(PASSWORD_LONGUEUR_MAX-5).'" maxlength="'.PASSWORD_LONGUEUR_MAX.'" type="password" value="" tabindex="1" autocomplete="off" /><br />'.NL;
    $affichage .= '<span class="tab"></span><input id="f_login" name="f_login" type="hidden" value="'.$profil.'" /><input id="f_mode" name="f_mode" type="hidden" value="normal" /><input id="f_profil" name="f_profil" type="hidden" value="'.$profil.'" /><input id="f_action" name="f_action" type="hidden" value="identifier" /><button id="f_submit" type="submit" tabindex="2" class="mdp_perso">Accéder à son espace.</button><label id="ajax_msg">&nbsp;</label><br />'.NL;
  }
  elseif($mode=='normal')
  {
    $affichage .= '<label class="tab" for="f_login">Nom d\'utilisateur :</label><input id="f_login" name="f_login" size="'.(LOGIN_LONGUEUR_MAX-5).'" maxlength="'.LOGIN_LONGUEUR_MAX.'" type="text" value="" tabindex="2" autocomplete="off" /><br />'.NL;
    $affichage .= '<label class="tab" for="f_password">Mot de passe :</label><input id="f_password" name="f_password" size="'.(PASSWORD_LONGUEUR_MAX-5).'" maxlength="'.PASSWORD_LONGUEUR_MAX.'" type="password" value="" tabindex="3" autocomplete="off" /><br />'.NL;
    $affichage .= '<span class="tab"></span><input id="f_mode" name="f_mode" type="hidden" value="normal" /><input id="f_profil" name="f_profil" type="hidden" value="structure" /><input id="f_action" name="f_action" type="hidden" value="identifier" /><button id="f_submit" type="submit" tabindex="4" class="mdp_perso">Accéder à son espace.</button><label id="ajax_msg">&nbsp;</label><br />'.NL;
    $affichage .= '<span class="tab"></span><a id="lien_lost" href="#structure">[ Identifiants perdus ]</a> <a id="contact_admin" href="#contact_admin">[ Contact établissement ]</a>'.NL;
  }
  else
  {
    $affichage .= '<label class="tab">Mode de connexion :</label>';
    $affichage .=   '<label for="f_mode_normal"><input type="radio" id="f_mode_normal" name="f_mode" value="normal" /> formulaire <em>SACoche</em></label>&nbsp;&nbsp;&nbsp;';
    $affichage .=   '<label for="f_mode_'.$mode.'"><input type="radio" id="f_mode_'.$mode.'" name="f_mode" value="'.$mode.'" checked /> authentification extérieure <em>'.html($mode.'-'.$nom).'</em></label><br />'.NL;
    $affichage .= '<fieldset id="fieldset_normal" class="hide">'.NL;
    $affichage .= '<label class="tab" for="f_login">Nom d\'utilisateur :</label><input id="f_login" name="f_login" size="'.(LOGIN_LONGUEUR_MAX-5).'" maxlength="'.LOGIN_LONGUEUR_MAX.'" type="text" value="" tabindex="2" autocomplete="off" /><br />'.NL;
    $affichage .= '<label class="tab" for="f_password">Mot de passe :</label><input id="f_password" name="f_password" size="'.(PASSWORD_LONGUEUR_MAX-5).'" maxlength="'.PASSWORD_LONGUEUR_MAX.'" type="password" value="" tabindex="3" autocomplete="off" /><br />'.NL;
    $affichage .= '</fieldset>'.NL;
    $affichage .= '<span class="tab"></span><input id="f_profil" name="f_profil" type="hidden" value="structure" /><input id="f_action" name="f_action" type="hidden" value="identifier" /><button id="f_submit" type="submit" tabindex="4" class="mdp_perso">Accéder à son espace.</button><label id="ajax_msg">&nbsp;</label><br />'.NL;
    $affichage .= '<span class="tab"></span><a id="lien_lost" class="hide" href="#structure">[ Identifiants perdus ]</a> <a id="contact_admin" href="#contact_admin">[ Contact établissement ]</a>'.NL;
  }
  return $affichage;
}
 * ****************************************************************************************************
 * SACoche <http://sacoche.sesamath.net> - Suivi d'Acquisitions de Compétences
 * © Thomas Crespin pour Sésamath <http://www.sesamath.net> - Tous droits réservés.
 * Logiciel placé sous la licence libre Affero GPL 3 <https://www.gnu.org/licenses/agpl-3.0.html>.
 * ****************************************************************************************************
 * 
 * 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/>.
 * 
 */
// Mettre à jour l'élément de formulaire "f_niveau" et le renvoyer en HTML
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
}
$niveau_famille_id = isset($_POST['f_famille_niveau']) ? Clean::entier($_POST['f_famille_niveau']) : 0;
if (!$niveau_famille_id) {
    exit('Erreur avec les données transmises !');
}
exit(HtmlForm::afficher_select(DB_STRUCTURE_COMMUN::DB_OPT_niveaux_famille($niveau_famille_id), FALSE, 'niveaux_famille', FALSE, ''));
 * 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) {exit('Action désactivée pour la démo...');}

$action          = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : '';
$notification_id = (isset($_POST['f_id']))     ? Clean::entier($_POST['f_id'])    : 0;

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mémoriser qu'une notification a été consultée
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='memoriser_consultation') && $notification_id )
{
  $is_modif = DB_STRUCTURE_NOTIFICATION::DB_modifier_statut( $notification_id , $_SESSION['USER_ID'] , 'consultée' );
  // Afficher le retour
  if($is_modif)
  {
    exit_json( TRUE );
  }
  else
  {
$infos_responsables               = (isset($_POST['f_infos_responsables']))               ? Clean::texte($_POST['f_infos_responsables'])                : '';
$horizontal_gauche                = (isset($_POST['f_horizontal_gauche']))                ? Clean::entier($_POST['f_horizontal_gauche'])                : 0;
$horizontal_milieu                = (isset($_POST['f_horizontal_milieu']))                ? Clean::entier($_POST['f_horizontal_milieu'])                : 0;
$horizontal_droite                = (isset($_POST['f_horizontal_droite']))                ? Clean::entier($_POST['f_horizontal_droite'])                : 0;
$vertical_haut                    = (isset($_POST['f_vertical_haut']))                    ? Clean::entier($_POST['f_vertical_haut'])                    : 0;
$vertical_milieu                  = (isset($_POST['f_vertical_milieu']))                  ? Clean::entier($_POST['f_vertical_milieu'])                  : 0;
$vertical_bas                     = (isset($_POST['f_vertical_bas']))                     ? Clean::entier($_POST['f_vertical_bas'])                     : 0;
$nombre_exemplaires               = (isset($_POST['f_nombre_exemplaires']))               ? Clean::texte($_POST['f_nombre_exemplaires'])                : '';
$marge_gauche                     = (isset($_POST['f_marge_gauche']))                     ? Clean::entier($_POST['f_marge_gauche'])                     : 0;
$marge_droite                     = (isset($_POST['f_marge_droite']))                     ? Clean::entier($_POST['f_marge_droite'])                     : 0;
$marge_haut                       = (isset($_POST['f_marge_haut']))                       ? Clean::entier($_POST['f_marge_haut'])                       : 0;
$marge_bas                        = (isset($_POST['f_marge_bas']))                        ? Clean::entier($_POST['f_marge_bas'])                        : 0;
$archive_ajout_message_copie      = (isset($_POST['f_archive_ajout_message_copie']))      ? Clean::entier($_POST['f_archive_ajout_message_copie'])      : 0;
$archive_retrait_tampon_signature = (isset($_POST['f_archive_retrait_tampon_signature'])) ? Clean::entier($_POST['f_archive_retrait_tampon_signature']) : 0;
$tampon_signature                 = (isset($_POST['f_tampon_signature']))                 ? Clean::texte($_POST['f_tampon_signature'])                  : '';
$user_id                          = (isset($_POST['f_user_id']))                          ? Clean::entier($_POST['f_user_id'])                          : -1;
$user_texte                       = (isset($_POST['f_user_texte']))                       ? Clean::texte($_POST['f_user_texte'])                        : '';

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement du formulaire form_mise_en_page, partie "coordonnees"
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='coordonnees')
{
  $tab_parametres = array();
  $tab_parametres['officiel_infos_etablissement'] = implode(',',$tab_coordonnees);
  DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
  // On modifie aussi la session
  $_SESSION['OFFICIEL']['INFOS_ETABLISSEMENT'] = implode(',',$tab_coordonnees) ;
  exit('ok');
}
Beispiel #5
0
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// En cas de multi-structures, il faut savoir dans quelle base récupérer les informations.
// Cette page est appelée par SACoche et dans ce cas c'est "base" qui est transmis.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$BASE = 0;
if (HEBERGEUR_INSTALLATION == 'multi-structures') {
    // Lecture d'un cookie sur le poste client servant à retenir le dernier établissement sélectionné si identification avec succès
    $BASE = isset($_COOKIE[COOKIE_STRUCTURE]) ? Clean::entier($_COOKIE[COOKIE_STRUCTURE]) : 0;
    // Test si id d'établissement transmis dans l'URL ; historiquement "id" si connexion normale et "base" si connexion SSO
    $BASE = isset($_GET['id']) ? Clean::entier($_GET['id']) : $BASE;
    $BASE = isset($_GET['base']) ? Clean::entier($_GET['base']) : $BASE;
    // Test si UAI d'établissement transmis dans l'URL
    $BASE = isset($_GET['uai']) ? DB_WEBMESTRE_PUBLIC::DB_recuperer_structure_id_base_for_UAI(Clean::uai($_GET['uai'])) : $BASE;
    if (!$BASE) {
        if (isset($_GET['uai'])) {
            exit_error('Paramètre incorrect', 'Le numéro UAI transmis n\'est pas référencé sur cette installation de SACoche : vérifiez son exactitude et si cet établissement est bien inscrit sur ce serveur.');
        } else {
            exit_error('Donnée manquante', 'Référence de base manquante (le paramètre "base" ou "id" n\'a pas été transmis en GET ou n\'est pas un entier et n\'a pas non plus été trouvé dans un Cookie).');
        }
    }
    charger_parametres_mysql_supplementaires($BASE);
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Connexion à la base pour charger les paramètres du SSO demandé
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mettre à jour la base si nécessaire
 */

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

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$OBJET       = (isset($_POST['f_objet']))       ? Clean::texte($_POST['f_objet'])       : '';
$ACTION      = (isset($_POST['f_action']))      ? Clean::texte($_POST['f_action'])      : '';
$BILAN_TYPE  = (isset($_POST['f_bilan_type']))  ? Clean::texte($_POST['f_bilan_type'])  : '';
$periode_id  = (isset($_POST['f_periode']))     ? Clean::entier($_POST['f_periode'])    : 0;
$classe_id   = (isset($_POST['f_classe']))      ? Clean::entier($_POST['f_classe'])     : 0;
$groupe_id   = (isset($_POST['f_groupe']))      ? Clean::entier($_POST['f_groupe'])     : 0;
$etape       = (isset($_POST['f_etape']))       ? Clean::entier($_POST['f_etape'])      : 0;
$page_parite = (isset($_POST['f_parite']))      ? Clean::entier($_POST['f_parite'])     : 0;
// Autres chaines spécifiques...
$listing_piliers  = (isset($_POST['f_listing_piliers']))  ? $_POST['f_listing_piliers']  : '' ;
$tab_pilier_id  = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' );
$liste_pilier_id  = implode(',',$tab_pilier_id);
$listing_eleves = (isset($_POST['f_listing_eleves']))  ? $_POST['f_listing_eleves']  : '' ;
$tab_eleve_id   = array_filter( Clean::map_entier( explode(',',$listing_eleves) )  , 'positif' );
$liste_eleve_id = implode(',',$tab_eleve_id);

$is_sous_groupe = ($groupe_id) ? TRUE : FALSE ;

$tab_objet  = array('imprimer','voir_archive');
$tab_action = array('initialiser','imprimer');

$tab_types = array
(
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
}
$type = isset($_POST['f_type']) ? Clean::texte($_POST['f_type']) : '';
$mode = isset($_POST['f_mode']) ? Clean::texte($_POST['f_mode']) : '';
$palier_id = isset($_POST['f_palier']) ? Clean::entier($_POST['f_palier']) : 0;
$palier_nom = isset($_POST['f_palier_nom']) ? Clean::texte($_POST['f_palier_nom']) : '';
$groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0;
$groupe_nom = isset($_POST['f_groupe_nom']) ? Clean::texte($_POST['f_groupe_nom']) : '';
$groupe_type = isset($_POST['f_groupe_type']) ? Clean::texte($_POST['f_groupe_type']) : '';
$couleur = isset($_POST['f_couleur']) ? Clean::texte($_POST['f_couleur']) : '';
$fond = isset($_POST['f_fond']) ? Clean::texte($_POST['f_fond']) : '';
$legende = isset($_POST['f_legende']) ? Clean::texte($_POST['f_legende']) : '';
$marge_min = isset($_POST['f_marge_min']) ? Clean::entier($_POST['f_marge_min']) : 0;
$eleves_ordre = isset($_POST['f_eleves_ordre']) ? Clean::texte($_POST['f_eleves_ordre']) : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_pilier_id = isset($_POST['f_pilier']) ? is_array($_POST['f_pilier']) ? $_POST['f_pilier'] : explode(',', $_POST['f_pilier']) : array();
$tab_eleve_id = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array();
$tab_matiere_id = isset($_POST['f_matiere']) ? is_array($_POST['f_matiere']) ? $_POST['f_matiere'] : explode(',', $_POST['f_matiere']) : array();
$tab_pilier_id = array_filter(Clean::map_entier($tab_pilier_id), 'positif');
$tab_eleve_id = array_filter(Clean::map_entier($tab_eleve_id), 'positif');
$tab_matiere_id = array_filter(Clean::map_entier($tab_matiere_id), 'positif');
$memo_demande = count($tab_pilier_id) > 1 ? 'palier' : 'pilier';
$liste_eleve = implode(',', $tab_eleve_id);
if (!$palier_id || !$palier_nom || !$groupe_id || !$groupe_nom || !$groupe_type || !count($tab_eleve_id) || !count($tab_pilier_id) || !in_array($type, array('pourcentage', 'validation')) || !in_array($mode, array('auto', 'manuel')) || !$couleur || !$fond || !$legende || !$marge_min || !$eleves_ordre) {
    exit('Erreur avec les données transmises !');
}
Form::save_choix('releve_synthese_socle');
Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE);
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$OBJET = isset($_POST['f_objet']) ? Clean::texte($_POST['f_objet']) : '';
$ACTION = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$mode = isset($_POST['f_mode']) ? Clean::texte($_POST['f_mode']) : '';
$classe_id = isset($_POST['f_classe']) ? Clean::entier($_POST['f_classe']) : 0;
$groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0;
$eleve_id = isset($_POST['f_user']) ? Clean::entier($_POST['f_user']) : 0;
$serie_ref = isset($_POST['f_serie']) ? Clean::texte($_POST['f_serie']) : '';
$epreuve_id = isset($_POST['f_epreuve']) ? Clean::entier($_POST['f_epreuve']) : 0;
$prof_id = isset($_POST['f_prof']) ? Clean::entier($_POST['f_prof']) : 0;
// id du prof dont on corrige l'appréciation
$avis_conseil = isset($_POST['f_avis_conseil']) ? Clean::texte($_POST['f_avis_conseil']) : '';
$appreciation = isset($_POST['f_appreciation']) ? Clean::texte($_POST['f_appreciation']) : '';
// Autres chaines spécifiques...
$listing_matieres = isset($_POST['f_listing_matieres']) ? $_POST['f_listing_matieres'] : '';
$tab_matiere_id = array_filter(Clean::map_entier(explode(',', $listing_matieres)), 'positif');
$liste_matiere_id = implode(',', $tab_matiere_id);
$is_sous_groupe = $groupe_id ? TRUE : FALSE;
$tab_objet = array('modifier', 'tamponner', 'voir');
// "voir" car on peut corriger une appréciation dans ce mode
$tab_action = array('initialiser', 'charger', 'enregistrer_appr', 'corriger_faute', 'supprimer_appr');
$tab_mode = array('texte', 'graphique');
// On vérifie les paramètres principaux
if (!in_array($ACTION, $tab_action) || !in_array($OBJET, $tab_objet) || !in_array($mode, $tab_mode) || !$classe_id || !$eleve_id && $ACTION != 'initialiser') {
    exit('Erreur avec les données transmises !');
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
if(($_SESSION['SESAMATH_ID']==ID_DEMO)&&($_POST['action']!='calculer')){exit('Action désactivée pour la démo...');}

$action = (isset($_POST['action'])) ? $_POST['action'] : '';
// Valeur d'un code (sur 100)
$valeur = array();
$valeur['RR'] = (isset($_POST['valeurRR'])) ? Clean::entier($_POST['valeurRR']) :   0 ;
$valeur['R']  = (isset($_POST['valeurR']))  ? Clean::entier($_POST['valeurR'])  :  33 ;
$valeur['V']  = (isset($_POST['valeurV']))  ? Clean::entier($_POST['valeurV'])  :  67 ;
$valeur['VV'] = (isset($_POST['valeurVV'])) ? Clean::entier($_POST['valeurVV']) : 100 ;
// Seuil d'acquisition (sur 100) 
$seuil = array();
$seuil['R'] = (isset($_POST['seuilR'])) ? Clean::entier($_POST['seuilR']) : 40 ;
$seuil['V'] = (isset($_POST['seuilV'])) ? Clean::entier($_POST['seuilV']) : 60 ;
// Méthode de calcul
$methode    = (isset($_POST['f_methode']))    ? Clean::calcul_methode($_POST['f_methode'])        : NULL ;
$limite     = (isset($_POST['f_limite']))     ? Clean::calcul_limite($_POST['f_limite'],$methode) : NULL ;
$retroactif = (isset($_POST['f_retroactif'])) ? Clean::calcul_retroactif($_POST['f_retroactif'])  : NULL ;

// Vérification des données transmises
if( is_null($methode) || is_null($limite) || is_null($retroactif) )
{
  exit('Erreur avec les données transmises !');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Simuler avec des paramètres donnés
// ////////////////////////////////////////////////////////////////////////////////////////////////////
 * 
 * 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 !');
}
$taille_max = isset($_POST['f_taille_max']) ? Clean::entier($_POST['f_taille_max']) : 0;
$duree_conservation = isset($_POST['f_duree_conservation']) ? Clean::entier($_POST['f_duree_conservation']) : 0;
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer des nouveaux réglages
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($taille_max && $duree_conservation) {
    FileSystem::fabriquer_fichier_hebergeur_info(array('FICHIER_TAILLE_MAX' => $taille_max, 'FICHIER_DUREE_CONSERVATION' => $duree_conservation));
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là !
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
Beispiel #11
0
$check_type_synthese      = (Form::$tab_choix['type_synthese'])          ? ' checked' : '' ;
$class_form_synthese      = (Form::$tab_choix['type_synthese'])          ? 'show'     : 'hide' ;
$check_type_bulletin      = (Form::$tab_choix['type_bulletin'])          ? ' checked' : '' ;
$check_etat_acquisition   = (Form::$tab_choix['aff_etat_acquisition'])   ? ' checked' : '' ;
$check_moyenne_score      = (Form::$tab_choix['aff_moyenne_scores'])     ? ' checked' : '' ;
$check_pourcentage_acquis = (Form::$tab_choix['aff_pourcentage_acquis']) ? ' checked' : '' ;
$check_conversion_sur_20  = (Form::$tab_choix['conversion_sur_20'])      ? ' checked' : '' ;
$check_with_coef          = (Form::$tab_choix['with_coef'])              ? ' checked' : '' ;
$class_form_with_coef     = ($check_type_synthese || $check_type_bulletin || ($check_type_individuel && $check_moyenne_score) ) ? 'show' : 'hide' ;

// Réception d'id transmis via un lien en page d'accueil.
$auto_voir_releve       = isset($_GET['matiere_id']) ? 'true'                             : 'false' ;
$auto_select_objet      = isset($_GET['matiere_id']) ? 'matiere'                          : FALSE ;
$auto_select_matiere_id = isset($_GET['matiere_id']) ? Clean::entier($_GET['matiere_id']) : Form::$tab_choix['matiere_id'] ;
$auto_select_eleve_num  = isset($_GET['eleve_num'])  ? Clean::entier($_GET['eleve_num'])  : FALSE ;
$auto_highlight_item_id = isset($_GET['item_id'])    ? Clean::entier($_GET['item_id'])    : 0 ;

$auto_select_eleve_id  = ( ($auto_select_eleve_num!==FALSE) && !empty($_SESSION['OPT_PARENT_ENFANTS'][$auto_select_eleve_num]) ) ? $_SESSION['OPT_PARENT_ENFANTS'][$auto_select_eleve_num]['valeur']    : 0 ;
$auto_select_classe_id = ( ($auto_select_eleve_num!==FALSE) && !empty($_SESSION['OPT_PARENT_ENFANTS'][$auto_select_eleve_num]) ) ? $_SESSION['OPT_PARENT_ENFANTS'][$auto_select_eleve_num]['classe_id'] : FALSE ;

// Une éventuelle restriction d'accès doit surcharger toute mémorisation antérieure de formulaire
if(in_array($_SESSION['USER_PROFIL_TYPE'],array('parent','eleve')))
{
  $check_etat_acquisition   = test_user_droit_specifique($_SESSION['DROIT_RELEVE_ETAT_ACQUISITION'])   ? ' checked' : '' ;
  $check_moyenne_score      = test_user_droit_specifique($_SESSION['DROIT_RELEVE_MOYENNE_SCORE'])      ? ' checked' : '' ;
  $check_pourcentage_acquis = test_user_droit_specifique($_SESSION['DROIT_RELEVE_POURCENTAGE_ACQUIS']) ? ' checked' : '' ;
  $check_conversion_sur_20  = test_user_droit_specifique($_SESSION['DROIT_RELEVE_CONVERSION_SUR_20'])  ? ' checked' : '' ;
}

$class_etat_acquisition   = ($check_etat_acquisition)                           ? 'show' : 'hide' ;
$class_conversion_sur_20  = ($check_moyenne_score || $check_pourcentage_acquis) ? 'show' : 'hide' ;
$periode_id              = (isset($_POST['f_periode']))         ? Clean::entier($_POST['f_periode'])               : 0;
$date_debut              = (isset($_POST['f_date_debut']))      ? Clean::date_fr($_POST['f_date_debut'])           : '';
$date_fin                = (isset($_POST['f_date_fin']))        ? Clean::date_fr($_POST['f_date_fin'])             : '';
$retroactif              = (isset($_POST['f_retroactif']))      ? Clean::calcul_retroactif($_POST['f_retroactif']) : '';
$only_socle              = (isset($_POST['f_restriction']))     ? 1                                                : 0;
$aff_coef                = (isset($_POST['f_coef']))            ? 1                                                : 0;
$aff_socle               = (isset($_POST['f_socle']))           ? 1                                                : 0;
$aff_lien                = (isset($_POST['f_lien']))            ? 1                                                : 0;
$orientation             = (isset($_POST['f_orientation']))     ? Clean::texte($_POST['f_orientation'])            : '';
$couleur                 = (isset($_POST['f_couleur']))         ? Clean::texte($_POST['f_couleur'])                : '';
$fond                    = (isset($_POST['f_fond']))            ? Clean::texte($_POST['f_fond'])                   : '';
$legende                 = (isset($_POST['f_legende']))         ? Clean::texte($_POST['f_legende'])                : '';
$marge_min               = (isset($_POST['f_marge_min']))       ? Clean::texte($_POST['f_marge_min'])              : '';
$pages_nb                = (isset($_POST['f_pages_nb']))        ? Clean::texte($_POST['f_pages_nb'])               : '';
$cases_nb                = (isset($_POST['f_cases_nb']))        ? Clean::entier($_POST['f_cases_nb'])              : -1;
$cases_largeur           = (isset($_POST['f_cases_larg']))      ? Clean::entier($_POST['f_cases_larg'])            : 0;
$eleves_ordre            = (isset($_POST['f_eleves_ordre']))    ? Clean::texte($_POST['f_eleves_ordre'])           : '';

// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_eleve_id = (isset($_POST['f_eleve'])) ? ( (is_array($_POST['f_eleve'])) ? $_POST['f_eleve'] : explode(',',$_POST['f_eleve']) ) : array() ;
$tab_type     = (isset($_POST['f_type']))  ? ( (is_array($_POST['f_type']))  ? $_POST['f_type']  : explode(',',$_POST['f_type'])  ) : array() ;
$tab_eleve_id = array_filter( Clean::map_entier($tab_eleve_id) , 'positif' );
$tab_type     = Clean::map_texte($tab_type);

// En cas de manipulation du formulaire (avec les outils de développements intégrés au navigateur ou un module complémentaire)...
if(in_array($_SESSION['USER_PROFIL_TYPE'],array('parent','eleve')))
{
  $tab_type = array('individuel');
  // Pour un élève on surcharge avec les données de session
  if($_SESSION['USER_PROFIL_TYPE']=='eleve')
  {
 $separateur = extraire_separateur_csv($tab_lignes[0]);
 // Déterminer la nature du séparateur
 unset($tab_lignes[0]);
 // Supprimer la 1e ligne
 $tab_nouvel_uai = array();
 $tab_nouvel_id = array();
 $nb_lignes_trouvees = 0;
 $tab_erreur = array('info' => array('nb' => 0, 'txt' => ' manquant d\'informations !'), 'geo' => array('nb' => 0, 'txt' => ' avec identifiant géographique incorrect !'), 'uai' => array('nb' => 0, 'txt' => ' avec UAI déjà présent ou en double ou incorrect !'), 'mail' => array('nb' => 0, 'txt' => ' avec adresse de courriel incorrecte !'), 'date' => array('nb' => 0, 'txt' => ' avec date d\'inscription incorrecte !'), 'fichier' => array('nb' => 0, 'txt' => ' avec nom de fichier de sauvegarde incorrect !'), 'id' => array('nb' => 0, 'txt' => ' avec identifiant de base déjà utilisé ou en double !'));
 foreach ($tab_lignes as $ligne_contenu) {
     $tab_elements = str_getcsv($ligne_contenu, $separateur);
     $tab_elements = array_slice($tab_elements, 0, 11);
     if (count($tab_elements) == 11) {
         $nb_lignes_trouvees++;
         list($export_id, $import_id, $geo_id, $localisation, $denomination, $uai, $contact_nom, $contact_prenom, $contact_courriel, $date, $fichier_nom) = $tab_elements;
         $import_id = Clean::entier($import_id);
         $geo_id = Clean::entier($geo_id);
         $localisation = Clean::texte($localisation);
         $denomination = Clean::texte($denomination);
         $uai = Clean::uai($uai);
         $contact_nom = Clean::nom($contact_nom);
         $contact_prenom = Clean::prenom($contact_prenom);
         $contact_courriel = Clean::courriel($contact_courriel);
         $_SESSION['tab_info'][$nb_lignes_trouvees] = array('import_id' => $import_id, 'geo_id' => $geo_id, 'localisation' => $localisation, 'denomination' => $denomination, 'uai' => $uai, 'contact_nom' => $contact_nom, 'contact_prenom' => $contact_prenom, 'contact_courriel' => $contact_courriel, 'date' => $date, 'fichier_nom' => $fichier_nom);
         // Vérifier la présence des informations
         if (!$geo_id || !$localisation || !$denomination || !$contact_nom || !$contact_prenom || !$contact_courriel || !$date || !$fichier_nom) {
             $tab_erreur['info']['nb']++;
         }
         // Vérifier que l'id géographique est correct
         if (!isset($tab_geo[$geo_id])) {
             $tab_erreur['geo']['nb']++;
         }
$tab_check = (isset($_POST['f_check'])) ? explode(',',$_POST['f_check']) : array() ;
$nb_add = 0;
$nb_mod = 0;
foreach($tab_check as $check_infos)
{
  if(substr($check_infos,0,4)=='mod_')
  {
    $i_fichier = Clean::entier( substr($check_infos,4) );
    if( isset($tab_i_fichier_TO_id_base[$i_fichier]) && isset($tab_users_fichier['adresse'][$i_fichier]) )
    {
      DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_adresse_parent( $tab_i_fichier_TO_id_base[$i_fichier] , $tab_users_fichier['adresse'][$i_fichier] );
      $nb_mod++;
    }
  }
  elseif(substr($check_infos,0,4)=='add_')
  {
    $i_fichier = Clean::entier( substr($check_infos,4) );
    if( isset($tab_i_fichier_TO_id_base[$i_fichier]) && isset($tab_users_fichier['adresse'][$i_fichier]) )
    {
      DB_STRUCTURE_ADMINISTRATEUR::DB_ajouter_adresse_parent( $tab_i_fichier_TO_id_base[$i_fichier] , $tab_users_fichier['adresse'][$i_fichier] );
      $nb_add++;
    }
  }
}
// Afficher le résultat
echo'<p><label class="valide">Nouvelles adresses ajoutées : '.$nb_add.'</label></p>'.NL;
echo'<p><label class="valide">Anciennes adresses modifiées : '.$nb_mod.'</label></p>'.NL;
echo'<ul class="puce p"><li><a href="#step81" id="passer_etape_suivante">Passer à l\'étape 5.</a><label id="ajax_msg">&nbsp;</label></li></ul>'.NL;

?>
 * 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) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$selection_id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0;
$selection_nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : '';
$origine = isset($_POST['f_origine']) ? Clean::texte($_POST['f_origine']) : '';
// Contrôler la liste des items transmis
$tab_items = isset($_POST['f_compet_liste']) ? explode('_', $_POST['f_compet_liste']) : array();
$tab_items = Clean::map_entier($tab_items);
$tab_items = array_filter($tab_items, 'positif');
$nb_items = count($tab_items);
// Contrôler la liste des profs transmis
$tab_profs = array();
$tab_droits = array('v' => 'voir', 'm' => 'modifier');
$profs_liste = isset($_POST['f_prof_liste']) ? $_POST['f_prof_liste'] : '';
$tmp_tab = $profs_liste ? explode('_', $profs_liste) : array();
foreach ($tmp_tab as $valeur) {
    $droit = $valeur[0];
    $id_prof = (int) substr($valeur, 1);
Beispiel #16
0
 * 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 !');}

$type_export = (isset($_POST['f_type']))        ? Clean::texte($_POST['f_type'])        : '';
$groupe_type = (isset($_POST['f_groupe_type'])) ? Clean::texte($_POST['f_groupe_type']) : '';
$groupe_nom  = (isset($_POST['f_groupe_nom']))  ? Clean::texte($_POST['f_groupe_nom'])  : '';
$groupe_id   = (isset($_POST['f_groupe_id']))   ? Clean::entier($_POST['f_groupe_id'])  : 0;
$matiere_id  = (isset($_POST['f_matiere']))     ? Clean::entier($_POST['f_matiere'])    : 0;
$matiere_nom = (isset($_POST['f_matiere_nom'])) ? Clean::texte($_POST['f_matiere_nom']) : '';
$palier_id   = (isset($_POST['f_palier']))      ? Clean::entier($_POST['f_palier'])     : 0;
$palier_nom  = (isset($_POST['f_palier_nom']))  ? Clean::texte($_POST['f_palier_nom'])  : '';

$tab_types   = array('d'=>'all' , 'n'=>'niveau' , 'c'=>'classe' , 'g'=>'groupe' , 'b'=>'besoin');

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Export CSV des données des élèves d'un regroupement
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($type_export=='listing_eleves') && $groupe_id && isset($tab_types[$groupe_type]) && $groupe_nom )
{
  // Préparation de l'export CSV
  $separateur = ';';
  // ajout du préfixe 'SACOCHE_' pour éviter un bug avec M$ Excel « SYLK : Format de fichier non valide » (http://support.microsoft.com/kb/323626/fr). 
  $export_csv  = 'SACOCHE_ID'.$separateur.'LOGIN'.$separateur.'GENRE'.$separateur.'NOM'.$separateur.'PRENOM'.$separateur.'GROUPE'."\r\n\r\n";
  // Préparation de l'export HTML
    $notification_contenu = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM'] . ' a fusionné dans le référentiel [' . $matiere_nom . '] :' . "\r\n" . $nom . ' -> ' . $nom2 . "\r\n";
    notifications_referentiel_edition($matiere_id, $notification_contenu);
    DB_STRUCTURE_NOTIFICATION::enregistrer_action_sensible($notification_contenu);
    // Retour
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Actions complémentaires
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'action_complementaire') {
    // Récupération des données
    $action_groupe = isset($_POST['select_action_groupe']) ? Clean::texte($_POST['select_action_groupe']) : '';
    $granulosite = isset($_POST['select_action_groupe_modifier_objet']) ? Clean::texte($_POST['select_action_groupe_modifier_objet']) : '';
    $modifier_id = isset($_POST['select_action_groupe_modifier_id']) ? Clean::texte($_POST['select_action_groupe_modifier_id']) : '';
    $modifier_coef = isset($_POST['select_action_groupe_modifier_coef']) ? Clean::entier($_POST['select_action_groupe_modifier_coef']) : -1;
    $modifier_cart = isset($_POST['select_action_groupe_modifier_cart']) ? Clean::entier($_POST['select_action_groupe_modifier_cart']) : -1;
    $deplacer_id_initial = isset($_POST['select_action_groupe_deplacer_id_initial']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_initial']) : '';
    $deplacer_id_final = isset($_POST['select_action_groupe_deplacer_id_final']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_final']) : '';
    $groupe_nom_initial = isset($_POST['groupe_nom_initial']) ? Clean::texte($_POST['groupe_nom_initial']) : '';
    $groupe_nom_final = isset($_POST['groupe_nom_final']) ? Clean::texte($_POST['groupe_nom_final']) : '';
    list($matiere_id, $parent_id, $objet_id, $objet_ordre) = Clean::map_entier(explode('_', $modifier_id)) + array(0, 0, 0, 0);
    list($matiere_id_initial, $parent_id_initial, $objet_id_initial, $objet_ordre_initial) = Clean::map_entier(explode('_', $deplacer_id_initial)) + array(0, 0, 0, 0);
    list($matiere_id_final, $parent_id_final, $objet_id_final, $objet_ordre_final) = Clean::map_entier(explode('_', $deplacer_id_final)) + array(0, 0, 0, 0);
    // Vérification des données
    $tab_action_groupe = array('modifier_coefficient', 'modifier_panier', 'deplacer_domaine', 'deplacer_theme');
    $test1 = $action_groupe == 'modifier_coefficient' && in_array($granulosite, $tab_granulosite) && $matiere_id && $parent_id && $objet_id && $objet_ordre && $modifier_coef != -1 ? TRUE : FALSE;
    $test2 = $action_groupe == 'modifier_panier' && in_array($granulosite, $tab_granulosite) && $matiere_id && $objet_id && $objet_ordre && $modifier_cart != -1 ? TRUE : FALSE;
    $test3 = $action_groupe == 'deplacer_domaine' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE;
    $test4 = $action_groupe == 'deplacer_theme' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE;
    if (!in_array($action_groupe, $tab_action_groupe) || !$test1 && !$test2 && !$test3 && !$test4) {
        exit('Erreur avec les données transmises !');
 * 
 * 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) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$matiere_id = isset($_POST['f_matiere_id']) ? Clean::entier($_POST['f_matiere_id']) : 0;
$item_id = isset($_POST['f_item_id']) ? Clean::entier($_POST['f_item_id']) : 0;
$prof_id = isset($_POST['f_prof_id']) ? Clean::entier($_POST['f_prof_id']) : -1;
$score = isset($_POST['f_score']) ? Clean::entier($_POST['f_score']) : -2;
// normalement entier entre 0 et 100 ou -1 si non évalué
$message = isset($_POST['f_message']) ? Clean::texte($_POST['f_message']) : '';
$document_nom = isset($_POST['f_doc_nom']) ? Clean::texte($_POST['f_doc_nom']) : '';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Lister les profs associés à l'élève et à une matière
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'lister_profs' && $matiere_id) {
    $DB_TAB = DB_STRUCTURE_DEMANDE::DB_recuperer_professeurs_eleve_matiere($_SESSION['USER_ID'], $_SESSION['ELEVE_CLASSE_ID'], $matiere_id);
    if (empty($DB_TAB)) {
        exit('Aucun de vos professeurs n\'étant rattaché à cette matière, personne ne pourrait traiter votre demande.');
    } else {
        $options = count($DB_TAB) == 1 ? '' : '<option value="0">Tous les enseignants concernés</option>';
        foreach ($DB_TAB as $DB_ROW) {
            $options .= '<option value="' . $DB_ROW['user_id'] . '">' . html(afficher_identite_initiale($DB_ROW['user_nom'], FALSE, $DB_ROW['user_prenom'], TRUE, $DB_ROW['user_genre'])) . '</option>';
        }
 */

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

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$OBJET      = (isset($_POST['f_objet']))      ? Clean::texte($_POST['f_objet'])      : '';
$ACTION     = (isset($_POST['f_action']))     ? Clean::texte($_POST['f_action'])     : '';
$BILAN_TYPE = (isset($_POST['f_bilan_type'])) ? Clean::texte($_POST['f_bilan_type']) : '';
$mode       = (isset($_POST['f_mode']))       ? Clean::texte($_POST['f_mode'])       : '';
$periode_id = (isset($_POST['f_periode']))    ? Clean::entier($_POST['f_periode'])   : 0;
$classe_id  = (isset($_POST['f_classe']))     ? Clean::entier($_POST['f_classe'])    : 0;
$groupe_id  = (isset($_POST['f_groupe']))     ? Clean::entier($_POST['f_groupe'])    : 0;
$eleve_id   = (isset($_POST['f_user']))       ? Clean::entier($_POST['f_user'])      : 0;
// Autres chaines spécifiques...
$listing_piliers  = (isset($_POST['f_listing_piliers']))  ? $_POST['f_listing_piliers']  : '' ;
$tab_pilier_id  = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' );
$liste_pilier_id  = implode(',',$tab_pilier_id);

$is_sous_groupe = ($groupe_id) ? TRUE : FALSE ;

$tab_action = array('initialiser','charger');

$tab_types = array
(
  'releve'   => array( 'droit'=>'RELEVE'   , 'titre'=>'Relevé d\'évaluations' ) ,
  'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire'     ) ,
  'palier1'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 1'  ) ,
  'palier2'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 2'  ) ,
 * 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) {
    exit('Action désactivée pour la démo...');
}
$BASE = isset($_POST['f_base']) ? Clean::entier($_POST['f_base']) : 0;
$courriel = isset($_POST['f_courriel']) ? Clean::courriel($_POST['f_courriel']) : '';
$captcha = isset($_POST['f_captcha']) ? Clean::texte($_POST['f_captcha']) : '';
$user_id = isset($_POST['f_user']) ? Clean::entier($_POST['f_user']) : 0;
if (!$courriel || !$user_id || HEBERGEUR_INSTALLATION == 'multi-structures' && !$BASE) {
    exit_json(FALSE, 'Erreur avec les données transmises !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Première soumission : rechercher le courriel et lister les utilisateurs correspondants
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($user_id == -1) {
    // Protection contre les attaques par force brute des robots (piratage compte ou envoi intempestif de courriels)
    if (!isset($_SESSION['FORCEBRUTE'][$PAGE])) {
        exit_json(FALSE, 'Session perdue ou absence de cookie : merci d\'actualiser la page.');
    } else {
        if ($_SERVER['REQUEST_TIME'] - $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] < $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']) {
            $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
            exit_json(FALSE, 'Sécurité : patienter ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's avant une nouvelle tentative.');
        }
 * 
 * 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) {exit('Action désactivée pour la démo...');}

$action = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action'])  : '';
$id     = (isset($_POST['f_id']))     ? Clean::entier($_POST['f_id'])     : 0;
$niveau = (isset($_POST['f_niveau'])) ? Clean::entier($_POST['f_niveau']) : 0;
$ref    = (isset($_POST['f_ref']))    ? Clean::ref($_POST['f_ref'])       : '';
$nom    = (isset($_POST['f_nom']))    ? Clean::texte($_POST['f_nom'])     : '';

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Ajouter une nouvelle classe
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if( ($action=='ajouter') && $niveau && $ref && $nom )
{
  // Vérifier que la référence de la classe est disponible
  if( DB_STRUCTURE_ADMINISTRATEUR::DB_tester_classe_reference($ref) )
  {
    exit('Erreur : référence de classe déjà existante !');
  }
  // Insérer l'enregistrement
  $groupe_id = DB_STRUCTURE_ADMINISTRATEUR::DB_ajouter_groupe_par_admin('classe',$ref,$nom,$niveau);
$bulletin_fusion_niveaux = isset($_POST['f_bulletin_fusion_niveaux']) ? 1 : 0;
$bulletin_barre_acquisitions = isset($_POST['f_bulletin_barre_acquisitions']) ? 1 : 0;
$bulletin_acquis_texte_nombre = isset($_POST['f_bulletin_acquis_texte_nombre']) ? 1 : 0;
$bulletin_acquis_texte_code = isset($_POST['f_bulletin_acquis_texte_code']) ? 1 : 0;
$bulletin_moyenne_scores = isset($_POST['f_bulletin_moyenne_scores']) ? 1 : 0;
$bulletin_conversion_sur_20 = isset($_POST['f_bulletin_conversion_sur_20']) ? Clean::entier($_POST['f_bulletin_conversion_sur_20']) : 0;
// Est transmis à 0 si f_bulletin_pourcentage coché
$bulletin_moyenne_classe = isset($_POST['f_bulletin_moyenne_classe']) ? 1 : 0;
$bulletin_moyenne_generale = isset($_POST['f_bulletin_moyenne_generale']) ? 1 : 0;
$bulletin_couleur = isset($_POST['f_bulletin_couleur']) ? Clean::texte($_POST['f_bulletin_couleur']) : '';
$bulletin_fond = isset($_POST['f_bulletin_fond']) ? Clean::texte($_POST['f_bulletin_fond']) : '';
$bulletin_legende = isset($_POST['f_bulletin_legende']) ? Clean::texte($_POST['f_bulletin_legende']) : '';
$socle_appreciation_rubrique_longueur = isset($_POST['f_socle_appreciation_rubrique_longueur']) ? Clean::entier($_POST['f_socle_appreciation_rubrique_longueur']) : 0;
$socle_appreciation_rubrique_report = isset($_POST['f_socle_appreciation_rubrique_report']) ? 1 : 0;
$socle_appreciation_rubrique_modele = isset($_POST['f_socle_appreciation_rubrique_modele']) ? Clean::texte($_POST['f_socle_appreciation_rubrique_modele']) : '';
$socle_appreciation_generale_longueur = isset($_POST['f_socle_appreciation_generale_longueur']) ? Clean::entier($_POST['f_socle_appreciation_generale_longueur']) : 0;
$socle_appreciation_generale_report = isset($_POST['f_socle_appreciation_generale_report']) ? 1 : 0;
$socle_appreciation_generale_modele = isset($_POST['f_socle_appreciation_generale_modele']) ? Clean::texte($_POST['f_socle_appreciation_generale_modele']) : '';
$socle_ligne_supplementaire = isset($_POST['f_socle_check_supplementaire']) ? Clean::texte($_POST['f_socle_ligne_supplementaire']) : '';
$socle_assiduite = isset($_POST['f_socle_assiduite']) ? 1 : 0;
$socle_prof_principal = isset($_POST['f_socle_prof_principal']) ? 1 : 0;
$socle_only_presence = isset($_POST['f_socle_only_presence']) ? 1 : 0;
$socle_pourcentage_acquis = isset($_POST['f_socle_pourcentage_acquis']) ? 1 : 0;
$socle_etat_validation = isset($_POST['f_socle_etat_validation']) ? 1 : 0;
$socle_couleur = isset($_POST['f_socle_couleur']) ? Clean::texte($_POST['f_socle_couleur']) : '';
$socle_fond = isset($_POST['f_socle_fond']) ? Clean::texte($_POST['f_socle_fond']) : '';
$socle_legende = isset($_POST['f_socle_legende']) ? Clean::texte($_POST['f_socle_legende']) : '';
// Liste de matières transmises
$tab_matieres = isset($_POST['f_matiere_liste']) ? explode('_', $_POST['f_matiere_liste']) : array();
$tab_matieres = Clean::map_entier($tab_matieres);
$tab_matieres = array_filter($tab_matieres, 'positif');
 * © Thomas Crespin pour Sésamath <http://www.sesamath.net> - Tous droits réservés.
 * Logiciel placé sous la licence libre Affero GPL 3 <https://www.gnu.org/licenses/agpl-3.0.html>.
 * ****************************************************************************************************
 * 
 * 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/>.
 * 
 */
// Mettre à jour l'élément de formulaire "select_eleves" et le renvoyer en HTML
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
}
$matiere_id = isset($_POST['f_matiere']) ? Clean::entier($_POST['f_matiere']) : 0;
$niveau_id = isset($_POST['f_niveau']) ? Clean::entier($_POST['f_niveau']) : 0;
if (!$matiere_id || !$niveau_id) {
    exit('Erreur avec les données transmises !');
}
// Affichage du retour.
exit(HtmlForm::afficher_select(DB_STRUCTURE_COMMUN::DB_OPT_arborescence($matiere_id, $niveau_id), FALSE, '', FALSE, 'referentiel', FALSE));
 }
 // Récupération des données du fichier
 $memo_date_debut = 9999;
 $memo_date_fin = 0;
 $tab_users_fichier = array();
 if ($xml->Absences_des_eleves) {
     $objet = 'absences';
     // cas d'un fichier d'absences
     foreach ($xml->Absences_des_eleves as $eleve) {
         // la liste des champs dépend de ce qu'à coché l'admin
         $sconet_id = $eleve->N_GEP ? Clean::entier($eleve->N_GEP) : NULL;
         $nom = $eleve->NOM ? Clean::nom($eleve->NOM) : NULL;
         $prenom = $eleve->PRENOM ? Clean::prenom($eleve->PRENOM) : NULL;
         $nb_absence = $eleve->DEMI_JOUR ? Clean::entier($eleve->DEMI_JOUR) : NULL;
         $nb_absence_nj = $eleve->REGLE && $eleve->REGLE == 'N' ? $nb_absence : 0;
         $id = $eleve->ID_ELEVE ? Clean::entier($eleve->ID_ELEVE) : $nom . '.' . $prenom;
         $date_debut = $eleve->DATE_DEBUT ? convert_date_french_to_mysql($eleve->DATE_DEBUT) : NULL;
         $date_fin = $eleve->DATE_FIN ? convert_date_french_to_mysql($eleve->DATE_FIN) : NULL;
         if ($nom && $prenom && $nb_absence && $date_debut && $date_fin) {
             if (!isset($tab_users_fichier[$id])) {
                 $tab_users_fichier[$id] = array($sconet_id, NULL, $nom, $prenom, $nb_absence, $nb_absence_nj, NULL, NULL);
             } else {
                 $tab_users_fichier[$id][4] += $nb_absence;
                 $tab_users_fichier[$id][5] += $nb_absence_nj;
             }
             $memo_date_debut = min($memo_date_debut, $date_debut);
             $memo_date_fin = max($memo_date_fin, $date_fin);
         }
     }
 }
 if ($xml->Retards) {
$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)
    if ($id_ent) {
        if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('id_ent', $id_ent)) {
            exit('Erreur : identifiant ENT déjà utilisé !');
        }
    }
 * 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/>.
 * 
 */

// Mettre à jour l'élément de formulaire "f_eleve" et le renvoyer en HTML

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
if($_SESSION['SESAMATH_ID']==ID_DEMO) {}

$groupe   = (isset($_POST['f_groupe']))   ? Clean::entier($_POST['f_groupe'])  : 0;
$matiere  = (isset($_POST['f_matiere']))  ? Clean::entier($_POST['f_matiere']) : 0;
$multiple = (empty($_POST['f_multiple'])) ? FALSE                              : TRUE ;

if(!$groupe)
{
  exit('Erreur avec les données transmises !');
}

$select_nom   = ($multiple) ? 'f_matiere' : FALSE ;
$option_first = ($multiple) ? FALSE       : ''    ;
$selection    = ($multiple) ? TRUE        : $matiere ;

// Affichage du retour.

exit( HtmlForm::afficher_select( DB_STRUCTURE_COMMUN::DB_OPT_matieres_groupe($groupe) , $select_nom , $option_first , $selection , '' /*optgroup*/ , $multiple ) );
 * 
 * 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) {
    exit('Action désactivée pour la démo...');
}
$daltonisme = isset($_POST['daltonisme']) ? Clean::entier($_POST['daltonisme']) : -1;
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mettre à jour la session + la base + le css perso
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (in_array($daltonisme, array(0, 1))) {
    $_SESSION['USER_DALTONISME'] = $daltonisme;
    DB_STRUCTURE_COMMUN::DB_modifier_user_parametre($_SESSION['USER_ID'], 'user_daltonisme', $daltonisme);
    // Enregistrer en session le CSS personnalisé
    SessionUser::adapter_daltonisme();
    SessionUser::actualiser_style();
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là !
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
 * 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 && $_GET['action'] != 'initialiser') {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? $_POST['f_action'] : '';
$tab_modifs = isset($_POST['tab_modifs']) ? explode(',', $_POST['tab_modifs']) : array();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Ajouter | Retirer un professeur à un groupe
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (in_array($action, array('ajouter', 'retirer')) && count($tab_modifs)) {
    $etat = $action == 'ajouter' ? TRUE : FALSE;
    foreach ($tab_modifs as $key => $id_modifs) {
        list($groupe_id, $prof_id) = explode('_', $id_modifs);
        $groupe_id = Clean::entier($groupe_id);
        $prof_id = Clean::entier($prof_id);
        if ($groupe_id && $prof_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($prof_id, 'professeur', $groupe_id, 'groupe', $etat);
        }
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
 * 
 * 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 !');}
$TITRE = html(Lang::_("Gérer les parents"));

// Récupérer d'éventuels paramètres pour restreindre l'affichage
// Pas de passage par la page ajax.php, mais pas besoin ici de protection contre attaques type CSRF
$statut       = (isset($_POST['f_statut']))       ? Clean::entier($_POST['f_statut'])       : 1  ;
$debut_nom    = (isset($_POST['f_debut_nom']))    ? Clean::nom($_POST['f_debut_nom'])       : '' ;
$debut_prenom = (isset($_POST['f_debut_prenom'])) ? Clean::prenom($_POST['f_debut_prenom']) : '' ;
$find_doublon = (isset($_POST['f_doublon']))      ? TRUE                                    : FALSE ;
// Construire et personnaliser le formulaire pour restreindre l'affichage
$select_f_statuts = HtmlForm::afficher_select(Form::$tab_select_statut , 'f_statut' /*select_nom*/ , FALSE /*option_first*/ , $statut /*selection*/ , '' /*optgroup*/);

// Javascript
Layout::add( 'js_inline_before' , 'var input_date      = "'.TODAY_FR.'";' );
Layout::add( 'js_inline_before' , 'var date_mysql      = "'.TODAY_MYSQL.'";' );
Layout::add( 'js_inline_before' , 'var    LOGIN_LONGUEUR_MAX = '.   LOGIN_LONGUEUR_MAX.';' );
Layout::add( 'js_inline_before' , 'var PASSWORD_LONGUEUR_MAX = '.PASSWORD_LONGUEUR_MAX.';' );
Layout::add( 'js_inline_before' , 'var tab_login_modele      = new Array();' );
Layout::add( 'js_inline_before' , 'var tab_mdp_longueur_mini = new Array();' );
foreach($_SESSION['TAB_PROFILS_ADMIN']['LOGIN_MODELE'] as $profil_sigle => $login_modele)
{
 * 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 !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$BILAN_TYPE = isset($_POST['f_bilan_type']) ? Clean::texte($_POST['f_bilan_type']) : '';
$periode_id = isset($_POST['f_periode']) ? Clean::entier($_POST['f_periode']) : 0;
$classe_id = isset($_POST['f_classe']) ? Clean::entier($_POST['f_classe']) : 0;
$groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0;
// Autres chaines spécifiques...
$listing_matieres = isset($_POST['f_listing_matieres']) ? $_POST['f_listing_matieres'] : '';
$listing_piliers = isset($_POST['f_listing_piliers']) ? $_POST['f_listing_piliers'] : '';
$listing_rubriques = isset($_POST['f_listing_rubriques']) ? $_POST['f_listing_rubriques'] : '';
$tab_matiere_id = array_filter(Clean::map_entier(explode(',', $listing_matieres)), 'positif');
$tab_pilier_id = array_filter(Clean::map_entier(explode(',', $listing_piliers)), 'positif');
$tab_rubrique_id = Clean::map_entier(explode(',', $listing_rubriques));
// Pas de array_filter(...,'positif') car la valeur 0 est autorisée
$liste_matiere_id = implode(',', $tab_matiere_id);
$liste_pilier_id = implode(',', $tab_pilier_id);
$liste_rubrique_id = implode(',', $tab_rubrique_id);
$is_sous_groupe = $groupe_id ? TRUE : FALSE;
$tab_types = array('releve' => array('droit' => 'RELEVE', 'titre' => 'Relevé d\'évaluations'), 'bulletin' => array('droit' => 'BULLETIN', 'titre' => 'Bulletin scolaire'), 'palier1' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 1'), 'palier2' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 2'), 'palier3' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 3'));
// On vérifie les paramètres
if (!isset($tab_types[$BILAN_TYPE]) || !$periode_id || !$classe_id || !count($tab_rubrique_id)) {