LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], '0');
                    exit(']¤[' . 'pb' . ']¤[' . "Erreur lors de l'écriture du fichier " . $fichier . " !");
                }
                $tbody .= '<tr><td class="b">Fichier modifié</td><td>' . $fichier . '</td></tr>';
            }
        } 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') {
Exemplo n.º 2
0
 /**
  * Supprimer les fichiers de blocage éventuels d'une structure
  * 
  * @param int   $base_id
  * @return void
  */
 public static function supprimer_fichiers_blocage($base_id)
 {
     FileSystem::supprimer_fichier(LockAcces::chemin_fichier_blocage('webmestre', $base_id), TRUE);
     FileSystem::supprimer_fichier(LockAcces::chemin_fichier_blocage('administrateur', $base_id), TRUE);
     FileSystem::supprimer_fichier(LockAcces::chemin_fichier_blocage('automate', $base_id), TRUE);
 }
Exemplo n.º 3
0
/**
 * Cas d'un service externe récupérant les données d'un user authentifié sur SACoche.
 * C'est un webservice un peu particulier qui ne requiert pas d'autre fichier de code dans CHEMIN_DOSSIER_WEBSERVICES.
 * Il y a en revanche quelques lignes de code associées dans le fichier /index.php
 */
if ($WS_qui == 'AutoMaths') {
    $WS_cle = Clean::param_chemin($WS_cle);
    if (!$WS_cle) {
        exit('Erreur : clef non transmise !');
    }
    $fichier = CHEMIN_DOSSIER_LOGINPASS . $WS_cle . '.txt';
    if (!is_file($fichier)) {
        exit('Erreur : absence de données associées à cette clef !');
    }
    $infos_user = file_get_contents($fichier);
    FileSystem::supprimer_fichier($fichier);
    exit($infos_user);
}
/**
 * Place aux autres webservices appelés depuis l'extérieur.
 * On ne vérifie dans un premier temps que le 1er paramètre (le service web prendra éventuellement en charge la suite).
 */
$tab_ws = array('argos_parent', 'argos_ajout', 'Laclasse-provisionning');
if (!in_array($WS_qui, $tab_ws)) {
    exit('Erreur : nom du service web manquant / incorrect ou service non autorisé !');
}
$fichier = CHEMIN_DOSSIER_WEBSERVICES . $WS_qui . '.php';
if (!is_file($fichier)) {
    exit('Erreur : le service web "' . $WS_qui . '" n\'est pas disponible sur cette installation !');
}
require $fichier;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer le nouveau fichier de paramètres
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'enregistrer') {
    // Pour le logo, ...
    if (!isset($_SESSION['tmp']['partenaire_logo_new_filename'])) {
        // soit on conserve le précédent (éventuellement rien),
    } elseif ($_SESSION['tmp']['partenaire_logo_new_filename'] == '') {
        // soit on le supprime,
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE);
        $_SESSION['tmp']['partenaire_logo_actuel_filename'] = '';
    } elseif (is_file(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'])) {
        // soit on prend le nouveau, auquel cas il faut aussi le déplacer dans CHEMIN_DOSSIER_PARTENARIAT, et éventuellement supprimer l'ancien
        if ($_SESSION['tmp']['partenaire_logo_actuel_filename']) {
            FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE);
        }
        $_SESSION['tmp']['partenaire_logo_actuel_filename'] = 'logo_' . $_SESSION['USER_ID'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.' . $_SESSION['tmp']['partenaire_logo_new_file_ext'];
        copy(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'], CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename']);
    }
    unset($_SESSION['tmp']['partenaire_logo_new_filename'], $_SESSION['tmp']['partenaire_logo_new_file_ext']);
    // On fabrique le fichier avec les infos et on l'enregistre
    FileSystem::fabriquer_fichier_partenaire_message($_SESSION['USER_ID'], $_SESSION['tmp']['partenaire_logo_actuel_filename'], $adresse_web, $message);
    // Retour
    $partenaire_logo_url = $_SESSION['tmp']['partenaire_logo_actuel_filename'] ? URL_DIR_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'] : URL_DIR_IMG . 'auto.gif';
    $partenaire_lien_ouvrant = $adresse_web ? '<a href="' . html($adresse_web) . '" target="_blank">' : '';
    $partenaire_lien_fermant = $adresse_web ? '</a>' : '';
    exit('ok-' . $partenaire_lien_ouvrant . '<span id="partenaire_logo"><img src="' . html($partenaire_logo_url) . '" /></span><span id="partenaire_message">' . nl2br(html($message)) . '</span>' . $partenaire_lien_fermant . '<hr id="partenaire_hr" />');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
  // Charger les paramètres de connexion à cette base afin de pouvoir y effectuer des requêtes
  charger_parametres_mysql_supplementaires($base_id);
  // Restaurer des fichiers de svg et mettre la base à jour si besoin.
  $texte_etape = restaurer_tables_base_etablissement($dossier_temp_sql,0);
  // Supprimer le dossier temporaire
  FileSystem::supprimer_dossier($dossier_temp_sql);
  // Retour du succès, appel suivant
  $retour_cellules_oui = '<td class="nu"><input type="checkbox" name="f_ids" value="'.$base_id.'" /></td><td class="label">'.$base_id.'</td><td class="label">'.html($localisation.' | '.$denomination.' ['.$uai.']').'</td><td class="label">'.html($contact_nom.' '.$contact_prenom.' ('.$contact_courriel.')').'</td>';
  exit(']¤['.'<tr>'.$retour_cellules_oui.'<td class="label"><label class="valide">'.$texte_etape.' avec succès.</label></td>'.'</tr>');
}
elseif( ($action=='importer') && $num && $max && ($num==$max) )
{
  // Supprimer les fichiers zip des bases
  foreach($_SESSION['tab_info'] as $key => $tab_infos)
  {
    FileSystem::supprimer_fichier( CHEMIN_DOSSIER_DUMP.$tab_infos['fichier_nom'] , TRUE /*verif_exist*/ );
  }
  // Game over
  unset($_SESSION['datetime'],$_SESSION['alea'],$_SESSION['tab_info']);
  exit(']¤['.'ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer plusieurs structures existantes
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='supprimer') && $nb_bases )
{
  foreach($tab_base_id as $base_id)
  {
    Webmestre::supprimer_multi_structure($base_id);
        FileSystem::creer_dossier($dossier . $base_id);
        FileSystem::ecrire_fichier_index($dossier . $base_id);
    }
    // Charger les paramètres de connexion à cette base afin de pouvoir y effectuer des requêtes
    charger_parametres_mysql_supplementaires($base_id);
    // Restaurer des fichiers de svg et mettre la base à jour si besoin.
    $texte_etape = restaurer_tables_base_etablissement($dossier_temp_sql, 0);
    // Supprimer le dossier temporaire
    FileSystem::supprimer_dossier($dossier_temp_sql);
    // Retour du succès, appel suivant
    $retour_cellules_oui = '<td class="nu"><input type="checkbox" name="f_ids" value="' . $base_id . '" /></td><td class="label">' . $base_id . '</td><td class="label">' . html($localisation . ' | ' . $denomination . ' [' . $uai . ']') . '</td><td class="label">' . html($contact_nom . ' ' . $contact_prenom . ' (' . $contact_courriel . ')') . '</td>';
    exit(']¤[' . '<tr>' . $retour_cellules_oui . '<td class="label"><label class="valide">' . $texte_etape . ' avec succès.</label></td>' . '</tr>');
} elseif ($action == 'importer' && $num && $max && $num == $max) {
    // Supprimer les fichiers zip des bases
    foreach ($_SESSION['tab_info'] as $key => $tab_infos) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_DUMP . $tab_infos['fichier_nom'], TRUE);
    }
    // Game over
    unset($_SESSION['datetime'], $_SESSION['alea'], $_SESSION['tab_info']);
    exit(']¤[' . 'ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer plusieurs structures existantes
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'supprimer' && $nb_bases) {
    foreach ($tab_base_id as $base_id) {
        Webmestre::supprimer_multi_structure($base_id);
    }
    exit('<ok>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
Exemplo n.º 7
0
 /**
  * Vérifier qu'une arborescence XML d'un référentiel est syntaxiquement valide.
  * 
  * @param string    $arbreXML
  * @return string   "ok" ou "Erreur..."
  */
 public static function verifier_arborescence_XML($arbreXML)
 {
   // On ajoute déclaration et doctype au fichier (évite que l'utilisateur ait à se soucier de cette ligne et permet de le modifier en cas de réorganisation
   // Attention, le chemin du DTD est relatif par rapport à l'emplacement du fichier XML (pas celui du script en cours) !
   $fichier_adresse = CHEMIN_DOSSIER_IMPORT.'referentiel_'.fabriquer_fin_nom_fichier__date_et_alea().'.xml';
   $fichier_contenu = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<!DOCTYPE arbre SYSTEM "../../_dtd/referentiel.dtd">'."\r\n".$arbreXML;
   $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
   // On enregistre temporairement dans un fichier pour analyse
   FileSystem::ecrire_fichier($fichier_adresse,$fichier_contenu);
   // On lance le test
   $test_XML_valide = ServeurCommunautaire::analyser_XML($fichier_adresse);
   // On efface le fichier temporaire
   FileSystem::supprimer_fichier($fichier_adresse);
   return $test_XML_valide;
 }
Exemplo n.º 8
0
        exit('Erreur : le fichier contenant les données à traiter est introuvable !');
    }
    $contenu = file_get_contents($fichier_chemin);
    $tab_donnees_csv = @unserialize($contenu);
    if ($tab_donnees_csv === FALSE) {
        exit('Erreur : le fichier contenant les données à traiter est syntaxiquement incorrect !');
    }
    $nb_modifs = 0;
    foreach ($tab_donnees_csv as $rubrique_id => $tab_eleves) {
        foreach ($tab_eleves as $eleve_id => $tab_saisies) {
            if (isset($tab_saisies['moyenne'])) {
                if ($tab_saisies['moyenne'] >= 0 && $OBJET == 'modifier' && $BILAN_TYPE == 'bulletin' && $rubrique_id > 0) {
                    enregistrer_note($BILAN_TYPE, $periode_id, $eleve_id, $rubrique_id, $tab_saisies['moyenne']);
                    $nb_modifs++;
                }
            }
            if (isset($tab_saisies['appreciation'])) {
                if ($tab_saisies['appreciation'] && ($rubrique_id > 0 || $OBJET == 'tamponner')) {
                    enregistrer_appreciation($BILAN_TYPE, $periode_id, $eleve_id, $classe_id, $rubrique_id, $_SESSION['USER_ID'], $tab_saisies['appreciation']);
                    $nb_modifs++;
                }
            }
        }
    }
    if (!$nb_modifs) {
        exit('Erreur : aucune donnée trouvée à enregistrer !');
    }
    FileSystem::supprimer_fichier($fichier_chemin, FALSE);
    $s = $nb_modifs > 1 ? 's' : '';
    exit('ok' . ']¤[' . $nb_modifs . ' donnée' . $s . ' enregistrée' . $s . '.');
}
if (!defined('SERVEUR_PROXY_USED')) {
    $tab_constantes_modifiees += array('SERVEUR_PROXY_USED' => '', 'SERVEUR_PROXY_NAME' => '', 'SERVEUR_PROXY_PORT' => '', 'SERVEUR_PROXY_TYPE' => '', 'SERVEUR_PROXY_AUTH_USED' => '', 'SERVEUR_PROXY_AUTH_METHOD' => '', 'SERVEUR_PROXY_AUTH_USER' => '', 'SERVEUR_PROXY_AUTH_PASS' => '');
}
// A compter du 26/05/2011, ajout de paramètres pour les dates CNIL. [TODO] peut être retiré dans un an environ
if (!defined('CNIL_NUMERO')) {
    $tab_constantes_modifiees += array('CNIL_NUMERO' => HEBERGEUR_CNIL, 'CNIL_DATE_ENGAGEMENT' => '', 'CNIL_DATE_RECEPISSE' => '');
}
// A compter du 14/03/2012, ajout de paramètres pour les fichiers associés aux devoirs. [TODO] peut être retiré dans un an environ
if (!defined('FICHIER_DUREE_CONSERVATION')) {
    $tab_constantes_modifiees += array('FICHIER_TAILLE_MAX' => 500, 'FICHIER_DUREE_CONSERVATION' => 12);
}
// A compter du 18/10/2012, ajout de paramètre pour le chemin des logs phpCAS. [TODO] peut être retiré dans un an environ
if (!defined('CHEMIN_LOGS_PHPCAS') && !defined('PHPCAS_CHEMIN_LOGS')) {
    $tab_constantes_modifiees += array('CHEMIN_LOGS_PHPCAS' => CHEMIN_DOSSIER_TMP);
    $ancien_fichier = CHEMIN_DOSSIER_TMP . 'debugcas_' . md5($_SERVER['DOCUMENT_ROOT']) . '.txt';
    FileSystem::supprimer_fichier($ancien_fichier, TRUE);
}
// A compter du 17/10/2012, ajout de paramètre pour fixer un niveau de restriction de droits d'accès (CHMOD). [TODO] peut être retiré dans un an environ
if (!defined('SYSTEME_UMASK')) {
    $tab_constantes_modifiees += array('SYSTEME_UMASK' => '000');
}
// A compter du 30/11/2013, ajout de paramètre pour indiquer si les admins peuvent modifier les coordonnées de la personne contact (multi-structures). [TODO] peut être retiré dans un an environ
if (!defined('CONTACT_MODIFICATION_USER')) {
    $tab_constantes_modifiees += array('CONTACT_MODIFICATION_USER' => 'non', 'CONTACT_MODIFICATION_MAIL' => 'non');
}
// A compter du 14/01/2014, ajout de paramètres pour le debug phpCAS. [TODO] peut être retiré dans un an environ
if (!defined('PHPCAS_CHEMIN_LOGS')) {
    $tab_constantes_modifiees += array('PHPCAS_CHEMIN_LOGS' => CHEMIN_LOGS_PHPCAS, 'PHPCAS_ETABL_ID_LISTING' => '');
}
// A compter du 08/02/2014, ajout de paramètre pour permettre de ne pas vérifier le certificat ssl de certaines connexions CAS
if (!defined('PHPCAS_NO_CERTIF_LISTING')) {
Exemplo n.º 10
0
 /**
  * Effacer d'anciens fichiers temporaires sur le serveur.
  * 
  * @param string   $dossier              le dossier à vider
  * @param int      $nb_minutes           le délai d'expiration en minutes
  * @param bool     $with_sous_dossiers   TRUE pour forcer aussi la suppression de sous-dossiers résiduels (facultatif)
  * @return void
  */
 public static function effacer_fichiers_temporaires($dossier,$nb_minutes,$with_sous_dossiers=FALSE)
 {
   if(is_dir($dossier))
   {
     $date_limite = $_SERVER['REQUEST_TIME'] - $nb_minutes*60;
     $tab_contenu = FileSystem::lister_contenu_dossier($dossier);
     $ds = (substr($dossier,-1)==DS) ? '' : DS ;
     foreach($tab_contenu as $contenu)
     {
       $chemin_contenu = $dossier.$ds.$contenu;
       $extension = pathinfo($chemin_contenu,PATHINFO_EXTENSION);
       $date_unix = @filemtime($chemin_contenu); // @ car dans de rares cas le fichier est simultanément supprimé par un autre processus
       if( ($date_unix<$date_limite) && ($extension!='htm') )
       {
         if(is_file($chemin_contenu))
         {
           FileSystem::supprimer_fichier($chemin_contenu);
         }
         else if( is_dir($chemin_contenu) && $with_sous_dossiers )
         {
           FileSystem::supprimer_dossier($chemin_contenu);
         }
       }
     }
   }
 }
Exemplo n.º 11
0
 /**
  * Tâches pseudo-planifiées exécutées lors de la connexion d'un utilisateur d'un établissement
  * 
  * @param void
  * @return void
  */
 public static function cron()
 {
   // On essaye de faire en sorte que plusieurs connexions ne lancent pas ces procédures simultanément
   $fichier_lock = CHEMIN_DOSSIER_TMP.'lock.txt';
   if(!file_exists($fichier_lock))
   {
     // On écrit un marqueur
     FileSystem::ecrire_fichier($fichier_lock,'');
     // On efface les fichiers temporaires obsolètes
     FileSystem::nettoyer_fichiers_temporaires($_SESSION['BASE']);
     // On rend visibles les notifications en attente et on supprime les notifications obsolètes
     Sesamail::envoyer_notifications();
     DB_STRUCTURE_NOTIFICATION::DB_supprimer_log_anciens();
     // On efface le marqueur
     FileSystem::supprimer_fichier($fichier_lock);
   }
   // Si le fichier témoin du nettoyage existe, on vérifie que sa présence n'est pas anormale (cela s'est déjà produit...)
   else
   {
     if( $_SERVER['REQUEST_TIME'] - filemtime($fichier_lock) > 30 )
     {
       FileSystem::supprimer_fichier($fichier_lock);
     }
   }
 }
    }
    list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos;
    $tab_extension_types = array(IMAGETYPE_GIF => 'gif', IMAGETYPE_JPEG => 'jpeg', IMAGETYPE_PNG => 'png', IMAGETYPE_BMP => 'bmp');
    // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants
    // vérifier le type
    if (!isset($tab_extension_types[$image_type])) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_LOGO . FileSystem::$file_saved_name);
        exit('Erreur : le fichier transmis n\'est pas un fichier image !');
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un logo
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'delete_logo' && $logo) {
    FileSystem::supprimer_fichier(CHEMIN_DOSSIER_LOGO . $logo, TRUE);
    // Si on supprime l'image actuellement utilisée, alors la retirer du fichier
    if ($logo == HEBERGEUR_LOGO) {
        FileSystem::fabriquer_fichier_hebergeur_info(array('HEBERGEUR_LOGO' => ''));
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer le nouveau fichier de paramètres
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'enregistrer' && $denomination && $nom && $prenom && $courriel) {
    // Vérifier le domaine du serveur mail seulement en mode multi-structures car ce peut être sinon une installation sur un serveur local non ouvert sur l'extérieur.
    if (HEBERGEUR_INSTALLATION == 'multi-structures') {
        list($mail_domaine, $is_domaine_valide) = tester_domaine_courriel_valide($courriel);
        if (!$is_domaine_valide) {
            exit('Erreur avec le domaine "' . $mail_domaine . '" !');
Exemplo n.º 13
0
    }
    FileSystem::supprimer_fichier($chemin_logs . 'debugcas_test_ecriture.txt');
    // Nettoyer la liste des établissements transmise
    if ($etabl_id_listing) {
        $tab_etabl_id = explode(',', $etabl_id_listing);
        $tab_etabl_id = Clean::map_entier($tab_etabl_id);
        $tab_etabl_id = array_filter($tab_etabl_id, 'positif');
        $etabl_id_listing = count($tab_etabl_id) ? ',' . implode(',', $tab_etabl_id) . ',' : '';
    }
    // ok
    FileSystem::fabriquer_fichier_hebergeur_info(array('PHPCAS_CHEMIN_LOGS' => $chemin_logs, 'PHPCAS_ETABL_ID_LISTING' => $etabl_id_listing));
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Effacer un fichier de logs de phpCAS
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'supprimer' && $fichier_logs) {
    FileSystem::supprimer_fichier(PHPCAS_CHEMIN_LOGS . $fichier_logs . '.txt', TRUE);
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer un fichier de logs de phpCAS
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'voir' && $fichier_logs) {
    FileSystem::zip(CHEMIN_DOSSIER_EXPORT . $fichier_logs . '.zip', $fichier_logs . '.txt', file_get_contents(PHPCAS_CHEMIN_LOGS . $fichier_logs . '.txt'));
    exit('<ul class="puce"><li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier_logs . '.zip' . '"><span class="file file_zip">Fichier de logs au format <em>zip</em>.</li></ul>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
  // vérifier le type 
  if(!isset($tab_extension_types[$image_type]))
  {
    FileSystem::supprimer_fichier(CHEMIN_DOSSIER_LOGO.FileSystem::$file_saved_name);
    exit('Erreur : le fichier transmis n\'est pas un fichier image !');
  }
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un logo
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='delete_logo') && $logo )
{
  FileSystem::supprimer_fichier( CHEMIN_DOSSIER_LOGO.$logo , TRUE /*verif_exist*/ );
  // Si on supprime l'image actuellement utilisée, alors la retirer du fichier
  if($logo==HEBERGEUR_LOGO)
  {
    FileSystem::fabriquer_fichier_hebergeur_info( array('HEBERGEUR_LOGO'=>'') );
  }
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer le nouveau fichier de paramètres
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='enregistrer') && $denomination && $nom && $prenom && $courriel )
{
  // Vérifier le domaine du serveur mail seulement en mode multi-structures car ce peut être sinon une installation sur un serveur local non ouvert sur l'extérieur.
Exemplo n.º 15
0
    foreach($tab_eleves as $eleve_id => $tab_saisies)
    {
      if(isset($tab_saisies['moyenne']))
      {
        if( ($tab_saisies['moyenne']>=0) && ($OBJET=='modifier') && ($BILAN_TYPE=='bulletin') && ($rubrique_id>0) )
        {
          enregistrer_note( $BILAN_TYPE , $periode_id , $eleve_id , $rubrique_id , $tab_saisies['moyenne'] );
          $nb_modifs++;
        }
      }
      if(isset($tab_saisies['appreciation']))
      {
        if( ($tab_saisies['appreciation']) && ( ($rubrique_id>0) || ($OBJET=='tamponner') ) )
        {
          enregistrer_appreciation( $BILAN_TYPE , $periode_id , $eleve_id , $classe_id , $rubrique_id , $_SESSION['USER_ID'] , $tab_saisies['appreciation'] );
          $nb_modifs++;
        }
      }
    }
  }
  if(!$nb_modifs)
  {
    exit('Erreur : aucune donnée trouvée à enregistrer !');
  }
  FileSystem::supprimer_fichier( $fichier_chemin , FALSE /*verif_exist*/ );
  $s = ($nb_modifs>1) ? 's' : '' ;
  exit('ok'.']¤['.$nb_modifs.' donnée'.$s.' enregistrée'.$s.'.');
}

?>
Exemplo n.º 16
0
     $notification_contenu = $texte;
     $tab_abonnes = explode(',',$listing_abonnes);
     foreach($tab_abonnes as $abonne_id)
     {
       DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente( $abonne_id , $abonnement_ref , 0 , NULL , $notification_contenu , 'compléter' , TRUE /*sep*/ );
     }
   }
 }
 //
 // On passe maintenant au commentaire texte
 //
 // Supprimer un éventuel fichier précédent
 if( $msg_url && (mb_strpos($msg_url,$url_dossier_devoir)===0) )
 {
   // Il peut ne pas être présent sur le serveur en cas de restauration de base ailleurs, etc.
   FileSystem::supprimer_fichier( url_to_chemin($msg_url) , TRUE /*verif_exist*/ );
 }
 // Mise à jour dans la base
 if($msg_data)
 {
   $fichier_nom = 'devoir_'.$devoir_id.'_eleve_'.$_SESSION['USER_ID'].'_'.'texte'.'_'.$_SERVER['REQUEST_TIME'].'.'.'txt'; // pas besoin de le rendre inaccessible -> fabriquer_fin_nom_fichier__date_et_alea() inutilement lourd
   DB_STRUCTURE_COMMENTAIRE::DB_remplacer_devoir_commentaire( $devoir_id , $_SESSION['USER_ID'] , 'texte' , $url_dossier_devoir.$fichier_nom );
   // et enregistrement du fichier
   FileSystem::ecrire_fichier( $chemin_devoir.$fichier_nom , $msg_data );
 }
 else
 {
   if($msg_autre=='oui')
   {
     DB_STRUCTURE_COMMENTAIRE::DB_remplacer_devoir_commentaire( $devoir_id , $_SESSION['USER_ID'] , 'texte' , '' );
   }
Exemplo n.º 17
0
     $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id($abonnement_ref, $listing_profs);
     if ($listing_abonnes) {
         $notification_contenu = $texte;
         $tab_abonnes = explode(',', $listing_abonnes);
         foreach ($tab_abonnes as $abonne_id) {
             DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente($abonne_id, $abonnement_ref, 0, NULL, $notification_contenu, 'compléter', TRUE);
         }
     }
 }
 //
 // On passe maintenant au commentaire texte
 //
 // Supprimer un éventuel fichier précédent
 if ($msg_url && mb_strpos($msg_url, $url_dossier_devoir) === 0) {
     // Il peut ne pas être présent sur le serveur en cas de restauration de base ailleurs, etc.
     FileSystem::supprimer_fichier(url_to_chemin($msg_url), TRUE);
 }
 // Mise à jour dans la base
 if ($msg_data) {
     $fichier_nom = 'devoir_' . $devoir_id . '_eleve_' . $_SESSION['USER_ID'] . '_' . 'texte' . '_' . $_SERVER['REQUEST_TIME'] . '.' . 'txt';
     // pas besoin de le rendre inaccessible -> fabriquer_fin_nom_fichier__date_et_alea() inutilement lourd
     DB_STRUCTURE_COMMENTAIRE::DB_remplacer_devoir_commentaire($devoir_id, $_SESSION['USER_ID'], 'texte', $url_dossier_devoir . $fichier_nom);
     // et enregistrement du fichier
     FileSystem::ecrire_fichier($chemin_devoir . $fichier_nom, $msg_data);
 } else {
     if ($msg_autre == 'oui') {
         DB_STRUCTURE_COMMENTAIRE::DB_remplacer_devoir_commentaire($devoir_id, $_SESSION['USER_ID'], 'texte', '');
     } else {
         DB_STRUCTURE_COMMENTAIRE::DB_supprimer_devoir_commentaire($devoir_id, $_SESSION['USER_ID']);
     }
 }
 * 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;

?>
Exemplo n.º 19
0
    }
    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' /*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...
//
/**
 * Traiter un fichier photo : le vérifier, redimensionner l'image, enregistrer en BDD son contenu, effacer les fichiers correspondants
 *
 * @param int      $user_id
 * @param string   $fichier_chemin
 * @return string|array   un message d'erreur ou un tableau avec [ contenu_base_64 , largeur , hauteur ]
 */
function photo_file_to_base($user_id,$fichier_chemin)
{
  // vérifier la conformité du fichier image, récupérer les infos le concernant
  $tab_infos = @getimagesize($fichier_chemin);
  if($tab_infos==FALSE)
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier image ne semble pas valide';
  }
  list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos;
  $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants
  // vérifier le type 
  if(!isset($tab_extension_types[$image_type]))
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis n\'est pas un fichier image';
  }
  // vérifier les dimensions
  if( ($image_largeur>1024) || ($image_hauteur>1024) )
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis a des dimensions trop grandes ('.$image_largeur.' sur '.$image_hauteur.')';
  }
  if( ($image_largeur==0) && ($image_hauteur==0) )
  {
    FileSystem::supprimer_fichier($fichier_chemin);
    return'le fichier transmis a des dimensions indéterminables';
  }
  // C'est bon, on continue
  $fichier_chemin_vignette = $fichier_chemin.'.mini.jpeg';
  $image_format = $tab_extension_types[$image_type];
  $coef = PHOTO_DIMENSION_MAXI / max($image_largeur,$image_hauteur);
  $largeur_new = round($image_largeur*$coef);
  $hauteur_new = round($image_hauteur*$coef);
  $image_new    = function_exists('imagecreatetruecolor') ? imagecreatetruecolor($largeur_new,$hauteur_new) : imagecreate($largeur_new,$hauteur_new) ;
  $couleur_fond = imagecolorallocate($image_new,255,255,255); // Le premier appel à imagecolorallocate() remplit la couleur de fond si imagecreate().
  $couleur_fill = imagefill($image_new, 0, 0, $couleur_fond); // Si imagecreatetruecolor(), l'image est noire et il faut la remplir explicitement.
  $image_depart = call_user_func( 'imagecreatefrom'.$image_format, $fichier_chemin );
  imagecopyresampled($image_new , $image_depart , 0 /* dest_x */ , 0 /* dest_y */ , 0 /* dep_x */ , 0 /* dep_y */ , $largeur_new , $hauteur_new , $image_largeur , $image_hauteur );
  imagedestroy($image_depart);
  imagejpeg($image_new , $fichier_chemin_vignette , JPEG_QUALITY );
  imagedestroy($image_new);
  // stocker l'image dans la base
  $image_contenu_base_64 = base64_encode(file_get_contents($fichier_chemin_vignette)) ;
  DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'photo' , $image_contenu_base_64 , 'jpeg' , $largeur_new , $hauteur_new );
  // effacer les fichiers images
  FileSystem::supprimer_fichier($fichier_chemin);
  FileSystem::supprimer_fichier($fichier_chemin_vignette);
  // retour des informations
  return array( $image_contenu_base_64 , $largeur_new , $hauteur_new );
}
Exemplo n.º 21
0
 /**
  * Supprimer une structure (mode multi-structures)
  *
  * @param int    $BASE 
  * @return void
  */
 public static function supprimer_multi_structure($BASE)
 {
     // Paramètres de connexion à la base de données
     $BD_name = 'sac_base_' . $BASE;
     $BD_user = '******' . $BASE;
     // Limité à 16 caractères
     // Supprimer la base de données d'une structure, et son utilisateur MySQL une fois défait de ses droits.
     DB_WEBMESTRE_WEBMESTRE::DB_supprimer_base_structure_et_user_mysql($BD_name, $BD_user);
     // Supprimer le fichier de connexion
     FileSystem::supprimer_fichier(CHEMIN_DOSSIER_MYSQL . 'serveur_sacoche_structure_' . $BASE . '.php');
     // Retirer l'enregistrement d'une structure dans la base du webmestre
     DB_WEBMESTRE_WEBMESTRE::DB_supprimer_structure($BASE);
     // Supprimer les dossiers de fichiers temporaires par établissement
     foreach (FileSystem::$tab_dossier_tmp_structure as $dossier) {
         FileSystem::supprimer_dossier($dossier . $BASE);
     }
     // Supprimer les éventuels fichiers de blocage
     LockAcces::supprimer_fichiers_blocage($BASE);
     // Log de l'action
     SACocheLog::ajouter('Suppression de la structure n°' . $BASE . '.');
 }
Exemplo n.º 22
0
 $fichier_upload_nom = 'dump_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.zip';
 $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_upload_nom /*fichier_nom*/ , array('zip') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ );
 if($result!==TRUE)
 {
   exit('<li><label class="alerte">Erreur : '.$result.'</label></li>');
 }
 // Créer ou vider le dossier temporaire
 FileSystem::creer_ou_vider_dossier($dossier_temp);
 // Dezipper dans le dossier temporaire
 $code_erreur = FileSystem::unzip( CHEMIN_DOSSIER_IMPORT.$fichier_upload_nom , $dossier_temp , FALSE /*use_ZipArchive*/ );
 if($code_erreur)
 {
   FileSystem::supprimer_dossier($dossier_temp); // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive.
   exit('<li><label class="alerte">Erreur : votre archive ZIP n\'a pas pu être ouverte ('.FileSystem::$tab_zip_error[$code_erreur].') !</label></li>');
 }
 FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.$fichier_upload_nom);
 // Vérifier le contenu : noms des fichiers
 $fichier_taille_maximale = verifier_dossier_decompression_sauvegarde($dossier_temp);
 if(!$fichier_taille_maximale)
 {
   FileSystem::supprimer_dossier($dossier_temp); // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive.
   exit('<li><label class="alerte">Erreur : votre archive ZIP ne semble pas contenir les fichiers d\'une sauvegarde de la base effectuée par SACoche !</label></li>');
 }
 // Vérifier le contenu : taille des requêtes
 if( !verifier_taille_requetes($fichier_taille_maximale) )
 {
   FileSystem::supprimer_dossier($dossier_temp); // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive.
   exit('<li><label class="alerte">Erreur : votre archive ZIP contient au moins un fichier dont la taille dépasse la limitation <em>max_allowed_packet</em> de MySQL !</label></li>');
 }
 // Vérifier le contenu : version de la base compatible avec la version logicielle
 if( version_base_fichier_svg($dossier_temp) > VERSION_BASE_STRUCTURE )
  {
    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 !');
  }
  list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos;
  $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants
  // vérifier le type 
  if(!isset($tab_extension_types[$image_type]))
  {
    FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name);
    exit('Erreur : le fichier transmis n\'est pas un fichier image (type '.$image_type.') !');
  }
  $image_format = $tab_extension_types[$image_type];
  // stocker l'image dans la base
  DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'signature' , base64_encode(file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name)) , $image_format , $image_largeur , $image_hauteur );
  // Générer la balise html et afficher le retour
  list($width,$height) = dimensions_affichage_image( $image_largeur , $image_hauteur , 200 /*largeur_maxi*/ , 200 /*hauteur_maxi*/ );
  $user_texte = ($user_id) ? 'Signature '.$user_texte : $user_texte ;
  exit('<li id="sgn_'.$user_id.'">'.html($user_texte).' : <img src="'.URL_DIR_IMPORT.FileSystem::$file_saved_name.'" alt="'.html($user_texte).'" width="'.$width.'" height="'.$height.'" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un fichier image (tampon de l'établissement ou signature)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
Exemplo n.º 24
0
  }
  // ok
  FileSystem::fabriquer_fichier_hebergeur_info( array(
    'PHPCAS_LOGS_CHEMIN'        => $chemin_logs,
    'PHPCAS_LOGS_ETABL_LISTING' => $etabl_id_listing,
  ) );
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Effacer un fichier de logs de phpCAS
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='supprimer') && $fichier_logs )
{
  FileSystem::supprimer_fichier( PHPCAS_LOGS_CHEMIN.$fichier_logs.'.txt' , TRUE /*verif_exist*/ );
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer un fichier de logs de phpCAS
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='voir') && $fichier_logs )
{
  FileSystem::zip( CHEMIN_DOSSIER_EXPORT.$fichier_logs.'.zip' , $fichier_logs.'.txt' , file_get_contents(PHPCAS_LOGS_CHEMIN.$fichier_logs.'.txt') );
  exit('<ul class="puce"><li><a target="_blank" href="'.URL_DIR_EXPORT.$fichier_logs.'.zip'.'"><span class="file file_zip">Fichier de logs au format <em>zip</em>.</li></ul>');
}

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