Changeset 67220 in spip-zone


Ignore:
Timestamp:
Oct 28, 2012, 2:26:17 PM (7 years ago)
Author:
eric@…
Message:

Refactoring complet du plugin pour SPIP 3 avec entre autres :

  • Corrections de bugs de code (variable mal libellée, config meta sans valeur par défaut..)
  • Formulaire de configuration avec charte SPIP 3
  • Page de sauvegarde cohérente avec celle de sauvegarde de la base et formulaires SPIP 3
  • Déclaration des pipelines dans le xml (reste post_sauvegarde en attente de réponse)
  • Suppression des autorisations spécifiques par celle de la sauvegarde et du webmestre pour la coniguration
  • regroupement des actions cron d'archivage et de nettoyage
  • création et suppression de chaine de langue (reste encore du nettoyage à faire)

Reste à revisiter l'action voir si possible.

Location:
_plugins_/mes_fichiers/trunk
Files:
4 added
5 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mes_fichiers/trunk/action/mes_fichiers_sauver.php

    r37117 r67220  
    77
    88        // Autorisation
    9         if(!autoriser('sauvegarder','mes_fichiers')) {
     9        if(!autoriser('sauvegarder')) {
    1010                include_spip('inc/minipres');
    1111                echo minipres();
     
    1818
    1919        $sauver = charger_fonction('mes_fichiers_sauver','inc');
    20 
    2120        $erreur = $sauver($liste);
    2221
    2322        if (_request('redirect')) {
     23                // TODO : verifier si ce cas est encore utilise
    2424                if($erreur){
    2525                        $redirect = parametre_url(urldecode(_request('redirect')),
  • _plugins_/mes_fichiers/trunk/action/mes_fichiers_telecharger.php

    r36837 r67220  
    44function action_mes_fichiers_telecharger() {
    55
    6         // Securisation: aucun argument attendu
     6        // Securisation de l'argument nom de l'archive
    77        $securiser_action = charger_fonction('securiser_action', 'inc');
    88        $arg = $securiser_action();
     9
     10        // Si l'archive n'est pas accessible on renvoie une erreur
    911        if (!@is_readable($arg)) {
    10                 spip_log("*** MES_FICHIERS (action_telecharger_mes_fichiers) ERREUR: $arg pas accessible en lecture");
     12                spip_log("L'archive $arg n'est pas accessible pour le téléchargement", 'mes_fichiers' . _LOG_ERREUR);
    1113                redirige_par_entete(generer_url_ecrire('mes_fichiers', 'etat=nok_tele', true));
    1214        }
    1315
    1416        // Autorisation
    15         if(!autoriser('sauvegarder','mes_fichiers')) {
     17        if(!autoriser('sauvegarder')) {
    1618                include_spip('inc/minipres');
    1719                echo minipres();
  • _plugins_/mes_fichiers/trunk/formulaires/configurer_mes_fichiers.html

    r67196 r67220  
    1 <!-- autoriser=webmestre -->
    2 <!-- refus=<:cfg:refus_configuration_webmestre:> -->
    3 <!-- nom=mes_fichiers -->
    4 #CACHE{0}
    5 <div class="formulaire_spip formulaire_config formulaire_config_mes_fichiers">
     1<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
     2        <h3 class='titrem'><img src="#CHEMIN_IMAGE{mes_fichiers-24.png}" class="cadre-icone" /><:mes_fichiers:titre_boite_configurer:></h3>
    63        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
    74        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    85
    9         <form method="post" action="#SELF">
    10                 <div>
    11                         #ACTION_FORMULAIRE{SELF}
     6        <form method='post' action='#ENV{action}'><div>
     7                #ACTION_FORMULAIRE{#ENV{action}}
     8                <ul>
     9                        <li class="editer editer_prefixe">
     10                                <p class="explication"><:mes_fichiers:explication_cfg_prefixe:></p>
     11                                <label for="prefixe"><:mes_fichiers:label_cfg_prefixe:></label>
     12                                <input type="text" name="prefixe" class="text" id="prefixe" value="[(#ENV{prefixe, mf2})]" />
     13                        </li>
     14                        <li class="editer editer_taille_max_rep">
     15                                <p class="explication"><:mes_fichiers:explication_cfg_taille_max_rep:></p>
     16                                <label for="taille_max_rep"><:mes_fichiers:label_cfg_taille_max_rep:></label>
     17                                <input type="text" name="taille_max_rep" class="text" id="taille_max_rep" value="[(#ENV{taille_max_rep, 75})]" />
     18                        </li>
     19                </ul>
     20
     21                <fieldset>
     22                        <legend><:mes_fichiers:legende_cfg_sauvegarde_reguliere:></legend>
    1223                        <ul>
    13                                 <li class="editer_prefixe">
    14                                         <label for="prefixe"><:mes_fichiers:label_cfg_prefixe:></label>
    15                                         <input type="text" name="prefixe" class="text" id="prefixe" value="[(#ENV{prefixe}|sinon{mf2})]" />
    16                                 </li>
    17                                 <li class="editer_taille_max_rep">
    18                                         <label for="taille_max_rep"><:mes_fichiers:label_cfg_taille_max_rep:></label>
    19                                         <input type="text" name="taille_max_rep" class="text" id="taille_max_rep" value="[(#ENV{taille_max_rep}|sinon{500})]" />
    20                                 </li>
    21                                 <li class="fieldset">
    22                                         <fieldset>
    23                                                 <h3 class="legend"><:mes_fichiers:legende_cfg_sauvegarde_reguliere:></h3>
    24                                                 <ul>
    25                                                         <li class="editer_sauvegarde_reguliere">
    26                                                                 <label><:mes_fichiers:label_cfg_sauvegarde_reguliere:></label>
    27                                                                 <div class="choix">
    28                                                                          <input type="radio" name="sauvegarde_reguliere" id="sauvegarde_reguliere_true" value="oui"[(#CONFIG{mes_fichiers/sauvegarde_reguliere}|=={oui}|oui)checked="checked"] />
    29                                                                          <label for="sauvegarde_reguliere_true"><:item_oui:></label>
    30                                                                 </div>
    31                                                                 <div class="choix">
    32                                                                          <input type="radio" name="sauvegarde_reguliere" id="sauvegarde_reguliere_false" value="non"[(#CONFIG{mes_fichiers/sauvegarde_reguliere}|=={oui}|non)checked="checked"] />
    33                                                                          <label for="sauvegarde_reguliere_false"><:item_non:></label>
    34                                                                 </div>
    35                                                         </li>
    36                                                         [(#CONFIG{mes_fichiers/sauvegarde_reguliere}|=={oui}|oui)
    37                                                         <li class="editer_frequence">
    38                                                                 <label for="frequence"><:mes_fichiers:label_cfg_frequence:></label>
    39                                                                 <input type="text" name="frequence" class="text" id="frequence" value="[(#ENV{frequence,1})]" style="width: 30px;" /> <:mes_fichiers:jours:>
    40                                                         </li>
    41                                                         <li class="editer_duree_sauvegarde">
    42                                                                 <label for="duree_sauvegarde"><:mes_fichiers:label_cfg_duree_sauvegarde:></label>
    43                                                                 <input type="text" name="duree_sauvegarde" class="text" id="duree_sauvegarde" value="[(#ENV{duree_sauvegarde,15})]" style="width: 30px;" /> <:mes_fichiers:jours:>
    44                                                         </li>]
    45                                                 </ul>
    46                                         </fieldset>
    47                                 </li>
    48                                 <li class="fieldset">
    49                                         <fieldset>
    50                                                 <h3 class="legend"><:mes_fichiers:legende_cfg_notification:></h3>
    51                                                 <ul>
    52                                                         <li class="editer_notif_active">
    53                                                                 <label><:mes_fichiers:label_cfg_notif_active:></label>
    54                                                                 <div class="choix">
    55                                                                          <input type="radio" name="notif_active" id="notif_active_true" value="oui"[(#CONFIG{mes_fichiers/notif_active}|=={oui}|oui)checked="checked"] />
    56                                                                          <label for="notif_active_true"><:item_oui:></label>
    57                                                                 </div>
    58                                                                 <div class="choix">
    59                                                                          <input type="radio" name="notif_active" id="notif_active_false" value="non"[(#CONFIG{mes_fichiers/notif_active}|=={oui}|non)checked="checked"] />
    60                                                                          <label for="notif_active_false"><:item_non:></label>
    61                                                                 </div>
    62                                                         </li>
    63                                                         [(#CONFIG{mes_fichiers/notif_active}|=={oui}|oui)
    64                                                         <li class="editer_notif_mail">
    65                                                                 <label for="notif_mail"><:mes_fichiers:label_cfg_notif_mail:></label>
    66                                                                 <p class="explication"><:mes_fichiers:explication_cfg_notif_mail:></p>
    67                                                                 <input type="text" name="notif_mail" class="text" id="notif_mail" value="[(#ENV{notif_mail})]" />
    68                                                         </li>]
    69                                                 </ul>
    70                                         </fieldset>
     24                                <li class="editer editer_sauvegarde_reguliere">
     25                                <label><:mes_fichiers:label_cfg_sauvegarde_reguliere:></label>
     26                                        <div class="choix">
     27                                                 <input type="radio" name="sauvegarde_reguliere" id="sauvegarde_reguliere_true" value="oui"[(#ENV{sauvegarde_reguliere, non}|=={oui}|oui)checked="checked"] />
     28                                                 <label for="sauvegarde_reguliere_true"><:item_oui:></label>
     29                                        </div>
     30                                        <div class="choix">
     31                                                 <input type="radio" name="sauvegarde_reguliere" id="sauvegarde_reguliere_false" value="non"[(#ENV{sauvegarde_reguliere, non}|=={oui}|non)checked="checked"] />
     32                                                 <label for="sauvegarde_reguliere_false"><:item_non:></label>
     33                                        </div>
    7134                                </li>
    7235                        </ul>
    73                         <p class='boutons'>
    74                                 <input type='submit' class='submit' value='<:bouton_enregistrer:>' />
    75                         </p>
    76                 </div>
    77         </form>
     36                        <ul id="sauve_plus">
     37                                <li class="editer editer_frequence">
     38                                        <p class="explication"><:mes_fichiers:explication_cfg_frequence:></p>
     39                                        <label for="frequence"><:mes_fichiers:label_cfg_frequence:></label>
     40                                        <input type="text" name="frequence" class="text" id="frequence" value="[(#ENV{frequence, 1})]" />
     41                                </li>
     42                                <li class="editer editer_duree_sauvegarde">
     43                                        <p class="explication"><:mes_fichiers:explication_cfg_duree_sauvegarde:></p>
     44                                        <label for="duree_sauvegarde"><:mes_fichiers:label_cfg_duree_sauvegarde:></label>
     45                                        <input type="text" name="duree_sauvegarde" class="text" id="duree_sauvegarde" value="[(#ENV{duree_sauvegarde, 15})]" />
     46                                </li>
     47                        </ul>
     48                </fieldset>
     49
     50                <fieldset>
     51                        <legend><:mes_fichiers:legende_cfg_notification:></legend>
     52                        <ul>
     53                                <li class="editer editer_notif_active">
     54                                        <label><:mes_fichiers:label_cfg_notif_active:></label>
     55                                        <div class="choix">
     56                                                 <input type="radio" name="notif_active" id="notif_active_true" value="oui"[(#ENV{notif_active, non}|=={oui}|oui)checked="checked"] />
     57                                                 <label for="notif_active_true"><:item_oui:></label>
     58                                        </div>
     59                                        <div class="choix">
     60                                                 <input type="radio" name="notif_active" id="notif_active_false" value="non"[(#ENV{notif_active, non}|=={oui}|non)checked="checked"] />
     61                                                 <label for="notif_active_false"><:item_non:></label>
     62                                        </div>
     63                                </li>
     64                        </ul>
     65                        <ul id="notif_plus">
     66                                <li class="editer editer_notif_mail">
     67                                        <p class="explication"><:mes_fichiers:explication_cfg_notif_mail:></p>
     68                                        <label for="notif_mail"><:mes_fichiers:label_cfg_notif_mail:></label>
     69                                        <input type="text" name="notif_mail" class="text" id="notif_mail" value="[(#ENV{notif_mail})]" />
     70                                </li>
     71                        </ul>
     72                </fieldset>
     73
     74                <p class='boutons'>
     75                        <input type='submit' class='submit' value='<:bouton_enregistrer:>' />
     76                </p>
     77        </div></form>
    7878</div>
    79 <div class="cfg_debug">
    80         <h3>Debug</h3>
    81         #CFG_ARBO{mes_fichiers}
    82 </div>
     79
     80<script type="text/javascript">
     81//<![CDATA[
     82        jQuery(document).ready(function() {
     83                [(#ENV{notif_active, non}|!={oui}|oui) jQuery("#notif_plus").hide();]
     84                [(#ENV{sauvegarde_reguliere, non}|!={oui}|oui) jQuery("#sauve_plus").hide();]
     85
     86                jQuery("input[name='notif_active']").change(function() {
     87                        if (jQuery("input[name='notif_active']:checked").val() == 'oui') {
     88                                jQuery("#notif_plus").show();
     89                        }
     90                        else {
     91                                jQuery("#notif_plus").hide();
     92                        }
     93                        jQuery(this).blur();
     94                });
     95                jQuery("input[name='sauvegarde_reguliere']").change(function() {
     96                        if (jQuery("input[name='sauvegarde_reguliere']:checked").val() == 'oui') {
     97                                jQuery("#sauve_plus").show();
     98                        }
     99                        else {
     100                                jQuery("#sauve_plus").hide();
     101                        }
     102                        jQuery(this).blur();
     103                });
     104        });
     105//]]>
     106</script>
  • _plugins_/mes_fichiers/trunk/formulaires/mes_fichiers_sauver.html

    r37140 r67220  
    1 <div class="formulaire_spip">
     1<div class="formulaire_spip formulaire_#FORM">
     2        <h3 class="titrem"><img src="#CHEMIN_IMAGE{mes_fichiers_sauver-24.png}" class="cadre-icone" /><:mes_fichiers:titre_boite_sauver:></h3>
     3
    24        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    35        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    4         <BOUCLE_editable(CONDITION){si #ENV*{editable}|oui}>
    5         <form method="post" action="#ENV{action}">
    6                 <div>
    7                         #ACTION_FORMULAIRE{#ENV{action}}
    8                         <B_sauver>
    9                         <ul>
    10                         <li id="liste_a_sauver" class="fieldset" style="padding:5px;">
    11                                 <BOUCLE_sauver(POUR){tableau #ENV**{_fichiers}}>
     6
     7        <form method="post" action="#ENV{action}"><div>
     8                #ACTION_FORMULAIRE{#ENV{action}}
     9                <p><:mes_fichiers:info_liste_a_sauver:></p>
     10        <B_sauver>
     11                <ul>
     12                        <li id="liste_a_sauver">
     13        <BOUCLE_sauver(DATA){source table, #ENV**{_fichiers}}>
    1214                                [(#SET{taille_config,[(#CONFIG{mes_fichiers/taille_max_rep,500})]})]
    1315                                [(#SET{taille_max,[(#GET{taille_config}|mult{1000}|mult{1000})]})]
     
    3335                                        ]
    3436                                </div>
    35                                 </BOUCLE_sauver>
    36                                         <p>
    37                                                 <small><a id="cocher_tout" href="#liste_a_sauver"><:mes_fichiers:bouton_tout_cocher:></a>
    38                                                 &nbsp;|&nbsp;
    39                                                 <a id="decocher_tout" href="#liste_a_sauver"><:mes_fichiers:bouton_tout_decocher:></a>
    40                                                 </small>
    41                                         </p>
    42                                 </li>
    43                         </ul>
     37        </BOUCLE_sauver>
     38                                <p>
     39                                        <small><a id="cocher_tout" href="#liste_a_sauver"><:mes_fichiers:bouton_tout_cocher:></a>
     40                                        &nbsp;|&nbsp;
     41                                        <a id="decocher_tout" href="#liste_a_sauver"><:mes_fichiers:bouton_tout_decocher:></a>
     42                                        </small>
     43                                </p>
     44                        </li>
     45                </ul>
     46
    4447                <p class="boutons">
    4548                        <input type="submit" class="submit" value="<:mes_fichiers:bouton_sauver:>" />
    4649                </p>
    47                 </B_sauver>
    48                 <div class="cadre cadre-e" style="margin: 10px 0;">
    49                         <div class="cadre_padding">
    50                                 <:mes_fichiers:message_rien_a_sauver:>
    51                         </div>
    52                 </div>
    53                 <//B_sauver>
    54         </div>
    55         </form>
    56         </BOUCLE_editable>
    57         <p class="reponse_formulaire reponse_formulaire_erreur"><:mes_fichiers:erreur_droits_insuffisants:></p>
    58         <//B_editable>
     50        </B_sauver>
     51                #BOITE_OUVRIR{'', notice}
     52                        <:mes_fichiers:message_rien_a_sauver:>
     53                #BOITE_FERMER
     54        <//B_sauver>
     55        </div></form>
    5956</div>
    6057
  • _plugins_/mes_fichiers/trunk/formulaires/mes_fichiers_sauver.php

    r37117 r67220  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
    5 include_spip('inc/actions');
    6 include_spip('inc/autoriser');
    7 
    85function formulaires_mes_fichiers_sauver_charger_dist(){
    96        include_spip('inc/mes_fichiers_utils');
     7
    108        $valeurs = array();
    119        $valeurs['_fichiers'] = mes_fichiers_a_sauver();
    12         if(!autoriser('sauvegarder','mes_fichiers')) {
    13                 $valeurs['editable'] = false;
    14         }
     10
    1511        return $valeurs;
    1612}
    1713
    1814function formulaires_mes_fichiers_sauver_verifier_dist(){
    19 
     15        $erreurs = array();
    2016        return $erreurs;
    2117}
     
    2420        $sauver = charger_fonction('mes_fichiers_sauver','action');
    2521        $erreur = $sauver();
    26         if($erreur){
    27                 $res['message_erreur'] = _T('mes_fichiers:message_sauvegarde_nok');
    28         }else{
    29                 $res['message_ok'] = _T('mes_fichiers:message_sauvegarde_ok');
     22
     23        if ($erreur) {
     24                $retour['message_erreur'] =
     25                        _T('mes_fichiers:message_sauvegarde_nok') .
     26                        " $erreur";
    3027        }
    31         return $res;
     28        else {
     29                $retour['message_ok'] = _T('mes_fichiers:message_sauvegarde_ok');
     30        }
     31
     32        return $retour;
    3233}
    3334
  • _plugins_/mes_fichiers/trunk/genie/mes_fichiers.php

    r67196 r67220  
    44
    55/**
    6  * Génération d'une sauvegarde par le cron
     6 * Génération d'une sauvegarde par le cron et nettoyage des fichiers obsoletes dans la foulee
    77 *
    88 * @param timestamp $last
    99 */
    1010function genie_mes_fichiers_dist($last) {
    11         $sauver = charger_fonction('mes_fichiers_sauver','inc');
    12         $erreur = $sauver(null,array('auteur' => 'cron'));
     11        // On lance la sauvegarde reguliere avec comme auteur le CRON
     12        $sauver = charger_fonction('mes_fichiers_sauver', 'inc');
     13        $sauver(null, array('auteur' => 'cron'));
     14
     15        // On supprime les fichiers obsoletes en fonction de la duree de conservation
     16        $supprimer_obsoletes = charger_fonction('mes_fichiers_cleaner','inc');
     17        $supprimer_obsoletes(array('auteur' => 'cron'));
    1318
    1419        return 1;
    1520}
    1621
    17 /**
    18  * On s'insère dans le cron de SPIP
    19  * Par défaut une fois par jour (peut être modifié dans la conf)
    20  *
    21  * @param array $taches_generales
    22  */
    23 function mes_fichiers_taches_generales_cron($taches_generales){
    24         $jour = lire_config('mes_fichiers/frequence') ? lire_config('mes_fichiers/frequence') : 1;
    25         $taches_generales['mes_fichiers'] = $jour*24*3600;
    26        
    27         return $taches_generales;
    28 }
    29 
    3022?>
  • _plugins_/mes_fichiers/trunk/inc/mes_fichiers_cleaner.php

    r52847 r67220  
    1313        $temps = time();
    1414
    15         $jours_obso = intval(lire_config('mes_fichiers/duree_sauvegarde',0));
     15        include_spip('inc/config');
     16        $jours_obso = intval(lire_config('mes_fichiers/duree_sauvegarde', 15));
     17
    1618        if($jours_obso > 0){
    1719                $prefixe = lire_config('mes_fichiers/prefixe','mf2').'_';
  • _plugins_/mes_fichiers/trunk/inc/mes_fichiers_sauver.php

    r52847 r67220  
    88 * @param array/null $liste
    99 */
    10 function inc_mes_fichiers_sauver_dist($liste=null,$options=array()){
     10function inc_mes_fichiers_sauver_dist($liste=null, $options=array()) {
    1111
    1212        include_spip('inc/mes_fichiers_utils');
     13        include_spip('inc/config');
     14        $erreur_texte = '';
    1315
    1416        /**
     
    1618         * il peut être un array vide dans le cas d'un problème de config
    1719         */
    18         if(is_null($liste)){
     20        if (is_null($liste)) {
    1921                $liste = mes_fichiers_a_sauver();
    2022        }
    2123
    22         if(count($liste)>0){
     24        if (count($liste)>0) {
    2325                include_spip('inc/pclzip');
    2426
    25                 if(defined('_DIR_SITE')){
     27                if (defined('_DIR_SITE')) {
    2628                        $remove_path = _DIR_SITE;
    27                 }else{
     29                }
     30                else {
    2831                        $remove_path = _DIR_RACINE;
    2932                }
     
    3437                 * _DIR_RACINE ni _DIR_MUTU
    3538                 */
    36                 $taille_max = intval(lire_config('mes_fichiers/taille_max_rep','500'))*1000*1000;
    37                 foreach($liste as $key => $item){
    38                         if(is_dir($item) && (mes_fichiers_dirsize($item) > $taille_max)){
     39                $taille_max = intval(lire_config('mes_fichiers/taille_max_rep', '75'))*1000*1000;
     40                foreach ($liste as $key => $item) {
     41                        if(is_dir($item) AND (mes_fichiers_dirsize($item) > $taille_max)) {
    3942                                unset($liste[$key]);
    40                         }else{
     43                        }
     44                        else {
    4145                                $liste_finale[] = mes_fichiers_joli_repertoire($item);
    4246                        }
     
    6367                if($erreur == 0){
    6468                        $erreur_texte = $mes_fichiers->errorInfo(true);
    65                         echo $erreur_texte;
    6669                }
    67         }else{
     70        }
     71        else {
    6872                $erreur_texte = _T('mes_fichiers:erreur_aucun_fichier_sauver');
    6973        }
  • _plugins_/mes_fichiers/trunk/inc/mes_fichiers_utils.php

    r67196 r67220  
    1111
    1212        $htaccess = defined('_ACCESS_FILE_NAME') ? $dir_racine._ACCESS_FILE_NAME : $dir_racine.'.htaccess';
    13         $IMG = defined('_DIR_IMG') ? _DIR_IMG: $dir_racine.'IMG/';
    14         $tmp_dump = defined('_DIR_DUMP') ? _DIR_DUMP: $dir_racine.'tmp/dump/';
     13        $IMG = defined('_DIR_IMG') ? _DIR_IMG : $dir_racine.'IMG/';
     14        $tmp_dump = defined('_DIR_DUMP') ? _DIR_DUMP : $dir_racine.'tmp/dump/';
     15        $tmp_db = defined('_DIR_DB') ? _DIR_DB : $dir_racine.'config/bases/';
    1516
    1617        $liste = array();
     18
     19
     20        //le fichier sqlite depuis config/bases si le site utilise sqlite
     21        $db = preg_files($tmp_db);
     22        $fichier_db = '';
     23        $mtime = 0;
     24        foreach ($db as $_fichier_db) {
     25                if (($_mtime = filemtime($_fichier_db)) > $mtime) {
     26                        $fichier_db = $_fichier_db;
     27                        $mtime = $_mtime;
     28                }
     29        }
     30        if ($fichier_db)
     31                $liste[] = $fichier_db;
    1732
    1833        // le fichier d'options si il existe
     
    2136                $liste[] = $f;
    2237        }
    23         //le fichier sqlite depuis config/bases
    24        
     38
    2539        // le fichier .htaccess a la racine qui peut contenir des persos
    2640        if (@is_readable($htaccess))
    2741                $liste[] = $htaccess;
     42
    2843        // le fameux repertoire des documents et images
    2944        if (@is_dir($IMG))
    3045                $liste[] = $IMG;
     46
    3147        // le(s) dossier(s) des squelettes nommes
    3248        if (strlen($GLOBALS['dossier_squelettes']))
     
    3955                if (@is_dir($dir_racine.'squelettes/'))
    4056                        $liste[] = $dir_racine.'squelettes/';
     57
    4158        // le dernier fichier de dump de la base
    4259        $dump = preg_files($tmp_dump);
     
    5168        if ($fichier_dump)
    5269                $liste[] = $fichier_dump;
     70
    5371        // On ajoute via un pipeline des fichiers specifiques a d'autres plugins
    5472        $liste_en_plus = array();
     
    7997        if ($proprietes == 0) {
    8098                $resume .= _T('mes_fichiers:message_zip_propriete_nok');
    81                 spip_log('*** MES_FICHIERS (mes_fichiers_resumer_zip) ERREUR '.$fichier_zip->errorInfo(true));
     99                spip_log("Impossible d'ouvrir les propriétés de l'archive (" . $fichier_zip->errorInfo(true) . ")", 'mes_fichiers' . _LOG_ERREUR);
    82100        }
    83101        else {
     
    88106                // On gere la compatibilite avec la structure des commentaires des versions < 0.2
    89107                $auteur = _T('mes_fichiers:message_zip_auteur_indetermine');
    90                 if ((!id_auteur) && (!$liste))
     108                if ((!$id_auteur) AND (!$liste))
    91109                        $liste = $comment;
    92110                else
     
    100118                $resume .= _T('mes_fichiers:resume_zip_compteur').' : '.$proprietes['nb'].'<br />';
    101119                $resume .= _T('mes_fichiers:resume_zip_contenu').' : '.'<br />';
    102                 $resume .= '<ul>';
     120                $resume .= '<ul class="spip">';
    103121                if ($liste)
    104122                        foreach ($liste as $_fichier) {
     
    118136
    119137        if (($list = $fichier_zip->listContent()) == 0) {
    120                 spip_log('*** MES_FICHIERS (mes_fichiers_voir_zip) ERREUR '.$fichier_zip->errorInfo(true));
     138                spip_log("Lecture de l'archive $zip impossible (" . $fichier_zip->errorInfo(true) . ")", 'mes_fichiers' . _LOG_ERREUR);
    121139        }
    122140
  • _plugins_/mes_fichiers/trunk/lang/mes_fichiers_fr.php

    r67196 r67220  
    77
    88// B
    9 'bouton_mes_fichiers' => 'Sauvegarder mes fichiers',
    10 'bouton_effacer' => 'Effacer',
    11 'bouton_sauver' => 'Sauvegarder',
    12 'bouton_telecharger' => 'Télécharger',
    13 'bouton_tout_cocher' => 'Tout cocher',
    14 'bouton_tout_decocher' => 'Tout décocher',
    15 'bouton_voir' => 'Voir',
    16 'bulle_bouton_voir' => 'Voir le contenu de l\'archive',
     9        'bouton_configurer' => 'Mes fichiers',
     10        'bouton_mes_fichiers' => 'Sauvegarder mes fichiers',
     11        'bouton_effacer' => 'Effacer',
     12        'bouton_sauver' => 'Sauvegarder',
     13        'bouton_telecharger' => 'Télécharger',
     14        'bouton_tout_cocher' => 'Tout cocher',
     15        'bouton_tout_decocher' => 'Tout décocher',
     16        'bouton_voir' => 'Voir',
     17        'bulle_bouton_voir' => 'Voir le contenu de l\'archive',
    1718
    1819// C
    19 'colonne_date' => 'Date',
    20 'colonne_nom' => 'Nom',
    21 'colonne_taille_octets' => 'Taille',
    22 'colonne_actions' => '&nbsp;',
     20        'colonne_date' => 'Date',
     21        'colonne_nom' => 'Nom',
     22        'colonne_taille_octets' => 'Taille',
    2323
    2424// E
    25 'erreur_aucun_fichier_sauver' => 'Il n\'y a aucun fichier à sauvegarder',
    26 'erreur_droits_insuffisants' => 'Vous ne disposez pas de droits suffisants pour réaliser une sauvegarde.',
    27 'erreur_repertoire_trop_grand' => 'Ce répertoire dépasse la limite de @taille_max@ MB et ne peut &ecirc;tre sauvegardé.',
    28 'explication_cfg_notif_mail' => 'Ces emails s\'ajoutent à celui du webmestre du site. Ils doivent &ecirc;tre séparés par des virgules ",".',
     25        'erreur_aucun_fichier_sauver' => 'Il n\'y a aucun fichier à sauvegarder',
     26        'erreur_droits_insuffisants' => 'Vous ne disposez pas de droits suffisants pour réaliser une sauvegarde.',
     27        'erreur_repertoire_trop_grand' => 'Ce répertoire dépasse la limite de @taille_max@ MB et ne peut &ecirc;tre sauvegardé.',
     28        'explication_cfg_notif_mail' => 'Saisir les adresses en les séparant par des virgules ",". Ces adresses s\'ajoutent à celle du webmestre du site.',
     29        'explication_cfg_prefixe' => 'Saisir le préfixe accolé à chaque archive',
     30        'explication_cfg_taille_max_rep' => 'Saisir la taille maximale en MB des répertoires à sauvegarder',
     31        'explication_cfg_duree_sauvegarde' => 'Saisir la durée de conservation des sauvegardes en jours',
     32        'explication_cfg_frequence' => 'Saisir la fréquence des sauvegardes en jours',
    2933
    3034// I
    31 'info_sauver' => 'Cette option fabrique un fichier d\'archives contenant les données de personnalisation du site comme le dernier dump de sauvegarde de la base, le(s) dossier(s) des squelettes nommés, le dossier images...
    32         Le fichier d\'archives est créé dans <i>tmp/mes_fichiers/</i> et se nomme <i>@prefixe@_aaaammjj_hhmmss.zip</i>.
    33         La liste exhaustive des fichiers et dossiers pouvant &ecirc;tre sauvegardés est affichée ci-dessous :',
    34 'info_telecharger' => 'Cette option permet de télécharger un des fichiers d\'archives disponibles parmi la liste affichée ci-dessous :',
    35 
    36 // J
    37 'jours' => 'jours',
     35        'info_sauver_1' => 'Cette option fabrique un fichier d\'archives contenant les données de personnalisation du site comme le dernier dump de sauvegarde de la base, les dossiers des squelettes nommés, le dossier images...',
     36        'info_sauver_2' => 'Le fichier d\'archive est créé dans <em>tmp/mes_fichiers/</em> et se nomme <em>@prefixe@_aaaammjj_hhmmss.zip</em>.',
     37        'info_sauver_3' => 'La sauvegarde automatique est activée (fréquence en jours : @frequence@).',
     38        'info_liste_a_sauver' => 'Liste des fichiers et dossiers pouvant &ecirc;tre sauvegardés :',
     39        'info_telecharger' => 'Cette option permet de télécharger un des fichiers d\'archives disponibles parmi la liste affichée ci-dessous :',
    3840
    3941// L
    40 'label_cfg_duree_sauvegarde' => 'Durée de conservation des sauvegardes',
    41 'label_cfg_frequence' => 'Fréquence de sauvegarde',
    42 'label_cfg_taille_max_rep' => 'Taille maximale des répertoires que l\'on peut sauvegarder (en MB)',
    43 'label_cfg_notif_active' => 'Activer les notifications',
    44 'label_cfg_notif_mail' => 'Adresses email à notifier',
    45 'label_cfg_prefixe' => 'Préfixe utilisé pour le nom de fichier',
    46 'label_cfg_sauvegarde_reguliere' => 'Faire une sauvegarde régulière',
    47 'legende_cfg_notification' => 'Notifications',
    48 'legende_cfg_sauvegarde_reguliere' => 'Sauvegarder régulièrement',
     42        'label_cfg_duree_sauvegarde' => 'Conservation des archives',
     43        'label_cfg_frequence' => 'Fréquence d\'archivage',
     44        'label_cfg_taille_max_rep' => 'Taille maximale des dossiers',
     45        'label_cfg_notif_active' => 'Activer les notifications',
     46        'label_cfg_notif_mail' => 'Adresses email à notifier',
     47        'label_cfg_prefixe' => 'Préfixe',
     48        'label_cfg_sauvegarde_reguliere' => 'Activer la sauvegarde régulière',
     49        'legende_cfg_notification' => 'Notifications',
     50        'legende_cfg_sauvegarde_reguliere' => 'Sauvegarde automatique',
    4951
    5052
    5153// M
    52 'message_cleaner_sujet' => 'Suppression des sauvegardes de fichiers',
    53 'message_notif_cleaner_intro' => 'L\'action de suppression automatique des sauvegardes de fichiers obsolètes (dont la date est postérieure à @frequence@ jours) a été effectuée avec succès. Les fichiers suivants ont été supprimés : ',
    54 'message_rien_a_sauver' => 'Aucun fichier ni dossier à sauvegarder.',
    55 'message_rien_a_telecharger' => 'Aucune sauvegarde disponible au téléchargement.',
    56 'message_rien_a_restaurer' => 'Aucune sauvegarde disponible à la restauration.',
    57 'message_sauvegarde_ok' => 'Le fichier d\'archives a bien été créé.',
    58 'message_sauvegarde_nok' => 'Erreur lors de la sauvegarde. Le fichier d\'archives n\'a pas été créé.',
    59 'message_notif_sauver_intro' => 'Une nouvelle sauvegarde de vos fichiers est disponible pour votre site. Elle a été réalisée par @auteur@.',
    60 'message_sauver_sujet' => 'Sauvegarde des fichiers',
    61 'message_telechargement_ok' => 'Le fichier d\'archives a bien été téléchargé.',
    62 'message_telechargement_nok' => 'Erreur lors du téléchargement.',
    63 'message_zip_propriete_nok' => 'Aucune propriété n\'est disponible sur cette archive.',
    64 'message_zip_sans_contenu' => 'Aucune information n\'est disponible sur le contenu de cette archive.',
    65 'message_zip_auteur_indetermine' => 'Non déterminé',
    66 'message_zip_auteur_cron' => 'Tache automatique',
     54        'message_cleaner_sujet' => 'Suppression des sauvegardes de fichiers',
     55        'message_notif_cleaner_intro' => 'L\'action de suppression automatique des sauvegardes de fichiers obsolètes (dont la date est postérieure à @duree@ jours) a été effectuée avec succès. Les fichiers suivants ont été supprimés : ',
     56        'message_rien_a_sauver' => 'Aucun fichier ni dossier à sauvegarder.',
     57        'message_rien_a_telecharger' => 'Aucune sauvegarde disponible au téléchargement.',
     58        'message_rien_a_restaurer' => 'Aucune sauvegarde disponible à la restauration.',
     59        'message_sauvegarde_ok' => 'Le fichier d\'archives a bien été créé.',
     60        'message_sauvegarde_nok' => 'Erreur lors de la sauvegarde. Le fichier d\'archives n\'a pas été créé.',
     61        'message_notif_sauver_intro' => 'Une nouvelle sauvegarde de vos fichiers est disponible pour votre site. Elle a été réalisée par @auteur@.',
     62        'message_sauver_sujet' => 'Sauvegarde des fichiers',
     63        'message_telechargement_ok' => 'Le fichier d\'archives a bien été téléchargé.',
     64        'message_telechargement_nok' => 'Erreur lors du téléchargement.',
     65        'message_zip_propriete_nok' => 'Aucune propriété n\'est disponible sur cette archive.',
     66        'message_zip_sans_contenu' => 'Aucune information n\'est disponible sur le contenu de cette archive.',
     67        'message_zip_auteur_indetermine' => 'Non déterminé',
     68        'message_zip_auteur_cron' => 'Tache automatique',
    6769
    6870// R
    69 'resume_table_telecharger' => 'Liste des archives disponibles au téléchargement',
    70 'resume_zip_auteur' => 'Créé par',
    71 'resume_zip_statut' => 'Statut',
    72 'resume_zip_compteur' => 'Fichiers / dossiers archivés',
    73 'resume_zip_contenu' => 'Contenu résumé',
     71        'resume_table_telecharger' => 'Liste des archives disponibles au téléchargement',
     72        'resume_zip_auteur' => 'Créé par',
     73        'resume_zip_statut' => 'Statut',
     74        'resume_zip_compteur' => 'Fichiers / dossiers archivés',
     75        'resume_zip_contenu' => 'Contenu résumé',
    7476
    7577
    7678// T
    77 'titre_page_navigateur' => 'Mes fichiers',
    78 'titre_page' => 'Sauvegarder mes fichiers de personnalisation',
    79 'titre_boite_sauver' => 'Sauvegarder mes fichiers',
    80 'titre_boite_telecharger' => 'Télécharger une sauvegarde',
     79        'titre_page_configurer' => 'Configuration du plugin Mes fichiers',
     80        'titre_page_mes_fichiers' => 'Sauvegarder mes fichiers de personnalisation',
     81        'titre_boite_configurer' => 'Archivage des fichiers',
     82        'titre_boite_sauver' => 'Créer une archive',
     83        'titre_boite_telecharger' => 'Liste des archives disponibles au téléchargement',
    8184
    8285);
  • _plugins_/mes_fichiers/trunk/lang/paquet-mes_fichiers_en.php

    r67196 r67220  
    33// Ceci est un fichier langue de SPIP -- This is a SPIP language file
    44
    5 /// Fichier produit par PlugOnet
     5// Fichier produit par PlugOnet
    66// Module: paquet-mes_fichiers
    77// Langue: en
    8 // Date: 27-10-2012 00:08:18
    9 // Items: 3
    108
    119if (!defined('_ECRIRE_INC_VERSION')) return;
     
    1412
    1513// M
    16         'mes_fichiers_description' => 'This plugin makes an archive file containing the customization datas of the site as the last database dump, the skeleton(s) file(s), the images folder...
     14        'mes_fichiers_description' => 'This plugin makes an archive file containing the customization datas of the site as the last database dump, the templates, the images folder...
    1715The archive file is created in <code>tmp/mes_fichiers/</code> and is called <code>mf2_aaaammjj_hhmmss.zip</code>.
    1816
    1917It is also possible to initiate an automatic daily backup of all customization files.',
    2018        'mes_fichiers_nom' => 'My files',
    21         'mes_fichiers_slogan' => 'Archive files dump, IMG, squelettes...',
     19        'mes_fichiers_slogan' => 'Archive customisation files and folders',
    2220);
    2321?>
  • _plugins_/mes_fichiers/trunk/lang/paquet-mes_fichiers_fr.php

    r67196 r67220  
    33// Ceci est un fichier langue de SPIP -- This is a SPIP language file
    44
    5 /// Fichier produit par PlugOnet
     5// Fichier produit par PlugOnet
    66// Module: paquet-mes_fichiers
    77// Langue: fr
    8 // Date: 27-10-2012 00:08:18
    9 // Items: 3
    108
    119if (!defined('_ECRIRE_INC_VERSION')) return;
     
    1917Il est aussi possible de lancer une sauvegarde journalière automatique de tous les fichiers de personnalisation.',
    2018        'mes_fichiers_nom' => 'Mes fichiers',
    21         'mes_fichiers_slogan' => 'Archiver ses fichiers dump, IMG, squelettes...',
     19        'mes_fichiers_slogan' => 'Archiver ses fichiers et dossiers de personnalisation',
    2220);
    2321?>
  • _plugins_/mes_fichiers/trunk/mes_fichiers_options.php

    r52847 r67220  
    11<?php
    22if (!defined("_ECRIRE_INC_VERSION")) return;
    3 
    4 // Declaration du pipeline permettant d'ajouter des fichiers a la sauvegarde mes_fichiers
    5 $GLOBALS['spip_pipeline']['mes_fichiers_a_sauver'] = '';
    63
    74if(!isset($GLOBALS['spip_pipeline']['post_sauvegarde'])){
     
    107
    118// Repertoire de stockage des archives creees
    12 define('_DIR_MES_FICHIERS', _DIR_TMP . 'mes_fichiers/');
     9if (!defined('_DIR_MES_FICHIERS')) define('_DIR_MES_FICHIERS', _DIR_TMP . 'mes_fichiers/');
    1310
    1411?>
  • _plugins_/mes_fichiers/trunk/notifications/mes_fichiers_cleaner.php

    r54568 r67220  
    22if (!defined("_ECRIRE_INC_VERSION")) return;
    33
    4 function notifications_mes_fichiers_cleaner_dist($quoi, $id, $options){
    5         $cfg = lire_config('mes_fichiers');
    6         if ($cfg['notif_active'] == 'oui') {
     4function notifications_mes_fichiers_cleaner_dist($quoi, $id, $options) {
     5        include_spip('inc/config');
     6        $notif_active = (lire_config('mes_fichiers/notif_active', 'non') == 'oui');
     7
     8        if ($notif_active) {
    79                /**
    810                 * On vérifie que l'on a bien supprimé au moins un fichier
    911                 */
    10                 if(is_array($options['liste'] && !empty($options['liste']))){
     12                if(is_array($options['liste'] && !empty($options['liste']))) {
    1113
    1214                        // pour typo()
    1315                        include_spip('inc/texte');
    14                
    15                         $tous = explode(',',$cfg['notif_mail']);
     16
     17                        $mails = lire_config('mes_fichiers/notif_mail');
     18                        $tous = explode(',', $mails);
    1619                        $tous[] = $GLOBALS['meta']['email_webmaster'];
    1720                        $destinataires = pipeline('notifications_destinataires',
    1821                                array(
    19                                         'args'=>array('quoi'=>$quoi,'id'=>$id,'options'=>$options)
    20                                 ,
     22                                        'args'=>array('quoi'=>$quoi,'id'=>$id,'options'=>$options),
    2123                                        'data'=>$tous)
    2224                        );
     
    3234                        }
    3335                        $sujet_mail = "[".typo($GLOBALS['meta']['nom_site'])."] "._T('mes_fichiers:message_cleaner_sujet');
    34                         $msg_mail = _T('mes_fichiers:message_notif_cleaner_intro',array('frequence' => $cfg['duree_sauvegarde']))
    35                                         .$liste_fichiers;
    36                         notifications_envoyer_mails($destinataires, $msg_mail,$sujet_mail);
     36                        $duree = lire_config('mes_fichiers/duree_sauvegarde', 15);
     37                        $msg_mail = _T('mes_fichiers:message_notif_cleaner_intro', array('duree' => $duree)) . $liste_fichiers;
     38                        notifications_envoyer_mails($destinataires, $msg_mail, $sujet_mail);
    3739                }
    3840    }
  • _plugins_/mes_fichiers/trunk/notifications/mes_fichiers_sauver.php

    r54568 r67220  
    33
    44function notifications_mes_fichiers_sauver_dist($quoi, $id, $options){
    5         $cfg = lire_config('mes_fichiers');
    6         if (($cfg['notif_active'] == 'oui') && !$options['err']) {
     5        include_spip('inc/config');
     6        $notif_active = (lire_config('mes_fichiers/notif_active', 'non') == 'oui');
     7
     8        if ($notif_active AND !$options['err']) {
    79
    810                // pour typo()
    911                include_spip('inc/texte');
    1012               
    11                 $tous = explode(',',$cfg['notif_mail']);
     13                $mails = lire_config('mes_fichiers/notif_mail');
     14                $tous = explode(',', $mails);
    1215                $tous[] = $GLOBALS['meta']['email_webmaster'];
    1316                $destinataires = pipeline('notifications_destinataires',
    1417                        array(
    15                                 'args'=>array('quoi'=>$quoi,'id'=>$id,'options'=>$options)
    16                         ,
     18                                'args'=>array('quoi'=>$quoi,'id'=>$id,'options'=>$options),
    1719                                'data'=>$tous)
    1820                );
     
    2931                }
    3032                $sujet_mail = "[".typo($GLOBALS['meta']['nom_site'])."] "._T('mes_fichiers:message_sauver_sujet');
    31                 $msg_mail = _T('mes_fichiers:message_notif_sauver_intro',array('auteur' => $auteur));
     33                $msg_mail = _T('mes_fichiers:message_notif_sauver_intro', array('auteur' => $auteur));
    3234                notifications_envoyer_mails($destinataires, $msg_mail,$sujet_mail);
    3335    }
  • _plugins_/mes_fichiers/trunk/paquet.xml

    r67196 r67220  
    22        prefix="mes_fichiers"
    33        categorie="maintenance"
    4         version="1.0.2"
    5         etat="dev"
     4        version="2.0.0"
     5        etat="test"
    66        compatibilite="[3.0.0;3.0.*]"
    77        logo="prive/themes/spip/images/mes_fichiers-64.png"
     
    1010
    1111        <nom>Mes fichiers</nom>
    12         <!-- Archiver ses fichiers dump, IMG, squelettes... -->
     12        <!-- Archiver ses fichiers et dossiers de personnalisation -->
    1313
    14         <auteur>Eric Lupinacci</auteur>
     14        <auteur lien="http://blog.smellup.net">Eric Lupinacci</auteur>
    1515        <auteur>kent1</auteur>
    16         <auteur>d'après la version initiale de James</auteur>
     16        <credit>James (version initiale pour SPIP 1.9)</credit>
    1717
    1818        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
    1919
    20         <pipeline nom="taches_generales_cron" inclure="genie/mes_fichiers.php" />
     20        <pipeline nom="taches_generales_cron" inclure="genie/mes_fichiers_cron.php" />
     21        <pipeline nom="mes_fichiers_a_sauver" />
    2122
    22         <menu nom="configurer_mes_fichiers" titre="mes_fichiers:bouton_mes_fichiers" parent="menu_configuration" icone="images/mes_fichiers-16.png" />
     23        <menu nom="configurer_mes_fichiers" titre="mes_fichiers:bouton_configurer" parent="menu_configuration" icone="images/mes_fichiers-24.png" />
    2324        <menu nom="mes_fichiers" titre="mes_fichiers:bouton_mes_fichiers" parent="menu_administration" icone="images/mes_fichiers-24.png" />
    2425</paquet>
  • _plugins_/mes_fichiers/trunk/prive/squelettes/contenu/configurer_mes_fichiers.html

    r67196 r67220  
    1 [(#AUTORISER{configurer,mes_fichiers}|sinon_interdire_acces)]
    2 <h1 class="grostitre"><:mes_fichiers:bouton_mes_fichiers:></h1>
     1[(#AUTORISER{configurer}|sinon_interdire_acces)]
     2<h1 class="grostitre"><:mes_fichiers:titre_page_configurer:></h1>
    33<div class="ajax">
    44        #FORMULAIRE_CONFIGURER_MES_FICHIERS
Note: See TracChangeset for help on using the changeset viewer.