Plugin Directory

Changeset 2904651


Ignore:
Timestamp:
04/26/2023 03:22:05 PM (3 years ago)
Author:
davelopweb
Message:

correctifs

Location:
stn-save-to-nextcloud/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • stn-save-to-nextcloud/trunk/Controleurs/CreateBdd.php

    r2875765 r2904651  
    4747    dbDelta($sql); 
    4848    dbDelta($sql2);                 
    49                
    50 
    51 
    5249   
    5350?>
  • stn-save-to-nextcloud/trunk/Controleurs/CreateZip.php

    r2875765 r2904651  
    133133    $zip->close();
    134134
    135     // Si le gandarme est programmer
     135    // Si le gandarme est programmé
    136136    if (wp_next_scheduled ( 'gendarmeZip', array($date, $time))) {
    137137        // On le stop
  • stn-save-to-nextcloud/trunk/Controleurs/DeleteSingleSave.php

    r2875765 r2904651  
    3636       
    3737        // Envoi la requête (créer le morceau chunk dans le dossier uuid)
    38         $resSendChunk = wp_remote_request(get_option('url_dlwcloud').'/remote.php/dav/'.
    39             'files/'.get_option('login_dlwcloud').get_option('folder_dlwcloud') .             
    40             $date."_".$time."_wp_save_".stn_save_to_nextcloud::getDomain().".zip", $args);
     38        $resSendChunk = wp_remote_request(stn_save_to_nextcloud::getFileNextCloud($date, $time), $args);
    4139           
    4240           
  • stn-save-to-nextcloud/trunk/Controleurs/MergeChunk.php

    r2875765 r2904651  
    1919            'Authorization' => 'Basic ' . base64_encode(get_option("login_dlwcloud") . ":" . get_option("pass_dlwcloud")),
    2020            // Va être envoyer vers la destination
    21             'Destination'   => get_option('url_dlwcloud').'/remote.php/dav/'.
    22             'files/'.get_option('login_dlwcloud').get_option('folder_dlwcloud') .             
    23             $date."_".$time."_wp_save_".stn_save_to_nextcloud::getDomain().".zip",
     21            'Destination'   => stn_save_to_nextcloud::getFileNextCloud($date, $time),
    2422        );
    2523       
  • stn-save-to-nextcloud/trunk/Controleurs/TakeBDD.php

    r2875765 r2904651  
    3131    // Pour toute les tables
    3232    foreach ($tables as $table) {
    33         // Récupère toute les occurences de la table
    34         $selectAllFromTable = $mysqli->query("SELECT * FROM $table");
    35         // Compte de nombre d'occurences
    36         $numColumns = $selectAllFromTable->field_count;
    37        
    38         // Ajout dans le script
    39        
    40         // Si la table exist on la supprime
    41         $script .= "DROP TABLE IF EXISTS $table;";
    42         //Ajoute le script de CREATE TABLE
    43         $createTable = $mysqli->query("SHOW CREATE TABLE $table");
    44         // Récupère le resultat de la requête
    45         $row2 = $createTable->fetch_row();
    46         // Ajoute le script en sautant des lignes pour la lisibilité
    47         $script .= "\n\n" . $row2[1] . ";\n\n";
    48        
    49         // Pour toute les occurences
    50         while ($row = $selectAllFromTable->fetch_row()) {
    51             // Ajoute un INSERT INTO
    52             $script .= "INSERT INTO $table VALUES(";
    53             // Pour tous les champs dans la table
    54             for ($j=0; $j < $numColumns; $j++) {
    55                 // Gère les caractères spéciaux
    56             $row[$j] = addslashes($row[$j]);
    57             $row[$j] = str_replace("\n","\\n",$row[$j]);
    58             // Ajoute la valeur dans VALUES()
    59             $script .= '"' . $row[$j] . '"';
     33        if($table != $wpdb->prefix.'stn_dir_chunk' && $table != $wpdb->prefix.'stn_file_in_zip'){
     34            // Récupère toute les occurences de la table
     35            $selectAllFromTable = $mysqli->query("SELECT * FROM $table");
     36            // Compte de nombre d'occurences
     37            $numColumns = $selectAllFromTable->field_count;
    6038
    61             // Si ce n'est pas la dernière values
    62             if ($j < ($numColumns-1)) {
    63                 // On ajoute une virgule
    64                 $script .= ',';
    65        
    66             }
    67             }
    68             // Fin du INSERT INTO
    69             $script .= ");\n";
    70         }
    71         // Saute de lignes pour marqué la fin de cet table
    72         $script .= "\n\n\n";
     39            // Ajout dans le script
     40
     41            // Si la table exist on la supprime
     42            $script .= "DROP TABLE IF EXISTS $table;";
     43            //Ajoute le script de CREATE TABLE
     44            $createTable = $mysqli->query("SHOW CREATE TABLE $table");
     45            // Récupère le resultat de la requête
     46            $row2 = $createTable->fetch_row();
     47            // Ajoute le script en sautant des lignes pour la lisibilité
     48            $script .= "\n\n" . $row2[1] . ";\n\n";
     49
     50            // Pour toute les occurences
     51            while ($row = $selectAllFromTable->fetch_row()) {
     52                // Ajoute un INSERT INTO
     53                $script .= "INSERT INTO $table VALUES(";
     54                // Pour tous les champs dans la table
     55                for ($j=0; $j < $numColumns; $j++) {
     56                    // Gère les caractères spéciaux
     57                    $row[$j] = addslashes($row[$j]);
     58                    $row[$j] = str_replace("\n","\\n",$row[$j]);
     59                    // Ajoute la valeur dans VALUES()
     60                    $script .= '"' . $row[$j] . '"';
     61
     62                    // Si ce n'est pas la dernière values
     63                    if ($j < ($numColumns-1)) {
     64                        // On ajoute une virgule
     65                        $script .= ',';
     66                    }
     67                }
     68                // Fin du INSERT INTO
     69                $script .= ");\n";
     70            }
     71            // Saute de lignes pour marqué la fin de cet table
     72            $script .= "\n\n\n";
     73        }
    7374    }
    7475
  • stn-save-to-nextcloud/trunk/STN.php

    r2904476 r2904651  
    88 *  * Plugin URI: httsp://www.davelopweb.fr/
    99 * Description: Sauvegarde wordpress + Bdd mensuelle vers votre instance Nextcloud
    10  *  * Version: 2.0.1
     10 *  * Version: 2.1.0
    1111 * Author: Dave DELALLEAU / Lucas BOUTEVIN SANCE
    1212 * Author URI: https://www.davelopweb.fr/#contact
     
    1414 *
    1515 */
    16 
    17 class stn_save_to_nextcloud{
     16 
     17    /**
     18       
     19        Ce fichier contient tout les includes avec les fonction et classes utile pour la sauvegarde et la restauration
    1820   
     21    **/
    1922   
    20     // Un cron WP permet de gérer la planification d'action php
    21     //activation du cron à l'activation
    22     function activate(){
    23         // Créer la table qui va servir à gérer les chunks
    24         include("Controleurs/CreateBdd.php");       
    25     }
    26    
    27     //désactivation du cron
    28     function desactivate(){
    29             // Si l'évement est programmé
    30         if (wp_next_scheduled ( 'programmeAndSave' )) {
    31             wp_clear_scheduled_hook('programmeAndSave');
    32         }
    33         // Si l'évement lancer maintenant est programmé
    34         if (wp_next_scheduled ( 'saveNow' )) {
    35             wp_clear_scheduled_hook('saveNow');
    36         }
    37         // Supprime la BDD
    38         include("Controleurs/DeleteBdd.php");       
    39     }
    40    
    41     // Fonction qui retourne le timestamp de la prochaine saauvegarde à effectuer selon les options enregistrés
    42     static function calculDateSave(){
    43         // Si la sauvegarde est tout les mois
    44         if(get_option('frequency_dlwcloud') == "month"){
    45             // Récupère la timestamp
    46             $timestamp = strtotime('first '.get_option('day_dlwcloud').' of next month '.get_option('hour_dlwcloud').":00");
    47         }
    48         // Si la sauvegarde est toute les semaines
    49         else if(get_option('frequency_dlwcloud') == "week"){
    50             // Récupère la timestamps
    51             $timestamp = strtotime('next '.get_option('day_dlwcloud').' '.get_option('hour_dlwcloud').":00");
    52         }
    53         // Si c'est deux fois pas mois
    54         else{
    55             switch(true){
    56                 // Si on a pas dépassé le premier $jour du mois
    57                 case time() < strtotime('first '.get_option('day_dlwcloud').' of this month '.get_option('hour_dlwcloud').":00"):
    58                     $timestamp = strtotime('first '.get_option('day_dlwcloud').' of this month '.get_option('hour_dlwcloud').":00");
    59                     break;
    60                 // Si on a pas dépassé le troisième $jour du mois
    61                 case time() < strtotime('third '.get_option('day_dlwcloud').' of this month '.get_option('hour_dlwcloud').":00"):
    62                     $timestamp = strtotime('third '.get_option('day_dlwcloud').' of this month '.get_option('hour_dlwcloud').":00");
    63                     break;
    64                 // Si on a passé les deux
    65                 default:
    66                     // Le premier $jour du mois suivant
    67                     $timestamp = strtotime('first '.get_option('day_dlwcloud').' of next month '.get_option('hour_dlwcloud').":00");
    68 
    69             }
    70         }
    71         // Calcul le UTC avec l'heure locale
    72         $decalage = current_time("timestamp") - time();
    73         // Adapte le timestamp à l'heure locale
    74         $adaptedTimestamp = $timestamp - $decalage;
    75         // Retourne le timestamp où doit s'effectuer la sauvegarde adapter à l'heure locale
    76         return $adaptedTimestamp;
    77        
    78     }
    79    
    80     // Retourne le nom de domain du site WordPress
    81     static function getDomain(){
    82    
    83         // Va chercher le nom de domain du WordPress
    84         $urlparts = parse_url(home_url()); 
    85         // Va chercher le nom de domain du WordPress
    86         return $urlparts['host'];
    87    
    88     }
    89    
    90     // Retourne le chemin du fichier zip dans le FTP
    91     static function getFileCloud($date, $time){
    92         return ABSPATH . "wp_save_all_" . $date ."_".$time."_".stn_save_to_nextcloud::getDomain().".zip";
    93     }
    94    
    95     // Retourne le chemin du fichier zip dans le FTP
    96     static function getFileBDD($date, $time){
    97         return ABSPATH . "wp_save_bdd_" . $date ."_".$time."_".stn_save_to_nextcloud::getDomain().".sql";
    98     }
    99    
    100     // Récupère la valeur du champ passé en paramètre pour le fichier en cour
    101     static function getCurrentFile($champ, $table="stn_dir_chunk"){
    102         // Récupère la BDD
    103         global $wpdb;
    104         // Prépare le requête
    105         $sql = "SELECT " . $champ . " FROM " . $wpdb->prefix . $table . " WHERE finish = false";
    106         // Execute la requête et retourne son resultat
    107         return get_object_vars($wpdb->get_results($sql)[0])[$champ];
    108     }
    109    
    110     // Fonction qui test la connexion avec NextCloud
    111     static function is_NextCloud_good(){
    112        
    113         // Lance un test de connexion avec NextCloud
    114         include("Controleurs/isNextCloudGood.php");
    115        
    116         // Si la connexion est incorrect
    117         if(is_wp_error($nextcloud_response)){
    118             return false;
    119         }
    120         // Si la connexion est correct
    121         else{
    122             return true;
    123         }
    124     }
    125    
    126     // Fonction qui supprime toute les choses inutile à stocker et arrête la sauvegarde lors d'une erreur
    127     static function there_is_an_error(){
    128        
    129         // J'envoie un mail pour prévenir de l'erreur
    130         stn_save_to_nextcloud::sendMail(true);
    131        
    132         // Stop la sauvegarde
    133         exit;
    134        
    135     }
    136    
    137     // Fonction qui lance une sauvegarde maintenant
    138     static function save_now(){
    139             // Si l'évement est programmé
    140         if (!wp_next_scheduled ('save_in_progress')) {
    141             // Programme un évènement pour indiqué que la sauvegarde est en cour (pour ne pas pouvoir relancer pendant une sauvegarde)
    142             stn_save_to_nextcloud::reschedule_in_progress(60);
    143             // Lance une sauvegarde en arrière plan
    144             wp_schedule_single_event(time(),'DoSave');
    145         }
    146         // Si on est sur un multisite
    147         if(is_multisite()){
    148             // Redirige vers la page
    149             wp_redirect('/wp-admin/network/admin.php?page=dlw-nextcloud&save=now');
    150         }
    151         // Si on est sur un site classique
    152         else{
    153             // Redirige vers la page
    154             wp_redirect('/wp-admin/options-general.php?page=dlw-nextcloud&save=now');
    155         }
    156        
    157     }   
    158    
    159     // Programme la futur sauvegarde et en lance une maintenant
    160     static function programme_and_save(){
    161    
    162         // Programme la futur sauvegarde
    163         stn_save_to_nextcloud::programme_futur_save();
    164             // Si l'évement est programmé
    165         if (!wp_next_scheduled ('save_in_progress')) {
    166             // Programme un évènement pour indiqué que la sauvegarde est en cour (pour ne pas pouvoir relancer pendant une sauvegarde)
    167             stn_save_to_nextcloud::reschedule_in_progress(60);
    168             // Lance une sauvegarde en arrière plan
    169             wp_schedule_single_event(time(),'DoSave');
    170         }
    171     }
    172    
    173     // Fonction qui programme une sauvegarde selon la date de l'utilisateur
    174     static function programme_futur_save(){
    175    
    176             // Si l'évement est déjà programmé
    177         if (wp_next_scheduled ( 'programmeAndSave' )) {
    178             // On le supprime
    179             wp_clear_scheduled_hook('programmeAndSave');
    180         }
    181    
    182         // Programme la prochaine sauvegarde
    183         wp_schedule_single_event(stn_save_to_nextcloud::calculDateSave(),'programmeAndSave');
    184        
    185     }
    186    
    187     // Fonction qui télécharge les fichiers WP dans le serveur FTP et supprime les traces de l'ancienne sauvegarde s'il y en a
    188     static function save_in_ftp($relance=false, $date=null, $time=null){
    189    
    190         // Si aucune sauvegarde n'est en cour, initialise la sauvegarde
    191         if(stn_save_to_nextcloud::backup_in_progress("stn_file_in_zip") == 0){
    192        
    193             // Supprime les chunks sauvegardés et gardés dans NextCloud
    194             include("Controleurs/DeleteChunksNextCloud.php");
    195            
    196             // Supprime l'occurence de la BDD
    197             include("Controleurs/DeleteChunksBdd.php");
    198            
    199             // Supprime s'il y en a les ancien fichiers sauvegardés et gardés dans le FTP
    200             include("Controleurs/DeleteFileFtp.php");
    201            
    202             // Ajoute une valeur dans la BDD
    203             include("Controleurs/AddDataFileInZip.php");
    204         }
    205        
    206         // Créer et envoi au ftp le fichier zip contenant tout ce qu'il faut pour sauvegarder WordPress
    207         include("Controleurs/CreateZip.php");
    208 
    209     }
    210 
    211    
    212     // Fonction qui vérifie si le zip est completement créé
    213     function gendarme_zip($date, $time){
    214         // Si ça fait plus de 10min qu'un fichier n'a pas été reçu
    215         if(time() > stn_save_to_nextcloud::getCurrentFile("uploadTime", "stn_file_in_zip") + 600){
    216             // Relance la fonction
    217             stn_save_to_nextcloud::save_in_ftp(true, $date, $time);
    218         }
    219         else{
    220             // Pogramme la prochaine vérification à dans 5min secondes
    221             wp_schedule_single_event(time()+60, 'gendarmeZip', array($date, $time));
    222             // Programme un évènement pour indiqué que la sauvegarde est en cour (pour ne pas pouvoir relancer pendant une sauvegarde)
    223             stn_save_to_nextcloud::reschedule_in_progress(80);
    224         }
    225 
    226     }
    227    
    228     // Vérifie si une sauvegarde est en cour
    229     static function backup_in_progress($table){
    230    
    231         // Vérifie si une sauvegarde est en cour   
    232         include("Controleurs/BackupInProgress.php");
    233        
    234         // Retourne le nombre de sauvegarde en cour (0 ou 1)
    235         return $inProgress;
    236        
    237     }
    238    
    239     // Fonction qui transfert le zip au NextCloud indiqué
    240     static function save_in_nextCloud($date, $time){
    241 
    242         // Variable qui permet de gérer les erreurs
    243         $error = false;
    244 
    245         // Si aucune sauvegarde n'est en cour
    246         if(stn_save_to_nextcloud::backup_in_progress("stn_dir_chunk") == 0){
    247        
    248             // Créer le dossier temporaire SaveChunk qui contenir tout les morceaux du zip
    249             include("Controleurs/CreateFolder.php");
    250            
    251             // Ici je créer l'occurence initial
    252             include("Controleurs/AddDataChunk.php");
    253        
    254         }
    255 
    256         // Envoi les morceaux de fichier à SaveChunk
    257         include("Controleurs/SendChunk.php");
    258        
    259         // Créer le dossier inquiqué par l'utilisateur dans NextCLoud s'il n'existe pas
    260         include("Controleurs/CheckForDestination.php");
    261    
    262         // Fusionne tout les fichier dans un zip
    263         include("Controleurs/MergeChunk.php");
    264        
    265         // Passe la valeur de "finish" de la db à true
    266         include("Controleurs/FinishDbTrue.php");
    267 
    268         // Supprime les anciennes sauvegardes s'il y en a trop
    269         stn_save_to_nextcloud::deleteSaves($date, $time);
    270 
    271         // Envoie du mail de reponse correct
    272         stn_save_to_nextcloud::sendMail(false);
    273        
    274         // Supprime les fichiers du FTP
    275         include("Controleurs/DeleteFileFtp.php");
     23// Dossier principal du plugin
     24define('PLUGIN_PATH', dirname(plugin_dir_path( __FILE__ )) . "/stn-save-to-nextcloud/");
    27625
    27726
    278     }
    279    
    280     // Vérifie si les chunks ont planté et relance le si necessaire
    281     function gendarme_chunk($nbChunkMax){
    282         // Si tout les chunks n'ont pas été envoyés
    283         if($nbChunkMax != intval(stn_save_to_nextcloud::getCurrentFile("nbChunk"))){
    284             // Si ça fait longtemps qu'un chunk n'a pas été envoyés
    285             if(time() > stn_save_to_nextcloud::getCurrentFile("uploadTime") + 50){
    286                 // Ranlance la fonction
    287                 stn_save_to_nextcloud::save_in_nextCloud();
    288             }
    289             else{
    290                 // Programme dans 80s le gendarme
    291                 wp_schedule_single_event(time()+60, 'gendarmeChunk', array($nbChunkMax));
    292                 // Programme un évènement pour indiqué que la sauvegarde est en cour (pas pouvoir relancer pendant une sauvegarde)
    293                 stn_save_to_nextcloud::reschedule_in_progress(100);
    294             }
    295         }
    296     }
    297    
    298     // Fonction qui permet de gérer les erreurs et d'envoyer un mail si necessaire
    299     static function sendMail($error){
    300    
    301         // Envoi un mail de reponse
    302         include("Controleurs/SendMail.php");
     27// ---------- Les classes ---------- //
     28// Classe qui permet de sauvegarder un site WordPress
     29include("Classes/stn_save_to_nextcloud.php");
    30330
    304     }
     31// Classe qui permet de restaurer un site WordPress
     32include("Classes/stn_restore_from_nextcloud.php");
    30533
    306     // Fonction qui supprime les sauvegardes s'il y en a trop
    307     static function deleteSaves($date, $time){
    308    
    309         // Va chercher les sauvegardes toujours stockées
    310         include("Controleurs/HowManySave.php");
    311        
    312         // Pour toute les sauvegardes en trop
    313         for($i=0; $i<count($result)-intval(get_option("nb_save_dlwcloud")); $i++){
    314             // Si la sauvegarde n'a pas était faite maintenant
    315             if(get_object_vars($result[$i])["date"] != $date || get_object_vars($result[$i])["time"] != $time){
    316                 // Supprime la sauvegarde de NextCloud et de la BDD
    317                 stn_save_to_nextcloud::deleteSingleSave(get_object_vars($result[$i])["date"], get_object_vars($result[$i])["time"]);
    318             }
    319         }
    320     }
    321    
    322     // Supprime la sauvegarde faite à la date
    323     static function deleteSingleSave($date, $time){
    324    
    325         // Supprime la sauvegarde faite à la date de NextCloud et de la BDD
    326         include("Controleurs/DeleteSingleSave.php");   
    327    
    328     }
    329    
    330     // Sert à reprogrammer le cron "save_in_progress"
    331     static function reschedule_in_progress($time){
    332             // Si l'évement est programmé
    333         if (wp_next_scheduled ( 'save_in_progress' )) {
    334             // On le supprime
    335             wp_clear_scheduled_hook('save_in_progress');
    336         }
    337         // On le reprogramme
    338         wp_schedule_single_event(time()+$time, 'save_in_progress');
    339        
    340     }
    341    
    342     static function ne_rien_faire(){}   
    34334
    344 }           
     35// ---------- Autres fonctionnalités ---------- //
     36// Permet gérer les sauvegardes automatiques
     37include("Controleurs/ManageAutoSave.php");
    34538
    346 // Créer une route dans l'API qui permet de récupérer la liste des paramètres de l'utilisateur en format json
     39// Permet créer les crons
     40include("Controleurs/CreateCron.php");
     41
     42// Permet d'afficher le bouton d'auto update pour les themes
     43include("Controleurs/ShowAutoUpdateTheme.php");
     44
     45// Permet gérer l'affichage des menus
     46include("Controleurs/ManageMenu.php");
     47
     48// Permet créer les paramètres d'utilisateur
     49include("Controleurs/CreateUserParam.php");
     50
     51
     52// ---------- Les vues ---------- //
     53// Fonction qui permet d'afficher le visuel de la page de sauvegarde
     54include("Vues/vue_save.php");
     55
     56//  Fonction qui permet d'afficher le visuel de la page de restauration
     57include("Vues/vue_restore.php");
     58
     59
     60// ---------- L'API ---------- //
     61// Crée une route dans l'API qui permet de récupérer la liste des paramètres de l'utilisateur en format json
    34762include("API/ListUserParam.php");
    348 // Créer une route dans l'API qui permet de récupérer le nombre de sauvegarde et pour chacune, sa date et son état.
     63
     64// Crée une route dans l'API qui permet de récupérer le nombre de sauvegarde et pour chacune, sa date et son état.
    34965include("API/ListSave.php");
    35066
    351 
    352 // Si on a une heure de sauvegarde
    353 if(get_option("auto_update_dlwcloud") == "true"){
    354 
    355     // Récupère la class de la db
    356     global $wpdb;
    357    
    358     // Va chercher la date de la précédente sauvegarde
    359     $sql = "SELECT date, time FROM " . $wpdb->prefix . "stn_dir_chunk ORDER BY date DESC LIMIT 1";
    360     // Execute la requête
    361     $LastSave = get_object_vars($wpdb->get_results($sql)[0]);
    362     // Transforme au bon format la date
    363     $LastSave["date"] = substr($LastSave["date"], 0, 4) . "-" . substr($LastSave["date"], 4, 2) . "-" . substr($LastSave["date"], 6, 2);
    364    
    365     // Récupère le timestamp de départ de l'autorisation (2h après la sauvegarde)
    366     $debutAutorisation = strtotime($LastSave["date"] . " " . $LastSave["time"]) + 7200;
    367     // Récupère le timestamp de la fin de l'autorisation (48h après la sauvegarde)
    368     $FinAutorisation = strtotime($LastSave["date"] . " " . $LastSave["time"]) + 172800;
    369    
    370     // Si on est avant ou après l'autorisation
    371     if(time() < $debutAutorisation || time() > $FinAutorisation){
    372         // On désactive les mises à jour automatiques
    373         add_filter('auto_update_core', '__return_false');
    374         add_filter('auto_update_theme', '__return_false');                               
    375         add_filter('auto_update_plugin', '__return_false');
    376         add_filter('auto_update_translation', '__return_false');
    377 
    378     }
    379 
    380 }
    381 
    382 $save_to_nextcloud=new stn_save_to_nextcloud();
    383 
    384 register_activation_hook(__FILE__,array($save_to_nextcloud,'activate'));
    385 register_deactivation_hook(__FILE__,array($save_to_nextcloud,'desactivate'));
    386 add_action('programmeAndSave',array($save_to_nextcloud,'programme_and_save'));
    387 add_action('admin_post_saveNow',array($save_to_nextcloud,'save_now'));
    388 add_action('DoSave',array($save_to_nextcloud,'save_in_ftp'));
    389 add_action('gendarmeZip',array($save_to_nextcloud,'gendarme_zip'));
    390 add_action('gendarmeChunk',array($save_to_nextcloud,'gendarme_chunk'));
    391 add_action('gendarmeChunk',array($save_to_nextcloud,'gendarme_chunk'));
    392 add_action('save_in_progress', array($save_to_nextcloud,'ne_rien_faire'));
    393 
    394 
    395 // Fonction rend visible le bouton des mises à jour automatique pour les themes
    396 function activer_maj_auto_theme() {
    397   add_theme_support('automatic-feed-links');
    398 }
    399 // Appelle la fonction
    400 add_action('after_setup_theme', 'activer_maj_auto_theme');
    401 
    402 /*menu administration*/
    403 if ( is_admin() ){ // admin actions
    404     // Si on est sur un multisite
    405     if(is_multisite()){
    406         // Ajoute le menu, pas en mode sous-menu
    407         add_action('network_admin_menu','stn_savetonextcloud_setup_menu_multisite');
    408     }
    409     // Si on est sur un seul site
    410     else{
    411         // Ajoute le menu dans les réglages
    412         add_action('admin_menu','stn_savetonextcloud_setup_menu');
    413     }
    414     // Enregistre les settings
    415     add_action( 'admin_init', 'stn_savetonextcloud_settings' );
    416    
    417     function stn_savetonextcloud_settings() { // whitelist options
    418       register_setting( 'nextcloud-group', 'url_dlwcloud' );
    419       register_setting( 'nextcloud-group', 'login_dlwcloud' );
    420       register_setting( 'nextcloud-group', 'pass_dlwcloud' );
    421       register_setting( 'nextcloud-group', 'frequency_dlwcloud');
    422       register_setting( 'nextcloud-group', 'day_dlwcloud' );
    423       register_setting( 'nextcloud-group', 'hour_dlwcloud' );
    424       register_setting( 'nextcloud-group', 'fuseau_dlwcloud' );
    425       register_setting( 'nextcloud-group', 'folder_dlwcloud' );
    426       register_setting( 'nextcloud-group', 'email_dlwcloud' );
    427       register_setting( 'nextcloud-group', 'nb_save_dlwcloud' );
    428       register_setting( 'nextcloud-group', 'auto_update_dlwcloud' );
    429      
    430     }   
    431     function stn_savetonextcloud_setup_menu_multisite(){
    432         add_menu_page('Save To Nextcloud', 'Save To Nextcloud', 'manage_options', 'dlw-nextcloud', 'stn_savetonextcloud_param');     
    433     }
    434     function stn_savetonextcloud_setup_menu(){
    435         add_menu_page('Save To Nextcloud', 'Save To Nextcloud', 'manage_options', 'dlw-nextcloud', 'stn_savetonextcloud_param');     
    436     }
    437 }
    438                
    439 /*page admin*/
    440 function stn_savetonextcloud_param(){?>
    441       <div class="wrap">
    442         <h2>Configuration "Save To Nextcloud"</h2>
    443         <p>Veuillez renseigner vos identifiants vers votre instance Nextcloud</p>
    444         <form method="post" action="<?php echo admin_url( 'options.php' );?>">
    445         <input type="hidden" name="action" value="ProgrammeSave">
    446         <?php
    447         settings_fields( 'nextcloud-group' );
    448         do_settings_fields( 'nextcloud-group','dlwcloud' );?>
    449        
    450     <table class="form-table">
    451         <tr valign="top">
    452         <th scope="row">URL ( https://cloud.domaine.fr )</th>
    453         <td><input type="text" name="url_dlwcloud" value="<?php echo esc_url(get_option('url_dlwcloud')); ?>" required/></td>
    454         </tr>
    455                
    456     <tr valign="top">   
    457         <th scope="row">Identifiant</th>
    458         <td><input type="text" name="login_dlwcloud" value="<?php echo esc_html(get_option('login_dlwcloud')); ?>" required/></td>
    459         </tr>
    460          
    461         <tr valign="top">
    462         <th scope="row">Mot de passe</th>
    463         <td><input type="password" name="pass_dlwcloud" value="<?php echo esc_html(get_option('pass_dlwcloud')); ?>" required/></td>
    464         </tr>
    465        
    466         <tr valign="top">
    467         <th scope="row">Fréquence de sauvegarde</th>
    468         <td><select name="frequency_dlwcloud">
    469             <option value="week" <?php if(get_option('frequency_dlwcloud') == "week"){ ?> selected <?php } ?>>hebdomadaire</option>
    470             <option value="twicemonth" <?php if(get_option('frequency_dlwcloud') == "twicemonth"){ ?> selected <?php } ?>>bimensuel</option>
    471             <option value="month" <?php if(empty(get_option('frequency_dlwcloud')) || get_option('frequency_dlwcloud') == "month"){ ?> selected <?php } ?>>mensuel</option>
    472             </select>
    473         </td>
    474         </tr>
    475        
    476         <tr valign="top">
    477         <th scope="row">Jour de sauvegarde</th>
    478         <td><select name="day_dlwcloud">
    479             <option value="Monday" <?php if(get_option('day_dlwcloud') == "Monday"){ ?> selected <?php } ?>>Lundi</option>
    480             <option value="Tuesday" <?php if(get_option('day_dlwcloud') == "Tuesday"){ ?> selected <?php } ?>>Mardi</option>
    481             <option value="Wednesday" <?php if(get_option('day_dlwcloud') == "Wednesday"){ ?> selected <?php } ?>>Mercredi</option>
    482             <option value="Thursday" <?php if(get_option('day_dlwcloud') == "Thursday"){ ?> selected <?php } ?>>Jeudi</option>
    483             <option value="Friday" <?php if(get_option('day_dlwcloud') == "Friday"){ ?> selected <?php } ?>>Vendredi</option>
    484                                          
    485             <option value="Saturday" <?php if(empty(get_option('day_dlwcloud')) || get_option('day_dlwcloud') == "Saturday"){ ?> selected <?php } ?>>Samedi</option>
    486             <option value="Sunday" <?php if(get_option('day_dlwcloud') == "Sunday"){ ?> selected <?php } ?>>Dimanche</option>
    487             </select>
    488         </td>
    489         </tr>
    490        
    491         <tr valign="top">
    492         <th scope="row">Heure de sauvegarde</th>
    493         <td><input type="time" name="hour_dlwcloud" value="<?php echo esc_html(get_option('hour_dlwcloud')); ?>" required/></td>
    494         </tr>
    495        
    496         <tr valign="top">
    497         <th scope="row">Quel est votre fuseau horaire ?</th>
    498             <td><select name="fuseau_dlwcloud">
    499             <option value="200" <?php if(get_option('fuseau_dlwcloud') == "200"){ ?> selected <?php } ?>>Très Bonne</option>
    500             <option value="150" <?php if(get_option('fuseau_dlwcloud') == "150"){ ?> selected <?php } ?>>Bonne</option>
    501             <option value="100" <?php if(empty(get_option('fuseau_dlwcloud')) || get_option('fuseau_dlwcloud') == "100"){ ?> selected <?php } ?>>Normal</option>
    502             <option value="50" <?php if(get_option('fuseau_dlwcloud') == "50"){ ?> selected <?php } ?>>Mauvaise</option>
    503                 </select></td>
    504         </tr> 
    505 
    506         <tr valign="top">
    507         <th scope="row">Dossier de sauvegarde distant ( /dossier/de/destination/ )</th>
    508         <td><input type="text" name="folder_dlwcloud" value="<?php if (!empty(get_option('folder_dlwcloud'))){echo esc_html(get_option('folder_dlwcloud'));}else{echo "/save_wordpress/";};?>" required/></td>
    509         </tr>
    510        
    511         <tr valign="top">
    512         <th scope="row">Email de notification ( unMail;unAutreMail )</th>
    513         <td><input type="text" name="email_dlwcloud" value="<?php if (!empty(get_option('email_dlwcloud'))){echo esc_html(get_option('email_dlwcloud'));}?>" required/></td>
    514         </tr>   
    515         </table>
    516        
    517         <table>
    518         <tr valign="top">
    519         <th scope="row"></th>
    520         <td>
    521         <details>
    522             <summary>Voir les réglages avancés</summary>
    523             <table class="form-table">
    524            
    525             <th scope="row">Nombre de sauvegardes à conserver sur serveur</th>
    526             <td><input type="text" name="nb_save_dlwcloud" value="<?php if (!empty(get_option('nb_save_dlwcloud'))){echo esc_html(get_option('nb_save_dlwcloud'));}else{echo "3";}?>" required/></td>
    527             </tr>
    528            
    529             <th scope="row">Voulez-vous activez vos mises à jours automatique seulement après une sauvegarde ?</th>
    530             <td><select name="auto_update_dlwcloud">
    531             <option value="true" <?php if(get_option('auto_update_dlwcloud') == "true"){ ?> selected <?php } ?>>Oui</option>
    532             <option value="false" <?php if(empty(get_option('auto_update_dlwcloud')) || get_option('auto_update_dlwcloud') == "false"){ ?> selected <?php } ?>>Non</option>
    533                 </select>
    534                 </br><p>En activant cette fonctionnalité, seules les mises à jour automatiques que vous avez déjà activées pourront être lancées pendant une période de 48 heures, débutant deux heures après la sauvegarde. Vous pourrez à nouveau activer de nouvelles mises à jour automatiques uniquement pendant cette période de 48 heures.</p>
    535             </tr> 
    536              
    537             </table>
    538            
    539         </details>
    540         </td>
    541         </tr>
    542            
    543         </table>
    544     <?php
    545     // Si on enregistre de nouvelles option
    546     if (isset($_GET['settings-updated']) && $_GET['settings-updated'] == true) {
    547         // Programme la prochaine sauvegarde
    548         stn_save_to_nextcloud::programme_futur_save();
    549     }
    550     submit_button("Enregistrer les modifications"); ?>
    551     </form>
    552     <form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
    553         <input type="hidden" name="action" value="saveNow">
    554         <?php submit_button('Faire une sauvegarde maintenant');
    555         if(isset($_GET['save'])){
    556        
    557             echo "<p>La sauvegarde est en cours, cela peut prendre quelques minutes. </br> Vous recevrez un                 mail lorsque celle-ci sera terminée. Ici, vous n'avez pas automatisé vos prochaines sauvegardes, si vous ne l'avez jamais fait ou que vous avez changé vos préférences, veuillez cliquer sur le bouton \"Enregistrer les modifications\"</p>";
    558            
    559         }
    560         else{
    561        
    562             echo "<p>Le bouton \"Enregistrer les modifications\" permet d'automatiser le lancement des futurs sauvegardes selon les préférences indiquées : </br> - hebdomadaire : Toute les semaines à l'heure et au jour choisie à partir de la semaine prochaine. </br> - bimensuel : La première et troisème semaine du mois à l'heure et au jour choisie </br> - mensuel : La première semaine du mois à l'heure et au jour choisie à partir du mois prochain</p> </br> Le bouton \"Faire une sauvegarde maintenant\" permet de lancer une sauvegarde sans programmer les prochaines.";
    563            
    564         }   
    565 
    566         ?>
    567     </form>
    568     </div>
    569 <?php }; ?>
     67?>
  • stn-save-to-nextcloud/trunk/readme.txt

    r2904475 r2904651  
    33Tags: nextcloud, save, webdav, davelopweb, stn
    44Requires at least: 5.0
    5 Requires PHP: 7.4
     5Requires PHP: 7.3
    66Tested up to: 6.1
    7 Stable tag: 2.0.1
     7Stable tag: 2.1.0
    88License: GPLv2
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    2525== Changelog ==
    2626
    27 = 1.0.1 =
     27= 1.0.0 -> 2.0.1 =
    2828
    29 Change the code to use cron
     29Mise en conformité du code pour le store Wordpress
    3030
     31= 2.1.0 =
    3132
    32 = 1.0.2 =
    33 
    34 Create and use BDD to verify if all chunks download
    35 
    36 
    37 = 1.0.3 =
    38 
    39 Use zip instead of tar. Create BDD script without exec. Can use multiple mail. Create Folder in NextCloud if not exist.
    40 
    41 = 1.0.4 =
    42 
    43 Don't use the ok files anymore. Resume zip possible
    44 
    45 = 1.0.5 =
    46 
    47 Added choice for frequency, day and time of backup. Possibility to notify several
    48 people by email.
    49 
    50 = 1.0.6 =
    51 
    52 Cannot run two backups at the same time. Change the functionality of buttons.
    53 
    54 = 2.0.0 =
    55 
    56 Add 2 functions for the API : List of the user's parameters, list of his backups. Enable auto update of themes. Possibility to activate automatic updates only during a period of 48 hours, starting two hours after the backup. Possibility to block automatic updates. The plugin becomes compatible with WordPress multisite.
    57 
    58 = 2.0.1 =
    59 
    60 Ajout Dossier API manquant
    61 
    62 
    63 == Upgrade Notice ==
    64 
    65 2.0.1: See changelog for full details. A recommended update for all.
     33Correctifs Bugs
    6634
    6735== Links ==
Note: See TracChangeset for help on using the changeset viewer.