{
        ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
        LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0');
        exit(']¤['.'pb'.']¤['."Erreur lors de l'écriture du fichier ".$fichier." !");
      }
      $tbody .= '<tr><td class="v">Fichier ajouté</td><td>'.$fichier.'</td></tr>';
    }
    elseif(!isset($tab['apres'])) // (forcément)
    {
      // Fichier à supprimer
      FileSystem::supprimer_fichier($dossier_install.$fichier , TRUE /*verif_exist*/ );
      $tbody .= '<tr><td class="r">Fichier supprimé</td><td>'.$fichier.'</td></tr>';
    }
  }
  // Débloquer l'application
  ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
  LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0');
  // Enregistrement du rapport
  $_SESSION['tmp']['rapport_filename'] = 'rapport_maj_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  FileSystem::fabriquer_fichier_rapport( $_SESSION['tmp']['rapport_filename'] , $thead , $tbody );
  exit(']¤['.'ok'.']¤['.'Rapport des modifications apportées et nettoyage&hellip;');
}

//
// 5. Nettoyage...
//
if($action=='maj_etape5')
{
  FileSystem::supprimer_dossier($dossier_dezip);
  $fichier_chemin = URL_DIR_EXPORT.$_SESSION['tmp']['rapport_filename'];
  unset($_SESSION['tmp']);
Example #2
0
    exit('ok');
}
// Traductions
if ($_SESSION['USER_PROFIL_TYPE'] != 'public') {
    Lang::setlocale(LC_MESSAGES, Lang::get_locale_used());
    Lang::bindtextdomain(LOCALE_DOMAINE, LOCALE_DIR);
    Lang::bind_textdomain_codeset(LOCALE_DOMAINE, LOCALE_CHARSET);
    Lang::textdomain(LOCALE_DOMAINE);
}
// Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session)
LockAcces::stopper_si_blocage($_SESSION['BASE'], FALSE);
// Autres fonctions à charger
require CHEMIN_DOSSIER_INCLUDE . 'fonction_divers.php';
// Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0").
if (count($_POST) > 999) {
    ajouter_log_PHP('Trop de variables postées', 'Page ' . $PAGE, __FILE__, __LINE__, FALSE);
}
// Jeton CSRF
Session::verifier_jeton_anti_CSRF($PAGE);
// MAJ fichier de config hébergement si besoin
if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) {
    require CHEMIN_DOSSIER_INCLUDE . 'maj_fichier_constantes_hebergement.php';
}
// Interface de connexion à la base, chargement et config (test sur CHEMIN_FICHIER_CONFIG_INSTALL car à éviter si procédure d'installation non terminée).
if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) {
    // Choix des paramètres de connexion à la base de données adaptée...
    // ...multi-structures ; base sacoche_structure_*** (si connecté sur un établissement)
    if (HEBERGEUR_INSTALLATION == 'multi-structures' && $_SESSION['BASE'] > 0) {
        $fichier_mysql_config = 'serveur_sacoche_structure_' . $_SESSION['BASE'];
        $fichier_class_config = 'class.DB.config.sacoche_structure';
    } elseif (HEBERGEUR_INSTALLATION == 'multi-structures') {
        break;
    case 'base_eleves+eleve':
        $test2 = array_multisort($tab_classes_fichier['niveau'], SORT_DESC, SORT_STRING, $tab_classes_fichier['ref'], SORT_ASC, SORT_STRING, $tab_classes_fichier['nom'], SORT_ASC, SORT_STRING);
    case 'factos+eleve':
        $test1 = array_multisort($tab_users_fichier['nom'], SORT_ASC, SORT_STRING, $tab_users_fichier['prenom'], SORT_ASC, SORT_STRING, $tab_users_fichier['genre'], $tab_users_fichier['birth_date'], $tab_users_fichier['courriel'], $tab_users_fichier['sconet_id'], $tab_users_fichier['sconet_num'], $tab_users_fichier['reference'], $tab_users_fichier['profil_sigle'], $tab_users_fichier['classe']);
        break;
    case 'sconet+parent':
    case 'base_eleves+parent':
    case 'tableur+parent':
        $test1 = array_multisort($tab_users_fichier['nom'], SORT_ASC, SORT_STRING, $tab_users_fichier['prenom'], SORT_ASC, SORT_STRING, $tab_users_fichier['genre'], $tab_users_fichier['courriel'], $tab_users_fichier['sconet_id'], $tab_users_fichier['sconet_num'], $tab_users_fichier['reference'], $tab_users_fichier['profil_sigle'], $tab_users_fichier['adresse'], $tab_users_fichier['enfant']);
        break;
}
// Outil de résolution de bug ; le test1 provoque parfois l'erreur "Array sizes are inconsistent".
// Edit au 11/05/2012 : a priori c'est corrigé, mais je laisse quand même le test au cas où, ça ne coûte rien...
if (!$test1) {
    ajouter_log_PHP('Import fichier ' . $import_origine . ' ' . $import_profil, serialize($tab_users_fichier), __FILE__, __LINE__, TRUE);
}
// On enregistre
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_users.txt', serialize($tab_users_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_classes.txt', serialize($tab_classes_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_groupes.txt', serialize($tab_groupes_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_liens_id_base.txt', serialize($tab_liens_id_base));
// On affiche le bilan des utilisateurs trouvés
if (count($tab_users_fichier['profil_sigle'])) {
    // Nom des profils
    $tab_profils_libelles = array();
    $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres('user_profil_nom_long_singulier,user_profil_nom_long_pluriel', FALSE);
    foreach ($DB_TAB as $DB_ROW) {
        $tab_profils_libelles[$DB_ROW['user_profil_sigle']] = array(1 => $DB_ROW['user_profil_nom_long_singulier'], 2 => $DB_ROW['user_profil_nom_long_pluriel']);
    }
    // Boucle pour l'affichage
        } elseif (!isset($tab['avant']) && substr($fichier, -9) != '.htaccess') {
            // Fichier à ajouter (si le .htaccess n'y est pas, c'est sans doute volontaire, ne pas l'y remettre)
            if (!copy($dossier_dezip . $fichier, $dossier_install . $fichier)) {
                ajouter_log_PHP('Mise à jour des fichiers', 'Application accessible.', __FILE__, __LINE__, FALSE);
                LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], '0');
                exit(']¤[' . 'pb' . ']¤[' . "Erreur lors de l'écriture du fichier " . $fichier . " !");
            }
            $tbody .= '<tr><td class="v">Fichier ajouté</td><td>' . $fichier . '</td></tr>';
        } elseif (!isset($tab['apres'])) {
            // Fichier à supprimer
            FileSystem::supprimer_fichier($dossier_install . $fichier, TRUE);
            $tbody .= '<tr><td class="r">Fichier supprimé</td><td>' . $fichier . '</td></tr>';
        }
    }
    // Débloquer l'application
    ajouter_log_PHP('Mise à jour des fichiers', 'Application accessible.', __FILE__, __LINE__, FALSE);
    LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], '0');
    // Enregistrement du rapport
    $_SESSION['tmp']['rapport_filename'] = 'rapport_maj_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.html';
    FileSystem::fabriquer_fichier_rapport($_SESSION['tmp']['rapport_filename'], $thead, $tbody);
    exit(']¤[' . 'ok' . ']¤[' . 'Rapport des modifications apportées et nettoyage&hellip;');
}
//
// 5. Nettoyage...
//
if ($action == 'maj_etape5') {
    FileSystem::supprimer_dossier($dossier_dezip);
    $fichier_chemin = URL_DIR_EXPORT . $_SESSION['tmp']['rapport_filename'];
    unset($_SESSION['tmp']);
    exit(']¤[' . 'ok' . ']¤[' . VERSION_PROG . '_#_' . $fichier_chemin);
}
Example #5
0
  Lang::setlocale( LC_MESSAGES, Lang::get_locale_used() );
  Lang::bindtextdomain( LOCALE_DOMAINE, LOCALE_DIR );
  Lang::bind_textdomain_codeset( LOCALE_DOMAINE, LOCALE_CHARSET );
  Lang::textdomain( LOCALE_DOMAINE );
}

// Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session)
LockAcces::stopper_si_blocage( $_SESSION['BASE'] , FALSE /*demande_connexion_profil*/ );

// Autres fonctions à charger
require(CHEMIN_DOSSIER_INCLUDE.'fonction_divers.php');

// Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0").
if(count($_POST)>999)
{
  ajouter_log_PHP( 'Trop de variables postées' /*log_objet*/ , 'Page '.$PAGE /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
}

// Jeton CSRF
Session::verifier_jeton_anti_CSRF($PAGE);

// MAJ fichier de config hébergement si besoin
if(is_file(CHEMIN_FICHIER_CONFIG_INSTALL))
{
  require(CHEMIN_DOSSIER_INCLUDE.'maj_fichier_constantes_hebergement.php');
}

// Interface de connexion à la base, chargement et config (test sur CHEMIN_FICHIER_CONFIG_INSTALL car à éviter si procédure d'installation non terminée).
if(is_file(CHEMIN_FICHIER_CONFIG_INSTALL))
{
  // Choix des paramètres de connexion à la base de données adaptée...
      $tab_users_fichier['courriel'],
      $tab_users_fichier['sconet_id'],
      $tab_users_fichier['sconet_num'],
      $tab_users_fichier['reference'],
      $tab_users_fichier['profil_sigle'],
      $tab_users_fichier['adresse'],
      $tab_users_fichier['enfant']
    );
    break;
}

// Outil de résolution de bug ; le test1 provoque parfois l'erreur "Array sizes are inconsistent".
// Edit au 11/05/2012 : a priori c'est corrigé, mais je laisse quand même le test au cas où, ça ne coûte rien...
if(!$test1)
{
  ajouter_log_PHP( 'Import fichier '.$import_origine.' '.$import_profil /*log_objet*/ , serialize($tab_users_fichier) /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , TRUE /*only_sesamath*/ );
}

// On enregistre
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_users.txt'        ,serialize($tab_users_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_classes.txt'      ,serialize($tab_classes_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_groupes.txt'      ,serialize($tab_groupes_fichier));
FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_liens_id_base.txt',serialize($tab_liens_id_base));

// On affiche le bilan des utilisateurs trouvés
if(count($tab_users_fichier['profil_sigle']))
{
  // Nom des profils
  $tab_profils_libelles = array();
  $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres( 'user_profil_nom_long_singulier,user_profil_nom_long_pluriel' /*listing_champs*/ , FALSE /*only_actif*/ );
  foreach($DB_TAB as $DB_ROW)