DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
  // On modifie aussi la session
  $_SESSION['OFFICIEL']['ARCHIVE_AJOUT_MESSAGE_COPIE']      = $archive_ajout_message_copie ;
  $_SESSION['OFFICIEL']['ARCHIVE_RETRAIT_TAMPON_SIGNATURE'] = $archive_retrait_tampon_signature ;
  exit('ok');
}

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

if( ($action=='signature') && $tampon_signature )
{
  $tab_parametres = array();
  $tab_parametres['officiel_tampon_signature'] = $tampon_signature;
  DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
  // On modifie aussi la session
  $_SESSION['OFFICIEL']['TAMPON_SIGNATURE'] = $tampon_signature ;
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement du formulaire form_tampon (upload d'un fichier image)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='upload_signature') && ($user_id>=0) && ($user_texte!='') )
{
  $fichier_nom = 'signature_'.$_SESSION['BASE'].'_'.$user_id.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.<EXT>';
  $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('gif','jpg','jpeg','png') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , 100 /*taille_maxi*/ , NULL /*filename_in_zip*/ );
  if($result!==TRUE)
  {
$tab_objet_profils['droit_officiel_bulletin_corriger_appreciation'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_bulletin_appreciation_generale'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_bulletin_impression_pdf'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_socle_modifier_statut'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_socle_corriger_appreciation'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_socle_appreciation_generale'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_socle_impression_pdf'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_fiche_brevet_modifier_statut'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_fiche_brevet_corriger_appreciation'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_fiche_brevet_appreciation_generale'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_fiche_brevet_impression_pdf'] = $tab_profils_possibles['dir_pers_pp'];
$tab_objet_profils['droit_officiel_releve_voir_archive'] = $tab_profils_possibles['tous'];
$tab_objet_profils['droit_officiel_bulletin_voir_archive'] = $tab_profils_possibles['tous'];
$tab_objet_profils['droit_officiel_socle_voir_archive'] = $tab_profils_possibles['tous'];
$tab_objet_profils['droit_fiche_brevet_voir_archive'] = $tab_profils_possibles['tous'];
if (!isset($tab_objet_profils[$f_objet])) {
    exit('Droit inconnu !');
}
$tab_profils_transmis = $f_profils ? explode(',', $f_profils) : array();
$tab_profils_possibles = $tab_objet_profils[$f_objet];
$tab_profils_inconnus = array_diff($tab_profils_transmis, $tab_profils_possibles);
if (count($tab_profils_inconnus)) {
    exit('Profils incohérents !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Appliquer la modification demandée
// ////////////////////////////////////////////////////////////////////////////////////////////////////
DB_STRUCTURE_COMMUN::DB_modifier_parametres(array($f_objet => $f_profils));
// ne pas oublier de mettre aussi à jour la session
$_SESSION[strtoupper($f_objet)] = $f_profils;
exit('ok');
 * 
 */
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']) : '';
$tab_id = isset($_POST['tab_id']) ? Clean::map_entier(explode(',', $_POST['tab_id'])) : array();
$tab_id = array_filter($tab_id, 'positif');
sort($tab_id);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Choix de paliers du socle
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'Choix_paliers') {
    // Il n'y a que 3 paliers : on ne s'embête pas à comparer pour voir ce qui a changé, on effectue 3 update.
    for ($palier_id = 1; $palier_id < 4; $palier_id++) {
        $palier_actif = in_array($palier_id, $tab_id) ? 1 : 0;
        DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_palier($palier_id, $palier_actif);
    }
    // On mémorise aussi la liste des piliers actifs (base + session)
    $liste_paliers_actifs = implode(',', $tab_id);
    DB_STRUCTURE_COMMUN::DB_modifier_parametres(array('liste_paliers_actifs' => $liste_paliers_actifs));
    $_SESSION['LISTE_PALIERS_ACTIFS'] = $liste_paliers_actifs;
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
 * 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(!isset($STEP))       {exit('Ce fichier ne peut être appelé directement !');}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 90 - Nettoyage des fichiers temporaires (tous les cas)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

// Il est arrivé que ces fichiers n'existent plus (bizarre...) d'où le test d'existence.
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.$fichier_dest                                                                                            , TRUE /*verif_exist*/ );
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_users.txt'         , TRUE /*verif_exist*/ );
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_classes.txt'       , TRUE /*verif_exist*/ );
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_groupes.txt'       , TRUE /*verif_exist*/ );
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_memo_analyse.txt'  , TRUE /*verif_exist*/ );
FileSystem::supprimer_fichier( CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_liens_id_base.txt' , TRUE /*verif_exist*/ );
// Retenir qu'un import a été effectué
$nom_variable = 'date_last_import_'.$import_profil.'s';
DB_STRUCTURE_COMMUN::DB_modifier_parametres( array( $nom_variable => TODAY_MYSQL ) );
$_SESSION[strtoupper($nom_variable)] = TODAY_MYSQL;
// Game over
echo'<p><label class="valide">Fichiers temporaires effacés, procédure d\'import terminée !</label></p>'.NL;
echo'<ul class="puce p"><li><a href="#" id="retourner_depart">Retour au départ.</a><label id="ajax_msg">&nbsp;</label></li></ul>'.NL;

?>
{
  exit('Erreur avec les données transmises !');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer de nouveaux parapmètres par défaut
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='enregistrer')
{
  $_SESSION['CALCUL_VALEUR']     = $valeur;
  $_SESSION['CALCUL_SEUIL']      = $seuil;
  $_SESSION['CALCUL_METHODE']    = $methode;
  $_SESSION['CALCUL_LIMITE']     = $limite;
  $_SESSION['CALCUL_RETROACTIF'] = $retroactif;
  DB_STRUCTURE_COMMUN::DB_modifier_parametres( array('calcul_valeur_RR'=>$valeur['RR'],'calcul_valeur_R'=>$valeur['R'],'calcul_valeur_V'=>$valeur['V'],'calcul_valeur_VV'=>$valeur['VV'],'calcul_seuil_R'=>$seuil['R'],'calcul_seuil_V'=>$seuil['V'],'calcul_methode'=>$methode,'calcul_limite'=>$limite,'calcul_retroactif'=>$retroactif) );
  exit('<ok>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Simuler avec des paramètres donnés
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='calculer')
{
  $type_calcul = (in_array($methode,array('geometrique','arithmetique','classique'))) ? 'moyenne' : 'bestof' ;
  $tab_bad = array('0','1','2','3');
  $tab_bon = array(' RR',' R',' V',' VV');
  $tab_lignes = array();
  $tab_lignes[1] = '';
  $tab_lignes = array_pad($tab_lignes,256,'');
        // Pas de vérif particulière de l'empreinte du certificat non plus, ne sachant pas s'il peut y avoir plusieurs formats.
        // Donc on va se contenter de vraiment vérifier l'URL de Gepi via une requête cURL
        if (strlen($gepi_saml_url) < 8) {
            exit_json(FALSE, 'Adresse de GEPI manquante !');
        }
        if (empty($gepi_saml_certif)) {
            exit_json(FALSE, 'Signature (empreinte du certificat) manquante !');
        }
        $gepi_saml_url = substr($gepi_saml_url, -1) == '/' ? substr($gepi_saml_url, 0, -1) : $gepi_saml_url;
        $fichier_distant = cURL::get_contents($gepi_saml_url . '/bandeau.css');
        // Le mieux serait d'appeler le fichier du web-services... si un jour il y en a un...
        if (substr($fichier_distant, 0, 6) == 'Erreur') {
            exit_json(FALSE, 'Adresse de Gepi incorrecte [ ' . $fichier_distant . ' ] !');
        }
        // C'est ok
        DB_STRUCTURE_COMMUN::DB_modifier_parametres(array('connexion_mode' => $f_connexion_mode, 'connexion_nom' => $f_connexion_nom, 'connexion_departement' => $f_connexion_departement, 'gepi_url' => $gepi_saml_url, 'gepi_rne' => $gepi_saml_rne, 'gepi_certificat_empreinte' => $gepi_saml_certif));
        // ne pas oublier de mettre aussi à jour la session (normalement faudrait pas car connecté avec l'ancien mode, mais sinon pb d'initalisation du formulaire)
        $_SESSION['CONNEXION_MODE'] = $f_connexion_mode;
        $_SESSION['CONNEXION_NOM'] = $f_connexion_nom;
        $_SESSION['CONNEXION_DEPARTEMENT'] = $f_connexion_departement;
        $_SESSION['GEPI_URL'] = $gepi_saml_url;
        $_SESSION['GEPI_RNE'] = $gepi_saml_rne;
        $_SESSION['GEPI_CERTIFICAT_EMPREINTE'] = $gepi_saml_certif;
        exit_json(TRUE);
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Ajouter une convention
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($f_action == 'ajouter_convention' && $f_connexion_mode && $f_connexion_ref && in_array($f_annee, array(0, 1))) {
    if ($f_connexion_mode != 'cas' || !isset($tab_connexion_info['cas'][$f_connexion_ref])) {