Plugin Directory

Changeset 3032524


Ignore:
Timestamp:
02/07/2024 07:00:35 AM (2 years ago)
Author:
everestthemes
Message:

version 2.2.4 updated

Location:
everest-backup
Files:
343 added
42 edited

Legend:

Unmodified
Added
Removed
  • everest-backup/trunk/changelog.txt

    r3005651 r3032524  
    11== Changelog ==
     2
     3= v2.2.4 =
     4* Update: Security Patch.
     5* New: New archiver for more flexible, stable and faster backup.
    26
    37= v2.2.3 =
  • everest-backup/trunk/everest-backup.php

    r3005651 r3032524  
    66 * Author: everestthemes
    77 * Author URI: https://everestthemes.com/
    8  * Version: 2.2.3
     8 * Version: 2.2.4
    99 * Text Domain: everest-backup
    1010 * License: GPLv3 or later
  • everest-backup/trunk/inc/classes/class-ajax.php

    r2975595 r3032524  
    205205        everest_backup_setup_environment();
    206206
     207        if ( 'ebwp' !== pathinfo( $_POST['name'], PATHINFO_EXTENSION ) ) {
     208            $message = __( 'It seems current uploaded file seems to be tampered with.', 'everest-backup' );
     209            Logs::error( $message );
     210            everest_backup_send_error( $message );
     211        }
     212
    207213        everest_backup_get_ajax_response( EVEREST_BACKUP_UPLOAD_PACKAGE_ACTION );
    208214
  • everest-backup/trunk/inc/classes/class-filesystem.php

    r2871628 r3032524  
    165165    public function move_file( $from, $to ) {
    166166
     167        if ( $from === $to ) {
     168            $message = __( 'Source and destination same (during upload save).', 'everest-backup' );
     169            Logs::error( $message );
     170            return false;
     171        }
     172
    167173        if ( ! $this->is_file( $from ) ) {
     174            $message = __( 'Uploaded file cannot be verified as a file (during upload save).', 'everest-backup' );
     175            Logs::error( $message );
    168176            return false;
    169177        }
     
    182190         */
    183191        if ( file_exists( $to ) ) {
    184             unlink( $to );
     192            $message = __( 'File with same name already exists (during upload save).', 'everest-backup' );
     193            Logs::error( $message );
     194            wp_delete_file( $to );
    185195        }
    186196
  • everest-backup/trunk/inc/classes/class-tags.php

    r2968522 r3032524  
    306306        }
    307307
    308         if ( everest_backup_is_gzip( $zipfile ) ) {
    309             return $this->get_from_v200( $tags_display_type, $zipfile );
    310         }
    311 
    312         return $this->get_before_v200( $tags_display_type, $zipfile );
     308        return $this->get_from_v200( $tags_display_type, $zipfile );
    313309
    314310    }
  • everest-backup/trunk/inc/core/class-archiver.php

    r2871628 r3032524  
    6666    }
    6767
    68     public function add_file( $file ) {
     68    public function add_file( $file, $subtask = array() ) {
     69
     70        $timestart = time();
    6971
    7072        $file = wp_normalize_path( $file );
     
    7678        $path = $this->get_entryname( $file );
    7779
    78         $handle = fopen( $file, 'rb' );
     80        $handle = gzopen( $file, 'rb' );
     81
     82        if ( ! empty( $subtask['c_f'] ) && ! empty( $subtask['c_ftell'] ) ) {
     83            if ( $file == $subtask['c_f'] ) {
     84                gzseek( $handle, $subtask['c_ftell'] );
     85            }
     86        }
    7987
    8088        gzwrite( $this->ziphandle, "EBWPFILE_START:{$path}\n" );
     
    8290        while ( ! feof( $handle ) ) {
    8391            gzwrite( $this->ziphandle, fread( $handle, self::$READ_LIMIT ) );
     92
     93            if ( ( time() - $timestart ) > 10 ) {
     94                return array(
     95                    'current_file_ftell' => ftell( $handle ),
     96                    'file_name' => $file,
     97                );
     98            }
    8499        }
    85100
    86101        gzwrite( $this->ziphandle, "\nEBWPFILE_END:{$path}\n" );
    87102
    88         return fclose( $handle );
     103        return gzclose( $handle );
    89104    }
    90105
     
    109124        if ( ! $metadata ) {
    110125            if ( $this->open( 'r' ) ) {
    111                 $metajson = ltrim( gzgets( $this->ziphandle ), 'EBWPFILE_METADATA:' );
     126                $metajson = ltrim( fgets( $this->ziphandle ), 'EBWPFILE_METADATA:' );
    112127                $this->close();
    113128
  • everest-backup/trunk/inc/core/class-init.php

    r2918414 r3032524  
    7070        $files = array(
    7171            'class-archiver.php',
     72            'class-archiver-v2.php',
    7273            'class-export.php',
    7374            'class-import.php',
  • everest-backup/trunk/inc/core/export/class-wrapup.php

    r2924700 r3032524  
    88namespace Everest_Backup\Core\Export;
    99
    10 use Everest_Backup\Core\Archiver;
     10use Everest_Backup\Core\Archiver_V2;
    1111use Everest_Backup\Filesystem;
    1212use Everest_Backup\Logs;
     
    109109    private static function run() {
    110110
    111         Logs::set_proc_stat(
    112             array(
    113                 'log'      => 'info',
    114                 'status'   => 'in-process',
    115                 'progress' => 80,
    116                 'message'  => __( 'Wrapping things up', 'everest-backup' ),
    117             )
    118         );
    119 
    120         $zip = self::get_archive_path();
     111        $subtask = ! empty( self::$params['subtask'] ) ? json_decode( self::$params['subtask'], true ) : array();
     112
     113        if ( ! $subtask ) {
     114            Logs::set_proc_stat(
     115                array(
     116                    'log'      => 'info',
     117                    'status'   => 'in-process',
     118                    'progress' => 80,
     119                    'message'  => __( 'Wrapping things up', 'everest-backup' ),
     120                )
     121            );
     122        }
    121123
    122124        $listpath = everest_backup_current_request_storage_path( self::$LISTFILENAME );
     
    126128        }
    127129
    128         Logs::set_proc_stat(
    129             array(
    130                 'log'      => 'info',
    131                 'status'   => 'in-process',
    132                 'progress' => 80,
    133                 'message'  => __( 'Checking available space', 'everest-backup' ),
    134             )
    135         );
    136 
    137         sleep( 1 );
    138 
    139         $stats = self::files_stats( $listpath );
     130        $zip       = self::get_archive_path();
     131        $timestart = time();
     132
     133        if ( ! $subtask ) {
     134            Logs::set_proc_stat(
     135                array(
     136                    'log'      => 'info',
     137                    'status'   => 'in-process',
     138                    'progress' => 80,
     139                    'message'  => __( 'Checking available space', 'everest-backup' ),
     140                )
     141            );
     142        }
     143
     144        $stats = ! empty( $subtask['stats'] ) ? $subtask['stats'] : self::files_stats( $listpath );
    140145
    141146        if ( ! everest_backup_is_space_available( EVEREST_BACKUP_BACKUP_DIR_PATH, $stats['size'] ) ) {
     
    143148        }
    144149
    145         Logs::set_proc_stat(
    146             array(
    147                 'log'      => 'info',
    148                 'status'   => 'in-process',
    149                 'progress' => 80,
    150                 'message'  => __( 'Space available, archiving files', 'everest-backup' ),
    151             )
    152         );
    153 
    154         $archiver = new Archiver( $zip );
    155 
    156         if ( $archiver->open() ) {
    157 
    158             $archiver->set_metadata(
     150        if ( ! $subtask ) {
     151            Logs::set_proc_stat(
    159152                array(
    160                     'stats'      => $stats,
    161                     'filename'   => self::get_archive_name(),
    162                     'request_id' => everest_backup_current_request_id(),
    163                     'tags'       => everest_backup_generate_tags_from_params( self::read_config( 'Params' ) ),
    164                     'config'     => self::read_config(),
     153                    'log'      => 'info',
     154                    'status'   => 'in-process',
     155                    'progress' => 80,
     156                    'message'  => __( 'Space available, archiving files', 'everest-backup' ),
    165157                )
    166158            );
    167 
    168             $handle = fopen( $listpath, "r" );
     159        }
     160
     161        $archiver = new Archiver_V2( $zip );
     162
     163        if ( $archiver->open( $subtask ? 'ab' : 'wb' ) ) {
     164
     165            if ( ! $subtask ) {
     166                $archiver->set_metadata(
     167                    array(
     168                        'stats'      => $stats,
     169                        'filename'   => self::get_archive_name(),
     170                        'request_id' => everest_backup_current_request_id(),
     171                        'tags'       => everest_backup_generate_tags_from_params( self::read_config( 'Params' ) ),
     172                        'config'     => self::read_config(),
     173                    )
     174                );
     175            }
     176
     177            $handle = fopen( $listpath, 'r' );
    169178
    170179            if ( is_resource( $handle ) ) {
    171180
    172                 $count = 1;
    173 
    174                 while( !feof( $handle ) ){
    175                     $line = fgets( $handle );
    176 
    177                     if ( ! $line ) {
    178                         continue;
     181                $count = ! empty( $subtask['count'] ) ? absint( $subtask['count'] ) : 1;
     182
     183                if ( ! empty( $subtask['ftell'] ) ) {
     184                    fseek( $handle, absint( $subtask['ftell'] ) );
     185                }
     186                while ( ! feof( $handle ) ) {
     187                    if ( empty( $subtask['c_f'] ) && empty( $subtask['c_ftell'] )  ) {
     188                        $line = fgets( $handle );
     189   
     190                        if ( ! $line ) {
     191                            continue;
     192                        }
     193   
     194                        $filepath = trim( $line );
     195   
     196                        if ( ! file_exists( $filepath ) ) {
     197                            continue;
     198                        }
     199   
     200                        if ( 'ebwp' === pathinfo( $line, PATHINFO_EXTENSION ) ) {
     201                            continue;
     202                        }
     203                    } else {
     204                        $filepath = $subtask['c_f'];
    179205                    }
    180206
    181                     $filepath = trim( $line );
    182 
    183                     if ( ! file_exists( $filepath ) ) {
    184                         continue;
    185                     }
    186 
    187                     if ( 'ebwp' === pathinfo( $line, PATHINFO_EXTENSION ) ) {
    188                         continue;
    189                     }
    190 
    191                     if ( $archiver->add_file( $filepath ) ) {
     207                    if ( $file_write_return = $archiver->add_file( $filepath, $subtask ) ) {
     208                        $subtask['c_f']     = '';
     209                        $subtask['c_ftell'] = '';
    192210
    193211                        $progress = ( $count / $stats['total'] ) * 100;
     
    201219                                    esc_html( $progress )
    202220                                ),
    203                                 'detail' => sprintf( __( 'Archived: %1$s out of %2$s', 'everest-backup' ), esc_html( $count ), esc_html( $stats['total'] ) )
     221                                'detail' => sprintf( __( 'Archived: %1$s out of %2$s', 'everest-backup' ), esc_html( $count ), esc_html( $stats['total'] ) ),
    204222                            )
    205223                        );
     
    207225                        $count++;
    208226
     227                    }
     228
     229                    if ( is_array( $file_write_return ) ) {
     230                        return self::set_next(
     231                            'wrapup',
     232                            json_encode(
     233                                array(
     234                                    'count'   => $count,
     235                                    'ftell'   => ftell( $handle ),
     236                                    'stats'   => $stats,
     237                                    'c_ftell' => $file_write_return['current_file_ftell'],
     238                                    'c_f'     => $file_write_return['file_name'],
     239                                )
     240                            )
     241                        );
     242                    }
     243
     244                    if ( ( time() - $timestart ) > 10 ) {
     245                        return self::set_next(
     246                            'wrapup',
     247                            json_encode(
     248                                array(
     249                                    'count' => $count,
     250                                    'ftell' => ftell( $handle ),
     251                                    'stats' => $stats
     252                                )
     253                            )
     254                        );
    209255                    }
    210256
     
    236282        Logs::done( __( 'Backup completed', 'everest-backup' ) );
    237283
     284        // if ( ! wp_next_scheduled( 'everest_backup_ebwp_file_upload_cloud' ) ) {
     285        //  wp_schedule_single_event(
     286        //      time() + 20,
     287        //      'everest_backup_ebwp_file_upload_cloud',
     288        //      array(
     289        //          $zip,
     290        //          $migration->get_url(),
     291        //      )
     292        //  );
     293        // }
     294
    238295        do_action( 'everest_backup_after_zip_done', $zip, $migration->get_url() );
    239296
     
    246303            )
    247304        );
    248 
    249305    }
    250 
    251306}
  • everest-backup/trunk/inc/core/import/class-check.php

    r2924700 r3032524  
    99
    1010use Everest_Backup\Core\Archiver;
     11use Everest_Backup\Core\Archiver_V2;
    1112use Everest_Backup\Logs;
    1213use Everest_Backup\Traits\Import;
     
    1920}
    2021
     22/**
     23 * Check for file integrity.
     24 */
    2125class Check {
    2226
     
    8690
    8791        if ( ! everest_backup_is_gzip( self::$params['package'] ) ) {
    88             throw new \Exception( __( 'Your backup file requires Everest Backup version 1.1.7 or earlier, aborting restore.', 'everest-backup' ) );
    89         }
    90 
    91         $archiver = new Archiver( self::$params['package'] );
     92            $archiver = new Archiver_V2( self::$params['package'] );
     93            // throw new \Exception( __( 'Your backup file requires Everest Backup version 1.1.7 or earlier, aborting restore.', 'everest-backup' ) );
     94        } else {
     95            $archiver = new Archiver( self::$params['package'] );
     96        }
    9297
    9398        /**
     
    100105
    101106        if ( empty( $stats ) ) {
    102             throw new \Exception( __( 'Uploaded backup is either corrupted or not supported. Metadata missing, aborting restore.', 'everest-backup' ) );
     107            throw new \Exception( __( 'Uploaded backup is either corrupted or not supported. Metadata missing, aborting restore.' . json_encode( $archiver->get_metadatas() ), 'everest-backup' ) );
    103108        }
    104109
     
    121126                'progress' => 4,
    122127                'message'  => __( 'Restore initialized. Checking server vitals for restore.' ),
    123                 'detail'   => __( 'Space available', 'everest-backup' )
     128                'detail'   => __( 'Space available', 'everest-backup' ),
    124129            )
    125130        );
     
    199204                    'progress' => 10,
    200205                    'message'  => __( 'Restoration might fail... Major difference found in PHP version' ),
    201                     'detail'   => $detail
     206                    'detail'   => $detail,
    202207                )
    203208            );
     
    228233                'progress' => 12,
    229234                'message'  => __( 'All checks passed. Starting files extraction...' ),
    230                 'next'     => 'extraction'
     235                'next'     => 'extraction',
    231236            )
    232237        );
    233238
    234239        deactivate_plugins( everest_backup_get_other_plugins(), true );
    235 
    236240    }
    237241}
  • everest-backup/trunk/inc/core/import/class-extraction.php

    r3005651 r3032524  
    99
    1010use Everest_Backup\Core\Archiver;
     11use Everest_Backup\Core\Archiver_V2;
    1112use Everest_Backup\Filesystem;
    1213use Everest_Backup\Logs;
     
    2728
    2829        if ( false !== strpos( $filepath, LANGDIR ) ) {
    29             //Bail if we are inside language directory.
     30            // Bail if we are inside language directory.
    3031            return;
    3132        }
     
    4243    }
    4344
    44     private static function run() {
     45    private static function run( $params ) {
    4546
    4647        $metadata = self::get_metadata();
     
    5657        $stats = $metadata['stats'];
    5758
    58         $archiver = new Archiver( $metadata['FilePath'] );
     59        if ( everest_backup_is_gzip( $metadata['FilePath'] ) ) {
     60            $archiver = new Archiver( $metadata['FilePath'] );
     61        } else {
     62            $archiver = new Archiver_V2( $metadata['FilePath'] );
     63        }
    5964
    6065        if ( $archiver->open( 'rb' ) ) {
     
    6772            $handle = false;
    6873
    69             while ( ! gzeof( $archiver->get_ziphandle() ) ) {
    70                 $line = gzgets( $archiver->get_ziphandle() );
     74            $current_position = 0;
     75            if ( ! empty( $params['current_position'] ) ) {
     76                $current_position = $params['current_position'];
     77            }
     78            if ( ! empty( $params['count'] ) ) {
     79                $count = $params['count'];
     80            }
     81
     82            $time = time();
     83            $start_time = 0;
     84
     85            fseek( $archiver->get_ziphandle(), $current_position ); // Start file read from previous position.
     86
     87            if ( ! empty( $params['current_file_name'] ) && ! empty( $params['current_file_seek'] ) ) {
     88                $path = $params['current_file_name'];
     89                if ( file_exists( $path ) ) {
     90                    $handle = fopen( $path, 'ab' );
     91                    if ( ! $handle ) {
     92                        throw new \Exception( 'Could not open file for append: ' . $path );
     93                    }
     94                    $start_time = microtime( true );
     95                } else {
     96                    throw new \Exception( 'Extraction error. Created file not found.' );
     97                }
     98                if ( false !== strpos( $path, 'ebwp-files' ) ) {
     99                    $type = 'ebwp-files';
     100                } else {
     101                    $_type = strstr( $path, '/', true );
     102                    $type  = $_type ? $_type : 'others';
     103                }
     104            }
     105
     106            while ( ! feof( $archiver->get_ziphandle() ) ) {
     107                $line = fgets( $archiver->get_ziphandle() );
    71108
    72109                /**
     
    77114                 * ===============================================
    78115                 */
    79                 if ( false !== strpos( $line, 'EBWPFILE_START:' ) ) {
     116                if ( 0 === strpos( $line, 'EBWPFILE_START:' ) ) {
    80117                    $path = trim( str_replace( 'EBWPFILE_START:', '', $line ) );
    81118                    $path = str_replace( chr( 0 ), '', $path ); // Fix for null byte issue.
     
    85122                        $path = everest_backup_current_request_storage_path( $path );
    86123                    } else {
    87                         $_type = strstr( $path, '/' , true );
     124                        $_type = strstr( $path, '/', true );
    88125
    89126                        $type = $_type ? $_type : 'others';
     
    101138                    }
    102139
    103                     $handle = @fopen( $path, 'wb' );
     140                    $handle = fopen( $path, 'wb' );
     141                    if ( ! $handle ) {
     142                        throw new \Exception( 'Unable to create file: ' . $path );
     143                    }
     144                    $start_time = microtime( true );
    104145                    continue;
    105146                }
     
    114155                 * ========================================
    115156                 */
    116                 if ( false !== strpos( $line, 'EBWPFILE_END:' ) ) {
    117                     if ( is_resource( $handle ) ) {
    118 
    119                         /**
    120                          * Lets truncate the extra line that is being added at the end of the restored file.
    121                          * This is also the fix for issue: #217
    122                          */
    123                         $curr_pos = ftell( $handle );
    124 
    125                         if ( !! $curr_pos ) {
    126                             // Remove additional last line which gets added during archive process.
    127                             ftruncate( $handle, $curr_pos - 1 );
     157                if ( 0 === strpos( $line, 'EBWPFILE_END:' ) ) {
     158                    if ( empty( $params['current_file_name'] ) || $path !== $params['current_file_name'] ) {
     159                        if ( is_resource( $handle ) ) {
     160
     161                            /**
     162                             * Lets truncate the extra line that is being added at the end of the restored file.
     163                             * This is also the fix for issue: #217
     164                             */
     165                            $curr_pos = ftell( $handle );
     166
     167                            if ( ! ! $curr_pos ) {
     168                                // Remove additional last line which gets added during archive process.
     169                                ftruncate( $handle, $curr_pos - 1 );
     170                            }
    128171                        }
    129 
    130                         fclose( $handle );
    131172                    }
    132173
     
    144185                    }
    145186
    146                     $calc     = ( $count / $stats['total'] ) * 100 ;
     187                    ++$count;
     188
     189                    $calc     = ( $count / $stats['total'] ) * 100;
    147190                    $progress = $calc > 100 ? 100 : $calc;
    148191
    149                     $count++;
     192                    $time_taken = microtime( true ) - $start_time;
    150193
    151194                    Logs::set_proc_stat(
    152195                        array(
    153196                            'status'   => 'in-process',
    154                             'progress' => round( $progress * 0.3 + 30, 2 ), // At the end, it is always going to be 60%
     197                            'progress' => round( $progress * 0.3 + 30, 2 ), // At the end, it is always going to be 60%.
    155198                            'message'  => sprintf(
    156199                                __( 'Restoring files [ %1$s ] : %2$d%% completed', 'everest-backup' ),
     
    158201                                esc_html( $progress )
    159202                            ),
    160                             'detail' => sprintf( __( 'Restored: %1$s out of %2$s', 'everest-backup' ), esc_html( $count ), esc_html( $stats['total'] ) )
     203                            'detail'   => sprintf( __( 'Restored: %1$s out of %2$s', 'everest-backup' ), esc_html( $count ), esc_html( $stats['total'] ) ),
     204                            'params'   => $params,
     205                            'time_taken' => $time_taken,
    161206                        )
    162207                    );
     
    165210                    $line   = '';
    166211                    $path   = '';
     212
     213                    @fclose( $handle );
    167214                    $handle = false;
    168215
     
    179226                if ( $handle ) {
    180227                    fwrite( $handle, $line );
    181                 }
    182 
     228
     229                    if ( ( time() - $time ) > 10 ) {
     230
     231                        $calc     = ( $count / $stats['total'] ) * 100;
     232                        $progress = $calc > 100 ? 100 : $calc;
     233
     234                        $time_taken = microtime( true ) - $start_time;
     235
     236                        $current_position = ftell( $archiver->get_ziphandle() );
     237
     238                        Logs::set_proc_stat(
     239                            array(
     240                                'status'           => 'in-process',
     241                                'progress'         => round( $progress * 0.3 + 30, 2 ), // At the end, it is always going to be 60%.
     242                                'message'          => sprintf(
     243                                    __( 'Restoring files [ %1$s ] : %2$d%% completed', 'everest-backup' ),
     244                                    esc_html( ucwords( str_replace( '-', ' ', $type ) ) ),
     245                                    esc_html( $progress )
     246                                ),
     247                                'detail'           => sprintf( __( 'Restored: %1$s out of %2$s', 'everest-backup' ), esc_html( $count ), esc_html( $stats['total'] ) ),
     248                                'current_position' => $current_position,
     249                                'current_file_name' => $path,
     250                                'current_file_seek' => ftell( $handle ),
     251                                'next'             => 'extraction', // Set next to same.
     252                                'count'            => $count, // current count.
     253                                'time_taken'       => $time_taken,
     254                            )
     255                        );
     256                        return;
     257                    }
     258                }
    183259            }
    184260
     
    200276                    esc_html( human_time_diff( $timer_start ) )
    201277                ),
    202                 'detail' => 'yes' === $delete_after_restore ? __( 'Removing uploaded archive file', 'everest-backup' ) : __( 'Keeping uploaded archive file.', 'everest-backup' ),
    203                 'next'   => 'wrapup' // Set next.
     278                'detail'   => ( 'yes' === $delete_after_restore ) ? __( 'Removing uploaded archive file', 'everest-backup' ) : __( 'Keeping uploaded archive file.', 'everest-backup' ),
     279                'next'     => 'wrapup', // Set next.
    204280            )
    205281        );
     
    208284            unlink( $metadata['FilePath'] );
    209285        }
    210 
    211286    }
    212 
    213287}
    214 
  • everest-backup/trunk/inc/traits/trait-import.php

    r2924700 r3032524  
    3232        self::$params = apply_filters( 'everest_backup_filter_restore_params', $params );
    3333
    34         self::run();
     34        self::run( self::$params );
    3535
    3636        everest_backup_send_json( self::$params );
  • everest-backup/trunk/languages/everest-backup.pot

    r3005651 r3032524  
    1 # Copyright (C) 2023 Everest Backup
     1# Copyright (C) 2024 Everest Backup
    22# This file is distributed under the same license as the Everest Backup package.
    33msgid ""
     
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    9 "POT-Creation-Date: 2023-12-05 04:55+0000\n"
     9"POT-Creation-Date: 2024-02-07 05:55+0000\n"
    1010"X-Poedit-Basepath: ..\n"
    1111"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
     
    236236msgstr ""
    237237
    238 #: ../inc/classes/class-ajax.php:200, ../inc/classes/class-ajax.php:223, ../inc/classes/class-ajax.php:258, ../inc/classes/class-ajax.php:297
     238#: ../inc/classes/class-ajax.php:200, ../inc/classes/class-ajax.php:229, ../inc/classes/class-ajax.php:264, ../inc/classes/class-ajax.php:303
    239239msgid "Current user does not have permission to upload files."
    240240msgstr ""
    241241
     242#: ../inc/classes/class-ajax.php:208
     243msgid "It seems current uploaded file seems to be tampered with."
     244msgstr ""
     245
    242246#. translators: %s is the restore start time.
    243 #: ../inc/classes/class-ajax.php:319
     247#: ../inc/classes/class-ajax.php:325
    244248msgid "Restore started at: %s"
    245249msgstr ""
    246250
    247 #: ../inc/classes/class-ajax.php:325
     251#: ../inc/classes/class-ajax.php:331
    248252msgid "Extracting package"
    249253msgstr ""
    250254
    251 #: ../inc/classes/class-ajax.php:344
     255#: ../inc/classes/class-ajax.php:350
    252256msgid "Cleaning remaining extracted files"
    253257msgstr ""
    254258
    255259#. translators: %s is the restore completed time.
    256 #: ../inc/classes/class-ajax.php:351
     260#: ../inc/classes/class-ajax.php:357
    257261msgid "Restore completed at: %s"
    258262msgstr ""
    259263
    260264#. translators: %s is the total restore time.
    261 #: ../inc/classes/class-ajax.php:354
     265#: ../inc/classes/class-ajax.php:360
    262266msgid "Total time: %s"
    263267msgstr ""
    264268
    265 #: ../inc/classes/class-ajax.php:356, ../inc/core/import/class-wrapup.php:147
     269#: ../inc/classes/class-ajax.php:362, ../inc/core/import/class-wrapup.php:147
    266270msgid "Restore completed."
    267271msgstr ""
     
    542546msgstr ""
    543547
    544 #: ../inc/classes/class-filesystem.php:333
     548#: ../inc/classes/class-filesystem.php:168
     549msgid "Source and destination same (during upload save)."
     550msgstr ""
     551
     552#: ../inc/classes/class-filesystem.php:174
     553msgid "Uploaded file cannot be verified as a file (during upload save)."
     554msgstr ""
     555
     556#: ../inc/classes/class-filesystem.php:192
     557msgid "File with same name already exists (during upload save)."
     558msgstr ""
     559
     560#: ../inc/classes/class-filesystem.php:343
    545561msgid "Failed to check free space using custom function, probably no space left on device. Aborting process"
    546562msgstr ""
     
    931947msgstr ""
    932948
    933 #: ../inc/core/export/class-setup.php:121, ../inc/core/import/class-check.php:221
     949#: ../inc/core/export/class-setup.php:121, ../inc/core/import/class-check.php:226
    934950msgid "This error is generated manually using Everest Backup debugger."
    935951msgstr ""
     
    955971msgstr ""
    956972
    957 #: ../inc/core/export/class-wrapup.php:116
     973#: ../inc/core/export/class-wrapup.php:119
    958974msgid "Wrapping things up"
    959975msgstr ""
    960976
    961 #: ../inc/core/export/class-wrapup.php:125
     977#: ../inc/core/export/class-wrapup.php:127
    962978msgid "Files list not found, aborting backup."
    963979msgstr ""
    964980
    965 #: ../inc/core/export/class-wrapup.php:133
     981#: ../inc/core/export/class-wrapup.php:139
    966982msgid "Checking available space"
    967983msgstr ""
    968984
    969 #: ../inc/core/export/class-wrapup.php:142
     985#: ../inc/core/export/class-wrapup.php:147
    970986msgid "Required space not available, aborting backup."
    971987msgstr ""
    972988
    973 #: ../inc/core/export/class-wrapup.php:150
     989#: ../inc/core/export/class-wrapup.php:156
    974990msgid "Space available, archiving files"
    975991msgstr ""
    976992
    977 #: ../inc/core/export/class-wrapup.php:200
     993#: ../inc/core/export/class-wrapup.php:218
    978994msgid "Archiving files: %d%% completed"
    979995msgstr ""
    980996
    981 #: ../inc/core/export/class-wrapup.php:203
     997#: ../inc/core/export/class-wrapup.php:221
    982998msgid "Archived: %1$s out of %2$s"
    983999msgstr ""
    9841000
    985 #: ../inc/core/export/class-wrapup.php:232
     1001#: ../inc/core/export/class-wrapup.php:278
    9861002msgid "Time elapsed: %s"
    9871003msgstr ""
    9881004
    989 #: ../inc/core/export/class-wrapup.php:234
     1005#: ../inc/core/export/class-wrapup.php:280
    9901006msgid "File size: %s"
    9911007msgstr ""
    9921008
    993 #: ../inc/core/export/class-wrapup.php:236
     1009#: ../inc/core/export/class-wrapup.php:282
    9941010msgid "Backup completed"
    9951011msgstr ""
    9961012
    997 #: ../inc/core/import/class-check.php:35
     1013#: ../inc/core/import/class-check.php:39
    9981014msgid "Preparing package"
    9991015msgstr ""
    10001016
    1001 #: ../inc/core/import/class-check.php:81
     1017#: ../inc/core/import/class-check.php:85
    10021018msgid "Restoring: %s"
    10031019msgstr ""
    10041020
    1005 #: ../inc/core/import/class-check.php:88
    1006 msgid "Your backup file requires Everest Backup version 1.1.7 or earlier, aborting restore."
    1007 msgstr ""
    1008 
    1009 #: ../inc/core/import/class-check.php:102
    1010 msgid "Uploaded backup is either corrupted or not supported. Metadata missing, aborting restore."
    1011 msgstr ""
    1012 
    1013 #: ../inc/core/import/class-check.php:110
     1021#: ../inc/core/import/class-check.php:115
    10141022msgid "Total files to restore: %s. Checking available space..."
    10151023msgstr ""
    10161024
    1017 #: ../inc/core/import/class-check.php:115
     1025#: ../inc/core/import/class-check.php:120
    10181026msgid "Required space not available, aborting restore."
    10191027msgstr ""
    10201028
    1021 #: ../inc/core/import/class-check.php:123
     1029#: ../inc/core/import/class-check.php:128
    10221030msgid "Space available"
    10231031msgstr ""
    10241032
    1025 #: ../inc/core/import/class-check.php:143
     1033#: ../inc/core/import/class-check.php:148
    10261034msgid "Modules excluded: %s"
    10271035msgstr ""
    10281036
    1029 #: ../inc/core/import/class-check.php:163
     1037#: ../inc/core/import/class-check.php:168
    10301038msgid "Backup file created: %s ago"
    10311039msgstr ""
    10321040
    1033 #: ../inc/core/import/class-check.php:180
     1041#: ../inc/core/import/class-check.php:185
    10341042msgid "Checking PHP version"
    10351043msgstr ""
    10361044
    1037 #: ../inc/core/import/class-check.php:193
     1045#: ../inc/core/import/class-check.php:198
    10381046msgid "Attention: You are restoring from PHP %1$s to %2$s"
    10391047msgstr ""
    10401048
    1041 #: ../inc/core/import/class-extraction.php:49
     1049#: ../inc/core/import/class-extraction.php:50
    10421050msgid "Archive file path missing from metadata. Aborting restore."
    10431051msgstr ""
    10441052
    1045 #: ../inc/core/import/class-extraction.php:52
     1053#: ../inc/core/import/class-extraction.php:53
    10461054msgid "Restoring files"
    10471055msgstr ""
    10481056
    1049 #: ../inc/core/import/class-extraction.php:156
     1057#: ../inc/core/import/class-extraction.php:199, ../inc/core/import/class-extraction.php:243
    10501058msgid "Restoring files [ %1$s ] : %2$d%% completed"
    10511059msgstr ""
    10521060
    1053 #: ../inc/core/import/class-extraction.php:160
     1061#: ../inc/core/import/class-extraction.php:203, ../inc/core/import/class-extraction.php:247
    10541062msgid "Restored: %1$s out of %2$s"
    10551063msgstr ""
    10561064
    1057 #: ../inc/core/import/class-extraction.php:198
     1065#: ../inc/core/import/class-extraction.php:274
    10581066msgid "Restored %1$d files. Time taken: %2$s"
    10591067msgstr ""
    10601068
    1061 #: ../inc/core/import/class-extraction.php:202
     1069#: ../inc/core/import/class-extraction.php:278
    10621070msgid "Removing uploaded archive file"
    10631071msgstr ""
    10641072
    1065 #: ../inc/core/import/class-extraction.php:202
     1073#: ../inc/core/import/class-extraction.php:278
    10661074msgid "Keeping uploaded archive file."
    10671075msgstr ""
  • everest-backup/trunk/readme.txt

    r3005651 r3032524  
    66Tested up to: 6.4
    77Requires PHP: 7.4
    8 Stable tag: 2.2.3
     8Stable tag: 2.2.4
    99License: GPLv3 or later
    1010License URI: http://www.gnu.org/licenses/gpl-3.0.html
  • everest-backup/trunk/vendor/autoload.php

    r2980292 r3032524  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderIniteb33690ef56a03552354de09656002f2::getLoader();
     25return ComposerAutoloaderInitb56e537aed8c5b2292774101d9234d11::getLoader();
  • everest-backup/trunk/vendor/composer/autoload_classmap.php

    r3001767 r3032524  
    77
    88return array(
    9     'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
    109    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
    11     'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
    12     'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
    13     'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
    14     'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
    1510);
  • everest-backup/trunk/vendor/composer/autoload_psr4.php

    r3001767 r3032524  
    77
    88return array(
    9     'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
    109    'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
    1110    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
  • everest-backup/trunk/vendor/composer/autoload_real.php

    r3001767 r3032524  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderIniteb33690ef56a03552354de09656002f2
     5class ComposerAutoloaderInitb56e537aed8c5b2292774101d9234d11
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderIniteb33690ef56a03552354de09656002f2', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInitb56e537aed8c5b2292774101d9234d11', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderIniteb33690ef56a03552354de09656002f2', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInitb56e537aed8c5b2292774101d9234d11', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticIniteb33690ef56a03552354de09656002f2::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInitb56e537aed8c5b2292774101d9234d11::getInitializer($loader));
    3333
    3434        $loader->register(true);
    35 
    36         $filesToLoad = \Composer\Autoload\ComposerStaticIniteb33690ef56a03552354de09656002f2::$files;
    37         $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    38             if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
    39                 $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    40 
    41                 require $file;
    42             }
    43         }, null, null);
    44         foreach ($filesToLoad as $fileIdentifier => $file) {
    45             $requireFile($fileIdentifier, $file);
    46         }
    4735
    4836        return $loader;
  • everest-backup/trunk/vendor/composer/autoload_static.php

    r3001767 r3032524  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticIniteb33690ef56a03552354de09656002f2
     7class ComposerStaticInitb56e537aed8c5b2292774101d9234d11
    88{
    9     public static $files = array (
    10         '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
    11         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
    12     );
    13 
    149    public static $prefixLengthsPsr4 = array (
    1510        'S' =>
    1611        array (
    17             'Symfony\\Polyfill\\Php80\\' => 23,
    1812            'Symfony\\Component\\Finder\\' => 25,
    1913        ),
     
    2620
    2721    public static $prefixDirsPsr4 = array (
    28         'Symfony\\Polyfill\\Php80\\' =>
    29         array (
    30             0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
    31         ),
    3222        'Symfony\\Component\\Finder\\' =>
    3323        array (
     
    4535
    4636    public static $classMap = array (
    47         'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
    4837        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
    49         'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
    50         'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
    51         'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
    52         'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
    5338    );
    5439
     
    5641    {
    5742        return \Closure::bind(function () use ($loader) {
    58             $loader->prefixLengthsPsr4 = ComposerStaticIniteb33690ef56a03552354de09656002f2::$prefixLengthsPsr4;
    59             $loader->prefixDirsPsr4 = ComposerStaticIniteb33690ef56a03552354de09656002f2::$prefixDirsPsr4;
    60             $loader->classMap = ComposerStaticIniteb33690ef56a03552354de09656002f2::$classMap;
     43            $loader->prefixLengthsPsr4 = ComposerStaticInitb56e537aed8c5b2292774101d9234d11::$prefixLengthsPsr4;
     44            $loader->prefixDirsPsr4 = ComposerStaticInitb56e537aed8c5b2292774101d9234d11::$prefixDirsPsr4;
     45            $loader->classMap = ComposerStaticInitb56e537aed8c5b2292774101d9234d11::$classMap;
    6146
    6247        }, null, ClassLoader::class);
  • everest-backup/trunk/vendor/composer/installed.json

    r3001767 r3032524  
    149149        },
    150150        {
    151             "name": "symfony/deprecation-contracts",
    152             "version": "v2.5.2",
    153             "version_normalized": "2.5.2.0",
     151            "name": "symfony/finder",
     152            "version": "v6.0.19",
     153            "version_normalized": "6.0.19.0",
    154154            "source": {
    155155                "type": "git",
    156                 "url": "https://github.com/symfony/deprecation-contracts.git",
    157                 "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
     156                "url": "https://github.com/symfony/finder.git",
     157                "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11"
    158158            },
    159159            "dist": {
    160160                "type": "zip",
    161                 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
    162                 "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
     161                "url": "https://api.github.com/repos/symfony/finder/zipball/5cc9cac6586fc0c28cd173780ca696e419fefa11",
     162                "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11",
    163163                "shasum": ""
    164164            },
    165165            "require": {
    166                 "php": ">=7.1"
    167             },
    168             "time": "2022-01-02T09:53:40+00:00",
     166                "php": ">=8.0.2"
     167            },
     168            "time": "2023-01-20T17:44:14+00:00",
    169169            "type": "library",
    170             "extra": {
    171                 "branch-alias": {
    172                     "dev-main": "2.5-dev"
    173                 },
    174                 "thanks": {
    175                     "name": "symfony/contracts",
    176                     "url": "https://github.com/symfony/contracts"
    177                 }
    178             },
    179170            "installation-source": "dist",
    180171            "autoload": {
    181                 "files": [
    182                     "function.php"
     172                "psr-4": {
     173                    "Symfony\\Component\\Finder\\": ""
     174                },
     175                "exclude-from-classmap": [
     176                    "/Tests/"
    183177                ]
    184178            },
     
    189183            "authors": [
    190184                {
    191                     "name": "Nicolas Grekas",
    192                     "email": "p@tchwork.com"
    193                 },
    194                 {
    195                     "name": "Symfony Community",
    196                     "homepage": "https://symfony.com/contributors"
    197                 }
    198             ],
    199             "description": "A generic function and convention to trigger deprecation notices",
    200             "homepage": "https://symfony.com",
    201             "support": {
    202                 "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
    203             },
    204             "funding": [
    205                 {
    206                     "url": "https://symfony.com/sponsor",
    207                     "type": "custom"
    208                 },
    209                 {
    210                     "url": "https://github.com/fabpot",
    211                     "type": "github"
    212                 },
    213                 {
    214                     "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    215                     "type": "tidelift"
    216                 }
    217             ],
    218             "install-path": "../symfony/deprecation-contracts"
    219         },
    220         {
    221             "name": "symfony/finder",
    222             "version": "v5.4.27",
    223             "version_normalized": "5.4.27.0",
    224             "source": {
    225                 "type": "git",
    226                 "url": "https://github.com/symfony/finder.git",
    227                 "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d"
    228             },
    229             "dist": {
    230                 "type": "zip",
    231                 "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d",
    232                 "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d",
    233                 "shasum": ""
    234             },
    235             "require": {
    236                 "php": ">=7.2.5",
    237                 "symfony/deprecation-contracts": "^2.1|^3",
    238                 "symfony/polyfill-php80": "^1.16"
    239             },
    240             "time": "2023-07-31T08:02:31+00:00",
    241             "type": "library",
    242             "installation-source": "dist",
    243             "autoload": {
    244                 "psr-4": {
    245                     "Symfony\\Component\\Finder\\": ""
    246                 },
    247                 "exclude-from-classmap": [
    248                     "/Tests/"
    249                 ]
    250             },
    251             "notification-url": "https://packagist.org/downloads/",
    252             "license": [
    253                 "MIT"
    254             ],
    255             "authors": [
    256                 {
    257185                    "name": "Fabien Potencier",
    258186                    "email": "fabien@symfony.com"
     
    266194            "homepage": "https://symfony.com",
    267195            "support": {
    268                 "source": "https://github.com/symfony/finder/tree/v5.4.27"
     196                "source": "https://github.com/symfony/finder/tree/v6.0.19"
    269197            },
    270198            "funding": [
     
    283211            ],
    284212            "install-path": "../symfony/finder"
    285         },
    286         {
    287             "name": "symfony/polyfill-php80",
    288             "version": "v1.28.0",
    289             "version_normalized": "1.28.0.0",
    290             "source": {
    291                 "type": "git",
    292                 "url": "https://github.com/symfony/polyfill-php80.git",
    293                 "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
    294             },
    295             "dist": {
    296                 "type": "zip",
    297                 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
    298                 "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
    299                 "shasum": ""
    300             },
    301             "require": {
    302                 "php": ">=7.1"
    303             },
    304             "time": "2023-01-26T09:26:14+00:00",
    305             "type": "library",
    306             "extra": {
    307                 "branch-alias": {
    308                     "dev-main": "1.28-dev"
    309                 },
    310                 "thanks": {
    311                     "name": "symfony/polyfill",
    312                     "url": "https://github.com/symfony/polyfill"
    313                 }
    314             },
    315             "installation-source": "dist",
    316             "autoload": {
    317                 "files": [
    318                     "bootstrap.php"
    319                 ],
    320                 "psr-4": {
    321                     "Symfony\\Polyfill\\Php80\\": ""
    322                 },
    323                 "classmap": [
    324                     "Resources/stubs"
    325                 ]
    326             },
    327             "notification-url": "https://packagist.org/downloads/",
    328             "license": [
    329                 "MIT"
    330             ],
    331             "authors": [
    332                 {
    333                     "name": "Ion Bazan",
    334                     "email": "ion.bazan@gmail.com"
    335                 },
    336                 {
    337                     "name": "Nicolas Grekas",
    338                     "email": "p@tchwork.com"
    339                 },
    340                 {
    341                     "name": "Symfony Community",
    342                     "homepage": "https://symfony.com/contributors"
    343                 }
    344             ],
    345             "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
    346             "homepage": "https://symfony.com",
    347             "keywords": [
    348                 "compatibility",
    349                 "polyfill",
    350                 "portable",
    351                 "shim"
    352             ],
    353             "support": {
    354                 "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
    355             },
    356             "funding": [
    357                 {
    358                     "url": "https://symfony.com/sponsor",
    359                     "type": "custom"
    360                 },
    361                 {
    362                     "url": "https://github.com/fabpot",
    363                     "type": "github"
    364                 },
    365                 {
    366                     "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    367                     "type": "tidelift"
    368                 }
    369             ],
    370             "install-path": "../symfony/polyfill-php80"
    371213        }
    372214    ],
  • everest-backup/trunk/vendor/composer/installed.php

    r3005651 r3032524  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => '3ba534af007bcedab00d9ffc5508dce487a9af72',
     6        'reference' => '543205581e244a40f12e8411f52d8d3216f184d5',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => '3ba534af007bcedab00d9ffc5508dce487a9af72',
     16            'reference' => '543205581e244a40f12e8411f52d8d3216f184d5',
    1717            'type' => 'wordpress-plugin',
    1818            'install_path' => __DIR__ . '/../../',
     
    4040            'dev_requirement' => false,
    4141        ),
    42         'symfony/deprecation-contracts' => array(
    43             'pretty_version' => 'v2.5.2',
    44             'version' => '2.5.2.0',
    45             'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
    46             'type' => 'library',
    47             'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
    48             'aliases' => array(),
    49             'dev_requirement' => false,
    50         ),
    5142        'symfony/finder' => array(
    52             'pretty_version' => 'v5.4.27',
    53             'version' => '5.4.27.0',
    54             'reference' => 'ff4bce3c33451e7ec778070e45bd23f74214cd5d',
     43            'pretty_version' => 'v6.0.19',
     44            'version' => '6.0.19.0',
     45            'reference' => '5cc9cac6586fc0c28cd173780ca696e419fefa11',
    5546            'type' => 'library',
    5647            'install_path' => __DIR__ . '/../symfony/finder',
     
    5849            'dev_requirement' => false,
    5950        ),
    60         'symfony/polyfill-php80' => array(
    61             'pretty_version' => 'v1.28.0',
    62             'version' => '1.28.0.0',
    63             'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5',
    64             'type' => 'library',
    65             'install_path' => __DIR__ . '/../symfony/polyfill-php80',
    66             'aliases' => array(),
    67             'dev_requirement' => false,
    68         ),
    6951    ),
    7052);
  • everest-backup/trunk/vendor/composer/platform_check.php

    r3001767 r3032524  
    55$issues = array();
    66
    7 if (!(PHP_VERSION_ID >= 70400)) {
    8     $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
     7if (!(PHP_VERSION_ID >= 80002)) {
     8    $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.';
    99}
    1010
  • everest-backup/trunk/vendor/symfony/finder/CHANGELOG.md

    r3001767 r3032524  
    11CHANGELOG
    22=========
     3
     46.0
     5---
     6
     7 * Remove `Comparator::setTarget()` and `Comparator::setOperator()`
    38
    495.4.0
  • everest-backup/trunk/vendor/symfony/finder/Comparator/Comparator.php

    r3001767 r3032524  
    1717class Comparator
    1818{
    19     private $target;
    20     private $operator = '==';
     19    private string $target;
     20    private string $operator;
    2121
    22     public function __construct(string $target = null, string $operator = '==')
     22    public function __construct(string $target, string $operator = '==')
    2323    {
    24         if (null === $target) {
    25             trigger_deprecation('symfony/finder', '5.4', 'Constructing a "%s" without setting "$target" is deprecated.', __CLASS__);
     24        if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) {
     25            throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator));
    2626        }
    2727
    2828        $this->target = $target;
    29         $this->doSetOperator($operator);
     29        $this->operator = $operator;
    3030    }
    3131
    3232    /**
    3333     * Gets the target value.
    34      *
    35      * @return string
    3634     */
    37     public function getTarget()
     35    public function getTarget(): string
    3836    {
    39         if (null === $this->target) {
    40             trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__);
    41         }
    42 
    4337        return $this->target;
    4438    }
    4539
    4640    /**
    47      * @deprecated set the target via the constructor instead
     41     * Gets the comparison operator.
    4842     */
    49     public function setTarget(string $target)
    50     {
    51         trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the target via the constructor instead.', __METHOD__);
    52 
    53         $this->target = $target;
    54     }
    55 
    56     /**
    57      * Gets the comparison operator.
    58      *
    59      * @return string
    60      */
    61     public function getOperator()
     43    public function getOperator(): string
    6244    {
    6345        return $this->operator;
     
    6547
    6648    /**
    67      * Sets the comparison operator.
    68      *
    69      * @throws \InvalidArgumentException
    70      *
    71      * @deprecated set the operator via the constructor instead
     49     * Tests against the target.
    7250     */
    73     public function setOperator(string $operator)
     51    public function test(mixed $test): bool
    7452    {
    75         trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the operator via the constructor instead.', __METHOD__);
    76 
    77         $this->doSetOperator('' === $operator ? '==' : $operator);
    78     }
    79 
    80     /**
    81      * Tests against the target.
    82      *
    83      * @param mixed $test A test value
    84      *
    85      * @return bool
    86      */
    87     public function test($test)
    88     {
    89         if (null === $this->target) {
    90             trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__);
    91         }
    92 
    9353        switch ($this->operator) {
    9454            case '>':
     
    10666        return $test == $this->target;
    10767    }
    108 
    109     private function doSetOperator(string $operator): void
    110     {
    111         if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) {
    112             throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator));
    113         }
    114 
    115         $this->operator = $operator;
    116     }
    11768}
  • everest-backup/trunk/vendor/symfony/finder/Comparator/NumberComparator.php

    r2980292 r3032524  
    3636{
    3737    /**
    38      * @param string|null $test A comparison string or null
     38     * @param string|int $test A comparison string or an integer
    3939     *
    4040     * @throws \InvalidArgumentException If the test is not understood
  • everest-backup/trunk/vendor/symfony/finder/Finder.php

    r3001767 r3032524  
    4646    public const IGNORE_VCS_IGNORED_FILES = 4;
    4747
    48     private $mode = 0;
    49     private $names = [];
    50     private $notNames = [];
    51     private $exclude = [];
    52     private $filters = [];
    53     private $depths = [];
    54     private $sizes = [];
    55     private $followLinks = false;
    56     private $reverseSorting = false;
    57     private $sort = false;
    58     private $ignore = 0;
    59     private $dirs = [];
    60     private $dates = [];
    61     private $iterators = [];
    62     private $contains = [];
    63     private $notContains = [];
    64     private $paths = [];
    65     private $notPaths = [];
    66     private $ignoreUnreadableDirs = false;
    67 
    68     private static $vcsPatterns = ['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'];
     48    private int $mode = 0;
     49    private array $names = [];
     50    private array $notNames = [];
     51    private array $exclude = [];
     52    private array $filters = [];
     53    private array $depths = [];
     54    private array $sizes = [];
     55    private bool $followLinks = false;
     56    private bool $reverseSorting = false;
     57    private \Closure|int|false $sort = false;
     58    private int $ignore = 0;
     59    private array $dirs = [];
     60    private array $dates = [];
     61    private array $iterators = [];
     62    private array $contains = [];
     63    private array $notContains = [];
     64    private array $paths = [];
     65    private array $notPaths = [];
     66    private bool $ignoreUnreadableDirs = false;
     67
     68    private static array $vcsPatterns = ['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'];
    6969
    7070    public function __construct()
     
    7575    /**
    7676     * Creates a new Finder.
    77      *
    78      * @return static
    79      */
    80     public static function create()
     77     */
     78    public static function create(): static
    8179    {
    8280        return new static();
     
    8886     * @return $this
    8987     */
    90     public function directories()
     88    public function directories(): static
    9189    {
    9290        $this->mode = Iterator\FileTypeFilterIterator::ONLY_DIRECTORIES;
     
    10098     * @return $this
    10199     */
    102     public function files()
     100    public function files(): static
    103101    {
    104102        $this->mode = Iterator\FileTypeFilterIterator::ONLY_FILES;
     
    123121     * @see NumberComparator
    124122     */
    125     public function depth($levels)
     123    public function depth(string|int|array $levels): static
    126124    {
    127125        foreach ((array) $levels as $level) {
     
    151149     * @see DateComparator
    152150     */
    153     public function date($dates)
     151    public function date(string|array $dates): static
    154152    {
    155153        foreach ((array) $dates as $date) {
     
    165163     * You can use patterns (delimited with / sign), globs or simple strings.
    166164     *
    167      *     $finder->name('/\.php$/')
    168      *     $finder->name('*.php') // same as above, without dot files
     165     *     $finder->name('*.php')
     166     *     $finder->name('/\.php$/') // same as above
    169167     *     $finder->name('test.php')
    170168     *     $finder->name(['test.py', 'test.php'])
     
    176174     * @see FilenameFilterIterator
    177175     */
    178     public function name($patterns)
     176    public function name(string|array $patterns): static
    179177    {
    180178        $this->names = array_merge($this->names, (array) $patterns);
     
    192190     * @see FilenameFilterIterator
    193191     */
    194     public function notName($patterns)
     192    public function notName(string|array $patterns): static
    195193    {
    196194        $this->notNames = array_merge($this->notNames, (array) $patterns);
     
    214212     * @see FilecontentFilterIterator
    215213     */
    216     public function contains($patterns)
     214    public function contains(string|array $patterns): static
    217215    {
    218216        $this->contains = array_merge($this->contains, (array) $patterns);
     
    236234     * @see FilecontentFilterIterator
    237235     */
    238     public function notContains($patterns)
     236    public function notContains(string|array $patterns): static
    239237    {
    240238        $this->notContains = array_merge($this->notContains, (array) $patterns);
     
    260258     * @see FilenameFilterIterator
    261259     */
    262     public function path($patterns)
     260    public function path(string|array $patterns): static
    263261    {
    264262        $this->paths = array_merge($this->paths, (array) $patterns);
     
    284282     * @see FilenameFilterIterator
    285283     */
    286     public function notPath($patterns)
     284    public function notPath(string|array $patterns): static
    287285    {
    288286        $this->notPaths = array_merge($this->notPaths, (array) $patterns);
     
    306304     * @see NumberComparator
    307305     */
    308     public function size($sizes)
     306    public function size(string|int|array $sizes): static
    309307    {
    310308        foreach ((array) $sizes as $size) {
     
    328326     * @see ExcludeDirectoryFilterIterator
    329327     */
    330     public function exclude($dirs)
     328    public function exclude(string|array $dirs): static
    331329    {
    332330        $this->exclude = array_merge($this->exclude, (array) $dirs);
     
    344342     * @see ExcludeDirectoryFilterIterator
    345343     */
    346     public function ignoreDotFiles(bool $ignoreDotFiles)
     344    public function ignoreDotFiles(bool $ignoreDotFiles): static
    347345    {
    348346        if ($ignoreDotFiles) {
     
    364362     * @see ExcludeDirectoryFilterIterator
    365363     */
    366     public function ignoreVCS(bool $ignoreVCS)
     364    public function ignoreVCS(bool $ignoreVCS): static
    367365    {
    368366        if ($ignoreVCS) {
     
    382380     * @return $this
    383381     */
    384     public function ignoreVCSIgnored(bool $ignoreVCSIgnored)
     382    public function ignoreVCSIgnored(bool $ignoreVCSIgnored): static
    385383    {
    386384        if ($ignoreVCSIgnored) {
     
    400398     * @param string|string[] $pattern VCS patterns to ignore
    401399     */
    402     public static function addVCSPattern($pattern)
     400    public static function addVCSPattern(string|array $pattern)
    403401    {
    404402        foreach ((array) $pattern as $p) {
     
    420418     * @see SortableIterator
    421419     */
    422     public function sort(\Closure $closure)
     420    public function sort(\Closure $closure): static
    423421    {
    424422        $this->sort = $closure;
     
    436434     * @see SortableIterator
    437435     */
    438     public function sortByName(bool $useNaturalSort = false)
     436    public function sortByName(bool $useNaturalSort = false): static
    439437    {
    440438        $this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME;
     
    452450     * @see SortableIterator
    453451     */
    454     public function sortByType()
     452    public function sortByType(): static
    455453    {
    456454        $this->sort = Iterator\SortableIterator::SORT_BY_TYPE;
     
    470468     * @see SortableIterator
    471469     */
    472     public function sortByAccessedTime()
     470    public function sortByAccessedTime(): static
    473471    {
    474472        $this->sort = Iterator\SortableIterator::SORT_BY_ACCESSED_TIME;
     
    482480     * @return $this
    483481     */
    484     public function reverseSorting()
     482    public function reverseSorting(): static
    485483    {
    486484        $this->reverseSorting = true;
     
    502500     * @see SortableIterator
    503501     */
    504     public function sortByChangedTime()
     502    public function sortByChangedTime(): static
    505503    {
    506504        $this->sort = Iterator\SortableIterator::SORT_BY_CHANGED_TIME;
     
    520518     * @see SortableIterator
    521519     */
    522     public function sortByModifiedTime()
     520    public function sortByModifiedTime(): static
    523521    {
    524522        $this->sort = Iterator\SortableIterator::SORT_BY_MODIFIED_TIME;
     
    537535     * @see CustomFilterIterator
    538536     */
    539     public function filter(\Closure $closure)
     537    public function filter(\Closure $closure): static
    540538    {
    541539        $this->filters[] = $closure;
     
    549547     * @return $this
    550548     */
    551     public function followLinks()
     549    public function followLinks(): static
    552550    {
    553551        $this->followLinks = true;
     
    563561     * @return $this
    564562     */
    565     public function ignoreUnreadableDirs(bool $ignore = true)
     563    public function ignoreUnreadableDirs(bool $ignore = true): static
    566564    {
    567565        $this->ignoreUnreadableDirs = $ignore;
     
    579577     * @throws DirectoryNotFoundException if one of the directories does not exist
    580578     */
    581     public function in($dirs)
     579    public function in(string|array $dirs): static
    582580    {
    583581        $resolvedDirs = [];
     
    608606     * @throws \LogicException if the in() method has not been called
    609607     */
    610     #[\ReturnTypeWillChange]
    611     public function getIterator()
     608    public function getIterator(): \Iterator
    612609    {
    613610        if (0 === \count($this->dirs) && 0 === \count($this->iterators)) {
     
    652649     * @throws \InvalidArgumentException when the given argument is not iterable
    653650     */
    654     public function append(iterable $iterator)
     651    public function append(iterable $iterator): static
    655652    {
    656653        if ($iterator instanceof \IteratorAggregate) {
     
    674671    /**
    675672     * Check if any results were found.
    676      *
    677      * @return bool
    678      */
    679     public function hasResults()
     673     */
     674    public function hasResults(): bool
    680675    {
    681676        foreach ($this->getIterator() as $_) {
     
    688683    /**
    689684     * Counts all the results collected by the iterators.
    690      *
    691      * @return int
    692      */
    693     #[\ReturnTypeWillChange]
    694     public function count()
     685     */
     686    public function count(): int
    695687    {
    696688        return iterator_count($this->getIterator());
  • everest-backup/trunk/vendor/symfony/finder/Glob.php

    r3001767 r3032524  
    3838    /**
    3939     * Returns a regexp which is the equivalent of the glob pattern.
    40      *
    41      * @return string
    4240     */
    43     public static function toRegex(string $glob, bool $strictLeadingDot = true, bool $strictWildcardSlash = true, string $delimiter = '#')
     41    public static function toRegex(string $glob, bool $strictLeadingDot = true, bool $strictWildcardSlash = true, string $delimiter = '#'): string
    4442    {
    4543        $firstByte = true;
  • everest-backup/trunk/vendor/symfony/finder/Iterator/CustomFilterIterator.php

    r3001767 r3032524  
    2424class CustomFilterIterator extends \FilterIterator
    2525{
    26     private $filters = [];
     26    private array $filters = [];
    2727
    2828    /**
     
    4646    /**
    4747     * Filters the iterator values.
    48      *
    49      * @return bool
    5048     */
    51     #[\ReturnTypeWillChange]
    52     public function accept()
     49    public function accept(): bool
    5350    {
    5451        $fileinfo = $this->current();
  • everest-backup/trunk/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php

    r3001767 r3032524  
    2323class DateRangeFilterIterator extends \FilterIterator
    2424{
    25     private $comparators = [];
     25    private array $comparators = [];
    2626
    2727    /**
     
    3838    /**
    3939     * Filters the iterator values.
    40      *
    41      * @return bool
    4240     */
    43     #[\ReturnTypeWillChange]
    44     public function accept()
     41    public function accept(): bool
    4542    {
    4643        $fileinfo = $this->current();
  • everest-backup/trunk/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php

    r3001767 r3032524  
    2424class DepthRangeFilterIterator extends \FilterIterator
    2525{
    26     private $minDepth = 0;
     26    private int $minDepth = 0;
    2727
    2828    /**
     
    4141    /**
    4242     * Filters the iterator values.
    43      *
    44      * @return bool
    4543     */
    46     #[\ReturnTypeWillChange]
    47     public function accept()
     44    public function accept(): bool
    4845    {
    4946        return $this->getInnerIterator()->getDepth() >= $this->minDepth;
  • everest-backup/trunk/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php

    r3001767 r3032524  
    1818 *
    1919 * @extends \FilterIterator<string, \SplFileInfo>
    20  *
    2120 * @implements \RecursiveIterator<string, \SplFileInfo>
    2221 */
    2322class ExcludeDirectoryFilterIterator extends \FilterIterator implements \RecursiveIterator
    2423{
    25     private $iterator;
    26     private $isRecursive;
    27     private $excludedDirs = [];
    28     private $excludedPattern;
     24    private \Iterator $iterator;
     25    private bool $isRecursive;
     26    private array $excludedDirs = [];
     27    private ?string $excludedPattern = null;
    2928
    3029    /**
     
    5453    /**
    5554     * Filters the iterator values.
    56      *
    57      * @return bool
    5855     */
    59     #[\ReturnTypeWillChange]
    60     public function accept()
     56    public function accept(): bool
    6157    {
    6258        if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) {
     
    7470    }
    7571
    76     /**
    77      * @return bool
    78      */
    79     #[\ReturnTypeWillChange]
    80     public function hasChildren()
     72    public function hasChildren(): bool
    8173    {
    8274        return $this->isRecursive && $this->iterator->hasChildren();
    8375    }
    8476
    85     /**
    86      * @return self
    87      */
    88     #[\ReturnTypeWillChange]
    89     public function getChildren()
     77    public function getChildren(): self
    9078    {
    9179        $children = new self($this->iterator->getChildren(), []);
  • everest-backup/trunk/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php

    r3001767 r3032524  
    2424    public const ONLY_DIRECTORIES = 2;
    2525
    26     private $mode;
     26    private int $mode;
    2727
    2828    /**
     
    3939    /**
    4040     * Filters the iterator values.
    41      *
    42      * @return bool
    4341     */
    44     #[\ReturnTypeWillChange]
    45     public function accept()
     42    public function accept(): bool
    4643    {
    4744        $fileinfo = $this->current();
  • everest-backup/trunk/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php

    r3001767 r3032524  
    2424    /**
    2525     * Filters the iterator values.
    26      *
    27      * @return bool
    2826     */
    29     #[\ReturnTypeWillChange]
    30     public function accept()
     27    public function accept(): bool
    3128    {
    3229        if (!$this->matchRegexps && !$this->noMatchRegexps) {
     
    5249     *
    5350     * @param string $str Pattern: string or regexp
    54      *
    55      * @return string
    5651     */
    57     protected function toRegex(string $str)
     52    protected function toRegex(string $str): string
    5853    {
    5954        return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/';
  • everest-backup/trunk/vendor/symfony/finder/Iterator/FilenameFilterIterator.php

    r3001767 r3032524  
    2525    /**
    2626     * Filters the iterator values.
    27      *
    28      * @return bool
    2927     */
    30     #[\ReturnTypeWillChange]
    31     public function accept()
     28    public function accept(): bool
    3229    {
    3330        return $this->isAccepted($this->current()->getFilename());
     
    4138     *
    4239     * @param string $str Pattern: glob or regexp
    43      *
    44      * @return string
    4540     */
    46     protected function toRegex(string $str)
     41    protected function toRegex(string $str): string
    4742    {
    4843        return $this->isRegex($str) ? $str : Glob::toRegex($str);
  • everest-backup/trunk/vendor/symfony/finder/Iterator/LazyIterator.php

    r3001767 r3032524  
    1919class LazyIterator implements \IteratorAggregate
    2020{
    21     private $iteratorFactory;
     21    private \Closure $iteratorFactory;
    2222
    2323    public function __construct(callable $iteratorFactory)
    2424    {
    25         $this->iteratorFactory = $iteratorFactory;
     25        $this->iteratorFactory = $iteratorFactory instanceof \Closure ? $iteratorFactory : \Closure::fromCallable($iteratorFactory);
    2626    }
    2727
  • everest-backup/trunk/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php

    r3001767 r3032524  
    5151     * Such case can be handled by child classes before calling the method if they want to
    5252     * apply a different behavior.
    53      *
    54      * @return bool
    5553     */
    56     protected function isAccepted(string $string)
     54    protected function isAccepted(string $string): bool
    5755    {
    5856        // should at least not match one rule to exclude
     
    8078    /**
    8179     * Checks whether the string is a regex.
    82      *
    83      * @return bool
    8480     */
    85     protected function isRegex(string $str)
     81    protected function isRegex(string $str): bool
    8682    {
    8783        $availableModifiers = 'imsxuADU';
     
    111107    /**
    112108     * Converts string into regexp.
    113      *
    114      * @return string
    115109     */
    116     abstract protected function toRegex(string $str);
     110    abstract protected function toRegex(string $str): string;
    117111}
  • everest-backup/trunk/vendor/symfony/finder/Iterator/PathFilterIterator.php

    r3001767 r3032524  
    2424    /**
    2525     * Filters the iterator values.
    26      *
    27      * @return bool
    2826     */
    29     #[\ReturnTypeWillChange]
    30     public function accept()
     27    public function accept(): bool
    3128    {
    3229        $filename = $this->current()->getRelativePathname();
     
    5047     *
    5148     * @param string $str Pattern: regexp or dirname
    52      *
    53      * @return string
    5449     */
    55     protected function toRegex(string $str)
     50    protected function toRegex(string $str): string
    5651    {
    5752        return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/';
  • everest-backup/trunk/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php

    r3001767 r3032524  
    2222class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator
    2323{
    24     /**
    25      * @var bool
    26      */
    27     private $ignoreUnreadableDirs;
    28 
    29     /**
    30      * @var bool
    31      */
    32     private $ignoreFirstRewind = true;
     24    private bool $ignoreUnreadableDirs;
     25    private ?bool $rewindable = null;
    3326
    3427    // these 3 properties take part of the performance optimization to avoid redoing the same work in all iterations
    35     private $rootPath;
    36     private $subPath;
    37     private $directorySeparator = '/';
     28    private string $rootPath;
     29    private string $subPath;
     30    private string $directorySeparator = '/';
    3831
    3932    /**
     
    5649    /**
    5750     * Return an instance of SplFileInfo with support for relative paths.
    58      *
    59      * @return SplFileInfo
    6051     */
    61     #[\ReturnTypeWillChange]
    62     public function current()
     52    public function current(): SplFileInfo
    6353    {
    6454        // the logic here avoids redoing the same work in all iterations
    6555
    66         if (null === $subPathname = $this->subPath) {
    67             $subPathname = $this->subPath = $this->getSubPath();
     56        if (!isset($this->subPath)) {
     57            $this->subPath = $this->getSubPath();
    6858        }
     59        $subPathname = $this->subPath;
    6960        if ('' !== $subPathname) {
    7061            $subPathname .= $this->directorySeparator;
     
    7970    }
    8071
    81     /**
    82      * @param bool $allowLinks
    83      *
    84      * @return bool
    85      */
    86     #[\ReturnTypeWillChange]
    87     public function hasChildren($allowLinks = false)
     72    public function hasChildren(bool $allowLinks = false): bool
    8873    {
    8974        $hasChildren = parent::hasChildren($allowLinks);
     
    10489
    10590    /**
    106      * @return \RecursiveDirectoryIterator
    107      *
    10891     * @throws AccessDeniedException
    10992     */
    110     #[\ReturnTypeWillChange]
    111     public function getChildren()
     93    public function getChildren(): \RecursiveDirectoryIterator
    11294    {
    11395        try {
     
    119101
    120102                // performance optimization to avoid redoing the same work in all children
     103                $children->rewindable = &$this->rewindable;
    121104                $children->rootPath = $this->rootPath;
    122105            }
     
    129112
    130113    /**
    131      * @return void
     114     * Do nothing for non rewindable stream.
    132115     */
    133     #[\ReturnTypeWillChange]
    134     public function next()
     116    public function rewind(): void
    135117    {
    136         $this->ignoreFirstRewind = false;
    137 
    138         parent::next();
    139     }
    140 
    141     /**
    142      * @return void
    143      */
    144     #[\ReturnTypeWillChange]
    145     public function rewind()
    146     {
    147         // some streams like FTP are not rewindable, ignore the first rewind after creation,
    148         // as newly created DirectoryIterator does not need to be rewound
    149         if ($this->ignoreFirstRewind) {
    150             $this->ignoreFirstRewind = false;
    151 
     118        if (false === $this->isRewindable()) {
    152119            return;
    153120        }
     
    155122        parent::rewind();
    156123    }
     124
     125    /**
     126     * Checks if the stream is rewindable.
     127     */
     128    public function isRewindable(): bool
     129    {
     130        if (null !== $this->rewindable) {
     131            return $this->rewindable;
     132        }
     133
     134        if (false !== $stream = @opendir($this->getPath())) {
     135            $infos = stream_get_meta_data($stream);
     136            closedir($stream);
     137
     138            if ($infos['seekable']) {
     139                return $this->rewindable = true;
     140            }
     141        }
     142
     143        return $this->rewindable = false;
     144    }
    157145}
  • everest-backup/trunk/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php

    r3001767 r3032524  
    2323class SizeRangeFilterIterator extends \FilterIterator
    2424{
    25     private $comparators = [];
     25    private array $comparators = [];
    2626
    2727    /**
     
    3838    /**
    3939     * Filters the iterator values.
    40      *
    41      * @return bool
    4240     */
    43     #[\ReturnTypeWillChange]
    44     public function accept()
     41    public function accept(): bool
    4542    {
    4643        $fileinfo = $this->current();
  • everest-backup/trunk/vendor/symfony/finder/Iterator/SortableIterator.php

    r3001767 r3032524  
    2929    public const SORT_BY_NAME_NATURAL = 6;
    3030
    31     private $iterator;
    32     private $sort;
     31    private \Traversable $iterator;
     32    private \Closure|int $sort;
    3333
    3434    /**
     
    3838     * @throws \InvalidArgumentException
    3939     */
    40     public function __construct(\Traversable $iterator, $sort, bool $reverseOrder = false)
     40    public function __construct(\Traversable $iterator, int|callable $sort, bool $reverseOrder = false)
    4141    {
    4242        $this->iterator = $iterator;
     
    7676            $this->sort = $order;
    7777        } elseif (\is_callable($sort)) {
    78             $this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : $sort;
     78            $this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : \Closure::fromCallable($sort);
    7979        } else {
    8080            throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.');
     
    8282    }
    8383
    84     /**
    85      * @return \Traversable<string, \SplFileInfo>
    86      */
    87     #[\ReturnTypeWillChange]
    88     public function getIterator()
     84    public function getIterator(): \Traversable
    8985    {
    9086        if (1 === $this->sort) {
  • everest-backup/trunk/vendor/symfony/finder/LICENSE

    r2980292 r3032524  
    1 Copyright (c) 2004-present Fabien Potencier
     1Copyright (c) 2004-2023 Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • everest-backup/trunk/vendor/symfony/finder/SplFileInfo.php

    r3001767 r3032524  
    1919class SplFileInfo extends \SplFileInfo
    2020{
    21     private $relativePath;
    22     private $relativePathname;
     21    private string $relativePath;
     22    private string $relativePathname;
    2323
    2424    /**
     
    3838     *
    3939     * This path does not contain the file name.
    40      *
    41      * @return string
    4240     */
    43     public function getRelativePath()
     41    public function getRelativePath(): string
    4442    {
    4543        return $this->relativePath;
     
    5048     *
    5149     * This path contains the file name.
    52      *
    53      * @return string
    5450     */
    55     public function getRelativePathname()
     51    public function getRelativePathname(): string
    5652    {
    5753        return $this->relativePathname;
     
    6864     * Returns the contents of the file.
    6965     *
    70      * @return string
    71      *
    7266     * @throws \RuntimeException
    7367     */
    74     public function getContents()
     68    public function getContents(): string
    7569    {
    7670        set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; });
  • everest-backup/trunk/vendor/symfony/finder/composer.json

    r3001767 r3032524  
    1717    ],
    1818    "require": {
    19         "php": ">=7.2.5",
    20         "symfony/deprecation-contracts": "^2.1|^3",
    21         "symfony/polyfill-php80": "^1.16"
     19        "php": ">=8.0.2"
    2220    },
    2321    "autoload": {
Note: See TracChangeset for help on using the changeset viewer.