Example #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;
}
$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');
$bulletin_moyenne_exception_matieres = implode(',', $tab_matieres);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement des formulaires "Relevé d'évaluations" + "Bulletin scolaire" + "État de maîtrise du socle"
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_variables = array('releve' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'etat_acquisition', 'moyenne_scores', 'pourcentage_acquis', 'conversion_sur_20', 'cases_nb', 'aff_coef', 'aff_socle', 'aff_domaine', 'aff_theme', 'couleur', 'fond', 'legende', 'pages_nb'), 'bulletin' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'fusion_niveaux', 'barre_acquisitions', 'acquis_texte_code', 'acquis_texte_nombre', 'moyenne_scores', 'conversion_sur_20', 'moyenne_classe', 'moyenne_generale', 'moyenne_exception_matieres', 'couleur', 'fond', 'legende'), 'socle' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'only_presence', 'pourcentage_acquis', 'etat_validation', 'couleur', 'fond', 'legende'));
if (isset($tab_variables[$objet])) {
    $tab_parametres = array();
    foreach ($tab_variables[$objet] as $option) {
        $variable_nom = $objet . '_' . $option;
        $variable_valeur = ${$variable_nom};
        // On modifie la session
        $_SESSION['OFFICIEL'][strtoupper($variable_nom)] = $variable_valeur;
        // Pour modifier dans la base
        $tab_parametres['officiel_' . $variable_nom] = $variable_valeur;
 * 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
  {
$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');
}
 * 
 * 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']) : '';
$logo = isset($_POST['f_logo']) ? Clean::texte($_POST['f_logo']) : '';
// inutilisé
$adresse_web = isset($_POST['f_adresse_web']) ? Clean::url($_POST['f_adresse_web']) : '';
$message = isset($_POST['f_message']) ? Clean::texte($_POST['f_message']) : '';
$tab_ext_images = array('bmp', 'gif', 'jpg', 'jpeg', 'png');
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Uploader un logo
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'upload_logo') {
    $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, NULL, $tab_ext_images, NULL, 100, NULL);
    if ($result !== TRUE) {
        exit('Erreur : ' . $result);
    }
    // vérifier la conformité du fichier image, récupérer les infos le concernant
    $tab_infos = @getimagesize(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
    if ($tab_infos == FALSE) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
        exit('Erreur : le fichier image ne semble pas valide !');
    }
 * 
 */
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($_GET['action']) ? $_GET['action'] : '';
$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']) : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_select_periodes = isset($_POST['select_periodes']) ? is_array($_POST['select_periodes']) ? $_POST['select_periodes'] : explode(',', $_POST['select_periodes']) : array();
$tab_select_classes_groupes = isset($_POST['select_classes_groupes']) ? is_array($_POST['select_classes_groupes']) ? $_POST['select_classes_groupes'] : explode(',', $_POST['select_classes_groupes']) : array();
$tab_select_periodes = array_filter(Clean::map_entier($tab_select_periodes), 'positif');
$tab_select_classes_groupes = array_filter(Clean::map_entier($tab_select_classes_groupes), 'positif');
$tab_groupe = array();
$tab_periode = array();
$tab_jointure = array();
$tab_graphique = array();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes.
// 1/2 - On commence les premières requêtes dès maintenant afin d'avoir les noms des groupes et des périodes à disposition.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer la liste des classes & groupes, dans l'ordre des niveaux
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_et_groupes_avec_niveaux();
if (empty($DB_TAB)) {
    exit('Aucune classe et aucun groupe ne sont enregistrés !');
}
foreach ($DB_TAB as $DB_ROW) {
    $tab_groupe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
 * © 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));
 * 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) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$motif = isset($_POST['f_motif']) ? Clean::texte($_POST['f_motif']) : '';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bloquer ou débloquer l'application
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'debloquer') {
    LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE']);
    exit('<label class="valide">Application accessible.</label>');
} elseif ($action == 'bloquer') {
    LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE'], $motif);
    exit('<label class="erreur">Application fermée : ' . html($motif) . '</label>');
} else {
    echo 'Erreur avec les données transmises !';
}
 * 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 !');}

$action = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : '';
$tab_id = (isset($_POST['tab_id']))   ? explode(',',$_POST['tab_id'])    : array() ;

require(CHEMIN_DOSSIER_INCLUDE.'tableau_sso.php');

unset($tab_serveur_cas['']);
$tab_cas_nom   = array_merge( array('perso') , array_keys($tab_serveur_cas) );

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Choix des serveurs phpCAS sans vérif SSL
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='Choix_serveurs')
{
  // Nettoyer la liste transmise
  $tab_id = array_diff($tab_cas_nom, $tab_id);
 * 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/>.
 * 
 */

// 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 ) );
$niveau_id       = (isset($_POST['f_niveau']))             ? Clean::entier($_POST['f_niveau'])                : 0; // Niveau transmis uniquement si on restreint sur un niveau
$fusion_niveaux  = (isset($_POST['f_fusion_niveaux']))     ? 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;
$aff_start       = (isset($_POST['f_start']))              ? 1                                                : 0;
$only_socle      = (isset($_POST['f_restriction_socle']))  ? 1                                                : 0;
$only_niveau     = (isset($_POST['f_restriction_niveau'])) ? $niveau_id                                       : 0;
$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 c'est un tableau qui est transmis, mais au cas où...
$tab_eleve = (isset($_POST['f_eleve'])) ? ( (is_array($_POST['f_eleve'])) ? $_POST['f_eleve'] : explode(',',$_POST['f_eleve']) ) : array() ;
$tab_eleve = array_filter( Clean::map_entier($tab_eleve) , 'positif' );

$liste_eleve = implode(',',$tab_eleve);

if( !$groupe_id || !$groupe_nom || !$groupe_type || !count($tab_eleve) || ( !$periode_id && (!$date_debut || !$date_fin) ) || !$retroactif || !$couleur || !$fond || !$legende || !$marge_min || !$eleves_ordre )
{
  exit('Erreur avec les données transmises !');
}

Form::save_choix('synthese_multimatiere');

$marge_gauche = $marge_droite = $marge_haut = $marge_bas = $marge_min ;

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// INCLUSION DU CODE COMMUN À PLUSIEURS PAGES
// ////////////////////////////////////////////////////////////////////////////////////////////////////
 * 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 ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des informations transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$f_objet = isset($_POST['f_objet']) ? Clean::texte($_POST['f_objet']) : '';
$f_profils = isset($_POST['f_profils']) ? Clean::texte($_POST['f_profils']) : 'erreur';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Vérification des informations transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Tableau avec les sigles des profils pouvant être proposés
$tab_profils_possibles = array();
$tab_profils_possibles['dir_pers_pp'] = array('DIR', 'ENS', 'IEX', 'ONLY_PP', 'DOC', 'EDU', 'AED', 'SUR', 'ORI', 'MDS', 'ADF');
$tab_profils_possibles['dir_pers_lv'] = array('DIR', 'ENS', 'IEX', 'ONLY_LV', 'DOC', 'EDU', 'AED', 'SUR', 'ORI', 'MDS', 'ADF');
$tab_profils_possibles['pers_coord'] = array('ENS', 'IEX', 'DOC', 'EDU', 'AED', 'SUR', 'ORI', 'MDS', 'ADF', 'ONLY_COORD');
$tab_profils_possibles['tous'] = array('ELV', 'TUT', 'AVS', 'DIR', 'ENS', 'IEX', 'DOC', 'EDU', 'AED', 'SUR', 'ORI', 'MDS', 'ADF');
$tab_profils_possibles['parent_eleve'] = array('ELV', 'TUT', 'AVS');
$tab_objet_profils = array();
$tab_objet_profils['droit_affecter_langue'] = $tab_profils_possibles['dir_pers_lv'];
$tab_objet_profils['droit_validation_entree'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_validation_pilier'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_annulation_pilier'] = $tab_profils_possibles['dir_pers_pp'];
Example #14
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$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
  // Nouveauté 07/2014 : pouvoir passer l'info de l'établissement comme valeur du paramètre SSO
  $BASE = ctype_digit($_GET['sso']) ? Clean::entier($_GET['sso'])  : $BASE ;
  $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
  // Nouveauté 07/2014 : pouvoir passer l'UAI de l'établissement comme valeur du paramètre SSO
  $trans_UAI = (isset($_GET['uai'])) ? Clean::uai($_GET['uai']) : ( tester_UAI($_GET['sso']) ? Clean::uai($_GET['sso']) : NULL ) ;
  $BASE = ($trans_UAI) ? DB_WEBMESTRE_PUBLIC::DB_recuperer_structure_id_base_for_UAI($trans_UAI) : $BASE ;
  if(!$BASE)
  {
    if($trans_UAI)
    {
      exit_error( 'Paramètre incorrect' /*titre*/ , 'Le numéro UAI transmis '.$trans_UAI.' 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.' /*contenu*/ );
    }
    else
    {
      exit_error( 'Donnée manquante' /*titre*/ , 'Référence de base manquante (le paramètre "base" ou "id" ou "sso" n\'a pas été transmis ou n\'est pas un entier et n\'a pas non plus été trouvé dans un Cookie).' /*contenu*/ );
    }
  }
  charger_parametres_mysql_supplementaires($BASE);
}
             } 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) {
     $objet = 'retards';
     // cas d'un fichier de retards
     foreach ($xml->Retards as $eleve) {
         // il n'y a aucun identifiant disponible dans cet export...
         $nom = $eleve->NOM ? Clean::nom($eleve->NOM) : NULL;
         $prenom = $eleve->PRENOM ? Clean::prenom($eleve->PRENOM) : NULL;
         $nb_retard_nj = $eleve->REGLE && $eleve->REGLE == 'N' ? 1 : 0;
         $id = $nom . '.' . $prenom;
         $date = $eleve->DATE ? convert_date_french_to_mysql($eleve->DATE) : NULL;
         if ($nom && $prenom && $date) {
             if (!isset($tab_users_fichier[$id])) {
                 $tab_users_fichier[$id] = array(NULL, NULL, $nom, $prenom, NULL, NULL, 1, $nb_retard_nj);
             } else {
                 $tab_users_fichier[$id][6] += 1;
                 $tab_users_fichier[$id][7] += 1;
             }
             $memo_date_debut = min($memo_date_debut, $date);
             $memo_date_fin = max($memo_date_fin, $date);
         }
     }
 }
Example #16
0
if( ($ACTION=='imprimer') && ($etape==3) )
{
  Erreur500::prevention_et_gestion_erreurs_fatales( FALSE /*memory*/ , TRUE /*time*/ );
  $date = date('Y-m-d');
  $tab_pages_non_anonymes     = array();
  $tab_pages_nombre_par_bilan = array();
  $chemin_temp_pdf = CHEMIN_DOSSIER_EXPORT.'pdf_'.mt_rand().DS;
  FileSystem::creer_ou_vider_dossier($chemin_temp_pdf);
  foreach($_SESSION['tmp']['tab_pages_decoupe_pdf'] as $eleve_id => $tab_tirages)
  {
    foreach($tab_tirages as $numero_tirage => $tab)
    {
      list( $eleve_identite , $page_plage , $page_nombre ) = $tab;
      $tab_pages_non_anonymes[]     = $page_plage;
      $tab_pages_nombre_par_bilan[] = $page_nombre;
      $fichier_extraction_chemin = $chemin_temp_pdf.'officiel_'.$BILAN_TYPE.'_'.Clean::fichier($eleve_identite).'_'.$date.'_resp'.$numero_tirage.'.pdf';
      $releve_pdf = new PDFMerger;
      $pdf_string = $releve_pdf -> addPDF( CHEMIN_DOSSIER_EXPORT.$_SESSION['tmp']['fichier_nom'].'.pdf' , $page_plage ) -> merge( 'file' , $fichier_extraction_chemin );
    }
  }
  FileSystem::zipper_fichiers( $chemin_temp_pdf , CHEMIN_DOSSIER_EXPORT , $_SESSION['tmp']['fichier_nom'].'.zip' );
  FileSystem::supprimer_dossier($chemin_temp_pdf);
  $_SESSION['tmp']['pages_non_anonymes']     = implode(',',$tab_pages_non_anonymes);
  $_SESSION['tmp']['pages_nombre_par_bilan'] = implode(' ; ',$tab_pages_nombre_par_bilan);
  unset($_SESSION['tmp']['tab_pages_decoupe_pdf']);
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 4/4 - Le PDF complet est généré ; on n'en garde que les bilans non anonymes
// ////////////////////////////////////////////////////////////////////////////////////////////////////
Example #17
0
    $tab_eleves[$DB_ROW['user_id']] = $DB_ROW['user_reference'];
}
// Récupérer les notes enregistrées ; convertir si besoin en nombre de points correspondants
$tab_points = array();
$DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_notes_eleves($listing_eleve_id);
if (count($DB_TAB)) {
    foreach ($DB_TAB as $DB_ROW) {
        if ($DB_ROW['brevet_epreuve_code'] == CODE_BREVET_EPREUVE_TOTAL) {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = $DB_ROW['saisie_note'];
        } elseif ($DB_ROW['brevet_epreuve_point_sup_10']) {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = max(0, $DB_ROW['saisie_note'] - 10);
        } else {
            $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = is_numeric($DB_ROW['saisie_note']) ? $DB_ROW['saisie_note'] * $DB_ROW['brevet_epreuve_coefficient'] : $DB_ROW['saisie_note'];
        }
    }
}
// Fabriquer le fichier csv
$csv_contenu = '';
$csv_separateur = '|';
foreach ($tab_eleves as $eleve_id => $user_reference) {
    foreach ($tab_points[$eleve_id] as $epreuve_code => $points) {
        $csv_code = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? (string) $epreuve_code : 'TOT';
        $format = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? "%05.2f" : "%06.2f";
        $csv_note = is_numeric($points) ? sprintf($format, $points) : (string) $points;
        $csv_contenu .= $user_reference . $csv_separateur . $csv_code . $csv_separateur . $csv_note . $csv_separateur . NL;
    }
}
// Enregistrer le fichier csv / Retour
$fichier_nom = 'export_notanet' . '_' . Clean::fichier($_SESSION['WEBMESTRE_UAI']) . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.txt';
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_nom, To::csv($csv_contenu));
exit($fichier_nom);
    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)) {
    exit('Erreur avec les données transmises !');
}
// On vérifie que le bilan est bien accessible en modification et on récupère les infos associées
$DB_ROW = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_infos($classe_id, $periode_id, $BILAN_TYPE);
if (empty($DB_ROW)) {
    exit('Association classe / période introuvable !');
}
Example #19
0
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
/**
 * Code inclus commun aux pages
 * [./pages/releve_synthese_matiere.ajax.php]
 * [./pages/releve_synthese_multimatiere.ajax.php]
 * [./_inc/code_officiel_***.php]
 */
Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE);
// Chemins d'enregistrement
$fichier_nom = $make_action != 'imprimer' ? 'releve_synthese_' . $synthese_modele . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_' . $BILAN_TYPE . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea();
// Initialisation de tableaux
$tab_item = array();
// [item_id] => array(item_ref,item_nom,item_coef,item_cart,item_socle,item_lien,matiere_id,calcul_methode,calcul_limite,calcul_retroactif,synthese_ref);
$tab_liste_item = array();
// [i] => item_id
$tab_eleve_infos = array();
// [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance)
$tab_matiere = array();
// [matiere_id] => array(matiere_nom,matiere_nb_demandes)
$tab_synthese = array();
// [synthese_ref] => synthese_nom
$tab_eval = array();
// [eleve_id][item_id][devoir] => array(note,date,info) On utilise un tableau multidimensionnel vu qu'on ne sait pas à l'avance combien il y a d'évaluations pour un élève et un item donnés.
// Initialisation de variables
if ($make_html || $make_pdf || $make_graph) {
Example #20
0
                         .'<td>'.html($DB_ROW['user_id_gepi']).'</td>'
                         .'<td>'.$DB_ROW['user_sconet_id'].'</td>'
                         .'<td>'.$DB_ROW['user_sconet_elenoet'].'</td>'
                         .'<td>'.html($DB_ROW['user_reference']).'</td>'
                         .'<td>'.html($DB_ROW['user_login']).'</td>'
                         .'<td>'.Html::$tab_genre['adulte'][$DB_ROW['user_genre']].'</td>'
                         .'<td>'.html($DB_ROW['user_nom']).'</td>'
                         .'<td>'.html($DB_ROW['user_prenom']).'</td>'
                         .'<td>'.$DB_ROW['user_profil_sigle'].'</td>'
                       .'</tr>'.NL;
      }
    }
  }

  // Finalisation de l'export CSV (archivage dans un fichier)
  $fnom = 'export_infos-professeurs_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea();
  FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) );
  // Finalisation de l'export HTML
  $export_html .= '</tbody></table>'.NL;

  // Affichage
  echo'<ul class="puce"><li><a target="_blank" href="./force_download.php?fichier='.$fnom.'.csv"><span class="file file_txt">Récupérer les données (fichier <em>csv</em></span>).</a></li></ul>'.NL;
  echo $export_html;
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas arriver jusque là.
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');
Example #21
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
maj_base_structure_si_besoin($BASE);
$DB_TAB = DB_STRUCTURE_PUBLIC::DB_lister_parametres('"connexion_mode","cas_serveur_host","cas_serveur_port","cas_serveur_root","cas_serveur_url_login","cas_serveur_url_logout","cas_serveur_url_validate","gepi_url","gepi_rne","gepi_certificat_empreinte"');
// 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 !');
    }
    // cas 1/4 : modifier_coefficient
    if ($action_groupe == 'modifier_coefficient') {
        $test_modif = DB_STRUCTURE_REFERENTIEL::DB_modifier_referentiel_items($granulosite, $matiere_id, $objet_id, 'coef', $modifier_coef);
        $message = $test_modif ? 'ok' : 'Contenu inchangé ou items non trouvés !';
        exit($message);
    }
$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é !');
        }
    }
    // Vérifier que l'identifiant GEPI est disponible (parmi tous les utilisateurs de l'établissement)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$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 !');
}
// On vérifie que la fiche brevet est bien accessible en modification et on récupère les infos associées (nom de la classe, id des élèves concernés avec lesquels l'intersection est faite ultérieurement).
$DB_ROW = DB_STRUCTURE_BREVET::DB_recuperer_brevet_classe_infos($classe_id);
if (empty($DB_ROW)) {
    exit('Classe sans élèves concernés !');
}
Example #25
0
$profils_impression_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_IMPRESSION_PDF'], 'br');
// Indication des profils ayant accès aux copies des impressions PDF
$profils_archives_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_VOIR_ARCHIVE'], 'br');
// Droit de modifier le statut d'une fiche brevet (dans le cas PP, restera à affiner classe par classe...).
$affichage_formulaire_statut = $_SESSION['USER_PROFIL_TYPE'] == 'administrateur' || test_user_droit_specifique($_SESSION['DROIT_FICHE_BREVET_MODIFIER_STATUT']);
$tab_etats = array('1vide' => 'Vide (fermé)', '2rubrique' => 'Saisies Profs', '3mixte' => 'Saisies Mixtes', '4synthese' => 'Saisie Synthèse', '5complet' => 'Complet (fermé)');
$annee_session_brevet = annee_session_brevet();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération et traitement des données postées, si formulaire soumis
// Pas de passage par la page ajax.php => protection contre attaques type CSRF ajoutée ici
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($affichage_formulaire_statut && $_SESSION['SESAMATH_ID'] != ID_DEMO) {
    $tab_ids = isset($_POST['classe_ids']) ? explode(',', $_POST['classe_ids']) : array();
    $new_etat = isset($_POST['etat']) ? Clean::texte($_POST['etat']) : '';
    $discret = isset($_POST['mode_discret']) ? TRUE : FALSE;
    $tab_ids = array_intersect(array_filter(Clean::map_entier($tab_ids), 'positif'), $tab_classes_concernees);
    if (count($tab_ids) && isset($tab_etats[$new_etat])) {
        Session::verifier_jeton_anti_CSRF($PAGE);
        // Concernant les notifications, on liste déjà s'il y a des utilisateurs qui s'y seraient abonnés
        $abonnement_ref = 'fiche_brevet_statut';
        $abonnes_nb = 0;
        if (!$discret && in_array($new_etat, array('2rubrique', '3mixte', '4synthese'))) {
            $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref);
            $abonnes_nb = count($DB_TAB);
            if ($abonnes_nb) {
                $tab_abonnes = array();
                $tab_profils = array();
                // On récupère les infos au passage
                foreach ($DB_TAB as $DB_ROW) {
                    $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable';
                    $tab_abonnes[$DB_ROW['user_id']] = array('statut' => $notification_statut, 'mailto' => $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>', 'courriel' => $DB_ROW['user_email'], 'contenu' => '');
Example #26
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// 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'  ) ,
  'palier3'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 3'  ) ,
);
 * 
 * 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 !');
            $releve_HTML_body .= '<td class="nu2"></td>';
            foreach ($tab as $socle_id => $socle_nom) {
                $releve_HTML_body .= Html::td_validation('td', $tab_user_entree[$eleve_id][$socle_id], FALSE, $tab_user_pilier[$eleve_id][$pilier_id]['etat']);
            }
        }
        $releve_HTML_body .= '</tr>' . NL;
        $releve_PDF->validation_eleve($eleve_id, $eleve_nom, $eleve_prenom, $tab_user_pilier, $tab_user_entree, $tab_pilier, $tab_socle, $drapeau_langue);
    }
}
$releve_HTML .= $affichage_checkbox ? '<form id="form_synthese" action="#" method="post">' . NL : '';
$releve_HTML .= '<table class="bilan"><thead>' . NL . $releve_HTML_head . '</thead><tbody>' . NL . $releve_HTML_body . '</tbody></table>' . NL;
$releve_HTML .= $affichage_checkbox ? HtmlForm::afficher_synthese_exploitation('eleves') . '</form>' . NL : '';
$releve_HTML .= Html::legende(FALSE, FALSE, FALSE, FALSE, $type == 'pourcentage', $type == 'validation', FALSE);
$releve_PDF->legende($type);
// Chemins d'enregistrement
$fichier = 'releve_socle_synthese_' . Clean::fichier(substr($palier_nom, 0, strpos($palier_nom, ' ('))) . '_' . Clean::fichier($groupe_nom) . '_' . $type . '_' . fabriquer_fin_nom_fichier__date_et_alea();
// On enregistre les sorties HTML et PDF
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier . '.html', $releve_HTML);
FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $fichier . '.pdf', $releve_PDF);
// Affichage du résultat
if ($affichage_direct) {
    echo '<hr />' . NL;
    echo '<ul class="puce">' . NL;
    echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL;
    echo '</ul>' . NL;
    echo $releve_HTML;
} else {
    echo '<ul class="puce">' . NL;
    echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL;
    echo '<li><a target="_blank" href="./releve_html.php?fichier=' . $fichier . '"><span class="file file_htm">Explorer / Détailler (format <em>html</em>).</span></a></li>' . NL;
    echo '</ul>' . NL;
 * 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)
{
  Layout::add( 'js_inline_before' , 'tab_login_modele["'.$profil_sigle.'"] = "'.$login_modele.'";' );
}
 * 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);
  // Afficher le retour
  echo'<tr id="id_'.$groupe_id.'" class="new">';