Repository: humanmade/backupwordpress Branch: master Commit: 440e341b38bc Files: 164 Total size: 1.1 MB Directory structure: gitextract_p5en0dmf/ ├── .bowerrc ├── .github/ │ └── ISSUE_TEMPLATE.md ├── .gitignore ├── .jshintrc ├── .scrutinizer.yml ├── .travis.yml ├── CONTRIBUTING.md ├── Gruntfile.js ├── admin/ │ ├── actions.php │ ├── backups-table.php │ ├── backups.php │ ├── constants.php │ ├── enable-support.php │ ├── extensions.php │ ├── faq.php │ ├── filesystem-credentials.php │ ├── menu.php │ ├── page.php │ ├── schedule-form-excludes.php │ ├── schedule-form.php │ ├── schedule-sentence.php │ ├── schedule-settings.php │ ├── server-info.php │ └── upsell.php ├── assets/ │ ├── hmbkp.css │ └── hmbkp.js ├── backdrop/ │ ├── README.md │ ├── hm-backdrop.php │ ├── license.txt │ ├── namespace.php │ ├── server.php │ └── task.php ├── backupwordpress.php ├── bin/ │ ├── readme.txt │ └── release.sh ├── bower.json ├── changelog.txt ├── classes/ │ ├── backup/ │ │ ├── class-backup-engine-database-imysqldump.php │ │ ├── class-backup-engine-database-mysqldump.php │ │ ├── class-backup-engine-database.php │ │ ├── class-backup-engine-file-zip-archive.php │ │ ├── class-backup-engine-file-zip.php │ │ ├── class-backup-engine-file.php │ │ ├── class-backup-engine.php │ │ ├── class-backup-status.php │ │ ├── class-backup-utilities.php │ │ └── class-backup.php │ ├── class-backupwordpress-wp-cli-command.php │ ├── class-email-service.php │ ├── class-excludes.php │ ├── class-extensions.php │ ├── class-notices.php │ ├── class-path.php │ ├── class-plugin.php │ ├── class-requirement.php │ ├── class-requirements.php │ ├── class-scheduled-backup.php │ ├── class-schedules.php │ ├── class-service.php │ ├── class-services.php │ ├── class-setup.php │ ├── class-site-size.php │ ├── class-webhook-service.php │ ├── class-wpremote-webhook-service.php │ └── deprecated.php ├── composer.json ├── functions/ │ ├── core.php │ └── interface.php ├── grunt/ │ ├── aliases.yml │ ├── autoprefixer.js │ ├── bumpup.js │ ├── checktextdomain.js │ ├── compress.js │ ├── concat.js │ ├── cssmin.js │ ├── excludes │ ├── jshint.js │ ├── makepot.js │ ├── replace.js │ ├── shell.js │ └── uglify.js ├── languages/ │ ├── backupwordpress-ca_ES.mo │ ├── backupwordpress-ca_ES.po │ ├── backupwordpress-cs_CZ.mo │ ├── backupwordpress-cs_CZ.po │ ├── backupwordpress-da_DK.mo │ ├── backupwordpress-da_DK.po │ ├── backupwordpress-de_DE.mo │ ├── backupwordpress-de_DE.po │ ├── backupwordpress-el_GR.mo │ ├── backupwordpress-el_GR.po │ ├── backupwordpress-en_AU.mo │ ├── backupwordpress-en_AU.po │ ├── backupwordpress-en_GB.mo │ ├── backupwordpress-en_GB.po │ ├── backupwordpress-es_ES.mo │ ├── backupwordpress-es_ES.po │ ├── backupwordpress-eu.mo │ ├── backupwordpress-eu.po │ ├── backupwordpress-fr_FR.mo │ ├── backupwordpress-fr_FR.po │ ├── backupwordpress-he_IL.mo │ ├── backupwordpress-he_IL.po │ ├── backupwordpress-it_IT.mo │ ├── backupwordpress-it_IT.po │ ├── backupwordpress-lt_LT.mo │ ├── backupwordpress-lt_LT.po │ ├── backupwordpress-lv_LV.mo │ ├── backupwordpress-lv_LV.po │ ├── backupwordpress-nl_NL.mo │ ├── backupwordpress-nl_NL.po │ ├── backupwordpress-pl_PL.mo │ ├── backupwordpress-pl_PL.po │ ├── backupwordpress-pt_BR.mo │ ├── backupwordpress-pt_BR.po │ ├── backupwordpress-ro_RO.mo │ ├── backupwordpress-ro_RO.po │ ├── backupwordpress-ru_RU.mo │ ├── backupwordpress-ru_RU.po │ ├── backupwordpress-sk_SK.mo │ ├── backupwordpress-sk_SK.po │ ├── backupwordpress-sr_RS.mo │ ├── backupwordpress-sr_RS.po │ ├── backupwordpress-zh-cn.mo │ ├── backupwordpress-zh-cn.po │ └── backupwordpress.pot ├── package.json ├── phpunit.xml ├── readme/ │ ├── readme-footer.txt │ └── readme-header.txt ├── readme.md ├── readme.txt ├── tests/ │ ├── bootstrap.php │ ├── class-backup-engine/ │ │ ├── common-database-backup-engine-tests.php │ │ ├── common-file-backup-engine-tests.php │ │ ├── test-class-backup-engine-database-imysqldump.php │ │ ├── test-class-backup-engine-database-mysqldump.php │ │ ├── test-class-backup-engine-database.php │ │ ├── test-class-backup-engine-file-zip-archive.php │ │ └── test-class-backup-engine-file-zip.php │ ├── class-backup-utilities/ │ │ ├── test-get-executable-path.php │ │ ├── test-get-home-path.php │ │ └── test-safe-mode.php │ ├── class-mock-backup-engines.php │ ├── class-site-backup/ │ │ ├── test-backup-director.php │ │ └── test-class-site-backup.php │ ├── class-wp-test-hm-backup-testcase.php │ ├── data/ │ │ └── response.json │ ├── ini/ │ │ └── php.ini │ ├── misc/ │ │ ├── test-path-in-open-basedir.php │ │ ├── testDetermineStartTime.php │ │ └── testUninstallActivateDeactivate.php │ ├── schedule/ │ │ └── testScheduleTest.php │ ├── test-backup-path.php │ ├── test-backup-status.php │ ├── test-excludes.php │ ├── test-extensions.php │ ├── test-get-files.php │ ├── test-is-same-size-format.php │ ├── test-notices.php │ └── test-site-size.php ├── uninstall.php └── whitelist-html/ ├── README.md └── whitelist-html.php ================================================ FILE CONTENTS ================================================ ================================================ FILE: .bowerrc ================================================ { "directory": "assets", "scripts": { "postinstall": "rm -rf js/jquery" } } ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ### Description of issue Replace this text with a short description ### Steps to recreate issue 1. Replace this 2. text with 3. the steps 4. to recreate ### Current behavior Explain what it's doing and why it's wrong ### Expected behavior Explain what it should be doing after it's fixed. ### Additional Useful Information 1. Results of Basic Troubleshooting Checklist? ================================================ FILE: .gitignore ================================================ .svn node_modules npm-debug.log assets/jquery readme/faq.txt build History.md vendor .idea composer.lock .DS_Store releases package-lock.json tmp ================================================ FILE: .jshintrc ================================================ { "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "es3": true, "expr": true, "immed": true, "noarg": true, "onevar": true, "quotmark": "single", "trailing": true, "undef": true, "unused": true, "browser": true, "devel": true, "globals": { "_": false, "Backbone": false, "jQuery": false, "wp": false, "hmbkp": false, "ajaxurl": false } } ================================================ FILE: .scrutinizer.yml ================================================ filter: excluded_paths: [ 'vendor/*', 'bin/*', 'backdrop/*', 'node_modules/*', 'readme/*', 'tests/*', 'languages/*', 'grunt/*', 'Gruntfile.js', '*.min.*'] before_commands: - "composer self-update" - "composer install --prefer-source --dev" tools: php_code_sniffer: config: { standard: WordPress } php_changetracking: enabled: true bug_patterns: - '\bfix(?:es|ed)?\b' feature_patterns: - '\badd(?:s|ed)?\b' - '\bimplement(?:s|ed)?\b' js_hint: true php_mess_detector: config: naming_rules: { boolean_method_name: true } controversial_rules: { superglobals: false } sensiolabs_security_checker: true php_loc: true php_hhvm: enabled: true command: hhvm extensions: - php php_analyzer: enabled: true extensions: - php config: parameter_reference_check: { enabled: false } checkstyle: { enabled: false } unreachable_code: { enabled: true } check_access_control: { enabled: false } typo_checks: { enabled: true } check_variables: { enabled: true } check_calls: { enabled: true, too_many_arguments: true, missing_argument: true, argument_type_checks: lenient } suspicious_code: { enabled: true, non_existent_class_in_instanceof_check: true, non_existent_class_in_catch_clause: true, non_commented_switch_fallthrough: true, non_commented_empty_catch_block: true, precedence_in_condition_assignment: true, overriding_parameter: false, overriding_closure_use: false, parameter_closure_use_conflict: false, parameter_multiple_times: false, assignment_of_null_return: false, overriding_private_members: false, use_statement_alias_conflict: false } dead_assignments: { enabled: true } verify_php_doc_comments: { enabled: true, parameters: true, return: true, suggest_more_specific_types: true, ask_for_return_if_not_inferrable: true, ask_for_param_type_annotation: true } loops_must_use_braces: { enabled: false } check_usage_context: { enabled: true, foreach: { value_as_reference: true, traversable: true } } simplify_boolean_return: { enabled: true } phpunit_checks: { enabled: false } reflection_checks: { enabled: false } precedence_checks: { enabled: true, assignment_in_condition: true, comparison_of_bit_result: true } basic_semantic_checks: { enabled: true } unused_code: { enabled: true } deprecation_checks: { enabled: true } useless_function_calls: { enabled: true } metrics_lack_of_cohesion_methods: { enabled: true } metrics_coupling: { enabled: true, stable_code: { namespace_prefixes: { }, classes: { } } } doctrine_parameter_binding: { enabled: false } doctrine_entity_manager_injection: { enabled: false } symfony_request_injection: { enabled: false } doc_comment_fixes: { enabled: false } reflection_fixes: { enabled: false } use_statement_fixes: { enabled: true, remove_unused: true, preserve_multiple: false, preserve_blanklines: false, order_alphabetically: false } # PHP Similarity Analyzer and Copy/paste Detector cannot be used at # the same time right now. Make sure to either remove, or disable one. php_cpd: false php_pdepend: true php_sim: enabled: true min_mass: 50 checks: php: code_rating: true duplication: true ================================================ FILE: .travis.yml ================================================ language: php sudo: false php: - 5.3 - 5.4 - 5.5 - 5.6 - hhvm - 7.0 env: # trunk: - WP_VERSION=master WP_MULTISITE=0 - WP_VERSION=master WP_MULTISITE=1 # latest stable: - WP_VERSION=4.3.1 WP_MULTISITE=0 # previous stable: - WP_VERSION=4.2.5 WP_MULTISITE=0 # earliest supported: - WP_VERSION=3.9.9 WP_MULTISITE=0 matrix: allow_failures: - php: hhvm - php: 7.0 fast_finish: true exclude: # Only test latest version of WP with HHVM and PHP 7 - php: hhvm env: WP_VERSION=3.9.9 WP_MULTISITE=0 - php: hhvm env: WP_VERSION=4.2.5 WP_MULTISITE=0 - php: hhvm env: WP_VERSION=4.3.1 WP_MULTISITE=0 - php: 7.0 env: WP_VERSION=3.9.9 WP_MULTISITE=0 - php: 7.0 env: WP_VERSION=4.2.5 WP_MULTISITE=0 - php: 7.0 env: WP_VERSION=4.3.1 WP_MULTISITE=0 cache: directories: - vendor - $HOME/.composer/cache before_install: # set up WP install - export WP_DEVELOP_DIR=/tmp/wordpress/ - mkdir -p $WP_DEVELOP_DIR - git clone --depth=1 --branch $WP_VERSION git://develop.git.wordpress.org/ $WP_DEVELOP_DIR # set up tests config - cd $WP_DEVELOP_DIR - cp wp-tests-config-sample.php wp-tests-config.php - sed -i "s/youremptytestdbnamehere/wordpress_test/" wp-tests-config.php - sed -i "s/yourusernamehere/root/" wp-tests-config.php - sed -i "s/yourpasswordhere//" wp-tests-config.php # set up database - mysql -e 'CREATE DATABASE wordpress_test;' -uroot - cd $TRAVIS_BUILD_DIR install: - git config --global user.email "paul@hmn.md" - git config --global user.name "Paul de Wouters" notifications: email: false slack: secure: ZyXhKGpR/VtggG3vcCaZ+50HBn4STi2fOvMKrmZaeS44s+j6lhkYt7qT1UeU1o2Vox2WCrdqfZqT370f4OV3izAgf7Ln+vIYxZvCywL2Cyt4YbHVPX0pMwuDuAW6a1zG5oP87CFZh9YYCHQ6HfX9ATKtnqiuMFx/SjOcD1Yb4Lk= before_script: - cd $TRAVIS_BUILD_DIR - composer self-update - composer install --no-interaction script: - cd $TRAVIS_BUILD_DIR - | if [[ "$TRAVIS_PHP_VERSION" == "5.6" && "$WP_VERSION" == "master" && "$WP_MULTISITE" == "0" ]] ; then phpunit --coverage-clover=coverage.xml else phpunit fi git: depth: 1 ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to BackUpWordPress Thanks for stopping by, It's really great that you're here. BackUpWordPress thrives on the contributions of [many](https://github.com/xibodevelopment/backupwordpress/graphs/contributors) and there is always more to do. There are four main ways you can contribute currently: - Developing - Testing - Translating - Security ## Developing Develop your changes in a feature branch and send a pull request to BackUpWordPress' `master` branch for review. Assign the Pull Request to the Lead Developer: Paul de Wouters, [@pdewouters](https://github.com/pdewouters). You can use Grunt to generate a built copy of the plugin to test with: ``` npm install grunt copy:build ``` We try to follow the [WordPress Core Coding Standards](http://codex.wordpress.org/WordPress_Coding_Standards). ## Testing We're trying to solve a hard problem. BackUpWordPress aims to work reliably across 24%+ of the internet that WordPress is installed on. It needs to support the multitude of server setups, plugin and theme configurations and types of sites that WordPress itself can handle. In order to reach this goal we need to be continuously testing our changes to ensure they improve the things we intended to improve and avoid breaking things we didn't intend to break. We rely on a few different kinds of tests: - Unit tests help us ensure that small, atomic pieces of code (generally individual functions or methods) do what they should under a variety of input conditions. We use Travis to run them automatically against all new Pull Requests. If you submit a code change you should try to also submit some unit tests to cover the changes you are making. We're [working on documenting how to setup and run our unit tests locally](https://github.com/xibodevelopment/backupwordpress/issues/837). - Integration tests are something we need, we don't currently have them. - Manual testing of different hosting environments. If you have access to a specific hosting environment, you can help out hugely by installing BackUpWordPress and testing if it works correctly. We're working on a [host support matrix](https://github.com/xibodevelopment/backupwordpress/issues/838) that you can contribute your findings too but for now please just open a Github issue if you run into a problem. ## Translating We want BackUpWordPress to be available in as many languages as possible. All translations are managed here: https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev please contribute there rather than by submitting new translation files here. You'll need a WordPress.org account. ## Security We take the security of BackUpWordPress extremely seriously. If you think you've found a security issue with the plugin (whether information disclosure, privilege escalation, or another issue), we'd appreciate responsible disclosure as soon as possible. To report a security issue, you can email support@xibomarketing.com. We will attempt to give an initial response to security issues within 48 hours at most, however keep in mind that the team is distributed across various timezones, and delays may occur as we discuss internally. (Please note: For testing, you should install a copy of the project and WordPress on your own server. Do not test on servers you do not own.) Thank you for contributing! ================================================ FILE: Gruntfile.js ================================================ module.exports = function( grunt ) { require( 'load-grunt-config' )( grunt ); }; ================================================ FILE: admin/actions.php ================================================ delete_backup( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ) ); if ( is_wp_error( $deleted ) ) { wp_die( $deleted->get_error_message() ); } wp_safe_redirect( get_settings_url(), 303 ); die; } add_action( 'admin_post_hmbkp_request_delete_backup', 'HM\BackUpWordPress\request_delete_backup' ); /** * Enable support and then redirect back to the backups page */ function request_enable_support() { check_admin_referer( 'hmbkp_enable_support', 'hmbkp_enable_support_nonce' ); update_option( 'hmbkp_enable_support', true ); wp_safe_redirect( get_settings_url(), 303 ); die; } add_action( 'admin_post_hmbkp_request_enable_support', 'HM\BackUpWordPress\request_enable_support' ); /** * Delete a schedule and all it's backups and then redirect back to the backups page */ function request_delete_schedule() { check_admin_referer( 'hmbkp_delete_schedule', 'hmbkp_delete_schedule_nonce' ); $schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) ); $schedule->cancel( true ); wp_safe_redirect( get_settings_url(), 303 ); die; } add_action( 'admin_post_hmbkp_request_delete_schedule', 'HM\BackUpWordPress\request_delete_schedule' ); add_action( 'admin_post_hmbkp_request_credentials', function() { global $wp_filesystem; ob_start(); $creds = request_filesystem_credentials( '' ); ob_end_clean(); // Default to showing an error if we're not able to connect. $url = add_query_arg( 'connection_error', 1, get_settings_url() ); /** * If we have valid filesystem credentials then let's attempt * to use them to create the backups directory. If we can't create it in * WP_CONTENT_DIR then we fallback to trying in uploads. */ if ( WP_Filesystem( $creds ) ) { // If we're able to connect then no need to redirect with an error. $url = get_settings_url(); // If the backup path exists then let's just try to chmod it to the correct permissions. if ( is_dir( Path::get_instance()->get_default_path() ) && ! $wp_filesystem->chmod( Path::get_instance()->get_default_path(), FS_CHMOD_DIR ) ) { $url = add_query_arg( 'creation_error', 1, get_settings_url() ); } else { // If the path doesn't exist then try to correct the permission for the parent directory and create it. $wp_filesystem->chmod( dirname( Path::get_instance()->get_default_path() ), FS_CHMOD_DIR ); if ( ! $wp_filesystem->mkdir( Path::get_instance()->get_default_path(), FS_CHMOD_DIR ) && ! $wp_filesystem->mkdir( Path::get_instance()->get_fallback_path(), FS_CHMOD_DIR ) ) { $url = add_query_arg( 'creation_error', 1, get_settings_url() ); } } } wp_safe_redirect( $url , 303 ); die; } ); /** * Perform a manual backup * * Handles ajax requests as well as standard GET requests */ function request_do_backup() { if ( empty( $_REQUEST['hmbkp_schedule_id'] ) ) { die; } if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { check_ajax_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' ); } else { check_admin_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' ); } Path::get_instance()->cleanup(); // Fixes an issue on servers which only allow a single session per client session_write_close(); $schedule_id = sanitize_text_field( urldecode( $_REQUEST['hmbkp_schedule_id'] ) ); $task = new \HM\Backdrop\Task( '\HM\BackUpWordPress\run_schedule_async', $schedule_id ); /** * Backdrop doesn't cleanup tasks which fatal before they can finish * so we manually cancel the task if it's already scheduled. */ if ( $task->is_scheduled() ) { $task->cancel(); } $task->schedule(); die; } add_action( 'wp_ajax_hmbkp_run_schedule', 'HM\BackUpWordPress\request_do_backup' ); function run_schedule_async( $schedule_id ) { $schedule = new Scheduled_Backup( $schedule_id ); $schedule->run(); } /** * Send the download file to the browser and then redirect back to the backups page */ function request_download_backup() { check_admin_referer( 'hmbkp_download_backup', 'hmbkp_download_backup_nonce' ); if ( ! file_exists( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ) ) ) { return; } $url = str_replace( wp_normalize_path( Path::get_home_path() ), home_url( '/' ), trailingslashit( dirname( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ) ) ) ) . urlencode( pathinfo( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ), PATHINFO_BASENAME ) ); global $is_apache; if ( $is_apache ) { Path::get_instance()->protect_path( 'reset' ); $url = add_query_arg( 'key', HMBKP_SECURE_KEY, $url ); } wp_safe_redirect( $url, 303 ); die; } add_action( 'admin_post_hmbkp_request_download_backup', 'HM\BackUpWordPress\request_download_backup' ); /** * Cancels a running backup then redirect back to the backups page */ function request_cancel_backup() { check_admin_referer( 'hmbkp_request_cancel_backup', 'hmbkp-request_cancel_backup_nonce' ); $schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) ); $status = $schedule->get_status(); // Delete the running backup if ( $status->get_backup_filename() && file_exists( trailingslashit( Path::get_path() ) . $status->get_backup_filename() ) ) { unlink( trailingslashit( Path::get_path() ) . $status->get_backup_filename() ); } if ( file_exists( $status->get_status_filepath() ) ) { unlink( $status->get_status_filepath() ); } Path::get_instance()->cleanup(); wp_safe_redirect( get_settings_url(), 303 ); die; } add_action( 'admin_post_hmbkp_request_cancel_backup', 'HM\BackUpWordPress\request_cancel_backup' ); /** * Dismiss an error and then redirect back to the backups page */ function dismiss_error() { Path::get_instance()->cleanup(); Notices::get_instance()->clear_all_notices(); wp_safe_redirect( wp_get_referer(), 303 ); die; } add_action( 'wp_ajax_hmbkp_dismiss_error', 'HM\BackUpWordPress\dismiss_error' ); /** * Catch the schedule service settings form submission * * Validate and either return errors or update the schedule */ function edit_schedule_services_submit() { check_admin_referer( 'hmbkp-edit-schedule-services', 'hmbkp-edit-schedule-services-nonce' ); if ( empty( $_POST['hmbkp_schedule_id'] ) ) { wp_die( __( 'The schedule ID was not provided. Aborting.', 'backupwordpress' ) ); } $schedule = new Scheduled_Backup( sanitize_text_field( $_POST['hmbkp_schedule_id'] ) ); $errors = array(); // Save the service options foreach ( Services::get_services( $schedule ) as $service ) { $errors = array_merge( $errors, $service->save() ); } $schedule->save(); if ( ! empty( $errors ) ) { foreach ( $errors as $error ) { add_settings_error( $error ); } } $redirect = remove_query_arg( array( 'hmbkp_panel', 'action' ), wp_get_referer() ); if ( ! empty( $errors ) ) { $redirect = wp_get_referer(); } wp_safe_redirect( $redirect, '303' ); die; } add_action( 'admin_post_hmbkp_edit_schedule_services_submit', 'HM\BackUpWordPress\edit_schedule_services_submit' ); /** * Catch the schedule settings form submission * * Validate and either return errors or update the schedule */ function edit_schedule_submit() { check_admin_referer( 'hmbkp-edit-schedule', 'hmbkp-edit-schedule-nonce' ); if ( empty( $_POST['hmbkp_schedule_id'] ) ) { die; } $schedule = new Scheduled_Backup( sanitize_text_field( $_POST['hmbkp_schedule_id'] ) ); $site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() ); $errors = $settings = array(); if ( isset( $_POST['hmbkp_schedule_type'] ) ) { $schedule_type = sanitize_text_field( $_POST['hmbkp_schedule_type'] ); if ( ! trim( $schedule_type ) ) { $errors['hmbkp_schedule_type'] = __( 'Backup type cannot be empty', 'backupwordpress' ); } elseif ( ! in_array( $schedule_type, array( 'complete', 'file', 'database' ) ) ) { $errors['hmbkp_schedule_type'] = __( 'Invalid backup type', 'backupwordpress' ); } else { $settings['type'] = $schedule_type; } } if ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_type'] ) ) { $schedule_recurrence_type = sanitize_text_field( $_POST['hmbkp_schedule_recurrence']['hmbkp_type'] ); if ( empty( $schedule_recurrence_type ) ) { $errors['hmbkp_schedule_recurrence']['hmbkp_type'] = __( 'Schedule cannot be empty', 'backupwordpress' ); } elseif ( ! in_array( $schedule_recurrence_type, array_keys( cron_schedules() ) ) && 'manually' !== $schedule_recurrence_type ) { $errors['hmbkp_schedule_recurrence']['hmbkp_type'] = __( 'Invalid schedule', 'backupwordpress' ); } else { $settings['recurrence'] = $schedule_recurrence_type; } } if ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_week'] ) ) { $day_of_week = sanitize_text_field( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_week'] ); if ( ! in_array( $day_of_week, array( 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday' ) ) ) { $errors['hmbkp_schedule_start_day_of_week'] = __( 'Day of the week must be a valid, lowercase day name', 'backupwordpress' ); } else { $settings['start_time']['day_of_week'] = $day_of_week; } } if ( ( 'monthly' === $schedule_recurrence_type ) && isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_month'] ) ) { $day_of_month = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_month'] ); $options = array( 'min_range' => 1, 'max_range' => 31, ); if ( false === filter_var( $day_of_month, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) { $errors['hmbkp_schedule_start_day_of_month'] = __( 'Day of month must be between 1 and 31', 'backupwordpress' ); } else { $settings['start_time']['day_of_month'] = $day_of_month; } } if ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_hours'] ) ) { $hours = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_hours'] ); $options = array( 'min_range' => 0, 'max_range' => 23, ); if ( false === filter_var( $hours, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) { $errors['hmbkp_schedule_start_hours'] = __( 'Hours must be between 0 and 23', 'backupwordpress' ); } else { $settings['start_time']['hours'] = $hours; } } if ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_minutes'] ) ) { $minutes = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_minutes'] ); $options = array( 'min_range' => 0, 'max_range' => 59, ); if ( false === filter_var( $minutes, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) { $errors['hmbkp_schedule_start_minutes'] = __( 'Minutes must be between 0 and 59', 'backupwordpress' ); } else { $settings['start_time']['minutes'] = $minutes; } } if ( isset( $_POST['hmbkp_schedule_max_backups'] ) ) { $max_backups = sanitize_text_field( $_POST['hmbkp_schedule_max_backups'] ); if ( empty( $max_backups ) ) { $errors['hmbkp_schedule_max_backups'] = __( 'Max backups can\'t be empty', 'backupwordpress' ); } elseif ( ! is_numeric( $max_backups ) ) { $errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be a number', 'backupwordpress' ); } elseif ( ! ( $max_backups >= 1 ) ) { $errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be greater than 0', 'backupwordpress' ); } elseif ( $site_size->is_site_size_cached() && disk_space_low( $site_size->get_site_size() * $max_backups ) ) { $errors['hmbkp_schedule_max_backups'] = sprintf( __( 'Storing %s backups would use %s of disk space but your server only has %s free.', 'backupwordpress' ), '' . number_format_i18n( $max_backups ) . '', '' . size_format( $max_backups * $site_size->get_site_size() ) . '', '' . size_format( disk_free_space( Path::get_path() ) ) . '' ); } else { $settings['max_backups'] = absint( $max_backups ); } } // Save the service options foreach ( Services::get_services( $schedule ) as $service ) { $errors = array_merge( $errors, $service->save() ); } if ( ! empty( $settings['recurrence'] ) && ! empty( $settings['start_time'] ) ) { // Calculate the start time depending on the recurrence $start_time = determine_start_time( $settings['recurrence'], $settings['start_time'] ); if ( $start_time ) { $schedule->set_schedule_start_time( $start_time ); } } if ( ! empty( $settings['recurrence'] ) ) { $schedule->set_reoccurrence( $settings['recurrence'] ); } if ( ! empty( $settings['type'] ) ) { $schedule->set_type( $settings['type'] ); } if ( ! empty( $settings['max_backups'] ) ) { $schedule->set_max_backups( $settings['max_backups'] ); } // Save the new settings $schedule->save(); // Remove any old backups in-case max backups was reduced $schedule->delete_old_backups(); if ( ! empty( $errors ) ) { foreach ( $errors as $error ) { add_settings_error( $error ); } } $redirect = remove_query_arg( array( 'hmbkp_panel', 'action' ), wp_get_referer() ); if ( ! empty( $errors ) ) { $redirect = wp_get_referer(); } wp_safe_redirect( $redirect, '303' ); die; } add_action( 'admin_post_hmbkp_edit_schedule_submit', 'HM\BackUpWordPress\edit_schedule_submit' ); /** * Add an exclude rule * * @access public * @return void */ function add_exclude_rule() { check_admin_referer( 'hmbkp-add-exclude-rule', 'hmbkp-add-exclude-rule-nonce' ); if ( ! isset( $_GET['hmbkp_exclude_pathname'] ) ) { return; } $schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) ); $exclude_rule = sanitize_text_field( $_GET['hmbkp_exclude_pathname'] ); $schedule->set_excludes( $exclude_rule, true ); $schedule->save(); delete_transient( 'hmbkp_root_size' ); wp_safe_redirect( wp_get_referer(), '303' ); die; } add_action( 'admin_post_hmbkp_add_exclude_rule', 'HM\BackUpWordPress\add_exclude_rule' ); /** * Delete an exclude rule * * @access public * @return void */ function remove_exclude_rule() { check_admin_referer( 'hmbkp_remove_exclude_rule', 'hmbkp-remove_exclude_rule_nonce' ); if ( ! isset( $_GET['hmbkp_remove_exclude'] ) ) { die; } $schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) ); $excludes = $schedule->get_excludes(); $exclude_rule_to_remove = stripslashes( sanitize_text_field( $_GET['hmbkp_remove_exclude'] ) ); $schedule->set_excludes( array_diff( $excludes->get_user_excludes(), (array) $exclude_rule_to_remove ) ); $schedule->save(); delete_transient( 'hmbkp_root_size' ); wp_safe_redirect( wp_get_referer(), '303' ); die; } add_action( 'admin_post_hmbkp_remove_exclude_rule', 'HM\BackUpWordPress\remove_exclude_rule' ); /** * * @param null */ function recalculate_directory_filesize() { if ( ! isset( $_GET['hmbkp_recalculate_directory_filesize'] ) || ! check_admin_referer( 'hmbkp-recalculate_directory_filesize' ) ) { return; } // Delete the cached directory size @unlink( trailingslashit( Path::get_path() ) . '.files' ); $url = add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_excludes' ), get_settings_url() ); if ( isset( $_GET['hmbkp_directory_browse'] ) ) { $url = add_query_arg( 'hmbkp_directory_browse', sanitize_text_field( $_GET['hmbkp_directory_browse'] ), $url ); } wp_safe_redirect( $url, '303' ); die; } add_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\BackUpWordPress\recalculate_directory_filesize' ); function calculate_site_size() { $site_size = new Site_Size; if ( ! $site_size->is_site_size_cached() ) { $root = new \SplFileInfo( Path::get_root() ); $site_size->filesize( $root ); } } add_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\BackUpWordPress\calculate_site_size' ); /** * Receive the heartbeat and return backup status */ function heartbeat_received( $response, $data ) { if (!current_user_can('manage_options')) return $response; $response['heartbeat_interval'] = 'fast'; if ( ! empty( $data['hmbkp_schedule_id'] ) ) { $schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $data['hmbkp_schedule_id'] ) ) ); $status = new Backup_Status( $schedule->get_id() ); if ( ! empty( $data['hmbkp_is_in_progress'] ) ) { if ( ! $status->get_status() ) { $response['hmbkp_schedule_status'] = 0; // Slow the heartbeat back down $response['heartbeat_interval'] = 'slow'; } else { $response['hmbkp_schedule_status'] = schedule_status( $schedule, false ); } } if ( ! empty( $data['hmbkp_client_request'] ) ) { $site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() ); // Pass the site size to be displayed when it's ready. if ( $site_size->is_site_size_cached() ) { $response['hmbkp_site_size'] = $site_size->get_formatted_site_size(); ob_start(); require( HMBKP_PLUGIN_PATH . 'admin/schedule-form-excludes.php' ); $response['hmbkp_dir_sizes'] = ob_get_clean(); // Slow the heartbeat back down $response['heartbeat_interval'] = 'slow'; } } } return $response; } add_filter( 'heartbeat_received', 'HM\BackUpWordPress\heartbeat_received', 10, 2 ); /** * Load the enable support modal contents * * @return void */ function load_enable_support() { check_ajax_referer( 'hmbkp_nonce', '_wpnonce' ); require_once HMBKP_PLUGIN_PATH . 'admin/enable-support.php'; die; } add_action( 'wp_ajax_load_enable_support', 'HM\BackUpWordPress\load_enable_support' ); /** * Display the running status via ajax */ function ajax_is_backup_in_progress() { check_ajax_referer( 'hmbkp_nonce', 'nonce' ); if ( empty( $_POST['hmbkp_schedule_id'] ) ) { die; } $schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_POST['hmbkp_schedule_id'] ) ) ); if ( ! $schedule->get_status() ) { echo 0; } else { hmbkp_schedule_status( $schedule ); } die; } add_action( 'wp_ajax_hmbkp_is_in_progress', 'HM\BackUpWordPress\ajax_is_backup_in_progress' ); /** * Display the calculated size via ajax */ function ajax_calculate_backup_size() { check_ajax_referer( 'hmbkp_nonce', 'nonce' ); if ( empty( $_POST['hmbkp_schedule_id'] ) ) { die; } $schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_POST['hmbkp_schedule_id'] ) ) ); $recalculate_filesize = true; require( HMBKP_PLUGIN_PATH . 'admin/schedule-sentence.php' ); die; } add_action( 'wp_ajax_hmbkp_calculate', 'HM\BackUpWordPress\ajax_calculate_backup_size' ); /** * Test the cron response and if it's not 200 show a warning message */ function ajax_cron_test() { check_ajax_referer( 'hmbkp_nonce', 'nonce' ); // Only run the test once per week if ( get_transient( 'hmbkp_wp_cron_test_beacon' ) ) { echo 1; die; } // Skip the test if they are using Alternate Cron if ( defined( 'ALTERNATE_WP_CRON' ) ) { delete_option( 'hmbkp_wp_cron_test_failed' ); echo 1; die; } $url = site_url( 'wp-cron.php' ); // Attempt to load wp-cron.php 3 times, if we get the same error each time then inform the user. $response1 = wp_remote_head( $url, array( 'timeout' => 30 ) ); $response2 = wp_remote_head( $url, array( 'timeout' => 30 ) ); $response3 = wp_remote_head( $url, array( 'timeout' => 30 ) ); if ( is_wp_error( $response1 ) && is_wp_error( $response2 ) && is_wp_error( $response3 ) ) { echo '

' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . ' ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details.', 'backupwordpress' ), 'wp-cron.php', '' . $response1->get_error_message() . '', 'FAQ' ) . '

'; update_option( 'hmbkp_wp_cron_test_failed', true ); } elseif ( ! in_array( 200, array_map( 'wp_remote_retrieve_response_code', array( $response1, $response2, $response3 ) ) ) ) { echo '

' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . ' ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups, and more generally relies on HTTP loopback connections not being blocked for manual backups. See the %3$s for more details.', 'backupwordpress' ), 'wp-cron.php', '' . esc_html( wp_remote_retrieve_response_code( $response1 ) ) . ' ' . esc_html( get_status_header_desc( wp_remote_retrieve_response_code( $response1 ) ) ) . '', 'FAQ' ) . '

'; update_option( 'hmbkp_wp_cron_test_failed', true ); } else { echo 1; delete_option( 'hmbkp_wp_cron_test_failed' ); set_transient( 'hmbkp_wp_cron_test_beacon', 1, WEEK_IN_SECONDS ); } die; } add_action( 'wp_ajax_hmbkp_cron_test', 'HM\BackUpWordPress\ajax_cron_test' ); /** * Remember notice dismissal */ function hmbkp_dismiss_notice() { update_site_option( 'hmbkp_hide_info_notice', true ); } add_action( 'wp_ajax_hmbkp_dismiss_notice', 'HM\BackUpWordPress\hmbkp_dismiss_notice' ); function hmbkp_dismiss_rate_notice() { //Set rate notice to reappear after 30 days $expiry = time() + 2592000; update_site_option( 'hmbkp_hide_rate_notice', $expiry ); } add_action( 'wp_ajax_hmbkp_dismiss_rate_notice', 'HM\BackUpWordPress\hmbkp_dismiss_rate_notice' ); ================================================ FILE: admin/backups-table.php ================================================ get_backups() ) : $schedule->delete_old_backups(); foreach ( $schedule->get_backups() as $file ) : if ( ! file_exists( $file ) ) { continue; } get_backup_row( $file, $schedule ); endforeach; else : ?>
================================================ FILE: admin/backups.php ================================================ refresh_schedules(); $schedules = Schedules::get_instance()->get_schedules(); if ( ! empty( $_GET['hmbkp_schedule_id'] ) ) { $current_schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) ); } else { $current_schedule = reset( $schedules ); } ?>
================================================ FILE: admin/constants.php ================================================

define', '' . __( 'Constants', 'backupwordpress' ) . '', 'wp-config.php', '' . __( 'The Codex can help', 'backupwordpress' ) . '', '' . __( 'Constants', 'backupwordpress' ) . '' ); ?>

class="hmbkp_active"> class="hmbkp_active"> class="hmbkp_active"> class="hmbkp_active"> class="hmbkp_active"> class="hmbkp_active"> class="hmbkp_active"> $service ) : echo wp_kses_post( call_user_func( array( $service, 'constant' ) ) ); endforeach; ?>
HMBKP_PATH

' . esc_html( HMBKP_PATH ) . '' ); ?>

' . esc_html( Path::get_path() ) . '' ); ?> define( 'HMBKP_PATH', '/home/willmot/backups' );

HMBKP_MYSQLDUMP_PATH

' . esc_html( HMBKP_MYSQLDUMP_PATH ) . '' ); ?>

mysqldump', '' . __( 'database', 'backupwordpress' ) . '' ); ?> define( 'HMBKP_MYSQLDUMP_PATH', '/opt/local/bin/mysqldump' );

HMBKP_ZIP_PATH

' . esc_html( HMBKP_ZIP_PATH ) . '' ); ?>

zip', '' . __( 'files', 'backupwordpress' ) . '', '' . __( 'database', 'backupwordpress' ) . '' ); ?> define( 'HMBKP_ZIP_PATH', '/opt/local/bin/zip' );

HMBKP_EXCLUDE

' . esc_html( HMBKP_EXCLUDE ) . '' ); ?>

define( 'HMBKP_EXCLUDE', '/wp-content/uploads/, /stats/, .svn/, *.txt' );

HMBKP_CAPABILITY

' . esc_html( HMBKP_CAPABILITY ) . '' ); ?>

add_menu_page', 'manage_options' ); ?> define( 'HMBKP_CAPABILITY', 'edit_posts' );

HMBKP_ROOT

' . esc_html( HMBKP_ROOT ) . '' ); ?>

' . Path::get_home_path() . '' ); ?> define( 'HMBKP_ROOT', ABSPATH . 'wp/' );

HMBKP_SCHEDULE_TIME

' . esc_html( HMBKP_SCHEDULE_TIME ) . '' ); ?>

23:00' ); ?> define( 'HMBKP_SCHEDULE_TIME', '07:30' );

================================================ FILE: admin/enable-support.php ================================================

Intercom' ); ?>

raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) ) { ?>
name() ); ?> result() ); ?>
name() ); ?>
result() ); ?>

================================================ FILE: admin/extensions.php ================================================

get_edd_data(); // Sort by title. usort( $extensions_data, function( $a, $b ) { return strcmp( $b->title->rendered, $a->title->rendered ); }); /** * Include is required for the usage of is_plugin_active() * to identify if a plugin is currently activated. * This info is further used to display a correct action button * depending on plugin's state (i.e. Update Now, Activate, Active). */ include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $installed_plugins = array(); foreach ( get_plugins() as $path => $plugin_info ) { $installed_plugins[ strtolower( $plugin_info['Name'] ) ] = array( 'version' => $plugin_info['Version'], 'path' => $path, 'is_active' => is_plugin_active( $path ), ); } ?>

title->rendered ); $is_extension_installed = in_array( $extension_name_lowcase, array_keys( $installed_plugins ) ); $extension_version = $is_extension_installed ? $installed_plugins[ $extension_name_lowcase ]['version'] : ''; $extension_path = $is_extension_installed ? $installed_plugins[ $extension_name_lowcase ]['path'] : ''; $is_extension_active = $is_extension_installed ? $installed_plugins[ $extension_name_lowcase ]['is_active'] : false; ?>

content->rendered ); ?>

Last Updated: %s ago', 'backupwordpress' ), array( 'strong' => array(), ) ), esc_html( human_time_diff( strtotime( $extension->modified ) ) ) ); ?>
================================================ FILE: admin/faq.php ================================================ ' . __( 'Where does BackUpWordPress store the backup files?', 'backupwordpress' ) . '

' . '

' . __( 'Backups are stored on your server in /wp-content/backups, you can change the directory.', 'backupwordpress' ). '

' . '

' . __( 'Important: By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does mean that your backup directory can get quite large.', 'backupwordpress' ) . '

' . '

' . __( 'What if I want to back up my site to another destination?', 'backupwordpress' ) . '

' . '

' . __( 'We no longer sell or support the paid add-ons (e.g. for backups to Dropbox and Google Drive). It\'s certainly a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend UpdraftPlus WordPress Backups which can do things for free BackupWordPress Premium could do on a paid basis. Click here for full comparison.', 'backupwordpress' ) . '

' . '

' . __( 'How do I restore my site from a backup?', 'backupwordpress' ) . '

' . '

' . __( 'You need to download the latest backup file either by clicking download on the backups page or via FTP. Unzip the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely phpMyAdmin).', 'backupwordpress' ) . '

' . '

' . __( 'See this guide for more details - How to restore from backup.', 'backupwordpress' ) . '

' . '

' . __( 'Does BackUpWordPress back up the backups directory?', 'backupwordpress' ) . '

' . '

' . __( 'No.', 'backupwordpress' ) . '

' . '

' . __( 'I\'m not receiving my backups by email', 'backupwordpress' ) . '

' . '

' . __( 'Most servers have a filesize limit on email attachments, it\'s generally about 10mb. If your backup file is over that limit, it won\'t be sent attached to the email. Instead, you should receive an email with a link to download the backup. If you aren\'t even receiving that, then you likely have a mail issue on your server that you\'ll need to contact your host about.', 'backupwordpress' ) . '

' . '

' . __( 'How many backups are stored by default?', 'backupwordpress' ) . '

' . '

' . __( 'BackUpWordPress stores the last 10 backups by default.', 'backupwordpress' ) . '

' . '

' . __( 'How long should a backup take?', 'backupwordpress' ) . '

' . '

' . __( 'Unless your site is very large (many gigabytes) it should only take a few minutes to perform a backup. If your back up has been running for longer than an hour, it\'s safe to assume that something has gone wrong. Try de-activating and re-activating the plugin. If it keeps happening, contact support.', 'backupwordpress' ) . '

' . '

' . __( 'What do I do if I get the wp-cron error message?', 'backupwordpress' ) . '

' . '

' . __( 'The issue is that your wp-cron.php is not returning a 200 response when hit with a HTTP request originating from your own server, it could be several things. In most cases, it\'s an issue with the server / site.', 'backupwordpress' ) . '

' . '

' . __( 'There are some things you can test to confirm this is the issue.', 'backupwordpress' ) . '

' . '' . '

' . __( 'For further help, please post on our support forums', 'backupwordpress' ) . '

' . '

' . __( 'How to get BackUpWordPress working in Heart Internet', 'backupwordpress' ) . '

' . '

' . __( 'The script to be entered into the Heart Internet cPanel is: /usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php (note the space between php5 and the location of the file). The file wp-cron.php chmod must be set to 711.', 'backupwordpress' ) . '

' . '

' . __( 'My backups seem to be failing?', 'backupwordpress' ) . '

' . '

' . __( 'If your backups are failing, it\'s commonly caused by a lack of available resources on your server. To establish this is the case, exclude the complete (or parts of the) uploads folder and run a backup. If that succeeds, you know it\'s probably a server issue. If it does not succeed, you can seek further help on our support forums', 'backupwordpress' ) . '

'; ================================================ FILE: admin/filesystem-credentials.php ================================================ id ) { // Set the main plugin page to be the active submenu page $submenu_file = HMBKP_PLUGIN_SLUG; } return $submenu_file; } add_filter( 'submenu_file', 'HM\BackUpWordPress\highlight_submenu' ); /** * Add a link to the backups page to the plugin action links. * * @param array $links * @param string $file * * @return array $links */ function plugin_action_link( $links, $file ) { if ( false !== strpos( $file, HMBKP_PLUGIN_SLUG ) ) { array_push( $links, '' . __( 'Backups', 'backupwordpress' ) . '' ); } return $links; } add_filter( 'plugin_action_links', 'HM\BackUpWordPress\plugin_action_link', 10, 2 ); /** * Add Contextual Help to Backups tools page. * * Help is pulled from the readme FAQ. * * @return null */ function contextual_help() { // Pre WordPress 3.3 compat if ( ! method_exists( get_current_screen(), 'add_help_tab' ) ) { return; } ob_start(); require_once( HMBKP_PLUGIN_PATH . 'admin/constants.php' ); $constants = ob_get_clean(); ob_start(); include_once( HMBKP_PLUGIN_PATH . 'admin/faq.php' ); $faq = ob_get_clean(); get_current_screen()->add_help_tab( array( 'title' => __( 'FAQ', 'backupwordpress' ), 'id' => 'hmbkp_faq', 'content' => wp_kses_post( $faq ), ) ); get_current_screen()->add_help_tab( array( 'title' => __( 'Constants', 'backupwordpress' ), 'id' => 'hmbkp_constants', 'content' => wp_kses_post( $constants ), ) ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-requirements.php' ); ob_start(); require_once( HMBKP_PLUGIN_PATH . 'admin/server-info.php' ); $info = ob_get_clean(); get_current_screen()->add_help_tab( array( 'title' => __( 'Server Info', 'backupwordpress' ), 'id' => 'hmbkp_server', 'content' => $info, ) ); get_current_screen()->set_help_sidebar( '

' . esc_html__( 'For more information:', 'backupwordpress' ) . '

GitHub

' . esc_html__( 'Support Forums', 'backupwordpress' ) . '

' . esc_html__( 'Help with translation', 'backupwordpress' ) . '

' ); } add_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\BackUpWordPress\contextual_help' ); ================================================ FILE: admin/page.php ================================================

BackUpWordPress

================================================ FILE: admin/schedule-form-excludes.php ================================================ get_excludes(); $user_excludes = $excludes->get_user_excludes(); ?>

$exclude ) : $exclude_path = new \SplFileInfo( trailingslashit( Path::get_root() ) . ltrim( str_ireplace( Path::get_root(), '', $exclude ), '/' ) ); ?>
isFile() ) : ?>
isDir() ) : ?>
get_default_excludes() ) ) || ( Path::get_path() === trailingslashit( Path::get_root() ) . untrailingslashit( $exclude ) ) ) : ?>

$file ) : $is_excluded = $is_unreadable = false; // Check if the file is excluded. if ( $excludes->is_file_excluded( $file ) ) : $is_excluded = true; endif; // Skip unreadable files. if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() ) : $is_unreadable = true; endif; ?>
/ / filesize( $root ); $excluded_size = $excluded_site_size->filesize( $root ); $excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size ); ?>
isFile() ) : ?>
isDir() ) : ?>
getBasename() ); ?> isFile() ) : ?> getBasename() ); ?> isDir() ) : ?> getBasename() ); ?> isDir() && Site_Size::is_site_size_being_calculated() ) : ?> filesize( $file ); if ( false !== $size ) : $size = $size; $excluded_size = $excluded_site_size->filesize( $file ); ?> isDir() || ( $file->isFile() && $is_excluded ) ) : if ( $excluded_size ) { $excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size ); } if ( $size ) { $size = size_format( $size ); } /* translators: 1: Excluded size 2: Overall directory/file size */ printf( esc_html__( '%1$s of %2$s', 'backupwordpress' ), $excluded_size, $size ); elseif ( ! $is_unreadable ) : echo esc_html( size_format( $size ) ); else : echo '-'; endif; ?> -- getPerms() ), - 4 ) ); else : echo '-'; endif; ?> isLink() ) : ?> isDir() ) : esc_html_e( 'Folder', 'backupwordpress' ); else : esc_html_e( 'File', 'backupwordpress' ); endif; ?> getPathname(); // Excluded directories need to be trailingslashed. if ( $file->isDir() ) : $exclude_path = trailingslashit( wp_normalize_path( $file->getPathname() ) ); endif; ?>

================================================ FILE: admin/schedule-form.php ================================================

get_schedule_start_time( false ) ) : $start_time = time(); endif; ?> field(); endforeach; ?>

get_type(), $schedule->get_excludes() ); if ( $site_size->is_site_size_cached() ) : printf( __( 'This schedule will store a maximum of %s of backups.', 'backupwordpress' ), '' . esc_html( size_format( $site_size->get_site_size() * $schedule->get_max_backups() ) ) . '' ); endif; ?>

================================================ FILE: admin/schedule-sentence.php ================================================ get_type() ) ); // Backup Time $day = date_i18n( 'l', $schedule->get_next_occurrence( false ) ); // Next Backup $next_backup = 'title="' . esc_attr( sprintf( __( 'The next backup will be on %1$s at %2$s %3$s', 'backupwordpress' ), date_i18n( get_option( 'date_format' ), $schedule->get_next_occurrence( false ) ), date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ), date_i18n( 'T', $schedule->get_next_occurrence( false ) ) ) ) . '"'; // Backup status $status = new Backup_Status( $schedule->get_id() ); // Backup Re-occurrence switch ( $schedule->get_reoccurrence() ) : case 'hourly' : $reoccurrence = date_i18n( 'i', $schedule->get_next_occurrence( false ) ) === '00' ? '' . __( 'hourly on the hour', 'backupwordpress' ) . '' : sprintf( __( 'hourly at %s minutes past the hour', 'backupwordpress' ), '' . intval( date_i18n( 'i', $schedule->get_next_occurrence( false ) ) ) ) . ''; break; case 'daily' : $reoccurrence = sprintf( __( 'daily at %s', 'backupwordpress' ), '' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '' ); break; case 'twicedaily' : $times[] = date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ); $times[] = date_i18n( get_option( 'time_format' ), strtotime( '+ 12 hours', $schedule->get_next_occurrence( false ) ) ); sort( $times ); $reoccurrence = sprintf( __( 'every 12 hours at %1$s & %2$s', 'backupwordpress' ), '' . esc_html( reset( $times ) ) . '', '' . esc_html( end( $times ) ) ) . ''; break; case 'weekly' : $reoccurrence = sprintf( __( 'weekly on %1$s at %2$s', 'backupwordpress' ), '' .esc_html( $day ) . '', '' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '' ); break; case 'fortnightly' : $reoccurrence = sprintf( __( 'every two weeks on %1$s at %2$s', 'backupwordpress' ), '' . $day . '', '' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '' ); break; case 'monthly' : $reoccurrence = sprintf( __( 'on the %1$s of each month at %2$s', 'backupwordpress' ), '' . esc_html( date_i18n( 'jS', $schedule->get_next_occurrence( false ) ) ) . '', '' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '' ); break; case 'manually' : $reoccurrence = __( 'manually', 'backupwordpress' ); break; default : $reoccurrence = __( 'manually', 'backupwordpress' ); $schedule->set_reoccurrence( 'manually' ); endswitch; $server = '' . esc_attr( str_replace( Path::get_home_path(), '', Path::get_path() ) ) . ''; // Backup to keep switch ( $schedule->get_max_backups() ) : case 1 : $backup_to_keep = sprintf( __( 'store the most recent backup in %s', 'backupwordpress' ), $server ); break; case 0 : $backup_to_keep = sprintf( __( 'don\'t store any backups in on this server', 'backupwordpress' ), Path::get_path() ); break; default : $backup_to_keep = sprintf( __( 'store the last %1$s backups in %2$s', 'backupwordpress' ), esc_html( $schedule->get_max_backups() ), $server ); endswitch; $email_msg = ''; $services = array(); foreach ( Services::get_services( $schedule ) as $file => $service ) { if ( is_wp_error( $service ) ) { $email_msg = $service->get_error_message(); } elseif ( 'Email' === $service->name ) { $email_msg = wp_kses_post( $service->display() ); } elseif ( $service->is_service_active() && $service->display() ) { $services[] = esc_html( $service->display() ); } } if ( ! empty( $services ) && count( $services ) > 1 ) { $services[ count( $services ) -2 ] .= ' & ' . $services[ count( $services ) -1 ]; array_pop( $services ); } ?>
' . esc_html( $type ) . '', $filesize, $reoccurrence, $backup_to_keep ); if ( $email_msg ) { $sentence .= ' ' . $email_msg; } if ( ! empty( $services ) ) { $sentence .= ' ' . sprintf( __( 'Send a copy of each backup to %s.', 'backupwordpress' ), implode( ', ', $services ) ); } echo $sentence; ?> get_schedule( $schedule->get_id() ) ) : schedule_status( $schedule ); endif; ?>
get_type(), $schedule->get_excludes() ); if ( 'database' === $schedule->get_type() || $site_size->is_site_size_cached() ) { return sprintf( '(%s)', esc_html( $site_size->get_formatted_site_size() ) ); } return ''; } ================================================ FILE: admin/schedule-settings.php ================================================ get_schedule( $schedule->get_id() ) ) { ?>
| | get_type() ) : ?> | has_form() ) { continue; } ?> name ); ?> |
get_slug() === $_GET['hmbkp_panel'] ) : ?>

name ); ?>

form(); ?>
================================================ FILE: admin/server-info.php ================================================

raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) ) : ?> raw_result() ) ) : ?>
name() ); ?> result() ); ?>
name() ); ?>
    raw_result() ); ?>
name() ); ?>
result() ); ?>
$service ) : echo wp_kses_post( call_user_func( array( $service, 'intercom_data_html' ) ) ); endforeach; ================================================ FILE: admin/upsell.php ================================================
', '' ); $hide_notice = get_site_option( 'hmbkp_hide_rate_notice', false ); if(empty($hide_notice) || time() >= $hide_notice) { ?>

code:before { content: "\00a0 \2713 "; font-size: 11px; } .hmbkp_active { background: #E5F7E8; } /*Fix the bottom margin for warning messages in the admin*/ div#hmbkp-warning, h2.nav-tab-wrapper + div[id^="hmbkp"] { margin: 20px 0 15px; } h2 + div[id^="hmbkp"] input { max-width: 100%; } li a.hmbkp-running:not(.current):before { width: 20px; height: 20px; margin: -1px 10px -5px 0; content: ""; background: transparent url('spinner-2x.gif') no-repeat 0 0; background-size: 20px; display: inline-block; } .hmbkp-upsell { margin-top: 40px; padding-top: 16px; border-top: 1px solid #ccc; } .hmbkp-schedule-sentence { font-size: 16px; margin: 0 0 20px 0; background-color: #FBFBFB; padding: 20px; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba( 0,0,0,.04 ); } .hmbkp-schedule-sentence::before { content: "\2714"; margin-right: 10px; width: 16px; height: 60px; display: block; float: left; } .hmbkp-schedule-sentence.hmbkp-error:before { content: "\2718"; } .hmbkp-schedule-sentence.hmbkp-running:before { width: 20px; height: 80px; margin: -1px 10px 0 0; content: ""; background: transparent url('spinner-2x.gif') no-repeat 0 0; background-size: 20px; display: inline-block; } .hmbkp-schedule-sentence .hmbkp-status { display: none; font-size: 12px; color: #666; margin: 2px 0 0 30px; } .hmbkp-schedule-sentence.hmbkp-running .hmbkp-status { display: block; } .hmbkp-schedule-sentence.hmbkp-running .hmbkp-schedule-actions { display: none; } .hmbkp-schedule-sentence *:not(a)[title] { border-bottom: 1px dotted #CCC; cursor: help; } .hmbkp-schedule-sentence .hmbkp-status[title] { border-bottom: none; } .hmbkp-schedule-sentence .submit { padding: 0; } .hmbkp-schedule-sentence .hmbkp-schedule-actions { visibility: visible; font-size: 12px; margin: 0 0 0 26px; padding: 10px 0 0; } .hmbkp-schedule-actions a { white-space: nowrap; } .hmbkp-schedule-sentence .row-actions { position: static; } .hmbkp-schedule-settings { border-top: 1px solid #e5e5e5; margin: 20px -20px -20px; background-color: #f5f5f5; padding: 0 20px 20px; } .hmbkp-ajax-loading, button.hmbkp-ajax-loading { padding-left: 20px; position: relative; } .hmbkp-ajax-loading::after { content: ""; width: 16px; height: 16px; background-image: url('spinner-2x.gif'); background-size: 16px 16px; background-repeat: no-repeat; background-position: 0 0; position: absolute; right: -30px; top: 5px; } .delete-action { color: #a00; transition: all 300ms ease; } .delete-action:hover .delete-action:focus { color: red; transition: all 300ms ease; } .strikethrough { text-decoration: line-through; } table.widefat tbody tr:nth-child(odd) { background-color: #f9f9f9 } .hmbkp-exclude-settings td:first-child, .hmbkp-exclude-settings th:first-child { width: 20px; padding-right: 0 } .hmbkp-exclude-settings thead tr:last-child { background-color: #f9f9f9; } .hmbkp-exclude-settings table .button-secondary { line-height: 18px; height: 20px; } thead td { border-bottom: 1px solid #e1e1e1; } .hmbkp-exclude-settings table .spinner { display: block; float: left; margin: 0; } .hmbkp-schedule-settings .column-format code { white-space: nowrap; } .column-filesize code { position: relative; } .column-filesize .dashicons-update { display: none; overflow: hidden; position: absolute; width: 100%; left: 0; text-align: center; background-color: rgba( 255, 255, 255, .8 ) } .column-filesize .dashicons-update span { display: none; } .column-filesize:hover .dashicons-update { display: inline-block; } .hmbkp-exclude-settings td span.reason { color: #CCC; } .server-info { overflow: auto; max-height: 50%; outline: black 1px solid; } .server-info pre { max-height: 100px; overflow-x:hidden; } .page-title-action span.dashicons-admin-users { position: relative; display:inline-block; vertical-align: middle; top:-2px; } pre { background-color: #eee; padding: 10px; white-space: pre; max-height: 320px; overflow: auto; word-wrap: normal !important; } @media screen and (max-width: 768px) { .wrap h2 { padding: 10px 0 0 0; } .hmbkp-schedule-sentence::before { height: 80px; } h2 .nav-tab { display: block; padding: 10px; margin: 0; } .hmbkp-schedule-sentence { margin: 10px 0; padding: 10px; } #intercom-info { display: none; } .hmbkp-schedule-settings { padding: 0 10px 10px; } .hmbkp-exclude-settings table { margin: 0 -10px; border-left: none; border-right: none; width: calc(100% + 20px) } .hmbkp-exclude-settings tr > *:first-child { display: none; } .hmbkp-schedule-settings tr *:nth-child(4), .hmbkp-schedule-settings tr *:nth-child(5) { display: none; } .hmbkp-schedule-settings thead tr:nth-child(2) { display: none; } .hmbkp-schedule-settings { margin-left: -10px; margin-right: -10px; margin-bottom: -10px; } table.widefat tbody tr:nth-child(even) { background-color: #fff } table.widefat tbody tr:nth-child(odd) { background-color: #f9f9f9 } } ================================================ FILE: assets/hmbkp.js ================================================ var BackUpWordPressAdmin = (function($){ 'use strict'; var recurrenceType; function init(){ recurrenceType = $( 'select#hmbkp_schedule_recurrence_type' ); // Don't ever cache ajax requests $.ajaxSetup( {'cache': false} ); if ( recurrenceType.length ) { hmbkpToggleScheduleFields( recurrenceType.val() ); $( document ).on( 'change', 'select#hmbkp_schedule_recurrence_type', function () { hmbkpToggleScheduleFields( $( this ).val() ); } ); } $('.notice.is-dismissible').on('click', '.notice-dismiss', function(){ $.post( ajaxurl, { 'action': 'hmbkp_dismiss_notice' } ); }); $('.notice.rate.is-dismissible').on('click', '.notice-dismiss', function(){ $.post( ajaxurl, { 'action': 'hmbkp_dismiss_rate_notice' } ); }); // Show delete confirm message for delete schedule $( document ).on( 'click', '.hmbkp-schedule-actions .delete-action', function ( e ) { if ( ! confirm( hmbkp.delete_schedule ) ) { e.preventDefault(); } } ); // Show delete confirm message for delete backup $( document ).on( 'click', '.hmbkp_manage_backups_row .delete-action', function ( e ) { if ( ! confirm( hmbkp.delete_backup ) ) { e.preventDefault(); } } ); // Show delete confirm message for remove exclude rule $( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form .delete-action', function ( e ) { if ( ! confirm( hmbkp.remove_exclude_rule ) ) { e.preventDefault(); } } ); // Test the cron response using ajax $.post( ajaxurl, {'nonce': hmbkp.nonce, 'action': 'hmbkp_cron_test'}, function ( data ) { if ( data !== '1' ) { $( '.wrap > h2' ).after( data ); } } ); // Run a backup $( document ).on( 'click', '.hmbkp-run', function ( e ) { wp.heartbeat.interval( 'fast' ); $( this ).closest( '.hmbkp-schedule-sentence' ).addClass( 'hmbkp-running' ); $( '.hmbkp-error' ).removeClass( 'hmbkp-error' ); var scheduleId = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ); $.post( ajaxurl, { 'hmbkp_run_schedule_nonce': hmbkp.hmbkp_run_schedule_nonce, 'action': 'hmbkp_run_schedule', 'hmbkp_schedule_id': scheduleId } ); e.preventDefault(); } ); // Send the schedule id with the heartbeat $( document ).on( 'heartbeat-send', function ( e, data ) { data.hmbkp_schedule_id = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ); if ( $( '.hmbkp-schedule-sentence.hmbkp-running' ).length ) { data.hmbkp_is_in_progress = true; } else { data.hmbkp_client_request = 'site_size'; } } ); // Update schedule status on heartbeat tick $( document ).on( 'heartbeat-tick', function ( e, data ) { // If the schedule has finished then reload the page if ( data.hmbkp_schedule_status === 0 && ! $( '.hmbkp-error' ).length ) { location.reload( true ); } // If the schedule is still running then update the schedule status if ( ( data.hmbkp_schedule_status !== 0 ) && ( data.hmbkp_schedule_status !== undefined ) ) { $( '.hmbkp-status' ).replaceWith( data.hmbkp_schedule_status ); } if ( ( data.hmbkp_site_size !== undefined ) && ( $( 'code.calculating' ).length ) ) { $( 'code.calculating' ).text( data.hmbkp_site_size ); var excludes = $( '.hmbkp-exclude-settings' ); if ( excludes.length ) { excludes.replaceWith( data.hmbkp_dir_sizes ); } } } ); // Closing ThickBox Modal Window $( document ).on( 'click', '.hmbkp-thickbox-close', function ( e ) { e.preventDefault(); window.parent.tb_remove(); } ); $( document ).on( 'click', '[id^="hmbkp-warning-"] .notice-dismiss', function(){ $.post( ajaxurl, { 'action': 'hmbkp_dismiss_error' } ); } ); } function hmbkpToggleScheduleFields( recurrence ) { recurrence = ( typeof recurrence !== 'undefined' ) ? recurrence : 'manually'; var settingFields = jQuery( '.recurring-setting' ); var scheduleSettingFields = jQuery( '#schedule-start' ); var twiceDailyNote = jQuery( '.twice-js' ); switch ( recurrence ) { case 'manually': settingFields.hide(); break; case 'hourly' : settingFields.hide(); break; case 'daily' : settingFields.hide(); scheduleSettingFields.show(); twiceDailyNote.hide(); break; case 'twicedaily' : settingFields.hide(); scheduleSettingFields.show(); twiceDailyNote.show(); break; case 'weekly' : // fall through case 'fortnightly' : settingFields.hide(); jQuery( '#start-day' ).show(); scheduleSettingFields.show(); twiceDailyNote.hide(); break; case 'monthly' : settingFields.hide(); scheduleSettingFields.show(); jQuery( '#start-date' ).show(); twiceDailyNote.hide(); break; } } return { init: init }; })(jQuery); jQuery( document ).ready( BackUpWordPressAdmin.init ); ================================================ FILE: backdrop/README.md ================================================ # Backdrop Backdrop is a simple library that does one thing: allows you to run one-off tasks in the background. ## How to Use ```php function my_awesome_function( $id ) { // Download initial data to my site. Might take a long time! $data = wp_remote_get( 'http://example.com/' . $id ); if ( is_wp_error( $data ) ) { return $data; } update_option( 'initial_data', $data ); } add_action( 'init', function () { if ( ! get_option( 'initial_data' ) ) { $task = new \HM\Backdrop\Task( 'my_awesome_function', get_current_user_id() ); $task->schedule(); } } ); ``` ## API ### `Task::__construct( $callback [, $...] )` Creating a new task sets up all of the internal data for your task. Pass in your callback followed by your arguments to the function, and Backdrop will call it in a background process. #### Arguments * `$callback`: Callback method you want to use. Can be any callable type (including object methods and static methods) **except for anonymous functions**. Closures cannot be serialized, so they cannot be used for Backdrop callbacks. This is an internal PHP limitation. * `$...`: Any other arguments you'd like to pass to your callback, as variable arguments. e.g. `new Task( 'a', 'b', 'c', 'd' )` maps to `a( 'b', 'c', 'd' )` #### Return Value None (constructor). ### `Task::schedule()` Schedules your task to run. Typically runs after your page has been rendered, in a separate process. Backdrop de-duplicates tasks based on the arguments passed in. For example, you can do `new Task( 'myfunc', 1 )` on every request, and only one will be run. After this has been run, the next call will schedule again. To avoid this, you should pass in unique identifiers as needed. Everything that makes your task unique should be passed in and used by your function, as global state may change. #### Arguments None. #### Return Value Either `true`, or a `WP_Error` on failure. The error object will indicate the type of error; typically this is a `hm_backdrop_scheduled` if the task is already scheduled to run or is currently running. ### `Task::is_scheduled()` Checks whether your task is scheduled to run. #### Arguments None. #### Return Value Boolean indicating whether your task is scheduled to run, or is already running. #### `Task::cancel()` Cancels a previously scheduled task. Note that if the task is already running, this will not cancel execution; it simply removes it from the tasks scheduled to run. #### Arguments None. #### Return Value Either `true`, or a `WP_Error` on failure. The error object will indicate the type of error; typically this is a `hm_backdrop_not_scheduled` if the task hasn't been scheduled. ## Compatibility Backdrop is compatible with PHP 5.2 and upwards. ### PHP 5.2 Use the `HM_Backdrop_Task` class (and `HM_Backdrop_Server`). **Important note:** If subclassing `HM_Backdrop_Server` with 5.2 compatibility, you *must* reimplement the `spawn` method, as PHP 5.2 does not include late static bindings. This is automatically handled for 5.3+. Here's a minimal implementation that you can use: ``` class MyBackdrop_Server extends HM_Backdrop_Server { public static function spawn() { return self::spawn_run( __CLASS__ ); } } ``` ### PHP 5.3+ Use the `HM\Backdrop\Task` class (and `HM\Backdrop\Server`). You can also import the classes with the `use` keyword; for example, `use HM\Backdrop\Task` will allow you to create tasks with `new Task`. ## License Backdrop is licensed under the GPL version 2. Copyright 2014 Human Made Limited ================================================ FILE: backdrop/hm-backdrop.php ================================================ =' ) ) { require dirname( __FILE__ ) . '/namespace.php'; add_action( 'wp_ajax_nopriv_hm_backdrop_run', 'HM\Backdrop\Server::spawn' ); } else { add_action( 'wp_ajax_nopriv_hm_backdrop_run', 'HM_Backdrop_Server::spawn' ); } ================================================ FILE: backdrop/license.txt ================================================ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ================================================ FILE: backdrop/namespace.php ================================================ run(); exit; } } ================================================ FILE: backdrop/task.php ================================================ callback = $callback; if ( func_num_args() > 1 ) { $args = func_get_args(); $this->params = array_slice( $args, 1 ); } $this->key = $this->get_unique_id(); } public function schedule() { if ( $this->is_scheduled() ) { return new WP_Error( 'hm_backdrop_scheduled', __( 'Task is already scheduled to run', 'hm_backdrop' ) ); } $data = array( 'callback' => $this->callback, 'params' => $this->params ); set_transient( 'hm_backdrop-' . $this->key, $data, 300 ); add_action( 'shutdown', array( $this, 'spawn_server' ) ); return true; } public function is_scheduled() { return (bool) $this->get_data(); } public function cancel() { if ( ! $this->is_scheduled() ) { return new WP_Error( 'hm_backdrop_not_scheduled', __( 'Task is not scheduled to run', 'hm_backdrop' ) ); } delete_transient( 'hm_backdrop-' . $this->key ); return true; } public function spawn_server() { $server_url = admin_url( 'admin-ajax.php' ); $data = array( 'action' => 'hm_backdrop_run', 'key' => $this->key, ); $args = array( 'body' => $data, 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), ); wp_remote_post( $server_url, $args ); return true; } protected function get_data() { return get_transient( 'hm_backdrop-' . $this->key ); } protected function get_unique_id() { return substr( sha1( serialize( $this->callback ) . serialize( $this->params ) ), -28 ); } } ================================================ FILE: backupwordpress.php ================================================ Tools → Backups. On multisite, you'll find me under the Network Settings menu. Version: 3.10 Author: XIBO Ltd Author URI: https://profiles.wordpress.org/xibodevelopment License: GPL-2+ License URI: http://www.gnu.org/licenses/gpl-2.0.txt Text Domain: backupwordpress Domain Path: /languages Network: true */ /* Copyright 2011 - 2018 XIBO Ltd This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // Only load if >= PHP 5.3 if ( ! defined( 'HMBKP_PLUGIN_PATH' ) ) { define( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) ); } if ( ! defined( 'HMBKP_BASENAME' ) ) { define( 'HMBKP_BASENAME', plugin_basename( __FILE__ ) ); } require_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' ); register_activation_hook( __FILE__, array( 'HMBKP_Setup', 'activate' ) ); register_deactivation_hook( __FILE__, array( 'HMBKP_Setup', 'deactivate' ) ); if ( HMBKP_Setup::meets_requirements() ) { require_once( HMBKP_PLUGIN_PATH . 'classes/class-plugin.php' ); } else { add_action( 'admin_init', array( 'HMBKP_Setup', 'self_deactivate' ) ); add_action( 'all_admin_notices', array( 'HMBKP_Setup', 'display_admin_notices' ) ); } ================================================ FILE: bin/readme.txt ================================================ === BackUpWordPress === Contributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance, dnutbourne, snightingale Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment Requires at least: 3.9 Tested up to: 5.1 Stable tag: 3.10 Simple automated backups of your WordPress-powered website. == Description == BackupWordPress was created by our friends at HumanMade but is now under new ownership. We're committed to opensource and WordPress and will provide free support for the many BackupWordPress fans. We'll make occasional updates to the free software - please send us any patches you'd like to see released here: [https://github.com/orgs/xibodevelopment/](https://github.com/orgs/xibodevelopment/) However, we'll no longer be selling or supporting the paid add-ons (e.g. for backups to Dropbox and Google Drive). It's certainly a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend [UpdraftPlus WordPress Backups](https://updraftplus.com/?afref=744) which can do things for free BackupWordPress Premium could do on a paid basis. Click here for [full comparison](https://updraftplus.com/backupwordpress/?afref=744). BackUpWordPress will back up your entire site including your database and all your files on a schedule that suits you. Try it now to see how easy it is! This plugin requires PHP version 5.3.2 or later = Features = * Super simple to use, no setup required. * Works in low memory, "shared host" environments. * Manage multiple schedules. * Option to have each backup file emailed to you. * Uses `zip` and `mysqldump` for faster backups if they are available. * Works on Linux & Windows Server. * Exclude files and folders from your backups. * Good support should you need help. * Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque. = Help develop this plugin = The BackUpWordPress plugin is hosted on GitHub, if you want to help out with development or testing then head over to [https://github.com/orgs/xibodevelopment/backupwordpress/](https://github.com/orgs/xibodevelopment/backupwordpress/) = Translations = We'd also love help translating the plugin into more languages, if you can help then please visit [https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/](https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/) to start translating. == Installation == 1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server. 2. Activate the plugin. 3. Sit back and relax safe in the knowledge that your whole site will be backed up every day. The plugin will try to use the `mysqldump` and `zip` commands via shell if they are available, using these will greatly improve the time it takes to back up your site. == Frequently Asked Questions == **Where does BackUpWordPress store the backup files?** Backups are stored on your server in `/wp-content/backups`, you can change the directory. Important: By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does mean that your backup directory can get quite large. **What if I want to back up my site to another destination?** We no longer be sell or support the paid add-ons (e.g. for backups to Dropbox and Google Drive). It's certainly a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend [UpdraftPlus WordPress Backups](https://updraftplus.com/?afref=744) which can do things for free BackupWordPress Premium could do on a paid basis. Click here for [full comparison](https://updraftplus.com/backupwordpress/?afref=744). **How do I restore my site from a backup?** You need to download the latest backup file either by clicking download on the backups page or via `FTP`. `Unzip` the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely `phpMyAdmin`). **Does BackUpWordPress back up the backups directory?** No. **I'm not receiving my backups by email** Most servers have a filesize limit on email attachments, it's generally about 10mb. If your backup file is over that limit, it won't be sent attached to the email. Instead, you should receive an email with a link to download the backup. If you aren't even receiving that, then you likely have a mail issue on your server that you'll need to contact your host about. **How many backups are stored by default?** BackUpWordPress stores the last 10 backups by default. **How long should a backup take?** Unless your site is very large (many gigabytes) it should only take a few minutes to perform a backup. If your back up has been running for longer than an hour, it's safe to assume that something has gone wrong. Try de-activating and re-activating the plugin. If it keeps happening, contact support. **What do I do if I get the wp-cron error message?** The issue is that your `wp-cron.php` is not returning a `200` response when hit with a HTTP request originating from your own server, it could be several things. In most cases, it's an issue with the server / site. There are some things you can test to confirm this is the issue. * Are scheduled posts working? (They use wp-cron as well.) * Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around.) * If you click manual backup, does it work? * Try adding `define( 'ALTERNATE_WP_CRON', true );` to your `wp-config.php`. Do automatic backups work? * Is your site private (i.e. is it behind some kind of authentication, maintenance plugin, .htaccess)? If so, wp-cron won't work until you remove it. If you are and you temporarily remove the authentication, do backups start working? **How to get BackUpWordPress working in Heart Internet** The script to be entered into the Heart Internet cPanel is: `/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php` (note the space between php5 and the location of the file). The file `wp-cron.php` `chmod` must be set to `711`. **My backups seem to be failing?** If your backups are failing, it's commonly caused by a lack of available resources on your server. To establish this is the case, exclude the complete (or parts of the) uploads folder and run a backup. If that succeeds, you know it's probably a server issue. If it does not succeed, you can find further assistance on our support forums. **Further Support & Feedback** General support questions should be posted in the WordPress support forums, tagged with backupwordpress. For development issues, feature requests or anybody wishing to help out with development checkout BackUpWordPress on GitHub. == Screenshots == 1. Manage multiple schedules. 2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email. 3. Easily manage exclude rules and see exactly which files are included and excluded from your backup. == Upgrade Notice == = 3.4 = * This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write unit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows users should see major improvements to reliability. = 3.3.4 = * WordPress 4.4 compatibility. = 3.3.1 = * Fixes a bug that would prevent downloading backups since 3.3.0 - please update. = 3.2.5 = * Security fixes related to add_query_arg = 3.2.1 = * Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups. = 3.1.3 = * Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons. = 3.0.4 = * Fixes a few minor bugs. Immediate update is recommended. = 3.0.2 = * Important: we have dropped support for PHP 5.2, you will not be able to activate BackUpWordPress on a server running PHP versions older than PHP 5.3.29 = 3.0.1 = * This is a critical update. Fixes a bug in the core backup library. Please update immediately. == Changelog == ### 3.10 / 2019-06-12 * Fixed whitelist-html ### 3.9 / 2019-06-10 * Readme update ### 3.8 / 2018-11-01 * GNU Wording change ### 3.7.2 / 2018-10-29 * Check remove intercomm links ### 3.7.1 / 2018-09-11 * Fixed admin notices ### 3.7 / 2018-08-30 * Updated readme to reflect ownership changes * Stripped out support and premium links ### 3.6.4 / 2016-06-02 * Various improvements to exclusion handling. * i18n improvements. * Misc. UI improvements. ### 3.6.3.1 / 2016-12-14 * Fix issue where low disk space caused the admin interface to be unavailable * Fix issue where admin notices were causing databases and error logs to fill up * Improves file size calculations * Improves remaining disk space calculations * Improves file exclusion methods * Misc admin interface improvements * Misc code quality improvements and bug fixes ### 3.6.2 / 2016-08-02 * Improves admin performance. * Improves security in internationalised strings. ### 3.6.1 / 2016-04-26 * Bug fixes/improvements in disk space calculation * Misc bug fixes ### 3.6.0 / 2016-03-31 * Fix a bug caused by using a function incompatible with min PHP version requirements * Misc code quality improvements and bug fixes * Fix bugs in the code responsible for admin notices * Display disk space info * Uninstall cleanup * Introduce a dedicated extensions page ### 3.5 / 2016-03-10 * Reduce duplication and improve code readability when echoing filesizes * Improve how filesizes are handled in the Your Site list * Switch to storing site size data in a file, large sites could cause database errors when saving the option * Re-remove the PHP User and Group Requirements * Check that the backup file exists before attempting to check it's contents * Only call getPerms on readable files to ensure we avoid a fatal error * Ensure error are correctly check in verify_backup * Use Symfony Process instead of shell_exec for all our system calls * More unit tests * Update dependencies * Detect disabled functions defined in php.ini, now accounts for different separators. ### 3.4.5 / 2016-02-23 * Fix fatal error on upgrade ### 3.4.4 / 2016-02-23 * Ensure temporary files are correctly cleaned up before and after running a backup. * Avoid killing site if plugin is active on PHP 52 * Allow custom secure key using filter * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.4-beta * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.3 * Fix a bug where backups were not downloadable when WordPress installed in a subdirectory ### 3.4.2 * Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled. * Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling. * Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them. * Improve our upgrade code for users upgrading from pre version 2.0. Fixes a possible fatal error and ensures backups and backup settings are correctly brought forward. ### 3.4.1 * Fix a possible `PHP Warning` in the Schedule Sentence. ### 3.4 / 2016/01/20 * Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage. * Vastly improved Windows Server support. * We no longer write errors and warnings to files on disk. * Update to the latest version of `symfony/finder`. * Update to the latest version of `ifsnop/mysqldump-php`. ### 3.3.4 / 2015-12-10 * Fixes styling issues with WordPress 4.4 ### 3.3.3 / 2015-11-13 * Fix broken Intercom support window * Fixes Typos in i18n strings * Backups finish faster * Fix an issue that caused the site size to report as twice as large as it should * Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`) ### 3.3.2 / 2015-10-15 * Misc improvements ### 3.3.1 / 2015-10-12 * Fix false positive error message. * Fix broken download links ### 3.3.0 / 2015-10-09 * Dropped support for PclZip * Fixed duplicate cron schedule interval names ( props ucavus ) * Corrected some typos, grammar and punctuation ( props ucavus ) * Fixed a bug in the WP CLI command ( props duritong ) * Better message for wp-cron related errors * Replace 'bi-weekly' with less confusing wording * Fixed a few errors misc reported by code quality tool * Total site size display now subtracts excludes * Many general improvements and bug fixes #### 3.2.7 / 2015-07-27 * Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful * Simply output arrays rather than trying to be too clever about it * Start tracking PDO availability through Intercom * Catch database and files shell_exec warnings * Test under PHP 5.6 in Travis * Use the new backupwordpress@hmn.md email address everywhere * Clarify how people request access to Slack and GlotPress * Rewrite our contributing guidelines to be more comprehensive * Add instructions to contributing.md * Revert plugin name as it doesn't make a diff in search results * Always return an integer #### 3.2.6 / 2015-06-09 * Fixes admin page slug for multisite #### 3.2.5 / 2015-04-29 * Fixes an issue when evaluating expression with empty * Fixes a fatal error on PHP 5.3 * Displays other notices * Updates stable tag * Adds some escaping and sanitizing * Defines plugins dir for different environments * Adds tests for activation and deactivation hooks * Adds a debugging function for tests * Symlinks plugin into tests dir * Splits out deactivation code into separate functions * Fixes activation and deactivation hooks not being fired * Exclude backups folder from size calculation * Fixes a misplaced parenthesis * Fixes how error messages are bubbled up * get home path should return defined value * Removes redundant exclude statement as CVS folders are excluded by default * Adds a flag parameter to allow get_files to return all files including default excludes #### 3.2.4 / 2015-04-01 * Fixes default exclude pattern that was too greedy. #### 3.2.3 / 2015-04-01 * Fixes issue where files where 'cache' files were excluded by default. * Updates brazilian portuguese translations. * Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative. #### 3.2.2 / 2015-03-25 * Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version. #### 3.2.1 / 2015-03-25 * Check if shell_exec is available before running command * Only validate day of month if this is the schedule type * Make FS optional and fix the DB connect method * (issue-770) Exclude the folder, not the wildcard * (issue-751) Rename plugin #### 3.2 / 2015-03-16 * (issue-698) skip mySql bug * Use shell_exec * Remove use statement * Revert to using shell_exec * Remove Process * (cool-runnings-757) Add back session_write_close * (issue-479) Hide hours and minutes for hourly backups * (backupception) Only load if main site on multisite * (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths * (socket-to-me-one-more-time) Fix paths * Use socket if available * Display errors * Put the db dump in the archive first - fixes issue with large archive * Dont wait for response * Run schedule as a Backdrop task * Pass array directly to function * (issue-759) Fix require paths * check PHP version before anything else * Move plugin class to own file * Skip mysql bug error * Delete all BWP options * Start the process * Return and check WP_Error * (what-time-is-backup) Extract hours and minutes from the date as an array for display * Change plugin description if multisite * Use wp_get_sites * Add a comment * We check for this on plugin instantiation * Revert to clearing schedule and rescheduling * Delete schedules and leftover options from subsites * Ensure plugin only runs on main site * Fix Too Many Schedules * Use Symfony Process * (fix-incorrect-type-error) File is an SPL object so get path * Set root as default param * Delete backdrop transient * Force directory sizes recalculation * Define VCS abbr * Hide exclude patterns from Excludes list. * Check if user can connect * Test that the mysqldump command works * Add a couple of mysql versions * Automatically exclude VCS folders * Calculate Root size correctly * Get default rules from backup object * Do not auto ignore dot files * Count excluded * Do not count excluded * If its the root then return its size directly * Fix typo in transient names * Set and return class property instead * List default excludes as such * Require symfony finder * Clear transients on deactivate * Get list of files with Finder * Load composer packages * These are alredy filtered * Add some default excludes * Use absolute path for excludes added via UI * Fix tests * Fix conditional * Fix syntax error in travis YML * Run codesniffer only on pull requests * Update tested WP versions * Change min WP version required to match travis CI * Fix readme changelog placement * Add condtion for Cron and Ajax * Fix deactivate logic * Fixes recursive exclusion of files #### 3.1.4 / 2015-02-24 * (upgrade-options) Bump version * strtolower is redundant * Upgrade routine - renames service settings to avoid backslashes. * Use the Service name as the setting name * Clear settings for schedule settings * Fixes bug in displaying settings error notices * Update version number * Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons * Leave bare minimum to avoid fatal error * remove old main plugin class #### 3.1.3 / 2015-02-04 * Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade. #### 3.1.2 / 2015-02-03 * (simplify-bwp-file-timestamp) Simplify the file name timestamp * Fix class file name * (fixup-setup-class) Add missing transients to uninstall routine * switch Travis notifications to Slack instead of Hipchat * Do not delete backups on uninstall * wrap in parenthesis * Fix include paths after moving uninstall to own file herpderp * Update BackUp class include * Add all cases to switch * Pass scanned files sizes through conform_dir() * Fix some classes and requires * (origin/issue-684, issue-684) Fix namespaces * Remove unnecessary wildcard from regex * (crazy-refactor) Remove some duplication * Formatting * Fix Class name * Blank line * Uses a DirectoryIterator to delete files * Remove tests for now * Fix stable tag number * Revert to using uninstall.php * Add tests for uninstall and deactivate * Remove double lie break * Remove double line break * Remove phpdocumentor * We still need to require some scripts... * We dont need to check for this constant in the hook callback * Use get_col to directly have an array of schedule option names * Remove namespacing * Remove debugging * Make the uninstall, activation and deactivation hooks work * (change-singleton-implementation) Change the singleton implementation to not use the static() function * path argument interfers with wp-cli path argument. * Fix some scrutinizer issues, mostly major ones * Consistent default name for database dumps * Major 5.3 re-factoring fun * Minor code formatting * else if should be elseif * Update the WP_CLI command to fix some issues * Add support for copying and updating an existing backups #### 3.1.0 / 2015-01-13 * Correct $response1 variable * (origin/issue-652, issue-652) Suppress warnings from filesystem functions * Remove debugging function * (origin/issue-475, issue-475) Fix a French string * Format the intercom data better * Load Intercom in the admin footer * Fix some HTML issues * Add a function that returns a given option value * Return Unknown if no average exists or invalid * Add a start parameter to function * Pass in the start time as a parameter * Make strings translatable * Escape values * Adds a function to track backup duration and another to display it * Adds Average Backup Duration Info * Improve display of arrays * Fixes open_basedir warnings * Replace spaces with tabs for indentation * (wp-cron-test-improvements) Improve the reliability of the wp-cron test * Pop in the directory sizes * Adapt heartbeat pulse * Update Javascript * Update constant name * Load the default translations so that activation error message is in user language * Fix a few translatable strings * Update French translations * Re-uglify Intercom js * Use provided callback argument to determine current screen * remove deprecated code * Only show notices on BWP admin page * Fix class name * Make function public for now * Get an instance of BWP to load functions * Fix conditional * Show admin notice if fails to meet requirements * Remove unneeded function * Fix references * Refactor main class after addition of the Setup class * Introduce a setup class * Determine if we need to run a cleanup routine * Introduce a custom hook for addons * Refactor main plugin file into a singleton class * Bring activation and deactivation into main plugin class * css changes to fix support button alignment * Fixes issue preventing backups from running without JS * Remove back compat memory limit define * Refactor HMBKP_Notices to support non-persistant notices * Minor refactor for PHP minimum requirements notice * Clear previous backup notices when running a new backup * Fix issues with custom paths * Improved singleton pattern * Display errors in network admin * Change to text input so multiple email address are supported * Removes HTML tag from string * Account for new schedule * Make upsell sentence translatable * fix return type * Return true if transient exists * Check if constant is defined * Request the site size via heartbeat send * Pass site size through heartbeat * Only calculate if necessary #### 3.0.4 / 2014-12-10 * Simplify the backup count display * Enqueue scripts properly * Change how we check directory_sizes * Add BackUpWordPress test case class * Move class to separate file * Group help tab display functions * Update POT file * Make strings ready for translation #### 3.0.3 / 2014-12-06 * Add French translations * Update textdomain * Fix deleted function * Use HM_Backup function to determine if shell_exec is enabled * Check if file is readable first * Fix how we kick off Task * Remove unused var * Call recursive filescanner on admin page load * Update package.json * Update the POT file task params * Replace hmbkp with backupwordpress as textdomain * Exclude folders * Add Grunt task options * Remove hard line returns * Display placeholder if exec fails * Add 30 second time diff allowance * Use $TRAVIS_BUILD_DIR * we do this in travis.yml * Regenerate github account info * Update command to reflect function rename * Update tests to reflect function name change * Rename function * Filter tests to run * Fix group flags * Calculate site size on page load #### 3.0.2 / 2014-12-02 * Bump version * Add parenthesis to require_once * Remove disk space info * Attempt to fix build * define WP_TESTS_DIR * Make sure current_action fnction is loaded * Remove extra slashes and semicolons * Remove the custom webhook service * Better default WP_TESTS_DIR * move trailingslash calls out of the loop for performance * Minor code cleanup * Correct path for hm-backup so it's tests are run * add composer.lock * Use scrutinizer code coverage * add waffle.io badge * Use up to date commands for coverage * Add code rating * Don't test 5.2 * Update readme.md * excluded_dirs is deprecated * Update scrutinizer config * Add composer config and dev dependencies * Make PHPUnit generate an XML for coveralls * Add scrutinizer config * Ignore vendor dir * Add a link to Help page * Move to activation hook * Bump up required WP version * Escape all the things * Save errors to a notices option * Reload page on errors * Remove script * Remove unneeded class * Check PHP version on plugins loaded * Check PHP version on activate * Update readme * Set required version to 5.3.2 * Update tests * Allow for a 30 second delta in asserting schedule time * Use the new build env on Travis * Restrict plugin to be network only * Fix admin URL logic * Formatting * Update readme changelog #### 3.0.1 / 2014-11-20 * remove uneeded images * latest hm-backup / fixes a serious bug in backups. * Typos in v 3.0 changelog * Specify POT filename in grunt task * Update POT file * Markdown readme * Regenerate readme * Add plugin headers #### 3.0 / 2014-11-14 * Refactor the recursive filesize scanner * correct text domain * Remove unneede statements * reload the excludes filelist in the correct place when someone excludes a file * Latest backdrop * Regenerate minified CSS * Regenerate minified JS * Fix cancel backup action * WordPress Coding Standards * Exit early if incompatible version of WordPress * Update translations * Update changelog #### 3.0.0-beta / 2014-09-08 * Load minified CSS * Formatting * Biweekly wording * Add missing period * use nonce_url instead of manually adding the nonce query param * close the settings form when done * Design changes as per ticket * Start tracking langauge in server info * Right align the primary button in the enable support modal * Re-factor the directory filesize code to use a single array instead of thoussands of transients * Remove the warning that would show if you were using anything other than the latest stable, it's no longer needed now that the FAQ is local * switch to using a single transient to store directory filesize data * Add an anchor link * Add error message * Rename function * Prefix GET params * Update exclude rule action * Adds function for building admin action urls * fix vertical scroll * Adds some functions to manage settings form submission errors * Rename nonce and action * fetch errors to display * Form submission handling for BWP and add-ons settings * Use a new function that persists form submission errors to a transient * None check * Pass the nonce around in the ajax request * Enable support action links * Check nonces * Modify action URLs to use the admin_post hook * Remove unneeded code * New line at end * Use admin_post hook * Display schedule start time in local timezone * Add an action hook that gives access to consumers to the backup progress * Update translatable strings POT file * Bump version * Update min WP version and tested up to * accidently used dash instead of underscore * namespaced option and added option to uninstall.php * basic show/hide of premium upsell * Fix incorrect transient expiry * Show the spinner in the tab if a schedule other than the current is running * Snip snip * Bring back the some javascript enhancements * Switch to the PHP 5.2 compatible version of Backdrop * Finish up support * Brace up single line if's and foreach's * Only load minified scripts and styles if WP_DEBUG isn't on * Load the minified css and js files by default * Remove the combined css files as we only have one now. Stop loading colorbox. * Remove colorbox * Improvements * More improvements * Don't die when directly running a backup on page load * Re-factor the backup filesize calculation * make capability filterable * use core capabilities instead of custom * Switch to Backdrop * Fix typo in prefix * Hook function onto admin_post * Update delete link * Bookmark current admin page for redirect * Add custom capabilities and role * Exclude BackUpWP by default * Ignore the build folder * Add more build excludes * minify JS * generate markdown readme * minify css * combine css * regenerate readme * Make links consistent for the grunt task * Convert URLS to markdown * Update lang files * Add colorbox as bower dependency * remove colorbox folder * Remove colorbox submodule * Change how we include FAQ * Add readme partials * Add package.json * Add Gruntfile * Add bower.json * JSHint rules * remove from ignore * Update ignore list * Add bower config * Add FAQ strings * Return the cached directory size early if we have it * Re-factor the file browser scanner * correct sprintf usage * Handle saving service forms * Codeing standards * Move the error check outside of the foreach * Remove uneeded $is_tab_visible * Only show excludes for backups which include files * Show destinations in the list of schedule links * WordPress standard modal for enabling support * Remove extra slash in include path * Add a heading to the settings form * More work on excludes * Another todo * Add some todos * Don't include the parent directory in a browsable list * More work on Excludes * Switch to only storing 3 backups by default * More work on redesign * commented out enable support button till we figure out what to do with it * made tabs responsive below 639px * More work on redesign * Add more default excludes * Correctly highlight the tab for the first schedule * Switch to tabs instead of subsubsub * First bash at a redesign settings UX #### 2.6.2 * Reverts a change to how the home path is calculated as it caused issues on installs where wp-config.php was stored outside of web root. Props to @mikelittle for the bug report. #### 2.6.1 * Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch. * Fix an issues that could cause schedule times to fail to account for timezone differences. * Add a nonce check to the schedule settings. * Fix a possible JS warning when removing an exclude rule. * Our unit tests now run in PHP 5.2 again. #### 2.6 * It's now possible to choose the time and day that your schedule will run on. * Introduces several new unit tests around schedule timings. * Fixes a bug that could cause the hourly schedule to run constantly. * Improved the layout of the Constants help panel. * If the backup root directory is unreadable then the plugin will no longer function. * Update the backups table match the standard WordPress table styles. * Improved styling for the settings dialogue. * Improved styling for the Server Info help tab. * /s/back ups/backups. * Remove Deprecated call to `screen_icon`. * Updated French translation. * Update the `WP CLI` command to use the new method for registering command. * Reload the schedules when re-setting up the default schedules so they show up straight away. * s/dpesnt't/doesn't. * Only show the estimated total schedule size when editing an existing schedule. * Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show. * Disable buttons whilst ajax requests are running. * Move spinners outside the buttons as they didn't look very good inside. * Improve the detection of the home path on multisite installs which have WordPress in a subdirectory. * Track the time that the running backup is started and display how long a backup has been running for. * Fix an issue that meant it wasn't possible to run multiple manual backups at the same time. * Many other minor improvements. #### 2.5 * BackUpWordPress now requires WordPress 3.7.1 as a minimum. * Remove some old back-compat code that was required because we supported older WP versions. * It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter. * The spinner is now retina! * Close the PHP Session before starting the backup process to work around the 1 request per session issue. Backup status will now work on sites which happen to call `session_start`. * Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests * Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations. * Improve the display of the server info in the enable support popup. * New screenshots * Use `wp_safe_redirect` for internal redirects. * Use `wp_is_writable` instead of `is_writable`. #### 2.4.2 * In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site. * Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout * Fixed 3 stray PHP warnings. * BackUpWordPress will now always be loaded before any BackUpWordPress Extensions. * Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar. #### 2.4.1 * Add missing colorbox images #### 2.4 * Support for new premium extensions for storing backups in a variety of online services. * Exclude the WP DB Manager backups and WP Super Cache cache directories by default. * We now use Intercom to offer support directly from within the plugin, opt-in of course. * More i18n fixes / improvements. * We no longer show download links if your backups directory isn't web accessible. * Fix a bug that caused the plugin activation and deactivation hooks from firing. * Correctly handle `MYSQL TIMESTAMP` columns in database dumps. * `mysqldump` and `zip` are now correctly recognised on SmartOS. * Schedule names are now translatable. * Avoid having to re-calculate the filesize when a schedules type is set. * Compatibility with WordPress 3.8 #### 2.3.2 * Correct version number. #### 2.3.1 * Fix a PHP strict error. * Save and close as separate buttons. * Fix bug that caused multiple notification emails. * Fixes typo in database option name. * Updated translations. * Improve PHP docblocks. * Make schedules class a singleton. * Exclude popular backup plugin folders by default. * Exclude version control folders by default. * Fix broken localisation. * Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions * #### 2.3 * Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible. * Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section. * Correct filename for some mis-named translation files. * Show the total estimated disk space a schedule could take up (max backups * estimated site size). * Fix a typo (your -> you're). * Use the new time Constants and define backwords compatible ones for > than 3.5. * Play nice with custom cron intervals. * Main plugin file is now `backupwordpress.php` for consistency. * Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul! * Don't remove non-backup files from custom backup paths. * Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups. * When moving paths only move backup files. * Make some untranslatable strings translatable. * Don't allow a single schedule to run in multiple threads at once, should finally fix edge case issues where some load balancer / proxies were causing multiple backups per run. * Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value. * Remove help text for deprecated `HMBKP_EMAIL`. * Default to allways specificing `--single-transaction` when using `mysqldump` to backup the database, can be disabled by setting the `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION` to `false`. * Silence a `PHP Warning` if `mysql_pconnect` has been disabled. * Ensure dot directories `.` & `..` are always skipped when looping the filesystem. * Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`. * Fix issues on IIS that could cause the root directory to be incorrectly calculated. * Fix an issue on IIS that could cause the download backup url to be incorrect. * Fix an issue on IIS that could mean your existing backups are lost when moving backup directory. * Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist. * All unit tests now pass under IIS on Windows. * Prefix the backup directory with `backupwordpress-` so that it's easier to identify. * Re-calculate the backup directory name on plugin update and move backups. * Fix some issues with how `HMBKP_SECURE_KEY` was generated. #### 2.2.4 * Fix a fatal error on PHP 5.2, sorry! (again.) #### 2.2.3 * Fix a parse error, sorry! #### 2.2.2 * Fix a fatal error when uninstalling. * Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch. * Fix a possible notice when using the plugin on a server without internet access. * Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true. * Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant. * Nonce some ajax request. * Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled. * Handle situations where the mysql port is set to something wierd. * Fallback to `mysql_connect` on system that disable `mysql_pconnect`. * You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`. * Unit tests for `HM_Backup::is_safe_mode_available()`. * Silence possible PHP Warnings when unlinking files. #### 2.2.1 * Stop storing a list of unreadable files in the backup warnings as it's too memory intensive. * Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers. * Show all errors and warnings in the popup shown when a manual backup completes. * Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process. * Fix a couple of `PHP E_STRICT` notices. * Catch more errors during the manual backup process and expose them to the user. #### 2.2 * Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable. * Show the correct path in the warning message when the backups path can't be created. * Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY. * Stop relying on the built in WordPress schedules as other plugins can mess with them. * Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up. * Improve modals on small screens and mobile devices. * Use the retina spinner on retina screens. * Update buttons to the new 3.5 style. * Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction. * Fix an issue that could cause backups using PclZip with a custom backups path to fail. * Security hardening by improving escaping, sanitizitation and validation. * Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites. * Only clear the cached backup filesize if the backup type changes. * Add unit tests for all the schedule recurrences. * Fix an issue which could cause weekly and monthly schedules to fail. * Add an `uninstall.php` file which removes all BackUpWordPress data and options. * Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`. * Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file. #### 2.1.3 * Fix a regression in `2.1.2` that broke previewing and adding new exclude rules. #### 2.1.2 * Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests. * Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains. * The mysqldump fallback function will now be used if `mysqldump` produces an empty file. * Fix a possible PHP `NOTICE` on Apache servers. #### 2.1.1 * Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin. * Don't use functions from misc.php as loading it too early can cause fatal errors. * Don't hardcode an English string in the JS, use the translated string instead. * Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions. * Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead. * Fix a possible double full stop at the end of the schedule sentence. * Minor code cleanup. #### 2.1 * Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning. * Fix possible fatal error when setting schedule to monthly. * Fix issues with download backup not working on some shared hosts. * Fix issuses with download backup not working on sites with strange characters in the site name. * Fix a bug could cause the update actions to fire on initial activation. * Improved reliability when changing backup paths, now with Unit Tests. * Generate the lists of excluded, included and unreadable files in a more memory efficient way, no more fatal errors on sites with lots of files. * Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled. * Prepend a random string to the backups directory to make it harder to brute force guess. * Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable. * Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support. * Provide more granular status messages during the backup process. * Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing. * Improve the feedback when removing an exclude rule. * Fix an issue that could cause an exclude rule to be marked as default when it in-fact isn't, thus not letting it be deleted. * Add a line encouraging people to rate the plugin if they like it. * Change the support line to point to the FAQ before recommending they contact support. * Fix the link to the "How to Restore" post in the FAQ. * Some string changes for translators, 18 changed strings. #### 2.0.6 * Fix possible warning on plugin activation if the sites cron option is empty. * Don't show the version warning in the help for Constants as that comes from the current version. #### 2.0.5 * Re-setup the cron schedules if they get deleted somehow. * Delete all BackUpWordPress cron entries when the plugin is deactivated. * Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run. * Make sure the schedule times and times of previous backups are shown in local time. * Fix a bug that could cause the legacy backup schedule to be created on every update, not just when going from 1.x to 2.x. * Improve the usefulness of the `wp-cron.php` response code check. * Use the built in `site_format` function for human readable filesizes instead of defining our own function. #### 2.0.4 * Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems. #### 2.0.3 * Fix issues with scheduled backups not firing in some cases. * Better compatibility when the WP Remote plugin is active alongside BackUpWordPress. * Catch and display more WP Cron errors. * BackUpWordPress now fails to activate on WordPress 3.3.2 and below. * Other minor fixes and improvements. #### 2.0.2 * Only send backup failed emails if the backup actually failed. * Turn off the generic "memory limit probably hit" message as it was showing for too many people. * Fix a possible notice when the backup running filename is blank. * Include the `wp_error` response in the cron check. #### 2.0.1 * Fix fatal error on PHP 5.2. #### 2.0 * Ability to have multiple schedules with separate settings & excludes per schedule. * Ability to manage exclude rules and see exactly which files are included and excluded. * Fix an issue with sites with an `open_basedir` restriction. * Backups should now be much more reliable in low memory environments. * Lots of other minor improvements and bug fixes. #### 1.6.9 * Updated and improved translations across the board - props @elektronikLexikon. * German translation - props @elektronikLexikon. * New Basque translation - props Unai ZC. * New Dutch translation - Anno De Vries. * New Italian translation. * Better support for when WordPress is installed in a sub directory - props @mattheu #### 1.6.8 * French translation props Christophe - http://catarina.fr. * Updated Spanish Translation props DD666 - https://github.com/radinamatic. * Serbian translation props StefanRistic - https://github.com/StefanRistic. * Lithuanian translation props Vincent G - http://www.Host1Free.com. * Romanian translation. * Fix conflict with WP Remote. * Fix a minor issue where invalid email address's were still stored. * The root path that is backed up can now be controlled by defining `HMBKP_ROOT`. #### 1.6.7 * Fix issue with backups being listed in reverse chronological order. * Fix issue with newest backup being deleted when you hit your max backups limit. * It's now possible to have backups sent to multiple email address's by entering them as a comma separated list. * Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`. * Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform. * Updated Spanish translation. * Fix a minor spelling mistake. * Speed up the manage backups page by caching the FAQ data for 24 hours. #### 1.6.6 * Fix backup path issue with case sensitive filesystems. #### 1.6.5 * Fix an issue with emailing backups that could cause the backup file to not be attached. * Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd. * Never show the running backup in the list of backups. * Show an error backup email failed to send. * Fix possible notice when deleting a backup file which doesn't exist. * Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`. * Make `HMBKP_SECURE_KEY` override-able. * BackUpWordPress should now work when `ABSPATH` is `/`. #### 1.6.4 * Don't show warning message as they cause to much panic. * Move previous methods errors to warnings in fallback methods. * Wrap `.htaccess` rewrite rules in if `mod_rewrite` check. * Add link to new restore help article to FAQ. * Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version. * Bug fix in `zip command` check that could cause an incorrect `zip` path to be used. * Detect and pass `MySQL` port to `mysqldump`. #### 1.6.3 * Don't fail archive verification for errors in previous archive methods. * Improved detection of the `zip` and `mysqldump` commands. * Fix issues when `ABSPATH` is `/`. * Remove reliance on `SECURE_AUTH_KEY` as it's often not defined. * Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`. * Fix download zip on Windows when `ABSPATH` contains a trailing forward slash. * Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing. * Add missing / to `PCLZIP_TEMPORARY_DIR` define. * Catch and display errors during `mysqldump`. #### 1.6.2 * Track `PHP` errors as backup warnings not errors. * Only show warning message for `PHP` errors in BackUpWordPress files. * Ability to dismiss the error / warning messages. * Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites. * Don't delete "number of backups" setting on update. * Better handling of multibyte characters in archive and database dump filenames. * Mark backup as running and increase callback timeout to `500` when firing backup via ajax. * Don't send backup email if backup failed. * Filter out duplicate exclude rules. #### 1.6.1 * Fix fatal error on PHP =< 5.3 #### 1.6 * Fixes issue with backups dir being included in backups on some Windows Servers. * Consistent handling of symlinks across all archive methods (they are followed). * Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files. * Track errors and warnings that happen during backup and expose them through admin. * Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed. * Ability to cancel a running backup. * Zip files are now integrity checked after every backup. * More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works. * Use `mysql_query` instead of the depreciated `mysql_list_tables`. #### 1.5.2 * Better handling of unreadable files in ZipArchive and the backup size calculation. * Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path] [--root] [--zip_command_path=] [--mysqldump_command_path=]` #### 1.5.1 * Better detection of `zip` command. * Don't delete user settings on update / deactivate. * Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed. * Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests. * Improved the speed of the backup size calculation. #### 1.5 * Re-written core backup engine should be more robust especially in edge case scenarios. * 48 unit tests for the core backup engine, yay for unit tests. * Remove some extraneous status information from the admin interface. * Rename Advanced Options to Settings * New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed. * Suppress possible filemtime warnings in some edge cases. * 3.3 compatability. * Set proper charset of MySQL backup, props valericus. * Fix some inconsistencies between the estimated backup size and actual backup size when excluding files. #### 1.4.1 * 1.4 was incorrectly marked as beta. #### 1.4 * Most options can now be set on the backups page, all options can still be set by defining them as `Constants`. * Russian translation, props valericus. * All dates are now translatable. * Fixed some strings which weren't translatable. * New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups. * Manual backups now work if `DISABLE_WP_CRON` is defined as `true`. #### 1.3.2 * Spanish translation * Bump PHP version check to 5.2.4 * Fallback to PHP mysqldump if shell_exec fails for any reason. * Silently ignore unreadable files / folders * Make sure binary data is properly exported when doing a mysqldump * Use 303 instead of 302 when redirecting in the admin. * Don't `set_time_limit` inside a loop * Use WordPress 3.2 style buttons * Don't pass an empty password to mysqldump #### 1.3.1 * Check for PHP version. Deactivate plugin if running on PHP version 4. #### 1.3 * Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability. * Support for excluding files and folders, define `HMBKP_EXCLUDE` with a comma separated list of files and folders to exclude, supports wildcards `*`, path fragments and absolute paths. * Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it. * Work around issues caused by low MySQL `wait_timeout` setting. * Add FAQ to readme.txt. * Pull FAQ into the contextual help tab on the backups page. * Block activation on old versions of WordPress. * Stop guessing compressed backup file size, instead just show size of site uncompressed. * Fix bug in `safe_mode` detection which could cause `Off` to act like `On`. * Better name for the database dump file. * Better name for the backup files. * Improve styling for advanced options. * Show examples for all advanced options. * Language improvements. * Layout tweaks. #### 1.2 * Show live backup status in the back up now button when a back up is running. * Show free disk space after total used by backups. * Several langauge changes. * Work around the 1 cron every 60 seconds limit. * Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue. * Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future. * Highlight defined `Constants`. * Show defaults for all `Constants`. * Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time. * Make sure options added in 1.1.4 are cleared on de-activate. * Support `mysqldump on` Windows if it's available. * New option to have each backup emailed to you on completion. Props @matheu for the contribution. * Improved windows server support. #### 1.1.4 * Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if `mysql.max_links` is set to 2 or less. * Don't suppress `mysql_connect` errors in the mysqldump PHP fallback. * One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup. * Fix a spelling error in the `shell_exec` disabled message. * Store the BackUpWordPress version as a `Constant` rather than a `Variable`. * Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated. * Minor PHPDoc improvements. #### 1.1.3 * Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed. * When using `PCLZIP` as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP. #### 1.1.2 * Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working. #### 1.1.1 * Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`. * Clear the running backup status and reset the calculated filesize on update. * Show a link to the manage backups page in the plugin description. * Other general fixes. #### 1.1 * Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update. * Expose the various `Constants` that can be defined to change advanced settings. * Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`. * Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`. * Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );` * Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );` * Tweaks to the backups page layout. * General bug fixes and improvements. #### 1.0.5 * Don't ajax load estimated backup size if it's already been calculated. * Fix time in backup complete log message. * Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired. * Show number of backups saved message. * Add a link to the backups page to the plugin action links. #### 1.0.4 Don't throw PHP Warnings when `shell_exec` is disabled #### 1.0.3 Minor bug fix release. * Suppress `filesize()` warnings when calculating backup size. * Plugin should now work when symlinked. * Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt. * Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings. * Don't ajax ping running backup status quite so often. #### 1.0.1 & 1.0.2 Fix some silly 1.0 bugs #### 1.0 1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by [XIBO Ltd](http://hmn.md) the chaps behind [WP Remote](https://wpremote.com) #### Previous Version 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/) ================================================ FILE: bin/release.sh ================================================ # release.sh # # Takes a tag to release, and syncs it to WordPress.org TAG=3.10 PLUGIN="backupwordpress" PLUGINDIR=$(pwd) TMPDIR=$(pwd)/tmp/ # Fail on any error set -e if [[ $VERSION == "v*" ]]; then # Starts with an extra "v", strip for the version VERSION=${TAG:1} else VERSION="$TAG" fi echo "Version: $VERSION ." if [ -d "${TMPDIR}" ]; then # Wipe it clean rm -rf "${TMPDIR}" echo "Remove TMP" fi # Ensure the directory exists first mkdir -p "${TMPDIR}" echo "Make TMP: ${TMPDIR}" # Make a Copy of all the files in the folder rsync -av --progress --exclude=tmp/ --exclude=node_modules/ "${PWD}" "${TMPDIR}" if [[ $? -ne 0 ]]; then remove_tmp echo "rsync $PLUGINDIR Failed. Aborting." exit 1 fi # Switch to build dir cd "${TMPDIR}" # change folder name to TAG ID mv ${PLUGIN} ${TAG} # THen CD into folder cd ${TAG} ls -lh # Run build tasks sed -e "s/{{TAG}}/$VERSION/g" < "$PLUGINDIR/bin/readme.txt" > readme.txt # Remove special files rm .gitignore rm .bowerrc rm .travis.yml rm .jshintrc rm -rf .git rm -rf .github rm CONTRIBUTING.md rm changelog.txt rm .scrutinizer.yml rm phpunit.xml rm bower.json rm Gruntfile.js rm package.json rm composer.json rm composer.lock rm -rf bin rm -rf grunt rm -rf tmp rm -rf readme rm -rf tests rm -rf node_modules ================================================ FILE: bower.json ================================================ { "name": "backupwordpress", "version": "3.6.0", "homepage": "https://profiles.wordpress.org/xibodevelopment", "authors": [ "XIBO Ltd" ], "description": "Simple automated backups of your WordPress powered website.", "main": "backupwordpress.php", "license": "GPLv2", "ignore": [ "**/.*", "node_modules", "bower_components", "assets", "test", "tests" ], "dependencies": { } } ================================================ FILE: changelog.txt ================================================ 2741ba7 composer npm update d5a5468 Update class-plugin to remove escaping 37bbf48 Update upsell.php 06d1ec7 Update upsell.php c48fa22 Update page.php b37d80d Update to bump up padding. Bumped up padding around schedule sentence. 25da000 Update to error notices. Removed extra extensions upsell and replaced non-dismissible notice with a dismissible notice. Both are at the top, though? 647b4a1 corrected improper URL inclusion 71570de This just adds error and debug logs to the automatic exclusions list in the class-excludes.php 9ecc8f6 Changing out upsell link (at bottom of admin page) to reflect link to site homepage for conversion funnel rather than link to in-admin extension page. 5191fc9 Changing out upsell link (at bottom of admin page) to reflect link to site homepage for conversion funnel rather than link to in-admin extension page. d6ee584 Changing out upsell link (at bottom of admin page) to reflect link to site homepage for conversion funnel rather than link to in-admin extension page. dae3fef Changing out upsell link (at bottom of admin page) to reflect link to site homepage for conversion funnel rather than link to in-admin extension page. 31a4d53 Update tags for wp.org 3928532 Fix wp-snapshots 335865c Rename ISSUE_TEMPLATE to ISSUE_TEMPLATE.md 8a04298 Update TEMPLATE file 34702b1 Create new ISSUE_TEMPLATE f840674 Delete template.txt 19255c3 Create template.txt a02d722 Check for correct server permission, else show site credentials form 32f6791 Minor - simplify 'if' statements. Fix coding standards - full stop after single line comment 7b9be93 Correct the order of error messages when both a custom path and the default paths are both unwritable. badc2e4 Avoid a Warning when the backup path isn't readable 3f81248 Improve the ability to automatically create the backups directory cd957da Clean up translatin strings - remove allowed HTML per string and add some allowed tags to generic output function for Server Notices in WP admin 45492c0 Use whitelist_html for translated strings to allow some HTML 1f4395a Clean up - combine conditions in if statements for better readability, alignment and indentation of code 611b878 Ensure Path is readable before calling `disk_free_space` 3267c87 s/sites/site's when used in a singulat possesive context b9173ef Improved error messaging 0915923 WPCS fixes 1d5a525 Refactor the request_credentials code so it actually works cdfe2e4 Show notice and hide backups list 6092f59 Force FTP form 7e01802 Add a function comment fd95e12 Extract list of possible paths to own method 428a939 Fix code formatting d4835f6 Display a form to get users connection credentials 17f238f Make notices dismissable e9d99f8 Remove folder permissions notices ================================================ FILE: classes/backup/class-backup-engine-database-imysqldump.php ================================================ get_dsn(), $this->get_user(), $this->get_password(), $this->get_dump_settings() ); $dump->start( $this->get_backup_filepath() ); } catch ( \Exception $e ) { $this->error( __CLASS__, $e->getMessage() ); } return $this->verify_backup(); } /** * Get the settings for the database bump. * * @return array The array of database dump settings. */ public function get_dump_settings() { /** * Allow additional settings to be added. * * @param string[] $settings The array of settings. * @todo can these be standardised across all database backup engines */ return apply_filters( 'hmbkp_imysqldump_command', array( 'default-character-set' => $this->get_charset(), 'hex-blob' => true, 'single-transaction' => defined( 'HMBKP_MYSQLDUMP_SINGLE_TRANSACTION' ) && HMBKP_MYSQLDUMP_SINGLE_TRANSACTION, ) ); } /** * Correctly calculates the DSN string for the various mysql * connection variations including simplt hostname, non-standard ports * and socket connections. * * @return string The DSN connection string */ public function get_dsn() { $dsn = 'mysql:host=' . $this->get_host() . ';dbname=' . $this->get_name(); if ( $this->get_host() && $this->get_port() ) { $dsn = 'mysql:host=' . $this->get_host() . ';port=' . $this->get_port() . ';dbname=' . $this->get_name(); } elseif ( $this->get_socket() ) { $dsn = 'mysql:unix_socket=' . $this->get_socket() . ';dbname=' . $this->get_name(); } return $dsn; } } ================================================ FILE: classes/backup/class-backup-engine-database-mysqldump.php ================================================ mysqldump_executable_path = HMBKP_MYSQLDUMP_PATH; } /** * Allow the executable path to be set via a filter * * @param string The path to the mysqldump executable */ $this->mysqldump_executable_path = apply_filters( 'hmbkp_mysqldump_executable_path', '' ); if ( ! $this->mysqldump_executable_path ) { // List of possible mysqldump locations $paths = array( 'mysqldump', '/usr/local/bin/mysqldump', '/usr/local/mysql/bin/mysqldump', '/usr/mysql/bin/mysqldump', '/usr/bin/mysqldump', '/opt/local/lib/mysql6/bin/mysqldump', '/opt/local/lib/mysql5/bin/mysqldump', '/opt/local/lib/mysql4/bin/mysqldump', '/xampp/mysql/bin/mysqldump', '/Program Files/xampp/mysql/bin/mysqldump', '/Program Files/MySQL/MySQL Server 6.0/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.6/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.4/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump', '/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump', '/Program Files/MySQL/MySQL Server 4.1/bin/mysqldump', '/opt/local/bin/mysqldump', ); $this->mysqldump_executable_path = Backup_Utilities::get_executable_path( $paths ); } return $this->mysqldump_executable_path; } /** * Perform the database backup. * * @return bool Whether the backup completed successfully or not. */ public function backup() { if ( ! $this->get_mysqldump_executable_path() ) { return false; } // Grab the database connections args $args = $this->get_mysql_connection_args(); // Allow lock-tables to be overridden if ( defined( 'HMBKP_MYSQLDUMP_SINGLE_TRANSACTION' ) && HMBKP_MYSQLDUMP_SINGLE_TRANSACTION ) { $args[] = '--single-transaction'; } // Make sure binary data is exported properly $args[] = '--hex-blob'; // The file we're saving too $args[] = '-r ' . escapeshellarg( $this->get_backup_filepath() ); // The database we're dumping $args[] = escapeshellarg( $this->get_name() ); $process = new Process( $this->get_mysqldump_executable_path() . ' ' . implode( ' ', $args ) ); $process->setTimeout( HOUR_IN_SECONDS ); try { $process->run(); } catch ( \Exception $e ) { $this->error( __CLASS__, $e->getMessage() ); } if ( ! $process->isSuccessful() ) { $this->error( __CLASS__, $process->getErrorOutput() ); } return $this->verify_backup(); } /** * Get the connection args for the mysqldump command * * @return string[] The array of connection args */ public function get_mysql_connection_args() { $args = array(); $args[] = '-u ' . escapeshellarg( $this->get_user() ); if ( $this->get_password() ) { $args[] = '-p' . escapeshellarg( $this->get_password() ); } $args[] = '-h ' . escapeshellarg( $this->get_host() ); if ( $this->get_port() ) { $args[] = '-P ' . escapeshellarg( $this->get_port() ); } if ( $this->get_socket() ) { $args[] = '--protocol=socket -S ' . escapeshellarg( $this->get_socket() ); } return $args; } } ================================================ FILE: classes/backup/class-backup-engine-database.php ================================================ parse_db_host_constant(); // Set a default backup filename $this->set_backup_filename( 'database-' . $this->get_name() . '.sql' ); } /** * Get the database charset setting. * * @return string The database charset. */ public function get_charset() { global $wpdb; return $wpdb->charset; } /** * Get the database collate setting. * * @return string The database collage setting. */ public function get_collate() { global $wpdb; return $wpdb->collate; } /** * Get the database name. * * @return string The database name. */ public function get_name() { global $wpdb; return $wpdb->dbname; } /** * Get the database user. * * @return string The database user. */ public function get_user() { global $wpdb; return $wpdb->dbuser; } /** * Get the database password. * * @return string The database password. */ public function get_password() { global $wpdb; return $wpdb->dbpassword; } /** * Get the database hostname. * * @return string The database hostname. */ public function get_host() { return $this->host; } /** * Get the database port. * * @return int The database port. */ public function get_port() { return $this->port; } /** * Get the database socket. * * @return string The database socket. */ public function get_socket() { return $this->socket; } /** * Parse the `DB_HOST` constant. * * The `DB_HOST` constant potentially contains the hostname, port or socket. * We need to parse it to figure out the type of mysql connection to make. * * @param string $constant The Constant to parse. If the string isn't a * defined Constant then it will be parsed directly. */ public function parse_db_host_constant( $constant = 'DB_HOST' ) { // If we've been passed a Constant then grab it's contents if ( defined( $constant ) ) { $constant = constant( $constant ); } // If we weren't passed a Constant then just parse the string directly. $this->host = (string) $constant; // Grab the part after :, it could either be a port or a socket $port_or_socket = strstr( $constant, ':' ); if ( $port_or_socket ) { // The host is the bit up to the : $this->host = substr( $constant, 0, strpos( $constant, ':' ) ); // Strip the : $port_or_socket = substr( $port_or_socket, 1 ); if ( 0 !== strpos( $port_or_socket, '/' ) ) { $this->port = intval( $port_or_socket ); $maybe_socket = strstr( $port_or_socket, ':' ); if ( ! empty( $maybe_socket ) ) { $this->socket = substr( $maybe_socket, 1 ); } } else { $this->socket = $port_or_socket; } } } /** * Verify that the database backup was successful. * * It's important this function is performant as it's called after every * backup. * * @return bool Whether the backup completed successfully */ public function verify_backup() { // If there are errors delete the database dump file if ( $this->get_errors( get_called_class() ) && file_exists( $this->get_backup_filepath() ) ) { unlink( $this->get_backup_filepath() ); } // If we have an empty file delete it if ( @filesize( $this->get_backup_filepath() ) === 0 ) { unlink( $this->get_backup_filepath() ); } // If the database backup doesn't exist then the backup must have failed if ( ! file_exists( $this->get_backup_filepath() ) ) { return false; } return true; } } ================================================ FILE: classes/backup/class-backup-engine-file-zip-archive.php ================================================ open( $this->get_backup_filepath(), \ZIPARCHIVE::CREATE ) ) { foreach ( $this->get_files() as $file ) { // Create an empty directory for each directory in the filesystem if ( $file->isDir() ) { $zip->addEmptyDir( $file->getRelativePathname() ); } elseif ( $file->isFile() ) { // Archive the file with a relative path $zip->addFile( $file->getPathname(), $file->getRelativePathname() ); } } // Track any internal warnings if ( $zip->status ) { $this->warning( __CLASS__, $zip->status ); } // @codingStandardsIgnoreStart if ( $zip->statusSys ) { $this->warning( __CLASS__, $zip->statusSys ); } // @codingStandardsIgnoreEnd $zip->close(); } return $this->verify_backup(); } } ================================================ FILE: classes/backup/class-backup-engine-file-zip.php ================================================ zip_executable_path = apply_filters( 'hmbkp_zip_executable_path', '' ); if ( ! $this->zip_executable_path ) { // List of possible zip locations $paths = array( 'zip', '/usr/bin/zip', '/usr/local/bin/zip', '/opt/local/bin/zip', ); $this->zip_executable_path = Backup_Utilities::get_executable_path( $paths ); } return $this->zip_executable_path; } /** * Perform the file backup. * * @return bool Whether the backup completed successfully or not. */ public function backup() { if ( ! $this->get_zip_executable_path() ) { return false; } $command = array(); // cd to the site root $command[] = 'cd ' . escapeshellarg( Path::get_root() ); // Run the zip command with the recursive and quiet flags $command[] = '&& ' . escapeshellcmd( $this->get_zip_executable_path() ) . ' -rq'; // Save the zip file to the correct path $command[] = escapeshellarg( $this->get_backup_filepath() ) . ' ./'; // Pass exclude rules in if we have them if ( $this->get_exclude_string() ) { $command[] = '-x ' . $this->get_exclude_string(); } $command = implode( ' ', $command ); $process = new Process( $command ); $process->setTimeout( HOUR_IN_SECONDS ); try { $process->run(); } catch ( \Exception $e ) { $this->error( __CLASS__, $e->getMessage() ); } if ( ! $process->isSuccessful() ) { /** * Exit Code 18 is returned when an unreadable file is encountered during the zip process. * * Given the zip process still completes correctly and the unreadable file is simple skipped * we don't want to treat 18 as an actual error. */ if ( $process->getExitCode() !== 18 ) { $this->error( __CLASS__, $process->getErrorOutput() ); } } return $this->verify_backup(); } /** * Convert the exclude rules to a format zip accepts * * @return string The exclude string ready to pass to `zip -x` */ public function get_exclude_string() { if ( empty( $this->excludes ) ) { return ''; } $excludes = $this->excludes->get_excludes(); foreach ( $excludes as $key => &$rule ) { $file = $absolute = $fragment = false; // Files don't end with / if ( ! in_array( substr( $rule, - 1 ), array( '\\', '/' ) ) ) { $file = true; } // If rule starts with a / then treat as absolute path elseif ( in_array( substr( $rule, 0, 1 ), array( '\\', '/' ) ) ) { $absolute = true; } // Otherwise treat as dir fragment else { $fragment = true; } $rule = str_ireplace( Path::get_root(), '', untrailingslashit( wp_normalize_path( $rule ) ) ); // Strip the preceeding slash if ( in_array( substr( $rule, 0, 1 ), array( '\\', '/' ) ) ) { $rule = substr( $rule, 1 ); } // Wrap directory fragments and files in wildcards for zip if ( $fragment || $file ) { $rule = '*' . $rule . '*'; } // Add a wildcard to the end of absolute url for zips if ( $absolute ) { $rule .= '*'; } } // Escape shell args for zip command $excludes = array_map( 'escapeshellarg', array_unique( $excludes ) ); return implode( ' -x ', $excludes ); } } ================================================ FILE: classes/backup/class-backup-engine-file.php ================================================ set_backup_filename( implode( '-', array( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ), 'backup', current_time( 'Y-m-d-H-i-s' ), ) ) . '.zip' ); $this->excludes = new Excludes; } /** * Set the excludes rules for the backup. * * @param Excludes $excludes The exclude rules. */ public function set_excludes( Excludes $excludes ) { $this->excludes = $excludes; } /** * Returns a Finder instance for the files that will be included in the * backup. * * By default we ignore unreadable files and directories as well as, common * version control folders / files, "Dot" files and anything matching the * exclude rules. * * @uses Finder * @return SplFileInfo[] The array of all files to be included */ public function get_files() { $finder = new Finder(); $finder->followLinks(); // defaults to true $finder->ignoreDotFiles( false ); $finder->ignoreVCS( true ); $finder->ignoreUnreadableDirs( true ); // Skip unreadable files too $finder->filter( function ( \SplFileInfo $file ) { if ( ! $file->isReadable() ) { return false; } } ); // Finder expects exclude rules to be in a regex format $exclude_rules = $this->excludes->get_excludes_for_regex(); // Skips folders/files that match default exclude patterns foreach ( $exclude_rules as $exclude ) { $finder->notPath( $exclude ); } return $finder->in( Path::get_root() ); } /** * Verify that the file backup completed successfully. * * This should be called from backup method of any final file backup engine * implementations. * * @return bool Whether the backup completed successfully. */ public function verify_backup() { // If there are errors delete the backup file. if ( $this->get_errors( get_called_class() ) && file_exists( $this->get_backup_filepath() ) ) { unlink( $this->get_backup_filepath() ); } // If the backup doesn't exist then we must have failed. if ( ! file_exists( $this->get_backup_filepath() ) ) { return false; } return true; } } ================================================ FILE: classes/backup/class-backup-engine.php ================================================ get_backup_filename(); } /** * Get the filename of the backup. * * @return string The backup filename. */ public function get_backup_filename() { return $this->backup_filename; } /** * Set the filename of the backup. * * @param string $filename The backup filename. */ public function set_backup_filename( $filename ) { $this->backup_filename = strtolower( sanitize_file_name( remove_accents( $filename ) ) ); } /** * Get the array of errors encountered during the backup process. * * @param string|null $context The context for the error, usually the Backup * Engine that encountered the error. * * @return array The array of errors. */ public function get_errors( $context = null ) { // Only return a specific contexts errors. if ( ! empty( $context ) ) { return isset( $this->errors[ $context ] ) ? $this->errors[ $context ] : array(); } return $this->errors; } /** * Add an error to the errors array. * * An error is always treat as fatal and should only be used for unrecoverable * issues with the backup process. * * @param string $context The context for the error. * @param string $error The error that was encountered. */ public function error( $context, $error ) { if ( empty( $context ) || empty( $error ) ) { return; } // Ensure we don't store duplicate errors by md5'ing the error as the key $this->errors[ $context ][ md5( implode( ':', (array) $error ) ) ] = $error; } /** * Get the array of warnings encountered during the backup process. * * @param string|null $context The context for the warning, usually the Backup * Engine that encountered the warning. * * @return array The array of warnings. */ public function get_warnings( $context = null ) { // Only return a specific contexts errors. if ( ! empty( $context ) ) { return isset( $this->warnings[ $context ] ) ? $this->warnings[ $context ] : array(); } return $this->warnings; } /** * Add an warning to the errors warnings. * * A warning is always treat as non-fatal and should only be used for recoverable * issues with the backup process. * * @param string $context The context for the warning. * @param string $warning The warning that was encountered. */ public function warning( $context, $warning ) { if ( empty( $context ) || empty( $warning ) ) { return; } // Ensure we don't store duplicate warnings by md5'ing the error as the key $this->warnings[ $context ][ md5( implode( ':', (array) $warning ) ) ] = $warning; } /** * Hooked into `set_error_handler` to catch any PHP errors that happen during * the backup process. * * PHP errors are always treat as warnings rather than errors. * * @param int $type The level of error raised. * * @return boolean Return false to pass the error back to PHP so it can * be handled natively. */ public function error_handler( $type ) { // Skip strict & deprecated warnings. if ( ( defined( 'E_DEPRECATED' ) && E_DEPRECATED === $type ) || ( defined( 'E_STRICT' ) && E_STRICT === $type ) || 0 === error_reporting() ) { return false; } /** * Get the details of the error. * * These are: * * @param int $errorno The error level expressed as an integer. * @param string $errstr The error message. * @param string $errfile The file that the error raised in. * @param string $errorline The line number the error was raised on. */ $args = func_get_args(); // Strip the error level array_shift( $args ); // Fire a warning for the PHP error passing the message, file and line number. $this->warning( 'php', implode( ', ', array_splice( $args, 0, 3 ) ) ); return false; } } ================================================ FILE: classes/backup/class-backup-status.php ================================================ id = $id; } public function start( $backup_filename, $status_message ) { $this->filename = $backup_filename; $this->set_status( $status_message ); } /** * Get the filename of the backup. * * @return string|null The backup filename. */ public function get_backup_filename() { if ( $this->is_started() ) { $status = json_decode( file_get_contents( $this->get_status_filepath() ) ); if ( ! empty( $status->filename ) ) { $this->filename = $status->filename; } } return $this->filename; } public function is_started() { return (bool) file_exists( $this->get_status_filepath() ); } public function finish() { // Delete the backup running file if ( file_exists( $this->get_status_filepath() ) ) { unlink( $this->get_status_filepath() ); } } /** * Get the status of the running backup. * * @return string */ public function get_status() { if ( ! file_exists( $this->get_status_filepath() ) ) { return ''; } $status = json_decode( file_get_contents( $this->get_status_filepath() ) ); if ( ! empty( $status->status ) ) { return $status->status; } return ''; } /** * Set the status of the running backup * * @param string $message * * @return null */ public function set_status( $message ) { // If start hasn't been called yet then we wont' have a backup filename if ( ! $this->filename ) { return; } $status = json_encode( (object) array( 'filename' => $this->filename, 'started' => $this->get_start_time(), 'status' => $message, ) ); file_put_contents( $this->get_status_filepath(), $status ); } /** * Get the time that the current running backup was started * * @return int $timestamp */ public function get_start_time() { if ( ! file_exists( $this->get_status_filepath() ) ) { return 0; } $status = json_decode( file_get_contents( $this->get_status_filepath() ) ); if ( ! empty( $status->started ) && (int) (string) $status->started === $status->started ) { return $status->started; } return time(); } /** * Get the path to the backup running file that stores the running backup status * * @return string */ public function get_status_filepath() { return Path::get_path() . '/.backup-' . $this->id . '-running'; } } ================================================ FILE: classes/backup/class-backup-utilities.php ================================================ run(); } catch ( \Exception $e ) { return false; } if ( $process->isSuccessful() ) { return $path; } } return false; } } ================================================ FILE: classes/backup/class-backup.php ================================================ backup_filename = $backup_filename; $this->database_dump_filename = $database_dump_filename; } public function set_type( $type ) { $this->type = $type; } public function set_backup_filename( $filename ) { $this->backup_filename = $filename; } public function set_status( Backup_Status $status ) { $this->status = $status; } public function set_excludes( Excludes $excludes ) { $this->excludes = $excludes; } public function run() { Path::get_instance()->cleanup(); if ( 'file' !== $this->type ) { $this->backup_database(); } if ( 'database' !== $this->type ) { $this->backup_files(); } Path::get_instance()->cleanup(); } public function backup_database() { if ( $this->status ) { $this->status->set_status( __( 'Backing up database...', 'backupwordpress' ) ); } $database_backup_engines = apply_filters( 'hmbkp_database_backup_engines', array( new Mysqldump_Database_Backup_Engine, new IMysqldump_Database_Backup_Engine, ) ); // Set the file backup engine settings if ( $this->database_dump_filename ) { foreach ( $database_backup_engines as &$backup_engine ) { $backup_engine->set_backup_filename( $this->database_dump_filename ); } } // Dump the database $database_dump = $this->perform_backup( $database_backup_engines ); if ( is_a( $database_dump, __NAMESPACE__ . '\\Backup_Engine' ) ) { $this->database_dump_filepath = $database_dump->get_backup_filepath(); } // Fire up the file backup engines $file_backup_engines = apply_filters( 'hmbkp_file_backup_engines', array( new Zip_File_Backup_Engine, new Zip_Archive_File_Backup_Engine, ) ); // Set the file backup engine settings foreach ( $file_backup_engines as &$backup_engine ) { $backup_engine->set_backup_filename( $this->backup_filename ); $backup_engine->set_excludes( new Excludes( array( '*.zip', 'index.html', '.htaccess', '.*-running', '.files' ) ) ); } // Zip up the database dump $root = Path::get_root(); Path::get_instance()->set_root( Path::get_path() ); $file_backup = $this->perform_backup( $file_backup_engines ); Path::get_instance()->set_root( $root ); if ( is_a( $file_backup, __NAMESPACE__ . '\\Backup_Engine' ) ) { $this->backup_filepath = $file_backup->get_backup_filepath(); } // Delete the Database Backup now that we've zipped it up if ( file_exists( $this->database_dump_filepath ) ) { unlink( $this->database_dump_filepath ); } } public function backup_files() { if ( $this->status ) { $this->status->set_status( __( 'Backing up files...', 'backupwordpress' ) ); } // Fire up the file backup engines $backup_engines = apply_filters( 'hmbkp_file_backup_engines', array( new Zip_File_Backup_Engine, new Zip_Archive_File_Backup_Engine, ) ); // Set the file backup engine settings foreach ( $backup_engines as &$backup_engine ) { $backup_engine->set_backup_filename( $this->backup_filename ); if ( $this->excludes ) { $backup_engine->set_excludes( $this->excludes ); } } $file_backup = $this->perform_backup( $backup_engines ); if ( is_a( $file_backup, __NAMESPACE__ . '\\Backup_Engine' ) ) { $this->backup_filepath = $file_backup->get_backup_filepath(); } } /** * Perform the backup by iterating through each Backup_Engine in turn until * we find one which works. If a backup filename or any excludes have been * set then those are passed to each Backup_Engine. * * @return Backup_Engine|false The successful backup engine or false on failure. */ public function perform_backup( array $backup_engines ) { foreach ( $backup_engines as $backup_engine ) { /** * If the backup_engine completes the backup then we * clear any errors or warnings from previously failed backup_engines * and return the successful one. */ if ( $backup_engine->backup() ) { $this->errors = array(); $this->warnings = $backup_engine->get_warnings(); return $backup_engine; } // Store all the errors and warnings as they are shown if all engines fail $this->warnings = array_merge( $this->warnings, $backup_engine->get_warnings() ); $this->errors = array_merge( $this->errors, $backup_engine->get_errors() ); } return false; } public function get_warnings() { return $this->warnings; } public function get_errors() { return $this->errors; } /** * Add an warning to the errors warnings. * * A warning is always treat as non-fatal and should only be used for recoverable * issues with the backup process. * * @param string $context The context for the warning. * @param string $warning The warning that was encountered. */ public function warning( $context, $warning ) { if ( empty( $context ) || empty( $warning ) ) { return; } // Ensure we don't store duplicate warnings by md5'ing the error as the key $this->warnings[ $context ][ md5( implode( ':', (array) $warning ) ) ] = $warning; } /** * Back compat with old error method * * Only the backup engines themselves can fire fatal errors * * @deprecated 3.4 Backup->warning( $context, $warning ) */ public function error( $context, $message ) { _deprecated_function( __FUNCTION__, '3.4', 'Backup->warning( $context, $warning )' ); $this->warning( $context, $message ); } public function get_database_backup_filepath() { return $this->database_dump_filepath; } public function get_backup_filepath() { return $this->backup_filepath; } /** * Back compat with old method name * * @see Backup::get_backup_filepath() * @deprecated 3.4 Use Backup::get_backup_filepath() */ public function get_archive_filepath() { _deprecated_function( __FUNCTION__, '3.4', 'get_backup_filepath()' ); return $this->get_backup_filepath(); } } ================================================ FILE: classes/class-backupwordpress-wp-cli-command.php ================================================ ] [--root] [--zip_command_path=] [--mysqldump_command_path=] * * @todo errors should be bubbled from Backup, Scheduled_Backup and the like instead of being repeated. */ public function backup( $args, $assoc_args ) { add_action( 'hmbkp_mysqldump_started', function () { \WP_CLI::line( __( 'Backup: Dumping database...', 'backupwordpress' ) ); } ); add_action( 'hmbkp_archive_started', function () { \WP_CLI::line( __( 'Backup: Zipping everything up...', 'backupwordpress' ) ); } ); if ( ! empty( $assoc_args['destination'] ) ) { Path::get_instance()->set_path( $assoc_args['destination'] ); } Path::get_instance()->cleanup(); if ( ! empty( $assoc_args['root'] ) ) { Path::get_instance()->set_root( $assoc_args['root'] ); } if ( ( ! is_dir( Path::get_path() ) ) ) { \WP_CLI::error( __( 'Invalid backup path', 'backupwordpress' ) ); return false; } if ( ! is_dir( Path::get_root() ) || ! is_readable( Path::get_root() ) ) { \WP_CLI::error( __( 'Invalid root path', 'backupwordpress' ) ); return false; } $filename = 'backup.zip'; if ( isset( $assoc_args['archive_filename'] ) ) { $filename = $assoc_args['archive_filename']; } $hm_backup = new Backup( $filename ); if ( ! empty( $assoc_args['files_only'] ) ) { $hm_backup->set_type( 'file' ); } if ( ! empty( $assoc_args['database_only'] ) ) { $hm_backup->set_type( 'database' ); } if ( ! empty( $assoc_args['excludes'] ) ) { $hm_backup->set_excludes( new Excludes( $assoc_args['excludes'] ) ); } $hm_backup->run(); if ( file_exists( $hm_backup->get_backup_filepath() ) ) { \WP_CLI::success( __( 'Backup Complete: ', 'backupwordpress' ) . $hm_backup->get_backup_filepath() ); } else { \WP_CLI::error( __( 'Backup Failed', 'backupwordpress' ) ); } } } \WP_CLI::add_command( 'backupwordpress', 'HM\BackUpWordPress\CLI' ); ================================================ FILE: classes/class-email-service.php ================================================

' . size_format( get_max_attachment_size() ) . '' ); ?>

class="hmbkp_active"> HMBKP_ATTACHMENT_MAX_FILESIZE

' . HMBKP_ATTACHMENT_MAX_FILESIZE . '' ); ?>

10MB' ); ?> define( 'HMBKP_ATTACHMENT_MAX_FILESIZE', '25MB' );

get_email_address_array() ) { $email = '' . implode( ', ', array_map( 'esc_html', $emails ) ) . ''; return sprintf( __( 'Send an email notification to %s', 'backupwordpress' ), $email ); } return ''; } /** * Used to determine if the service is in use or not */ public function is_service_active() { return (bool) $this->get_email_address_array(); } /** * Validate the email and return an error if validation fails * * @param array &$new_data Array of new data, passed by reference. * @param array $old_data The data we are replacing. * * @return array|null Null on success, array of errors if validation failed. */ public function update( &$new_data, $old_data ) { $errors = array(); if ( isset( $new_data['email'] ) ) { if ( ! empty( $new_data['email'] ) ) { foreach ( explode( ',', $new_data['email'] ) as $email ) { $email = trim( $email ); if ( ! is_email( $email ) ) { $errors['email'] = sprintf( __( '%s isn\'t a valid email', 'backupwordpress' ), $email ); } } } if ( ! empty( $errors['email'] ) ) { $new_data['email'] = ''; } return $errors; } } /** * Get an array or validated email address's * @return array An array of validated email address's */ private function get_email_address_array() { $emails = array_map( 'trim', explode( ',', $this->get_field_value( 'email' ) ) ); return array_filter( array_unique( $emails ), 'is_email' ); } /** * Fire the email notification on the hmbkp_backup_complete * * @see Backup::do_action * @param string $action The action received from the backup */ public function action( $action, Backup $backup ) { if ( 'hmbkp_backup_complete' === $action && $this->get_email_address_array() ) { $file = $backup->get_backup_filepath(); $sent = false; $download = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL ); $domain = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH ); $headers = 'From: BackUpWordPress <' . apply_filters( 'hmbkp_from_email', get_bloginfo( 'admin_email' ) ) . '>' . "\r\n"; // The backup failed, send a message saying as much if ( ! file_exists( $file ) && ( $errors = array_merge( $backup->get_errors(), $backup->get_warnings() ) ) ) { $error_message = ''; foreach ( $errors as $error_set ) { $error_message .= implode( "\n - ", $error_set ); } if ( $error_message ) { $error_message = ' - ' . $error_message; } $subject = sprintf( __( 'Backup of %s Failed', 'backupwordpress' ), $domain ); $message = sprintf( __( 'BackUpWordPress was unable to backup your site %1$s.', 'backupwordpress' ) . "\n\n" . __( 'Here are the errors that we\'ve encountered:', 'backupwordpress' ) . "\n\n" . '%2$s' . "\n\n" . __( 'If the errors above look like Martian, you can find further assistance on our %3$ssupport forums%4$s ', 'backupwordpress' ) . "\n\n" . __( "Kind Regards,\nThe Apologetic BackUpWordPress Backup Emailing Robot", 'backupwordpress' ), home_url(), $error_message, '', '' ); wp_mail( $this->get_email_address_array(), $subject, $message, $headers ); return; } $subject = sprintf( __( 'Backup of %s', 'backupwordpress' ), $domain ); // If it's larger than the max attachment size limit assume it's not going to be able to send the backup if ( @filesize( $file ) < get_max_attachment_size() ) { $message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'backupwordpress' ) . "\n\n" . __( 'The backup file should be attached to this email.', 'backupwordpress' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'backupwordpress' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'backupwordpress' ), home_url(), $download ); $sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers, $file ); } // If we didn't send the email above then send just the notification if ( ! $sent ) { $message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'backupwordpress' ) . "\n\n" . __( 'Unfortunately, the backup file was too large to attach to this email.', 'backupwordpress' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'backupwordpress' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'backupwordpress' ), home_url(), $download ); wp_mail( $this->get_email_address_array(), $subject, $message, $headers ); } } } public static function intercom_data() { return array(); } public static function intercom_data_html() {} } // Register the service Services::register( __FILE__, 'HM\BackUpWordPress\Email_Service' ); ================================================ FILE: classes/class-excludes.php ================================================ set_excludes( $excludes ); } /** * Set the exclude rules. * * Excludes rules should be a complete or partial directory or file path. * Wildcards can be specified with the * character. * * @param string|array $excludes The list of exclude rules, accepts either * a comma separated list or an array. */ public function set_excludes( $excludes ) { if ( is_string( $excludes ) ) { $excludes = explode( ',', $excludes ); } $this->excludes = $excludes; } /** * Get the excludes. * * Returns any user set excludes as well as the default list. * * @return array The array of exclude rules. */ public function get_excludes() { return array_merge( $this->get_default_excludes(), $this->get_user_excludes() ); } /** * Get the excludes prepared for use with regex. * * The primary difference being that any wildcard (*) rules are converted to the regex * fragment `[\s\S]*?`. * * @return array The array of exclude rules. */ public function get_excludes_for_regex() { $excludes = $this->get_excludes(); // Prepare the exclude rules. foreach ( $excludes as &$exclude ) { if ( strpos( $exclude, '*' ) !== false ) { // Escape slashes. $exclude = str_replace( '/', '\/', $exclude ); // Convert WildCards to regex. $exclude = str_replace( '*', '[\s\S]*?', $exclude ); // Wrap in slashes. $exclude = '/' . $exclude . '/'; } } return $excludes; } /** * Get the user defined excludes. * * @return array The array of excludes. */ public function get_user_excludes() { $excludes = $this->excludes; // If path() is inside root(), exclude it. if ( strpos( Path::get_path(), Path::get_root() ) !== false && Path::get_root() !== Path::get_path() ) { array_unshift( $excludes, trailingslashit( Path::get_path() ) ); } return $this->normalize( $excludes ); } /** * Get the array of default excludes. * * @return array The array of excludes. */ public function get_default_excludes() { $excludes = array(); // Back compat with the old constant. if ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE ) { $excludes = explode( ',', implode( ',', (array) HMBKP_EXCLUDE ) ); } $excludes = array_merge( $this->default_excludes, $excludes ); /** * Allow the default excludes list to be modified. * * @param $excludes The array of exclude rules. */ $excludes = apply_filters( 'hmbkp_default_excludes', $excludes ); return $this->normalize( $excludes ); } /** * Normalise the exclude rules so they are ready to work with. * * @param array $excludes The array of exclude rules to normalise. * * @return array The array of normalised rules. */ public function normalize( $excludes ) { $excludes = array_map( function( $exclude ) { // Convert absolute paths to relative. $exclude = str_replace( PATH::get_root(), '', wp_normalize_path( $exclude ) ); // Trim the slashes. $exclude = trim( $exclude ); $exclude = ltrim( $exclude, '/' ); $exclude = untrailingslashit( $exclude ); return $exclude; }, $excludes ); // Remove duplicate or empty rules. $excludes = array_unique( $excludes ); $excludes = array_filter( $excludes ); return $excludes; } /** * Check if a file is excluded, * i.e. excluded directly or is in an excluded folder. * * @param \SplFileInfo $file File to check if it's excluded. * * @return bool|null True if file is excluded, false otherwise. * Null - if it's not a file. */ public function is_file_excluded( \SplFileInfo $file ) { $exclude_string = implode( '|', $this->get_excludes_for_regex() ); $file_path_no_root = str_ireplace( trailingslashit( Path::get_root() ), '', wp_normalize_path( $file->getPathname() ) ); if ( $exclude_string && preg_match( '(' . $exclude_string . ')', $file_path_no_root ) ) { return true; } return false; } } ================================================ FILE: classes/class-extensions.php ================================================ instance */ private static $instance; /** * Holds the root URL of the API. * * @var string */ protected $root_url = ''; /** * Extensions constructor. * */ private function __construct() { $this->root_url = 'https://bwp.hmn.md/wp-json/wp/v2/'; } public function __wakeup() { throw new \Exception('may not be serialized'); } public function __clone() { throw new \Exception('may not be cloned'); } /** * Returns the *Singleton* instance of this class. * * @staticvar Extensions $instance The *Singleton* instances of this class. * * @return Extensions The *Singleton* instance. */ public static function get_instance() { if ( ! ( self::$instance instanceof Extensions ) ) { self::$instance = new Extensions(); } return self::$instance; } /** * Parses the body of the API response and returns it. * * @return array|bool|mixed|object */ public function get_edd_data() { $response = $this->fetch( 'edd-downloads' ); if ( is_wp_error( $response ) || empty( $response['body'] ) ) { return false; } return json_decode( $response['body'] ); } /** * Makes a request to the JSON API or retrieves the cached response. Caches the response for one day. * * @param $endpoint * @param int $ttl * * @return array|mixed|\WP_Error */ protected function fetch( $endpoint, $ttl = DAY_IN_SECONDS ) { $request_url = $this->root_url . $endpoint; $cache_key = md5( $request_url ); $cached = get_transient( 'bwp_' . $cache_key ); if ( $cached ) { return $cached; } $response = wp_remote_get( $request_url ); if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { return new \WP_Error( 'hmbkp-error', 'Unable to fetch API response' ); } set_transient( 'bwp_' . $cache_key, $response, $ttl ); return $response; } } ================================================ FILE: classes/class-notices.php ================================================ array( 'message' ) );`` * * @var array */ private $notices = array(); /** * Contains the instantiated Notices instance * * @var Notices $this->get_instance */ private static $instance; /** * Protected constructor to prevent creating a new instance of the * *Singleton* via the `new` operator from outside of this class. */ protected function __construct() {} /** * Prevent cloning of the instance of the *Singleton* instance. */ public function __clone() { throw new \Exception('may not be cloned'); } /** * Prevent unserializing of the *Singleton* instance. */ public function __wakeup() { throw new \Exception('may not be serialized'); } /** * Returns the *Singleton* instance of this class. * * @staticvar Notices $instance The *Singleton* instances of this class. * * @return Notices The *Singleton* instance. */ public static function get_instance() { if ( ! ( self::$instance instanceof Notices ) ) { self::$instance = new Notices(); } return self::$instance; } /** * Set an array of notice messages for a specific context * * @param string $context The context of the notice message * @param array $messages The array of messages * @param boolean $persistent Whether the notice should persist via the database. Defaults to true. */ public function set_notices( $context, array $messages, $persistent = true ) { // Clear any empty messages and avoid duplicates $messages = array_unique( array_filter( $messages ) ); if ( empty( $context ) || empty( $messages ) ) { return false; } $this->notices[ $context ] = array_merge( $this->get_notices( $context ), $messages ); if ( $persistent ) { $new_notices = $notices = $this->get_persistent_notices(); // Make sure we merge new notices into to any existing notices if ( ! empty( $notices[ $context ] ) ) { $new_notices[ $context ] = array_unique( array_merge( $new_notices[ $context ], $messages ) ); } else { $new_notices[ $context ] = $messages; } // Only update the database if the notice array has changed if ( $new_notices !== $notices ) { update_option( 'hmbkp_notices', $new_notices ); } } return true; } /** * Fetch an array of notices messages * * If you specify a context then you'll just get messages for that context otherwise * you get multidimensional array of all contexts and their messages. * * @param string $context The context that you'd like the messages for * * @return array The array of notice messages */ public function get_notices( $context = '' ) { $notices = $this->get_all_notices(); if ( ! empty( $notices ) ) { if ( ! empty( $context ) ) { return isset( $notices[ $context ] ) ? $notices[ $context ] : array(); } return $notices; } return array(); } /** * Get both standard and persistent notices * * @return array The array of contexts and notices */ private function get_all_notices() { return array_map( 'array_unique', array_merge_recursive( $this->notices, $this->get_persistent_notices() ) ); } /** * Load the persistent notices from the database * * @return array The array of notices */ private function get_persistent_notices() { $notices = get_option( 'hmbkp_notices' ); return ! empty( $notices ) ? $notices : array(); } /** * Clear all notices including persistent ones */ public function clear_all_notices() { $this->notices = array(); delete_option( 'hmbkp_notices' ); } } ================================================ FILE: classes/class-path.php ================================================ path */ private $path; /** * The path to the directory that will be backed up * * @var string $this->root */ private $root; /** * The path to the directory that backup files are stored in * * @var string $this->path */ private $custom_path; /** * Contains the instantiated Path instance * * @var Path $this->instance */ private static $instance; /** * Protected constructor to prevent creating a new instance of the * *Singleton* via the `new` operator from outside of this class. */ protected function __construct() {} /** * Prevent cloning of the instance of the *Singleton* instance. */ public function __clone() { throw new \Exception('may not be cloned'); } /** * Prevent unserializing of the *Singleton* instance. */ public function __wakeup() { throw new \Exception('may not be serialized'); } /** * Returns the *Singleton* instance of this class. * * @staticvar Path $instance The *Singleton* instances of this class. * * @return Path The *Singleton* instance. */ public static function get_instance() { if ( ! ( self::$instance instanceof Path ) ) { self::$instance = new Path(); } return self::$instance; } /** * Convenience method for quickly grabbing the path */ public static function get_path() { return self::get_instance()->get_calculated_path(); } /** * Convenience method for quickly grabbing the root */ public static function get_root() { return self::get_instance()->get_calculated_root(); } /** * Calculate the path to the site "home" directory. * * The home directory is the path equivalent to the home_url. That is, * the path to the true root of the website. In situations where WordPress is * installed in a subdirectory the home path is different to ABSPATH * * @param string $site_path The site_path to use when calculating the home path, defaults to ABSPATH */ public static function get_home_path( $site_path = ABSPATH ) { if ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT ) { return wp_normalize_path( HMBKP_ROOT ); } $home_path = wp_normalize_path( $site_path ); if ( path_in_php_open_basedir( dirname( $site_path ) ) ) { $home = set_url_scheme( get_option( 'home' ), 'http' ); $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ $pos = strripos( wp_normalize_path( $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); $home_path = substr( wp_normalize_path( $_SERVER['SCRIPT_FILENAME'] ), 0, $pos ); $home_path = trailingslashit( $home_path ); } if ( is_multisite() ) { $slashed_home = trailingslashit( get_option( 'home' ) ); $base = parse_url( $slashed_home, PHP_URL_PATH ); $document_root_fix = wp_normalize_path( realpath( $_SERVER['DOCUMENT_ROOT'] ) ); $abspath_fix = wp_normalize_path( ABSPATH ); $home_path = strpos( $abspath_fix, $document_root_fix ) === 0 ? $document_root_fix . $base : $home_path; } } return wp_normalize_path( untrailingslashit( $home_path ) ); } /** * get the calculated path to the directory where backups will be stored */ private function get_calculated_path() { // Calculate the path if needed if ( empty( $this->path ) || ! wp_is_writable( $this->path ) ) { $this->calculate_path(); } // Ensure the backup directory is protected $this->protect_path(); return wp_normalize_path( $this->path ); } /** * Set the path directly, overriding the default * * @param $path */ public function set_path( $path ) { $this->custom_path = $path; // Re-calculate the backup path $this->calculate_path(); } /** * get the calculated path to the directory that will be backed up */ private function get_calculated_root() { $root = self::get_home_path(); if ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT ) { $root = HMBKP_ROOT; } if ( $this->root ) { $root = $this->root; } return wp_normalize_path( $root ); } /** * Set the root path directly, overriding the default * * @param $root */ public function set_root( $root ) { $this->root = $root; } public function reset_path() { $this->path = $this->custom_path = ''; } /** * Get the path to the default backup location in wp-content */ public function get_default_path() { return trailingslashit( wp_normalize_path( WP_CONTENT_DIR ) ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups'; } /** * Get the path to the fallback backup location in uploads */ public function get_fallback_path() { $upload_dir = wp_upload_dir(); return trailingslashit( wp_normalize_path( $upload_dir['basedir'] ) ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups'; } /** * Get the path to the custom backup location if it's been set */ public function get_custom_path() { if ( $this->custom_path ) { return $this->custom_path; } if ( defined( 'HMBKP_PATH' ) && wp_is_writable( HMBKP_PATH ) ) { return HMBKP_PATH; } return ''; } /** * Builds an array containing existing backups folders. * * @return array */ public function get_existing_paths() { if ( false === $default = glob( WP_CONTENT_DIR . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) { $default = array(); } $upload_dir = wp_upload_dir(); if ( false === $fallback = glob( $upload_dir['basedir'] . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) { $fallback = array(); } $paths = array_merge( $default, $fallback ); $paths = array_map( 'wp_normalize_path', $paths ); return $paths; } /** * Returns the first existing path if there is one * * @return string Backup path if found empty string if not */ public function get_existing_path() { $paths = $this->get_existing_paths(); if ( ! empty( $paths[0] ) ) { return $paths[0]; } return ''; } /** * Calculate the backup path and create the directory if it doesn't exist. * * Tries all possible locations and uses the first one possible. * * @return */ public function calculate_path() { $paths = $this->get_possible_paths(); // Loop through possible paths, use the first one that exists/can be created and is writable. foreach ( $paths as $path ) { // Also handles fixing perms / directory already exists. if ( wp_mkdir_p( $path ) && wp_is_writable( $path ) ) { break; } } /** * If we managed to create a writable path then use that, * otherwise just return the unwritable path. */ if ( file_exists( $path ) && wp_is_writable( $path ) ) { $this->path = $path; } else { $this->path = reset( $paths ); } } public function get_possible_paths() { $paths = array(); // If we have a custom path then try to use it. if ( $this->get_custom_path() ) { $paths[] = $this->get_custom_path(); } // If there is already a backups directory then try to use that. if ( $this->get_existing_path() ) { $paths[] = $this->get_existing_path(); } // If not then default to a new directory in wp-content. $paths[] = $this->get_default_path(); // If that didn't work then fallback to a new directory in uploads. $paths[] = $this->get_fallback_path(); return $paths; } /** * Protect the directory that backups are stored in * * - Adds an index.html file in an attempt to disable directory browsing * - Adds a .httaccess file to deny direct access if on Apache * * @param string $reset */ public function protect_path( $reset = 'no' ) { global $is_apache; // Protect against directory browsing by including an index.html file $index = $this->path . '/index.html'; if ( 'reset' === $reset && file_exists( $index ) ) { @unlink( $index ); } if ( ! file_exists( $index ) && wp_is_writable( $this->path ) ) { file_put_contents( $index, '' ); } $htaccess = $this->path . '/.htaccess'; if ( ( 'reset' === $reset ) && file_exists( $htaccess ) ) { @unlink( $htaccess ); } // Protect the directory with a .htaccess file on Apache servers if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && wp_is_writable( $this->path ) ) { $contents = array(); $contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'backupwordpress' ), '.htaccess' ); $contents[] = ''; $contents[] = ''; $contents[] = 'RewriteEngine On'; $contents[] = 'RewriteCond %{QUERY_STRING} !key=' . HMBKP_SECURE_KEY; $contents[] = 'RewriteRule (.*) - [F]'; $contents[] = ''; $contents[] = ''; file_put_contents( $htaccess, '' ); insert_with_markers( $htaccess, 'BackUpWordPress', $contents ); } } /** * If we have more than one path then move any existing backups to the current path and remove them */ public function merge_existing_paths() { $paths = $this->get_existing_paths(); if ( ( ! empty( $paths ) && $this->get_custom_path() ) || count( $paths ) > 1 ) { foreach ( $paths as $old_path ) { $this->move_old_backups( $old_path ); } } } /** * Move backup files from an existing directory and the new * location. * * @param string $from The path to move the backups from. */ public function move_old_backups( $from ) { if ( ! is_readable( $from ) ) { return; } if ( ! wp_is_writable( Path::get_path() ) ) { return; } // Move any existing backups if ( $handle = opendir( $from ) ) { // Loop through the backup directory while ( false !== ( $file = readdir( $handle ) ) ) { // Find all zips if ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) ) { // Try to move them if ( ! @rename( trailingslashit( $from ) . $file, trailingslashit( Path::get_path() ) . $file ) ) { // If we can't move them then try to copy them copy( trailingslashit( $from ) . $file, trailingslashit( Path::get_path() ) . $file ); } } } closedir( $handle ); } // Delete the old directory if it's inside WP_CONTENT_DIR if ( false !== strpos( $from, WP_CONTENT_DIR ) && Path::get_path() !== $from ) { rmdirtree( $from ); } } /** * Clean any temporary / incomplete backups from the backups directory */ public function cleanup() { // Don't cleanup a custom path, who knows what other stuff is there if ( Path::get_path() === $this->get_custom_path() ) { return; } foreach ( new CleanUpIterator( new \DirectoryIterator( Path::get_path() ) ) as $file ) { if ( $file->isDot() || ! $file->isReadable() || ! $file->isFile() ) { continue; } @unlink( $file->getPathname() ); } } } class CleanUpIterator extends \FilterIterator { // Don't match index.html, files with zip extension or status logfiles. public function accept() { // Don't remove existing backups if ( 'zip' === pathinfo( $this->current()->getFilename(), PATHINFO_EXTENSION ) ) { return false; } // Don't remove the index.html file if ( 'index.html' === $this->current()->getBasename() ) { return false; } // Don't remove the file manifest if ( '.files' === $this->current()->getBasename() ) { return false; } // Don't cleanup the backup running file return ! preg_match( '/(.*-running)/', $this->current() ); } } ================================================ FILE: classes/class-plugin.php ================================================ maybe_self_deactivate() ) { $this->constants(); $this->includes(); $this->hooks(); $this->text_domain(); // If we get here, then BWP is loaded do_action( 'backupwordpress_loaded' ); } } /** * Check plugin requirements. * * @return bool True is fails requirements. False otherwise. */ public function maybe_self_deactivate() { require_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' ); if ( false === \HMBKP_Setup::meets_requirements() ) { add_action( 'admin_init', array( '\HMBKP_Setup', 'self_deactivate' ) ); add_action( 'all_admin_notices', array( '\HMBKP_Setup', 'display_admin_notices' ) ); return true; } return false; } /** * Define all the constants. */ public function constants() { if ( ! defined( 'HMBKP_PLUGIN_SLUG' ) ) { define( 'HMBKP_PLUGIN_SLUG', dirname( HMBKP_BASENAME ) ); } if ( ! defined( 'HMBKP_PLUGIN_URL' ) ) { define( 'HMBKP_PLUGIN_URL', plugin_dir_url( HMBKP_BASENAME ) ); } if ( ! defined( 'HMBKP_PLUGIN_LANG_DIR' ) ) { define( 'HMBKP_PLUGIN_LANG_DIR', apply_filters( 'hmbkp_filter_lang_dir', HMBKP_PLUGIN_SLUG . '/languages/' ) ); } if ( ! defined( 'HMBKP_ADMIN_URL' ) ) { $page = is_multisite() ? network_admin_url( 'settings.php' ) : admin_url( 'tools.php' ); define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, $page ) ); } if ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) { $prefix = is_multisite() ? 'settings_page_' : 'tools_page_'; define( 'HMBKP_ADMIN_PAGE', $prefix . HMBKP_PLUGIN_SLUG ); } define( 'HMBKP_SECURE_KEY', $this->generate_key() ); } /** * Load all BackUpWordPress functions. */ protected function includes() { require_once( HMBKP_PLUGIN_PATH . 'vendor/autoload.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-notices.php' ); // Load Whitelist HTML submodule and admin required functions. require_once( HMBKP_PLUGIN_PATH . 'whitelist-html/whitelist-html.php' ); require_once( HMBKP_PLUGIN_PATH . 'admin/menu.php' ); require_once( HMBKP_PLUGIN_PATH . 'admin/actions.php' ); // Load Backdrop if necessary. if ( ! class_exists( 'HM_Backdrop_Task' ) ) { require_once( HMBKP_PLUGIN_PATH . 'backdrop/hm-backdrop.php' ); } require_once( HMBKP_PLUGIN_PATH . 'classes/class-requirements.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-requirement.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-path.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-excludes.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-site-size.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-utilities.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-status.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database-mysqldump.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database-imysqldump.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file-zip.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file-zip-archive.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup.php' ); // Load the backup scheduling classes require_once( HMBKP_PLUGIN_PATH . 'classes/class-scheduled-backup.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-schedules.php' ); // Load the core functions require_once( HMBKP_PLUGIN_PATH . 'functions/core.php' ); require_once( HMBKP_PLUGIN_PATH . 'functions/interface.php' ); // Load the services require_once( HMBKP_PLUGIN_PATH . 'classes/class-services.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-service.php' ); // Load the email service require_once( HMBKP_PLUGIN_PATH . 'classes/class-email-service.php' ); // Load the webhook services require_once( HMBKP_PLUGIN_PATH . 'classes/class-webhook-service.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-wpremote-webhook-service.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/deprecated.php' ); require_once( HMBKP_PLUGIN_PATH . 'classes/class-extensions.php' ); // Load the wp cli command if ( defined( 'WP_CLI' ) && WP_CLI ) { include( HMBKP_PLUGIN_PATH . 'classes/class-backupwordpress-wp-cli-command.php' ); } } /** * Hook into WordPress page lifecycle and execute BackUpWordPress functions. */ public function hooks() { add_action( 'activated_plugin', array( $this, 'load_first' ) ); add_action( 'admin_init', array( $this, 'upgrade' ) ); add_action( 'admin_init', array( $this, 'init' ) ); add_action( 'hmbkp_schedule_hook', array( $this, 'schedule_hook_run' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); add_action( 'admin_footer-' . HMBKP_ADMIN_PAGE, array( $this, 'load_intercom_script' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) ); } /** * Load the Javascript in the admin. * * @param $hook The name of the admin page hook. */ public function scripts( $hook ) { if ( HMBKP_ADMIN_PAGE !== $hook ) { return; } $js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.js'; // TODO shuold this also support WP_SCRIPT_DEBUG if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { $js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.js'; } wp_enqueue_script( 'hmbkp', $js_file, array( 'heartbeat' ), sanitize_key( self::PLUGIN_VERSION ) ); wp_localize_script( 'hmbkp', 'hmbkp', array( 'page_slug' => HMBKP_PLUGIN_SLUG, 'nonce' => wp_create_nonce( 'hmbkp_nonce' ), 'hmbkp_run_schedule_nonce' => wp_create_nonce( 'hmbkp_run_schedule' ), 'update' => __( 'Update', 'backupwordpress' ), 'cancel' => __( 'Cancel', 'backupwordpress' ), 'delete_schedule' => __( 'Are you sure you want to delete this schedule? All of its backups will also be deleted.', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n", 'delete_backup' => __( 'Are you sure you want to delete this backup?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n", 'remove_exclude_rule' => __( 'Are you sure you want to remove this exclude rule?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n", 'remove_old_backups' => __( 'Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted. Are you sure that\'s what you want?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n", ) ); } /** * Loads the plugin text domain for translation. * This setup allows a user to just drop his custom translation files into the WordPress language directory * Files will need to be in a subdirectory with the name of the textdomain 'backupwordpress' */ public function text_domain() { // Set unique textdomain string $textdomain = 'backupwordpress'; // The 'plugin_locale' filter is also used by default in load_plugin_textdomain() $locale = apply_filters( 'plugin_locale', get_locale(), $textdomain ); // Set filter for WordPress languages directory $hmbkp_wp_lang_dir = apply_filters( 'hmbkp_do_filter_wp_lang_dir', trailingslashit( WP_LANG_DIR ) . trailingslashit( $textdomain ) . $textdomain . '-' . $locale . '.mo' ); // Translations: First, look in WordPress' "languages" folder = custom & update-secure! load_textdomain( $textdomain, $hmbkp_wp_lang_dir ); // Translations: Secondly, look in plugin's "languages" folder = default load_plugin_textdomain( $textdomain, false, HMBKP_PLUGIN_LANG_DIR ); } /** * Determine if we need to run an upgrade routine. */ public function upgrade() { // Fire the update action if ( self::PLUGIN_VERSION != get_option( 'hmbkp_plugin_version' ) ) { update(); } } /** * Runs on every admin page load */ public function init() { // If we have multiple paths for some reason then clean them up Path::get_instance()->merge_existing_paths(); } /** * Generate a unique key. * * @return string */ protected function generate_key() { $check = apply_filters( 'hmbkp_generate_key', null ); if ( null !== $check ) { return $check; } $key = array( ABSPATH, time() ); $constants = array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT', 'SECRET_KEY' ); foreach ( $constants as $constant ) { if ( defined( $constant ) ) { $key[] = constant( $constant ); } } shuffle( $key ); return md5( serialize( $key ) ); } /** * Ensure BackUpWordPress is loaded before add-ons, changes the order of the serialized values in the DB field. */ public function load_first() { $active_plugins = get_option( 'active_plugins' ); $plugin_path = plugin_basename( __FILE__ ); $key = array_search( $plugin_path, $active_plugins ); if ( $key > 0 ) { array_splice( $active_plugins, $key, 1 ); array_unshift( $active_plugins, $plugin_path ); update_option( 'active_plugins', $active_plugins ); } } /** * Function to run when the schedule cron fires. * * @param $id */ public function schedule_hook_run( $id ) { if ( ! is_backup_possible() ) { return; } $schedules = Schedules::get_instance(); $schedule = $schedules->get_schedule( $id ); if ( ! $schedule ) { return; } $schedule->run(); } /** * Enqueue the plugin styles. * * @param $hook */ public function styles( $hook ) { if ( 'tools_page_backupwordpress_extensions' !== $hook && HMBKP_ADMIN_PAGE !== $hook ) { return; } $css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.css'; if ( WP_DEBUG ) { $css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.css'; } wp_enqueue_style( 'backupwordpress', $css_file, false, sanitize_key( self::PLUGIN_VERSION ) ); } /** * Load Intercom and send across user information and server info. Only loaded if the user has opted in. * * @param $hook */ public function load_intercom_script() { if ( ! get_option( 'hmbkp_enable_support' ) ) { return; } $info = array(); foreach ( Requirements::get_requirement_groups() as $group ) { foreach ( Requirements::get_requirements( $group ) as $requirement ) { $info[ $requirement->name() ] = $requirement->result(); } } foreach ( Services::get_services() as $file => $service ) { array_merge( $info, call_user_func( array( $service, 'intercom_data' ) ) ); } $current_user = wp_get_current_user(); $info['user_hash'] = hash_hmac( 'sha256', $current_user->user_email, 'fcUEt7Vi4ym5PXdcr2UNpGdgZTEvxX9NJl8YBTxK' ); $info['email'] = $current_user->user_email; $info['created_at'] = strtotime( $current_user->user_registered ); $info['app_id'] = '7f1l4qyq'; $info['name'] = $current_user->display_name; $info['widget'] = array( 'activator' => '#intercom' ); ?> id !== $page ) { return; } $owner_message = sprintf( __('BackupWordPress was created by our friends at HumanMade but is now owned by XIBO. We\'re committed to opensource and WordPress and will provide free support for the many BackupWordPress fans. However, we\'ll no longer be selling or supporting the paid add-ons (e.g. for backups to Dropbox and Google Drive).%1$sIt\'s a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend %2$sUpdraftPlus WordPress Backups%3$s. Click here for %4$sfull comparison%3$s', 'backupwordpress'), '

', '', '', '' ); ?>

name; } /** * @return string */ public function result() { $test = $this->test(); if ( is_string( $test ) && $test ) { return $test; } if ( is_bool( $test ) || empty( $test ) ) { if ( $test ) { return 'Yes'; } return 'No'; } return var_export( $test, true ); } public function raw_result() { return $this->test(); } } /** * Class Requirement_Zip_Archive */ class Requirement_Zip_Archive extends Requirement { /** * @var string */ protected $name = 'ZipArchive'; /** * @return bool */ public static function test() { if ( class_exists( 'ZipArchive' ) ) { return true; } return false; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Zip_Archive', 'PHP' ); /** * Class Requirement_Zip_Command * * Tests whether the zip command is available and if it is what path it's available at */ class Requirement_Zip_Command_Path extends Requirement { /** * @var string */ protected $name = 'zip command'; /** * @return string|false */ public static function test() { $backup = new Zip_File_Backup_Engine; return $backup->get_zip_executable_path(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Zip_Command_Path', 'Server' ); /** * Class Requirement_Mysqldump_Command * * Tests whether the zip command is available and if it is what path it's available at */ class Requirement_Mysqldump_Command_Path extends Requirement { /** * @var string */ protected $name = 'mysqldump command'; /** * @return string|false */ public static function test() { $backup = new Mysqldump_Database_Backup_Engine; return $backup->get_mysqldump_executable_path(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Mysqldump_Command_Path', 'Server' ); /** * Class Requirement_PHP_Version */ class Requirement_PHP_Version extends Requirement { /** * @var string */ protected $name = 'Version'; /** * @return string */ public static function test() { return PHP_VERSION; } } Requirements::register( 'HM\BackUpWordPress\Requirement_PHP_Version', 'PHP' ); /** * Class Requirement_Cron_Array */ class Requirement_Cron_Array extends Requirement { /** * @var string */ protected $name = 'Cron Array'; /** * @return bool|mixed */ public static function test() { $cron = get_option( 'cron' ); if ( ! $cron ) { return false; } return $cron; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Cron_Array', 'Site' ); /** * Class Requirement_Cron_Array */ class Requirement_Language extends Requirement { /** * @var string */ protected $name = 'Language'; /** * @return bool|mixed */ public static function test() { // Since 4.0 $language = get_option( 'WPLANG' ); if ( $language ) { return $language; } if ( defined( 'WPLANG' ) && WPLANG ) { return WPLANG; } return 'en_US'; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Language', 'Site' ); /** * Class Requirement_Safe_Mode */ class Requirement_Safe_Mode extends Requirement { /** * @var string */ protected $name = 'Safe Mode'; /** * @return bool */ public static function test() { return Backup_Utilities::is_safe_mode_on(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Safe_Mode', 'PHP' ); /** * Class Requirement_Memory_Limit */ class Requirement_PHP_Memory_Limit extends Requirement { /** * @var string */ protected $name = 'Memory Limit'; /** * @return string */ public static function test() { return @ini_get( 'memory_limit' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_PHP_Memory_Limit', 'PHP' ); /** * Class Requirement_Backup_Path */ class Requirement_Backup_Path extends Requirement { /** * @var string */ protected $name = 'Backup Path'; /** * @return string */ public static function test() { return Path::get_path(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Backup_Path', 'Site' ); /** * Class Requirement_Backup_Path_Permissions */ class Requirement_Backup_Path_Permissions extends Requirement { /** * @var string */ protected $name = 'Backup Path Permissions'; /** * @return string */ public static function test() { if ( is_readable( PATH::get_path() ) ) { return substr( sprintf( '%o', fileperms( Path::get_path() ) ), - 4 ); } return 'Unreadable'; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Backup_Path_Permissions', 'Site' ); /** * Class Requirement_WP_CONTENT_DIR */ class Requirement_WP_CONTENT_DIR extends Requirement { /** * @var string */ protected $name = 'WP_CONTENT_DIR'; /** * @return string */ public static function test() { return WP_CONTENT_DIR; } } Requirements::register( 'HM\BackUpWordPress\Requirement_WP_CONTENT_DIR', 'Site' ); /** * Class Requirement_WP_CONTENT_DIR_Permissions */ class Requirement_WP_CONTENT_DIR_Permissions extends Requirement { /** * @var string */ protected $name = 'WP_CONTENT_DIR Permissions'; /** * @return string */ public static function test() { return substr( sprintf( '%o', fileperms( WP_CONTENT_DIR ) ), - 4 ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_WP_CONTENT_DIR_Permissions', 'Site' ); /** * Class Requirement_ABSPATH */ class Requirement_ABSPATH extends Requirement { /** * @var string */ protected $name = 'ABSPATH'; /** * @return string */ public static function test() { return ABSPATH; } } Requirements::register( 'HM\BackUpWordPress\Requirement_ABSPATH', 'Site' ); /** * Class Requirement_Backup_Root_Path */ class Requirement_Backup_Root_Path extends Requirement { /** * @var string */ protected $name = 'Site Root Path'; /** * @return string */ public static function test() { return Path::get_root(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Backup_Root_Path', 'Site' ); /** * Class Requirement_Calculated_Size */ class Requirement_Calculated_Size extends Requirement { /** * @var string */ protected $name = 'Calculated size of site'; /** * @return array */ public static function test() { $backup_sizes = array(); $schedules = Schedules::get_instance(); foreach ( $schedules->get_schedules() as $schedule ) { $site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() ); if ( $site_size->is_site_size_cached() ) { $backup_sizes[ $schedule->get_type() ] = $site_size->get_formatted_site_size(); } } return $backup_sizes; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Calculated_Size', 'Site' ); /** * Class Requirement_WP_Cron_Test_Response */ class Requirement_WP_Cron_Test extends Requirement { /** * @var string */ protected $name = 'WP Cron Test Failed'; /** * @return boolean */ public static function test() { return (bool) get_option( 'hmbkp_wp_cron_test_failed' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_WP_Cron_Test', 'Site' ); /** * Class Requirement_PHP_API */ class Requirement_PHP_API extends Requirement { /** * @var string */ protected $name = 'Interface'; /** * @return string */ public static function test() { return php_sapi_name(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_PHP_API', 'PHP' ); /** * Class Requirement_Server_Software */ class Requirement_Server_Software extends Requirement { /** * @var string */ protected $name = 'Server'; /** * @return bool */ public static function test() { if ( ! empty( $_SERVER['SERVER_SOFTWARE'] ) ) { return $_SERVER['SERVER_SOFTWARE']; } return false; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Server_Software', 'Server' ); /** * Class Requirement_Server_OS */ class Requirement_Server_OS extends Requirement { /** * @var string */ protected $name = 'OS'; /** * @return string */ public static function test() { return PHP_OS; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Server_OS', 'Server' ); /** * Class Requirement_PHP_Disable_Functions */ class Requirement_PHP_Disable_Functions extends Requirement { /** * @var string */ protected $name = 'Disabled Functions'; /** * @return string */ public static function test() { return @ini_get( 'disable_functions' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_PHP_Disable_Functions', 'PHP' ); /** * Class Requirement_PHP_Open_Basedir */ class Requirement_PHP_Open_Basedir extends Requirement { /** * @var string */ protected $name = 'open_basedir'; /** * @return string */ public static function test() { return @ini_get( 'open_basedir' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_PHP_Open_Basedir', 'PHP' ); /* CONSTANTS */ /** * Class Requirement_Define_HMBKP_PATH */ class Requirement_Define_HMBKP_PATH extends Requirement { /** * @var string */ protected $name = 'HMBKP_PATH'; /** * @return string */ public static function test() { return defined( 'HMBKP_PATH' ) ? HMBKP_PATH : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_PATH', 'constants' ); /** * Class Requirement_Define_HMBKP_ROOT */ class Requirement_Define_HMBKP_ROOT extends Requirement { /** * @var string */ protected $name = 'HMBKP_ROOT'; /** * @return string */ public static function test() { return defined( 'HMBKP_ROOT' ) ? HMBKP_ROOT : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_ROOT', 'constants' ); /** * Class Requirement_Define_HMBKP_MYSQLDUMP_PATH */ class Requirement_Define_HMBKP_MYSQLDUMP_PATH extends Requirement { /** * @var string */ protected $name = 'HMBKP_MYSQLDUMP_PATH'; /** * @return string */ public static function test() { return defined( 'HMBKP_MYSQLDUMP_PATH' ) ? HMBKP_MYSQLDUMP_PATH : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_MYSQLDUMP_PATH', 'constants' ); /** * Class Requirement_Define_HMBKP_ZIP_PATH */ class Requirement_Define_HMBKP_ZIP_PATH extends Requirement { /** * @var string */ protected $name = 'HMBKP_ZIP_PATH'; /** * @return string */ public static function test() { return defined( 'HMBKP_ZIP_PATH' ) ? HMBKP_ZIP_PATH : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_ZIP_PATH', 'constants' ); /** * Class Requirement_Define_HMBKP_CAPABILITY */ class Requirement_Define_HMBKP_CAPABILITY extends Requirement { /** * @var string */ protected $name = 'HMBKP_CAPABILITY'; /** * @return string */ public static function test() { return defined( 'HMBKP_CAPABILITY' ) ? HMBKP_CAPABILITY : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_CAPABILITY', 'constants' ); /** * Class Requirement_Define_HMBKP_EMAIL */ class Requirement_Define_HMBKP_EMAIL extends Requirement { /** * @var string */ protected $name = 'HMBKP_EMAIL'; /** * @return string */ public static function test() { return defined( 'HMBKP_EMAIL' ) ? HMBKP_EMAIL : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_EMAIL', 'constants' ); /** * Class Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE */ class Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE extends Requirement { /** * @var string */ protected $name = 'HMBKP_ATTACHMENT_MAX_FILESIZE'; /** * @return string */ public static function test() { return defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) ? HMBKP_ATTACHMENT_MAX_FILESIZE : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE', 'constants' ); /** * Class Requirement_Define_HMBKP_EXCLUDE */ class Requirement_Define_HMBKP_EXCLUDE extends Requirement { /** * @var string */ protected $name = 'HMBKP_EXCLUDE'; /** * @return string */ public static function test() { return defined( 'HMBKP_EXCLUDE' ) ? HMBKP_EXCLUDE : ''; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Define_HMBKP_EXCLUDE', 'constants' ); class Requirement_Active_Plugins extends Requirement { protected $name = 'Active Plugins'; /** * Output the list of active plugins. * * @return array The array of active plugins. */ public static function test() { return get_option( 'active_plugins' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Active_Plugins', 'Site' ); class Requirement_Home_Url extends Requirement { protected $name = 'Home URL'; /** * @return string */ public static function test() { return home_url(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Home_Url', 'Site' ); class Requirement_Site_Url extends Requirement { protected $name = 'Site URL'; /** * @return string */ public static function test() { return site_url(); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Site_Url', 'Site' ); class Requirement_Plugin_Version extends Requirement { protected $name = 'Plugin Version'; /** * @return string */ public static function test() { return Plugin::PLUGIN_VERSION; } } Requirements::register( 'HM\BackUpWordPress\Requirement_Plugin_Version', 'constants' ); class Requirement_Max_Exec extends Requirement { protected $name = 'Max execution time'; /** * @return string */ public static function test() { return @ini_get( 'max_execution_time' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Max_Exec', 'PHP' ); class Requirement_PDO extends Requirement { protected $name = 'PDO'; /** * @return string|false */ public static function test() { if ( class_exists( 'PDO' ) && \PDO::getAvailableDrivers() ) { return implode( ', ', \PDO::getAvailableDrivers() ); } return false; } } Requirements::register( 'HM\BackUpWordPress\Requirement_PDO', 'PHP' ); /** * Class Requirement_Proc_Open */ class Requirement_Proc_Open extends Requirement { /** * @var string */ protected $name = 'proc_open'; /** * @return bool */ public static function test() { return function_exists( 'proc_open' ) && function_exists( 'proc_close' ); } } Requirements::register( 'HM\BackUpWordPress\Requirement_Proc_Open', 'PHP' ); ================================================ FILE: classes/class-requirements.php ================================================ __CLASS__ ); * @var array */ private static $requirements = array(); /** * Get the array of registered requirements * * @param string $group * @return array */ public static function get_requirements( $group = '' ) { $requirements = $group ? self::$requirements[ $group ] : self::$requirements; ksort( $requirements ); return array_map( array( 'self', 'instantiate' ), $requirements ); } /** * Get the requirement groups * * @return string[] */ public static function get_requirement_groups() { return array_keys( self::$requirements ); } /** * Register a new requirement * * @param $class * @param string $group */ public static function register( $class, $group = 'misc' ) { self::$requirements[ $group ][] = $class; } /** * Instantiate the individual requirement classes * * @param string $class * @return array An array of instantiated classes */ private static function instantiate( $class ) { $$class = new $class; return $$class; } } ================================================ FILE: classes/class-scheduled-backup.php ================================================ 3, 'excludes' => array(), 'type' => 'complete', 'reoccurrence' => 'manually', ); /** * Setup the schedule object * Loads the options from the database and populates properties * * @param string $id * * @throws Exception */ public function __construct( $id ) { // Verify the schedule id if ( ! is_string( $id ) || ! trim( $id ) ) { throw new \Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non-empty string' ); } // Store id for later $this->id = $id; // Load the options $this->options = array_merge( $this->options, array_filter( (array) get_option( 'hmbkp_schedule_' . $this->get_id() ) ) ); if ( defined( 'HMBKP_SCHEDULE_START_TIME' ) && strtotime( 'HMBKP_SCHEDULE_START_TIME' ) ) { $this->set_schedule_start_time( strtotime( 'HMBKP_SCHEDULE_START_TIME' ) ); } // Setup the schedule if it isn't set if ( ( ! $this->is_cron_scheduled() && $this->get_reoccurrence() !== 'manually' ) ) { $this->schedule(); } $this->backup_filename = implode( '-', array( sanitize_title( str_ireplace( array( 'http://', 'https://', 'www', ), '', home_url() ) ), $this->get_id(), $this->get_type(), current_time( 'Y-m-d-H-i-s' ), ) ) . '.zip'; $this->database_dump_filename = implode( '-', array( 'database', sanitize_title( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ) ), $this->get_id(), ) ) . '.sql'; $this->status = new Backup_Status( $this->get_id() ); } /** * Get the id for this schedule */ public function get_id() { return esc_attr( $this->id ); } /** * Get a slugified version of name */ public function get_slug() { // We cache slug in $this to save expensive calls to sanitize_title if ( ! empty( $this->slug ) ) { return $this->slug; } return $this->slug = sanitize_title( $this->get_name() ); } /** * Returns the given option value * * @param $option_name * @return mixed The option value */ public function get_schedule_option( $option_name ) { if ( isset( $this->options[ $option_name ] ) ) { return $this->options[ $option_name ]; } } /** * Get the name of this backup schedule * * @return string */ public function get_name() { return ucwords( $this->get_type() ) . ' ' . $this->get_reoccurrence(); } /** * Get the type of backup * * @return string */ public function get_type() { return $this->options['type']; } /** * Set the type of backup * * @param string $type */ public function set_type( $type ) { if ( ! isset( $this->options['type'] ) || $this->options['type'] !== $type ) { $this->options['type'] = $type; } } /** * Get the exclude rules * * @return array */ public function get_excludes() { return new Excludes( $this->options['excludes'] ); } /** * Set the exclude rules * * @param mixed $excludes A comma separated list or array of exclude rules * @param bool $append Whether to replace or append to existing rules * * @return string */ public function set_excludes( $exclude_rules, $append = false ) { // Normalize the exclude rules before we save them $excludes = new Excludes; $excludes = $excludes->normalize( (array) $exclude_rules ); // If these are valid excludes and they are different save them if ( empty( $this->options['excludes'] ) || $this->options['excludes'] !== $excludes ) { $this->options['excludes'] = $append && ! empty( $this->options['excludes'] ) ? array_merge( (array) $this->options['excludes'], (array) $excludes ) : (array) $excludes; } } /** * Get the maximum number of backups to keep * * @return int */ public function get_max_backups() { return (int) $this->options['max_backups']; } /** * Set the maximum number of backups to keep * * @param int $max * * @return WP_Error|boolean */ public function set_max_backups( $max ) { $this->options['max_backups'] = $max; } public function get_status() { return $this->status; } /** * Back compat with old set_status mathod * * @deprecated 3.4 Backup->status->set_status() */ public function set_status( $message ) { _deprecated_function( __FUNCTION__, '3.4', 'Backup->status->set_status()' ); $this->status->set_status( $message ); } /** * Get the array of services options for this schedule * * @param $service * @param null $option * * @return array */ public function get_service_options( $service, $option = null ) { if ( ! is_null( $option ) ) { if ( isset( $this->options[ $service ][ $option ] ) ) { return $this->options[ $service ][ $option ]; } return array(); } if ( isset( $this->options[ $service ] ) ) { return $this->options[ $service ]; } return array(); } /** * Set the service options for this schedule * * @param $service * @param array $options */ public function set_service_options( $service, array $options ) { $this->options[ $service ] = $options; } /** * Get the start time for the schedule * * @return int timestamp || 0 for manual only schedules */ public function get_schedule_start_time( $gmt = true ) { if ( 'manually' === $this->get_reoccurrence() ) { return 0; } if ( ! $gmt ) { $offset = get_option( 'gmt_offset' ) * 3600; } else { $offset = 0; } if ( ! empty( $this->options['schedule_start_time'] ) ) { return $this->options['schedule_start_time'] + $offset; } $this->set_schedule_start_time( time() ); return time() + $offset; } /** * Set the schedule start time. * * @param Int $time A valid timestamp */ public function set_schedule_start_time( $time ) { $this->options['schedule_start_time'] = $time; $this->schedule(); } /** * Get the schedule reoccurrence * */ public function get_reoccurrence() { return $this->options['reoccurrence']; } /** * Set the schedule reoccurrence * * @param string $reoccurrence * * @return \WP_Error|null|boolean */ public function set_reoccurrence( $reoccurrence ) { $hmbkp_schedules = cron_schedules(); // Check it's valid if ( ! is_string( $reoccurrence ) || ! trim( $reoccurrence ) || ( ! in_array( $reoccurrence, array_keys( $hmbkp_schedules ) ) ) && 'manually' !== $reoccurrence ) { return new \WP_Error( 'hmbkp_invalid_argument_error', sprintf( __( 'Argument 1 for %s must be a valid cron recurrence or "manually"', 'backupwordpress' ), __METHOD__ ) ); } // If the recurrence is already set to the same thing then there's no need to continue if ( isset( $this->options['reoccurrence'] ) && $this->options['reoccurrence'] === $reoccurrence && $this->is_cron_scheduled() ) { return; } $this->options['reoccurrence'] = $reoccurrence; if ( 'manually' === $reoccurrence ) { $this->unschedule(); } else { $this->schedule(); } return true; } /** * Get the interval between backups * * @return int */ public function get_interval() { $hmbkp_schedules = cron_schedules(); if ( 'manually' === $this->get_reoccurrence() ) { return 0; } return $hmbkp_schedules[ $this->get_reoccurrence() ]['interval']; } /** * Get the next occurrence of this scheduled backup * */ public function get_next_occurrence( $gmt = true ) { $time = wp_next_scheduled( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) ); if ( ! $time ) { $time = 0; } if ( ! $gmt ) { $time += get_option( 'gmt_offset' ) * 3600; } return $time; } public function is_cron_scheduled() { return (bool) $this->get_next_occurrence(); } /** * Schedule the backup cron * */ public function schedule() { // Clear any existing hooks $this->unschedule(); $schedule_timestamp = $this->get_schedule_start_time(); wp_schedule_event( $schedule_timestamp, $this->get_reoccurrence(), 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) ); } /** * Unschedule the backup cron. * * @return void */ public function unschedule() { wp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) ); } /** * Run the backup * */ public function run() { // Don't run if this schedule is already running if ( $this->status->is_started() ) { return; } // Setup our Site Backup Object $backup = new Backup( $this->get_backup_filename(), $this->get_database_dump_filename() ); $backup->set_type( $this->get_type() ); $backup->set_excludes( $this->get_excludes() ); $backup->set_status( $this->status ); $this->do_action( 'hmbkp_backup_started', $backup ); $this->status->start( $this->get_backup_filename(), __( 'Starting backup...', 'backupwordpress' ) ); $this->status->set_status( __( 'Deleting old backups...', 'backupwordpress' ) ); // Delete old backups now in-case we fatal error during the backup process $this->delete_old_backups(); $backup->run(); $errors = array_merge( $backup->errors, $backup->warnings ); $notices = array(); foreach ( $errors as $key => $error ) { $key = str_replace( array( __NAMESPACE__ . '\\', '_File_Backup_Engine', '_Database_Backup_Engine' ), array( '', '', '' ), $key ); $notices[] = $key . ': ' . implode( ', ', $error ); } Notices::get_instance()->set_notices( 'backup_errors', $notices ); $this->status->set_status( __( 'Deleting old backups...', 'backupwordpress' ) ); // Delete old backups again $this->delete_old_backups(); $this->do_action( 'hmbkp_backup_complete', $backup ); $this->status->finish(); $this->update_average_schedule_run_time( $this->status->get_start_time(), time() ); } public function get_backup_filename() { if ( $this->status->is_started() ) { $this->backup_filename = $this->status->get_backup_filename(); } return $this->backup_filename; } public function get_database_dump_filename() { return $this->database_dump_filename; } /** * Hook into the actions fired in the Backup class and set the status * * @param $action */ public function do_action( $action, Backup $backup ) { // Pass the actions to all the services // Todo should be decoupled into the service class foreach ( Services::get_services( $this ) as $service ) { if ( is_wp_error( $service ) ) { return $service; } $service->action( $action, $backup ); } } /** * Calculate schedule run time. * * @param int Timestamp $end */ public function update_average_schedule_run_time( $start, $end ) { if ( $end <= $start ) { // Something went wrong, ignore. return; } $diff = (int) abs( $end - $start ); if ( isset( $this->options['duration_total'] ) && isset( $this->options['backup_run_count'] ) ) { $this->options['duration_total'] += $diff; $this->options['backup_run_count'] ++; } else { $this->options['duration_total'] = $diff; $this->options['backup_run_count'] = 1; } $this->save(); } /** * Calculates the average run time for this schedule. * * @return string */ public function get_schedule_average_duration() { $duration = 'Unknown'; if ( ! isset( $this->options['duration_total'] ) || ! isset( $this->options['backup_run_count'] ) ) { return $duration; } if ( 0 === (int) $this->options['backup_run_count'] ) { return $duration; } $average_run_time = (int) $this->options['duration_total'] / (int) $this->options['backup_run_count']; if ( $average_run_time < HOUR_IN_SECONDS ) { $mins = round( $average_run_time / MINUTE_IN_SECONDS ); if ( $mins <= 1 ) { $mins = 1; } /* translators: min=minute */ $duration = sprintf( _n( '%s min', '%s mins', $mins, 'backupwordpress' ), $mins ); } elseif ( $average_run_time < DAY_IN_SECONDS && $average_run_time >= HOUR_IN_SECONDS ) { $hours = round( $average_run_time / HOUR_IN_SECONDS ); if ( $hours <= 1 ) { $hours = 1; } $duration = sprintf( _n( '%s hour', '%s hours', $hours, 'backupwordpress' ), $hours ); } return $duration; } /** * Get the backups created by this schedule * * @todo look into using recursiveDirectoryIterator and recursiveRegexIterator * @return string[] - file paths of the backups */ public function get_backups() { $files = array(); if ( $handle = @opendir( Path::get_path() ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { if ( pathinfo( $file, PATHINFO_EXTENSION ) === 'zip' && strpos( $file, $this->get_id() ) !== false && ( isset( $this->status ) && $this->get_backup_filename() !== $file ) ) { $files[ @filemtime( trailingslashit( Path::get_path() ) . $file ) ] = trailingslashit( Path::get_path() ) . $file; } } closedir( $handle ); } krsort( $files ); return $files; } /** * Delete old backups * * @access private */ public function delete_old_backups() { if ( count( $this->get_backups() ) <= $this->get_max_backups() ) { return; } array_map( array( $this, 'delete_backup' ), array_slice( $this->get_backups(), $this->get_max_backups() ) ); } /** * Delete a specific back up file created by this schedule * * @param string $filepath * * @return \WP_Error|boolean */ public function delete_backup( $filepath ) { // Check that it's a valid filepath if ( empty( $filepath ) || ! is_string( $filepath ) ) { return new \WP_Error( 'hmbkp_empty_string_error', sprintf( __( 'Argument 1 for %s must be a non-empty string', 'backupwordpress' ), __METHOD__ ) ); } // Make sure it exists if ( ! file_exists( $filepath ) ) { return new \WP_Error( 'hmbkp_file_error', sprintf( __( '%s doesn\'t exist', 'backupwordpress' ), $filepath ) ); } // Make sure it was created by this schedule if ( strpos( $filepath, $this->get_id() ) === false ) { return new \WP_Error( 'hmbkp_backup_error', __( 'That backup wasn\'t created by this schedule', 'backupwordpress' ) ); } unlink( $filepath ); return true; } /** * Delete all back up files created by this schedule * */ public function delete_backups() { array_map( array( $this, 'delete_backup' ), $this->get_backups() ); } /** * Save the schedules options. * */ public function save() { // Only save them if they have changed if ( get_option( 'hmbkp_schedule_' . $this->get_id() ) !== $this->options ) { update_option( 'hmbkp_schedule_' . $this->get_id(), $this->options ); // Delete the schedule cache. delete_transient( 'hmbkp_schedules' ); } } /** * Cancel this schedule * * Cancels the cron job, removes the schedules options * and optionally deletes all backups created by * this schedule. * */ public function cancel( $delete_backups = false ) { // Delete the schedule options delete_option( 'hmbkp_schedule_' . $this->get_id() ); // Delete the schedule cache. delete_transient( 'hmbkp_schedules' ); // Clear any existing schedules $this->unschedule(); // Delete it's backups if ( $delete_backups ) { $this->delete_backups(); } } } ================================================ FILE: classes/class-schedules.php ================================================ schedules * */ private function __construct() { $this->refresh_schedules(); } public function refresh_schedules() { $schedules = get_transient( 'hmbkp_schedules' ); if ( ! $schedules ) { global $wpdb; // Load all schedule options from the database. $schedules = $wpdb->get_col( "SELECT option_name from $wpdb->options WHERE option_name LIKE 'hmbkp\_schedule\_%'" ); set_transient( 'hmbkp_schedules', $schedules, WEEK_IN_SECONDS ); } // Instantiate each one as a Scheduled_Backup $this->schedules = array_map( array( $this, 'instantiate' ), array_filter( (array) $schedules ) ); } /** * Get an array of schedules * * @return Scheduled_Backup[] */ public function get_schedules() { return $this->schedules; } /** * Get a schedule by ID * * @param $id * @return Scheduled_Backup */ public function get_schedule( $id ) { foreach ( $this->schedules as $schedule ) { if ( $schedule->get_id() == $id ) { return $schedule; } } return null; } /** * Instantiate the individual scheduled backup objects * * @access private * @param string $id * @return Scheduled_Backup */ private function instantiate( $id ) { return new Scheduled_Backup( str_replace( 'hmbkp_schedule_', '', $id ) ); } } ================================================ FILE: classes/class-service.php ================================================ set_schedule( $schedule ); } /** * Used to determine if the service is in use or not * * @return boolean */ abstract public function is_service_active(); /** * The form to output as part of the schedule settings * * If you don't want a whole form return ''; here and use @field instead * * @return string The raw HTML for the form you want to output */ abstract public function form(); /** * The field to output as part of the schedule settings * * If you don't want a field return ''; here and use @form instead * * @return string The raw HTML for the field you want to output */ abstract public function field(); /** * Help text that should be output in the Constants help tab * * @return string The raw HTML for the Constant help text you want to output */ public static function constant() {} /** * Validate and sanitize data before it's saved. * * @param array &$new_data An array or data from $_GET, passed by reference so it can be modified, * @param array $old_data The old data thats going to be overwritten * @return array $error Array of validation errors e.g. return array( 'email' => 'not valid' ); */ abstract public function update( &$new_data, $old_data ); /** * The string to be output as part of the schedule sentence * * @return string */ abstract public function display(); /** * Receives actions from the backup * * This is where the service should do it's thing * * @see Backup::do_action for a list of the actions * * @param $action * @param Backup $backup * * @return mixed */ public function action( $action, Backup $backup ) {} public function get_slug() { return sanitize_key( $this->name ); } /** * Utility for getting a formated html input name attribute * * @param string $name The name of the field * @return string The formated name */ protected function get_field_name( $name ) { return esc_attr( $this->get_slug() . '[' . $name . ']' ); } /** * Get the value of a field * * @param string $name The name of the field * @param string $esc The escaping function that should be used * @return string */ protected function get_field_value( $name, $esc = 'esc_attr' ) { if ( $name && $this->schedule->get_service_options( $this->get_slug(), $name ) ) { return $esc( $this->schedule->get_service_options( $this->get_slug(), $name ) ); } return ''; } /** * Save the settings for this service * * @return null|array returns null on success, array of errors on failure */ public function save() { $classname = $this->get_slug(); $old_data = $this->schedule->get_service_options( $classname ); $new_data = isset( $_POST[ $classname ] ) ? $_POST[ $classname ] : array(); // $new_data is passed by ref, so it is clean after this method call. $errors = $this->update( $new_data, $old_data ); if ( $errors && $errors = array_flip( $errors ) ) { foreach ( $errors as $error => &$field ) { $field = $this->get_slug() . '[' . $field . ']'; } return array_flip( $errors ); } // Only overwrite settings if they changed if ( ! empty( $new_data ) ) { $this->schedule->set_service_options( $classname, $new_data ); } return array(); } /** * Set the current schedule object * * @param Scheduled_Backup $schedule An instantiated schedule object */ public function set_schedule( Scheduled_Backup $schedule ) { $this->schedule = $schedule; } /** * Gets the settings for a similar destination from the existing schedules * so that we can copy them into the form to avoid having to type them again * * @return array */ protected function fetch_destination_settings() { $service = $this->get_slug(); $schedules_obj = Schedules::get_instance(); $schedules = $schedules_obj->get_schedules(); foreach ( $schedules as $schedule ) { if ( $schedule->get_id() != $this->schedule->get_id() ) { $options = $schedule->get_service_options( $service ); if ( ! empty( $options ) ) { return $options; } } } return array(); } /** * @return boolean */ public function has_form() { ob_start(); $this->form(); return (bool) ob_get_clean(); } /** * Handles passing service specific data to Intercom */ public static function intercom_data() {} public static function intercom_data_html() {} } ================================================ FILE: classes/class-services.php ================================================ __CLASS__ ); * * @access private * @var array * @static */ private $services = array(); /** * The current schedule object * * @access private * @var object Scheduled_Backup */ private $schedule; /** * Get the current instance * * @static */ public static function instance() { if ( ! isset( self::$instance ) ) { self::$instance = new Services; } return self::$instance; } /** * Get the array of registered services * * @param Scheduled_Backup $schedule * @return Service[] */ public static function get_services( Scheduled_Backup $schedule = null ) { if ( is_null( $schedule ) ) { return self::instance()->services; } self::instance()->schedule = $schedule; return array_map( array( self::instance(), 'instantiate' ), self::instance()->services ); } /** * Register a new service * * @param $filepath * @param $classname * @return \WP_Error|boolean */ public static function register( $filepath, $classname ) { if ( ! file_exists( $filepath ) ) { return new \WP_Error( 'hmbkp_invalid_path_error', sprintf( __( 'Argument 1 for %s must be a valid filepath', 'backupwordpress' ), __METHOD__ ) ); } self::instance()->services[ $filepath ] = $classname; return true; } /** * De-register an existing service * @param string $filepath * @return \WP_Error|boolean */ public static function unregister( $filepath ) { if ( ! isset( self::instance()->services[ $filepath ] ) ) { return new \WP_Error( 'hmbkp_unrecognized_service_error', sprintf( __( 'Argument 1 for %s must be a registered service', 'backupwordpress' ), __METHOD__ ) ); } unset( self::instance()->services[ $filepath ] ); return true; } /** * Instantiate the individual service classes * * @param string $classname * * @return array An array of instantiated classes */ private static function instantiate( $classname ) { if ( ! class_exists( $classname ) ) { return new \WP_Error( 'hmbkp_invalid_type_error', sprintf( __( 'Argument 1 for %s must be a valid class', 'backupwordpress' ), __METHOD__ ) ); } /** * @var Service */ $class = new $classname( self::instance()->schedule ); return $class; } } ================================================ FILE: classes/class-setup.php ================================================ true ) ); } // Run deactivate on activation in-case it was deactivated manually self::deactivate(); } /** * Cleanup on plugin deactivation * * Removes options and clears all cron schedules */ public static function deactivate() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } self::delete_schedules(); self::delete_transients(); } /** * Deletes the backup schedule database entries and WP Cron entries. */ public static function delete_schedules() { // Delete Cron schedules. global $wpdb; $schedules = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s", 'hmbkp_schedule_%' ) ); foreach ( array_map( array( 'self', 'trim_prefix' ), $schedules ) as $item ) { wp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $item ) ); } } public static function trim_prefix( $item ) { return ltrim( $item, 'hmbkp_schedule_' ); } /** * Deletes the plugin's transients from the database. */ public static function delete_transients() { // Delete all transients $transients = array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesizes_running', 'hmbkp_wp_cron_test_beacon', 'hm_backdrop', ); array_map( 'delete_transient', $transients ); } /** * Deactivate BackUpWordPress. */ public static function self_deactivate() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } if ( ! function_exists( 'deactivate_plugins' ) ) { require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); } deactivate_plugins( dirname( dirname( __FILE__ ) ) . '/backupwordpress.php' ); if ( isset( $_GET['activate'] ) ) { unset( $_GET['activate'] ); } } /** * Determine if this WordPress install meets the minimum requirements for BWP to run. * * @return bool */ public static function meets_requirements() { if ( false === self::is_supported_php_version() ) { return false; } if ( false === self::is_supported_wp_version() ) { return false; } return true; } /** * Checks the current PHP version against the required version. * * @return bool 'Operator' parameter specified, returns a boolean. */ protected static function is_supported_php_version() { return version_compare( phpversion(), self::MIN_PHP_VERSION, '>=' ); } /** * Checks the current WordPress version against the required version. * * @return bool 'Operator' parameter specified, returns a boolean. */ protected static function is_supported_wp_version() { return version_compare( get_bloginfo( 'version' ), self::MIN_WP_VERSION, '>=' ); } /** * Displays a user friendly message in the WordPress admin. */ public static function display_admin_notices() { echo '

' . self::get_notice_message() . '

'; } /** * Returns a localized user friendly error message. * * @return string */ public static function get_notice_message() { return sprintf( __( 'BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to run. It has not been activated.', 'backupwordpress' ), self::MIN_PHP_VERSION, self::MIN_WP_VERSION ); } } ================================================ FILE: classes/class-site-size.php ================================================ type = $type; $this->excludes = $excludes; } /** * Calculate the size total size of the database + files. * * Doesn't account for any compression that would be gained by zipping. * * @return string */ public function get_site_size() { if ( $this->size ) { return $this->size; } $size = 0; // Include database size except for file only schedule. if ( 'file' !== $this->type ) { $size = (int) get_transient( 'hmbkp_database_size' ); if ( ! $size ) { global $wpdb; $tables = $wpdb->get_results( 'SHOW TABLE STATUS FROM `' . DB_NAME . '`', ARRAY_A ); foreach ( $tables as $table ) { $size += (float) $table['Data_length']; } set_transient( 'hmbkp_database_size', $size, WEEK_IN_SECONDS ); } } // Include total size of dirs/files except for database only schedule. if ( 'database' !== $this->type ) { $root = new \SplFileInfo( Path::get_root() ); $size += $this->filesize( $root ); } $this->size = $size; return $size; } /** * Get the site size formatted * * @see size_format * * @return string */ public function get_formatted_site_size() { return size_format( $this->get_site_size() ); } /** * Whether the total filesize is being calculated * * @return bool */ public static function is_site_size_being_calculated() { return false !== get_transient( 'hmbkp_directory_filesizes_running' ); } /** * Whether the total filesize is cached * * @return bool */ public function is_site_size_cached() { return (bool) $this->get_cached_filesizes(); } /** * Recursively scans a directory to calculate the total filesize * * Locks should be set by the caller with `set_transient( 'hmbkp_directory_filesizes_running', true, HOUR_IN_SECONDS );` * * @return array $directory_sizes An array of directory paths => filesize sum of all files in directory */ public function recursive_filesize_scanner() { /** * Raise the `memory_limit` and `max_execution time` * * Respects the WP_MAX_MEMORY_LIMIT Constant and the `admin_memory_limit` * filter. */ @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); @set_time_limit( 0 ); // Use the cached array directory sizes if available $directory_sizes = $this->get_cached_filesizes(); // If we do have it in cache then let's use it and also clear the lock if ( is_array( $directory_sizes ) ) { delete_transient( 'hmbkp_directory_filesizes_running' ); return $directory_sizes; } // If we don't have it cached then we'll need to re-calculate $finder = new Finder(); $finder->followLinks(); $finder->ignoreDotFiles( false ); $finder->ignoreUnreadableDirs( true ); $files = $finder->in( Path::get_root() ); foreach ( $files as $file ) { if ( $file->isReadable() ) { $directory_sizes[ wp_normalize_path( $file->getRealpath() ) ] = $file->getSize(); } else { $directory_sizes[ wp_normalize_path( $file->getRealpath() ) ] = 0; } } file_put_contents( PATH::get_path() . '/.files', gzcompress( json_encode( $directory_sizes ) ) ); // Remove the lock delete_transient( 'hmbkp_directory_filesizes_running' ); return $directory_sizes; } /** * Get the total filesize for a given file or directory. Aware of exclusions. * * If $file is a file then return the result of `filesize()` or 0 if it's excluded. * If $file is a directory then recursively calculate the size without * the size of excluded files/directories. * * @param \SplFileInfo $file The file or directory you want to know the size of. * * @return int The total filesize of the file or directory without * the size of excluded files/directories. */ public function filesize( \SplFileInfo $file ) { // Skip missing or unreadable files. if ( ! file_exists( $file->getPathname() ) || ! $file->getRealpath() || ! $file->isReadable() ) { return 0; } // If it's a file then return its filesize or 0 if it's excluded. if ( $file->isFile() ) { if ( $this->excludes && $this->excludes->is_file_excluded( $file ) ) { return 0; } else { return $file->getSize(); } } // If it's a directory then pull it from the cached filesize array. if ( $file->isDir() ) { return $this->directory_filesize( $file ); } } public function directory_filesize( \SplFileInfo $file ) { // For performance reasons we cache the root. if ( $file->getRealPath() === PATH::get_root() && $this->excludes ) { $directory_sizes = get_transient( 'hmbkp_root_size' ); if ( $directory_sizes ) { return (int) $directory_sizes; } } // If we haven't calculated the site size yet then kick it off in a thread. $directory_sizes = $this->get_cached_filesizes(); if ( ! is_array( $directory_sizes ) ) { $this->rebuild_directory_filesizes(); // Intentionally return null so the caller can tell that the size is being calculated. return null; } /* * Ensure we only include files in the current path, the filepaths are stored in keys * so we need to flip for use with preg_grep. */ $directory_sizes = array_flip( preg_grep( '(' . wp_normalize_path( $file->getRealPath() ) . ')', array_flip( $directory_sizes ) ) ); if ( $this->excludes ) { $excludes = implode( '|', $this->excludes->get_excludes_for_regex() ); if ( $excludes ) { // Use PREG_GREP_INVERT to remove any filepaths which match an exclude rule $directory_sizes = array_flip( preg_grep( '(' . $excludes . ')', array_flip( $directory_sizes ), PREG_GREP_INVERT ) ); } } $directory_sizes = absint( array_sum( $directory_sizes ) ); // For performance reasons we cache the root. if ( $file->getRealPath() === PATH::get_root() && $this->excludes ) { set_transient( 'hmbkp_root_size', $directory_sizes, DAY_IN_SECONDS ); } // Directory size is now just a sum of all files across all sub directories. return (int) $directory_sizes; } public function rebuild_directory_filesizes() { if ( $this->is_site_size_being_calculated() ) { return false; } // Mark the filesize as being calculated set_transient( 'hmbkp_directory_filesizes_running', true, HOUR_IN_SECONDS ); // Schedule a Backdrop task to trigger a recalculation $task = new Task( array( $this, 'recursive_filesize_scanner' ) ); $task->schedule(); } public function get_cached_filesizes( $max_age = WEEK_IN_SECONDS ) { $cache = PATH::get_path() . '/.files'; $files = false; if ( file_exists( $cache ) ) { // If the file is old then regenerate it if ( ( time() - filemtime( $cache ) ) <= $max_age ) { $files = json_decode( gzuncompress( file_get_contents( $cache ) ), 'ARRAY_A' ); } } return $files; } } ================================================ FILE: classes/class-webhook-service.php ================================================ is_service_active() ) { return; } $webhook_url = $this->get_url(); $file = $backup->get_backup_filepath(); $download = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL ); $domain = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH ); // The backup failed, send a message saying as much if ( ! file_exists( $file ) && ( $errors = array_merge( $backup->get_errors(), $backup->get_warnings() ) ) ) { $error_message = ''; foreach ( $errors as $error_set ) { $error_message .= implode( "\n - ", $error_set ); } if ( $error_message ) { $error_message = ' - ' . $error_message; } $subject = sprintf( __( 'Backup of %s Failed', 'backupwordpress' ), $domain ); $body = array( 'type' => 'backup.error', 'site_url' => site_url(), 'backup' => array( 'id' => 'backup_' . pathinfo( $file, PATHINFO_FILENAME ), 'start' => '0', 'end' => '0', 'download_url' => '', 'type' => $this->schedule->get_type(), 'status' => array( 'message' => $subject . ' - ' . $error_message, 'success' => '0', ), ), ); } else { $body = array( 'type' => 'backup.success', 'site_url' => site_url(), 'backup' => array( 'id' => 'backup_' . $this->schedule->get_id(), 'start' => '0', 'end' => '0', 'download_url' => $download, 'type' => $this->schedule->get_type(), 'status' => array( 'message' => 'Backup complete', 'success' => '1', ), ), ); } $signature = hash_hmac( 'sha1', serialize( $body ), $this->get_secret_key() ); $webhook_args = array( 'headers' => array( 'X-BWP-Signature' => $signature ), 'body' => $body ); $ret = wp_remote_post( $webhook_url, $webhook_args ); if ( is_wp_error( $ret ) ) { $backup->warning( 'Webhook', sprintf( __( 'Error: %s', 'backupwordpress' ), $ret->get_error_message() ) ); } } public static function intercom_data() { return array(); } public static function intercom_data_html() {} } ================================================ FILE: classes/class-wpremote-webhook-service.php ================================================ get_url() ) > 0; } /** * @return string */ protected function get_url() { return ( defined( 'WPRP_PLUGIN_SLUG' ) && get_option( 'wpr_api_key' ) ) ? $this->wpremote_webhook_url : false; } /** * @return string */ protected function get_secret_key() { return get_option( 'wpr_api_key' ); } } // Register the service Services::register( __FILE__, 'HM\BackUpWordPress\WPRemote_Webhook_Service' ); ================================================ FILE: classes/deprecated.php ================================================ __CLASS__ ); * * @access private * @var array * @static */ private $services = array(); /** * The current schedule object * * @access private * @var object HMBKP_Scheduled_Backup */ private $schedule; /** * Get the current instance * * @access public * @static */ public static function instance() { if ( ! isset( self::$instance ) ) self::$instance = new HMBKP_Services; return self::$instance; } /** * Register a new service * * @param $filepath * @param $classname * @return bool|WP_Error */ public static function register( $filepath, $classname ) { _deprecated_function( __METHOD__, '3.1.2' ); } /** * Instantiate the individual service classes * * @param string $classname * * @return array An array of instantiated classes */ private static function instantiate( $classname ) { if ( ! class_exists( $classname ) ) return new \WP_Error( 'hmbkp_invalid_type_error', sprintf( __( 'Argument 1 for %s must be a valid class', 'backupwordpress' ) ), __METHOD__ ); /** * @var HMBKP_Service */ $class = new $classname( self::instance()->schedule ); return $class; } } ================================================ FILE: composer.json ================================================ { "name" : "xibodevelopment/backupwordpress", "description": "Simple automated backups of your WordPress powered website.", "keywords" : [ "wordpress", "backup" ], "type" : "wordpress-plugin", "homepage" : "https://github.com/xibodevelopment/backupwordpress", "license" : "GPL-2.0", "authors" : [ { "name" : "XIBO Ltd", "email" : "support@xibomarketing.com", "homepage": "https://github.com/xibodevelopment" } ], "support" : { "issues": "https://github.com/xibodevelopment/backupwordpress/issues" }, "require": { "symfony/finder": "~2.8", "symfony/process": "~2.8", "ifsnop/mysqldump-php":"~2.1" } } ================================================ FILE: functions/core.php ================================================ remove_cap( 'administrator', 'manage_backups' ); $wp_roles->remove_cap( 'administrator', 'download_backups' ); wp_clear_scheduled_hook( 'bkpwp_schedule_bkpwp_hook' ); } // Version 1 to 2 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '2.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) { /** * Setup a backwards compatible schedule */ $legacy_schedule = new Scheduled_Backup( 'backup' ); // Backup type if ( ( defined( 'HMBKP_FILES_ONLY' ) && HMBKP_FILES_ONLY ) || get_option( 'hmbkp_files_only' ) ) { $legacy_schedule->set_type( 'file' ); } elseif ( ( defined( 'HMBKP_DATABASE_ONLY' ) && HMBKP_DATABASE_ONLY ) || get_option( 'hmbkp_database_only' ) ) { $legacy_schedule->set_type( 'database' ); } else { $legacy_schedule->set_type( 'complete' ); } // Daily schedule time if ( defined( 'HMBKP_DAILY_SCHEDULE_TIME' ) && HMBKP_DAILY_SCHEDULE_TIME ) { $legacy_schedule->set_schedule_start_time( strtotime( HMBKP_DAILY_SCHEDULE_TIME ) ); } // Backup schedule $legacy_schedule->set_reoccurrence( get_option( 'hmbkp_schedule_frequency', 'daily' ) ); // Automatic backups disabled? if ( ( defined( 'HMBKP_DISABLE_AUTOMATIC_BACKUP' ) && HMBKP_DISABLE_AUTOMATIC_BACKUP ) || get_option( 'hmbkp_disable_automatic_backup' ) ) { $legacy_schedule->set_reoccurrence( 'manually' ); } // Max backups if ( defined( 'HMBKP_MAX_BACKUPS' ) && is_numeric( HMBKP_MAX_BACKUPS ) ) { $legacy_schedule->set_max_backups( (int) HMBKP_MAX_BACKUPS ); } else { $legacy_schedule->set_max_backups( (int) get_option( 'hmbkp_max_backups', 10 ) ); } // Excludes if ( get_option( 'hmbkp_excludes' ) ) { $legacy_schedule->set_excludes( get_option( 'hmbkp_excludes' ) ); } // Backup email if ( defined( 'HMBKP_EMAIL' ) && is_email( HMBKP_EMAIL ) ) { $legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => HMBKP_EMAIL ) ); } elseif ( is_email( get_option( 'hmbkp_email_address' ) ) ) { $legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => get_option( 'hmbkp_email_address' ) ) ); } // Set the archive filename to what it used to be $legacy_schedule->backup_filename = implode( '-', array( get_bloginfo( 'name' ), 'backup', current_time( 'Y-m-d-H-i-s' ) ) ) . '.zip'; $legacy_schedule->save(); $legacy_path = get_option( 'hmbkp_path' ); if ( $legacy_path ) { // Prepend 'backup-' to the beginning of any legacy backups so they are picked up by the legacy schedule if ( $handle = opendir( $legacy_path ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { if ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) ) { rename( trailingslashit( $legacy_path ) . $file, trailingslashit( $legacy_path ) . 'backup-' . $file ); } } closedir( $handle ); } PATH::get_instance()->move_old_backups( $legacy_path ); } // Remove the legacy options foreach ( array( 'hmbkp_database_only', 'hmbkp_files_only', 'hmbkp_max_backups', 'hmbkp_email_address', 'hmbkp_email', 'hmbkp_schedule_frequency', 'hmbkp_disable_automatic_backup' ) as $option_name ) { delete_option( $option_name ); } } // Update from 2.x to 3.0 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '2.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) { // Remove the plugin data cache delete_transient( 'hmbkp_plugin_data' ); } // Update to 3.1 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) { // Remove the plugin data cache delete_option( 'hmbkp_path' ); delete_option( 'hmbkp_default_path' ); } // update to 3.1.4 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.1.4', get_option( 'hmbkp_plugin_version' ), '>' ) ) { $old_option_names = array( 'HM\BackUpWordPressDropbox\Dropbox_Service' => 'dropbox', 'HMBKP_DX_Backup_Service' => 'dropbox', 'HM\BackUpWordPressFTP\FTP_Backup_Service' => 'ftp', 'HMBKP_FTP_Backup_Service' => 'ftp', 'HM\BackUpWordPressGDrive\Google_Drive_BackUp' => 'google-drive', 'HMBKP_GDV_Backup_Service' => 'google-drive', 'HM\BackUpWordPressRackspace\RackSpace_BackUp' => 'rackspace-cloud', 'HMBKP_RSC_Backup_Service' => 'rackspace-cloud', 'HM\BackUpWordPressS3\S3_Backup' => 's3', 'HMBKP_S3_Backup_Service' => 's3', 'HM\BackUpWordPressWinAzure\WinAzure_Backup' => 'azure', 'HMBKP_WAZ_Backup_Service' => 'azure', 'HM\BackUpWordPress\Email_Service' => 'email', ); global $wpdb; // Get all schedule options with a SELECT query and delete them. $schedules = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s", 'hmbkp_schedule_%' ) ); if ( 0 < count( $schedules ) ) { // Access each schedules settings to see if the addon settings names need to be be updated to the new naming convention which uses the service slug generated from the $name property. foreach ( $schedules as $schedule_id ) { // Load the settings for this schedule into an array // so we can loop through the different service settings $schedule_settings = get_option( $schedule_id ); // Iterate over each schedule setting for this schedule and check its name against our array. foreach ( $schedule_settings as $key => $val ) { // Find the current element key in our control array and get its value. Set a new element in the settings array with the found value as its key. Aka rename the element key if ( array_key_exists( $key, $old_option_names ) ) { // move the value to our new key $schedule_settings[ $old_option_names[ $key ] ] = $schedule_settings[ $key ]; unset( $schedule_settings[ $key ] ); } } // Save back to the DB update_option( $schedule_id, $schedule_settings ); } } } // Update to 3.1.5 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.1.5', get_option( 'hmbkp_plugin_version' ), '>' ) ) { // Delete all transients $transients = array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesizes_running', 'hmbkp_wp_cron_test_beacon', 'hm_backdrop', ); array_map( 'delete_transient', $transients ); // Clear duplicate schedules on multisite if ( is_multisite() ) { // get current blogs from DB $blogs = wp_get_sites(); foreach ( $blogs as $blog ) { switch_to_blog( get_current_blog_id() ); if ( is_main_site( get_current_blog_id() ) ) { continue; } global $wpdb; // Get the schedule options $schedules = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s", 'hmbkp_schedule_%' ) ); // clear schedules foreach ( array_map( function ( $item ) { return ltrim( $item, 'hmbkp_schedule_' ); }, $schedules ) as $item ) { wp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $item ) ); } // delete options array_map( 'delete_option', $schedules ); array_map( 'delete_option', array( 'hmbkp_enable_support', 'hmbkp_plugin_version', 'hmbkp_path', 'hmbkp_default_path', 'hmbkp_upsell' ) ); // Delete all transients array_map( 'delete_transient', array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesize_running', 'timeout_hmbkp_wp_cron_test_beacon', 'hmbkp_wp_cron_test_beacon' ) ); } restore_current_blog(); } } // Update from 3.3.0 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.3.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) { $schedules = Schedules::get_instance(); // Loop through all schedules and re-set the reccurrence to include hmbkp_ foreach ( $schedules->get_schedules() as $schedule ) { $reoccurrence = $schedule->get_reoccurrence(); if ( 'manually' !== $reoccurrence && strpos( $reoccurrence, 'hmbkp_' ) === 0 ) { $schedule->set_reoccurrence( substr( $reoccurrence, 6 ) ); } $schedule->save(); } } // Update from 3.3.4 if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.4.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) { delete_transient( 'hmbkp_directory_filesizes' ); } // Every update if ( get_option( 'hmbkp_plugin_version' ) && version_compare( Plugin::PLUGIN_VERSION, get_option( 'hmbkp_plugin_version' ), '>' ) ) { require_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' ); \HMBKP_Setup::deactivate(); Path::get_instance()->protect_path( 'reset' ); } // Update the stored version if ( get_option( 'hmbkp_plugin_version' ) !== Plugin::PLUGIN_VERSION ) { update_option( 'hmbkp_plugin_version', Plugin::PLUGIN_VERSION ); } } /** * Setup the default backup schedules */ function setup_default_schedules() { $schedules = Schedules::get_instance(); if ( $schedules->get_schedules() ) { return; } /** * Schedule a database backup daily and store backups * for the last 2 weeks */ $database_daily = new Scheduled_Backup( (string) time() ); $database_daily->set_type( 'database' ); $database_daily->set_schedule_start_time( determine_start_time( 'daily', array( 'hours' => '23', 'minutes' => '0' ) ) ); $database_daily->set_reoccurrence( 'daily' ); $database_daily->set_max_backups( 7 ); $database_daily->save(); /** * Schedule a complete backup to run weekly and store backups for * the last 3 months */ $complete_weekly = new Scheduled_Backup( (string) ( time() + 1 ) ); $complete_weekly->set_type( 'complete' ); $complete_weekly->set_schedule_start_time( determine_start_time( 'weekly', array( 'day_of_week' => 'sunday', 'hours' => '3', 'minutes' => '0' ) ) ); $complete_weekly->set_reoccurrence( 'weekly' ); $complete_weekly->set_max_backups( 3 ); $complete_weekly->save(); $schedules->refresh_schedules(); add_action( 'admin_notices', function() { echo '

' . __( 'BackUpWordPress has set up your default schedules.', 'backupwordpress' ) . ' ' . __( 'By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules.', 'backupwordpress' ) . '

'; } ); } add_action( 'admin_init', '\HM\BackUpWordPress\setup_default_schedules', 11 ); /** * Return an array of cron schedules * * @param $schedules * @return array $reccurrences */ function cron_schedules( $schedules = array() ) { $schedules += array( 'hourly' => array( 'interval' => HOUR_IN_SECONDS, 'display' => __( 'Once Hourly', 'backupwordpress' ) ), 'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily', 'backupwordpress' ) ), 'daily' => array( 'interval' => DAY_IN_SECONDS, 'display' => __( 'Once Daily', 'backupwordpress' ) ), 'weekly' => array( 'interval' => WEEK_IN_SECONDS, 'display' => __( 'Once Weekly', 'backupwordpress' ) ), 'fortnightly' => array( 'interval' => 2 * WEEK_IN_SECONDS, 'display' => __( 'Once Every Two Weeks', 'backupwordpress' ) ), 'monthly' => array( 'interval' => 30 * DAY_IN_SECONDS, 'display' => __( 'Once Monthly', 'backupwordpress' ) ), ); return $schedules; } add_filter( 'cron_schedules', '\HM\BackUpWordPress\cron_schedules' ); /** * Recursively delete a directory including * all the files and sub-directories. * * @param string $dir * @return bool * @return bool|WP_Error */ function rmdirtree( $dir ) { if ( false !== strpos( Path::get_home_path(), $dir ) ) { return new WP_Error( 'hmbkp_invalid_action_error', sprintf( __( 'You can only delete directories inside your WordPress installation', 'backupwordpress' ) ) ); } if ( is_file( $dir ) ) { @unlink( $dir ); } if ( ! is_dir( $dir ) || ! is_readable( $dir ) ) { return false; } $files = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator( $dir, \RecursiveDirectoryIterator::SKIP_DOTS ), \RecursiveIteratorIterator::CHILD_FIRST, \RecursiveIteratorIterator::CATCH_GET_CHILD ); foreach ( $files as $file ) { if ( $file->isDir() ) { @rmdir( $file->getPathname() ); } else { @unlink( $file->getPathname() ); } } @rmdir( $dir ); return true; } /** * Check if we have read and write permission on the server * * @return bool */ function has_server_permissions() { if ( ! wp_is_writable( Path::get_path() ) ) { return false; } if ( ! is_readable( Path::get_root() ) ) { return false; } return true; } /** * Check if a backup is possible with regards to file * permissions etc. * * @return bool */ function is_backup_possible() { if ( ! has_server_permissions() || ! is_dir( Path::get_path() ) ) { return false; } if ( ! Requirement_Mysqldump_Command_Path::test() && ! Requirement_PDO::test() ) { return false; } if ( ! Requirement_Zip_Command_Path::test() && ! Requirement_Zip_Archive::test() ) { return false; } return true; } /** * Get the max email attachment filesize * * Can be overridden by defining HMBKP_ATTACHMENT_MAX_FILESIZE * * return int the filesize */ function get_max_attachment_size() { $max_size = '10mb'; if ( defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) && wp_convert_hr_to_bytes( HMBKP_ATTACHMENT_MAX_FILESIZE ) ) { $max_size = HMBKP_ATTACHMENT_MAX_FILESIZE; } return wp_convert_hr_to_bytes( $max_size ); } function is_path_accessible( $dir ) { // Path is inaccessible if ( strpos( $dir, Path::get_home_path() ) === false ) { return false; } return true; } /** * List of schedules * * @return array */ function get_cron_schedules() { return cron_schedules(); } /** * @param string $type the type of the schedule * @param array $times { * An array of time arguments. Optional. * * @type int $minutes The minute to start the schedule on. Defaults to current time + 10 minutes. Accepts * any valid `date( 'i' )` output. * @type int $hours The hour to start the schedule on. Defaults to current time + 10 minutes. Accepts * any valid `date( 'G' )` output. * @type string $day_of_week The day of the week to start the schedule on. Defaults to current time + 10 minutes. Accepts * any valid `date( 'l' )` output. * @type int $day_of_month The day of the month to start the schedule on. Defaults to current time + 10 minutes. Accepts * any valid `date( 'j' )` output. * @type int $now The current time. Defaults to `time()`. Accepts any valid timestamp. * * } * @return int $timestamp Returns the resulting timestamp on success and Int 0 on failure */ function determine_start_time( $type, $times = array() ) { // Default to in 10 minutes if ( ! empty( $times['now'] ) ) { $default_timestamp = $times['now'] + 600; } else { $default_timestamp = time() + 600; } $default_times = array( 'minutes' => date( 'i', $default_timestamp ), 'hours' => date( 'G', $default_timestamp ), 'day_of_week' => date( 'l', $default_timestamp ), 'day_of_month' => date( 'j', $default_timestamp ), 'now' => time(), ); $args = wp_parse_args( $times, $default_times ); $intervals = get_cron_schedules(); // Allow the hours and minutes to be overwritten by a constant if ( defined( 'HMBKP_SCHEDULE_TIME' ) && HMBKP_SCHEDULE_TIME ) { $hm = HMBKP_SCHEDULE_TIME; } else { // The hour and minute that the schedule should start on $hm = $args['hours'] . ':' . $args['minutes'] . ':00'; } switch ( $type ) { case 'hourly' : case 'daily' : case 'twicedaily': // The next occurance of the specified time $schedule_start = $hm; break; case 'weekly' : case 'fortnightly' : // The next day of the week at the specified time $schedule_start = $args['day_of_week'] . ' ' . $hm; break; case 'monthly' : // The occurance of the time on the specified day of the month $schedule_start = date( 'F', $args['now'] ) . ' ' . $args['day_of_month'] . ' ' . $hm; // If we've already gone past that day this month then we'll need to start next month if ( strtotime( $schedule_start, $args['now'] ) <= $args['now'] ) { $schedule_start = date( 'F', strtotime( '+ 1 month', $args['now'] ) ) . ' ' . $args['day_of_month'] . ' ' . $hm; } // If that's still in the past then we'll need to jump to next year if ( strtotime( $schedule_start, $args['now'] ) <= $args['now'] ) { $schedule_start = date( 'F', strtotime( '+ 1 month', $args['now'] ) ) . ' ' . $args['day_of_month'] . ' ' . date( 'Y', strtotime( '+ 1 year', $args['now'] ) ) . ' ' . $hm; } break; default : return 0; } $timestamp = strtotime( $schedule_start, $args['now'] ); // Convert to UTC $timestamp -= get_option( 'gmt_offset' ) * 3600; // If the scheduled time already passed then keep adding the interval until we get to a future date while ( $timestamp <= $args['now'] ) { $timestamp += $intervals[ $type ]['interval']; } return $timestamp; } /** * Helper function for creating safe action URLs. * * @param string $action Callback function name. * @param array $query_args Additional GET params. * * @return string */ function admin_action_url( $action, array $query_args = array() ) { $query_args = array_merge( $query_args, array( 'action' => 'hmbkp_' . $action ) ); return esc_url( wp_nonce_url( add_query_arg( $query_args, admin_url( 'admin-post.php' ) ), 'hmbkp_' . $action, 'hmbkp-' . $action . '_nonce' ) ); } /** * OS dependant way to pipe stderr to null * * @return string The exec argument to pipe stderr to null */ function ignore_stderr() { // If we're on Windows if ( DIRECTORY_SEPARATOR == '\\' ) { return '2>nul'; } // Or Unix return '2>/dev/null'; } /** * Return the contents of `$directory` as a single depth list ordered by total filesize. * * Will schedule background threads to recursively calculate the filesize of subdirectories. * The total filesize of each directory and subdirectory is cached in a transient for 1 week. * * @param string $directory The directory to list * * @todo doesn't really belong in this class, should just be a function * @return array returns an array of files ordered by filesize */ function list_directory_by_total_filesize( $directory, Excludes $excludes ) { $files = $files_with_no_size = $empty_files = $files_with_size = $unreadable_files = array(); if ( ! is_dir( $directory ) ) { return $files; } $finder = new \Symfony\Component\Finder\Finder(); $finder->followLinks(); $finder->ignoreDotFiles( false ); $finder->ignoreUnreadableDirs(); $finder->depth( '== 0' ); $site_size = new Site_Size( 'file', $excludes ); $files = $finder->in( $directory ); foreach ( $files as $entry ) { // Get the total filesize for each file and directory $filesize = $site_size->filesize( $entry ); if ( $filesize ) { // If there is already a file with exactly the same filesize then let's keep increasing the filesize of this one until we don't have a clash while ( array_key_exists( $filesize, $files_with_size ) ) { $filesize ++; } $files_with_size[ $filesize ] = $entry; } elseif ( 0 === $filesize ) { $empty_files[] = $entry; } else { $files_with_no_size[] = $entry; } } // Sort files by filesize, largest first krsort( $files_with_size ); // Add 0 byte files / directories to the bottom $files = $files_with_size + array_merge( $empty_files, $unreadable_files ); // Add directories that are still calculating to the top if ( $files_with_no_size ) { // We have to loop as merging or concatenating the array would re-flow the keys which we don't want because the filesize is stored in the key foreach ( $files_with_no_size as $entry ) { array_unshift( $files, $entry ); } } return $files; } ================================================ FILE: functions/interface.php ================================================
| id !== $page ) { return; } $notices = Notices::get_instance()->get_notices(); if ( empty( $notices ) ) { return; } ob_start(); ?>

$notice_type ) : ?>

Safe Mode, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst Safe Mode is on.', 'backupwordpress' ), 'PHP' ); } if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH ) { // Suppress open_basedir warning https://bugs.php.net/bug.php?id=53041 if ( ! path_in_php_open_basedir( HMBKP_PATH ) ) { $messages[] = sprintf( __( 'Your server has an %1$s restriction in effect and your custom backups directory (%2$s) is not within the allowed path(s): (%3$s).', 'backupwordpress' ), 'open_basedir', '' . esc_html( HMBKP_PATH ) . '', '' . esc_html( @ini_get( 'open_basedir' ) ) . '' ); } elseif ( ! is_dir( HMBKP_PATH ) ) { $messages[] = sprintf( __( 'Your custom backups directory (%1$s) doesn't exist, your backups will be saved to %2$s instead.', 'backupwordpress' ), '' . esc_html( HMBKP_PATH ) . '', '' . esc_html( Path::get_path() ) . '' ); } elseif ( is_dir( HMBKP_PATH ) && ! wp_is_writable( HMBKP_PATH ) ) { $messages[] = sprintf( __( 'Your custom backups directory (%1$s) isn't writable, new backups will be saved to %2$s instead.', 'backupwordpress' ), '' . esc_html( HMBKP_PATH ) . '', '' . esc_html( Path::get_path() ) . '' ); } } if ( ! is_dir( Path::get_path() ) || is_dir( Path::get_path() ) && ! wp_is_writable( Path::get_path() ) ) { if ( isset( $_GET['creation_error'] ) ) { $messages[] = __( 'We connected to your server successfully but still weren't able to automatically create the directory. You'll need to manually specify a valid directory', 'backupwordpress' ); } else { $messages[] = sprintf( /* translators: 1: Path to backup directory.*/ __( 'We couldn't create the backups directory (%1$s). You'll need to manually specify a valid directory or you can have WordPress do it automatically by entering your server details below. This is a one time thing.', 'backupwordpress' ), '' . esc_html( Path::get_path() ) . '' ); } } if ( ! is_readable( Path::get_root() ) ) { $messages[] = sprintf( __( 'Your site's root path (%s) isn't readable. Please contact support.', 'backupwordpress' ), '' . Path::get_root() . '' ); } if ( ! Requirement_Mysqldump_Command_Path::test() && ! Requirement_PDO::test() ) { $messages[] = sprintf( /* translators: FYI: specified MySQL features. */ __( 'Your site cannot be backed up because your server doesn't support %1$s or %2$s. Please contact your host and ask them to enable them.', 'backupwordpress' ), 'mysqldump', 'PDO::mysql' ); } if ( ! Requirement_Zip_Command_Path::test() && ! Requirement_Zip_Archive::test() ) { $messages[] = sprintf( /* translators: FYI: specified zip archiving features. */ __( 'Your site cannot be backed up because your server doesn't support %1$s or %2$s. Please contact your host and ask them to enable them.', 'backupwordpress' ), 'zip', 'ZipArchive' ); } if ( disk_space_low() ) { $messages[] = sprintf( __( 'Your server only has %s of disk space left which probably isn't enough to complete a backup. Try deleting some existing backups or other files to free up space.', 'backupwordpress' ), '' . size_format( disk_free_space( Path::get_path() ) ) . '' ); } if ( count( $messages ) > 0 ) { $notices->set_notices( 'server_config', $messages, false ); } } add_action( 'admin_init', 'HM\BackUpWordPress\set_server_config_notices' ); /** * Hook in an change the plugin description when BackUpWordPress is activated * * @param array $plugins * @return array $plugins */ function plugin_row( $plugins ) { $menu = is_multisite() ? 'Settings' : 'Tools'; if ( isset( $plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ] ) ) { $plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ]['Description'] = str_replace( 'Once activated you\'ll find me under ' . $menu . ' → Backups', 'Find me under ' . $menu . ' → Backups', $plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ]['Description'] ); } return $plugins; } add_filter( 'all_plugins', 'HM\BackUpWordPress\plugin_row', 10 ); /** * Get the human readable backup type in. * * @access public * @param string $type * @param Scheduled_Backup $schedule (default: null) * @return string */ function human_get_type( $type, Scheduled_Backup $schedule = null ) { if ( strpos( $type, 'complete' ) !== false ) { return __( 'Database and Files', 'backupwordpress' ); } if ( strpos( $type, 'file' ) !== false ) { return __( 'Files', 'backupwordpress' ); } if ( strpos( $type, 'database' ) !== false ) { return __( 'Database', 'backupwordpress' ); } if ( ! is_null( $schedule ) ) { return human_get_type( $schedule->get_type() ); } return __( 'Legacy', 'backupwordpress' ); } /** * Display the row of actions for a schedule * * @access public * @param Scheduled_Backup $schedule * @return void */ function schedule_status( Scheduled_Backup $schedule, $echo = true ) { $status = new Backup_Status( $schedule->get_id() ); ob_start(); ?> get_status() ) { ?> title="get_start_time() ) ); ?>"> get_status() ? wp_kses_data( $status->get_status() ) : __( 'Starting backup...', 'backupwordpress' ); ?> get_backups() ); if ( 0 === $number ) { $output = sprintf( __( 'No backups completed', 'backupwordpress' ) ); } else { $output = sprintf( _nx( 'One backup completed', '%1$s backups completed', $number, 'backups count', 'backupwordpress' ), number_format_i18n( $number ) ); } echo apply_filters( 'hmbkp_backups_number', $output, $number ); } function translated_schedule_title( $slug, $title ) { $titles = array( 'complete-hourly' => esc_html__( 'Complete Hourly', 'backupwordpress' ), 'file-hourly' => esc_html__( 'File Hourly', 'backupwordpress' ), 'database-hourly' => esc_html__( 'Database Hourly', 'backupwordpress' ), 'complete-twicedaily' => esc_html__( 'Complete Twice Daily', 'backupwordpress' ), 'file-twicedaily' => esc_html__( 'File Twice Daily', 'backupwordpress' ), 'database-twicedaily' => esc_html__( 'Database Twice Daily', 'backupwordpress' ), 'complete-daily' => esc_html__( 'Complete Daily', 'backupwordpress' ), 'file-daily' => esc_html__( 'File Daily', 'backupwordpress' ), 'database-daily' => esc_html__( 'Database Daily', 'backupwordpress' ), 'complete-weekly' => esc_html__( 'Complete Weekly', 'backupwordpress' ), 'file-weekly' => esc_html__( 'File Weekly', 'backupwordpress' ), 'database-weekly' => esc_html__( 'Database Weekly', 'backupwordpress' ), 'complete-fortnightly' => esc_html__( 'Complete Every Two Weeks', 'backupwordpress' ), 'file-fortnightly' => esc_html__( 'File Every Two Weeks', 'backupwordpress' ), 'database-fortnightly' => esc_html__( 'Database Every Two Weeks', 'backupwordpress' ), 'complete-monthly' => esc_html__( 'Complete Monthly', 'backupwordpress' ), 'file-monthly' => esc_html__( 'File Monthly', 'backupwordpress' ), 'database-monthly' => esc_html__( 'Database Monthly', 'backupwordpress' ), 'complete-manually' => esc_html__( 'Complete Manually', 'backupwordpress' ), 'file-manually' => esc_html__( 'File Manually', 'backupwordpress' ), 'database-manually' => esc_html__( 'Database Manually', 'backupwordpress' ), ); if ( isset( $titles[ $slug ] ) ) { return $titles[ $slug ]; } return $title; } function get_settings_url( $slug = HMBKP_PLUGIN_SLUG ) { $url = is_multisite() ? network_admin_url( 'settings.php?page=' . $slug ) : admin_url( 'tools.php?page=' . $slug ); schedules::get_instance()->refresh_schedules(); if ( ! empty( $_REQUEST['hmbkp_schedule_id'] ) && schedules::get_instance()->get_schedule( sanitize_text_field( $_REQUEST['hmbkp_schedule_id'] ) ) ) { $url = add_query_arg( 'hmbkp_schedule_id', sanitize_text_field( $_REQUEST['hmbkp_schedule_id'] ), $url ); } return $url; } /** * Add an error message to the array of messages. * * @param $error_message */ function add_settings_error( $error_message ) { $hmbkp_settings_errors = get_transient( 'hmbkp_settings_errors' ); // If it doesnt exist, create. if ( ! $hmbkp_settings_errors ) { set_transient( 'hmbkp_settings_errors', (array) $error_message ); } else { set_transient( 'hmbkp_settings_errors', array_unique( array_merge( $hmbkp_settings_errors, (array) $error_message ) ) ); } } /** * Back compat version of add_settings_error * * @deprecated 3.4 add_settings_error() */ function hmbkp_add_settings_error( $error_message ) { _deprecated_function( __FUNCTION__, '3.4', 'add_settings_error()' ); add_settings_error( $error_message ); } /** * Fetch the form submission errors for display. * * @return mixed */ function get_settings_errors() { return get_transient( 'hmbkp_settings_errors' ); } /** * Clear all error messages. * * @return bool */ function clear_settings_errors() { return delete_transient( 'hmbkp_settings_errors' ); } function path_in_php_open_basedir( $path, $ini_get = 'ini_get' ) { $open_basedir = @call_user_func( $ini_get, 'open_basedir' ); if ( ! $open_basedir ) { return true; } $open_basedir_paths = array_map( 'trim', explode( PATH_SEPARATOR, $open_basedir ) ); if ( ! $open_basedir_paths ) { return true; } // Is path in the open_basedir allowed paths? if ( in_array( $path, $open_basedir_paths ) ) { return true; } // Is path a subdirectory of one of the allowed paths? foreach ( $open_basedir_paths as $basedir_path ) { if ( 0 === strpos( $path, $basedir_path ) ) { return true; } } return false; } /** * Check if two filesizes are of the same size format * * E.g. 22 MB and 44 MB are both MB so return true. Whereas * 22 KB and 12 TB are not so return false. * * @param int $size * @param int $other_size * * @return boolean Whether the two filesizes are of the same magnitude */ function is_same_size_format( $size, $other_size ) { if ( ! is_int( $size ) || ! is_int( $other_size ) ) { return false; } return preg_replace( '/[0-9]+/', '', size_format( $size ) ) === preg_replace( '/[0-9]+/', '', size_format( $other_size ) ); } /** * Check whether the server is low on disk space. * * @return bool Whether there's less disk space less than 2 * the entire size of the site. */ function disk_space_low( $backup_size = false ) { $disk_space = @disk_free_space( Path::get_path() ); if ( ! $disk_space ) { return false; } if ( ! $backup_size ) { $site_size = new Site_Size( 'complete', new Excludes() ); if ( ! $site_size->is_site_size_cached() ) { return false; } $backup_size = $site_size->get_site_size() * 2; } if ( ! is_readable( Path::get_path() ) ) { return false; } $disk_space = disk_free_space( Path::get_path() ); return $disk_space && $backup_size >= $disk_space; } ================================================ FILE: grunt/aliases.yml ================================================ build-dev: - makepot - autoprefixer - cssmin - uglify - shell - compress:dev build: - autoprefixer - cssmin - uglify - bumpup # defaults to patch, change to :minor or :major if necessary - replace # Update version numbers, build faq.txt - makepot # Adds a default to Grunt default: - autoprefixer - cssmin - uglify - bumpup # defaults to patch, change to :minor or :major if necessary - replace # Update version numbers, build faq.txt - makepot # before running release, make sure to add the changelog to readme-footer.txt Also, update the "tested up to" version if necessary release: - concat # build readme.txt - shell - compress:main localize: - makepot ================================================ FILE: grunt/autoprefixer.js ================================================ module.exports = { no_dest: { src: 'assets/hmbkp.css' } }; ================================================ FILE: grunt/bumpup.js ================================================ module.exports = { options: { updateProps: { package: 'package.json' } }, files: ['package.json'] }; ================================================ FILE: grunt/checktextdomain.js ================================================ module.exports = { standard: { options: { text_domain: 'backupwordpress', //Specify allowed domain(s), correct_domain: true, keywords: [ //List keyword specifications '__:1,2d', '_e:1,2d', '_x:1,2c,3d', 'esc_html__:1,2d', 'esc_html_e:1,2d', 'esc_html_x:1,2c,3d', 'esc_attr__:1,2d', 'esc_attr_e:1,2d', 'esc_attr_x:1,2c,3d', '_ex:1,2c,3d', '_n:1,2,4d', '_nx:1,2,4c,5d', '_n_noop:1,2,3d', '_nx_noop:1,2,3c,4d' ] }, files: [{ src: ['**/*.php', '!**/vendor/**', '!**/node_modules/**', '!**/tests/**'], //all php expand: true, }], } }; ================================================ FILE: grunt/compress.js ================================================ module.exports = { main: { options: { archive: 'releases/<%= package.name %>-<%= package.version %>.zip' }, expand: true, cwd: 'releases/svn/trunk/', src: ['**/*'], }, dev: { options: { archive: 'releases/<%= package.name %>-<%= package.version %>-dev.zip' }, expand: true, cwd: 'releases/svn/trunk/', src: ['**/*'], } }; ================================================ FILE: grunt/concat.js ================================================ module.exports = { readme: { src : [ 'readme/readme-header.txt', 'readme/faq.txt', 'readme/readme-footer.txt' ], dest: 'readme.txt' } }; ================================================ FILE: grunt/cssmin.js ================================================ module.exports = { minify: { expand: true, cwd : 'assets/', src : ['hmbkp.css'], dest : 'assets/', ext : '.min.css' } }; ================================================ FILE: grunt/excludes ================================================ .DS_Store .svn .git .gitignore .gitmodules .editorconfig .sass-cache node_modules .bowerrc .travis.yml bin grunt releases bower.json Gruntfile.js package.json README.md vendor/symfony/finder/Tests readme tests phpunit .jshintrc CONTRIBUTING.md changelog.txt .scrutinizer.yml phpunit.xml ================================================ FILE: grunt/jshint.js ================================================ module.exports = { options: { 'boss': true, 'curly': true, 'eqeqeq': true, 'eqnull': true, 'es3': true, 'expr': true, 'immed': true, 'noarg': true, 'onevar': true, 'trailing': true, 'undef': true, 'unused': true, 'browser': true, 'devel': true, 'globals': { '_': true, 'Backbone': true, 'jQuery': true, 'wp': true, 'hmbkp': true, 'ajaxurl': true } }, all: ['Gruntfile.js', 'assets/hmbkp.js'] }; ================================================ FILE: grunt/makepot.js ================================================ module.exports = { target: { options: { mainFile: 'backupwordpress.php', potFilename: 'backupwordpress.pot', domainPath: '/languages', // Where to save the POT file. exclude: ['node_modules/.*','vendor/.*', 'backdrop/.*','bin/.*','tests/.*','readme/.*','languages/.*', 'releases/.*'], mainFile : 'backupwordpress.php', // Main project file. type : 'wp-plugin', // Type of project (wp-plugin or wp-theme). processPot: function( pot, options ) { pot.headers['report-msgid-bugs-to'] = 'support@xibomarketing.com'; pot.headers['last-translator'] = 'XIBO Ltd'; pot.headers['language-team'] = 'XIBO Ltd'; return pot; } } } }; ================================================ FILE: grunt/replace.js ================================================ module.exports = { pluginClassVersion: { src: [ 'classes/class-plugin.php' ], overwrite: true, replacements: [ { from: /^(\s)+const PLUGIN_VERSION = '.*';$/m, to: '$1const PLUGIN_VERSION = \'<%= package.version %>\';' } ] }, stableTag: { src: [ 'readme/readme-header.txt' ], overwrite: true, replacements: [ { from: /^Stable tag: .*$/m, to: 'Stable tag: <%= package.version %>' } ] }, pluginVersion: { src: [ 'backupwordpress.php' ], overwrite: true, replacements: [ { from: /^Version: .*$/m, to: 'Version: <%= package.version %>' } ] }, faq : { src : [ 'admin/faq.php' ], dest : 'readme/faq.txt', replacements: [ { from: /.*

' \. __\( '(.*)', '\w+' \).*/mg, to : '$1' }, { from: '.*__\( '(.*)', '\w+' \).*<\/strong>.*/g, to: '**$1**' }, { from: /'(?:

    )?
  • ' \. .*__\( '(.*)', '.*' \) .* '<\/li>(?:<\/ul>)?' \./g, to: '* $1' }, { from: /<\/?code>/g, to: '`' }, { from: /(.*)<\/a>/g, to: '[$3]($1 "$2")' } ] } }; ================================================ FILE: grunt/shell.js ================================================ module.exports = { build: { command: 'mkdir -p releases/svn && rsync -avzrR --exclude-from \'grunt/excludes\' . releases/svn/trunk' } }; ================================================ FILE: grunt/uglify.js ================================================ module.exports = { options: { preserveComments: 'some' }, plugin : { files: { 'assets/hmbkp.min.js': ['assets/hmbkp.js'] } } }; ================================================ FILE: languages/backupwordpress-ca_ES.po ================================================ # Translation of 2.x in Catalan # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: ca_ES\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-cs_CZ.po ================================================ # Translation of 2.x in Czech # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: cs_CZ\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "Zálohování skončilo s těmito chybami/varováními, ale je možné je ignorovat." #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "Zálohování se nezdařilo." #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "Odeslat oznámení o provedení zálohy a pokud je záloha malá (< %s) tak bude připojena k tomuto emailu. Adresy více příjemců oddělte čárkou." #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "Maximální velikost souboru se zálohou, která bude připojena k oznamovacímu emailu. Výchozí velikost je %s." #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "Detaily této chyby můžete poslat emailem na adresu %s a pokusíme se zjistit příčiny." #: ../functions/core.php:246 msgid "Once Hourly" msgstr "Jednou za hodinu" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "Dvakrát denně" #: ../functions/core.php:248 msgid "Once Daily" msgstr "Jednou denně" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "Jednou za týden" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "Jednou za čtrnáct dnů" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "Jednou měsíčně" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Email na podporu" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nové pravidlo pro vyjmutí" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Zde je odpověď serveru:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Pokud potřebujete nápovědu k nastavení, pročtěte si nejčastější otázky klepnutím v pravém horním rohu stránky na Nápověda. " #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Spouštím zálohu" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Provádím dump databáze %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Ověřuji dump databáze %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Vytvářím zip archiv %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Ověřuji zip archive %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Dokončuji zálohování" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress nemusí správně fungovat pokud je php spuštěno s %s na " #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s je spuštěno v %2$s, kontaktujte poskytovatele stránek a požádejte ho o zrušení. BackUpWordPress nemusí fungovat správně pokud je %3$s aktivní." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Čas, kdy budou zálohy spuštěny. Výchozí je %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Opravdu chcete smazat tento plán záloh? Všechny zálohy provedené tímto plánem budou také smazány." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "Klepněte na 'Zrušit' pro návrat nebo 'OK' pro smazání." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Opravdu chcete smazat tuto zálohu?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Opravdu chcete odebrat toto pravidlo výjimek?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Omezením počtu uložených záloh na serveru dojde ke smazání již existujících záloh. Opravdu chcete akci provést?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Maximální počet nemůže být prázdný" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Maximální počet musí být větší než 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Vyjmout" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "výchozí" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "nastavené" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Pouze ručně" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "nebude to trvat dlouho …" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "zjišťuji velikost všech souborů …" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Příští záloha bude provedena v %1$s v %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "každých 12 hodin v %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "týdně v %1$s v %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "každé dva týdny v %1$s v %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "v %1$s každý měsíc v %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "ručně" #: ../admin/schedule.php:71 msgid "this server" msgstr "tomto serveru" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "na %s neukládat žádné zálohy" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "na %2$s ponechat pouze poslední(ch) %1$s záloh(y)" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Zálohovat mých %1$s %2$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackupWordPress nebyl schopen provést zálohu vašeho webu %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Zde je seznam zjištěných problémů:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Pokud jsou výše uvedené chyby pro vás nesrozumitelné, přepošlete tento email na %3$s a my se pokusíme zjistit kde je problém" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "S pozdravem,\n" "robot aplikace BackupWordPress " #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackupWordPress dokončil zálohu vašeho webu %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Záloha bude připojena jako příloha k tomuto emailu." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Zálohu si můžete stáhnout klepnutím na odkaz níže:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "S pozdravem,\n" "robot aplikace BackupWordPress " #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Bohužel je záloha tak velká, že nemůže být přiložena k emailu." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Záloha: provádím dump databáze..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Záloha: provádím komprimaci..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Neplatná cesta k zálohám" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Neplatná hlavní cesta" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Záloha ukončena:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Záloha selhala" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Ve výchozím nastavení BackUpWordPress provádí denní zálohu vašich souborů a týdně zálohuje jak soubory tak i databázi. Nastavení můžete změnit." #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Do adresáře pro zálohy nelze zapisovat, spusťte %1$s nebo %2$s nebo si nastavte oprávnění podle sebe." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Adresář pro zálohování nelze vytvořit, protože do vašeho adresáře %1$s nelze zapisovat, spusťte %2$s nebo %3$s nebo si jej vytvořte sami." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress nastavil výchozí plán pro zálohování." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Záloha %s selhala" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Odeslat upozornění emailem na %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s není platná emailová adresa" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Záloha bude komprimována a velikost bude menší než tato." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Upozornění emailem" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "každou hodinu v celou" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "denně v %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Počet záloh uložených na tomto serveru" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Nastavení plánu záloh" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Zavřít" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Informace uvedené níže jsou pro verzi %1$s. Pokud chcete nápovědu k verzi %3$s zobrazte si soubor %2$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Kořenový adresář, který bude zálohován. Výchozí je %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Cesta k %1$s. Pokud je dostupný, bude použit pro komprimaci vašich %2$s a %3$s." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackuWordPress vyžaduje WordPress verze %s nebo vyšší." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Zrušit" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Cesta k spustitelnému souboru %1$s. Pokud je dostupný, bude použit pro část %2$s zálohování." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "např." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s vrací odpověď %2$s což může znamena, že cron úloha nebyla správně spuštěna. BackUpWordPress používá wp-cron pro spuštění naplánovaných záloh. Více detailů najdete na %3$s." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Safe Mode" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Vámi zvolený adresář pro zálohy %1$s neexistuje a nelze jej vytvořit, zálohy se budou ukládat do %2$s." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Do vámi zvoleného adresáře pro zálohy %1$s nelze zapisovat, zálohy se budou ukládat do %2$s." #: ../functions/interface.php:261 msgid "cancel" msgstr "zrušit" #: ../functions/interface.php:265 msgid "Settings" msgstr "Nastavení" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Vyjímky" #: ../functions/interface.php:29 msgid "Download" msgstr "Stáhnout" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress je připraven." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress detekoval problém s poslední zálohou." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Databáze a soubory" #: ../functions/interface.php:240 msgid "Database" msgstr "Databáze" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress detekoval problém." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Typ zálohy nemůže být prázdný" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Neplatný typ zálohy" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Čas zálohy nemůže být prázdný" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Neplatný čas pro zálohu" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Počet záloh musí být číslo" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s nenalezl žádné soubory." #: ../admin/backups.php:40 msgid "add schedule" msgstr "přidat plán zálohy" #: ../admin/backups.php:71 msgid "Size" msgstr "Velikost" #: ../admin/backups.php:72 msgid "Type" msgstr "Typ" #: ../admin/backups.php:73 msgid "Actions" msgstr "Akce" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Codex s pomocí" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Cesta pro uložení souborů se zálohami, výchozí je %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "databáze" #: ../admin/constants.php:14 msgid "files" msgstr "souborů" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Čárkou oddělený seznam souborů nebo adresářů, které se nebudou zálohovat, adresář se zálohami je vyjmut automaticky." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Správa zálohování" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Zálohy" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Nepoužíváte poslední stabilní verzi zásuvného modulu BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Konstanty" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Více informace najdete na:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Fórum pro podporu" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Pomoc s překladem" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Před dalším spuštěním nástroje BackUpWordPress je nutné opravit chyby uvedené výše." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Náhled" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Pravidla pro vyjmutí" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Odebrat" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Vyjmuto" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Zahrnuto" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Nečitelné" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Nečitelné soubory nelze zálohovat" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Veilikost webu je %s. Záloha bude komprimována aby se zmenšila velikost." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Zálohovat" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Databázi i soubory" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Pouze soubory" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Pouze databázi" #: ../functions/interface.php:237 msgid "Files" msgstr "Soubory" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Správa vyjímek" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Plán záloh" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Aktualizovat" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "každou hodinu %s minut po celé" #: ../functions/interface.php:275 msgid "Run now" msgstr "Spustit nyní" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Smazat" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Záloha webu %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Soubor %s zajišťuje, že ostatní uživatelé si nemohou stáhnout soubory s vašimi zálohami." ================================================ FILE: languages/backupwordpress-da_DK.po ================================================ # Translation of 2.x in Danish # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: da_DK\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "Du kan sende detaljer om denne fejl til %s, så de kan undersøge sagen nærmere." #: ../functions/core.php:246 msgid "Once Hourly" msgstr "En gang i timen" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "To gange dagligt" #: ../functions/core.php:248 msgid "Once Daily" msgstr "En gang dagligt" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "En gang om ugen" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "En gang hver anden uge" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "En gang om måneden" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Send e-mail til support" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nye eksluderingsregler" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Her er svaret fra serveren:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Hvis du har brug for hjælp til at få tingene til at virke, så kig i FAQ'en ved at klikke på Hjælp i øverste højre hjørne af denne side." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Starter sikkerhedskopiering" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Gemmer database %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Kontroller database-kopi %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Opretter zip-arkiv %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Kontrollerer zip-arkiv %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Afslutter sikkerhedskopiering" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordpress virker ikke når php kører med %s slået til" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s kører i %2$s. Kontakt venligst dit webhotel og bed dem slå det fra. BackUpWordPress virker ikke korrekt, mens %3$s er slået til." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Det tidspunkt dine planlagt sikkerhedskopieringer skal foretages på. Standard er %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Er du sikker på, at du vil slette denne planlagte sikkerhedskopiering? Alle dens sikkerhedskopier vil også blive slettet." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "'Annuller' for at få tilbage, 'OK' for at slette." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Er du sikker på, at du vil slette denne sikkerhedskopi." #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Er du sikker på, at du vil fjerne denne ekskluderingsregel?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Hvis du begrænser antallet af sikkerhedskopier, der gemmes på denne server, vil nogle af de eksisterende sikkerhedskopier blive slettet. Er du sikker på, at det er det, du vil?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Maksimalt antal sikkerhedskopier kan ikke være tomt." #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Maksimalt antal sikkerhedskopier skal være større end 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Ekskludér" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "standard" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "defineret" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Kun manuelt" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "det her burde ikke tage så lang tid …" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "Beregner størrelse af dit websted…" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Den næste sikkerhedskopi bliver taget %1$s klokken %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "hver 12. time klokken %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "ugentligt på %1$s klokken %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "Hver anden uge på %1$s klokken %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "Den %1$s. hver måned klokken %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manuelt" #: ../admin/schedule.php:71 msgid "this server" msgstr "denne server" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "Gem ingen sikkerhedskopier på %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "gem kun de seneste %1$s sikkerhedskopier på %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Sikkerhedskopiér min %1$s %2$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress kunne ikke sikkerhedskopiere dit websted %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Her er de fejl, der opstod:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Hvis fejlene ovenfor ligner volapyk, så send denne e-mail til %3$s, så kigger vi på det." #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Med venlig hilsen\n" "Den beklagende BackUpWordPress sikkerhedskopi-email-robot" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress har fuldført sikkerhedskopiering af dit websted %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Sikkerhedskopien er vedhæftet denne e-mail." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Du kan hente sikkerhedskopien ved at klikke på linket herunder:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Med venlig hilsen\n" "Den glade BackupWordPress sikkerhedskopi-email-robot" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Desværre var sikkerhedskopien for stor til at vedhæfte denne e-mail." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Sikkerhedskopiering: Eksporterer database..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Sikkerhedskopieringen: Pakker det hele i en zip-fil..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Ugyldig sti til sikkerhedskopi" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Ugyldig rodmappe." #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Sikkerhedskopiering fuldført:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Sikkerhedskopiering fejlede." #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Som udgangspunkt sikkerhedskopierer BackUpWordPress din database dagligt, og din database & dine filer ugentligt. Du kan ændre disse indstillinger." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Tidligere" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Der kan ikke oprettes filer i mappen til sikkerhedskopier. Kør %1$s eller %2$s eller tildel selv rettigheder." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Mappen til sikkerhedskopier kan ikke oprettes, fordi mappen %1$s ikke er skrivbar. Kør %2$s eller %3$s eller opret mappen selv." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress har konfigureret din tidsplaner." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Sikkerhedskopiering af %s fejlede." #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Send en notifikation via e-mail til %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s er ikke en gyldig e-mail-adresse." #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Sikkerhedskopier komprimeres, så de bør blive mindre end dette." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Notifikation via e-mail" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "Hver hele time" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "dagligt klokken %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Antal sikkerhedskopier der skal gemmes på denne server" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Indstilling af tidsplan" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Luk" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Informationen herunder gælder version %1$s. Kig i filen %2$s for at få hjælp der passer til version %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Rodmappen, der skal sikkerhedskopieres. Standard er %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Den egenskab der skal bruges, når %1$s kaldes. Standard er %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Stien til kommandofilen for %1$s. Den bliver brugt til at zippe dine %2$s og %3$s, hvis tilgængelig." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress kræver WordPress version %s eller nyere." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Annuller" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Stien til din %1$s kommandofil. Den bliver brugt til %2s-delen af sikkerhedskopieringen, hvis tilgængelig." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "f. eks." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Du kan %1$s enhver af følgende %2$s i din %3$s for at angive avancerede insdstillinger. %4$s. Angivne %5$s bliver fremhævet." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s returnerer svaret %2$s, hvilken kunne betyde, at crob jobs ikke bliver startet rigtigt. BackUpWordPress bruger wp-cron til at foretage planlagte sikkerhedskopieringen. Se %3$s for flere detaljer." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Fejlsikret tilstand." #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Mappen til sikkerhedskopier, %1$s, eksisterer ikke og kan ikke oprettes. Dine sikkerhedskopier bliver gem i %2$s i stedet." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Mappen til sikkerhedskopier, %1$s, er ikke skrivbar. Nye sikkerhedskopier bliver gemt i %2$s i stedet." #: ../functions/interface.php:261 msgid "cancel" msgstr "annuller" #: ../functions/interface.php:265 msgid "Settings" msgstr "Indstillinger" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Eksluderinger" #: ../functions/interface.php:29 msgid "Download" msgstr "Hent" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress er næsten klar." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BakcUpWordPress har opdaget fejl ved din seneste sikkerhedskopi." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Database og filer" #: ../functions/interface.php:240 msgid "Database" msgstr "Database" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress har opdaget et problem." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Typen af sikkerhedskopi skal angives." #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Ugyldig type af sikkerhedskopi" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Tidsplan skal angives." #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Ugyldig tidsplan." #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Maksimalt antal sikkerhedskopier skal angives med et tal" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s passer ikke på nogen filer." #: ../admin/backups.php:40 msgid "add schedule" msgstr "tilføj tidsplan" #: ../admin/backups.php:71 msgid "Size" msgstr "Størrelse" #: ../admin/backups.php:72 msgid "Type" msgstr "Type" #: ../admin/backups.php:73 msgid "Actions" msgstr "Handlinger" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Codex'et kan hjælpe" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Stien til den mappe, hvor du vil gemme dine sikkerhedskopier. Standard er %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "database" #: ../admin/constants.php:14 msgid "files" msgstr "filer" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Komma-separeret liste af filer eller mapper, der skal ekskluderes. Mappen med sikkerhedskopier bliver automatisk ekskluderet." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Håndter sikkerhedskopier" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Sikkerhedskopier" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Du bruger ikke den nyeste, stabile version af BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Konstanter" #: ../admin/menu.php:82 msgid "For more information:" msgstr "For yderligere oplysninger" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Support-forums" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Hjælp med oversættelse" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Du skal løse de problemer, der er beskrevet ovenfor, før BackUpWordPress kan starte." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Preview" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Ekskluderingsregler" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Fjern" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Ekskluderet" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Inkluderet" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Ikke-læsbar" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Filer, der ikke kan læses, kan ikke sikkerhedskopieres." #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Dit websted er %s. Sikkerhedskopier komprimeres, og vil derfor blive mindre end det." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Sikkerhedskopier" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Både database & filer" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Kun filer" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Kun database" #: ../functions/interface.php:237 msgid "Files" msgstr "Filer" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Håndter ekskluderinger" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Tidsplan" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Opdater" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "Hver time klokken %s minutter over hel." #: ../functions/interface.php:275 msgid "Run now" msgstr "Kør nu" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Slet" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Sikkerhedskopiering af %s." #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Denne %s fil sikrer, at andre ikke kan hente dine sikkerhedskopier." ================================================ FILE: languages/backupwordpress-de_DE.po ================================================ # Translation of 2.x in German # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "BackUpWordPress benötigt die PHP-Version %s oder neuer." #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "Hier erscheinen deine Backups, sobald sie erstellt wurden." #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "% Backups durchgeführt" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "Keine Backups durchgeführt" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "1 Backup durchgeführt" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "BackUpWordPress-Support aktivieren" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "BackUpWordPress benutzt %s, um Support bereitzustellen. Neben der Möglichkeit, Nachrichten zu senden und zu empfangen, werden auch folgende Serverinformationen bei der Kommunikation übertragen:" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "Support kann ab sofort deaktiviert werden, indem BackUpWordPress deaktiviert wird." #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "Nein, danke" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "Ja, ich möchte den Support aktivieren" #: ../admin/page.php:10 msgid "Support" msgstr "Support" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "Falls du BackUpWordPress nützlich findest, dann %1$s bewerte es bitte im Plugin-Verzeichnis. %2$s" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "Du würdest deine Backups gern an einem sichereren Ort speichern? Unsere %1$Premium-Erweiterungen%2$s ermöglichen automatische Backups zu Dropbox, FTP, Google Drive und mehr." #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "Erstelle neue Ausnahmen - du kannst mehrere per Komma separieren, z.B. %s" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "Ältere Backups werden bei Erreichen dieses Grenzwerts automatisch gelöscht. Dieser Plan wird also maximal %s Backups speichern." #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "nur das letzte Backup bei %s speichern" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "Backup von %1$s %2$s %3$s, %4$s. %5$s Eine Kopie von jedem Backup an %6$s senden." #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "%s nicht vorhanden" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "Dieses Backup wurde nicht anhand dieses Plans erstellt." #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "Nur Verzeichnisse innerhalb deiner WordPress-Installation können entfernt werden." #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "Dein Backup wurde fertiggestellt, aber es traten folgende Fehler/Warnungen auf. Möglicherweise kannst du diese ignorieren." #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "Dein Backup ist fehlgeschlagen." #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "Erhalte eine E-Mail, wenn ein Backup fertiggestellt wird. Wenn das Backup klein genug (< %s) ist, wird es an die E-Mail angehängt. Trenne mehrere E-Mail-Adressen mit Kommata." #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "Die maximale Dateigröße, mit welcher dein Backup an E-Mail-Benachrichtigungen angehängt wird. Standardmäßig %s." #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "Du kannst Fehlerdetails via E-Mail an %s senden, damit diese sich das Problem ansehen können." #: ../functions/core.php:246 msgid "Once Hourly" msgstr "Einmal pro Stunde" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "Zweimal pro Tag" #: ../functions/core.php:248 msgid "Once Daily" msgstr "Einmal pro Tag" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "Einmal pro Woche" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "Alle 14 Tage" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "Einmal pro Monat" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Sende eine E-Mail an den Support" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Neue Ausnahme/n" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Hier ist die Antwort des Servers:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Wenn du Hilfe brauchst, die Dinge zum Laufen zu bekommen, besuche die FAQ-Seite, indem du in der rechten oberen Ecke dieser Seite auf Hilfe klickst." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Starte Backup" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Sichere Datenbank %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Prüfe die Sicherung der Datenbank %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Erstelle ZIP-Archiv %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Prüfe ZIP-Archiv %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Backup fertigstellen" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress funktioniert vielleicht nicht, wenn PHP mit %s aktiviert läuft" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s läuft im %2$s, bitte kontaktiere deinen Hoster und bitte ihn dies zu deaktivieren. BackUpWordpress funktioniert vielleicht nicht richtig, während %3$s aktiviert ist." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Die Dauer, über die deine geplanten Aufgaben laufen sollen. Standard: %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Bist du sicher, dass dieser Plan gelöscht werden soll? Alle zugehörigen Backups werden mit diesem Schritt auch gelöscht." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "'Abbrechen' zum Zurückkehren, 'OK' zum Löschen." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Bist du sicher, dass du dieses Backup löschen möchtest?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Bist du sicher, dass du diese Ausschlussregel entfernen möchtest?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Das Verringern der Anzahl der Backups, die auf diesem Server vorgehalten werden, bewirkt, dass einige existierende Backups gelöscht werden. Bist du sicher, dass du dies möchtest?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Die maximale Anzahl Backups kann nicht leer sein." #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Die maximale Anzahl Backups muss größer als 0 sein." #: ../admin/actions.php:486 msgid "Exclude" msgstr "Ausschließen" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "standard" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "festgelegt" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Nur manuell" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "das sollte nicht lange dauern…" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "Wir berechnen die Größe deiner Seite…" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Das nächste Backup wird am %1$s um %2$s durchgeführt." #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "alle 12 Stunden um %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "wöchentlich am %1$s um %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "zweiwöchentlich am %1$s um %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "am %1$s. jedes Monats um %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manuell" #: ../admin/schedule.php:71 msgid "this server" msgstr "diesem Server" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "Speichere keine Backups auf %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "behalte nur die letzten %1$s Backups auf %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Erstelle ein Backup meiner %1$s %2$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress konnte deine Seite %1$s nicht sichern." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Hier sind die Fehler, auf die wir gestoßen sind:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Wenn dir die Fehlermeldung oben wie ein Marsmensch vorkommt, dann leite diese E-Mail weiter an %3$s und wir schauen und das an." #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Mit freundlichen Grüßen\n" "Der Untröstliche BackUpWordpress Backup-E-Mail-Roboter " #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress hat ein Backup deiner Seite %1$s fertiggestellt." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Die Backup-Datei sollte dieser E-Mail angehängt sein." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Du kannst die Backup-Datei herunterladen, indem du auf den folgenden Link klickst:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Mit freundlichen Grüßen\n" "Der Glückliche BackUpWordPress Backup-E-Mail-Roboter" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Unglücklicherweise war die Backup-Datei zu groß, um sie dieser E-Mail anzuhängen." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Fertige Backup an: Sichere Datenbank..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Fertige Backup an: Packe alles zusammen..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Ungültiges Backupverzeichnis" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Ungültiges Rootverzeichnis" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Backup fertiggestellt:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Backup fehlgeschlagen" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Standardmäßig führt BackUpWordPress ein tägliches Backup deiner Datenbank und ein wöchentliches Backup deiner Datenbank & Dateien durch. Du kannst diesen Aufgabenplan anpassen." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Bisherig" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Dein Backup-Verzeichnis ist nicht beschreibbar. Führe %1$s oder %2$s aus oder setze die Berechtigungen selbst." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Das Backup-Verzeichnis kann nicht erstellt werden, weil dein %1$s-Verzeichnis nicht schreibbar ist. Führe %2$s oder %3$s aus oder erstelle das Verzeichnis selbst." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress hat Standard-Pläne für dich eingerichtet." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Backup von %s fehlgeschlagen" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Sende eine E-Mail-Benachrichtigung an %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s ist keine gültige E-Mail-Adresse" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Die Backups werden komprimiert und sollten kleiner sein als angegeben." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "E-Mail-Benachrichtigung" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "stündlich zur vollen Stunde" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "täglich um %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Anzahl der Backups, die auf dem Server gespeichert bleiben" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Plan-Einstellungen" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Schließen" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Diese Informationen sind für Version %1$s. Sieh dir die %2$s-Datei für Hilfe speziell für Version %3$s an." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Das Wurzelverzeichnis, das gesichert wird. Standard: %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Die Rolle, die beim Aufrufen von %1$s benutzt wird. Standard: %2$s" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird genutzt, um deine %2$s und %3$s als ZIP-Archiv zu komprimieren, wenn verfügbar." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress benötigt WordPress Version %s oder größer." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Abbrechen" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "z.B." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Du kannst jede der folgenden %2$s in deinem %3$s %1$sn, um erweiterte Einstellungen vorzunehmen. %4$s. Definierte %5$s werden hervorgehoben." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s gibt eine %2$s-Antwort zurück. Das könnte bedeuten, dass deine Cron-Jobs nicht richtig aufgerufen werden. BackUpWordPress benutzt wp-cron, um geplante Backups auszuführen. Sieh dir das %3$s für mehr Details an." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/de/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Safe Mode" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Dein angepasstes Backup-Verzeichnis %1$s existiert nicht und kann nicht erstellt werden, neue Backups werden stattdessen nach %2$s gespeichert." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Dein angepasstes Backup-Verzeichnis %1$s ist nicht beschreibbar, neue Backups werden stattdessen nach %2$s gespeichert." #: ../functions/interface.php:261 msgid "cancel" msgstr "abbrechen" #: ../functions/interface.php:265 msgid "Settings" msgstr "Einstellungen" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Ausnahmen" #: ../functions/interface.php:29 msgid "Download" msgstr "Download" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress ist fast fertig." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress hat Probleme bei deinem letzten Backup bemerkt." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Datenbank und Dateien" #: ../functions/interface.php:240 msgid "Database" msgstr "Datenbank" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress hat ein Problem entdeckt." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Backup-Typ kann nicht leer sein" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Ungültiger Backup-Typ" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Aufgaben können nicht leer sein" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Ungültige Aufgaben" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Maximale Anzahl der Backups muss eine Zahl sein" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s passt auf keine Dateien." #: ../admin/backups.php:40 msgid "add schedule" msgstr "Plan hinzufügen" #: ../admin/backups.php:71 msgid "Size" msgstr "Größe" #: ../admin/backups.php:72 msgid "Type" msgstr "Typ" #: ../admin/backups.php:73 msgid "Actions" msgstr "Aktionen" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Der Codex kann helfen" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Der Pfad zum Verzeichnis, in dem du die Backups speichern möchtest. Standard: %s" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "Datenbank" #: ../admin/constants.php:14 msgid "files" msgstr "Dateien" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Kommagetrennte Liste von Dateien oder Verzeichnissen, die ausgeschlossen werden sollen (das Backup-Verzeichnis ist automatisch ausgeschlossen)." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Backups verwalten" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Backups" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Du benutzt nicht die neueste stabile BackUpWordPress-Version" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Konstanten" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Für mehr Informationen:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Support-Foren" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Beim Übersetzen helfen" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Du musst die oben beschriebenen Probleme beheben, bevor BackUpWordPress gestartet werden kann." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Vorschau" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Ausnahmeregeln" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Entfernen" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Ausnehmen" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Einschließen" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Nicht lesbar" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Nicht lesbare Dateien können nicht gesichert werden" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Deine Seite ist %s groß. Die Backups werden komprimiert und sollten kleiner sein." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Backup" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Datenbank & Dateien" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Dateien" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Datenbank" #: ../functions/interface.php:237 msgid "Files" msgstr "Dateien" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Ausnahmen verwalten" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Plan" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Update" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "stündlich, %s Minuten nach der vollen Stunde" #: ../functions/interface.php:275 msgid "Run now" msgstr "Jetzt ausführen" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Löschen" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Backup von %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Diese %s-Datei garantiert, dass andere Leute deine Backup-Dateien nicht herunterladen können." ================================================ FILE: languages/backupwordpress-el_GR.po ================================================ # Translation of 2.x in Greek # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: el_GR\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-en_AU.po ================================================ # Copyright (C) 2018 XIBO Ltd # This file is distributed under the GPL-2.0+. msgid "" msgstr "" "Project-Id-Version: BackUpWordPress Backup Plugin 3.2.6\n" "POT-Creation-Date: 2015-07-13 12:44+0930\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-07-13 13:39+0930\n" "Last-Translator: ucavus\n" "Language-Team: ucavus\n" "X-Generator: Poedit 1.8.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: en_AU\n" #: admin/actions.php:191 msgid "The schedule ID was not provided. Aborting." msgstr "" #: admin/actions.php:241 msgid "Backup type cannot be empty" msgstr "" #: admin/actions.php:245 msgid "Invalid backup type" msgstr "" #: admin/actions.php:259 msgid "Schedule cannot be empty" msgstr "" #: admin/actions.php:263 msgid "Invalid schedule" msgstr "" #: admin/actions.php:277 msgid "Day of the week must be a valid lowercase day name" msgstr "" #: admin/actions.php:296 msgid "Day of month must be between 1 and 31" msgstr "" #: admin/actions.php:315 msgid "Hours must be between 0 and 23" msgstr "" #: admin/actions.php:334 msgid "Minutes must be between 0 and 59" msgstr "" #: admin/actions.php:348 msgid "Max backups can't be empty" msgstr "" #: admin/actions.php:352 msgid "Max backups must be a number" msgstr "" #: admin/actions.php:356 msgid "Max backups must be greater than 0" msgstr "" #: admin/actions.php:708 admin/actions.php:714 msgid "BackUpWordPress has detected a problem." msgstr "" #: admin/actions.php:708 admin/actions.php:714 msgid "" "%1$s is returning a %2$s response which could mean cron jobs aren't getting " "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. " "See the %3$s for more details." msgstr "" #: admin/backups-table.php:8 admin/schedule-form-excludes.php:105 msgid "Size" msgstr "" #: admin/backups-table.php:9 admin/schedule-form-excludes.php:107 msgid "Type" msgstr "" #: admin/backups-table.php:10 msgid "Actions" msgstr "" #: admin/backups-table.php:35 msgid "This is where your backups will appear once you have some." msgstr "" #: admin/backups.php:22 msgid "add schedule" msgstr "" #: admin/backups.php:26 msgid "Support" msgstr "" #: admin/backups.php:32 msgid "Enable Support" msgstr "" #: admin/constants.php:3 msgid "" "You can %1$s any of the following %2$s in your %3$s to control advanced " "settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: admin/constants.php:3 admin/menu.php:82 msgid "Constants" msgstr "" #: admin/constants.php:3 msgid "The Codex can help" msgstr "" #: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46 #: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94 #: admin/constants.php:110 classes/class-email-service.php:60 msgid "You've set it to: %s" msgstr "" #: admin/constants.php:17 msgid "" "The path to folder you would like to store your backup files in, defaults to " "%s." msgstr "" #: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49 #: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97 #: admin/constants.php:113 classes/class-email-service.php:63 msgid "e.g." msgstr "" #: admin/constants.php:33 msgid "" "The path to your %1$s executable. Will be used for the %2$s part of the back " "up if available." msgstr "" #: admin/constants.php:33 admin/constants.php:49 msgid "database" msgstr "" #: admin/constants.php:49 msgid "" "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s " "if available." msgstr "" #: admin/constants.php:49 msgid "files" msgstr "" #: admin/constants.php:65 msgid "" "Comma separated list of files or directories to exclude, the backups " "directory is automatically excluded." msgstr "" #: admin/constants.php:81 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: admin/constants.php:97 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: admin/constants.php:113 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: admin/enable-support.php:5 msgid "" "BackUpWordPress uses %s to provide support. In addition to allowing you to " "send and receive messages we also send the following server information " "along with your requests:" msgstr "" #: admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: admin/enable-support.php:60 msgid "No thanks" msgstr "" #: admin/enable-support.php:61 msgid "Yes I want to enable support" msgstr "" #: admin/faq.php:2 msgid "Where does BackUpWordPress store the backup files?" msgstr "" #: admin/faq.php:4 msgid "" "Backups are stored on your server in /wp-content/backups, you " "can change the directory." msgstr "" #: admin/faq.php:6 msgid "" "Important: By default BackUpWordPress backs up everything in your site root " "as well as your database, this includes any non WordPress folders that " "happen to be in your site root. This does mean that your backup directory " "can get quite large." msgstr "" #: admin/faq.php:8 msgid "What if I want to back up my site to another destination?" msgstr "" #: admin/faq.php:10 msgid "" "BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, " "Azure, DreamObjects and FTP/SFTP. Check it out here: https://bwp.hmn.md" msgstr "" #: admin/faq.php:12 msgid "How do I restore my site from a backup?" msgstr "" #: admin/faq.php:14 msgid "" "You need to download the latest backup file either by clicking download on " "the backups page or via FTP. Unzip the files and " "upload all the files to your server overwriting your site. You can then " "import the database using your hosts database management tool (likely " "phpMyAdmin)." msgstr "" #: admin/faq.php:16 msgid "" "See this guide for more details - How to restore from backup." msgstr "" #: admin/faq.php:18 msgid "Does BackUpWordPress back up the backups directory?" msgstr "" #: admin/faq.php:20 msgid "No." msgstr "" #: admin/faq.php:22 msgid "I'm not receiving my backups by email?" msgstr "" #: admin/faq.php:24 msgid "" "Most servers have a filesize limit on email attachments, it's generally " "about 10mb. If your backup file is over that limit it won't be sent attached " "to the email, instead you should receive an email with a link to download " "the backup, if you aren't even receiving that then you likely have a mail " "issue on your server that you'll need to contact your host about." msgstr "" #: admin/faq.php:26 msgid "How many backups are stored by default?" msgstr "" #: admin/faq.php:28 msgid "BackUpWordPress stores the last 10 backups by default." msgstr "" #: admin/faq.php:30 msgid "How long should a backup take?" msgstr "" #: admin/faq.php:32 msgid "" "Unless your site is very large (many gigabytes) it should only take a few " "minutes to perform a back up, if your back up has been running for longer " "than an hour it's safe to assume that something has gone wrong, try de-" "activating and re-activating the plugin, if it keeps happening, contact " "support." msgstr "" #: admin/faq.php:34 msgid "What do I do if I get the wp-cron error message?" msgstr "" #: admin/faq.php:36 msgid "" "The issue is that your wp-cron.php is not returning a " "200 response when hit with a HTTP request originating from your " "own server, it could be several things, in most cases, it's an issue with " "the server / site." msgstr "" #: admin/faq.php:38 msgid "There are some things you can test to confirm this is the issue." msgstr "" #: admin/faq.php:40 msgid "Are scheduled posts working? (They use wp-cron as well ). " msgstr "" #: admin/faq.php:42 msgid "" "Are you hosted on Heart Internet? (wp-cron may not be supported by Heart " "Internet, see below for work-around)." msgstr "" #: admin/faq.php:44 msgid "If you click manual backup does it work?" msgstr "" #: admin/faq.php:46 msgid "" "Try adding define( 'ALTERNATE_WP_CRON', true ); to your " "wp-config.php, do automatic backups work?" msgstr "" #: admin/faq.php:48 msgid "" "Is your site private (I.E. is it behind some kind of authentication, " "maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, " "if you are and you temporarily remove the authentication, do backups start " "working?" msgstr "" #: admin/faq.php:50 msgid "" "Report the results to our support team for further help. To do this, either " "enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment." "com" msgstr "" #: admin/faq.php:52 msgid "How to get BackUpWordPress working in Heart Internet" msgstr "" #: admin/faq.php:54 msgid "" "The script to be entered into the Heart Internet cPanel is: /usr/bin/" "php5 /home/sites/yourdomain.com/public_html/wp-cron.php (note the " "space between php5 and the location of the file). The file wp-cron." "php chmod must be set to 711." msgstr "" #: admin/faq.php:56 msgid "My backups seem to be failing?" msgstr "" #: admin/faq.php:58 msgid "" "If your backups are failing - it's commonly caused by lack of available " "resources on your server. The easiest way to establish this to exclude some " "[of] or your entire uploades folder, running a backup an if that succeeds. " "If so, we know it's probably a server issue. If not, report the results to " "our support team for further help. To do this, either enable suport from " "your Admin Dashboard (recommended), or email support@xibodevelopment.com" msgstr "" #: admin/menu.php:13 admin/menu.php:17 msgid "Manage Backups" msgstr "" #: admin/menu.php:13 admin/menu.php:17 admin/menu.php:46 msgid "Backups" msgstr "" #: admin/menu.php:77 msgid "FAQ" msgstr "" #: admin/menu.php:95 msgid "Server Info" msgstr "" #: admin/menu.php:102 msgid "For more information:" msgstr "" #: admin/menu.php:104 msgid "Support Forums" msgstr "" #: admin/menu.php:105 msgid "Help with translation" msgstr "" #: admin/page.php:7 msgid "" "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin " "directory%2$s." msgstr "" #: admin/schedule-form-excludes.php:6 msgid "Currently Excluded" msgstr "" #: admin/schedule-form-excludes.php:9 msgid "" "We automatically detect and ignore common VCS folders and other backup plugin folders." msgstr "" #: admin/schedule-form-excludes.php:44 msgid "Default rule" msgstr "" #: admin/schedule-form-excludes.php:48 msgid "Defined in wp-config.php" msgstr "" #: admin/schedule-form-excludes.php:55 msgid "Stop excluding" msgstr "" #: admin/schedule-form-excludes.php:71 msgid "Directory Listing" msgstr "" #: admin/schedule-form-excludes.php:73 msgid "" "Here's a directory listing of all files on your site, you can browse through " "and exclude files or folders that you don't want included in your backup." msgstr "" #: admin/schedule-form-excludes.php:104 msgid "Name" msgstr "" #: admin/schedule-form-excludes.php:106 msgid "Permissions" msgstr "" #: admin/schedule-form-excludes.php:108 msgid "Status" msgstr "" #: admin/schedule-form-excludes.php:168 admin/schedule-form-excludes.php:284 msgid "Refresh" msgstr "" #: admin/schedule-form-excludes.php:185 admin/schedule-form-excludes.php:308 msgid "Symlink" msgstr "" #: admin/schedule-form-excludes.php:189 admin/schedule-form-excludes.php:312 msgid "Folder" msgstr "" #: admin/schedule-form-excludes.php:282 msgid "Recalculate the size of this directory" msgstr "" #: admin/schedule-form-excludes.php:316 msgid "File" msgstr "" #: admin/schedule-form-excludes.php:327 msgid "Unreadable files won't be backed up." msgstr "" #: admin/schedule-form-excludes.php:327 msgid "Unreadable" msgstr "" #: admin/schedule-form-excludes.php:331 msgid "Excluded" msgstr "" #: admin/schedule-form-excludes.php:347 msgid "Exclude →" msgstr "" #: admin/schedule-form-excludes.php:365 admin/schedule-form.php:192 #: admin/schedule-settings.php:88 msgid "Done" msgstr "" #: admin/schedule-form.php:1 admin/schedule-settings.php:9 msgid "Settings" msgstr "" #: admin/schedule-form.php:36 msgid "Backup" msgstr "" #: admin/schedule-form.php:43 msgid "Both Database & files" msgstr "" #: admin/schedule-form.php:45 msgid "Files only" msgstr "" #: admin/schedule-form.php:47 msgid "Database only" msgstr "" #: admin/schedule-form.php:58 msgid "Schedule" msgstr "" #: admin/schedule-form.php:65 msgid "Manual Only" msgstr "" #: admin/schedule-form.php:92 msgid "Start Day" msgstr "" #: admin/schedule-form.php:100 msgid "Monday" msgstr "" #: admin/schedule-form.php:101 msgid "Tuesday" msgstr "" #: admin/schedule-form.php:102 msgid "Wednesday" msgstr "" #: admin/schedule-form.php:103 msgid "Thursday" msgstr "" #: admin/schedule-form.php:104 msgid "Friday" msgstr "" #: admin/schedule-form.php:105 msgid "Saturday" msgstr "" #: admin/schedule-form.php:106 msgid "Sunday" msgstr "" #: admin/schedule-form.php:124 msgid "Start Day of Month" msgstr "" #: admin/schedule-form.php:136 msgid "Start Time" msgstr "" #: admin/schedule-form.php:145 msgid "Hours" msgstr "" #: admin/schedule-form.php:149 msgid "Minutes" msgstr "" #: admin/schedule-form.php:152 msgid "Please use 24 hour format for hours" msgstr "" #: admin/schedule-form.php:153 msgid "The second backup will run 12 hours after the first" msgstr "" #: admin/schedule-form.php:162 msgid "Number of backups to store on this server" msgstr "" #: admin/schedule-form.php:171 msgid "Past this limit older backups will be deleted automatically." msgstr "" #: admin/schedule-form.php:174 msgid "This schedule will store a maximum of %s of backups." msgstr "" #: admin/schedule-sentence.php:11 msgid "The next backup will be on %1$s at %2$s %3$s" msgstr "" #: admin/schedule-sentence.php:18 msgid "hourly on the hour" msgstr "" #: admin/schedule-sentence.php:18 msgid "hourly at %s minutes past the hour" msgstr "" #: admin/schedule-sentence.php:24 msgid "daily at %s" msgstr "" #: admin/schedule-sentence.php:35 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: admin/schedule-sentence.php:41 msgid "weekly on %1$s at %2$s" msgstr "" #: admin/schedule-sentence.php:47 msgid "biweekly on %1$s at %2$s" msgstr "fortnightly on %1$s at %2$s" #: admin/schedule-sentence.php:53 msgid "on the %1$s of each month at %2$s" msgstr "" #: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65 msgid "manually" msgstr "" #: admin/schedule-sentence.php:70 msgid "this server" msgstr "" #: admin/schedule-sentence.php:78 msgid "store the most recent backup in %s" msgstr "" #: admin/schedule-sentence.php:84 msgid "don't store any backups in on this server" msgstr "" #: admin/schedule-sentence.php:90 msgid "store the last %1$s backups in %2$s" msgstr "" #: admin/schedule-sentence.php:123 msgid "%s. " msgstr "" #: admin/schedule-sentence.php:127 msgid "Send a copy of each backup to %s." msgstr "" #: admin/schedule-sentence.php:158 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: admin/schedule-sentence.php:162 msgid "this shouldn't take long…" msgstr "" #: admin/schedule-sentence.php:162 msgid "calculating the size of your backup…" msgstr "" #: admin/schedule-settings.php:7 msgid "Run now" msgstr "" #: admin/schedule-settings.php:15 msgid "Excludes" msgstr "" #: admin/schedule-settings.php:27 functions/interface.php:34 msgid "Delete" msgstr "" #: admin/server-info.php:43 msgid "%1$s - %2$s" msgstr "" #: admin/upsell.php:3 msgid "Backup to" msgstr "" #: admin/upsell.php:18 msgid "" "%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all " "Destinations & Unlimited Sites)%4$s" msgstr "" #: backupwordpress.php:53 msgid "" "BackUpWordPress will not work on this site. ( PHP Version %s is unsupported )" msgstr "" #: backupwordpress.php:53 msgid "BackUpWordPress Error" msgstr "" #: classes/class-backup.php:388 msgid "archive filename must be a non empty string" msgstr "" #: classes/class-backup.php:392 msgid "invalid file extension for archive filename %s" msgstr "" #: classes/class-backup.php:433 msgid "database dump filename must be a non empty string" msgstr "" #: classes/class-backup.php:437 msgid "invalid file extension for database dump filename %s" msgstr "" #: classes/class-backup.php:471 msgid "Invalid root path %s must be a valid directory path" msgstr "" #: classes/class-backup.php:497 msgid "" "Invalid existing archive filepath %s must be a non empty " "(string)" msgstr "" #: classes/class-backup.php:552 msgid "" "Invalid backup type %s must be one of (string) file, database " "or complete" msgstr "" #: classes/class-backup.php:1926 msgid "Could not connect to mysql" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:50 msgid "Backup: Dumping database..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:54 msgid "Backup: Zipping everything up..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:70 msgid "Invalid backup path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:75 msgid "Invalid root path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:106 msgid "Backup Complete: " msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:108 msgid "Backup Failed" msgstr "" #: classes/class-email-service.php:28 msgid "Email notification" msgstr "" #: classes/class-email-service.php:34 msgid "" "Receive a notification email when a backup completes, if the backup is small " "enough (< %s) then it will be attached to the email. Separate multiple " "email addresses with a comma." msgstr "" #: classes/class-email-service.php:63 msgid "" "The maximum filesize of your backup that will be attached to your " "notification emails . Defaults to %s." msgstr "" #: classes/class-email-service.php:82 msgid "Send an email notification to %s" msgstr "" #: classes/class-email-service.php:117 msgid "%s isn't a valid email" msgstr "" #: classes/class-email-service.php:179 classes/class-webhook-service.php:59 msgid "Backup of %s Failed" msgstr "" #: classes/class-email-service.php:181 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: classes/class-email-service.php:181 msgid "Here are the errors that we're encountered:" msgstr "" #: classes/class-email-service.php:181 msgid "" "If the errors above look like Martian, forward this email to %3$s and we'll " "take a look" msgstr "" #: classes/class-email-service.php:181 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:189 msgid "Backup of %s" msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: classes/class-email-service.php:194 msgid "The backup file should be attached to this email." msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "You can download the backup file by clicking the link below:" msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:203 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: classes/class-path.php:249 msgid "" "This %s file ensures that other people cannot download your backup files." msgstr "" #: classes/class-plugin.php:214 msgid "Update" msgstr "" #: classes/class-plugin.php:215 msgid "Cancel" msgstr "" #: classes/class-plugin.php:216 msgid "" "Are you sure you want to delete this schedule? All of it's backups will also " "be deleted." msgstr "" #: classes/class-plugin.php:216 classes/class-plugin.php:217 #: classes/class-plugin.php:218 classes/class-plugin.php:219 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: classes/class-plugin.php:217 msgid "Are you sure you want to delete this backup?" msgstr "" #: classes/class-plugin.php:218 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: classes/class-plugin.php:219 msgid "" "Reducing the number of backups that are stored on this server will cause " "some of your existing backups to be deleted, are you sure that's what you " "want?" msgstr "" #: classes/class-schedule.php:151 msgid "Invalid Option Name" msgstr "" #: classes/class-schedule.php:264 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: classes/class-schedule.php:612 msgid "Argument 1 for %s must be a valid future timestamp" msgstr "" #: classes/class-schedule.php:649 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: classes/class-schedule.php:778 functions/interface.php:267 msgid "Starting Backup" msgstr "" #: classes/class-schedule.php:865 msgid "Error writing to file. (%s)" msgstr "" #: classes/class-schedule.php:916 msgid "Dumping Database %s" msgstr "" #: classes/class-schedule.php:921 msgid "Verifying Database Dump %s" msgstr "" #: classes/class-schedule.php:926 msgid "Creating zip archive %s" msgstr "" #: classes/class-schedule.php:931 msgid "Verifying Zip Archive %s" msgstr "" #: classes/class-schedule.php:936 msgid "Finishing Backup" msgstr "" #: classes/class-schedule.php:987 msgid "An unexpected error occured" msgstr "" #. translators: min=minute #: classes/class-schedule.php:1050 msgid "%s min" msgid_plural "%s mins" msgstr[0] "" msgstr[1] "" #: classes/class-schedule.php:1060 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "" msgstr[1] "" #: classes/class-schedule.php:1122 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: classes/class-schedule.php:1127 msgid "%s doesn't exist" msgstr "" #: classes/class-schedule.php:1132 msgid "That backup wasn't created by this schedule" msgstr "" #: classes/class-services.php:80 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: classes/class-services.php:96 msgid "Argument 1 for %s must be a registered service" msgstr "" #: classes/class-services.php:114 classes/deprecated.php:81 msgid "Argument 1 for %s must be a valid class" msgstr "" #: classes/class-setup.php:34 msgid "BackUpWordPress" msgstr "" #: classes/class-setup.php:170 msgid "" "BackUpWordPress requires PHP version %1$s or later and WordPress version " "%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s" msgstr "" #: classes/class-webhook-service.php:103 msgid "Error: %s" msgstr "" #: functions/core.php:326 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: functions/core.php:326 msgid "" "By default BackUpWordPress performs a daily backup of your database and a " "weekly backup of your database & files. You can modify these schedules." msgstr "" #: functions/core.php:341 msgid "Once Hourly" msgstr "" #: functions/core.php:342 msgid "Twice Daily" msgstr "" #: functions/core.php:343 msgid "Once Daily" msgstr "" #: functions/core.php:344 msgid "Once Weekly" msgstr "" #: functions/core.php:345 msgid "Once Biweekly" msgstr "Once Fortnightly" #: functions/core.php:346 msgid "Once Monthly" msgstr "" #: functions/core.php:364 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: functions/interface.php:31 msgid "Download" msgstr "" #: functions/interface.php:68 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: functions/interface.php:70 msgid "Dismiss" msgstr "" #: functions/interface.php:136 msgid "" "The backups directory can't be created because your %1$s directory isn't " "writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: functions/interface.php:140 msgid "" "Your backups directory isn't writable, run %1$s or %2$s or set the " "permissions yourself." msgstr "" #: functions/interface.php:144 msgid "" "%1$s is running in %2$s, please contact your host and ask them to disable " "it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: functions/interface.php:144 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: functions/interface.php:144 msgid "Safe Mode" msgstr "" #: functions/interface.php:152 msgid "Your custom path does not exist" msgstr "" #: functions/interface.php:156 msgid "" "Your custom path is unreachable due to a restriction set in your PHP " "configuration (open_basedir)" msgstr "" #: functions/interface.php:161 msgid "" "Your custom backups directory %1$s doesn't exist and can't be created, your " "backups will be saved to %2$s instead." msgstr "" #: functions/interface.php:165 msgid "" "Your custom backups directory %1$s isn't writable, new backups will be saved " "to %2$s instead." msgstr "" #: functions/interface.php:174 msgid "Your site root path %s isn't readable." msgstr "" #: functions/interface.php:236 msgid "Database and Files" msgstr "" #: functions/interface.php:240 msgid "Files" msgstr "" #: functions/interface.php:244 msgid "Database" msgstr "" #: functions/interface.php:251 msgid "Legacy" msgstr "" #: functions/interface.php:266 msgid "Started %s ago" msgstr "" #: functions/interface.php:268 msgid "cancel" msgstr "" #: functions/interface.php:316 msgid "No backups completed" msgstr "" #: functions/interface.php:327 msgid "Complete Hourly" msgstr "" #: functions/interface.php:328 msgid "File Hourly" msgstr "" #: functions/interface.php:329 msgid "Database Hourly" msgstr "" #: functions/interface.php:330 msgid "Complete Twicedaily" msgstr "" #: functions/interface.php:331 msgid "File Twicedaily" msgstr "" #: functions/interface.php:332 msgid "Database Twicedaily" msgstr "" #: functions/interface.php:333 msgid "Complete Daily" msgstr "" #: functions/interface.php:334 msgid "File Daily" msgstr "" #: functions/interface.php:335 msgid "Database Daily" msgstr "" #: functions/interface.php:336 msgid "Complete Weekly" msgstr "" #: functions/interface.php:337 msgid "File Weekly" msgstr "" #: functions/interface.php:338 msgid "Database Weekly" msgstr "" #: functions/interface.php:339 msgid "Complete Biweekly" msgstr "Complete Fortnightly" #: functions/interface.php:340 msgid "File Biweekly" msgstr "File Fortnightly" #: functions/interface.php:341 msgid "Database Biweekly" msgstr "Database Fortnightly" #: functions/interface.php:342 msgid "Complete Monthly" msgstr "" #: functions/interface.php:343 msgid "File Monthly" msgstr "" #: functions/interface.php:344 msgid "Database Monthly" msgstr "" #: functions/interface.php:345 msgid "Complete Manually" msgstr "" #: functions/interface.php:346 msgid "File Manually" msgstr "" #: functions/interface.php:347 msgid "Database Manually" msgstr "" #. Plugin Name of the plugin/theme msgid "BackUpWordPress Backup Plugin" msgstr "" #. Plugin URI of the plugin/theme msgid "https://github.com/xibodevelopment" msgstr "" #. Description of the plugin/theme msgid "" "Simple automated backups of your WordPress powered website. Once activated " "you'll find me under Tools → Backups. On multisite, " "you'll find me under the Network Settings menu." msgstr "" #. Author of the plugin/theme msgid "XIBO Ltd" msgstr "" #. Author URI of the plugin/theme msgid "https://github.com/xibodevelopment" msgstr "" #: admin/schedule-sentence.php:120 msgctxt "" "1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to " "store" msgid "Backup my %1$s %2$s %3$s, %4$s." msgstr "" #: functions/interface.php:318 msgctxt "backups count" msgid "One backup completed" msgid_plural "%1$s backups completed" msgstr[0] "" msgstr[1] "" ================================================ FILE: languages/backupwordpress-en_GB.po ================================================ # Copyright (C) 2015 XIBO Ltd # This file is distributed under the GPL-2.0+. msgid "" msgstr "" "Project-Id-Version: BackUpWordPress Backup Plugin 3.2.6\n" "POT-Creation-Date: 2015-07-13 12:44+0930\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-07-13 13:39+0930\n" "Last-Translator: ucavus\n" "Language-Team: ucavus\n" "X-Generator: Poedit 1.8.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: en_GB\n" #: admin/actions.php:191 msgid "The schedule ID was not provided. Aborting." msgstr "" #: admin/actions.php:241 msgid "Backup type cannot be empty" msgstr "" #: admin/actions.php:245 msgid "Invalid backup type" msgstr "" #: admin/actions.php:259 msgid "Schedule cannot be empty" msgstr "" #: admin/actions.php:263 msgid "Invalid schedule" msgstr "" #: admin/actions.php:277 msgid "Day of the week must be a valid lowercase day name" msgstr "" #: admin/actions.php:296 msgid "Day of month must be between 1 and 31" msgstr "" #: admin/actions.php:315 msgid "Hours must be between 0 and 23" msgstr "" #: admin/actions.php:334 msgid "Minutes must be between 0 and 59" msgstr "" #: admin/actions.php:348 msgid "Max backups can't be empty" msgstr "" #: admin/actions.php:352 msgid "Max backups must be a number" msgstr "" #: admin/actions.php:356 msgid "Max backups must be greater than 0" msgstr "" #: admin/actions.php:708 admin/actions.php:714 msgid "BackUpWordPress has detected a problem." msgstr "" #: admin/actions.php:708 admin/actions.php:714 msgid "" "%1$s is returning a %2$s response which could mean cron jobs aren't getting " "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. " "See the %3$s for more details." msgstr "" #: admin/backups-table.php:8 admin/schedule-form-excludes.php:105 msgid "Size" msgstr "" #: admin/backups-table.php:9 admin/schedule-form-excludes.php:107 msgid "Type" msgstr "" #: admin/backups-table.php:10 msgid "Actions" msgstr "" #: admin/backups-table.php:35 msgid "This is where your backups will appear once you have some." msgstr "" #: admin/backups.php:22 msgid "add schedule" msgstr "" #: admin/backups.php:26 msgid "Support" msgstr "" #: admin/backups.php:32 msgid "Enable Support" msgstr "" #: admin/constants.php:3 msgid "" "You can %1$s any of the following %2$s in your %3$s to control advanced " "settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: admin/constants.php:3 admin/menu.php:82 msgid "Constants" msgstr "" #: admin/constants.php:3 msgid "The Codex can help" msgstr "" #: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46 #: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94 #: admin/constants.php:110 classes/class-email-service.php:60 msgid "You've set it to: %s" msgstr "" #: admin/constants.php:17 msgid "" "The path to folder you would like to store your backup files in, defaults to " "%s." msgstr "" #: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49 #: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97 #: admin/constants.php:113 classes/class-email-service.php:63 msgid "e.g." msgstr "" #: admin/constants.php:33 msgid "" "The path to your %1$s executable. Will be used for the %2$s part of the back " "up if available." msgstr "" #: admin/constants.php:33 admin/constants.php:49 msgid "database" msgstr "" #: admin/constants.php:49 msgid "" "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s " "if available." msgstr "" #: admin/constants.php:49 msgid "files" msgstr "" #: admin/constants.php:65 msgid "" "Comma separated list of files or directories to exclude, the backups " "directory is automatically excluded." msgstr "" #: admin/constants.php:81 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: admin/constants.php:97 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: admin/constants.php:113 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: admin/enable-support.php:5 msgid "" "BackUpWordPress uses %s to provide support. In addition to allowing you to " "send and receive messages we also send the following server information " "along with your requests:" msgstr "" #: admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: admin/enable-support.php:60 msgid "No thanks" msgstr "" #: admin/enable-support.php:61 msgid "Yes I want to enable support" msgstr "" #: admin/faq.php:2 msgid "Where does BackUpWordPress store the backup files?" msgstr "" #: admin/faq.php:4 msgid "" "Backups are stored on your server in /wp-content/backups, you " "can change the directory." msgstr "" #: admin/faq.php:6 msgid "" "Important: By default BackUpWordPress backs up everything in your site root " "as well as your database, this includes any non WordPress folders that " "happen to be in your site root. This does mean that your backup directory " "can get quite large." msgstr "" #: admin/faq.php:8 msgid "What if I want to back up my site to another destination?" msgstr "" #: admin/faq.php:10 msgid "" "BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, " "Azure, DreamObjects and FTP/SFTP. Check it out here: https://bwp.hmn.md" msgstr "" #: admin/faq.php:12 msgid "How do I restore my site from a backup?" msgstr "" #: admin/faq.php:14 msgid "" "You need to download the latest backup file either by clicking download on " "the backups page or via FTP. Unzip the files and " "upload all the files to your server overwriting your site. You can then " "import the database using your hosts database management tool (likely " "phpMyAdmin)." msgstr "" #: admin/faq.php:16 msgid "" "See this guide for more details - How to restore from backup." msgstr "" #: admin/faq.php:18 msgid "Does BackUpWordPress back up the backups directory?" msgstr "" #: admin/faq.php:20 msgid "No." msgstr "" #: admin/faq.php:22 msgid "I'm not receiving my backups by email?" msgstr "" #: admin/faq.php:24 msgid "" "Most servers have a filesize limit on email attachments, it's generally " "about 10mb. If your backup file is over that limit it won't be sent attached " "to the email, instead you should receive an email with a link to download " "the backup, if you aren't even receiving that then you likely have a mail " "issue on your server that you'll need to contact your host about." msgstr "" #: admin/faq.php:26 msgid "How many backups are stored by default?" msgstr "" #: admin/faq.php:28 msgid "BackUpWordPress stores the last 10 backups by default." msgstr "" #: admin/faq.php:30 msgid "How long should a backup take?" msgstr "" #: admin/faq.php:32 msgid "" "Unless your site is very large (many gigabytes) it should only take a few " "minutes to perform a back up, if your back up has been running for longer " "than an hour it's safe to assume that something has gone wrong, try de-" "activating and re-activating the plugin, if it keeps happening, contact " "support." msgstr "" #: admin/faq.php:34 msgid "What do I do if I get the wp-cron error message?" msgstr "" #: admin/faq.php:36 msgid "" "The issue is that your wp-cron.php is not returning a " "200 response when hit with a HTTP request originating from your " "own server, it could be several things, in most cases, it's an issue with " "the server / site." msgstr "" #: admin/faq.php:38 msgid "There are some things you can test to confirm this is the issue." msgstr "" #: admin/faq.php:40 msgid "Are scheduled posts working? (They use wp-cron as well ). " msgstr "" #: admin/faq.php:42 msgid "" "Are you hosted on Heart Internet? (wp-cron may not be supported by Heart " "Internet, see below for work-around)." msgstr "" #: admin/faq.php:44 msgid "If you click manual backup does it work?" msgstr "" #: admin/faq.php:46 msgid "" "Try adding define( 'ALTERNATE_WP_CRON', true ); to your " "wp-config.php, do automatic backups work?" msgstr "" #: admin/faq.php:48 msgid "" "Is your site private (I.E. is it behind some kind of authentication, " "maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, " "if you are and you temporarily remove the authentication, do backups start " "working?" msgstr "" #: admin/faq.php:50 msgid "" "Report the results to our support team for further help. To do this, either " "enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment." "com" msgstr "" #: admin/faq.php:52 msgid "How to get BackUpWordPress working in Heart Internet" msgstr "" #: admin/faq.php:54 msgid "" "The script to be entered into the Heart Internet cPanel is: /usr/bin/" "php5 /home/sites/yourdomain.com/public_html/wp-cron.php (note the " "space between php5 and the location of the file). The file wp-cron." "php chmod must be set to 711." msgstr "" #: admin/faq.php:56 msgid "My backups seem to be failing?" msgstr "" #: admin/faq.php:58 msgid "" "If your backups are failing - it's commonly caused by lack of available " "resources on your server. The easiest way to establish this to exclude some " "[of] or your entire uploades folder, running a backup an if that succeeds. " "If so, we know it's probably a server issue. If not, report the results to " "our support team for further help. To do this, either enable suport from " "your Admin Dashboard (recommended), or email support@xibodevelopment.com" msgstr "" #: admin/menu.php:13 admin/menu.php:17 msgid "Manage Backups" msgstr "" #: admin/menu.php:13 admin/menu.php:17 admin/menu.php:46 msgid "Backups" msgstr "" #: admin/menu.php:77 msgid "FAQ" msgstr "" #: admin/menu.php:95 msgid "Server Info" msgstr "" #: admin/menu.php:102 msgid "For more information:" msgstr "" #: admin/menu.php:104 msgid "Support Forums" msgstr "" #: admin/menu.php:105 msgid "Help with translation" msgstr "" #: admin/page.php:7 msgid "" "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin " "directory%2$s." msgstr "" #: admin/schedule-form-excludes.php:6 msgid "Currently Excluded" msgstr "" #: admin/schedule-form-excludes.php:9 msgid "" "We automatically detect and ignore common VCS folders and other backup plugin folders." msgstr "" #: admin/schedule-form-excludes.php:44 msgid "Default rule" msgstr "" #: admin/schedule-form-excludes.php:48 msgid "Defined in wp-config.php" msgstr "" #: admin/schedule-form-excludes.php:55 msgid "Stop excluding" msgstr "" #: admin/schedule-form-excludes.php:71 msgid "Directory Listing" msgstr "" #: admin/schedule-form-excludes.php:73 msgid "" "Here's a directory listing of all files on your site, you can browse through " "and exclude files or folders that you don't want included in your backup." msgstr "" #: admin/schedule-form-excludes.php:104 msgid "Name" msgstr "" #: admin/schedule-form-excludes.php:106 msgid "Permissions" msgstr "" #: admin/schedule-form-excludes.php:108 msgid "Status" msgstr "" #: admin/schedule-form-excludes.php:168 admin/schedule-form-excludes.php:284 msgid "Refresh" msgstr "" #: admin/schedule-form-excludes.php:185 admin/schedule-form-excludes.php:308 msgid "Symlink" msgstr "" #: admin/schedule-form-excludes.php:189 admin/schedule-form-excludes.php:312 msgid "Folder" msgstr "" #: admin/schedule-form-excludes.php:282 msgid "Recalculate the size of this directory" msgstr "" #: admin/schedule-form-excludes.php:316 msgid "File" msgstr "" #: admin/schedule-form-excludes.php:327 msgid "Unreadable files won't be backed up." msgstr "" #: admin/schedule-form-excludes.php:327 msgid "Unreadable" msgstr "" #: admin/schedule-form-excludes.php:331 msgid "Excluded" msgstr "" #: admin/schedule-form-excludes.php:347 msgid "Exclude →" msgstr "" #: admin/schedule-form-excludes.php:365 admin/schedule-form.php:192 #: admin/schedule-settings.php:88 msgid "Done" msgstr "" #: admin/schedule-form.php:1 admin/schedule-settings.php:9 msgid "Settings" msgstr "" #: admin/schedule-form.php:36 msgid "Backup" msgstr "" #: admin/schedule-form.php:43 msgid "Both Database & files" msgstr "" #: admin/schedule-form.php:45 msgid "Files only" msgstr "" #: admin/schedule-form.php:47 msgid "Database only" msgstr "" #: admin/schedule-form.php:58 msgid "Schedule" msgstr "" #: admin/schedule-form.php:65 msgid "Manual Only" msgstr "" #: admin/schedule-form.php:92 msgid "Start Day" msgstr "" #: admin/schedule-form.php:100 msgid "Monday" msgstr "" #: admin/schedule-form.php:101 msgid "Tuesday" msgstr "" #: admin/schedule-form.php:102 msgid "Wednesday" msgstr "" #: admin/schedule-form.php:103 msgid "Thursday" msgstr "" #: admin/schedule-form.php:104 msgid "Friday" msgstr "" #: admin/schedule-form.php:105 msgid "Saturday" msgstr "" #: admin/schedule-form.php:106 msgid "Sunday" msgstr "" #: admin/schedule-form.php:124 msgid "Start Day of Month" msgstr "" #: admin/schedule-form.php:136 msgid "Start Time" msgstr "" #: admin/schedule-form.php:145 msgid "Hours" msgstr "" #: admin/schedule-form.php:149 msgid "Minutes" msgstr "" #: admin/schedule-form.php:152 msgid "Please use 24 hour format for hours" msgstr "" #: admin/schedule-form.php:153 msgid "The second backup will run 12 hours after the first" msgstr "" #: admin/schedule-form.php:162 msgid "Number of backups to store on this server" msgstr "" #: admin/schedule-form.php:171 msgid "Past this limit older backups will be deleted automatically." msgstr "" #: admin/schedule-form.php:174 msgid "This schedule will store a maximum of %s of backups." msgstr "" #: admin/schedule-sentence.php:11 msgid "The next backup will be on %1$s at %2$s %3$s" msgstr "" #: admin/schedule-sentence.php:18 msgid "hourly on the hour" msgstr "" #: admin/schedule-sentence.php:18 msgid "hourly at %s minutes past the hour" msgstr "" #: admin/schedule-sentence.php:24 msgid "daily at %s" msgstr "" #: admin/schedule-sentence.php:35 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: admin/schedule-sentence.php:41 msgid "weekly on %1$s at %2$s" msgstr "" #: admin/schedule-sentence.php:47 msgid "biweekly on %1$s at %2$s" msgstr "fortnightly on %1$s at %2$s" #: admin/schedule-sentence.php:53 msgid "on the %1$s of each month at %2$s" msgstr "" #: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65 msgid "manually" msgstr "" #: admin/schedule-sentence.php:70 msgid "this server" msgstr "" #: admin/schedule-sentence.php:78 msgid "store the most recent backup in %s" msgstr "" #: admin/schedule-sentence.php:84 msgid "don't store any backups in on this server" msgstr "" #: admin/schedule-sentence.php:90 msgid "store the last %1$s backups in %2$s" msgstr "" #: admin/schedule-sentence.php:123 msgid "%s. " msgstr "" #: admin/schedule-sentence.php:127 msgid "Send a copy of each backup to %s." msgstr "" #: admin/schedule-sentence.php:158 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: admin/schedule-sentence.php:162 msgid "this shouldn't take long…" msgstr "" #: admin/schedule-sentence.php:162 msgid "calculating the size of your backup…" msgstr "" #: admin/schedule-settings.php:7 msgid "Run now" msgstr "" #: admin/schedule-settings.php:15 msgid "Excludes" msgstr "" #: admin/schedule-settings.php:27 functions/interface.php:34 msgid "Delete" msgstr "" #: admin/server-info.php:43 msgid "%1$s - %2$s" msgstr "" #: admin/upsell.php:3 msgid "Backup to" msgstr "" #: admin/upsell.php:18 msgid "" "%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all " "Destinations & Unlimited Sites)%4$s" msgstr "" #: backupwordpress.php:53 msgid "" "BackUpWordPress will not work on this site. ( PHP Version %s is unsupported )" msgstr "" #: backupwordpress.php:53 msgid "BackUpWordPress Error" msgstr "" #: classes/class-backup.php:388 msgid "archive filename must be a non empty string" msgstr "" #: classes/class-backup.php:392 msgid "invalid file extension for archive filename %s" msgstr "" #: classes/class-backup.php:433 msgid "database dump filename must be a non empty string" msgstr "" #: classes/class-backup.php:437 msgid "invalid file extension for database dump filename %s" msgstr "" #: classes/class-backup.php:471 msgid "Invalid root path %s must be a valid directory path" msgstr "" #: classes/class-backup.php:497 msgid "" "Invalid existing archive filepath %s must be a non empty " "(string)" msgstr "" #: classes/class-backup.php:552 msgid "" "Invalid backup type %s must be one of (string) file, database " "or complete" msgstr "" #: classes/class-backup.php:1926 msgid "Could not connect to mysql" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:50 msgid "Backup: Dumping database..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:54 msgid "Backup: Zipping everything up..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:70 msgid "Invalid backup path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:75 msgid "Invalid root path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:106 msgid "Backup Complete: " msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:108 msgid "Backup Failed" msgstr "" #: classes/class-email-service.php:28 msgid "Email notification" msgstr "" #: classes/class-email-service.php:34 msgid "" "Receive a notification email when a backup completes, if the backup is small " "enough (< %s) then it will be attached to the email. Separate multiple " "email addresses with a comma." msgstr "" #: classes/class-email-service.php:63 msgid "" "The maximum filesize of your backup that will be attached to your " "notification emails . Defaults to %s." msgstr "" #: classes/class-email-service.php:82 msgid "Send an email notification to %s" msgstr "" #: classes/class-email-service.php:117 msgid "%s isn't a valid email" msgstr "" #: classes/class-email-service.php:179 classes/class-webhook-service.php:59 msgid "Backup of %s Failed" msgstr "" #: classes/class-email-service.php:181 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: classes/class-email-service.php:181 msgid "Here are the errors that we're encountered:" msgstr "" #: classes/class-email-service.php:181 msgid "" "If the errors above look like Martian, forward this email to %3$s and we'll " "take a look" msgstr "" #: classes/class-email-service.php:181 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:189 msgid "Backup of %s" msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: classes/class-email-service.php:194 msgid "The backup file should be attached to this email." msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "You can download the backup file by clicking the link below:" msgstr "" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:203 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: classes/class-path.php:249 msgid "" "This %s file ensures that other people cannot download your backup files." msgstr "" #: classes/class-plugin.php:214 msgid "Update" msgstr "" #: classes/class-plugin.php:215 msgid "Cancel" msgstr "" #: classes/class-plugin.php:216 msgid "" "Are you sure you want to delete this schedule? All of it's backups will also " "be deleted." msgstr "" #: classes/class-plugin.php:216 classes/class-plugin.php:217 #: classes/class-plugin.php:218 classes/class-plugin.php:219 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: classes/class-plugin.php:217 msgid "Are you sure you want to delete this backup?" msgstr "" #: classes/class-plugin.php:218 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: classes/class-plugin.php:219 msgid "" "Reducing the number of backups that are stored on this server will cause " "some of your existing backups to be deleted, are you sure that's what you " "want?" msgstr "" #: classes/class-schedule.php:151 msgid "Invalid Option Name" msgstr "" #: classes/class-schedule.php:264 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: classes/class-schedule.php:612 msgid "Argument 1 for %s must be a valid future timestamp" msgstr "" #: classes/class-schedule.php:649 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: classes/class-schedule.php:778 functions/interface.php:267 msgid "Starting Backup" msgstr "" #: classes/class-schedule.php:865 msgid "Error writing to file. (%s)" msgstr "" #: classes/class-schedule.php:916 msgid "Dumping Database %s" msgstr "" #: classes/class-schedule.php:921 msgid "Verifying Database Dump %s" msgstr "" #: classes/class-schedule.php:926 msgid "Creating zip archive %s" msgstr "" #: classes/class-schedule.php:931 msgid "Verifying Zip Archive %s" msgstr "" #: classes/class-schedule.php:936 msgid "Finishing Backup" msgstr "" #: classes/class-schedule.php:987 msgid "An unexpected error occured" msgstr "" #. translators: min=minute #: classes/class-schedule.php:1050 msgid "%s min" msgid_plural "%s mins" msgstr[0] "" msgstr[1] "" #: classes/class-schedule.php:1060 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "" msgstr[1] "" #: classes/class-schedule.php:1122 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: classes/class-schedule.php:1127 msgid "%s doesn't exist" msgstr "" #: classes/class-schedule.php:1132 msgid "That backup wasn't created by this schedule" msgstr "" #: classes/class-services.php:80 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: classes/class-services.php:96 msgid "Argument 1 for %s must be a registered service" msgstr "" #: classes/class-services.php:114 classes/deprecated.php:81 msgid "Argument 1 for %s must be a valid class" msgstr "" #: classes/class-setup.php:34 msgid "BackUpWordPress" msgstr "" #: classes/class-setup.php:170 msgid "" "BackUpWordPress requires PHP version %1$s or later and WordPress version " "%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s" msgstr "" #: classes/class-webhook-service.php:103 msgid "Error: %s" msgstr "" #: functions/core.php:326 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: functions/core.php:326 msgid "" "By default BackUpWordPress performs a daily backup of your database and a " "weekly backup of your database & files. You can modify these schedules." msgstr "" #: functions/core.php:341 msgid "Once Hourly" msgstr "" #: functions/core.php:342 msgid "Twice Daily" msgstr "" #: functions/core.php:343 msgid "Once Daily" msgstr "" #: functions/core.php:344 msgid "Once Weekly" msgstr "" #: functions/core.php:345 msgid "Once Biweekly" msgstr "Once Fortnightly" #: functions/core.php:346 msgid "Once Monthly" msgstr "" #: functions/core.php:364 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: functions/interface.php:31 msgid "Download" msgstr "" #: functions/interface.php:68 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: functions/interface.php:70 msgid "Dismiss" msgstr "" #: functions/interface.php:136 msgid "" "The backups directory can't be created because your %1$s directory isn't " "writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: functions/interface.php:140 msgid "" "Your backups directory isn't writable, run %1$s or %2$s or set the " "permissions yourself." msgstr "" #: functions/interface.php:144 msgid "" "%1$s is running in %2$s, please contact your host and ask them to disable " "it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: functions/interface.php:144 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: functions/interface.php:144 msgid "Safe Mode" msgstr "" #: functions/interface.php:152 msgid "Your custom path does not exist" msgstr "" #: functions/interface.php:156 msgid "" "Your custom path is unreachable due to a restriction set in your PHP " "configuration (open_basedir)" msgstr "" #: functions/interface.php:161 msgid "" "Your custom backups directory %1$s doesn't exist and can't be created, your " "backups will be saved to %2$s instead." msgstr "" #: functions/interface.php:165 msgid "" "Your custom backups directory %1$s isn't writable, new backups will be saved " "to %2$s instead." msgstr "" #: functions/interface.php:174 msgid "Your site root path %s isn't readable." msgstr "" #: functions/interface.php:236 msgid "Database and Files" msgstr "" #: functions/interface.php:240 msgid "Files" msgstr "" #: functions/interface.php:244 msgid "Database" msgstr "" #: functions/interface.php:251 msgid "Legacy" msgstr "" #: functions/interface.php:266 msgid "Started %s ago" msgstr "" #: functions/interface.php:268 msgid "cancel" msgstr "" #: functions/interface.php:316 msgid "No backups completed" msgstr "" #: functions/interface.php:327 msgid "Complete Hourly" msgstr "" #: functions/interface.php:328 msgid "File Hourly" msgstr "" #: functions/interface.php:329 msgid "Database Hourly" msgstr "" #: functions/interface.php:330 msgid "Complete Twicedaily" msgstr "" #: functions/interface.php:331 msgid "File Twicedaily" msgstr "" #: functions/interface.php:332 msgid "Database Twicedaily" msgstr "" #: functions/interface.php:333 msgid "Complete Daily" msgstr "" #: functions/interface.php:334 msgid "File Daily" msgstr "" #: functions/interface.php:335 msgid "Database Daily" msgstr "" #: functions/interface.php:336 msgid "Complete Weekly" msgstr "" #: functions/interface.php:337 msgid "File Weekly" msgstr "" #: functions/interface.php:338 msgid "Database Weekly" msgstr "" #: functions/interface.php:339 msgid "Complete Biweekly" msgstr "Complete Fortnightly" #: functions/interface.php:340 msgid "File Biweekly" msgstr "File Fortnightly" #: functions/interface.php:341 msgid "Database Biweekly" msgstr "Database Fortnightly" #: functions/interface.php:342 msgid "Complete Monthly" msgstr "" #: functions/interface.php:343 msgid "File Monthly" msgstr "" #: functions/interface.php:344 msgid "Database Monthly" msgstr "" #: functions/interface.php:345 msgid "Complete Manually" msgstr "" #: functions/interface.php:346 msgid "File Manually" msgstr "" #: functions/interface.php:347 msgid "Database Manually" msgstr "" #. Plugin Name of the plugin/theme msgid "BackUpWordPress Backup Plugin" msgstr "" #. Plugin URI of the plugin/theme msgid "http://bwp.hmn.md/" msgstr "" #. Description of the plugin/theme msgid "" "Simple automated backups of your WordPress powered website. Once activated " "you'll find me under Tools → Backups. On multisite, " "you'll find me under the Network Settings menu." msgstr "" #. Author of the plugin/theme msgid "XIBO Ltd" msgstr "" #. Author URI of the plugin/theme msgid "http://hmn.md/" msgstr "" #: admin/schedule-sentence.php:120 msgctxt "" "1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to " "store" msgid "Backup my %1$s %2$s %3$s, %4$s." msgstr "" #: functions/interface.php:318 msgctxt "backups count" msgid "One backup completed" msgid_plural "%1$s backups completed" msgstr[0] "" msgstr[1] "" ================================================ FILE: languages/backupwordpress-es_ES.po ================================================ # Translation of 2.x in Spanish (Spain) # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: es_ES\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "Puedes enviar los detalles del error a %s para que sea investigado." #: ../functions/core.php:246 msgid "Once Hourly" msgstr "Cada hora" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "Dos veces al día" #: ../functions/core.php:248 msgid "Once Daily" msgstr "A diario" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "Una vez al día" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "Cada quince días" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "Cada mes" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Contacta con soporte" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nueva regla de exclusión" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Esta es la respuesta del servidor" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Si necesitas ayuda haz clic en la ayuda de la esquina superior derecha de esta página." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Backup comenzando" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Guardando la base de datos %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Verificando la base de datos %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Creando archivo comprimido %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Verificando archivo comprimido %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Finalizando copia de seguridad" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress podría no funcionar cuando php está funcionando con %s" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s está funcionando en %2$s. Por favor contacta con tu alojador para que lo deshabilite. BackUpWordPress podría no funcionar correctamente mienstra %3$s esté encendido." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Hora a la que debe programarse. Por defecto %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "¿Estás seguro de que deseas eliminar esta programación? Todos sus copias de seguridad serán también eliminados." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "Cancela para volver atrás, OK para borrar." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "¿Estás seguro de que quieres eliminar esta copia de seguridad?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "¿Estás seguro de que quieres eliminar esta regla?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Reduciendo el número de copias de seguridad disponibles en el servidor causará que algunas de las copias de seguridad sean eliminadas. ¿Estás seguro de que quieres continuar?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Máximas copias de seguridad no puede estar vacío" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Máximas copias de seguridad debe ser mayor de 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Excluír" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "defecto" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "definido" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Sólo manual" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "esto no debería llevar mucho …" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "calculando el tamaño de tu sitio web…" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "La próxima copia de seguridad será el %1$s a las %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "cada 12 horas a %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "semanalmente los %1$s a las %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "quincenalmente los %1$s a las %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "el %1$s de cada mes a las %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manualmente" #: ../admin/schedule.php:71 msgid "this server" msgstr "este servidor" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "no almacenar ninguna copia de seguridad en %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "almacenar sólo la/las última/s %1$s copia de seguridad en %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress no ha podido hacer una copia de seguridad de tu sitio %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Estos son los errores encontrados:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Si los errores indicados te suenan a chino, reenvía este email a %3$s y le echaremos un vistazo" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Saludos,\n" "El robot de BackUpWordPress" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress ha completado una copia de seguridad de tu sitio %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "El archivo debería estar adjunto a este email." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Puedes descargar el archivo haciendo clic en el enlace inferior:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Saludos,\n" "El robot de BackUpWordPress" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Desgraciadamente el archivo de copia de seguridad es demasiado grande para adjuntarlo a este email." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Copia de seguridad: Comprimiendo ..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Ruta de copia de seguridad no válida" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Ruta de raíz no válida" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Copia de seguridad completada:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "La copia de seguridad ha fallado" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Por defecto BackUpWordPress realiza automáticamente una copia de seguridad de la base de datos diaria y semanal. Puedes modificar la configuración." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Heredado" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "El directorio de copias de seguridad no se puede escribir. Ejecuta %1$s o %2$s o establece los permisos." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "El directorio de copias de seguridad no se puede crear porque el directorio %1$s no se puede escribir. Ejecuta %1$s o %2$s o establece los permisos." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress ha configurado tus ajustes por defecto." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "La copia de seguridad de %s ha fallado" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Enviar un email de notificación a %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s no es un email válido" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Las copias de seguridad serán comprimidas y deberían ser más pequeñas que esto." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Notificación de email" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "diariamente a las %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Número de copias de seguridad a almacenar en el servidor" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Configuración de frecuencia de copias de seguridad" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Cerrar" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "La información indicadaes para la versión %1$s. Visita el archivo %2$s para ayuda específica sobre la versión %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Directorio raíz. Por defecto %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Capacidad que se usa al llamar %1$s. Valor predeterminado es %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "La ruta hacia tu %1$s ejecutable. Se utilizará para hacer el archivo comprimido zip de tu %2$s y %3$s si está disponible." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress necesita versión de WordPress %s o superior." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Cancelar" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "La ruta hacia tu %1$s ejecutable. Se utilizará para la parte %2$s de la copia de seguridad si está disponible." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "ej." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Puedes %1$s cualquiera de los %2$s en tu %3$s para controlar opciones avanzadas. %4$s. %5$s establecidas verán destacadas." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s estaá devolviendo una respuesta %2$s lo que podría significar que procesos Cron no se están ejecutado correctamente. BackUpWordPress no puede funcionar sin que wp-cron haga copias de seguridad en un proceso aparte. Consulta %3$s para más información." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://www.php.net/manual/es/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Modo seguro" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Tu directorio personalizado de copias de seguridad %1$s no existe y no puede ser creado. En su lugar, las copias de seguridad se guardarán en %2$s." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Tu directorio personalizado de copias de seguridad %1$s no se puede escribir. En su lugar, las copias de seguridad se guardarán en %2$s." #: ../functions/interface.php:261 msgid "cancel" msgstr "cancelar" #: ../functions/interface.php:265 msgid "Settings" msgstr "Configuración" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Exclusiones" #: ../functions/interface.php:29 msgid "Download" msgstr "Descargar" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress está casi listo." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress ha detectado problemas con tu última copia de seguridad." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Base de datos y archivos" #: ../functions/interface.php:240 msgid "Database" msgstr "Base de datos" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress ha detectado un problema." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Tipo de copia de seguridad no puede estar vacío" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Tipo de copia de seguridad no válido" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Debe indicar una programación" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Programación no válida" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Máximas copias de seguridad debe ser un número" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s no ah encontrado coincidencias." #: ../admin/backups.php:40 msgid "add schedule" msgstr "añadir programa" #: ../admin/backups.php:71 msgid "Size" msgstr "Tamaño" #: ../admin/backups.php:72 msgid "Type" msgstr "Tipo" #: ../admin/backups.php:73 msgid "Actions" msgstr "Acciones" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "El Codex puede ayudar" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Ruta a la carpeta en la que te gustaría almacenar tus copias de seguridad. Por defecto %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "base de datos" #: ../admin/constants.php:14 msgid "files" msgstr "archivos" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Lista de archivos o directorios a excluir en las copias de seguridad, separados por comas." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Gestionar copias de seguridad" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Copias de seguridad" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "No estás usando la última versión estable de BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "Preguntas frecuentes (FAQ)" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Constantes" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Para más información:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Foros de soporte" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Ayuda en la traducción" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Necesitas arreglar los problemas detallados antes de poder comenzar BackUpWordPress." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Previsualizar" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Reglas de exclusión" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Eliminar" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Excluído" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Incluído" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "No legible" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "No se puede hacer copia de seguridad de los archivos no legibles" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Tu sitio es %s. Las copias de seguridad se comprimirán y por tanto serán más pequeñas." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Copia de seguridad" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Base de datos y archivos" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Archivos sólo" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Base de datos sólo" #: ../functions/interface.php:237 msgid "Files" msgstr "Archivos" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Gestiona las exclusiones" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Programa" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Actualizar" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "cada hora, %s minutos después de las horas en punto" #: ../functions/interface.php:275 msgid "Run now" msgstr "Ejecutar ahora" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Eliminar" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Copia de seguridad de %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "El archivo de seguridad %s evita que otros puedan descargar tus copias de seguridad." ================================================ FILE: languages/backupwordpress-eu.po ================================================ # Translation of 2.x in Basque # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: eu\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-fr_FR.po ================================================ # Translation of 3.x in French (France) # This file is distributed under the same license as the 3.x package. msgid "" msgstr "" "Project-Id-Version: 3.x\n" "Report-Msgid-Bugs-To: support@xibodevelopment.com\n" "POT-Creation-Date: 2015-02-24 08:44:19+00:00\n" "PO-Revision-Date: 2015-07-18 15:53+0100\n" "Last-Translator: XIBO Ltd \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Poedit 1.8.2\n" "Language: fr_FR\n" #: admin/actions.php:215 msgid "The schedule ID was not provided. Aborting." msgstr "L'identifiant d'horaire non fourni. Execution interrompue." #: admin/actions.php:265 msgid "Backup type cannot be empty" msgstr "Le type de sauvegarde doit être indiqué" #: admin/actions.php:269 msgid "Invalid backup type" msgstr "Type de sauvegarde inexistant" #: admin/actions.php:283 msgid "Schedule cannot be empty" msgstr "La planification doit être indiquée" #: admin/actions.php:287 msgid "Invalid schedule" msgstr "Horaire incorrect" #: admin/actions.php:301 msgid "Day of the week must be a valid lowercase day name" msgstr "Le jour de la semain doit être un nom de jour existant en minuscules" #: admin/actions.php:320 msgid "Day of month must be between 1 and 31" msgstr "La valeur pour jour du mois doit être un nombre entre 1 et 31" #: admin/actions.php:339 msgid "Hours must be between 0 and 23" msgstr "La valeur pour les heures doit être entre 0 et 23" #: admin/actions.php:358 msgid "Minutes must be between 0 and 59" msgstr "Doit être un nombre entre 0 et 59" #: admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Le nombre maximum de sauvegarde doit être indiqué" #: admin/actions.php:376 msgid "Max backups must be a number" msgstr "Le nombre maximum de sauvegardes doit être un nombre" #: admin/actions.php:380 msgid "Max backups must be greater than 0" msgstr "Le nombre maximum de sauvegardes doit être supérieur à 0" #: admin/actions.php:732 admin/actions.php:738 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress a détecté un problème." #: admin/actions.php:732 admin/actions.php:738 msgid "" "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired " "properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for " "more details." msgstr "" "%1$s retourne une réponse %2$s ce qui signifie que les tâches cron ne sont pas lancées " "correctement. BackUpWordPress dépend du bon fonctionnement de wp-cron pour lancer les " "sauvegardes programmées. Voir %3$s pour plus de détails." #: admin/backups-table.php:8 admin/schedule-form-excludes.php:98 msgid "Size" msgstr "Taille" #: admin/backups-table.php:9 admin/schedule-form-excludes.php:100 msgid "Type" msgstr "Type" #: admin/backups-table.php:10 msgid "Actions" msgstr "Actions" #: admin/backups-table.php:35 msgid "This is where your backups will appear once you have some." msgstr "Vos sauvegardes seront disponibles ici" #: admin/backups.php:22 msgid "add schedule" msgstr "ajouter un horaire" #: admin/backups.php:26 msgid "Support" msgstr "Support" #: admin/backups.php:32 msgid "Enable Support" msgstr "Activer le support" #: admin/constants.php:3 msgid "" "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. " "Defined %5$s will be highlighted." msgstr "" "Vous pouvez %1$s chacun des prochains %2$s dans votre %3$s pour régler les paramètres " "avancés. %4$s. %5$s défini sera souligné." #: admin/constants.php:3 admin/menu.php:69 msgid "Constants" msgstr "Constantes" #: admin/constants.php:3 msgid "The Codex can help" msgstr "Le Codex peut aider" #: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46 #: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94 #: admin/constants.php:110 classes/class-email-service.php:60 msgid "You've set it to: %s" msgstr "Vous l'avez défini comme suit: %s" #: admin/constants.php:17 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Le chemin du dossier de sauvegarde. Par défaut : %s." #: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49 #: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97 #: admin/constants.php:113 classes/class-email-service.php:63 msgid "e.g." msgstr "par exemple" #: admin/constants.php:33 msgid "" "The path to your %1$s executable. Will be used for the %2$s part of the back up if " "available." msgstr "" "Le chemin de l'exécutable %1$s. Il sera utilisé pour la partie %2$s de la sauvegarde, " "s'il est présent." #: admin/constants.php:33 admin/constants.php:49 msgid "database" msgstr "base de données" #: admin/constants.php:49 msgid "" "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" "Le chemin vers l'exécutable %1$s. Il sera utilisé pour compresser %2$s et %3$s s'il est " "présent." #: admin/constants.php:49 msgid "files" msgstr "fichiers" #: admin/constants.php:65 msgid "" "Comma separated list of files or directories to exclude, the backups directory is " "automatically excluded." msgstr "" "Liste, séparée par des virgules, des dossiers à exclure. Le dossier de sauvegarde est " "automatiquement exclu." #: admin/constants.php:81 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "La capacité à utiliser quand %1$s est appelé. Par défaut : %2$s." #: admin/constants.php:97 msgid "The root directory that is backed up. Defaults to %s." msgstr "Le répertoire racine à sauvegarder. Par défaut : %s." #: admin/constants.php:113 msgid "The time that your schedules should run. Defaults to %s." msgstr "L'heure à laquelle vos sauvegardes seront effectuées. Par défaut : %s." #: admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "Activer le support " #: admin/enable-support.php:5 msgid "" "BackUpWordPress uses %s to provide support. In addition to allowing you to send and " "receive messages we also send the following server information along with your requests:" msgstr "" "BqckUpWordPress utilise %s pour fournir du support technique. En plus de vous permettre " "d'envoyer et recevoir des messages, de l'information concernant la configuration du " "serveur est également jointe." #: admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "Vous pouvez désactiver le support tecnique en désactivant BackUpWordPress." #: admin/enable-support.php:60 msgid "No thanks" msgstr "Non merci" #: admin/enable-support.php:61 msgid "Yes I want to enable support" msgstr "Oui, je veux activer le support technique" #: admin/faq.php:2 msgid "Where does BackUpWordPress store the backup files?" msgstr "Où sont stockées les sauvegardes ?" #: admin/faq.php:4 msgid "" "Backups are stored on your server in /wp-content/backups, you can change the " "directory." msgstr "" "Les sauvegardes sont stockées sur votre serveur sous /wp-content/backups, " "vous pouvez changer ce répertoire." #: admin/faq.php:6 msgid "" "Important: By default BackUpWordPress backs up everything in your site root as well as " "your database, this includes any non WordPress folders that happen to be in your site " "root. This does mean that your backup directory can get quite large." msgstr "" "Important: Par défault, BackUpWordPress sauvegarde tout ce que contient la racine de " "votre site ainsi que votre base de données, y compris d'éventuels répertoires externes à " "WordPress. Ceci peut causer des archives de taille conséquente." #: admin/faq.php:8 msgid "What if I want to back up my site to another destination?" msgstr "Et si je désire stocker mes sauvegardes ailleurs que sur l'hébergement ?" #: admin/faq.php:10 msgid "" "BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, Azure, " "DreamObjects and FTP/SFTP. Check it out here: https://bwp.hmn.md" msgstr "" "BackUpWordPress Pro est compatible avec Dropbox, Google Drive, Amazon S3, Rackspace, " "Azure, DreamObjects and FTP/SFTP. Plus d'infos: https://bwp.hmn.md" #: admin/faq.php:12 msgid "How do I restore my site from a backup?" msgstr "Comment restaurer mon site à partir d'une sauvegarde ?" #: admin/faq.php:14 msgid "" "You need to download the latest backup file either by clicking download on the backups " "page or via FTP. Unzip the files and upload all the files to " "your server overwriting your site. You can then import the database using your hosts " "database management tool (likely phpMyAdmin)." msgstr "" "Vous devez télécharger l'archive la plus récente soit en cliquant télécharger à partir de " "la page des sauvegardes ou via FTP. Extraire les fichiers et " "les transférer sur votre serveur en remplaçant les fichiers existants. Vous pouvez alors " "importer la base de données en utilisant votre outil de gestion de base de données. " "Probablement phpMyAdmin" #: admin/faq.php:16 msgid "" "See this guide for more details - How to restore from backup." msgstr "" "Voir ce guide pour plus de détails - Comment restaurer à partir " "d'une sauvegarde." #: admin/faq.php:18 msgid "Does BackUpWordPress back up the backups directory?" msgstr "Est-ce que BackUpWordPress sauvegarde le répertoire de sauvegardes ?" #: admin/faq.php:20 msgid "No." msgstr "Non" #: admin/faq.php:22 msgid "I'm not receiving my backups by email?" msgstr "Je ne reçois pas mes sauvegardes par email ?" #: admin/faq.php:24 msgid "" "Most servers have a filesize limit on email attachments, it's generally about 10mb. If " "your backup file is over that limit it won't be sent attached to the email, instead you " "should receive an email with a link to download the backup, if you aren't even receiving " "that then you likely have a mail issue on your server that you'll need to contact your " "host about." msgstr "" "La plupart des serveurs limitent la taille des pièces jointes aux emails, environ 10Mb en " "moyenne. Si votre archive est au delà de cette limite, elle ne sera pas jointe à l'email. " "Vous recevrez un email avec un lien pour télécharger le fichier. Si vous ne recevez aucun " "email, vous devrez probablement contacter votre hébergeur " #: admin/faq.php:26 msgid "How many backups are stored by default?" msgstr "Combien de sauvegardes sont stockées par défaut ?" #: admin/faq.php:28 msgid "BackUpWordPress stores the last 10 backups by default." msgstr "BackUpWordPress stocke les 10 sauvegardes les plus récentes par défaut." #: admin/faq.php:30 msgid "How long should a backup take?" msgstr "Combien de temps en moyenne prend une sauvegarde ?" #: admin/faq.php:32 msgid "" "Unless your site is very large (many gigabytes) it should only take a few minutes to " "perform a back up, if your back up has been running for longer than an hour it's safe to " "assume that something has gone wrong, try de-activating and re-activating the plugin, if " "it keeps happening, contact support." msgstr "" "A mois que la taille totale de votre site soit très grande, celq ne devrait prendre que " "quelques minutes pour effectuer une sauvegarde, si celle-ci n'est toujours pas terminée " "après une heure, vous pouvez être certain qu'un problème s'est produit. Essayez de " "désactiver puis de réactiver le plugin." #: admin/faq.php:34 msgid "What do I do if I get the wp-cron error message?" msgstr "Que dois-je faire si je reçois un message d'erreur pour wp-cron ?" #: admin/faq.php:36 msgid "" "The issue is that your wp-cron.php is not returning a 200 " "response when hit with a HTTP request originating from your own server, it could be " "several things, in most cases, it's an issue with the server / site." msgstr "" "Le problème est que le fichier wp-cron.php ne renvoie pas un code 200 lorsqu'il reçoit une requête HTTP à pqrtir de votre propre serveur. Plusieurs " "raisons peuvent causer ce problème. La plupart du temps, c'est la faute du serveur / site." #: admin/faq.php:38 msgid "There are some things you can test to confirm this is the issue." msgstr "Il y a certaines choses que vous pouvez faire pour confirmer le problème." #: admin/faq.php:40 msgid "Are scheduled posts working? (They use wp-cron as well ). " msgstr "Est-ce que la publication programmée fonctionne ?" #: admin/faq.php:42 msgid "" "Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see " "below for work-around)." msgstr "Est-ce que votre site est hébergé par Heart Internet ?" #: admin/faq.php:44 msgid "If you click manual backup does it work?" msgstr "Est-ce que la sauvegarde manuelle fonctionne ?" #: admin/faq.php:46 msgid "" "Try adding define( 'ALTERNATE_WP_CRON', true ); to your wp-config.php, do automatic backups work?" msgstr "" "Essayez d'ajouter define( 'ALTERNATE_WP_CRON', true ); à votre fichier " "wp-config.php, est-ce que les sauvegardes automatiques fonctionnent ?" #: admin/faq.php:48 msgid "" "Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, ." "htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily " "remove the authentication, do backups start working?" msgstr "" "Est-ce que votre site est privé ? ( protégé par une forme d'identification, un plugin de " "maintenance, ou .htaccess). Si oui, wp-cron ne fonctionnera pas tant que vous n'aurez pas " "désactivé la restriction. Vérifiez si la désactivation de la restriction solutionne le " "problème." #: admin/faq.php:50 msgid "" "Report the results to our support team for further help. To do this, either enable suport " "from your Admin Dashboard (recommended), or email support@xibodevelopment.com" msgstr "" "Envoyer un rapport des résultats à notre équipe de support technique pour obtenir de " "l'aide. Pour ce faire, activez le support via l'admin (recommandé) ou envoyez un courriel " "à support@xibodevelopment.com" #: admin/faq.php:52 msgid "How to get BackUpWordPress working in Heart Internet" msgstr "Instructions spécifiques pour l'hébergeur Heart Internet." #: admin/faq.php:54 msgid "" "The script to be entered into the Heart Internet cPanel is: /usr/bin/php5 /home/" "sites/yourdomain.com/public_html/wp-cron.php (note the space between php5 and the " "location of the file). The file wp-cron.php chmod must be set " "to 711." msgstr "" "Le script à ajouter au cPanel de Heart Internet est le suivant: /usr/bin/php5 /home/" "sites/yourdomain.com/public_html/wp-cron.php ( espace entre php5 et le chemin ). " "Les permissions chmod du fichier wp-cron.php doit être " "711." #: admin/faq.php:56 msgid "My backups seem to be failing?" msgstr "Mes sauvegardes échouent !" #: admin/faq.php:58 msgid "" "If your backups are failing - it's commonly caused by lack of available resources on your " "server. The easiest way to establish this to exclude some [of] or your entire uploades " "folder, running a backup an if that succeeds. If so, we know it's probably a server " "issue. If not, report the results to our support team for further help. To do this, " "either enable suport from your Admin Dashboard (recommended), or email " "support@xibodevelopment.com" msgstr "" "Si vos sauvegardes échouent, la cause la plus commune est un manque de ressources du " "serveur. Afin de vérifier si cela en est réellement la cause, excluez votre répertoire wp-" "uploads et démarrez une sauvegarde. Si la sauvegarde réussit, alors c'est très " "probablement une question de ressources insuffisantes. Sinon, envoyez les résultats à " "notre support technique qui pourra vous aider. Pour ce faire, activez le support sur la " "page de configuration du plugin, ou envoyez un courriel à support@xibodevelopment.com" #: admin/menu.php:12 admin/menu.php:14 msgid "Manage Backups" msgstr "Gérer les sauvegardes" #: admin/menu.php:12 admin/menu.php:14 admin/menu.php:39 msgid "Backups" msgstr "Sauvegardes" #: admin/menu.php:67 msgid "FAQ" msgstr "FAQ" #: admin/menu.php:79 msgid "Server Info" msgstr "Info serveur" #: admin/menu.php:86 msgid "For more information:" msgstr "Pour de plus amples informations:" #: admin/menu.php:88 msgid "Support Forums" msgstr "Forums de support" #: admin/menu.php:89 msgid "Help with translation" msgstr "Aider à la traduction" #: admin/page.php:7 msgid "" "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory%2$s." msgstr "" "Si vous aimez BackUpWordPress, n'hésitez pas à %1$slaisser une évaluation positive sur " "WordPress.org%2$s." #: admin/schedule-form-excludes.php:5 msgid "Currently Excluded" msgstr "Exclusions actives" #: admin/schedule-form-excludes.php:40 msgid "Default rule" msgstr "Règle par défaut" #: admin/schedule-form-excludes.php:44 msgid "Defined in wp-config.php" msgstr "Défini dans le fichier wp-config.php" #: admin/schedule-form-excludes.php:48 msgid "Stop excluding" msgstr "Ne plus exclure" #: admin/schedule-form-excludes.php:64 msgid "Directory Listing" msgstr "Contenu du répertoire" #: admin/schedule-form-excludes.php:66 msgid "" "Here's a directory listing of all files on your site, you can browse through and exclude " "files or folders that you don't want included in your backup." msgstr "" "Voici l'arborescence de tous les fichiers de votre site, vous pouvez naviguer et exclure " "les fichiers et répertoire que vous ne voulez pas sauvegardez." #: admin/schedule-form-excludes.php:97 msgid "Name" msgstr "Nom" #: admin/schedule-form-excludes.php:99 msgid "Permissions" msgstr "Permissions" #: admin/schedule-form-excludes.php:101 msgid "Status" msgstr "Statut" #: admin/schedule-form-excludes.php:158 admin/schedule-form-excludes.php:269 msgid "Refresh" msgstr "Rafraîchir" #: admin/schedule-form-excludes.php:175 admin/schedule-form-excludes.php:293 msgid "Symlink" msgstr "Alias" #: admin/schedule-form-excludes.php:179 admin/schedule-form-excludes.php:297 msgid "Folder" msgstr "Répertoire" #: admin/schedule-form-excludes.php:269 msgid "Recalculate the size of this directory" msgstr "Recalculer la taille de ce répertoire" #: admin/schedule-form-excludes.php:301 msgid "File" msgstr "Fichier" #: admin/schedule-form-excludes.php:311 msgid "Unreadable files won't be backed up." msgstr "Les fichiers illisibles ne seront pas sauvegardés." #: admin/schedule-form-excludes.php:311 msgid "Unreadable" msgstr "Illisible" #: admin/schedule-form-excludes.php:315 msgid "Excluded" msgstr "Exclus" #: admin/schedule-form-excludes.php:326 msgid "Exclude →" msgstr "Exclure →" #: admin/schedule-form-excludes.php:345 admin/schedule-form.php:190 #: admin/schedule-settings.php:88 msgid "Done" msgstr "Terminé" #: admin/schedule-form.php:1 admin/schedule-settings.php:9 msgid "Settings" msgstr "Paramètres" #: admin/schedule-form.php:36 msgid "Backup" msgstr "Sauvegarde" #: admin/schedule-form.php:43 msgid "Both Database & files" msgstr "BDD et fichiers" #: admin/schedule-form.php:45 msgid "Files only" msgstr "Fichiers seulement" #: admin/schedule-form.php:47 msgid "Database only" msgstr "BDD seulement" #: admin/schedule-form.php:58 msgid "Schedule" msgstr "Horaire" #: admin/schedule-form.php:65 msgid "Manual Only" msgstr "Manuel seulement" #: admin/schedule-form.php:90 msgid "Start Day" msgstr "Premier jour" #: admin/schedule-form.php:98 msgid "Monday" msgstr "Lundi" #: admin/schedule-form.php:99 msgid "Tuesday" msgstr "Mardi" #: admin/schedule-form.php:100 msgid "Wednesday" msgstr "Mercredi" #: admin/schedule-form.php:101 msgid "Thursday" msgstr "Jeudi" #: admin/schedule-form.php:102 msgid "Friday" msgstr "Vendredi" #: admin/schedule-form.php:103 msgid "Saturday" msgstr "Samedi" #: admin/schedule-form.php:104 msgid "Sunday" msgstr "Dimanche" #: admin/schedule-form.php:122 msgid "Start Day of Month" msgstr "Premier jour du mois" #: admin/schedule-form.php:134 msgid "Start Time" msgstr "Heure de début" #: admin/schedule-form.php:143 msgid "Hours" msgstr "Heures" #: admin/schedule-form.php:147 msgid "Minutes" msgstr "Minutes" #: admin/schedule-form.php:151 msgid "The second backup will run 12 hours after the first" msgstr "La seconde sauvegarde commencera 12 heures plus tard" #: admin/schedule-form.php:160 msgid "Number of backups to store on this server" msgstr "Nombre de sauvegarde à conserver sur ce serveur " #: admin/schedule-form.php:169 msgid "Past this limit older backups will be deleted automatically." msgstr "" "Passé cette limite, les sauvegardes plus anciennes seront automatiquement supprimées." #: admin/schedule-form.php:172 msgid "This schedule will store a maximum of %s of backups." msgstr "Un maximum de %s sauvegardes seront stockées pour cet horaire." #: admin/schedule-sentence.php:11 msgid "The next backup will be on %1$s at %2$s %3$s" msgstr "La prochaine sauvegarde est programmée pour: %1$s à %2$s %3$s" #: admin/schedule-sentence.php:18 msgid "hourly on the hour" msgstr "toutes les heures" #: admin/schedule-sentence.php:18 msgid "hourly at %s minutes past the hour" msgstr "toutes les heures, %s minutes après l'heure pile" #: admin/schedule-sentence.php:24 msgid "daily at %s" msgstr "chaque jour à %s" #: admin/schedule-sentence.php:35 msgid "every 12 hours at %1$s & %2$s" msgstr "toutes les 12 heures à %1$s & %2$s" #: admin/schedule-sentence.php:41 msgid "weekly on %1$s at %2$s" msgstr "toutes les semaines le %1$s à %2$s" #: admin/schedule-sentence.php:47 msgid "biweekly on %1$s at %2$s" msgstr "toutes les 2 semaines le %1$s à %2$s" #: admin/schedule-sentence.php:53 msgid "on the %1$s of each month at %2$s" msgstr "le %1$s de chaque mois à %2$s" #: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65 msgid "manually" msgstr "manuellement" #: admin/schedule-sentence.php:70 msgid "this server" msgstr "ce serveur" #: admin/schedule-sentence.php:78 msgid "store the most recent backup in %s" msgstr "stocker la sauvegarde la plus récente dans %s" #: admin/schedule-sentence.php:84 msgid "don't store any backups in on this server" msgstr "ne stocker aucune sauvegarde sur ce serveur" #: admin/schedule-sentence.php:90 msgid "store the last %1$s backups in %2$s" msgstr "stocker les %1$s sauvegardes ici:%2$s" #: admin/schedule-sentence.php:121 msgid "%s. " msgstr "%s. " #: admin/schedule-sentence.php:125 msgid "Send a copy of each backup to %s." msgstr "Envoyer une copie de chaque sauvegarde à %s." #: admin/schedule-sentence.php:153 msgid "Backups will be compressed and should be smaller than this." msgstr "Les sauvegardes sont compresss et seront de taille plus petite" #: admin/schedule-sentence.php:155 msgid "this shouldn't take long…" msgstr "Cela prendra quelques instants…" #: admin/schedule-sentence.php:155 msgid "calculating the size of your backup…" msgstr "calcul de la taille de votre sauvegarde en cours…" #: admin/schedule-settings.php:7 msgid "Run now" msgstr "Exécuter maintenant" #: admin/schedule-settings.php:15 msgid "Excludes" msgstr "Exclusions" #: admin/schedule-settings.php:27 functions/interface.php:34 msgid "Delete" msgstr "Supprimer" #: admin/server-info.php:43 #, fuzzy msgid "%1$s - %2$s" msgstr "toutes les semaines le %1$s à %2$s" #: admin/upsell.php:3 #, fuzzy msgid "Backup to" msgstr "Sauvegarde" #: admin/upsell.php:18 msgid "" "%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all Destinations & " "Unlimited Sites)%4$s" msgstr "" "%1$sou achetez la %2$scollection developpeur%3$s maintenant pour seulement $99 " "( nombre illimité de sites et toutes les destinations )%4$s" #: backupwordpress.php:240 msgid "Update" msgstr "Enregistrer" #: backupwordpress.php:241 msgid "Cancel" msgstr "Annuler" #: backupwordpress.php:242 msgid "" "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" "Etes-vous sûr(e) de vouloir supprimer cette planification de sauvegarde ? Toutes les " "sauvegardes associées seront aussi supprimées." #: backupwordpress.php:242 backupwordpress.php:243 backupwordpress.php:244 #: backupwordpress.php:245 msgid "'Cancel' to go back, 'OK' to delete." msgstr "Annuler pour retourner, OK pour supprimer" #: backupwordpress.php:243 msgid "Are you sure you want to delete this backup?" msgstr "Etes-vous sûr(e) de vouloir supprimer cette sauvegarde ?" #: backupwordpress.php:244 msgid "Are you sure you want to remove this exclude rule?" msgstr "Etes-vous sûr(e) de vouloir supprimer cette règle d'exclusion ?" #: backupwordpress.php:245 msgid "" "Reducing the number of backups that are stored on this server will cause some of your " "existing backups to be deleted, are you sure that's what you want?" msgstr "" "Réduire le nombre de sauvegardes stockées sur le serveur supprimera certaines de vos " "sauvegardes. Etes-vous sûr(e) de vouloir effectuer cette action ?" #: classes/class-backup.php:348 msgid "archive filename must be a non empty string" msgstr "le nom de fichier doit être une chaîne de cqrqctères non vide" #: classes/class-backup.php:352 msgid "invalid file extension for archive filename %s" msgstr "extension de fichier incorrect pour le fichier de nom %s" #: classes/class-backup.php:392 msgid "database dump filename must be a non empty string" msgstr "le nom de fichier pour l'export de la BDD ne peut être vide" #: classes/class-backup.php:396 msgid "invalid file extension for database dump filename %s" msgstr "l'extension de fichier de l'export de la BDD est invalide %s" #: classes/class-backup.php:429 msgid "Invalid root path %s must be a valid directory path" msgstr "Répertoire racine %s doit être un chemin valide" #: classes/class-backup.php:454 #, fuzzy msgid "Invalid existing archive filepath %s must be a non empty (string)" msgstr "Chemin de sauvegarde invalide %s, ne peut pas être vide" #: classes/class-backup.php:508 msgid "" "Invalid backup type %s must be one of (string) file, database or complete" msgstr "" "Type de sauvegarde invalide %s doit être parmi les suivants: file, database " "ou complete" #: classes/class-backupwordpress-wp-cli-command.php:50 msgid "Backup: Dumping database..." msgstr "Sauvegarde: export de la BDD" #: classes/class-backupwordpress-wp-cli-command.php:54 msgid "Backup: Zipping everything up..." msgstr "Sauvegarde: compression" #: classes/class-backupwordpress-wp-cli-command.php:70 msgid "Invalid backup path" msgstr "Chemin de sauvegarde incorrect" #: classes/class-backupwordpress-wp-cli-command.php:75 msgid "Invalid root path" msgstr "Le chemin racine est invalide" #: classes/class-backupwordpress-wp-cli-command.php:106 msgid "Backup Complete: " msgstr "Sauvegarde terminée :" #: classes/class-backupwordpress-wp-cli-command.php:108 msgid "Backup Failed" msgstr "La sauvegarde a échoué" #: classes/class-email-service.php:28 msgid "Email notification" msgstr "Notification par e-mail" #: classes/class-email-service.php:34 msgid "" "Receive a notification email when a backup completes, if the backup is small enough (< " "%s) then it will be attached to the email. Separate multiple email addresses with a comma." msgstr "" "Recevoir une alert quand une sauvegarde s'achève. Si l'archive est suffisamment petite " "(< %s), elle sera jointe au courriel. Séparez les addresses email par des virgules." #: classes/class-email-service.php:63 msgid "" "The maximum filesize of your backup that will be attached to your notification emails . " "Defaults to %s." msgstr "" "La taille maximum du fichier de sauvegarde qui sera joint à l'email de notification de " "sauvegarde. Par défaut %s." #: classes/class-email-service.php:82 msgid "Send an email notification to %s" msgstr "Envoyer une confirmation par courrier électronique à %s" #: classes/class-email-service.php:117 msgid "%s isn't a valid email" msgstr "%s n'est pas une addresse email valable" #: classes/class-email-service.php:179 classes/class-webhook-service.php:59 msgid "Backup of %s Failed" msgstr "La sauvegarde de %s a échoué" #: classes/class-email-service.php:181 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress n'a pas pu sauvegarder votre site %1$s." #: classes/class-email-service.php:181 msgid "Here are the errors that we're encountered:" msgstr "Voici les erreurs survenues" #: classes/class-email-service.php:181 msgid "" "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" "Si les erreurs décrites ci-dessus sont pour vous du chinois, transférez nous ce courrier " "électronique à %3$s et nous y jetterons un coup d'oeil" #: classes/class-email-service.php:181 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "Veuillez accepter les excuses du robot messager de BackUpWordPress" #: classes/class-email-service.php:189 msgid "Backup of %s" msgstr "Sauvegarde de %s" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress vient de terminer une sauvegarde de votre site %1$s." #: classes/class-email-service.php:194 msgid "The backup file should be attached to this email." msgstr "Le fichier de sauvegarde devrait être joint à ce courrier électronique." #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "You can download the backup file by clicking the link below:" msgstr "Vous pouvez télécharger le fichier de sauvegarde en cliquant sur le lien suivant :" #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "Salutations, le robot de sauvegarde et messager BackUpWordPress" #: classes/class-email-service.php:203 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" "Malheureusement le fichier de sauvegarde est trop gros pour être joint à ce courrier " "électronique." #: classes/class-path.php:249 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" "Ce fichier %s permet de s'assurer que personne d'autre ne puisse télécharger vos fichiers " "de sauvegarde." #: classes/class-schedule.php:137 #, fuzzy msgid "Invalid Option Name" msgstr "Le chemin racine est invalide" #: classes/class-schedule.php:250 msgid "Argument 1 for %s must be a valid integer" msgstr "Paramètre 1 de %s doit être un nombre entier valide." #: classes/class-schedule.php:599 msgid "Argument 1 for %s must be a valid future timestamp" msgstr "Paramètre 1 de %s doit être un horodatage futur valide" #: classes/class-schedule.php:636 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "Paramètre 1 pour %s doit être un intervalle de cron valide ou \"manuel\"" #: classes/class-schedule.php:765 functions/interface.php:249 msgid "Starting Backup" msgstr "Début de la sauvegarde" #: classes/class-schedule.php:851 msgid "Error writing to file. (%s)" msgstr "Erreur lors de l'écriture de fichier." #: classes/class-schedule.php:899 msgid "Dumping Database %s" msgstr "Export de la BDD %s en cours" #: classes/class-schedule.php:904 msgid "Verifying Database Dump %s" msgstr "Vérification de l'export de la base de données %s" #: classes/class-schedule.php:909 msgid "Creating zip archive %s" msgstr "Création de l'archive zip %s" #: classes/class-schedule.php:914 msgid "Verifying Zip Archive %s" msgstr "Vérification de l'archive zip %s" #: classes/class-schedule.php:919 msgid "Finishing Backup" msgstr "Fin de la sauvegarde" #: classes/class-schedule.php:970 msgid "An unexpected error occured" msgstr "Une erreur inconnue s'est produit" #. translators: min=minute #: classes/class-schedule.php:1033 msgid "%s min" msgid_plural "%s mins" msgstr[0] "% min" msgstr[1] "% mins" #: classes/class-schedule.php:1043 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "% heure" msgstr[1] "% heures" #: classes/class-schedule.php:1105 msgid "Argument 1 for %s must be a non empty string" msgstr "Paramètre 1 pour %s doit être une chaîne de caractères non vide" #: classes/class-schedule.php:1110 msgid "%s doesn't exist" msgstr "%s n'existe pas" #: classes/class-schedule.php:1115 msgid "That backup wasn't created by this schedule" msgstr "Cette sauvegarde n'a pas été créée par cet horaire" #: classes/class-services.php:81 msgid "Argument 1 for %s must be a valid filepath" msgstr "Paramètre 1 de %s doit être un chemin valide" #: classes/class-services.php:97 msgid "Argument 1 for %s must be a registered service" msgstr "Paramètre 1 pour %s doit être un Service enregistré" #: classes/class-services.php:115 classes/deprecated.php:81 msgid "Argument 1 for %s must be a valid class" msgstr "Paramètre 1 de %s doit être une classe existante" #. Plugin Name of the plugin/theme msgid "BackUpWordPress" msgstr "BackUpWordPress" #: classes/class-setup.php:141 msgid "" "BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to " "run. It has not been activated. %3$s%4$s%5$sLearn more%6$s" msgstr "" "Pour fonctionner, BackUpWordPress requiert la version %1$s de PHP et la version %2$s de " "WordPress ou supérieur. Il n'a pas ete activé" #: classes/class-webhook-service.php:103 msgid "Error: %s" msgstr "Erreur: %s" #: functions/core.php:272 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress a réglé les planifications de sauvegarde par défaut." #: functions/core.php:272 msgid "" "By default BackUpWordPress performs a daily backup of your database and a weekly backup " "of your database & files. You can modify these schedules." msgstr "" "Par défaut, BackUpWordPress effectue une sauvegarde suotidienne de votre base de données " "et une sauvegarde hebdomadaire de votre base de données & des fichiers. Vous pouvez " "modifier cette fréquence." #: functions/core.php:287 msgid "Once Hourly" msgstr "Toutes les heures" #: functions/core.php:288 msgid "Twice Daily" msgstr "Deux fois par jour" #: functions/core.php:289 msgid "Once Daily" msgstr "Quotidiennement" #: functions/core.php:290 msgid "Once Weekly" msgstr "Hebdomadaire" #: functions/core.php:291 msgid "Once Biweekly" msgstr "Toutes les deux semaines" #: functions/core.php:292 msgid "Once Monthly" msgstr "Mensuel" #: functions/core.php:310 msgid "You can only delete directories inside your WordPress installation" msgstr "Vous ne pouvez supprimer que les sauvegardes sous votre installation de WordPress" #: functions/interface.php:31 msgid "Download" msgstr "Télécharger" #: functions/interface.php:68 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress a détecté des problèmes lors de la dernière sauvegarde." #: functions/interface.php:70 msgid "Dismiss" msgstr "Ignorer" #: functions/interface.php:120 msgid "" "The backups directory can't be created because your %1$s directory isn't writable, run " "%2$s or %3$s or create the folder yourself." msgstr "" "Le dossier de sauvegarde ne peut être créé car le dossier %1$s n'a pas l'autorisation " "d'écriture. Exécutez %2$s ou %3$s, ou réglez les permissions adéquates." #: functions/interface.php:124 msgid "" "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" "Votre dossier de sauvegarde n'a pas l'autorisation d'écriture. Exécutez %1$s ou %2$s, ou " "réglez les permissions adéquates." #: functions/interface.php:128 msgid "" "%1$s is running in %2$s, please contact your host and ask them to disable it. " "BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" "%1$s s'exécute dans %2$s, merci de contacter votre hébergeur et de lui demande de " "désactiver cela. BackUpWordPress peut ne pas fonctionner correctement tant que %3$s est " "activé." #: functions/interface.php:128 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://br2.php.net/manual/fr/features.safe-mode.php" #: functions/interface.php:128 msgid "Safe Mode" msgstr "Safe mode" #: functions/interface.php:136 msgid "Your custom path does not exist" msgstr "Le chemin de répértoire specifié n'existe pas" #: functions/interface.php:140 msgid "" "Your custom path is unreachable due to a restriction set in your PHP configuration " "(open_basedir)" msgstr "" "Le chemin de répertoire specifié est inaccessible du à une restriction dans votre " "configuration PHP. open_basedir" #: functions/interface.php:145 msgid "" "Your custom backups directory %1$s doesn't exist and can't be created, your backups will " "be saved to %2$s instead." msgstr "" "Le dossier de sauvegarde %1$s n'existe pas et ne peut être créé. Vos sauvegardes seront " "stockées dans %2$s." #: functions/interface.php:149 msgid "" "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s " "instead." msgstr "" "Le dossier de sauvegarde %1$s n'a pas l'autorisation d'écriture. Les nouvelles " "sauvegardes seront stockées dans %2$s." #: functions/interface.php:158 #, fuzzy msgid "Your site root path %s isn't readable." msgstr "Permission insuffisante en lecture de la racine du chemin de sauvegarde %s." #: functions/interface.php:218 msgid "Database and Files" msgstr "Base de données et fichiers" #: functions/interface.php:222 msgid "Files" msgstr "Fichiers" #: functions/interface.php:226 msgid "Database" msgstr "Base de données" #: functions/interface.php:233 msgid "Legacy" msgstr "Contribution" #: functions/interface.php:248 msgid "Started %s ago" msgstr "Démarré il y a %s" #: functions/interface.php:250 msgid "cancel" msgstr "annuler" #: functions/interface.php:298 #, fuzzy msgid "No backups completed" msgstr "Aucune Sauvegarde Terminée" #: functions/interface.php:309 msgid "Complete Hourly" msgstr "Complet toutes les heures" #: functions/interface.php:310 msgid "File Hourly" msgstr "Fichier une fois l'heure" #: functions/interface.php:311 msgid "Database Hourly" msgstr "BDD une fois l'heure" #: functions/interface.php:312 msgid "Complete Twicedaily" msgstr "Complet deux fois par jour" #: functions/interface.php:313 msgid "File Twicedaily" msgstr "Fichier deux fois par jour" #: functions/interface.php:314 msgid "Database Twicedaily" msgstr "BDD deux fois par jour" #: functions/interface.php:315 msgid "Complete Daily" msgstr "Complet quotidiennement" #: functions/interface.php:316 msgid "File Daily" msgstr "Fichier quotidiennement" #: functions/interface.php:317 msgid "Database Daily" msgstr "BDD quotidien" #: functions/interface.php:318 msgid "Complete Weekly" msgstr "Complet hebdomadaire" #: functions/interface.php:319 msgid "File Weekly" msgstr "Fichier hebdomadaire" #: functions/interface.php:320 msgid "Database Weekly" msgstr "BDD hebdomadaire" #: functions/interface.php:321 msgid "Complete Biweekly" msgstr "Complet bi hebdomadaire" #: functions/interface.php:322 msgid "File Biweekly" msgstr "Fichiers bihebdomadaire" #: functions/interface.php:323 msgid "Database Biweekly" msgstr "BDD bihebdomadaire" #: functions/interface.php:324 msgid "Complete Monthly" msgstr "Complet mensuel" #: functions/interface.php:325 msgid "File Monthly" msgstr "Fichier mensuel" #: functions/interface.php:326 msgid "Database Monthly" msgstr "BDD mensuel" #: functions/interface.php:327 msgid "Complete Manually" msgstr "Complet mensuel" #: functions/interface.php:328 msgid "File Manually" msgstr "Fichier manuel" #: functions/interface.php:329 msgid "Database Manually" msgstr "BDD manuel" #. Plugin URI of the plugin/theme msgid "http://bwp.hmn.md/" msgstr "http://bwp.hmn.md/" #. Description of the plugin/theme #, fuzzy msgid "" "Simple automated backups of your WordPress powered website. Once activated you'll find me " "under Tools → Backups. On multisite, you'll find me under the " "Network Settings menu." msgstr "" "Sauvegardes automatiques et faciles de votre site WordPress. Une fois activé, les " "règlages se trouvent ici: Outils > Sauvegardes" #. Author of the plugin/theme msgid "XIBO Ltd" msgstr "XIBO Ltd" #. Author URI of the plugin/theme msgid "http://hmn.md/" msgstr "http://hmn.md/" #: admin/schedule-sentence.php:118 #, fuzzy msgctxt "1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to store" msgid "Backup my %1$s %2$s %3$s, %4$s." msgstr "Sauvegarder %1$s %2$s %3$s, %4$s." #: functions/interface.php:300 msgctxt "backups count" msgid "One backup completed" msgid_plural "%1$s backups completed" msgstr[0] "1 Sauvegarde Disponible" msgstr[1] "%1$s sauvegardss disponibles" #~ msgid "Remove" #~ msgstr "Retirer" #~ msgid "No key supplied" #~ msgstr "Aucune clé fournie" #~ msgid "Supplied key was not valid" #~ msgstr "La clé fournie est invalide" #~ msgid "Task is already scheduled to run" #~ msgstr "La tâche a déjà été programmée" #~ msgid "Task is not scheduled to run" #~ msgstr "La tâche n'a pas été programmée" #~ msgid "BackUpWordPress requires WordPress version %s or greater." #~ msgstr "BackUpWordPress nécessite WordPress version %s ou plus récent." #~ msgid "BackUpWordPress may not work when php is running with %s on" #~ msgstr "" #~ "BackUpWordPress peut ne pas fonctionner correctement lorsque PHP s'exécute avec %s " #~ "activé" #~ msgid "BackUpWordPress is almost ready." #~ msgstr "BackUpWordPress a presque terminé." #~ msgid "% Backups Completed" #~ msgstr "% Sauvegardes terminées" #~ msgid "" #~ "Your backup completed but with the following errors / warnings, it's probably ok to " #~ "ignore these." #~ msgstr "" #~ "La sauvegarde s'est achevée, mais a généré les erreurs suivantes, vous pouvez " #~ "probablement les ignorer." #~ msgid "Your backup failed" #~ msgstr "La sauvegarde a échoué" #~ msgid "Here's the response from the server:" #~ msgstr "Voici la réponse du serveur :" #~ msgid "You can email details of this error to %s so they can look into the issue." #~ msgstr "" #~ "Vous pouvez envoyez les détails de cette erreur par e-mail ) %s afin qu'il l'analyse." #~ msgid "Close" #~ msgstr "Fermer" #~ msgid "Email to Support" #~ msgstr "Contacter le support technique par e-mail" ================================================ FILE: languages/backupwordpress-he_IL.po ================================================ # Translation of 2.x in Hebrew # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:52+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: he_IL\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress הגדיר את תזמוני ברירת-המחדל שלך." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "גיבוי של %s נכשל" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "שלח התראה בדוא\"ל אל %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s אינו דוא\"ל חוקי" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "גיבויים ידחסו וצריכים להיות קטנים יותר מזה." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "התראה בדוא\"ל" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "פעם בשעה על השעה" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "פעם ביום ב-%s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "מספר גיבויים לאחסון על שרת זה" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "הגדרות תזמון" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "סגור" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "המידע שלהלן הוא לגרסה %1$s. צפה בקובץ %2$s לעזרה ספציפית לגרסה %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "הספריה הראשית שמגובית. ברירת-מחדל היא %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress דורש וורדפרס גרסה %s או יותר." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "ביטול" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "למשל" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "מצב בטוח" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "ספריית הגיבויים המותאמת אישית שלך %1$s לא קיימת ולא יכולה להיוצר, הגיבויים שלך ישמרו ב-%2$s במקום." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "ספריית הגיבויים המותאמת אישית שלך %1$s לא ניתנת לכתיבה, גיבויים חדשים ישמרו ב-%2$s במקום." #: ../functions/interface.php:261 msgid "cancel" msgstr "ביטול" #: ../functions/interface.php:265 msgid "Settings" msgstr "הגדרות" #: ../functions/interface.php:268 msgid "Excludes" msgstr "לא כלולים" #: ../functions/interface.php:29 msgid "Download" msgstr "הורד" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress כמעט מוכן." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress זיהה בעיות עם הגיבוי האחרון שלך." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "מסד נתונים וקבצים" #: ../functions/interface.php:240 msgid "Database" msgstr "מסד נתונים" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress זיהה בעיה." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "סוג הגיבוי אינו יכול להיות ריק" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "סוג גיבוי לא חוקי" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "תזמון אינו יכול להיות ריק" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "תזמון לא חוקי" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "מספר גיבויים מקסימלי חייב להיות מספר" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s לא תאם אף קובץ." #: ../admin/backups.php:40 msgid "add schedule" msgstr "הוסף תזמון" #: ../admin/backups.php:71 msgid "Size" msgstr "גודל" #: ../admin/backups.php:72 msgid "Type" msgstr "סוג" #: ../admin/backups.php:73 msgid "Actions" msgstr "פעולות" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "הקודקס יכול לעזור" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "הנתיב לתיקיה שבה תרצה לאחסן את קבצי הגיבוי שלך, ברירת-מחדל היא %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "מסד נתונים" #: ../admin/constants.php:14 msgid "files" msgstr "קבצים" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "ניהול גיבויים" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "גיבויים" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "אינך משתמש בגרסה האחרונה היציבה של BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "שאלות נפוצות" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "למידע נוסף:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "פורומי תמיכה" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "עזרה עם תרגום" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "עליך לתקן את הבעיות המפורטות לעיל לפני ש-BackUpWordPress יוכל להתחיל." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "הצג" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "הסר" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "לא כלול" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "כלול" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "לא קריא" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "קבצים לא קריאים אינם יכולים להיות מגובים" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "האתר שלך הוא %s. גיבויים ידחסו ולכן יהיו קטנים יותר." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "גיבוי" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "גם מסד נתונים וגם קבצים" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "קבצים בלבד" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "מסד נתונים בלבד" #: ../functions/interface.php:237 msgid "Files" msgstr "קבצים" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "תזמון" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "עדכן" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "פעם בשעה %s דקות לאחר תחילת השעה" #: ../functions/interface.php:275 msgid "Run now" msgstr "גבה עכשיו" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "מחק" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "גיבוי של %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "קובץ ה-%s מבטיח שאנשים אחרים לא יכולים להוריד את קבצי הגיבוי שלך." ================================================ FILE: languages/backupwordpress-it_IT.po ================================================ # Translation of 2.x in Italian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: it_IT\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Email al supporto" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nuove regole di esclusione" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Ecco la risposta del server:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Se hai bisogno di aiuto controlla le FAQ cliccando su \"Aiuto\" nell'angolo in alto a destra di questa pagina." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Avvio backup" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Dumping Database %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Verifica Database Dump %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Creazione archivio zip %s " #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Verifica archivio zip %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Termino il backup" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress potrebbe non funzionare quando php è in esecuzione con %s " #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s è in esecuzione in %2$s, si prega di contattare il tuo host e chiedere di disattivarlo. BackUpWordPress potrebbe non funzionare correttamente mentre %3$s è attivo." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Quando si deve avviare la tua pianificazione. Il valore predefinito è %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Sei sicuro di voler cancellare questa pianificazione? Tutti i backup verranno eliminati." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "\"Annulla\" per tornare indietro, \"OK\" per cancellare." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Sei sicuro di voler cancellare questo backup?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Sei sicuro di voler rimuovere questa regola di esclusione?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "La riduzione del numero di backup che sono memorizzati sul server causerà la cancellazione di alcuni dei vostri backup esistenti, sei sicuro?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "I backup massimi non devono essere vuoti" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "I backup massimi devono essere maggiori di 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Escludere" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "default" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "definito" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Solo manuale" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "questo non dovrebbe impiegare troppo tempo" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "calcolando le dimensioni del sito" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Il prossimo backup sarà da %1$s a %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "ogni 12 ore dalle %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "ogni settimana da %1$s alle %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "ogni 15 giorni da %1$s a %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "da %1$s di ogni mese a %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manualmente" #: ../admin/schedule.php:71 msgid "this server" msgstr "questo server" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "non memorizzare alcun backup su %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "memorizza solo gli ultimi %1$s backup su %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Memorizza %1$s %2$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress non è riuscito a memorizzare il tuo sito %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Qui ci sono gli errori riscontrati:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Se gli errori di cui sopra hanno un aspetto marziano, inoltra questa email a %3$s e gli daremo un'occhiata." #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Cordiali saluti, \n" "L'apologetico BackUpWordPress Backup Robot Emailing" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress ha completato un backup del tuo sito %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Il file di backup deve essere allegato a questa email." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "È possibile scaricare il file di backup cliccando sul link sottostante:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "Cordiali saluti, Il felice BackUpWordPress Backup Robot Emailing" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Purtroppo il file di backup è troppo grande da allegare a questa email." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Backup: Dumping database..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Backup: zippando..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Cartella backup non valida" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Percorso non valido" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Backup completo:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Backup fallito" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Per impostazione predefinita BackUpWordPress esegue un backup giornaliero del database e un backup settimanale del database e dei file. È possibile modificare queste pianificazioni." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Legacy" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "La tua directory di backup non è scrivibile, esegui %1$s o %2$s o imposta le autorizzazioni." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "La directory di backup non può essere creato perché la directory %1$s non èscrivibile, esegui %2$s o %3$s o crea la cartella." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress ha impostato le pianificazioni predefinite." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Backup di %s fallito" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Invia una notifica email a %s " #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s non è un'email valida" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Il backup sarà compresso e dovrebbe occupare meno spazio di questo." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Notifica email" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "ogni ora" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "ogni giorno alle %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Numero di backup da memorizzare su questo server" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Impostazioni di pianificazione" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Chiudi" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Le seguenti informazioni sono per la versione %1$s. Visualizza il file %2$s per un aiuto specifico sulla versione %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "La directory principale che è stata salvata. Il valore predefinito è %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "La capacità da utilizzare quando si richiama %1$s. Il valore predefinito è %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Il percorso del tuo %1$s eseguibile. Sarà utilizzato per comprimere i tuoi %2$s e il tuo %3$s se disponibile." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress richiede WordPress versione %s o superiore." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Cancella" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Il percorso del tuo %1$s eseguibile. Sarà utilizzato per la parte del %2$s del backup, se disponibile." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "ad esempio" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Tu puoi %1$s uno dei seguenti %2$s nel tuo %3$s per controllare le impostazioni avanzate. %4$s. I %5$s definiti saranno evidenziati." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s restituisce una %2$s risposta che potrebbe significare che cron jobs non si è avviato in modo corretto. BackUpWordPress si basa su wp-cron per eseguire i backup pianificati. Vedere il %3$s per maggiori dettagli." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Modalità provvisoria" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "La tua directory personalizzata di backup %1$s non esiste e non può essere creata, i tuoi backup verranno salvati in % 2$s" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "La tua directory personalizzata di backup %1$s non è scrivibile, i nuovi backup verranno salvati in % 2$s" #: ../functions/interface.php:261 msgid "cancel" msgstr "cancella" #: ../functions/interface.php:265 msgid "Settings" msgstr "Impostazioni" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Esclusioni" #: ../functions/interface.php:29 msgid "Download" msgstr "Scarica" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress è quasi pronto" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress ha rilevato problemi con l'ultimo backup." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Database e files" #: ../functions/interface.php:240 msgid "Database" msgstr "Database" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress ha rilevato un problema." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Il tipo di backup non può essere vuoto" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Tipo di backup non valido" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "La pianificazione non può essere vuota" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Pianificazione non valida" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Max backup deve essere un numero" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s non corrisponde ad alcun file." #: ../admin/backups.php:40 msgid "add schedule" msgstr "aggiungi pianificazione" #: ../admin/backups.php:71 msgid "Size" msgstr "Dimensione" #: ../admin/backups.php:72 msgid "Type" msgstr "Tipo" #: ../admin/backups.php:73 msgid "Actions" msgstr "Azioni" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Leggere il Codex può aiutare." #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Il percorso della cartella dove vuoi memorizzare i file di backup. Il valore predefinito è %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "database" #: ../admin/constants.php:14 msgid "files" msgstr "files" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Elenca file o directory da escludere separate da virgole, la directory di backup viene automaticamente esclusa." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Gestione dei Backups" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Backups" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Non si sta utilizzando l'ultima versione stabile di BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Costanti" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Per altre informazioni:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Forum di supporto" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Aiuto per la traduzione" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "È necessario risolvere i problemi descritti sopra prima che BackUpWordPress possa iniziare." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Anteprima" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Escludi regole" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Rimuovi" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Escluso" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Incluso" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Illeggibile" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Files illeggibili che non possono essere salvati" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Il tuo sito è %s. I backup verranno compressi per renderli meno ingombranti." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Backup" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Database e files insieme" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Solo files" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Solo database" #: ../functions/interface.php:237 msgid "Files" msgstr "Files" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Gestione esclusioni" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Pianificazione" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Aggiorna" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "ogni %s minuti di ogni ora" #: ../functions/interface.php:275 msgid "Run now" msgstr "Avvia adesso" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Cancella" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Backup di %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Questo %s file assicura che non è possibile scaricare i file di backup." ================================================ FILE: languages/backupwordpress-lt_LT.po ================================================ # Translation of 2.x in Lithuanian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: lt_LT\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-lv_LV.po ================================================ # Translation of 2.x in Latvian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: lv_LV\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Laiks, kurā tiek veiktas ik dienas rezerves kopija. Pēc noklusējuma: %s" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Vai tiešām vēlaties izdzēst šo grafiku? Visas tā rezerves kopijas arī tiks izdzēstas." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "Spied 'Atcelt' lai dotos atpakaļ, vai 'OK', lai izdzēstu." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Vai tiešām vēlaties izdzēst šo rezerves kopiju? " #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Vai tiešām vēlaties izdzēst šos izņēmumus?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Samazinot rezerves kopiju skaitu, cik tiek glabātas uz servera, varat pazaudēt jau saglabātās kopijas. Vai tiešām to vēlaties? " #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Norādiet rezerves kopiju skaitu" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Maksimālais rezerves kopiju skaits ir jābūt lielākam par 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Nav iekļauts" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "noklusētais" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "noteiktais" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Tikai manuāli" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "tam nevajadzētu aizņemt pārāk daudz laika…" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "mēram Jūsu mājas lapas lielumu…" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Nākamā rezerves kopija tiks veidota %1$s pulksten %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "katras 12 stundas pulksten %1$s un %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "katru nedēļu %1$s pulksten %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "ik pa divām nedēļām %1$s pulksten %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "katra mēneša %1$s datumā pulksten %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manuāli" #: ../admin/schedule.php:71 msgid "this server" msgstr "serveris" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "nesaglabāt nevienu rezerves kopiju %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "saglabāt tikai pēdējo %1$s rezerves kopiju %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Izveidot rezerves kopiju %1$s %2$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress nevarēja izveidot rezerves kopiju Jūsu mājas lapai %1$s. " #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Kļūdas, kuras radās veidojot rezerves kopiju:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "ja šis kļūdas paziņojums Jums liekas nesaprotams, pārsūtiet to uz epastu %3$s (angļu valodā) un mēs centīsimies palīdzēt. " #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Ar sveicieniem,\n" "BackUpWordPress Robots" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress ir izveidojis rezerves kopiju Jūsu mājas lapai %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Rezerves kopijai vajadzētu būtu epasta pielikumā." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Lai lejupielādētu izveidoto rezerves kopiju spiediet uz zemāk esošo saiti:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Ar Sveicieniem,\n" "Priecīgais BackUpWordPress Robots" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Diemžēl rezerves kopija bija pārāk liela, lai to nosūtītu epastā." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Veido rezerves kopiju datubāzei" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Veidojam zip arhīvu… " #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Nepareizs rezerves kopijas formāts" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Invalid root path" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "1 rezerves kopija izveidot" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Kļūda veidojot rezerves kopiju" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "BackUpWordPress pēc noklusējuma rezerves kopijas datubāzei veido katru dienu un katru nedēļu tas veido rezerves kopiju datubāzei un failiem. Zemāk Jūs varat mainīt šo grafiku." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Legacy" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Izvēlētajai mapei rezerves kopiju saglabāšanai nav rakstīšanas tiesības. Palaidiet %1$s vai %2$s un uzstādiet nepieciešamās rakstīšanas tiesības." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Nepieciešamā mape netika izveidota, jo mapei %1$s nav nepieciešamās rakstīšanas tiesības. Palaidiet %2$s vai %3$s, vai izveidojiet šo mapi pats." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress ir iestatījis Jūsu noklusētos grafikus." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Rezerves kopija %s netika izveidota" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Nosūtīt epasta paziņojumu uz %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "epasts %s ir norādīts nepareizi " #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Rezerves kopija tiks saspiesta, tāpēc tā aizņems mazāk vietas." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Epasta paziņojumi" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "katru stundu" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "katru dienu pulksten %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Skaits, cik rezerves kopijas tiks glabātas uz servera." #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Rezerves Kopiju Uzstādījumi" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Aizvērt" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Šī informācija attiecas uz versiju %1$s. Apskaties failu %2$s, lai iegūtu informāciju kas attiecas uz versiju %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Galvenā mape, kura tikai izveidota rezerves kopija. Pēc noklusējuma: %s" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "The capability to use when calling %1$s. Defaults to %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Tiks izmantos %1$s. Tas tiks izmantots lai arhivētu %2$s un %3$s ja tie būs pieejami." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress nepieciešams WordPress %s vai jaunāka versija." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Atcelt" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Tiks izmantots %1$s. Mēs izmantosim %2$s, lai veidotu rezerves kopiju, ja tas būs pieejams." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "Kā piemēram" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Jūs vara %1$s ar jebkuru no šiem %2$s Jūsu %3$s, lai kontrolētu papildus uzstādījumus. %4$s. %5$s būs izcelti." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s atgriež %2$s, kas varētu nozīmēt to, ka nestrādā 'cron jobs'. BackUpWordPress izmantot wp-cron, lai veiktu savus uzdevumus. Vairāk informāciju iegūsiet apskatot %3$s." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Drošais režīms" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Jūsu izvēlētā mape %1$s neeksistē, tāpēc rezerves kopija tika saglabāta mapē %2$s" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Jūsu izvēlētajā mapē %1$s nebija iespējams ierakstīt, tāpēc rezerves kopija tika saglabāta mapē \"%2$s." #: ../functions/interface.php:261 msgid "cancel" msgstr "atcelt" #: ../functions/interface.php:265 msgid "Settings" msgstr "Iestatījumi" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Izņēmumi" #: ../functions/interface.php:29 msgid "Download" msgstr "Lejupielādēt" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress ir gandrīz gatavs." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress konstatēja problēmas ar Jūsu janāko rezerves kopiju." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Datubāzi un failus" #: ../functions/interface.php:240 msgid "Database" msgstr "Datubāze" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress ir konstatējis problēmas. " #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Norādiet rezerves kopijas veidu" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Nepareizs rezerves kopijas formāts" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Grafiks nevar palikt tukšs" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Nesaderīgs grafiks" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Maksimālajam rezerves kopiju skaitu jānorāda kā numuru" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s nesakrīt ar nevienu failu. " #: ../admin/backups.php:40 msgid "add schedule" msgstr "Pievienot grafiku" #: ../admin/backups.php:71 msgid "Size" msgstr "Izmērs" #: ../admin/backups.php:72 msgid "Type" msgstr "Veids" #: ../admin/backups.php:73 msgid "Actions" msgstr "Darbības" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Codex var palīdzēt" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Vieta kurā tiks glabātas Jūsu rezerves kopijas. Pēc noklusējuma: %s" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "datubāze" #: ../admin/constants.php:14 msgid "files" msgstr "faili" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Ar komatiem atdalīts saraksts ar mapēm, kuras netiks iekļautas rezerves kopijā. " #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Pārvaldīt Rezerves Kopijas" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Rezerves kopijas" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Jūs neizmantojat jaunāko BackUpWordPress versiju." #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Konstantes" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Vairāk informācijai:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Atbalsta Forums" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Palīdzi ar tulkojumu" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Jums nepieciešams salabot augstāk minētās problēmas, lai BackUpWordPress varētu sākt strādāt." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Priekšskatījums" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Izņēmumi" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Izdzēst" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Nav iekļauts " #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Iekļauts" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Nenolasāms" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Failiem kurus nevar atvērt nav iespējams izveidot rezerves kopijas" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Jūsu mājas lapa aizņem %s. Rezerves kopija tiks saspiest, lai samazinātu tās izmēru." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Ko saglabāt" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Gan datubāzi, gan failus" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Tikai failus" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Tikai datubāzi" #: ../functions/interface.php:237 msgid "Files" msgstr "Faili" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Pārvaldīt izņēmumus" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Cik bieži" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Atjaunināt" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "ik stundu, %s minūtes pāri" #: ../functions/interface.php:275 msgid "Run now" msgstr "Palaist tulīt" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Izdzēst" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Backup von %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-nl_NL.po ================================================ # Translation of 2.x in Dutch # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: nl_NL\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "De tijd waarop je schema zou moeten draaien, Standaard is dat %s" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Weet je zeker dat je dit schema wilt verwijderen? Alle backups van dit schema zullen ook worden verwijderd." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "'Cancel\"om terug te gaan, 'OK' om te verwijderen." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Weet je zeker dat je deze backup wilt verwijderen?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Weet je zeker dat je deze uitzonderingsregel wilt verwijderen?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "bijv." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "Annuleren" #: ../functions/interface.php:265 msgid "Settings" msgstr "Instellingen" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Exclusief" #: ../functions/interface.php:29 msgid "Download" msgstr "Download" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress is bijna klaar." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress heeft problemen ondervonden met je laatste back-up." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress heeft een probleem ondervonden." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "Grootte" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "Acties" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "De Codex kan hulp bieden." #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Het pad naar de map waar je de back up bestanden wilt bewaren, standaard naar %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "database" #: ../admin/constants.php:14 msgid "files" msgstr "bestanden" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Een door komma's gescheiden lijst van bestanden of mappen die uitgesloten worden, de backup(s) map is automatisch uitgesloten." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Beheer back ups" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Back ups" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Je gebruikt niet de laatste stabiele versie van BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "Veel gestelde vragen" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Constanten" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Voor meer informatie:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Ondersteunings forums" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Vertaal hulp" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Je moet de hierboven beschreven problemen oplossen voordat BackUpWordPress kan beginnen." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Verwijderen" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Back up van %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-pl_PL.po ================================================ # Translation of 2.x in Polish # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: pl_PL\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Wyślij e-mail do wsparcia technicznego" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nowa zasada wykluczeń" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Oto odpowiedź z serwera:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Jeśli potrzebujesz pomocy by uruchomieniu wtyczki, sprawdź FAQ klikając na pomoc w górnym prawym rogu tej strony." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Rozpoczynam wykonywanie kopii zapasowej" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Zrzucam bazę danych %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Sprawdzam poprawność zrzutu bazy %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Tworzę archiwum ZIP %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Sprawdzam poprawność archiwum ZIP %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Kończę wykonywanie kopii zapasowej" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress może nie działać jeśli PHP działa z włączonym %s" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s działa w %2$s, skontaktuj się ze swoja firmą hostingową i zapytaj ich o wyłączenie tego. BackUpWordPress może niedziałać poprawnie jeśli %3$s jest włączone." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Godzina o której powinny się uruchamiać zadania. Domyślnie to %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Czy na pewno chcesz usunąć ten harmonogram? Wszystkie jego kopie zapasowe również zostaną usunięte." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "'Anuluj' by powrócić, 'OK' by usunąć." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Czy na pewno chcesz usunąć tą kopię zapasową?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Czy na pewno chcesz usunąć tę regułę wykluczającą?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Zmniejszenie liczby kopii zapasowy, które są przechowywane na tym serwerze spowoduje, że niektóre kopie zapasowe zostaną usunięte, czy na pewno chcesz to zrobić?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Maksymalna liczba kopii nie może być pusta" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Maksymalna liczba kopii musi być większa od 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Wyklucz" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "domyślnie" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "zdefiniowane" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Tylko ręcznie" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "to nie powinno długo potrwać long…" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "obliczam rozmiar Twojej strony…" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Następna kopia zapasowa zostanie wykonana %1$s o godzinie %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "co 12 godzin o %1$s oraz %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "cotygodniowo w %1$s o %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "co dwa tygodnie w %1$s o %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "%1$s. każdego miesiąca o %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "ręcznie" #: ../admin/schedule.php:71 msgid "this server" msgstr "tym serwerze" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "nie przechowuj żadnych kopii na %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "przechowuj tylko ostatnie %1$s kopii zapasowych na %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Wykonaj kopię zapasową moich %2$s o rozmiarze %1$s %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress nie był w stanie wykonać kopii zapasowej Twojej strony %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Oto błędy na które się natknęliśmy:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Jeśli błędy powyżej wyglądają jak język kosmitów, prześlij ten e-mail do %3$s, a rzucimy na niego okiem" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Z poważaniem,\n" "skruszony automat mailingowy BackUpWordPress " #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress wykonal kopię zapasową Twojej strony %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Kopia zapasowa powinna być dołączona do tej wiadomości e-mail." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Mozesz pobrać kopię zapasową klikając odnośnik poniżej:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Z poważaniem,\n" "szczęśliwy automat mailingowy BackUpWordPress " #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Niestety kopia zapasowa była zbyt duża by dołączyć ją do tej wiadomości e-mail." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Kopia zapasowa: zrzucam bazę danych..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Kopia zapasowa: Kompresuję wszystko..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Nieprawidłowa ścieżka kopii zapasowej" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Nieprawidłowa ścieżka katalogu głównego" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Wykonywanie kopii zapasowych zakończone:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Wykonywanie kopii zapasowych nie powiodło się" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Domyślnie BackUpWordPress wykonuje codziennie kopię zapasową bazy danych oraz cotygodniowo kopię bazy danych i plików. Możesz zmienić te harmonogramy." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Zgodność" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Twój katalog kopii zapasowych nie jest zapisywalny, wykonaj polecenie %1$s lub %2$s, albo ustaw uprawnienia własnoręcznie." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Katalog kopii zapasowych nie może zostać utworzony ponieważ katalog %1$s nie jest zapisywalny, wykonaj polecenie %2$s lub %3$s, albo utwórz katalog własnoręcznie." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress ustawił Twoje domyślne harmonogramy." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Kopia zapasowa %s nie powiodła się" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Wyślij powiadomienie e-mail do %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s nie jest poprawnym adresem e-mail" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Kopie zapasowe zostaną skompresowane i powinny być mniejsze niż to." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Powiadom e-mailem" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "co godzinę o" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "codziennie o %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Liczba kopii zapasowych, które mają być przechowywane na tym serwerze. " #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Ustawienia harmonogramu" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Zamknij" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Informacje poniżej są dla wersji %1$s. Zobacz plik %2$s dla informacji specyficznych dla wersji %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "katalog główny, który jest uwzględniony w kopii zapasowej. Domyślnie to %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Możliwość użycia przy wywołaniu %1$s. Domyślnie to %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Ścieżka do pliku wykonywalnego %1$s. Będzie używane przy kompresowaniu %2$s oraz %3$s, jeśli jest dostępne." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress wymaga WordPress w wersji %s albo nowszej." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Anuluj" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Ścieżka do pliku wykonywalnego %1$s. Będzie używane przy %2$s kopii zapasowej, jeśli jest dostępne." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "np." #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Możesz %1$s którekolwiek %2$s w Twoim %3$s by kontrolować zaawansowane ustawienia. %4$s. Zdefiniowane %5$s zostanie podświetlone." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s zwraca odpowiedź %2$s która może znaczyć, że zadania cron nie są uruchamiane poprawnie. BackUpWordPress polega na wp-cron by uruchamiać zaplanowane kopie. Zobacz %3$s by uzyskać więcej informacji." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/pl/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Tryb bezpieczny" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Twój katalog kopii zapasowych %1$s nie istnieje i nie może zostać utworzony, Twoje kopie zapasowe zostaną zapisane w %2$s." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Twój katalog kopii zapasowych %1$s nie jest zapisywalny, Twoje kopie zapasowe zostaną zapisane w %2$s." #: ../functions/interface.php:261 msgid "cancel" msgstr "anuluj" #: ../functions/interface.php:265 msgid "Settings" msgstr "Ustawienia" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Wykluczenia" #: ../functions/interface.php:29 msgid "Download" msgstr "Pobierz" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress prawie skończył." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress wykrył problemy z Twoją ostatnią kopią zapasową." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Baza danych i pliki" #: ../functions/interface.php:240 msgid "Database" msgstr "Baza danych" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress wykrył problem." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Typ kopii zapasowej nie może być pusty" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Nieprawidłowy typ kopii zapasowej" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Harmonogram nie może być pusty" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Nieprawidłowy harmonogram" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Maksymalna liczna kopii musi być liczbą" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s nie pasuje do żadnych plików." #: ../admin/backups.php:40 msgid "add schedule" msgstr "dodaj harmonogram" #: ../admin/backups.php:71 msgid "Size" msgstr "Rozmiar" #: ../admin/backups.php:72 msgid "Type" msgstr "Typ" #: ../admin/backups.php:73 msgid "Actions" msgstr "Akcje" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Codex może pomóc" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Ścieżka do folderu w którym chciałbyś trzymać swoje kopie zapasowe, domyślnie to %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "baza danych" #: ../admin/constants.php:14 msgid "files" msgstr "pliki" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Lista rozdzielana przecinkiem plików lub katalogów, które zostaną wykluczone. Katalog kopii zapasowych jest wykluczony automatycznie." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Zarządzaj kopiami" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Kopie zapasowe" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Nie korzystasz z najnowszej, stabilnej wersji BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Stałe" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Więcej informacji:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Forum wsparcia technicznego" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Pomoc w tłumaczeniu" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Musisz rozwiązać problemy wymienione powyżej nim będzie można uruchomić BackUpWordPress." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Podgląd" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Zasady wykluczeń" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Usuń" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Wykluczone" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Zawarte" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Nieczytelne" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Pliki, których nie można odczytać, nie mogą być uwzględnione w kopii zapasowej." #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Twoja strona ma rozmiar %s. Kopie zapasowe zostaną skompresowane by zmniejszyć ich rozmiar." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Uwzględnij w kopii" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Bazę danych i pliki" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Tylko pliki" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Tylko bazę danych" #: ../functions/interface.php:237 msgid "Files" msgstr "Pliki" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Zarządzaj wykluczeniami" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Harmonogram" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Aktualizuj" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "co godzinę, %s minut po pełnej godzinie" #: ../functions/interface.php:275 msgid "Run now" msgstr "Uruchom teraz" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Usuń" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Kopia zapasowa %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Plik %s zapewnia że inny ludzie nie będą mogli pobrać Twoich kopii zapasowych." ================================================ FILE: languages/backupwordpress-pt_BR.po ================================================ msgid "" msgstr "" "Project-Id-Version: BackUpWordPress v3.1.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.2\n" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" "X-Textdomain-Support: yes\n" "Language: pt_BR\n" "X-Poedit-SearchPath-0: .\n" # @ backupwordpress #: admin/backups-table.php:35 msgid "This is where your backups will appear once you have some." msgstr "Aqui será onde os seus backups irão aparecer assim que você tiver algum." # @ backupwordpress #: admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "Ativar Suporte do BackUpWordPress" # @ backupwordpress #: admin/enable-support.php:5 #, php-format msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "BackUpWordPress usa %s para fornecer suporte. Além de permitir que você envie e receba mensagens nós também enviamos as seguintes informações do servidor, juntamente com os seus pedidos:" # @ backupwordpress #: admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "Você pode desativar o suporte no futuro desativando o BackUpWordPress." # @ backupwordpress #: admin/enable-support.php:60 msgid "No thanks" msgstr "Não obrigado" # @ backupwordpress #: admin/enable-support.php:61 msgid "Yes I want to enable support" msgstr "Sim eu quero ativar o suporte" # @ backupwordpress #: admin/backups.php:26 msgid "Support" msgstr "Suporte" # @ backupwordpress #: classes/class-schedule.php:250 #, php-format msgid "Argument 1 for %s must be a valid integer" msgstr "Argumento 1 de %s deve ser um número inteiro válido" # @ backupwordpress #: classes/class-schedule.php:636 #, php-format msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "Argumento 1 de %s deve ser uma recorrência cron válida ou \"manualmente\"" # @ backupwordpress #: classes/class-schedule.php:1105 #, php-format msgid "Argument 1 for %s must be a non empty string" msgstr "Argumento 1 de %s não deve ser uma string vazia" # @ backupwordpress #: classes/class-schedule.php:1115 msgid "That backup wasn't created by this schedule" msgstr "Esse backup não foi criado por este agendamento" # @ backupwordpress #: classes/class-services.php:81 #, php-format msgid "Argument 1 for %s must be a valid filepath" msgstr "Argumento 1 de %s deve ser um caminho de arquivo válido" # @ backupwordpress #: classes/class-services.php:97 #, php-format msgid "Argument 1 for %s must be a registered service" msgstr "Argumento 1 de %s deve ser um serviço registrado" # @ backupwordpress #: classes/class-services.php:115 classes/deprecated.php:81 #, php-format msgid "Argument 1 for %s must be a valid class" msgstr "Argumento 1 de %s deve ser uma classe válida" # @ backupwordpress #: functions/core.php:256 msgid "You can only delete directories inside your WordPress installation" msgstr "Você só pode deletar pastas dentro da sua instalação do Wordpress" # @ backupwordpress #: classes/class-email-service.php:63 #, php-format msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "O tamanho máximo do seu backup que será anexado aos e-mails de notificação. O padrão é %s." # @ backupwordpress #: functions/core.php:233 msgid "Once Hourly" msgstr "Um vez a cada hora" # @ backupwordpress #: functions/core.php:234 msgid "Twice Daily" msgstr "Duas vezes por dia" # @ backupwordpress #: functions/core.php:235 msgid "Once Daily" msgstr "Uma vez por dia" # @ backupwordpress #: functions/core.php:236 msgid "Once Weekly" msgstr "Uma vez por semana" # @ backupwordpress #: functions/core.php:238 msgid "Once Monthly" msgstr "Uma vez por mês" # @ backupwordpress #: classes/class-schedule.php:765 functions/interface.php:249 msgid "Starting Backup" msgstr "Iniciando Backup" # @ backupwordpress #: classes/class-schedule.php:899 #, php-format msgid "Dumping Database %s" msgstr "Realizando o dumping do Banco de Dados %s" # @ backupwordpress #: classes/class-schedule.php:904 #, php-format msgid "Verifying Database Dump %s" msgstr "Verificando o Dump do Banco de Dados %s" # @ backupwordpress #: classes/class-schedule.php:909 #, php-format msgid "Creating zip archive %s" msgstr "Criando arquivo ZIP %s" # @ backupwordpress #: classes/class-schedule.php:914 #, php-format msgid "Verifying Zip Archive %s" msgstr "Verificando arquivo ZIP %s" # @ backupwordpress #: classes/class-schedule.php:919 msgid "Finishing Backup" msgstr "Finalizando Backup" # @ backupwordpress #: functions/interface.php:128 #, php-format msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s está rodando em %2$s, por favor entre em contato com os administradores do seu servidor e os peça para desativar isso. O BackUpWordPress pode não funcionar corretamente enquanto %3$s estiver ativo." # @ backupwordpress #: admin/constants.php:113 #, php-format msgid "The time that your schedules should run. Defaults to %s." msgstr "O horário em que seus agendamentos devem ser executados. O padrão é %s." # @ backupwordpress #: backupwordpress.php:242 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Você tem certeza de que quer apagar este agendamento? Todos os backups já realizados nesta programação também serão excluídos." # @ backupwordpress #: backupwordpress.php:242 backupwordpress.php:243 backupwordpress.php:244 #: backupwordpress.php:245 msgid "'Cancel' to go back, 'OK' to delete." msgstr "'Cancelar' para voltar, 'OK' para apagar." # @ backupwordpress #: backupwordpress.php:243 msgid "Are you sure you want to delete this backup?" msgstr "Você tem certeza que quer apagar este backup?" # @ backupwordpress #: backupwordpress.php:244 msgid "Are you sure you want to remove this exclude rule?" msgstr "Você tem certeza de que deseja remover esta regra de exclusão?" # @ backupwordpress #: backupwordpress.php:245 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Reduzindo o número de backups que serão armazenados neste servidor causará a eliminação de alguns backups já existentes. Você tem certeza que é isso que você quer?" # @ backupwordpress #: admin/actions.php:376 msgid "Max backups can't be empty" msgstr "A quant. de backups não pode ficar vazia" # @ backupwordpress #: admin/actions.php:384 msgid "Max backups must be greater than 0" msgstr "A quant. de backups precisa ser maior que 0" # @ backupwordpress #: admin/schedule-form.php:60 msgid "Manual Only" msgstr "Apenas Manualmente" # @ backupwordpress #: admin/schedule-sentence.php:155 msgid "this shouldn't take long…" msgstr "isso não deve demorar muito…" # @ backupwordpress #: admin/schedule-sentence.php:35 #, php-format msgid "every 12 hours at %1$s & %2$s" msgstr "a cada 12 horas às %1$s & %2$s" # @ backupwordpress #: admin/schedule-sentence.php:41 #, php-format msgid "weekly on %1$s at %2$s" msgstr "semanalmente no(a) %1$s às %2$s" # @ backupwordpress #: admin/schedule-sentence.php:53 #, php-format msgid "on the %1$s of each month at %2$s" msgstr "no %1$s de cada mês às %2$s" # @ backupwordpress #: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65 msgid "manually" msgstr "manualmente" # @ backupwordpress #: admin/schedule-sentence.php:70 msgid "this server" msgstr "neste servidor" # @ backupwordpress #: classes/class-email-service.php:181 #, php-format msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "O BackUpWordPress não foi capaz de realizar o backup do seu site %1$s." # @ backupwordpress #: classes/class-email-service.php:181 msgid "Here are the errors that we're encountered:" msgstr "Aqui estão os erros que foram encontrados:" # @ backupwordpress #: classes/class-email-service.php:181 #, php-format msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Se os erros acima parecem tão esquisitos quanto Marcianos, encaminhe este email para %3$s e iremos dar uma olhada" # @ backupwordpress #: classes/class-email-service.php:181 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Atenciosamente, \n" "O Apologético Robô Carteiro do BackUpWordPress" # @ backupwordpress #: classes/class-email-service.php:194 classes/class-email-service.php:203 #, php-format msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "O BackUpWordPress completou a realização de um backup do seu site %1$s." # @ backupwordpress #: classes/class-email-service.php:194 msgid "The backup file should be attached to this email." msgstr "O arquivo de backup será anexado neste email." # @ backupwordpress #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "You can download the backup file by clicking the link below:" msgstr "Você pode realizar o download do arquivo de backup clicando no link abaixo:" # @ backupwordpress #: classes/class-email-service.php:194 classes/class-email-service.php:203 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "Atenciosamente,\n" "O Robô Feliz Entregador de Backups do BackUpWordPress" # @ backupwordpress #: classes/class-email-service.php:203 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Infelizmente o arquivo de backup era muito grande para ser anexado nesta mensagem de email." # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:50 msgid "Backup: Dumping database..." msgstr "Backup: Realizando o dumping do banco de dados..." # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:54 msgid "Backup: Zipping everything up..." msgstr "Backup: Compactando tudo..." # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:70 msgid "Invalid backup path" msgstr "Caminho de backup inválido" # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:75 msgid "Invalid root path" msgstr "Caminho do diretório raiz inválido" # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:106 msgid "Backup Complete: " msgstr "Backup Concluído: " # @ backupwordpress #: classes/class-backupwordpress-wp-cli-command.php:108 msgid "Backup Failed" msgstr "Falha no Backup" # @ backupwordpress #: functions/core.php:218 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "Por padrão, o BackUpWordPress realiza um backup diário de seu banco de dados e um backup semanal de seu banco de dados e; arquivos. Você pode modificar esses agendamentos." # @ backupwordpress #: functions/interface.php:233 msgid "Legacy" msgstr "Legado" # @ backupwordpress #: functions/interface.php:124 #, php-format msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Seu diretório de backups não é gravável. Execute o comando %1$s ou %2$s, ou defina as permissões você mesmo." # @ backupwordpress #: functions/interface.php:120 #, php-format msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Não é possível criar o diretório de backups pois sua pasta %1$s não possui permissões para gravação. Execute o comando %2$s ou %3$s ou crie a pasta você mesmo." # @ backupwordpress #: functions/core.php:218 msgid "BackUpWordPress has setup your default schedules." msgstr "O BackUpWordPress configurou seus agendamentos padrão." # @ backupwordpress #: classes/class-email-service.php:179 classes/class-webhook-service.php:59 #, php-format msgid "Backup of %s Failed" msgstr "Backup de %s Falhou" # @ backupwordpress #: classes/class-email-service.php:82 #, php-format msgid "Send an email notification to %s" msgstr "
    Enviar uma notificação por email para %s" # @ backupwordpress #: classes/class-email-service.php:117 #, php-format msgid "%s isn't a valid email" msgstr "%s não é um email válido" # @ backupwordpress #: admin/schedule-sentence.php:153 msgid "Backups will be compressed and should be smaller than this." msgstr "Os backups serão compactados e ficarão menores que isso." # @ backupwordpress #: classes/class-email-service.php:28 msgid "Email notification" msgstr "Notificação por email" # @ backupwordpress #: admin/schedule-sentence.php:18 msgid "hourly on the hour" msgstr "de hora em hora" # @ backupwordpress #: admin/schedule-sentence.php:24 #, php-format msgid "daily at %s" msgstr "diariamente às %s" # @ backupwordpress #: admin/schedule-form.php:155 msgid "Number of backups to store on this server" msgstr "Número de backups para armazenar" # @ backupwordpress #: admin/constants.php:97 #, php-format msgid "The root directory that is backed up. Defaults to %s." msgstr "O diretório raiz onde será realizado o backup. O padrão é %s." # @ backupwordpress #: admin/constants.php:81 #, php-format msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "A capacidade que o usuário deve ter ao solicitar %1$s. O padrão é %2$s." # @ backupwordpress #: admin/constants.php:49 #, php-format msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "O caminho para executar a função %1$s. Será usado para compactar seus %2$s e %3$s, se disponível." # @ backupwordpress #: backupwordpress.php:241 msgid "Cancel" msgstr "Cancelar" # @ backupwordpress #: admin/constants.php:33 #, php-format msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "O caminho para executar o comando %1$s. Será usado para parte do backup do seu %2$s, se disponível." # @ backupwordpress #: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49 #: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97 #: admin/constants.php:113 classes/class-email-service.php:63 msgid "e.g." msgstr "ex:" # @ backupwordpress #: admin/constants.php:3 #, php-format msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Você pode %1$s qualquer uma das seguintes %2$s em seu arquivo %3$s para controlar certas definições avançadas. %4$s. As %5$s que estiverem personalizadas aparecerão abaixo destacadas." # @ backupwordpress #: functions/interface.php:128 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/pt_BR/features.safe-mode.php" # @ backupwordpress #: functions/interface.php:128 msgid "Safe Mode" msgstr "Safe Mode (Modo Seguro)" # @ backupwordpress #: functions/interface.php:145 #, php-format msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Seu diretório de backups personalizado %1$s não existe e também não pode ser criado. Ao invés disso seus backups serão salvos em %2$s." # @ backupwordpress #: functions/interface.php:149 #, php-format msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Seu diretório personalizado para backups %1$s não possui permissões para gravação, e ao invés disso, novos backups serão salvos em %2$s." # @ backupwordpress #: functions/interface.php:250 msgid "cancel" msgstr "cancelar" # @ backupwordpress #: admin/schedule-form.php:1 admin/schedule-settings.php:9 msgid "Settings" msgstr "Configurações" # @ backupwordpress #: admin/schedule-settings.php:15 msgid "Excludes" msgstr "Exclusões" # @ backupwordpress #: functions/interface.php:31 msgid "Download" msgstr "Download" # @ backupwordpress #: functions/interface.php:68 msgid "BackUpWordPress detected issues with your last backup." msgstr "O BackUpWordPress detectou problemas com o seu último backup." # @ backupwordpress #: functions/interface.php:218 msgid "Database and Files" msgstr "Banco de Dados e Arquivos" # @ backupwordpress #: functions/interface.php:226 msgid "Database" msgstr "Banco de dados" # @ backupwordpress #: admin/actions.php:736 admin/actions.php:742 msgid "BackUpWordPress has detected a problem." msgstr "O BackUpWordPress detectou um problema." # @ backupwordpress #: admin/actions.php:269 msgid "Backup type cannot be empty" msgstr "O tipo de backup não pode ficar vazio" # @ backupwordpress #: admin/actions.php:273 msgid "Invalid backup type" msgstr "Tipo de backup inválido" # @ backupwordpress #: admin/actions.php:287 msgid "Schedule cannot be empty" msgstr "O intervalo não pode ficar vazio" # @ backupwordpress #: admin/actions.php:291 msgid "Invalid schedule" msgstr "Agendamento inválido" # @ backupwordpress #: admin/actions.php:380 msgid "Max backups must be a number" msgstr "A quant. de backups precisa ser um número" # @ backupwordpress #: admin/backups.php:22 msgid "add schedule" msgstr "agendar novo backup" # @ backupwordpress #: admin/backups-table.php:8 admin/schedule-form-excludes.php:98 msgid "Size" msgstr "Tamanho" # @ backupwordpress #: admin/backups-table.php:9 admin/schedule-form-excludes.php:100 msgid "Type" msgstr "Tipo" # @ backupwordpress #: admin/backups-table.php:10 msgid "Actions" msgstr "Ações" # @ backupwordpress #: admin/constants.php:3 msgid "The Codex can help" msgstr "O Codex pode ajudar" # @ backupwordpress #: admin/constants.php:17 #, php-format msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "O caminho do diretório que você gostaria de armazenar os arquivos de backup. O padrão é %s." # @ backupwordpress #: admin/constants.php:33 admin/constants.php:49 msgid "database" msgstr "banco de dados" # @ backupwordpress #: admin/constants.php:49 msgid "files" msgstr "arquivos" # @ backupwordpress #: admin/constants.php:65 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Lista de arquivos ou diretórios (separados por vírgula) que devem ser excluídos do backup. O diretório de backups é automaticamente excluído." # @ backupwordpress #: admin/menu.php:12 admin/menu.php:14 msgid "Manage Backups" msgstr "Gerenciar Backups" # @ backupwordpress #: admin/menu.php:12 admin/menu.php:14 admin/menu.php:39 msgid "Backups" msgstr "Backups" # @ backupwordpress #: admin/menu.php:67 msgid "FAQ" msgstr "FAQ" # @ backupwordpress #: admin/constants.php:3 admin/menu.php:69 msgid "Constants" msgstr "Constantes" # @ backupwordpress #: admin/menu.php:86 msgid "For more information:" msgstr "Para mais informações:" # @ backupwordpress #: admin/menu.php:88 msgid "Support Forums" msgstr "Fóruns de suporte" # @ backupwordpress #: admin/menu.php:89 msgid "Help with translation" msgstr "Ajude a traduzir" # @ backupwordpress #: admin/schedule-form-excludes.php:315 msgid "Excluded" msgstr "Excluído" # @ backupwordpress #: admin/schedule-form-excludes.php:311 msgid "Unreadable" msgstr "Ilegível" # @ backupwordpress #: admin/schedule-form.php:31 msgid "Backup" msgstr "Backup" # @ backupwordpress #: admin/schedule-form.php:38 msgid "Both Database & files" msgstr "Banco de dados e arquivos" # @ backupwordpress #: admin/schedule-form.php:40 msgid "Files only" msgstr "Apenas arquivos" # @ backupwordpress #: admin/schedule-form.php:42 msgid "Database only" msgstr "Apenas banco de dados" # @ backupwordpress #: functions/interface.php:222 msgid "Files" msgstr "Arquivos" # @ backupwordpress #: admin/schedule-form.php:53 msgid "Schedule" msgstr "Intervalo" # @ backupwordpress #: backupwordpress.php:240 msgid "Update" msgstr "Atualizar" # @ backupwordpress #: admin/schedule-sentence.php:18 #, php-format msgid "hourly at %s minutes past the hour" msgstr "de hora em hora, passado %s minutos de cada hora" # @ backupwordpress #: admin/schedule-settings.php:7 msgid "Run now" msgstr "Executar agora" # @ backupwordpress #: admin/schedule-settings.php:27 functions/interface.php:34 msgid "Delete" msgstr "Excluir" # @ backupwordpress #: classes/class-email-service.php:189 #, php-format msgid "Backup of %s" msgstr "Backup de %s" # @ hmbkp #: classes/class-path.php:249 #, php-format msgid "This %s file ensures that other people cannot download your backup files." msgstr "Este arquivo %s garante que nenhuma outra pessoa consiga fazer o download dos seus arquivos de backup." # @ backupwordpress #: admin/actions.php:215 msgid "The schedule ID was not provided. Aborting." msgstr "O ID de agendamento não foi fornecido. Cancelando..." # @ backupwordpress #: admin/actions.php:305 msgid "Day of the week must be a valid lowercase day name" msgstr "O dia da semana deve ser um nome da semana em minúsculo" # @ backupwordpress #: admin/actions.php:324 msgid "Day of month must be between 1 and 31" msgstr "O dia do mês deve ser entre 1 e 31" # @ backupwordpress #: admin/actions.php:343 msgid "Hours must be between 0 and 23" msgstr "As horas devem ser entre 0 e 23" # @ backupwordpress #: admin/actions.php:362 msgid "Minutes must be between 0 and 59" msgstr "Os minutos devem ser entre 0 e 59" # @ backupwordpress #: admin/actions.php:736 admin/actions.php:742 #, php-format msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for more details." msgstr "%1$s está retornando um %2$s resposta que pode significar que \\\"cron jobs\\\" não estão sendo devidamente processados. BackUpWordPress baseia-se no wp-cron para executar backups agendados. Veja o %3$s para mais detalhes." # @ backupwordpress #: admin/backups.php:32 msgid "Enable Support" msgstr "Ativar Suporte" # @ backupwordpress #: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46 #: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94 #: admin/constants.php:110 classes/class-email-service.php:60 #, php-format msgid "You've set it to: %s" msgstr "Você configurou isso para: %s" # @ backupwordpress #: admin/faq.php:2 msgid "Where does BackUpWordPress store the backup files?" msgstr "Onde é que BackUpWordPress armazenar os arquivos de backup?" # @ backupwordpress #: admin/faq.php:4 msgid "Backups are stored on your server in /wp-content/backups, you can change the directory." msgstr "Backups são armazenados no seu servidor em / wp-content / backups , você pode alterar o diretório." # @ backupwordpress #: admin/faq.php:6 msgid "Important: By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does mean that your backup directory can get quite large." msgstr "Importante: Por padrão BackUpWordPress faz o backup de tudo na raiz do seu site, bem como o seu banco de dados, o que inclui todas as pastas não WordPress que estejam na raiz do site. Isso significa que o seu diretório de backup pode ficar muito grande." # @ backupwordpress #: admin/faq.php:8 msgid "What if I want to back up my site to another destination?" msgstr "E se eu quiser fazer o backup do meu site para outro destino?" # @ backupwordpress #: admin/faq.php:10 msgid "BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, Azure, DreamObjects and FTP/SFTP. Check it out here: https://bwp.hmn.md" msgstr "BackUpWordPress Pro suporta Dropbox, Google Drive, Amazon S3, Rackspace, Azure, DreamObjects e FTP / SFTP. Confira aqui: https://bwp.hmn.md" # @ backupwordpress #: admin/faq.php:12 msgid "How do I restore my site from a backup?" msgstr "Como eu recupero meu site usando um backup?" # @ backupwordpress #: admin/faq.php:14 msgid "You need to download the latest backup file either by clicking download on the backups page or via FTP. Unzip the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely phpMyAdmin)." msgstr "Você precisa fazer o download do arquivo mais recente de backup clicando em download na página de backups ou via FTP. Descompactar os arquivos e fazer upload de todos os arquivos para o seu servidor substituindo os antigos. Você pode importar o banco de dados usando a ferramenta de gerenciamento de banco de dados (por exemplo phpMyAdmin)." # @ backupwordpress #: admin/faq.php:16 msgid "See this guide for more details - How to restore from backup." msgstr "Veja este guia para mais detalhes - Como recuperar meu site usando backups." # @ backupwordpress #: admin/faq.php:18 msgid "Does BackUpWordPress back up the backups directory?" msgstr "O BackUpWordPress faz uma copia dos diretórios de backups?" # @ backupwordpress #: admin/faq.php:20 msgid "No." msgstr "Não." # @ backupwordpress #: admin/faq.php:22 msgid "I'm not receiving my backups by email?" msgstr "Não estou recebendo meus backups por e-mail e agora?" # @ backupwordpress #: admin/faq.php:24 msgid "Most servers have a filesize limit on email attachments, it's generally about 10mb. If your backup file is over that limit it won't be sent attached to the email, instead you should receive an email with a link to download the backup, if you aren't even receiving that then you likely have a mail issue on your server that you'll need to contact your host about." msgstr "Alguns servidores possuem um limite de tamanho para anexos no e-mail, isso geralmente é cerca de 10MB. Se seu backup está acima desse limite, então não poderá ser anexado no e-mail, porém você deve receber em seu e-mail um link para baixar o backup, se isso não está acontecendo, então você deve estar com algum problema no servidor de e-mail e precisa contatar o suporte do seu servidor para resolver isso." # @ backupwordpress #: admin/faq.php:26 msgid "How many backups are stored by default?" msgstr "Quantos backups são mantidos por padrão?" # @ backupwordpress #: admin/faq.php:28 msgid "BackUpWordPress stores the last 10 backups by default." msgstr "BackUpWordPress mantém os últimos 10 backups por padrão." # @ backupwordpress #: admin/faq.php:30 msgid "How long should a backup take?" msgstr "Quanto tempo deve demorar um backup?" # @ backupwordpress #: admin/faq.php:32 msgid "Unless your site is very large (many gigabytes) it should only take a few minutes to perform a back up, if your back up has been running for longer than an hour it's safe to assume that something has gone wrong, try de-activating and re-activating the plugin, if it keeps happening, contact support." msgstr "A menos que seu site seja muito grande (muitos gigabytes) deve demorar apenas alguns minutos para realizar um backup, se o seu backup está em execução há mais de uma hora, é seguro assumir que algo deu errado, tente desativar e re-ativar o plugin, se continuar acontecendo, contate o suporte." # @ backupwordpress #: admin/faq.php:34 msgid "What do I do if I get the wp-cron error message?" msgstr "O que eu faço se eu receber a mensagem de erro do wp-cron?" # @ backupwordpress #: admin/faq.php:36 msgid "The issue is that your wp-cron.php is not returning a 200 response when hit with a HTTP request originating from your own server, it could be several things, in most cases, it's an issue with the server / site." msgstr "O problema é que seu wp-cron.php não está retornando um 200 em resposta quando bateu com um pedido HTTP proveniente de seu próprio servidor, pode ser várias coisas, na maioria dos casos, é um problema com o servidor / site." # @ backupwordpress #: admin/faq.php:38 msgid "There are some things you can test to confirm this is the issue." msgstr "Há algumas coisas que você pode testar para confirmar se esta é a questão." # @ backupwordpress #: admin/faq.php:40 msgid "Are scheduled posts working? (They use wp-cron as well ). " msgstr "Os posts de agendamento estão funcinando? (Eles usam wp-cron também)." # @ backupwordpress #: admin/faq.php:42 msgid "Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around)." msgstr "Você está hospedado no Heart Internet? (wp-cron pode não ser suportadas por Heart Internet, veja abaixo para o work-around)." # @ backupwordpress #: admin/faq.php:44 msgid "If you click manual backup does it work?" msgstr "Se você clicar em backup manual funciona?" # @ backupwordpress #: admin/faq.php:46 msgid "Try adding define( 'ALTERNATE_WP_CRON', true ); to your wp-config.php, do automatic backups work?" msgstr "Adicionando define( 'ALTERNATE_WP_CRON', true ); ao seu wp-config.php, os backups automáticos funcionam?" # @ backupwordpress #: admin/faq.php:48 msgid "Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily remove the authentication, do backups start working?" msgstr "O seu site é privado (ou seja, é por trás de algum tipo de autenticação, plugin de manutenção, .htaccess) em caso afirmativo wp-cron não funcionará até que você o remova, se você remover temporariamente a autenticação, os backups começam a funcionar?" # @ backupwordpress #: admin/faq.php:50 msgid "Report the results to our support team for further help. To do this, either enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment.com" msgstr "Relatar os resultados para nossa equipe de suporte para obter mais ajuda. Para fazer isso, ative o suporte de seu Painel de Administração (recomendado), ou envie um e-mail para support@xibodevelopment.com" # @ backupwordpress #: admin/faq.php:52 msgid "How to get BackUpWordPress working in Heart Internet" msgstr "Como fazer BackUpWordPress funcionar em Heart Internet" # @ backupwordpress #: admin/faq.php:54 msgid "The script to be entered into the Heart Internet cPanel is: /usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php (note the space between php5 and the location of the file). The file wp-cron.php chmod must be set to 711." msgstr "O script a ser inserido no Heart Internet cPanel é: /usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php (note o espaço entre php5 e o local do arquivo). O arquivo wp-cron.php chmod deve ser definido como 711 ." # @ backupwordpress #: admin/faq.php:56 msgid "My backups seem to be failing?" msgstr "Meus backups parecem estar falhando?" # @ backupwordpress #: admin/faq.php:58 msgid "If your backups are failing - it's commonly caused by lack of available resources on your server. The easiest way to establish this to exclude some [of] or your entire uploades folder, running a backup an if that succeeds. If so, we know it's probably a server issue. If not, report the results to our support team for further help. To do this, either enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment.com" msgstr "Se os seus backups estão falhando - é comumente causada por falta de recursos disponíveis em seu servidor. A maneira mais fácil de estabelecer isso é excluir algumas ou sua pasta de uploads inteira, executando um um backup se isso for bem-sucedido. Se assim for, nós saberemos que é, provavelmente, um problema de servidor. Se não, relatar os resultados para nossa equipe de suporte para obter mais ajuda. Para fazer isso, ative o suporte de seu Painel Administrativo (recomendado), ou envie um e-mail para support@xibodevelopment.com" # @ backupwordpress #: admin/menu.php:79 msgid "Server Info" msgstr "Informações do servidor" # @ backupwordpress #: admin/page.php:7 #, php-format msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory%2$s." msgstr "Se você acha BackUpWordPress útil, por favor %1$s envie sua avaliação no diretório de plugins %2$s." # @ backupwordpress #: admin/schedule-form-excludes.php:5 msgid "Currently Excluded" msgstr "Excluídos Atualmente" # @ backupwordpress #: admin/schedule-form-excludes.php:40 msgid "Default rule" msgstr "Regra padrão" # @ backupwordpress #: admin/schedule-form-excludes.php:44 msgid "Defined in wp-config.php" msgstr "Definido no wp-config.php" # @ backupwordpress #: admin/schedule-form-excludes.php:48 msgid "Stop excluding" msgstr "Parar exclusão" # @ backupwordpress #: admin/schedule-form-excludes.php:64 msgid "Directory Listing" msgstr "Listagem de Diretório" # @ backupwordpress #: admin/schedule-form-excludes.php:66 msgid "Here's a directory listing of all files on your site, you can browse through and exclude files or folders that you don't want included in your backup." msgstr "Aqui está uma lista de pastas de todos os arquivos em seu site, você pode navegar através e excluir arquivos ou pastas que você não deseja incluir no backup." # @ backupwordpress #: admin/schedule-form-excludes.php:97 msgid "Name" msgstr "Nome" # @ backupwordpress #: admin/schedule-form-excludes.php:99 msgid "Permissions" msgstr "Permissões" # @ backupwordpress #: admin/schedule-form-excludes.php:101 msgid "Status" msgstr "Situação" # @ backupwordpress #: admin/schedule-form-excludes.php:158 admin/schedule-form-excludes.php:269 msgid "Refresh" msgstr "Atualizar" # @ backupwordpress #: admin/schedule-form-excludes.php:175 admin/schedule-form-excludes.php:293 msgid "Symlink" msgstr "Symlink" # @ backupwordpress #: admin/schedule-form-excludes.php:179 admin/schedule-form-excludes.php:297 msgid "Folder" msgstr "Pasta" # @ backupwordpress #: admin/schedule-form-excludes.php:269 msgid "Recalculate the size of this directory" msgstr "Recalcular o tamanho dessa pasta" # @ backupwordpress #: admin/schedule-form-excludes.php:301 msgid "File" msgstr "Arquivo" # @ backupwordpress #: admin/schedule-form-excludes.php:311 msgid "Unreadable files won't be backed up." msgstr "Não será feito o backup de arquivos ilegíveis." # @ backupwordpress #: admin/schedule-form-excludes.php:326 msgid "Exclude →" msgstr "Excluir →" # @ backupwordpress #: admin/schedule-form-excludes.php:345 admin/schedule-form.php:185 #: admin/schedule-settings.php:81 msgid "Done" msgstr "Pronto" # @ backupwordpress #: admin/schedule-form.php:66 msgid "display" msgstr "exibir" # @ backupwordpress #: admin/schedule-form.php:85 msgid "Start Day" msgstr "Dia Inicial" # @ backupwordpress #: admin/schedule-form.php:93 msgid "Monday" msgstr "Segunda-feira" # @ backupwordpress #: admin/schedule-form.php:94 msgid "Tuesday" msgstr "Terça-feira" # @ backupwordpress #: admin/schedule-form.php:95 msgid "Wednesday" msgstr "Quarta-feira" # @ backupwordpress #: admin/schedule-form.php:96 msgid "Thursday" msgstr "Quinta-feira" # @ backupwordpress #: admin/schedule-form.php:97 msgid "Friday" msgstr "Sexta-feira" # @ backupwordpress #: admin/schedule-form.php:98 msgid "Saturday" msgstr "Sábado" # @ backupwordpress #: admin/schedule-form.php:99 msgid "Sunday" msgstr "Domingo" # @ backupwordpress #: admin/schedule-form.php:117 msgid "Start Day of Month" msgstr "Dia Inicial do Mês" # @ backupwordpress #: admin/schedule-form.php:129 msgid "Start Time" msgstr "Hora de início" # @ backupwordpress #: admin/schedule-form.php:138 msgid "Hours" msgstr "Horas" # @ backupwordpress #: admin/schedule-form.php:142 msgid "Minutes" msgstr "Minutos" # @ backupwordpress #: admin/schedule-form.php:146 msgid "The second backup will run 12 hours after the first" msgstr "O segundo backup será iniciado 12 horas depois do primeiro" # @ backupwordpress #: admin/schedule-form.php:164 msgid "Past this limit older backups will be deleted automatically." msgstr "Passado este limite, os backups mais antigos serão excluídos automaticamente." # @ backupwordpress #: admin/schedule-form.php:167 #, php-format msgid "This schedule will store a maximum of %s of backups." msgstr " Este agendamento irá manter no máximo um total de %s em backups." # @ backupwordpress #: admin/schedule-sentence.php:11 #, php-format msgid "The next backup will be on %1$s at %2$s %3$s" msgstr "O próximo backup será em %1$s às %2$s %3$s" # @ backupwordpress #: admin/schedule-sentence.php:47 #, php-format msgid "biweekly on %1$s at %2$s" msgstr "quinzenal em %1$s às %2$s" # @ backupwordpress #: admin/schedule-sentence.php:78 #, php-format msgid "store the most recent backup in %s" msgstr "manter o backup mais recente em %s" # @ backupwordpress #: admin/schedule-sentence.php:84 msgid "don't store any backups in on this server" msgstr "não manter nenhum backup neste servidor" # @ backupwordpress #: admin/schedule-sentence.php:90 #, php-format msgid "store the last %1$s backups in %2$s" msgstr "manter os ultimos %1$s backups em %2$s" # @ backupwordpress #: admin/schedule-sentence.php:118 #, php-format msgctxt "1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to store" msgid "Backup my %1$s %2$s %3$s, %4$s." msgstr "Copiar meu %1$s %2$s %3$s, %4$s." # @ backupwordpress #: admin/schedule-sentence.php:121 #, php-format msgid "%s. " msgstr "%s." # @ backupwordpress #: admin/schedule-sentence.php:125 #, php-format msgid "Send a copy of each backup to %s." msgstr "Enviar uma copia de cada backup para %s." # @ backupwordpress #: admin/schedule-sentence.php:155 msgid "calculating the size of your backup…" msgstr "calculando o tamanho do seu backup…" # @ default #: admin/server-info.php:43 #, php-format msgid "%1$s - %2$s" msgstr "%1$s - %2$s" # @ backupwordpress #: admin/upsell.php:3 msgid "Backup to" msgstr "Enviar backup para " # @ backupwordpress #: admin/upsell.php:18 #, php-format msgid "%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all Destinations & Unlimited Sites)%4$s" msgstr "%1$s ou compre o %2$s Pacote de Desenvolvimento %3$s agora, por apenas $99 (Todos os destinos e sites ilimitados) %4$s" # @ hm_backdrop #: backdrop/server.php:6 msgid "No key supplied" msgstr "Nenhuma chave fornecida" # @ hm_backdrop #: backdrop/server.php:11 msgid "Supplied key was not valid" msgstr "Chave fornecida não era válida" # @ hm_backdrop #: backdrop/task.php:22 msgid "Task is already scheduled to run" msgstr "Tarefa já está programada para ser executada" # @ hm_backdrop #: backdrop/task.php:41 msgid "Task is not scheduled to run" msgstr "Tarefa não está programada para ser executada" # @ backupwordpress #. translators: plugin header field 'Name' #: backupwordpress.php:0 classes/class-setup.php:34 msgid "BackUpWordPress" msgstr "BackUpWordPress" # @ backupwordpress #. translators: plugin header field 'PluginURI' #: backupwordpress.php:0 msgid "http://bwp.hmn.md/" msgstr "http://bwp.hmn.md/" # @ backupwordpress #. translators: plugin header field 'Description' #: backupwordpress.php:0 msgid "Simple automated backups of your WordPress powered website. Once activated you'll find me under Tools → Backups. On multisite, you'll find me under the Network Settings menu." msgstr "Simples backups automatizado do seu site Wordpress." # @ backupwordpress #. translators: plugin header field 'Author' #: backupwordpress.php:0 msgid "XIBO Ltd" msgstr "XIBO Ltd" # @ backupwordpress #. translators: plugin header field 'AuthorURI' #: backupwordpress.php:0 msgid "http://hmn.md/" msgstr "http://hmn.md/" # @ backupwordpress #. translators: plugin header field 'Version' #: backupwordpress.php:0 msgid "3.1.3" msgstr "3.1.3" # @ backupwordpress #: classes/class-backup.php:348 msgid "archive filename must be a non empty string" msgstr "nome do arquivo deve ser uma string não vazia" # @ backupwordpress #: classes/class-backup.php:352 #, php-format msgid "invalid file extension for archive filename %s" msgstr "extensão de arquivo inválido para nome de arquivo %s" # @ backupwordpress #: classes/class-backup.php:392 msgid "database dump filename must be a non empty string" msgstr "nome de arquivo dump deve ser uma string não vazia" # @ backupwordpress #: classes/class-backup.php:396 #, php-format msgid "invalid file extension for database dump filename %s" msgstr "extensão de arquivo inválido para nome de arquivo dump de banco de dados %s" # @ backupwordpress #: classes/class-backup.php:429 #, php-format msgid "Invalid root path %s must be a valid directory path" msgstr "caminho raiz inválido %s deve ser um caminho de diretório válido" # @ backupwordpress #: classes/class-backup.php:454 #, php-format msgid "Invalid existing archive filepath %s must be a non empty (string)" msgstr "caminho de arquivo existente inválido %s deve ser uma (string) não vazia" # @ backupwordpress #: classes/class-backup.php:508 #, php-format msgid "Invalid backup type %s must be one of (string) file, database or complete" msgstr "tipo de backup inválido %s deve ser um arquivo de (string), banco de dados ou completo" # @ backupwordpress #: classes/class-email-service.php:34 #, php-format msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email addresses with a comma." msgstr "Receba uma notificação por e-mail quando o backup estiver concluído, se o backup for menor do que ( %s) então o enviaremos como anexo no e-mail. Separe múltiplos e-mails por vírgula." # @ backupwordpress #: classes/class-schedule.php:137 msgid "Invalid Option Name" msgstr "Nome de Opção Inválido" # @ backupwordpress #: classes/class-schedule.php:599 #, php-format msgid "Argument 1 for %s must be a valid future timestamp" msgstr "Argumento 1 de %s deve ser uma data futura válida" # @ backpwordpress #: classes/class-schedule.php:851 #, php-format msgid "Error writing to file. (%s)" msgstr "Erro ao escrever o arquivo. (%s)" # @ backupwordpress #: classes/class-schedule.php:970 msgid "An unexpected error occured" msgstr "Houve um erro inesperado" # @ backupwordpress #. translators: min=minute #: classes/class-schedule.php:1033 #, php-format msgid "%s min" msgid_plural "%s mins" msgstr[0] "%s min" msgstr[1] "%s mins" # @ backupwordpress #: classes/class-schedule.php:1043 #, php-format msgid "%s hour" msgid_plural "%s hours" msgstr[0] "%s hora" msgstr[1] "%s horas" # @ backupwordpress #: classes/class-schedule.php:1110 #, php-format msgid "%s doesn't exist" msgstr "%s não existe" # @ backupwordpress #: classes/class-setup.php:141 #, php-format msgid "BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s" msgstr "BackUpWordPress precisa da versão %1$s do PHP ou superior and WordPress versão %2$s ou superior. Não foi possível ativar. %3$s %4$s %5$s Saber mais %6$s" # @ backupwordpress #: classes/class-webhook-service.php:103 #, php-format msgid "Error: %s" msgstr "Erro: %s" # @ backupwordpress #: functions/core.php:237 msgid "Once Biweekly" msgstr "Uma vez quinzenalmente" # @ backupwordpress #: functions/interface.php:70 msgid "Dismiss" msgstr "Dispensar" # @ backupwordpress #: functions/interface.php:136 msgid "Your custom path does not exist" msgstr "Seu caminho customizado não existe" # @ backupwordpress #: functions/interface.php:140 msgid "Your custom path is unreachable due to a restriction set in your PHP configuration (open_basedir)" msgstr "Seu caminho personalizado está inacessível devido a uma restrição estabelecida na sua configuração do PHP (open_basedir)" # @ backupwordpress #: functions/interface.php:158 #, php-format msgid "Your site root path %s isn't readable." msgstr "Seu caminho raiz do site %s não existe." # @ backupwordpress #: functions/interface.php:248 #, php-format msgid "Started %s ago" msgstr "Iniciado %s atrás" # @ backupwordpress #: functions/interface.php:298 msgid "No backups completed" msgstr "Nenhum backup completo" # @ backupwordpress #: functions/interface.php:300 #, php-format msgctxt "backups count" msgid "One backup completed" msgid_plural "%1$s backups completed" msgstr[0] "Um backup concluído" msgstr[1] "%1$s backups concluídos" # @ backupwordpress #: functions/interface.php:309 msgid "Complete Hourly" msgstr "Concluído de hora em hora" # @ backupwordpress #: functions/interface.php:310 msgid "File Hourly" msgstr "Arquivo de hora em hora" # @ backupwordpress #: functions/interface.php:311 msgid "Database Hourly" msgstr "Banco de dados de hora em hora" # @ backupwordpress #: functions/interface.php:312 msgid "Complete Twicedaily" msgstr "Completo duas vezes por dia" # @ backupwordpress #: functions/interface.php:313 msgid "File Twicedaily" msgstr "Arquivo duas vezes por dia" # @ backupwordpress #: functions/interface.php:314 msgid "Database Twicedaily" msgstr "Banco de dados duas vezes ao dia" # @ backupwordpress #: functions/interface.php:315 msgid "Complete Daily" msgstr "Completo Diariamente" # @ backupwordpress #: functions/interface.php:316 msgid "File Daily" msgstr "Arquivo Diariamente" # @ backupwordpress #: functions/interface.php:317 msgid "Database Daily" msgstr "Banco de dados diariamente" # @ backupwordpress #: functions/interface.php:318 msgid "Complete Weekly" msgstr "Completo Semanalmente" # @ backupwordpress #: functions/interface.php:319 msgid "File Weekly" msgstr "Arquivo Semanalmente" # @ backupwordpress #: functions/interface.php:320 msgid "Database Weekly" msgstr "Banco de dados semanalmente" # @ backupwordpress #: functions/interface.php:321 msgid "Complete Biweekly" msgstr "Completo Quinzenalmente" # @ backupwordpress #: functions/interface.php:322 msgid "File Biweekly" msgstr "Arquivo Quinzenalmente" # @ backupwordpress #: functions/interface.php:323 msgid "Database Biweekly" msgstr "Banco de dados Quinzenalmente" # @ backupwordpress #: functions/interface.php:324 msgid "Complete Monthly" msgstr "Completo Mensalmentes" # @ backupwordpress #: functions/interface.php:325 msgid "File Monthly" msgstr "Arquivo Mensalmente" # @ backupwordpress #: functions/interface.php:326 msgid "Database Monthly" msgstr "Banco de dados Mensalmente" # @ backupwordpress #: functions/interface.php:327 msgid "Complete Manually" msgstr "Completo Manualmente" # @ backupwordpress #: functions/interface.php:328 msgid "File Manually" msgstr "Arquivo Manualmente" # @ backupwordpress #: functions/interface.php:329 msgid "Database Manually" msgstr "Banco de dados Manualmente" ================================================ FILE: languages/backupwordpress-ro_RO.po ================================================ # Translation of 2.x in Romanian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: ro_RO\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-ru_RU.po ================================================ # Translation of 2.x in Russian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "Резервноекопирование завершено, но со следующими ошибки/предупреждениями, вероятно, все ОК, и можно игнорировать это." #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "Резервирование окончилось неудачно" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "Получать уведомление по электронной почте при завершении резервного копирования, если резервная копия достаточно мала (< %s), то он будет прикреплен к электронной почте. Разделите несколько E-mail адресов с помощью запятой." #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "Максимальный размер файла резервной копии, которая будет прикреплена к уведомлению по электронной почте . По умолчанию %s." #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "Вы можете отправить детали этой ошибки %s, чтобы они могли изучить вопрос." #: ../functions/core.php:246 msgid "Once Hourly" msgstr "Раз в час" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "Два раза в день" #: ../functions/core.php:248 msgid "Once Daily" msgstr "Раз в день" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "Раз в неделю" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "Раз в две недели" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "Раз в месяц" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "Email для поддержки" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Новое правило(а) исключения" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Ответ от сервера:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Если вам нужна помощь в том, как некоторые вещи работают, то прочтите FAQ, нажав на помощь в правом верхнем углу этой страницы." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Запуск резервного копирования" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Дамп базы данных %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Проверка дампа базы данных %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Создание zip архива %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Проверка Zip архива %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Завершение резервного копирования" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress не может работать, когда PHP работает с %s" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$s работает с %2$s, пожалуйста, свяжитесь с вашим хостингом, и попросить их отключить его. BackUpWordPress может работать некорректно, когда %3$s включен." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Время, в которое по расписанию BackUpWordPress должен работать. По умолчанию %s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Вы уверены, что хотите удалить это расписание? Все резервные копии в нем также будут удалены." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "«Отмена», чтобы вернуться, «OK» для удаления." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Вы уверены, что хотите удалить эту резервную копию?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Вы уверены, что хотите удалить этот правило исключения?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Уменьшение количества резервных копий, которые хранятся на этом сервере, вызовет удаление некоторых из существующих резервных копий, Вы уверены, что хотите этого?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Максимальное количество резервных копий не может быть пустым" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Максимальное количество копий должен быть больше 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Исключить" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "по умолчанию" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "заданный" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Только вручную" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "это не займет много времени..." #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "расчет размера Вашего сайта ..." #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Следующее резервное копирование будет %1$s в %2$s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "каждые 12 часов в %1$s & %2$s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "еженедельно в %1$s в %2$s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "раз в две недели в %1$s в %2$s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr " %1$s числа каждого месяца в %2$s" #: ../admin/schedule.php:62 msgid "manually" msgstr "вручную" #: ../admin/schedule.php:71 msgid "this server" msgstr "этом сервере" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "не хранить никаких резервных копий на %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "хранить только последние %1$s резервных копий на %2$s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Резервное копирование %1$s (%2$s) %3$s, %4$s. %5$s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress не смог сделать резервную копию вашего сайта %1$s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Вот ошибки, с которыми мы столкнулись:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Если вышеуказанные ошибки выглядят как марсианские, перешлите это письмо на %3$s, мы посмотрим" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "С уважением,\n" "Извиняющийся почтовый робот резервного копирования BackUpWordPress" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress завершил резервное копирование Вашего сайта %1$s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Файл резервной копии должtн быть приложен к этому письму." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Вы можете скачать файл резервной копии, нажав на ссылку ниже:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "С уважение,\n" "Счастливый почтовый робот резервного копирования BackUpWordPress" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "К сожалению, резервная копия файла была слишком велика, чтобы прикрепить к этому письму." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Резервное копирование: выгрузки базы данных ..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Резервное копирование: Архивирование всего вверху ..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Неверный путь к резервной копии " #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Неверный корневой путь" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Резервное копирование завершено:" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Ошибка резервного копирования" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "По умолчанию BackUpWordPress выполняет ежедневно резервное копирование базы данных и еженедельно резервное копирование базы данных и файлов. Вы можете изменить это расписание." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Наследие" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Каталог резервных копий не доступен для записи, запустите %1$s или %2$s или установите разрешение самостоятельно." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Каталог резервных копий не может быть создан, потому что каталог %1$s не доступен для записи, запустите %2$s или %3$s или создайте папку самостоятельно." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress установил ваше расписание по умолчанию." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Резервное копирование %s не удалось" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Отправить уведомление по электронной почте %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s - недопустимый email" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Резервные копии будут сжаты и должны быть меньше, чем эта." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "Уведомление по электронной почте" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "раз в час " #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "ежедневно в %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Количество резервных копий на этом сервере" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Настройки расписания" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Закрыть" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Приведенная ниже информация для версии %1$s. Посмотрите файл %2$s чтобы понять особенности версии %3$s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "Корневой каталог в который создается резервная копия. По умолчанию %s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Возможность использования при вызове %1$s. По умолчанию %2$s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Путь к Вашему %1$s доступен. Можете использовать zip архивацию Ваших %2$s и %3$s, если таковые имеются." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "Для BackUpWordPress требуется WordPress версии %s или выше." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Отмена" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Путь к Вашему %1$s доступен. Можете использовать для %2$s путь для резервного копирования, если таковой имеется." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "например" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Вы можете %1$s любые следующие %2$s в файле %3$s для управления дополнительными настройками. %4$s. Заданные %5$s будут выделены." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$s возвращает ответ %2$s, который может означать, что запланированные задачи не отключены должным образом. BackUpWordPress основан на WP-Cron для запуска резервного копирования по графику. См. %3$s для более подробной информации." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/ru/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Безопасный режим" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Ваш каталог резервных копий %1$s не существует и не может быть создан, вместо этого Ваши резервные копии будут созданы в %2$s." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Ваш каталог резервных копий %1$s не доступен для записи, вместо этого новые резервные копии будут созданы в %2$s." #: ../functions/interface.php:261 msgid "cancel" msgstr "отмена" #: ../functions/interface.php:265 msgid "Settings" msgstr "Настройки" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Исключения" #: ../functions/interface.php:29 msgid "Download" msgstr "Загрузить" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress готов к работе." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress обнаружил проблемы в результате последнего резервного копирования." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "База данных и Файлы" #: ../functions/interface.php:240 msgid "Database" msgstr "База данных" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress обнаружил проблему." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Тип резервного копирования не может быть пустым" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Неверный тип резервного копирования" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Расписание не может быть пустым" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Неверное расписание" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Максимальное количество резервных копий должно быть числом" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s не соответствует ни одному файлу." #: ../admin/backups.php:40 msgid "add schedule" msgstr "добавить расписание" #: ../admin/backups.php:71 msgid "Size" msgstr "Размер" #: ../admin/backups.php:72 msgid "Type" msgstr "Тип" #: ../admin/backups.php:73 msgid "Actions" msgstr "Действие" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Может помочь Кодекс." #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Путь к папке, в которой Вы хотели бы хранить резервные файлы, по умолчанию %s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "база данных" #: ../admin/constants.php:14 msgid "files" msgstr "файлы" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Разделенный запятыми список файлов или каталогов для исключения, каталог резервных копий исключается автоматически." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Управление резервным копированием" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Резервные копии" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Вы не используете последнюю стабильную версию BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Константы" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Для получения дополнительной информации:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Форум поддержки" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Помощь с переводом" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Вам необходимо исправить проблемы описанные выше до запуска BackUpWordPress." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Найти" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Правила исключений" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Удалить" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Исключены" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Включены" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Нечитаемые" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Нечитаемые файлы не могут быть скопированы" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Ваш сайт %s. Резервные копии будут сжаты и поэтому будут меньше." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Резервная копия" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "База данных & файлы" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Только файлы" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Только база данных" #: ../functions/interface.php:237 msgid "Files" msgstr "Файлы" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Управление исключениями" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Расписание" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Обновить" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "каждый час в %s мин. часа" #: ../functions/interface.php:275 msgid "Run now" msgstr "Запустить сейчас" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Удалить" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Резервная копия %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Этот файл %s гарантирует, что другие люди не могут загрузить Ваши файлы резервных копий." ================================================ FILE: languages/backupwordpress-sk_SK.po ================================================ # Translation of 2.x in Slovak # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: sk_SK\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "E-mail na podporu" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "Nové pravidlo vylúčiť [s]" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "Tu je odpoveď zo servera:" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "Ak potrebujete pomoc pri získavaní pracovných veciach skontrolujte FAQ kliknutím na Pomocníka v pravom hornom rohu tejto stránky." #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "Spúšťa sa program Zálohovanie" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "Dumping databáza %s" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "Overovanie Dump databázy %s" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "Vytváranie zip archív %s" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "Overovanie Zip archív %s" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "Dokončuje sa zálohovanie" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "BackUpWordPress nemusia fungovať, keď beží php s %s" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "%1$ s beží v %2$ s, prosím kontaktujte svojho hostiteľa a požiadajte ich, aby ju zakázať. BackUpWordPress nemusia fungovať správne, kým %3$ s zapnutý." #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "Čas, ktorý by mala spustiť svoje plány. Predvolené nastavenia na % s." #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "Naozaj chcete odstrániť tento plán? Všetko je to záloh sa tiež odstránia." #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "\"Zrušiť\" ísť späť, \"OK\" zmazať." #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "Naozaj chcete zmaza╗ t·to zßlohu?" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "Naozaj chcete odstrániť toto pravidlo vylúčiť?" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "Zníženie počtu zálohy, ktoré sú uložené na tomto serveri spôsobí niektoré vaše existujúce zálohy vypustiť, ste si istý, že to, čo chcete?" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "Max zálohovanie nemôže byť prázdny" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "Max zálohy musí byť väčšia ako 0" #: ../admin/actions.php:486 msgid "Exclude" msgstr "Vylúčiť" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "predvolené" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "definované" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "Len manuál" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "to by nemalo trvať dlho …" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "vypočítava sa veľkosť vašich stránok …" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "Ďalšie zálohovanie bude na %1$ s na %2$ s" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "každých 12 hodín v %1$ s & %2$ s" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "každý týždeň v %1$ s na %2$ s" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "dvojtýždenník o %1$ s na %2$ s" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "na %1$ s každého mesiaca %2$ s" #: ../admin/schedule.php:62 msgid "manually" msgstr "manuálne" #: ../admin/schedule.php:71 msgid "this server" msgstr "Tento server" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "nechcete uložiť žiadne zálohy na %s" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "uložiť len posledných %1$ s zálohy na %2$ s" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "Zálohovať moje %1$ s %2$ s %3$ s, %4 s. %5$ $s" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "BackUpWordPress sa nepodarilo zálohovať vaše stránky %1$ s." #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "Tu sú chyby, že sme sa už stretli:" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "Ak vyššie uvedené chyby vyzerať Martian, toto e-mailom na %3$ s a budeme sa pozrieť" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" "Kind Regards, \n" " Ospravedlňujúci BackUpWordPress Backup e-mailom Robot" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "BackUpWordPress ukončil zálohu vaše stránky %1$ s." #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "Záložný súbor má byť pričlenený na tento e-mail." #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "Záložný súbor si môžete stiahnuť kliknutím na odkaz nižšie:" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" "So srdečným pozdravom,\n" "Šťastný BackUpWordPress Backup e-mailom Robot" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "Bohužiaľ záložný súbor bol príliš veľký pripojiť na tento e-mail." #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "Zálohovanie: Dumpingu databázy..." #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "Zálohovanie: Zipovanie všetko..." #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "Neplatný cestu zálohovania" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "Neplatný koreňový cestu" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "Kompletné zálohovanie: " #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "Zálohovanie zlyhalo" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "V predvolenom nastavení BackUpWordPress vykonáva denné zálohovanie databázy a týždenné zálohovanie súborov & databázy. Môžete upraviť tieto plány." #: ../functions/interface.php:245 msgid "Legacy" msgstr "Dedičstvo" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "Adresára zálohy nie je možné zapisovať, spustiť %1$ s alebo %2$ s alebo nastaviť povolenia sami." #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "Zálohovanie adresára sa nedá vytvoriť, pretože nie je zapisovateľný adresára %1$ s spustiť %2$ s alebo %3$ s alebo vytvorte priečinok sami." #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress má nastavenie vaše predvolené plány." #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "Zálohu %s zlyhalo" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "Odoslať e-mail oznámenia na %s" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s nie je platný e-mail" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "Zálohy sa skomprimujú a by mala byť menšia než tohle." #: ../classes/class-email.php:31 msgid "Email notification" msgstr "E-mail oznámenia" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "hodinové na hodinu" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "denne na %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "Počet zálohy na uloženie, na tomto serveri" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "Nastavenie plánu" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "Zavrieť" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "Nižšie uvedené informácie je pre verziu %1$ s. %2$ s súbor zobrazenia pre Pomocníka špecifického pre verziu %3$ s." #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "V koreňovom adresári, ktorý je zálohovaný. Predvolené nastavenia na % s." #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "Schopnosť používať pri volaní %1$ s. predvolené %2$ s." #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "Cesta k %1$ s spustiteľný. Sa použije na zips až %2$ s a %3$ s Ak je k dispozícii." #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress vyžaduje WordPress verzia %s alebo väčšia." #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "Zrušiť" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "Cesta k %1$ s spustiteľný. Sa použije pre %2$ s časť chrbta ak je k dispozícii." #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "napr" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "Môžete si %1$ s niektorou z nasledujúcich %2$ s vašej %3$ s na ovládanie rozšírených nastavení. %4$ s. zadefinované %5$ s budú zvýraznené." #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "%1$ s sa vracia %2$ s odpoveď, čo by mohlo znamenať cron jobs nie dostať padáka správne. BackUpWordPress sa opiera o wp-cron bežať plánovaným zálohovať ups. Pozri %3$ s pre viac informácií." #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "Núdzový režim" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "Vaše vlastné zálohovanie adresára %1$ s neexistuje a nemožno vytvoriť, zálohy sa uloží do %2$ s namiesto." #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "Vaše vlastné zálohovanie adresára %1$ s nie je zapisovateľný, nové zálohy sa uloží do %2$ s namiesto." #: ../functions/interface.php:261 msgid "cancel" msgstr "zrušiť" #: ../functions/interface.php:265 msgid "Settings" msgstr "Nastavenia" #: ../functions/interface.php:268 msgid "Excludes" msgstr "Vylučuje" #: ../functions/interface.php:29 msgid "Download" msgstr "Stiahnuť" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress je takmer pripravená." #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress zistené problémy s posledného zálohovania." #: ../functions/interface.php:234 msgid "Database and Files" msgstr "Databázy a súbory" #: ../functions/interface.php:240 msgid "Database" msgstr "Databáza" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress bol zistený problém." #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "Typ zálohovania nemôže byť prázdny" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "Neplatný typ zálohovania" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "Plán nemôže byť prázdny" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "Neplatný rozvrh" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "Max zálohy musí byť číslo" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "%s nezodpovedajú žiadne súbory." #: ../admin/backups.php:40 msgid "add schedule" msgstr "pridať plán" #: ../admin/backups.php:71 msgid "Size" msgstr "Veľkosť" #: ../admin/backups.php:72 msgid "Type" msgstr "Typ" #: ../admin/backups.php:73 msgid "Actions" msgstr "Akcie" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "Kódex môže pomôcť" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "Cestu k priečinku chcete uložiť súbory zálohy, predvolené nastavenia na % s." #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "databáza" #: ../admin/constants.php:14 msgid "files" msgstr "súbory" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "Oddelené čiarkou zoznam súborov alebo adresárov vylúčiť, adresári zálohy je automaticky vylúčená." #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "Spravovať zálohy" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "Zálohy" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "Nepoužívate najnovšiu stabilnú verziu BackUpWordPress" #: ../admin/menu.php:77 msgid "FAQ" msgstr "FAQ" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "Konštanty" #: ../admin/menu.php:82 msgid "For more information:" msgstr "Ďalšie informácie:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "Diskusné fóra" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "Pomôcť s prekladom" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "Potrebujete opraviť problémy opísané vyššie, než môžete začať BackUpWordPress." #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "Náhľad" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "Vylúčiť pravidlá" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "Odstrániť" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "Vylúčené" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "Zahrnuté" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "Nečitateľné" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "Nečitateľné súbory nedajú zálohovať" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "Vaše stránky sú % s. zálohy sa skomprimujú a tak bude menšie." #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "Zálohovanie" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "Súborov & databázy" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "Iba súbory" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "Databázy len" #: ../functions/interface.php:237 msgid "Files" msgstr "Súbory" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "Spravovať vylučuje" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "Harmonogram" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "Aktualizácia" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "každú hodinu v %s minúty po hodine" #: ../functions/interface.php:275 msgid "Run now" msgstr "Spustiť teraz" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "Odstrániť" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "Zálohovanie %s" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "Tento súbor %s zaisťuje, že ostatných ľudí nemôže prevziať súbory zo zálohy." ================================================ FILE: languages/backupwordpress-sr_RS.po ================================================ # Translation of 2.x in Serbian # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: sr_RS\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:261 msgid "cancel" msgstr "" #: ../functions/interface.php:265 msgid "Settings" msgstr "" #: ../functions/interface.php:268 msgid "Excludes" msgstr "" #: ../functions/interface.php:29 msgid "Download" msgstr "" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "" #: ../functions/interface.php:240 msgid "Database" msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "" #: ../admin/backups.php:71 msgid "Size" msgstr "" #: ../admin/backups.php:72 msgid "Type" msgstr "" #: ../admin/backups.php:73 msgid "Actions" msgstr "" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "" #: ../admin/constants.php:14 msgid "files" msgstr "" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "" #: ../admin/menu.php:77 msgid "FAQ" msgstr "" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "" #: ../admin/menu.php:82 msgid "For more information:" msgstr "" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "" #: ../functions/interface.php:237 msgid "Files" msgstr "" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" ================================================ FILE: languages/backupwordpress-zh-cn.po ================================================ # Translation of 2.x in Chinese (China) # This file is distributed under the same license as the 2.x package. msgid "" msgstr "" "PO-Revision-Date: 2015-07-18 15:51+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.2\n" "Project-Id-Version: 2.x\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: zh_CN\n" #: ../backupwordpress.php:119 msgid "BackUpWordPress requires PHP version %s or greater." msgstr "" #: ../admin/backups.php:100 msgid "This is where your backups will appear once you have some." msgstr "" #: ../admin/backups.php:120 msgid "% Backups Completed" msgstr "" #: ../admin/backups.php:122 msgid "No Backups Completed" msgstr "" #: ../admin/backups.php:124 msgid "1 Backup Completed" msgstr "" #: ../admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: ../admin/enable-support.php:5 msgid "BackUpWordPress uses %s to provide support. In addition to allowing you to send and receive messages we also send the following server information along with your requests:" msgstr "" #: ../admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: ../admin/enable-support.php:68 msgid "No thanks" msgstr "" #: ../admin/enable-support.php:70 msgid "Yes I want to enable support" msgstr "" #: ../admin/page.php:10 msgid "Support" msgstr "" #: ../admin/page.php:31 msgid "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s" msgstr "" #: ../admin/page.php:35 msgid "Wish you could store your backups in a safer place? Our %1$spremium extensions%2$s enable automatic backups to Dropbox, FTP, Google Drive and more." msgstr "" #: ../admin/schedule-form-excludes.php:19 msgid "Enter new exclude rules as a comma separated list, e.g. %s" msgstr "" #: ../admin/schedule-form.php:45 msgid "Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups" msgstr "" #: ../admin/schedule.php:78 msgid "store only the last backup on %s" msgstr "" #: ../admin/schedule.php:118 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s." msgstr "" #: ../classes/class-schedule.php:239 msgid "Argument 1 for %s must be a valid integer" msgstr "" #: ../classes/class-schedule.php:491 msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\"" msgstr "" #: ../classes/class-schedule.php:811 msgid "Argument 1 for %s must be a non empty string" msgstr "" #: ../classes/class-schedule.php:815 msgid "%s dpesn't exist" msgstr "" #: ../classes/class-schedule.php:819 msgid "That backup wasn't created by this schedule" msgstr "" #: ../classes/class-services.php:252 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: ../classes/class-services.php:267 msgid "Argument 1 for %s must be a registered service" msgstr "" #: ../classes/class-services.php:284 msgid "Argument 1 for %s must be a valid class" msgstr "" #: ../functions/core.php:269 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: ../admin/actions.php:508 msgid "Your backup completed but with the following errors / warnings, it's probably ok to ignore these." msgstr "" #: ../admin/actions.php:512 msgid "Your backup failed" msgstr "" #: ../classes/class-email.php:35 msgid "Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email address's with a comma." msgstr "" #: ../classes/class-email.php:54 msgid "The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s." msgstr "" #: ../admin/actions.php:520 msgid "You can email details of this error to %s so they can look into the issue." msgstr "" #: ../functions/core.php:246 msgid "Once Hourly" msgstr "" #: ../functions/core.php:247 msgid "Twice Daily" msgstr "" #: ../functions/core.php:248 msgid "Once Daily" msgstr "" #: ../functions/core.php:249 msgid "Once Weekly" msgstr "" #: ../functions/core.php:250 msgid "Once Fortnightly" msgstr "" #: ../functions/core.php:251 msgid "Once Monthly" msgstr "" #: ../admin/actions.php:524 msgid "Email to Support" msgstr "" #: ../admin/schedule-form-excludes.php:13 msgid "New Exclude Rule[s]" msgstr "" #: ../admin/actions.php:516 msgid "Here's the response from the server:" msgstr "" #: ../admin/page.php:33 msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page." msgstr "" #: ../classes/class-schedule.php:609 ../functions/interface.php:261 msgid "Starting Backup" msgstr "" #: ../classes/class-schedule.php:686 msgid "Dumping Database %s" msgstr "" #: ../classes/class-schedule.php:691 msgid "Verifying Database Dump %s" msgstr "" #: ../classes/class-schedule.php:696 msgid "Creating zip archive %s" msgstr "" #: ../classes/class-schedule.php:701 msgid "Verifying Zip Archive %s" msgstr "" #: ../classes/class-schedule.php:706 msgid "Finishing Backup" msgstr "" #: ../classes/wp-cli.php:16 msgid "BackUpWordPress may not work when php is running with %s on" msgstr "" #: ../functions/interface.php:78 msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on." msgstr "" #: ../admin/constants.php:26 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: ../backupwordpress.php:171 msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted." msgstr "" #: ../backupwordpress.php:171 ../backupwordpress.php:172 #: ../backupwordpress.php:173 ../backupwordpress.php:174 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: ../backupwordpress.php:172 msgid "Are you sure you want to delete this backup?" msgstr "" #: ../backupwordpress.php:173 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: ../backupwordpress.php:174 msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?" msgstr "" #: ../admin/actions.php:372 msgid "Max backups can't be empty" msgstr "" #: ../admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: ../admin/actions.php:486 msgid "Exclude" msgstr "" #: ../admin/schedule-form-excludes.php:44 msgid "default" msgstr "" #: ../admin/schedule-form-excludes.php:48 msgid "defined" msgstr "" #: ../admin/schedule-form.php:27 msgid "Manual Only" msgstr "" #: ../admin/schedule.php:4 msgid "this shouldn't take long…" msgstr "" #: ../admin/schedule.php:4 msgid "calculating the size of your site…" msgstr "" #: ../admin/schedule.php:12 msgid "The next backup will be on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:37 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: ../admin/schedule.php:43 msgid "weekly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:49 msgid "fortnightly on %1$s at %2$s" msgstr "" #: ../admin/schedule.php:56 msgid "on the %1$s of each month at %2$s" msgstr "" #: ../admin/schedule.php:62 msgid "manually" msgstr "" #: ../admin/schedule.php:71 msgid "this server" msgstr "" #: ../admin/schedule.php:84 msgid "don't store any backups on %s" msgstr "" #: ../admin/schedule.php:90 msgid "store only the last %1$s backups on %2$s" msgstr "" #: ../admin/schedule.php:120 msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s" msgstr "" #: ../classes/class-email.php:156 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: ../classes/class-email.php:156 msgid "Here are the errors that we're encountered:" msgstr "" #: ../classes/class-email.php:156 msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look" msgstr "" #: ../classes/class-email.php:156 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: ../classes/class-email.php:169 msgid "The backup file should be attached to this email." msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "You can download the backup file by clicking the link below:" msgstr "" #: ../classes/class-email.php:169 ../classes/class-email.php:178 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: ../classes/class-email.php:178 msgid "Unfortunately the backup file was too large to attach to this email." msgstr "" #: ../classes/wp-cli.php:19 msgid "Backup: Dumping database..." msgstr "" #: ../classes/wp-cli.php:23 msgid "Backup: Zipping everything up..." msgstr "" #: ../classes/wp-cli.php:38 msgid "Invalid backup path" msgstr "" #: ../classes/wp-cli.php:43 msgid "Invalid root path" msgstr "" #: ../classes/wp-cli.php:68 msgid "Backup Complete: " msgstr "" #: ../classes/wp-cli.php:71 msgid "Backup Failed" msgstr "" #: ../functions/core.php:229 msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules." msgstr "" #: ../functions/interface.php:245 msgid "Legacy" msgstr "" #: ../functions/interface.php:67 msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself." msgstr "你的备份目录无法写入,运行 %1$s 或 %2$s 或者自行设置权限。" #: ../functions/interface.php:54 msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself." msgstr "因为目录 %1$s 无法写入导致不能创建备份目录, 运行 %2$s 或 %3$s 或 自行创建目录。" #: ../functions/core.php:229 msgid "BackUpWordPress has setup your default schedules." msgstr "BackUpWordPress 已经配置了你的默认安排。" #: ../classes/class-email.php:154 msgid "Backup of %s Failed" msgstr "%s 的备份失败" #: ../classes/class-email.php:69 msgid "Send an email notification to %s" msgstr "给%s发送电子邮件通知" #: ../classes/class-email.php:100 msgid "%s isn't a valid email" msgstr "%s 不是有效的电子邮件地址" #: ../admin/schedule.php:4 msgid "Backups will be compressed and should be smaller than this." msgstr "备份会被压缩所以应该会比这个数值要小。" #: ../classes/class-email.php:31 msgid "Email notification" msgstr "电子邮件通知" #: ../admin/schedule.php:19 msgid "hourly on the hour" msgstr "" #: ../admin/schedule.php:25 msgid "daily at %s" msgstr "在每天的 %s" #: ../admin/schedule-form.php:41 msgid "Number of backups to store on this server" msgstr "存储在服务器上的备份数目" #: ../admin/schedule-form.php:7 msgid "Schedule Settings" msgstr "日程安排" #: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119 msgid "Close" msgstr "关闭" #: ../admin/menu.php:69 msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s." msgstr "以下信息适用于%1$s版本。查看%2$s 文件以获取%3$s版本的帮助信息。" #: ../admin/constants.php:23 msgid "The root directory that is backed up. Defaults to %s." msgstr "根目录已经备份。默认备份到 %s 。" #: ../admin/constants.php:20 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: ../admin/constants.php:14 msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available." msgstr "" #: ../backupwordpress.php:132 msgid "BackUpWordPress requires WordPress version %s or greater." msgstr "BackUpWordPress 需要Wordpress的版本至少为%s。" #: ../backupwordpress.php:170 ../admin/actions.php:487 msgid "Cancel" msgstr "取消" #: ../admin/constants.php:11 msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available." msgstr "" #: ../admin/constants.php:8 ../admin/constants.php:11 #: ../admin/constants.php:14 ../admin/constants.php:17 #: ../admin/constants.php:20 ../admin/constants.php:23 #: ../admin/constants.php:26 ../classes/class-email.php:54 msgid "e.g." msgstr "例如:" #: ../admin/constants.php:3 msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: ../admin/actions.php:250 ../admin/actions.php:256 msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details." msgstr "" #: ../functions/interface.php:78 msgid "http://php.net/manual/en/features.safe-mode.php" msgstr "http://php.net/manual/en/features.safe-mode.php" #: ../functions/interface.php:78 msgid "Safe Mode" msgstr "安全模式" #: ../functions/interface.php:89 msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead." msgstr "" #: ../functions/interface.php:100 msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead." msgstr "您设定的备份目录 %1$s 无法写入,新的备份文件将会被存储到 %2$s 。" #: ../functions/interface.php:261 msgid "cancel" msgstr "取消" #: ../functions/interface.php:265 msgid "Settings" msgstr "设置" #: ../functions/interface.php:268 msgid "Excludes" msgstr "排除" #: ../functions/interface.php:29 msgid "Download" msgstr "下载" #: ../functions/interface.php:54 ../functions/interface.php:67 msgid "BackUpWordPress is almost ready." msgstr "BackUpWordPress 已经准备好。" #: ../functions/interface.php:111 msgid "BackUpWordPress detected issues with your last backup." msgstr "BackUpWordPress 检测到上一个备份存在错误。" #: ../functions/interface.php:234 msgid "Database and Files" msgstr "数据库和文件" #: ../functions/interface.php:240 msgid "Database" msgstr "数据库" #: ../admin/actions.php:250 ../admin/actions.php:256 #: ../functions/interface.php:78 ../functions/interface.php:89 #: ../functions/interface.php:100 msgid "BackUpWordPress has detected a problem." msgstr "BackUpWordPress 检测到一个问题。" #: ../admin/actions.php:342 msgid "Backup type cannot be empty" msgstr "备份类型不能为空" #: ../admin/actions.php:345 msgid "Invalid backup type" msgstr "无效的备份类型。" #: ../admin/actions.php:357 msgid "Schedule cannot be empty" msgstr "计划不能为空" #: ../admin/actions.php:360 msgid "Invalid schedule" msgstr "无效的计划" #: ../admin/actions.php:375 msgid "Max backups must be a number" msgstr "最大备份数必须是数字" #: ../admin/actions.php:481 msgid "%s didn't match any files." msgstr "" #: ../admin/backups.php:40 msgid "add schedule" msgstr "添加计划" #: ../admin/backups.php:71 msgid "Size" msgstr "大小" #: ../admin/backups.php:72 msgid "Type" msgstr "类型" #: ../admin/backups.php:73 msgid "Actions" msgstr "行动" #: ../admin/constants.php:3 msgid "The Codex can help" msgstr "" #: ../admin/constants.php:8 msgid "The path to folder you would like to store your backup files in, defaults to %s." msgstr "您想要存储备份文件的目录,默认是%s。" #: ../admin/constants.php:11 ../admin/constants.php:14 msgid "database" msgstr "数据库" #: ../admin/constants.php:14 msgid "files" msgstr "文件" #: ../admin/constants.php:17 msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded." msgstr "" #: ../admin/menu.php:10 ../admin/page.php:6 msgid "Manage Backups" msgstr "管理备份" #: ../admin/menu.php:10 ../admin/menu.php:34 msgid "Backups" msgstr "备份" #: ../admin/menu.php:69 msgid "You are not using the latest stable version of BackUpWordPress" msgstr "您使用的不是BackUpWordPress的最新稳定版本" #: ../admin/menu.php:77 msgid "FAQ" msgstr "常见问题" #: ../admin/constants.php:3 ../admin/menu.php:79 msgid "Constants" msgstr "常量" #: ../admin/menu.php:82 msgid "For more information:" msgstr "获取更多信息:" #: ../admin/menu.php:84 msgid "Support Forums" msgstr "支持论坛" #: ../admin/menu.php:85 msgid "Help with translation" msgstr "帮助进行翻译" #: ../admin/page.php:27 msgid "You need to fix the issues detailed above before BackUpWordPress can start." msgstr "" #: ../admin/schedule-form-excludes.php:17 msgid "Preview" msgstr "预览" #: ../admin/schedule-form-excludes.php:29 msgid "Exclude Rules" msgstr "排除规则" #: ../admin/schedule-form-excludes.php:52 msgid "Remove" msgstr "移除" #: ../admin/schedule-form-excludes.php:71 msgid "Excluded" msgstr "已被排除的" #: ../admin/schedule-form-excludes.php:75 msgid "Included" msgstr "已包括" #: ../admin/schedule-form-excludes.php:79 msgid "Unreadable" msgstr "无法读取的" #: ../admin/schedule-form-excludes.php:107 msgid "Unreadable files can't be backed up" msgstr "无法读取的文件不会被备份" #: ../admin/schedule-form-excludes.php:113 msgid "Your site is %s. Backups will be compressed and so will be smaller." msgstr "您的站点大小为 %s. 压缩文件的大小会比这个值要小。" #: ../admin/schedule-form.php:11 msgid "Backup" msgstr "备份" #: ../admin/schedule-form.php:14 msgid "Both Database & files" msgstr "" #: ../admin/schedule-form.php:15 msgid "Files only" msgstr "仅文件" #: ../admin/schedule-form.php:16 msgid "Database only" msgstr "仅数据库" #: ../functions/interface.php:237 msgid "Files" msgstr "文件" #: ../admin/schedule-form-excludes.php:7 msgid "Manage Excludes" msgstr "" #: ../admin/schedule-form.php:23 msgid "Schedule" msgstr "计划" #: ../backupwordpress.php:169 ../admin/schedule-form.php:58 msgid "Update" msgstr "更新" #: ../admin/schedule.php:19 msgid "hourly at %s minutes past the hour" msgstr "" #: ../functions/interface.php:275 msgid "Run now" msgstr "现在备份" #: ../functions/interface.php:32 ../functions/interface.php:277 msgid "Delete" msgstr "删除" #: ../classes/class-email.php:164 msgid "Backup of %s" msgstr "" #: ../functions/core.php:334 msgid "This %s file ensures that other people cannot download your backup files." msgstr "这个 %s 文件确保其他人不能下载您的备份文件" ================================================ FILE: languages/backupwordpress.pot ================================================ # Copyright (C) 2018 XIBO Ltd # This file is distributed under the GPL-2+. msgid "" msgstr "" "Project-Id-Version: BackUpWordPress 3.10\n" "Report-Msgid-Bugs-To: support@xibomarketing.com\n" "POT-Creation-Date: 2018-10-29 10:39:44+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n" "Last-Translator: XIBO Ltd\n" "Language-Team: XIBO Ltd\n" "X-Generator: grunt-wp-i18n1.0.2\n" #: admin/actions.php:234 tmp/3.7.1/admin/actions.php:234 msgid "The schedule ID was not provided. Aborting." msgstr "" #: admin/actions.php:289 tmp/3.7.1/admin/actions.php:289 msgid "Backup type cannot be empty" msgstr "" #: admin/actions.php:291 tmp/3.7.1/admin/actions.php:291 msgid "Invalid backup type" msgstr "" #: admin/actions.php:302 tmp/3.7.1/admin/actions.php:302 msgid "Schedule cannot be empty" msgstr "" #: admin/actions.php:304 tmp/3.7.1/admin/actions.php:304 msgid "Invalid schedule" msgstr "" #: admin/actions.php:315 tmp/3.7.1/admin/actions.php:315 msgid "Day of the week must be a valid, lowercase day name" msgstr "" #: admin/actions.php:331 tmp/3.7.1/admin/actions.php:331 msgid "Day of month must be between 1 and 31" msgstr "" #: admin/actions.php:347 tmp/3.7.1/admin/actions.php:347 msgid "Hours must be between 0 and 23" msgstr "" #: admin/actions.php:363 tmp/3.7.1/admin/actions.php:363 msgid "Minutes must be between 0 and 59" msgstr "" #: admin/actions.php:374 tmp/3.7.1/admin/actions.php:374 msgid "Max backups can't be empty" msgstr "" #: admin/actions.php:376 tmp/3.7.1/admin/actions.php:376 msgid "Max backups must be a number" msgstr "" #: admin/actions.php:378 tmp/3.7.1/admin/actions.php:378 msgid "Max backups must be greater than 0" msgstr "" #: admin/actions.php:380 tmp/3.7.1/admin/actions.php:380 msgid "" "Storing %s backups would use %s of disk space but your server only has %s " "free." msgstr "" #: admin/actions.php:682 admin/actions.php:688 tmp/3.7.1/admin/actions.php:682 #: tmp/3.7.1/admin/actions.php:688 msgid "BackUpWordPress has detected a problem." msgstr "" #: admin/actions.php:682 tmp/3.7.1/admin/actions.php:682 msgid "" "%1$s is returning a %2$s response which could mean cron jobs aren't getting " "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. " "See the %3$s for more details." msgstr "" #: admin/actions.php:688 tmp/3.7.1/admin/actions.php:688 msgid "" "%1$s is returning a %2$s response which could mean cron jobs aren't getting " "fired properly. BackUpWordPress relies on wp-cron to run scheduled backups, " "and more generally relies on HTTP loopback connections not being blocked " "for manual backups. See the %3$s for more details." msgstr "" #: admin/backups-table.php:14 tmp/3.7.1/admin/backups-table.php:14 msgid "Size" msgstr "" #: admin/backups-table.php:15 admin/schedule-form-excludes.php:124 #: tmp/3.7.1/admin/backups-table.php:15 #: tmp/3.7.1/admin/schedule-form-excludes.php:124 msgid "Type" msgstr "" #: admin/backups-table.php:16 tmp/3.7.1/admin/backups-table.php:16 msgid "Actions" msgstr "" #: admin/backups-table.php:41 tmp/3.7.1/admin/backups-table.php:41 msgid "This is where your backups will appear once you have some." msgstr "" #: admin/backups.php:26 tmp/3.7.1/admin/backups.php:26 msgid "add schedule" msgstr "" #: admin/constants.php:9 tmp/3.7.1/admin/constants.php:9 msgid "" "You can %1$s any of the following %2$s in your %3$s to control advanced " "settings. %4$s. Defined %5$s will be highlighted." msgstr "" #: admin/constants.php:9 admin/menu.php:114 tmp/3.7.1/admin/constants.php:9 #: tmp/3.7.1/admin/menu.php:114 msgid "Constants" msgstr "" #: admin/constants.php:9 tmp/3.7.1/admin/constants.php:9 msgid "The Codex can help" msgstr "" #: admin/constants.php:20 admin/constants.php:36 admin/constants.php:52 #: admin/constants.php:68 admin/constants.php:84 admin/constants.php:100 #: admin/constants.php:116 classes/class-email-service.php:64 #: tmp/3.7.1/admin/constants.php:20 tmp/3.7.1/admin/constants.php:36 #: tmp/3.7.1/admin/constants.php:52 tmp/3.7.1/admin/constants.php:68 #: tmp/3.7.1/admin/constants.php:84 tmp/3.7.1/admin/constants.php:100 #: tmp/3.7.1/admin/constants.php:116 #: tmp/3.7.1/classes/class-email-service.php:64 msgid "You've set it to: %s" msgstr "" #: admin/constants.php:23 tmp/3.7.1/admin/constants.php:23 msgid "" "The path to the folder you would like to store your backup files in, " "defaults to %s." msgstr "" #: admin/constants.php:23 admin/constants.php:39 admin/constants.php:55 #: admin/constants.php:71 admin/constants.php:87 admin/constants.php:103 #: admin/constants.php:119 classes/class-email-service.php:67 #: tmp/3.7.1/admin/constants.php:23 tmp/3.7.1/admin/constants.php:39 #: tmp/3.7.1/admin/constants.php:55 tmp/3.7.1/admin/constants.php:71 #: tmp/3.7.1/admin/constants.php:87 tmp/3.7.1/admin/constants.php:103 #: tmp/3.7.1/admin/constants.php:119 #: tmp/3.7.1/classes/class-email-service.php:67 msgid "e.g." msgstr "" #: admin/constants.php:39 tmp/3.7.1/admin/constants.php:39 msgid "" "The path to your %1$s executable. Will be used for the %2$s part of the " "back up if available." msgstr "" #: admin/constants.php:39 admin/constants.php:55 #: tmp/3.7.1/admin/constants.php:39 tmp/3.7.1/admin/constants.php:55 msgid "database" msgstr "" #: admin/constants.php:55 tmp/3.7.1/admin/constants.php:55 msgid "" "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s " "if available." msgstr "" #: admin/constants.php:55 tmp/3.7.1/admin/constants.php:55 msgid "files" msgstr "" #: admin/constants.php:71 tmp/3.7.1/admin/constants.php:71 msgid "" "Comma separated list of files or directories to exclude, the backups " "directory is automatically excluded." msgstr "" #: admin/constants.php:87 tmp/3.7.1/admin/constants.php:87 msgid "The capability to use when calling %1$s. Defaults to %2$s." msgstr "" #: admin/constants.php:103 tmp/3.7.1/admin/constants.php:103 msgid "The root directory that is backed up. Defaults to %s." msgstr "" #: admin/constants.php:119 tmp/3.7.1/admin/constants.php:119 msgid "The time that your schedules should run. Defaults to %s." msgstr "" #: admin/enable-support.php:3 tmp/3.7.1/admin/enable-support.php:3 msgid "Enable BackUpWordPress Support" msgstr "" #: admin/enable-support.php:5 tmp/3.7.1/admin/enable-support.php:5 msgid "" "BackUpWordPress uses %s to provide support. In addition to allowing you to " "send and receive messages we also send the following server information " "along with your requests:" msgstr "" #: admin/enable-support.php:58 tmp/3.7.1/admin/enable-support.php:58 msgid "You can disable support in the future by deactivating BackUpWordPress." msgstr "" #: admin/enable-support.php:60 tmp/3.7.1/admin/enable-support.php:60 msgid "No, thanks" msgstr "" #: admin/enable-support.php:61 tmp/3.7.1/admin/enable-support.php:61 msgid "Yes, I want to enable support" msgstr "" #: admin/extensions.php:7 tmp/3.7.1/admin/extensions.php:7 msgid "← Backups" msgstr "" #: admin/extensions.php:8 admin/menu.php:17 tmp/3.7.1/admin/extensions.php:8 #: tmp/3.7.1/admin/menu.php:17 msgid "BackUpWordPress Extensions" msgstr "" #: admin/extensions.php:12 tmp/3.7.1/admin/extensions.php:12 msgid "" "Extend BackUpWordPress by installing extensions. Extensions allow you to " "pick and choose the exact features you need whilst also supporting us, the " "developers, so we can continue working on BackUpWordPress." msgstr "" #: admin/extensions.php:41 tmp/3.7.1/admin/extensions.php:41 msgid "Remote Storage" msgstr "" #: admin/extensions.php:43 tmp/3.7.1/admin/extensions.php:43 msgid "" "It's important to store your backups somewhere other than on your site. " "Using the extensions below you can easily push your backups to one or more " "Cloud providers." msgstr "" #: admin/extensions.php:104 tmp/3.7.1/admin/extensions.php:104 msgid "Update %s now" msgstr "" #: admin/extensions.php:106 tmp/3.7.1/admin/extensions.php:106 msgid "Update Now" msgstr "" #: admin/extensions.php:136 tmp/3.7.1/admin/extensions.php:136 msgid "Activate %s" msgstr "" #: admin/extensions.php:137 tmp/3.7.1/admin/extensions.php:137 msgid "Activate" msgstr "" #: admin/extensions.php:148 tmp/3.7.1/admin/extensions.php:148 msgid "Install %s now" msgstr "" #: admin/extensions.php:150 tmp/3.7.1/admin/extensions.php:150 msgid "Buy Now $%s" msgstr "" #: admin/extensions.php:162 tmp/3.7.1/admin/extensions.php:162 msgid "More information about %s" msgstr "" #: admin/extensions.php:164 tmp/3.7.1/admin/extensions.php:164 msgid "More Details" msgstr "" #: admin/extensions.php:187 tmp/3.7.1/admin/extensions.php:187 msgid "Last Updated: %s ago" msgstr "" #: admin/faq.php:2 tmp/3.7.1/admin/faq.php:2 msgid "Where does BackUpWordPress store the backup files?" msgstr "" #: admin/faq.php:4 tmp/3.7.1/admin/faq.php:4 msgid "" "Backups are stored on your server in /wp-content/backups, you " "can change the directory." msgstr "" #: admin/faq.php:6 tmp/3.7.1/admin/faq.php:6 msgid "" "Important: By default BackUpWordPress backs up everything in your site root " "as well as your database, this includes any non WordPress folders that " "happen to be in your site root. This does mean that your backup directory " "can get quite large." msgstr "" #: admin/faq.php:8 tmp/3.7.1/admin/faq.php:8 msgid "What if I want to back up my site to another destination?" msgstr "" #: admin/faq.php:10 tmp/3.7.1/admin/faq.php:10 msgid "" "We no longer sell or support the paid add-ons (e.g. for backups to Dropbox " "and Google Drive). It's certainly a good idea to backup to cloud storage to " "protect against server-wide risks. For this we recommend UpdraftPlus WordPress Backups which can do " "things for free BackupWordPress Premium could do on a paid basis. Click " "here for full comparison." msgstr "" #: admin/faq.php:12 tmp/3.7.1/admin/faq.php:12 msgid "How do I restore my site from a backup?" msgstr "" #: admin/faq.php:14 tmp/3.7.1/admin/faq.php:14 msgid "" "You need to download the latest backup file either by clicking download on " "the backups page or via FTP. Unzip the files and " "upload all the files to your server overwriting your site. You can then " "import the database using your hosts database management tool (likely " "phpMyAdmin)." msgstr "" #: admin/faq.php:16 tmp/3.7.1/admin/faq.php:16 msgid "" "See this guide for more details - How to restore from backup." msgstr "" #: admin/faq.php:18 tmp/3.7.1/admin/faq.php:18 msgid "Does BackUpWordPress back up the backups directory?" msgstr "" #: admin/faq.php:20 tmp/3.7.1/admin/faq.php:20 msgid "No." msgstr "" #: admin/faq.php:22 tmp/3.7.1/admin/faq.php:22 msgid "I'm not receiving my backups by email" msgstr "" #: admin/faq.php:24 tmp/3.7.1/admin/faq.php:24 msgid "" "Most servers have a filesize limit on email attachments, it's generally " "about 10mb. If your backup file is over that limit, it won't be sent " "attached to the email. Instead, you should receive an email with a link to " "download the backup. If you aren't even receiving that, then you likely " "have a mail issue on your server that you'll need to contact your host " "about." msgstr "" #: admin/faq.php:26 tmp/3.7.1/admin/faq.php:26 msgid "How many backups are stored by default?" msgstr "" #: admin/faq.php:28 tmp/3.7.1/admin/faq.php:28 msgid "BackUpWordPress stores the last 10 backups by default." msgstr "" #: admin/faq.php:30 tmp/3.7.1/admin/faq.php:30 msgid "How long should a backup take?" msgstr "" #: admin/faq.php:32 tmp/3.7.1/admin/faq.php:32 msgid "" "Unless your site is very large (many gigabytes) it should only take a few " "minutes to perform a backup. If your back up has been running for longer " "than an hour, it's safe to assume that something has gone wrong. Try " "de-activating and re-activating the plugin. If it keeps happening, contact " "support." msgstr "" #: admin/faq.php:34 tmp/3.7.1/admin/faq.php:34 msgid "What do I do if I get the wp-cron error message?" msgstr "" #: admin/faq.php:36 tmp/3.7.1/admin/faq.php:36 msgid "" "The issue is that your wp-cron.php is not returning a " "200 response when hit with a HTTP request originating from " "your own server, it could be several things. In most cases, it's an issue " "with the server / site." msgstr "" #: admin/faq.php:38 tmp/3.7.1/admin/faq.php:38 msgid "There are some things you can test to confirm this is the issue." msgstr "" #: admin/faq.php:40 tmp/3.7.1/admin/faq.php:40 msgid "Are scheduled posts working? (They use wp-cron as well.)" msgstr "" #: admin/faq.php:42 tmp/3.7.1/admin/faq.php:42 msgid "" "Are you hosted on Heart Internet? (wp-cron may not be supported by Heart " "Internet, see below for work-around.)" msgstr "" #: admin/faq.php:44 tmp/3.7.1/admin/faq.php:44 msgid "If you click manual backup, does it work?" msgstr "" #: admin/faq.php:46 tmp/3.7.1/admin/faq.php:46 msgid "" "Try adding define( 'ALTERNATE_WP_CRON', true ); to your " "wp-config.php. Do automatic backups work?" msgstr "" #: admin/faq.php:48 tmp/3.7.1/admin/faq.php:48 msgid "" "Is your site private (i.e. is it behind some kind of authentication, " "maintenance plugin, .htaccess)? If so, wp-cron won't work until you remove " "it. If you are and you temporarily remove the authentication, do backups " "start working?" msgstr "" #: admin/faq.php:50 tmp/3.7.1/admin/faq.php:50 msgid "" "Report the results to our support team for further help. To do this, email " "support@xibomarketing.com" msgstr "" #: admin/faq.php:52 tmp/3.7.1/admin/faq.php:52 msgid "How to get BackUpWordPress working in Heart Internet" msgstr "" #: admin/faq.php:54 tmp/3.7.1/admin/faq.php:54 msgid "" "The script to be entered into the Heart Internet cPanel is: " "/usr/bin/php5 " "/home/sites/yourdomain.com/public_html/wp-cron.php (note the space " "between php5 and the location of the file). The file " "wp-cron.php chmod must be set to 711." msgstr "" #: admin/faq.php:56 tmp/3.7.1/admin/faq.php:56 msgid "My backups seem to be failing?" msgstr "" #: admin/faq.php:58 tmp/3.7.1/admin/faq.php:58 msgid "" "If your backups are failing, it's commonly caused by a lack of available " "resources on your server. To establish this is the case, exclude the " "complete (or parts of the) uploads folder and run a backup. If that " "succeeds, you know it's probably a server issue. If it does not succeed, " "report the results to our support team for further help. You can contact " "support by emailing support@xibomarketing.com" msgstr "" #: admin/menu.php:12 tmp/3.7.1/admin/menu.php:12 msgid "Manage Backups | BackUpWordPress" msgstr "" #: admin/menu.php:12 admin/menu.php:14 admin/menu.php:77 #: tmp/3.7.1/admin/menu.php:12 tmp/3.7.1/admin/menu.php:14 #: tmp/3.7.1/admin/menu.php:77 msgid "Backups" msgstr "" #: admin/menu.php:14 tmp/3.7.1/admin/menu.php:14 msgid "Manage Backups" msgstr "" #: admin/menu.php:17 tmp/3.7.1/admin/menu.php:17 msgid "Extensions" msgstr "" #: admin/menu.php:108 tmp/3.7.1/admin/menu.php:108 msgid "FAQ" msgstr "" #: admin/menu.php:127 tmp/3.7.1/admin/menu.php:127 msgid "Server Info" msgstr "" #: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134 msgid "For more information:" msgstr "" #: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134 msgid "Support Forums" msgstr "" #: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134 msgid "Help with translation" msgstr "" #: admin/schedule-form-excludes.php:11 #: tmp/3.7.1/admin/schedule-form-excludes.php:11 msgid "Currently Excluded" msgstr "" #: admin/schedule-form-excludes.php:15 #: tmp/3.7.1/admin/schedule-form-excludes.php:15 msgid "" "We automatically detect and ignore common Version Control Systems folders " "and other backup plugin folders." msgstr "" #: admin/schedule-form-excludes.php:55 #: tmp/3.7.1/admin/schedule-form-excludes.php:55 msgid "Default rule" msgstr "" #: admin/schedule-form-excludes.php:59 #: tmp/3.7.1/admin/schedule-form-excludes.php:59 msgid "Defined in %s" msgstr "" #: admin/schedule-form-excludes.php:67 #: tmp/3.7.1/admin/schedule-form-excludes.php:67 msgid "Stop excluding" msgstr "" #: admin/schedule-form-excludes.php:83 #: tmp/3.7.1/admin/schedule-form-excludes.php:83 msgid "Your Site" msgstr "" #: admin/schedule-form-excludes.php:87 #: tmp/3.7.1/admin/schedule-form-excludes.php:87 msgid "" "Here's a directory listing of all files on your site, you can browse " "through and exclude files or folders that you don't want included in your " "backup." msgstr "" #: admin/schedule-form-excludes.php:121 #: tmp/3.7.1/admin/schedule-form-excludes.php:121 msgid "Name" msgstr "" #: admin/schedule-form-excludes.php:122 #: tmp/3.7.1/admin/schedule-form-excludes.php:122 msgid "Included Size" msgstr "" #: admin/schedule-form-excludes.php:123 #: tmp/3.7.1/admin/schedule-form-excludes.php:123 msgid "Permissions" msgstr "" #: admin/schedule-form-excludes.php:125 #: tmp/3.7.1/admin/schedule-form-excludes.php:125 msgid "Status" msgstr "" #: admin/schedule-form-excludes.php:186 admin/schedule-form-excludes.php:316 #: tmp/3.7.1/admin/schedule-form-excludes.php:186 #: tmp/3.7.1/admin/schedule-form-excludes.php:316 #. translators: 1: Excluded size 2: Overall site size #. translators: 1: Excluded size 2: Overall directory/file size msgid "%1$s of %2$s" msgstr "" #: admin/schedule-form-excludes.php:193 #: tmp/3.7.1/admin/schedule-form-excludes.php:193 msgid "Refresh" msgstr "" #: admin/schedule-form-excludes.php:208 admin/schedule-form-excludes.php:353 #: tmp/3.7.1/admin/schedule-form-excludes.php:208 #: tmp/3.7.1/admin/schedule-form-excludes.php:353 msgid "Symlink" msgstr "" #: admin/schedule-form-excludes.php:210 admin/schedule-form-excludes.php:356 #: tmp/3.7.1/admin/schedule-form-excludes.php:210 #: tmp/3.7.1/admin/schedule-form-excludes.php:356 msgid "Folder" msgstr "" #: admin/schedule-form-excludes.php:358 #: tmp/3.7.1/admin/schedule-form-excludes.php:358 msgid "File" msgstr "" #: admin/schedule-form-excludes.php:367 #: tmp/3.7.1/admin/schedule-form-excludes.php:367 msgid "Unreadable files won't be backed up." msgstr "" #: admin/schedule-form-excludes.php:368 #: tmp/3.7.1/admin/schedule-form-excludes.php:368 msgid "Unreadable" msgstr "" #: admin/schedule-form-excludes.php:373 #: tmp/3.7.1/admin/schedule-form-excludes.php:373 msgid "Excluded" msgstr "" #: admin/schedule-form-excludes.php:395 #: tmp/3.7.1/admin/schedule-form-excludes.php:395 msgid "Exclude →" msgstr "" #: admin/schedule-form-excludes.php:410 #: tmp/3.7.1/admin/schedule-form-excludes.php:410 msgid "This folder is empty" msgstr "" #: admin/schedule-form-excludes.php:422 admin/schedule-form.php:204 #: admin/schedule-settings.php:89 #: tmp/3.7.1/admin/schedule-form-excludes.php:422 #: tmp/3.7.1/admin/schedule-form.php:204 #: tmp/3.7.1/admin/schedule-settings.php:89 msgid "Done" msgstr "" #: admin/schedule-form.php:7 admin/schedule-settings.php:15 #: tmp/3.7.1/admin/schedule-form.php:7 tmp/3.7.1/admin/schedule-settings.php:15 msgid "Settings" msgstr "" #: admin/schedule-form.php:42 tmp/3.7.1/admin/schedule-form.php:42 msgid "Backup" msgstr "" #: admin/schedule-form.php:49 tmp/3.7.1/admin/schedule-form.php:49 msgid "Both Database & files" msgstr "" #: admin/schedule-form.php:51 tmp/3.7.1/admin/schedule-form.php:51 msgid "Files only" msgstr "" #: admin/schedule-form.php:53 tmp/3.7.1/admin/schedule-form.php:53 msgid "Database only" msgstr "" #: admin/schedule-form.php:64 tmp/3.7.1/admin/schedule-form.php:64 msgid "Schedule" msgstr "" #: admin/schedule-form.php:71 tmp/3.7.1/admin/schedule-form.php:71 msgid "Manual Only" msgstr "" #: admin/schedule-form.php:98 tmp/3.7.1/admin/schedule-form.php:98 msgid "Start Day" msgstr "" #: admin/schedule-form.php:106 tmp/3.7.1/admin/schedule-form.php:106 msgid "Monday" msgstr "" #: admin/schedule-form.php:107 tmp/3.7.1/admin/schedule-form.php:107 msgid "Tuesday" msgstr "" #: admin/schedule-form.php:108 tmp/3.7.1/admin/schedule-form.php:108 msgid "Wednesday" msgstr "" #: admin/schedule-form.php:109 tmp/3.7.1/admin/schedule-form.php:109 msgid "Thursday" msgstr "" #: admin/schedule-form.php:110 tmp/3.7.1/admin/schedule-form.php:110 msgid "Friday" msgstr "" #: admin/schedule-form.php:111 tmp/3.7.1/admin/schedule-form.php:111 msgid "Saturday" msgstr "" #: admin/schedule-form.php:112 tmp/3.7.1/admin/schedule-form.php:112 msgid "Sunday" msgstr "" #: admin/schedule-form.php:130 tmp/3.7.1/admin/schedule-form.php:130 msgid "Start Day of Month" msgstr "" #: admin/schedule-form.php:142 tmp/3.7.1/admin/schedule-form.php:142 msgid "Start Time" msgstr "" #: admin/schedule-form.php:151 tmp/3.7.1/admin/schedule-form.php:151 msgid "Hours" msgstr "" #: admin/schedule-form.php:155 tmp/3.7.1/admin/schedule-form.php:155 msgid "Minutes" msgstr "" #: admin/schedule-form.php:160 tmp/3.7.1/admin/schedule-form.php:160 msgid "24-hour format." msgstr "" #: admin/schedule-form.php:161 tmp/3.7.1/admin/schedule-form.php:161 msgid "The second backup will run 12 hours after the first." msgstr "" #: admin/schedule-form.php:171 tmp/3.7.1/admin/schedule-form.php:171 msgid "Number of backups to store on this server" msgstr "" #: admin/schedule-form.php:180 tmp/3.7.1/admin/schedule-form.php:180 msgid "Past this limit older backups will be deleted automatically." msgstr "" #: admin/schedule-form.php:187 tmp/3.7.1/admin/schedule-form.php:187 msgid "This schedule will store a maximum of %s of backups." msgstr "" #: admin/schedule-sentence.php:14 tmp/3.7.1/admin/schedule-sentence.php:14 msgid "The next backup will be on %1$s at %2$s %3$s" msgstr "" #: admin/schedule-sentence.php:24 tmp/3.7.1/admin/schedule-sentence.php:24 msgid "hourly on the hour" msgstr "" #: admin/schedule-sentence.php:24 tmp/3.7.1/admin/schedule-sentence.php:24 msgid "hourly at %s minutes past the hour" msgstr "" #: admin/schedule-sentence.php:30 tmp/3.7.1/admin/schedule-sentence.php:30 msgid "daily at %s" msgstr "" #: admin/schedule-sentence.php:41 tmp/3.7.1/admin/schedule-sentence.php:41 msgid "every 12 hours at %1$s & %2$s" msgstr "" #: admin/schedule-sentence.php:47 tmp/3.7.1/admin/schedule-sentence.php:47 msgid "weekly on %1$s at %2$s" msgstr "" #: admin/schedule-sentence.php:53 tmp/3.7.1/admin/schedule-sentence.php:53 msgid "every two weeks on %1$s at %2$s" msgstr "" #: admin/schedule-sentence.php:59 tmp/3.7.1/admin/schedule-sentence.php:59 msgid "on the %1$s of each month at %2$s" msgstr "" #: admin/schedule-sentence.php:65 admin/schedule-sentence.php:71 #: tmp/3.7.1/admin/schedule-sentence.php:65 #: tmp/3.7.1/admin/schedule-sentence.php:71 msgid "manually" msgstr "" #: admin/schedule-sentence.php:76 tmp/3.7.1/admin/schedule-sentence.php:76 msgid "Check the help tab to learn how to change where your backups are stored." msgstr "" #: admin/schedule-sentence.php:83 tmp/3.7.1/admin/schedule-sentence.php:83 msgid "store the most recent backup in %s" msgstr "" #: admin/schedule-sentence.php:89 tmp/3.7.1/admin/schedule-sentence.php:89 msgid "don't store any backups in on this server" msgstr "" #: admin/schedule-sentence.php:95 tmp/3.7.1/admin/schedule-sentence.php:95 msgid "store the last %1$s backups in %2$s" msgstr "" #: admin/schedule-sentence.php:127 tmp/3.7.1/admin/schedule-sentence.php:127 msgid "Send a copy of each backup to %s." msgstr "" #: admin/schedule-sentence.php:160 tmp/3.7.1/admin/schedule-sentence.php:160 msgid "Backups will be compressed and should be smaller than this." msgstr "" #: admin/schedule-settings.php:11 tmp/3.7.1/admin/schedule-settings.php:11 msgid "Run now" msgstr "" #: admin/schedule-settings.php:21 tmp/3.7.1/admin/schedule-settings.php:21 msgid "Excludes" msgstr "" #: admin/schedule-settings.php:34 functions/interface.php:47 #: tmp/3.7.1/admin/schedule-settings.php:34 #: tmp/3.7.1/functions/interface.php:47 msgid "Delete" msgstr "" #: admin/upsell.php:7 tmp/3.7.1/admin/upsell.php:7 msgid "" "If you're finding BackUpWordPress useful, please %1$s rate it on the plugin " "directory%2$s." msgstr "" #: admin/upsell.php:16 classes/class-plugin.php:456 #: tmp/3.7.1/admin/upsell.php:16 tmp/3.7.1/classes/class-plugin.php:456 msgid "Dismiss this notice." msgstr "" #: classes/backup/class-backup.php:57 #: tmp/3.7.1/classes/backup/class-backup.php:57 msgid "Backing up database..." msgstr "" #: classes/backup/class-backup.php:111 #: tmp/3.7.1/classes/backup/class-backup.php:111 msgid "Backing up files..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:46 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:46 msgid "Backup: Dumping database..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:50 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:50 msgid "Backup: Zipping everything up..." msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:64 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:64 msgid "Invalid backup path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:69 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:69 msgid "Invalid root path" msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:96 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:96 msgid "Backup Complete: " msgstr "" #: classes/class-backupwordpress-wp-cli-command.php:98 #: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:98 msgid "Backup Failed" msgstr "" #: classes/class-email-service.php:30 #: tmp/3.7.1/classes/class-email-service.php:30 msgid "Email notification" msgstr "" #: classes/class-email-service.php:36 #: tmp/3.7.1/classes/class-email-service.php:36 msgid "" "Receive a notification email when a backup completes. If the backup is " "small enough (< %s), then it will be attached to the email. Separate " "multiple email addresses with a comma." msgstr "" #: classes/class-email-service.php:67 #: tmp/3.7.1/classes/class-email-service.php:67 msgid "" "The maximum filesize of your backup that will be attached to your " "notification emails . Defaults to %s." msgstr "" #: classes/class-email-service.php:86 #: tmp/3.7.1/classes/class-email-service.php:86 msgid "Send an email notification to %s" msgstr "" #: classes/class-email-service.php:122 #: tmp/3.7.1/classes/class-email-service.php:122 msgid "%s isn't a valid email" msgstr "" #: classes/class-email-service.php:177 classes/class-webhook-service.php:59 #: tmp/3.7.1/classes/class-email-service.php:177 #: tmp/3.7.1/classes/class-webhook-service.php:59 msgid "Backup of %s Failed" msgstr "" #: classes/class-email-service.php:179 #: tmp/3.7.1/classes/class-email-service.php:179 msgid "BackUpWordPress was unable to backup your site %1$s." msgstr "" #: classes/class-email-service.php:179 #: tmp/3.7.1/classes/class-email-service.php:179 msgid "Here are the errors that we've encountered:" msgstr "" #: classes/class-email-service.php:179 #: tmp/3.7.1/classes/class-email-service.php:179 msgid "" "If the errors above look like Martian, forward this email to %3$s and we'll " "take a look" msgstr "" #: classes/class-email-service.php:179 #: tmp/3.7.1/classes/class-email-service.php:179 msgid "" "Kind Regards,\n" "The Apologetic BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:187 #: tmp/3.7.1/classes/class-email-service.php:187 msgid "Backup of %s" msgstr "" #: classes/class-email-service.php:192 classes/class-email-service.php:201 #: tmp/3.7.1/classes/class-email-service.php:192 #: tmp/3.7.1/classes/class-email-service.php:201 msgid "BackUpWordPress has completed a backup of your site %1$s." msgstr "" #: classes/class-email-service.php:192 #: tmp/3.7.1/classes/class-email-service.php:192 msgid "The backup file should be attached to this email." msgstr "" #: classes/class-email-service.php:192 classes/class-email-service.php:201 #: tmp/3.7.1/classes/class-email-service.php:192 #: tmp/3.7.1/classes/class-email-service.php:201 msgid "You can download the backup file by clicking the link below:" msgstr "" #: classes/class-email-service.php:192 classes/class-email-service.php:201 #: tmp/3.7.1/classes/class-email-service.php:192 #: tmp/3.7.1/classes/class-email-service.php:201 msgid "" "Kind Regards,\n" "The Happy BackUpWordPress Backup Emailing Robot" msgstr "" #: classes/class-email-service.php:201 #: tmp/3.7.1/classes/class-email-service.php:201 msgid "Unfortunately, the backup file was too large to attach to this email." msgstr "" #: classes/class-path.php:355 tmp/3.7.1/classes/class-path.php:355 msgid "This %s file ensures that other people cannot download your backup files." msgstr "" #: classes/class-plugin.php:242 tmp/3.7.1/classes/class-plugin.php:242 msgid "Update" msgstr "" #: classes/class-plugin.php:243 tmp/3.7.1/classes/class-plugin.php:243 msgid "Cancel" msgstr "" #: classes/class-plugin.php:244 tmp/3.7.1/classes/class-plugin.php:244 msgid "" "Are you sure you want to delete this schedule? All of its backups will also " "be deleted." msgstr "" #: classes/class-plugin.php:244 classes/class-plugin.php:245 #: classes/class-plugin.php:246 classes/class-plugin.php:247 #: tmp/3.7.1/classes/class-plugin.php:244 #: tmp/3.7.1/classes/class-plugin.php:245 #: tmp/3.7.1/classes/class-plugin.php:246 #: tmp/3.7.1/classes/class-plugin.php:247 msgid "'Cancel' to go back, 'OK' to delete." msgstr "" #: classes/class-plugin.php:245 tmp/3.7.1/classes/class-plugin.php:245 msgid "Are you sure you want to delete this backup?" msgstr "" #: classes/class-plugin.php:246 tmp/3.7.1/classes/class-plugin.php:246 msgid "Are you sure you want to remove this exclude rule?" msgstr "" #: classes/class-plugin.php:247 tmp/3.7.1/classes/class-plugin.php:247 msgid "" "Reducing the number of backups that are stored on this server will cause " "some of your existing backups to be deleted. Are you sure that's what you " "want?" msgstr "" #: classes/class-plugin.php:444 tmp/3.7.1/classes/class-plugin.php:444 msgid "" "BackupWordPress was created by our friends at HumanMade but is now owned by " "XIBO. We're committed to opensource and WordPress and will provide free " "support for the many BackupWordPress fans. However, we'll no longer be " "selling or supporting the paid add-ons (e.g. for backups to Dropbox and " "Google Drive).%1$sIt's a good idea to backup to cloud storage to protect " "against server-wide risks. For this we recommend %2$sUpdraftPlus WordPress " "Backups%3$s. Click here for %4$sfull comparison%3$s" msgstr "" #: classes/class-scheduled-backup.php:321 #: tmp/3.7.1/classes/class-scheduled-backup.php:321 msgid "Argument 1 for %s must be a valid cron recurrence or \"manually\"" msgstr "" #: classes/class-scheduled-backup.php:427 functions/interface.php:320 #: tmp/3.7.1/classes/class-scheduled-backup.php:427 #: tmp/3.7.1/functions/interface.php:320 msgid "Starting backup..." msgstr "" #: classes/class-scheduled-backup.php:429 #: classes/class-scheduled-backup.php:444 #: tmp/3.7.1/classes/class-scheduled-backup.php:429 #: tmp/3.7.1/classes/class-scheduled-backup.php:444 msgid "Deleting old backups..." msgstr "" #: classes/class-scheduled-backup.php:544 #: tmp/3.7.1/classes/class-scheduled-backup.php:544 #. translators: min=minute msgid "%s min" msgid_plural "%s mins" msgstr[0] "" msgstr[1] "" #: classes/class-scheduled-backup.php:554 #: tmp/3.7.1/classes/class-scheduled-backup.php:554 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "" msgstr[1] "" #: classes/class-scheduled-backup.php:615 #: tmp/3.7.1/classes/class-scheduled-backup.php:615 msgid "Argument 1 for %s must be a non-empty string" msgstr "" #: classes/class-scheduled-backup.php:620 #: tmp/3.7.1/classes/class-scheduled-backup.php:620 msgid "%s doesn't exist" msgstr "" #: classes/class-scheduled-backup.php:625 #: tmp/3.7.1/classes/class-scheduled-backup.php:625 msgid "That backup wasn't created by this schedule" msgstr "" #: classes/class-services.php:81 tmp/3.7.1/classes/class-services.php:81 msgid "Argument 1 for %s must be a valid filepath" msgstr "" #: classes/class-services.php:97 tmp/3.7.1/classes/class-services.php:97 msgid "Argument 1 for %s must be a registered service" msgstr "" #: classes/class-services.php:115 classes/deprecated.php:81 #: tmp/3.7.1/classes/class-services.php:115 tmp/3.7.1/classes/deprecated.php:81 msgid "Argument 1 for %s must be a valid class" msgstr "" #. Plugin Name of the plugin/theme msgid "BackUpWordPress" msgstr "" #: classes/class-setup.php:169 tmp/3.7.1/classes/class-setup.php:169 msgid "" "BackUpWordPress requires PHP version %1$s or later and WordPress version " "%2$s or later to run. It has not been activated." msgstr "" #: classes/class-webhook-service.php:103 #: tmp/3.7.1/classes/class-webhook-service.php:103 msgid "Error: %s" msgstr "" #: functions/core.php:331 tmp/3.7.1/functions/core.php:331 msgid "BackUpWordPress has set up your default schedules." msgstr "" #: functions/core.php:331 tmp/3.7.1/functions/core.php:331 msgid "" "By default BackUpWordPress performs a daily backup of your database and a " "weekly backup of your database & files. You can modify these schedules." msgstr "" #: functions/core.php:347 tmp/3.7.1/functions/core.php:347 msgid "Once Hourly" msgstr "" #: functions/core.php:348 tmp/3.7.1/functions/core.php:348 msgid "Twice Daily" msgstr "" #: functions/core.php:349 tmp/3.7.1/functions/core.php:349 msgid "Once Daily" msgstr "" #: functions/core.php:350 tmp/3.7.1/functions/core.php:350 msgid "Once Weekly" msgstr "" #: functions/core.php:351 tmp/3.7.1/functions/core.php:351 msgid "Once Every Two Weeks" msgstr "" #: functions/core.php:352 tmp/3.7.1/functions/core.php:352 msgid "Once Monthly" msgstr "" #: functions/core.php:371 tmp/3.7.1/functions/core.php:371 msgid "You can only delete directories inside your WordPress installation" msgstr "" #: functions/interface.php:33 tmp/3.7.1/functions/interface.php:33 msgid "Download" msgstr "" #: functions/interface.php:86 tmp/3.7.1/functions/interface.php:86 msgid "BackUpWordPress detected issues with your last backup." msgstr "" #: functions/interface.php:163 tmp/3.7.1/functions/interface.php:163 #. translators: 1: The `PHP` abbreviation. msgid "" "%1$s is running in Safe Mode, " "please contact your host and ask them to disable it. BackUpWordPress may " "not work correctly whilst Safe Mode is on." msgstr "" #: functions/interface.php:174 tmp/3.7.1/functions/interface.php:174 msgid "" "Your server has an %1$s restriction in effect and your custom backups " "directory (%2$s) is not within the allowed path(s): (%3$s)." msgstr "" #: functions/interface.php:183 tmp/3.7.1/functions/interface.php:183 msgid "" "Your custom backups directory (%1$s) doesn't exist, your backups will " "be saved to %2$s instead." msgstr "" #: functions/interface.php:191 tmp/3.7.1/functions/interface.php:191 msgid "" "Your custom backups directory (%1$s) isn't writable, new backups will " "be saved to %2$s instead." msgstr "" #: functions/interface.php:202 tmp/3.7.1/functions/interface.php:202 msgid "" "We connected to your server successfully but still weren't able to " "automatically create the directory. You'll need to manually specify a " "valid directory" msgstr "" #: functions/interface.php:208 tmp/3.7.1/functions/interface.php:208 #. translators: 1: Path to backup directory. msgid "" "We couldn't create the backups directory (%1$s). You'll need to " "manually specify a valid directory or you can have WordPress do it " "automatically by entering your server details below. This is a one time " "thing." msgstr "" #: functions/interface.php:217 tmp/3.7.1/functions/interface.php:217 msgid "Your site's root path (%s) isn't readable. Please contact support." msgstr "" #: functions/interface.php:226 functions/interface.php:236 #: tmp/3.7.1/functions/interface.php:226 tmp/3.7.1/functions/interface.php:236 #. translators: FYI: specified MySQL features. #. translators: FYI: specified zip archiving features. msgid "" "Your site cannot be backed up because your server doesn't support %1$s " "or %2$s. Please contact your host and ask them to enable them." msgstr "" #: functions/interface.php:245 tmp/3.7.1/functions/interface.php:245 msgid "" "Your server only has %s of disk space left which probably isn't enough " "to complete a backup. Try deleting some existing backups or other files to " "free up space." msgstr "" #: functions/interface.php:287 tmp/3.7.1/functions/interface.php:287 msgid "Database and Files" msgstr "" #: functions/interface.php:291 tmp/3.7.1/functions/interface.php:291 msgid "Files" msgstr "" #: functions/interface.php:295 tmp/3.7.1/functions/interface.php:295 msgid "Database" msgstr "" #: functions/interface.php:302 tmp/3.7.1/functions/interface.php:302 msgid "Legacy" msgstr "" #: functions/interface.php:319 tmp/3.7.1/functions/interface.php:319 msgid "Started %s ago" msgstr "" #: functions/interface.php:321 tmp/3.7.1/functions/interface.php:321 msgid "cancel" msgstr "" #: functions/interface.php:339 tmp/3.7.1/functions/interface.php:339 msgid "No backups completed" msgstr "" #: functions/interface.php:350 tmp/3.7.1/functions/interface.php:350 msgid "Complete Hourly" msgstr "" #: functions/interface.php:351 tmp/3.7.1/functions/interface.php:351 msgid "File Hourly" msgstr "" #: functions/interface.php:352 tmp/3.7.1/functions/interface.php:352 msgid "Database Hourly" msgstr "" #: functions/interface.php:353 tmp/3.7.1/functions/interface.php:353 msgid "Complete Twice Daily" msgstr "" #: functions/interface.php:354 tmp/3.7.1/functions/interface.php:354 msgid "File Twice Daily" msgstr "" #: functions/interface.php:355 tmp/3.7.1/functions/interface.php:355 msgid "Database Twice Daily" msgstr "" #: functions/interface.php:356 tmp/3.7.1/functions/interface.php:356 msgid "Complete Daily" msgstr "" #: functions/interface.php:357 tmp/3.7.1/functions/interface.php:357 msgid "File Daily" msgstr "" #: functions/interface.php:358 tmp/3.7.1/functions/interface.php:358 msgid "Database Daily" msgstr "" #: functions/interface.php:359 tmp/3.7.1/functions/interface.php:359 msgid "Complete Weekly" msgstr "" #: functions/interface.php:360 tmp/3.7.1/functions/interface.php:360 msgid "File Weekly" msgstr "" #: functions/interface.php:361 tmp/3.7.1/functions/interface.php:361 msgid "Database Weekly" msgstr "" #: functions/interface.php:362 tmp/3.7.1/functions/interface.php:362 msgid "Complete Every Two Weeks" msgstr "" #: functions/interface.php:363 tmp/3.7.1/functions/interface.php:363 msgid "File Every Two Weeks" msgstr "" #: functions/interface.php:364 tmp/3.7.1/functions/interface.php:364 msgid "Database Every Two Weeks" msgstr "" #: functions/interface.php:365 tmp/3.7.1/functions/interface.php:365 msgid "Complete Monthly" msgstr "" #: functions/interface.php:366 tmp/3.7.1/functions/interface.php:366 msgid "File Monthly" msgstr "" #: functions/interface.php:367 tmp/3.7.1/functions/interface.php:367 msgid "Database Monthly" msgstr "" #: functions/interface.php:368 tmp/3.7.1/functions/interface.php:368 msgid "Complete Manually" msgstr "" #: functions/interface.php:369 tmp/3.7.1/functions/interface.php:369 msgid "File Manually" msgstr "" #: functions/interface.php:370 tmp/3.7.1/functions/interface.php:370 msgid "Database Manually" msgstr "" #: tmp/3.7.1/backdrop/server.php:6 msgid "No key supplied" msgstr "" #: tmp/3.7.1/backdrop/server.php:11 msgid "Supplied key was not valid" msgstr "" #: tmp/3.7.1/backdrop/task.php:22 msgid "Task is already scheduled to run" msgstr "" #: tmp/3.7.1/backdrop/task.php:41 msgid "Task is not scheduled to run" msgstr "" #. Plugin URI of the plugin/theme msgid "https://updraftplus.com/backupwordpress/?afref=744" msgstr "" #. Description of the plugin/theme msgid "" "Simple automated backups of your WordPress powered website. Once activated " "you'll find me under Tools → Backups. On multisite, " "you'll find me under the Network Settings menu." msgstr "" #. Author of the plugin/theme msgid "XIBO Ltd" msgstr "" #. Author URI of the plugin/theme msgid "https://profiles.wordpress.org/xibodevelopment" msgstr "" #: admin/extensions.php:117 tmp/3.7.1/admin/extensions.php:117 msgctxt "Plugin status" msgid "Active" msgstr "" #: admin/schedule-sentence.php:120 tmp/3.7.1/admin/schedule-sentence.php:120 msgctxt "" "1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to " "store" msgid "Backup my %1$s %2$s %3$s, %4$s." msgstr "" #: functions/interface.php:341 tmp/3.7.1/functions/interface.php:341 msgctxt "backups count" msgid "One backup completed" msgid_plural "%1$s backups completed" msgstr[0] "" msgstr[1] "" ================================================ FILE: package.json ================================================ { "name": "BackUpWordPress", "version": "3.9", "description": "Simple automated backups of your WordPress powered website.", "main": "backupwordpress.php", "directories": { "test": "tests" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/xibodevelopment/backupwordpress" }, "keywords": [ "backups" ], "author": "xibodevelopment", "license": "GPLv2", "bugs": { "url": "https://github.com/xibodevelopment/backupwordpress/issues" }, "homepage": "https://github.com/xibodevelopment/backupwordpress", "devDependencies": { "grunt": "*", "grunt-autoprefixer": "*", "grunt-bumpup": "*", "grunt-checktextdomain": "*", "grunt-checkwpversion": "*", "grunt-contrib-clean": "*", "grunt-contrib-compress": "*", "grunt-contrib-concat": "*", "grunt-contrib-copy": "*", "grunt-contrib-cssmin": "*", "grunt-contrib-jshint": "*", "grunt-contrib-uglify": "*", "grunt-po2mo": "*", "grunt-pot": "*", "grunt-shell": "*", "grunt-text-replace": "*", "grunt-wp-deploy": "*", "grunt-wp-i18n": "*", "load-grunt-config": "*", "load-grunt-tasks": "*" } } ================================================ FILE: phpunit.xml ================================================ tests full-backup ================================================ FILE: readme/readme-footer.txt ================================================ **Further Support & Feedback** General support questions should be posted in the WordPress support forums, tagged with backupwordpress. For development issues, feature requests or anybody wishing to help out with development checkout BackUpWordPress on GitHub. == Screenshots == 1. Manage multiple schedules. 2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email. 3. Easily manage exclude rules and see exactly which files are included and excluded from your backup. == Upgrade Notice == = 3.4 = * This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write unit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows users should see major improvements to reliability. = 3.3.4 = * WordPress 4.4 compatibility. = 3.3.1 = * Fixes a bug that would prevent downloading backups since 3.3.0 - please update. = 3.2.5 = * Security fixes related to add_query_arg = 3.2.1 = * Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups. = 3.1.3 = * Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons. = 3.0.4 = * Fixes a few minor bugs. Immediate update is recommended. = 3.0.2 = * Important: we have dropped support for PHP 5.2, you will not be able to activate BackUpWordPress on a server running PHP versions older than PHP 5.3.29 = 3.0.1 = * This is a critical update. Fixes a bug in the core backup library. Please update immediately. == Changelog == ### 3.10 / 2019-06-12 * Fixed whitelist-html ### 3.9 / 2019-06-10 * Readme update ### 3.8 / 2018-11-01 * GNU Wording change ### 3.7.2 / 2018-10-29 * Check remove intercomm links ### 3.7.1 / 2018-09-11 * Fixed admin notices ### 3.7 / 2018-08-30 * Updated readme to reflect ownership changes * Stripped out support and premium links ### 3.6.4 / 2016-06-02 * Various improvements to exclusion handling. * i18n improvements. * Misc. UI improvements. ### 3.6.3.1 / 2016-12-14 * Fix issue where low disk space caused the admin interface to be unavailable * Fix issue where admin notices were causing databases and error logs to fill up * Improves file size calculations * Improves remaining disk space calculations * Improves file exclusion methods * Misc admin interface improvements * Misc code quality improvements and bug fixes ### 3.6.2 / 2016-08-02 * Improves admin performance. * Improves security in internationalised strings. ### 3.6.1 / 2016-04-26 * Bug fixes/improvements in disk space calculation * Misc bug fixes ### 3.6.0 / 2016-03-31 * Fix a bug caused by using a function incompatible with min PHP version requirements * Misc code quality improvements and bug fixes * Fix bugs in the code responsible for admin notices * Display disk space info * Uninstall cleanup * Introduce a dedicated extensions page ### 3.5 / 2016-03-10 * Reduce duplication and improve code readability when echoing filesizes * Improve how filesizes are handled in the Your Site list * Switch to storing site size data in a file, large sites could cause database errors when saving the option * Re-remove the PHP User and Group Requirements * Check that the backup file exists before attempting to check it's contents * Only call getPerms on readable files to ensure we avoid a fatal error * Ensure error are correctly check in verify_backup * Use Symfony Process instead of shell_exec for all our system calls * More unit tests * Update dependencies * Detect disabled functions defined in php.ini, now accounts for different separators. ### 3.4.5 / 2016-02-23 * Fix fatal error on upgrade ### 3.4.4 / 2016-02-23 * Ensure temporary files are correctly cleaned up before and after running a backup. * Avoid killing site if plugin is active on PHP 52 * Allow custom secure key using filter * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.4-beta * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.3 * Fix a bug where backups were not downloadable when WordPress installed in a subdirectory ### 3.4.2 * Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled. * Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling. * Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them. * Improve our upgrade code for users upgrading from pre version 2.0. Fixes a possible fatal error and ensures backups and backup settings are correctly brought forward. ### 3.4.1 * Fix a possible `PHP Warning` in the Schedule Sentence. ### 3.4 / 2016/01/20 * Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage. * Vastly improved Windows Server support. * We no longer write errors and warnings to files on disk. * Update to the latest version of `symfony/finder`. * Update to the latest version of `ifsnop/mysqldump-php`. ### 3.3.4 / 2015-12-10 * Fixes styling issues with WordPress 4.4 ### 3.3.3 / 2015-11-13 * Fix broken Intercom support window * Fixes Typos in i18n strings * Backups finish faster * Fix an issue that caused the site size to report as twice as large as it should * Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`) ### 3.3.2 / 2015-10-15 * Misc improvements ### 3.3.1 / 2015-10-12 * Fix false positive error message. * Fix broken download links ### 3.3.0 / 2015-10-09 * Dropped support for PclZip * Fixed duplicate cron schedule interval names ( props ucavus ) * Corrected some typos, grammar and punctuation ( props ucavus ) * Fixed a bug in the WP CLI command ( props duritong ) * Better message for wp-cron related errors * Replace 'bi-weekly' with less confusing wording * Fixed a few errors misc reported by code quality tool * Total site size display now subtracts excludes * Many general improvements and bug fixes #### 3.2.7 / 2015-07-27 * Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful * Simply output arrays rather than trying to be too clever about it * Start tracking PDO availability through Intercom * Catch database and files shell_exec warnings * Test under PHP 5.6 in Travis * Use the new backupwordpress@hmn.md email address everywhere * Clarify how people request access to Slack and GlotPress * Rewrite our contributing guidelines to be more comprehensive * Add instructions to contributing.md * Revert plugin name as it doesn't make a diff in search results * Always return an integer #### 3.2.6 / 2015-06-09 * Fixes admin page slug for multisite #### 3.2.5 / 2015-04-29 * Fixes an issue when evaluating expression with empty * Fixes a fatal error on PHP 5.3 * Displays other notices * Updates stable tag * Adds some escaping and sanitizing * Defines plugins dir for different environments * Adds tests for activation and deactivation hooks * Adds a debugging function for tests * Symlinks plugin into tests dir * Splits out deactivation code into separate functions * Fixes activation and deactivation hooks not being fired * Exclude backups folder from size calculation * Fixes a misplaced parenthesis * Fixes how error messages are bubbled up * get home path should return defined value * Removes redundant exclude statement as CVS folders are excluded by default * Adds a flag parameter to allow get_files to return all files including default excludes #### 3.2.4 / 2015-04-01 * Fixes default exclude pattern that was too greedy. #### 3.2.3 / 2015-04-01 * Fixes issue where files where 'cache' files were excluded by default. * Updates brazilian portuguese translations. * Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative. #### 3.2.2 / 2015-03-25 * Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version. #### 3.2.1 / 2015-03-25 * Check if shell_exec is available before running command * Only validate day of month if this is the schedule type * Make FS optional and fix the DB connect method * (issue-770) Exclude the folder, not the wildcard * (issue-751) Rename plugin #### 3.2 / 2015-03-16 * (issue-698) skip mySql bug * Use shell_exec * Remove use statement * Revert to using shell_exec * Remove Process * (cool-runnings-757) Add back session_write_close * (issue-479) Hide hours and minutes for hourly backups * (backupception) Only load if main site on multisite * (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths * (socket-to-me-one-more-time) Fix paths * Use socket if available * Display errors * Put the db dump in the archive first - fixes issue with large archive * Dont wait for response * Run schedule as a Backdrop task * Pass array directly to function * (issue-759) Fix require paths * check PHP version before anything else * Move plugin class to own file * Skip mysql bug error * Delete all BWP options * Start the process * Return and check WP_Error * (what-time-is-backup) Extract hours and minutes from the date as an array for display * Change plugin description if multisite * Use wp_get_sites * Add a comment * We check for this on plugin instantiation * Revert to clearing schedule and rescheduling * Delete schedules and leftover options from subsites * Ensure plugin only runs on main site * Fix Too Many Schedules * Use Symfony Process * (fix-incorrect-type-error) File is an SPL object so get path * Set root as default param * Delete backdrop transient * Force directory sizes recalculation * Define VCS abbr * Hide exclude patterns from Excludes list. * Check if user can connect * Test that the mysqldump command works * Add a couple of mysql versions * Automatically exclude VCS folders * Calculate Root size correctly * Get default rules from backup object * Do not auto ignore dot files * Count excluded * Do not count excluded * If its the root then return its size directly * Fix typo in transient names * Set and return class property instead * List default excludes as such * Require symfony finder * Clear transients on deactivate * Get list of files with Finder * Load composer packages * These are alredy filtered * Add some default excludes * Use absolute path for excludes added via UI * Fix tests * Fix conditional * Fix syntax error in travis YML * Run codesniffer only on pull requests * Update tested WP versions * Change min WP version required to match travis CI * Fix readme changelog placement * Add condtion for Cron and Ajax * Fix deactivate logic * Fixes recursive exclusion of files #### 3.1.4 / 2015-02-24 * (upgrade-options) Bump version * strtolower is redundant * Upgrade routine - renames service settings to avoid backslashes. * Use the Service name as the setting name * Clear settings for schedule settings * Fixes bug in displaying settings error notices * Update version number * Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons * Leave bare minimum to avoid fatal error * remove old main plugin class #### 3.1.3 / 2015-02-04 * Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade. #### 3.1.2 / 2015-02-03 * (simplify-bwp-file-timestamp) Simplify the file name timestamp * Fix class file name * (fixup-setup-class) Add missing transients to uninstall routine * switch Travis notifications to Slack instead of Hipchat * Do not delete backups on uninstall * wrap in parenthesis * Fix include paths after moving uninstall to own file herpderp * Update BackUp class include * Add all cases to switch * Pass scanned files sizes through conform_dir() * Fix some classes and requires * (origin/issue-684, issue-684) Fix namespaces * Remove unnecessary wildcard from regex * (crazy-refactor) Remove some duplication * Formatting * Fix Class name * Blank line * Uses a DirectoryIterator to delete files * Remove tests for now * Fix stable tag number * Revert to using uninstall.php * Add tests for uninstall and deactivate * Remove double lie break * Remove double line break * Remove phpdocumentor * We still need to require some scripts... * We dont need to check for this constant in the hook callback * Use get_col to directly have an array of schedule option names * Remove namespacing * Remove debugging * Make the uninstall, activation and deactivation hooks work * (change-singleton-implementation) Change the singleton implementation to not use the static() function * path argument interfers with wp-cli path argument. * Fix some scrutinizer issues, mostly major ones * Consistent default name for database dumps * Major 5.3 re-factoring fun * Minor code formatting * else if should be elseif * Update the WP_CLI command to fix some issues * Add support for copying and updating an existing backups #### 3.1.0 / 2015-01-13 * Correct $response1 variable * (origin/issue-652, issue-652) Suppress warnings from filesystem functions * Remove debugging function * (origin/issue-475, issue-475) Fix a French string * Format the intercom data better * Load Intercom in the admin footer * Fix some HTML issues * Add a function that returns a given option value * Return Unknown if no average exists or invalid * Add a start parameter to function * Pass in the start time as a parameter * Make strings translatable * Escape values * Adds a function to track backup duration and another to display it * Adds Average Backup Duration Info * Improve display of arrays * Fixes open_basedir warnings * Replace spaces with tabs for indentation * (wp-cron-test-improvements) Improve the reliability of the wp-cron test * Pop in the directory sizes * Adapt heartbeat pulse * Update Javascript * Update constant name * Load the default translations so that activation error message is in user language * Fix a few translatable strings * Update French translations * Re-uglify Intercom js * Use provided callback argument to determine current screen * remove deprecated code * Only show notices on BWP admin page * Fix class name * Make function public for now * Get an instance of BWP to load functions * Fix conditional * Show admin notice if fails to meet requirements * Remove unneeded function * Fix references * Refactor main class after addition of the Setup class * Introduce a setup class * Determine if we need to run a cleanup routine * Introduce a custom hook for addons * Refactor main plugin file into a singleton class * Bring activation and deactivation into main plugin class * css changes to fix support button alignment * Fixes issue preventing backups from running without JS * Remove back compat memory limit define * Refactor HMBKP_Notices to support non-persistant notices * Minor refactor for PHP minimum requirements notice * Clear previous backup notices when running a new backup * Fix issues with custom paths * Improved singleton pattern * Display errors in network admin * Change to text input so multiple email address are supported * Removes HTML tag from string * Account for new schedule * Make upsell sentence translatable * fix return type * Return true if transient exists * Check if constant is defined * Request the site size via heartbeat send * Pass site size through heartbeat * Only calculate if necessary #### 3.0.4 / 2014-12-10 * Simplify the backup count display * Enqueue scripts properly * Change how we check directory_sizes * Add BackUpWordPress test case class * Move class to separate file * Group help tab display functions * Update POT file * Make strings ready for translation #### 3.0.3 / 2014-12-06 * Add French translations * Update textdomain * Fix deleted function * Use HM_Backup function to determine if shell_exec is enabled * Check if file is readable first * Fix how we kick off Task * Remove unused var * Call recursive filescanner on admin page load * Update package.json * Update the POT file task params * Replace hmbkp with backupwordpress as textdomain * Exclude folders * Add Grunt task options * Remove hard line returns * Display placeholder if exec fails * Add 30 second time diff allowance * Use $TRAVIS_BUILD_DIR * we do this in travis.yml * Regenerate github account info * Update command to reflect function rename * Update tests to reflect function name change * Rename function * Filter tests to run * Fix group flags * Calculate site size on page load #### 3.0.2 / 2014-12-02 * Bump version * Add parenthesis to require_once * Remove disk space info * Attempt to fix build * define WP_TESTS_DIR * Make sure current_action fnction is loaded * Remove extra slashes and semicolons * Remove the custom webhook service * Better default WP_TESTS_DIR * move trailingslash calls out of the loop for performance * Minor code cleanup * Correct path for hm-backup so it's tests are run * add composer.lock * Use scrutinizer code coverage * add waffle.io badge * Use up to date commands for coverage * Add code rating * Don't test 5.2 * Update readme.md * excluded_dirs is deprecated * Update scrutinizer config * Add composer config and dev dependencies * Make PHPUnit generate an XML for coveralls * Add scrutinizer config * Ignore vendor dir * Add a link to Help page * Move to activation hook * Bump up required WP version * Escape all the things * Save errors to a notices option * Reload page on errors * Remove script * Remove unneeded class * Check PHP version on plugins loaded * Check PHP version on activate * Update readme * Set required version to 5.3.2 * Update tests * Allow for a 30 second delta in asserting schedule time * Use the new build env on Travis * Restrict plugin to be network only * Fix admin URL logic * Formatting * Update readme changelog #### 3.0.1 / 2014-11-20 * remove uneeded images * latest hm-backup / fixes a serious bug in backups. * Typos in v 3.0 changelog * Specify POT filename in grunt task * Update POT file * Markdown readme * Regenerate readme * Add plugin headers #### 3.0 / 2014-11-14 * Refactor the recursive filesize scanner * correct text domain * Remove unneede statements * reload the excludes filelist in the correct place when someone excludes a file * Latest backdrop * Regenerate minified CSS * Regenerate minified JS * Fix cancel backup action * WordPress Coding Standards * Exit early if incompatible version of WordPress * Update translations * Update changelog #### 3.0.0-beta / 2014-09-08 * Load minified CSS * Formatting * Biweekly wording * Add missing period * use nonce_url instead of manually adding the nonce query param * close the settings form when done * Design changes as per ticket * Start tracking langauge in server info * Right align the primary button in the enable support modal * Re-factor the directory filesize code to use a single array instead of thoussands of transients * Remove the warning that would show if you were using anything other than the latest stable, it's no longer needed now that the FAQ is local * switch to using a single transient to store directory filesize data * Add an anchor link * Add error message * Rename function * Prefix GET params * Update exclude rule action * Adds function for building admin action urls * fix vertical scroll * Adds some functions to manage settings form submission errors * Rename nonce and action * fetch errors to display * Form submission handling for BWP and add-ons settings * Use a new function that persists form submission errors to a transient * None check * Pass the nonce around in the ajax request * Enable support action links * Check nonces * Modify action URLs to use the admin_post hook * Remove unneeded code * New line at end * Use admin_post hook * Display schedule start time in local timezone * Add an action hook that gives access to consumers to the backup progress * Update translatable strings POT file * Bump version * Update min WP version and tested up to * accidently used dash instead of underscore * namespaced option and added option to uninstall.php * basic show/hide of premium upsell * Fix incorrect transient expiry * Show the spinner in the tab if a schedule other than the current is running * Snip snip * Bring back the some javascript enhancements * Switch to the PHP 5.2 compatible version of Backdrop * Finish up support * Brace up single line if's and foreach's * Only load minified scripts and styles if WP_DEBUG isn't on * Load the minified css and js files by default * Remove the combined css files as we only have one now. Stop loading colorbox. * Remove colorbox * Improvements * More improvements * Don't die when directly running a backup on page load * Re-factor the backup filesize calculation * make capability filterable * use core capabilities instead of custom * Switch to Backdrop * Fix typo in prefix * Hook function onto admin_post * Update delete link * Bookmark current admin page for redirect * Add custom capabilities and role * Exclude BackUpWP by default * Ignore the build folder * Add more build excludes * minify JS * generate markdown readme * minify css * combine css * regenerate readme * Make links consistent for the grunt task * Convert URLS to markdown * Update lang files * Add colorbox as bower dependency * remove colorbox folder * Remove colorbox submodule * Change how we include FAQ * Add readme partials * Add package.json * Add Gruntfile * Add bower.json * JSHint rules * remove from ignore * Update ignore list * Add bower config * Add FAQ strings * Return the cached directory size early if we have it * Re-factor the file browser scanner * correct sprintf usage * Handle saving service forms * Codeing standards * Move the error check outside of the foreach * Remove uneeded $is_tab_visible * Only show excludes for backups which include files * Show destinations in the list of schedule links * WordPress standard modal for enabling support * Remove extra slash in include path * Add a heading to the settings form * More work on excludes * Another todo * Add some todos * Don't include the parent directory in a browsable list * More work on Excludes * Switch to only storing 3 backups by default * More work on redesign * commented out enable support button till we figure out what to do with it * made tabs responsive below 639px * More work on redesign * Add more default excludes * Correctly highlight the tab for the first schedule * Switch to tabs instead of subsubsub * First bash at a redesign settings UX #### 2.6.2 * Reverts a change to how the home path is calculated as it caused issues on installs where wp-config.php was stored outside of web root. Props to @mikelittle for the bug report. #### 2.6.1 * Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch. * Fix an issues that could cause schedule times to fail to account for timezone differences. * Add a nonce check to the schedule settings. * Fix a possible JS warning when removing an exclude rule. * Our unit tests now run in PHP 5.2 again. #### 2.6 * It's now possible to choose the time and day that your schedule will run on. * Introduces several new unit tests around schedule timings. * Fixes a bug that could cause the hourly schedule to run constantly. * Improved the layout of the Constants help panel. * If the backup root directory is unreadable then the plugin will no longer function. * Update the backups table match the standard WordPress table styles. * Improved styling for the settings dialogue. * Improved styling for the Server Info help tab. * /s/back ups/backups. * Remove Deprecated call to `screen_icon`. * Updated French translation. * Update the `WP CLI` command to use the new method for registering command. * Reload the schedules when re-setting up the default schedules so they show up straight away. * s/dpesnt't/doesn't. * Only show the estimated total schedule size when editing an existing schedule. * Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show. * Disable buttons whilst ajax requests are running. * Move spinners outside the buttons as they didn't look very good inside. * Improve the detection of the home path on multisite installs which have WordPress in a subdirectory. * Track the time that the running backup is started and display how long a backup has been running for. * Fix an issue that meant it wasn't possible to run multiple manual backups at the same time. * Many other minor improvements. #### 2.5 * BackUpWordPress now requires WordPress 3.7.1 as a minimum. * Remove some old back-compat code that was required because we supported older WP versions. * It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter. * The spinner is now retina! * Close the PHP Session before starting the backup process to work around the 1 request per session issue. Backup status will now work on sites which happen to call `session_start`. * Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests * Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations. * Improve the display of the server info in the enable support popup. * New screenshots * Use `wp_safe_redirect` for internal redirects. * Use `wp_is_writable` instead of `is_writable`. #### 2.4.2 * In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site. * Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout * Fixed 3 stray PHP warnings. * BackUpWordPress will now always be loaded before any BackUpWordPress Extensions. * Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar. #### 2.4.1 * Add missing colorbox images #### 2.4 * Support for new premium extensions for storing backups in a variety of online services. * Exclude the WP DB Manager backups and WP Super Cache cache directories by default. * We now use Intercom to offer support directly from within the plugin, opt-in of course. * More i18n fixes / improvements. * We no longer show download links if your backups directory isn't web accessible. * Fix a bug that caused the plugin activation and deactivation hooks from firing. * Correctly handle `MYSQL TIMESTAMP` columns in database dumps. * `mysqldump` and `zip` are now correctly recognised on SmartOS. * Schedule names are now translatable. * Avoid having to re-calculate the filesize when a schedules type is set. * Compatibility with WordPress 3.8 #### 2.3.2 * Correct version number. #### 2.3.1 * Fix a PHP strict error. * Save and close as separate buttons. * Fix bug that caused multiple notification emails. * Fixes typo in database option name. * Updated translations. * Improve PHP docblocks. * Make schedules class a singleton. * Exclude popular backup plugin folders by default. * Exclude version control folders by default. * Fix broken localisation. * Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions * #### 2.3 * Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible. * Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section. * Correct filename for some mis-named translation files. * Show the total estimated disk space a schedule could take up (max backups * estimated site size). * Fix a typo (your -> you're). * Use the new time Constants and define backwords compatible ones for > than 3.5. * Play nice with custom cron intervals. * Main plugin file is now `backupwordpress.php` for consistency. * Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul! * Don't remove non-backup files from custom backup paths. * Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups. * When moving paths only move backup files. * Make some untranslatable strings translatable. * Don't allow a single schedule to run in multiple threads at once, should finally fix edge case issues where some load balancer / proxies were causing multiple backups per run. * Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value. * Remove help text for deprecated `HMBKP_EMAIL`. * Default to allways specificing `--single-transaction` when using `mysqldump` to backup the database, can be disabled by setting the `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION` to `false`. * Silence a `PHP Warning` if `mysql_pconnect` has been disabled. * Ensure dot directories `.` & `..` are always skipped when looping the filesystem. * Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`. * Fix issues on IIS that could cause the root directory to be incorrectly calculated. * Fix an issue on IIS that could cause the download backup url to be incorrect. * Fix an issue on IIS that could mean your existing backups are lost when moving backup directory. * Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist. * All unit tests now pass under IIS on Windows. * Prefix the backup directory with `backupwordpress-` so that it's easier to identify. * Re-calculate the backup directory name on plugin update and move backups. * Fix some issues with how `HMBKP_SECURE_KEY` was generated. #### 2.2.4 * Fix a fatal error on PHP 5.2, sorry! (again.) #### 2.2.3 * Fix a parse error, sorry! #### 2.2.2 * Fix a fatal error when uninstalling. * Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch. * Fix a possible notice when using the plugin on a server without internet access. * Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true. * Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant. * Nonce some ajax request. * Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled. * Handle situations where the mysql port is set to something wierd. * Fallback to `mysql_connect` on system that disable `mysql_pconnect`. * You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`. * Unit tests for `HM_Backup::is_safe_mode_available()`. * Silence possible PHP Warnings when unlinking files. #### 2.2.1 * Stop storing a list of unreadable files in the backup warnings as it's too memory intensive. * Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers. * Show all errors and warnings in the popup shown when a manual backup completes. * Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process. * Fix a couple of `PHP E_STRICT` notices. * Catch more errors during the manual backup process and expose them to the user. #### 2.2 * Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable. * Show the correct path in the warning message when the backups path can't be created. * Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY. * Stop relying on the built in WordPress schedules as other plugins can mess with them. * Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up. * Improve modals on small screens and mobile devices. * Use the retina spinner on retina screens. * Update buttons to the new 3.5 style. * Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction. * Fix an issue that could cause backups using PclZip with a custom backups path to fail. * Security hardening by improving escaping, sanitizitation and validation. * Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites. * Only clear the cached backup filesize if the backup type changes. * Add unit tests for all the schedule recurrences. * Fix an issue which could cause weekly and monthly schedules to fail. * Add an `uninstall.php` file which removes all BackUpWordPress data and options. * Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`. * Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file. #### 2.1.3 * Fix a regression in `2.1.2` that broke previewing and adding new exclude rules. #### 2.1.2 * Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests. * Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains. * The mysqldump fallback function will now be used if `mysqldump` produces an empty file. * Fix a possible PHP `NOTICE` on Apache servers. #### 2.1.1 * Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin. * Don't use functions from misc.php as loading it too early can cause fatal errors. * Don't hardcode an English string in the JS, use the translated string instead. * Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions. * Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead. * Fix a possible double full stop at the end of the schedule sentence. * Minor code cleanup. #### 2.1 * Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning. * Fix possible fatal error when setting schedule to monthly. * Fix issues with download backup not working on some shared hosts. * Fix issuses with download backup not working on sites with strange characters in the site name. * Fix a bug could cause the update actions to fire on initial activation. * Improved reliability when changing backup paths, now with Unit Tests. * Generate the lists of excluded, included and unreadable files in a more memory efficient way, no more fatal errors on sites with lots of files. * Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled. * Prepend a random string to the backups directory to make it harder to brute force guess. * Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable. * Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support. * Provide more granular status messages during the backup process. * Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing. * Improve the feedback when removing an exclude rule. * Fix an issue that could cause an exclude rule to be marked as default when it in-fact isn't, thus not letting it be deleted. * Add a line encouraging people to rate the plugin if they like it. * Change the support line to point to the FAQ before recommending they contact support. * Fix the link to the "How to Restore" post in the FAQ. * Some string changes for translators, 18 changed strings. #### 2.0.6 * Fix possible warning on plugin activation if the sites cron option is empty. * Don't show the version warning in the help for Constants as that comes from the current version. #### 2.0.5 * Re-setup the cron schedules if they get deleted somehow. * Delete all BackUpWordPress cron entries when the plugin is deactivated. * Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run. * Make sure the schedule times and times of previous backups are shown in local time. * Fix a bug that could cause the legacy backup schedule to be created on every update, not just when going from 1.x to 2.x. * Improve the usefulness of the `wp-cron.php` response code check. * Use the built in `site_format` function for human readable filesizes instead of defining our own function. #### 2.0.4 * Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems. #### 2.0.3 * Fix issues with scheduled backups not firing in some cases. * Better compatibility when the WP Remote plugin is active alongside BackUpWordPress. * Catch and display more WP Cron errors. * BackUpWordPress now fails to activate on WordPress 3.3.2 and below. * Other minor fixes and improvements. #### 2.0.2 * Only send backup failed emails if the backup actually failed. * Turn off the generic "memory limit probably hit" message as it was showing for too many people. * Fix a possible notice when the backup running filename is blank. * Include the `wp_error` response in the cron check. #### 2.0.1 * Fix fatal error on PHP 5.2. #### 2.0 * Ability to have multiple schedules with separate settings & excludes per schedule. * Ability to manage exclude rules and see exactly which files are included and excluded. * Fix an issue with sites with an `open_basedir` restriction. * Backups should now be much more reliable in low memory environments. * Lots of other minor improvements and bug fixes. #### 1.6.9 * Updated and improved translations across the board - props @elektronikLexikon. * German translation - props @elektronikLexikon. * New Basque translation - props Unai ZC. * New Dutch translation - Anno De Vries. * New Italian translation. * Better support for when WordPress is installed in a sub directory - props @mattheu #### 1.6.8 * French translation props Christophe - http://catarina.fr. * Updated Spanish Translation props DD666 - https://github.com/radinamatic. * Serbian translation props StefanRistic - https://github.com/StefanRistic. * Lithuanian translation props Vincent G - http://www.Host1Free.com. * Romanian translation. * Fix conflict with WP Remote. * Fix a minor issue where invalid email address's were still stored. * The root path that is backed up can now be controlled by defining `HMBKP_ROOT`. #### 1.6.7 * Fix issue with backups being listed in reverse chronological order. * Fix issue with newest backup being deleted when you hit your max backups limit. * It's now possible to have backups sent to multiple email address's by entering them as a comma separated list. * Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`. * Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform. * Updated Spanish translation. * Fix a minor spelling mistake. * Speed up the manage backups page by caching the FAQ data for 24 hours. #### 1.6.6 * Fix backup path issue with case sensitive filesystems. #### 1.6.5 * Fix an issue with emailing backups that could cause the backup file to not be attached. * Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd. * Never show the running backup in the list of backups. * Show an error backup email failed to send. * Fix possible notice when deleting a backup file which doesn't exist. * Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`. * Make `HMBKP_SECURE_KEY` override-able. * BackUpWordPress should now work when `ABSPATH` is `/`. #### 1.6.4 * Don't show warning message as they cause to much panic. * Move previous methods errors to warnings in fallback methods. * Wrap `.htaccess` rewrite rules in if `mod_rewrite` check. * Add link to new restore help article to FAQ. * Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version. * Bug fix in `zip command` check that could cause an incorrect `zip` path to be used. * Detect and pass `MySQL` port to `mysqldump`. #### 1.6.3 * Don't fail archive verification for errors in previous archive methods. * Improved detection of the `zip` and `mysqldump` commands. * Fix issues when `ABSPATH` is `/`. * Remove reliance on `SECURE_AUTH_KEY` as it's often not defined. * Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`. * Fix download zip on Windows when `ABSPATH` contains a trailing forward slash. * Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing. * Add missing / to `PCLZIP_TEMPORARY_DIR` define. * Catch and display errors during `mysqldump`. #### 1.6.2 * Track `PHP` errors as backup warnings not errors. * Only show warning message for `PHP` errors in BackUpWordPress files. * Ability to dismiss the error / warning messages. * Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites. * Don't delete "number of backups" setting on update. * Better handling of multibyte characters in archive and database dump filenames. * Mark backup as running and increase callback timeout to `500` when firing backup via ajax. * Don't send backup email if backup failed. * Filter out duplicate exclude rules. #### 1.6.1 * Fix fatal error on PHP =< 5.3 #### 1.6 * Fixes issue with backups dir being included in backups on some Windows Servers. * Consistent handling of symlinks across all archive methods (they are followed). * Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files. * Track errors and warnings that happen during backup and expose them through admin. * Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed. * Ability to cancel a running backup. * Zip files are now integrity checked after every backup. * More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works. * Use `mysql_query` instead of the depreciated `mysql_list_tables`. #### 1.5.2 * Better handling of unreadable files in ZipArchive and the backup size calculation. * Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path] [--root] [--zip_command_path=] [--mysqldump_command_path=]` #### 1.5.1 * Better detection of `zip` command. * Don't delete user settings on update / deactivate. * Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed. * Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests. * Improved the speed of the backup size calculation. #### 1.5 * Re-written core backup engine should be more robust especially in edge case scenarios. * 48 unit tests for the core backup engine, yay for unit tests. * Remove some extraneous status information from the admin interface. * Rename Advanced Options to Settings * New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed. * Suppress possible filemtime warnings in some edge cases. * 3.3 compatability. * Set proper charset of MySQL backup, props valericus. * Fix some inconsistencies between the estimated backup size and actual backup size when excluding files. #### 1.4.1 * 1.4 was incorrectly marked as beta. #### 1.4 * Most options can now be set on the backups page, all options can still be set by defining them as `Constants`. * Russian translation, props valericus. * All dates are now translatable. * Fixed some strings which weren't translatable. * New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups. * Manual backups now work if `DISABLE_WP_CRON` is defined as `true`. #### 1.3.2 * Spanish translation * Bump PHP version check to 5.2.4 * Fallback to PHP mysqldump if shell_exec fails for any reason. * Silently ignore unreadable files / folders * Make sure binary data is properly exported when doing a mysqldump * Use 303 instead of 302 when redirecting in the admin. * Don't `set_time_limit` inside a loop * Use WordPress 3.2 style buttons * Don't pass an empty password to mysqldump #### 1.3.1 * Check for PHP version. Deactivate plugin if running on PHP version 4. #### 1.3 * Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability. * Support for excluding files and folders, define `HMBKP_EXCLUDE` with a comma separated list of files and folders to exclude, supports wildcards `*`, path fragments and absolute paths. * Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it. * Work around issues caused by low MySQL `wait_timeout` setting. * Add FAQ to readme.txt. * Pull FAQ into the contextual help tab on the backups page. * Block activation on old versions of WordPress. * Stop guessing compressed backup file size, instead just show size of site uncompressed. * Fix bug in `safe_mode` detection which could cause `Off` to act like `On`. * Better name for the database dump file. * Better name for the backup files. * Improve styling for advanced options. * Show examples for all advanced options. * Language improvements. * Layout tweaks. #### 1.2 * Show live backup status in the back up now button when a back up is running. * Show free disk space after total used by backups. * Several langauge changes. * Work around the 1 cron every 60 seconds limit. * Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue. * Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future. * Highlight defined `Constants`. * Show defaults for all `Constants`. * Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time. * Make sure options added in 1.1.4 are cleared on de-activate. * Support `mysqldump on` Windows if it's available. * New option to have each backup emailed to you on completion. Props @matheu for the contribution. * Improved windows server support. #### 1.1.4 * Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if `mysql.max_links` is set to 2 or less. * Don't suppress `mysql_connect` errors in the mysqldump PHP fallback. * One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup. * Fix a spelling error in the `shell_exec` disabled message. * Store the BackUpWordPress version as a `Constant` rather than a `Variable`. * Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated. * Minor PHPDoc improvements. #### 1.1.3 * Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed. * When using `PCLZIP` as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP. #### 1.1.2 * Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working. #### 1.1.1 * Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`. * Clear the running backup status and reset the calculated filesize on update. * Show a link to the manage backups page in the plugin description. * Other general fixes. #### 1.1 * Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update. * Expose the various `Constants` that can be defined to change advanced settings. * Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`. * Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`. * Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );` * Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );` * Tweaks to the backups page layout. * General bug fixes and improvements. #### 1.0.5 * Don't ajax load estimated backup size if it's already been calculated. * Fix time in backup complete log message. * Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired. * Show number of backups saved message. * Add a link to the backups page to the plugin action links. #### 1.0.4 Don't throw PHP Warnings when `shell_exec` is disabled #### 1.0.3 Minor bug fix release. * Suppress `filesize()` warnings when calculating backup size. * Plugin should now work when symlinked. * Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt. * Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings. * Don't ajax ping running backup status quite so often. #### 1.0.1 & 1.0.2 Fix some silly 1.0 bugs #### 1.0 1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by [XIBO Ltd](http://hmn.md) the chaps behind [WP Remote](https://wpremote.com) #### Previous Version 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/) ================================================ FILE: readme/readme-header.txt ================================================ === BackUpWordPress === Contributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment Requires at least: 3.9 Tested up to: 5.1 Stable tag: 3.10 Simple automated backups of your WordPress-powered website. == Description == BackUpWordPress will back up your entire site including your database and all your files on a schedule that suits you. Try it now to see how easy it is! This plugin requires PHP version 5.3.2 or later = Features = * Super simple to use, no setup required. * Works in low memory, "shared host" environments. * Manage multiple schedules. * Option to have each backup file emailed to you. * Uses `zip` and `mysqldump` for faster backups if they are available. * Works on Linux & Windows Server. * Exclude files and folders from your backups. * Good support should you need help. * Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque. = Help develop this plugin = The BackUpWordPress plugin is hosted on GitHub, if you want to help out with development or testing then head over to BackUpWordPress on GitHub. = Translations = We'd also love help translating the plugin into more languages, if you can help then please visit https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/ to start translating. == Installation == 1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server. 2. Activate the plugin. 3. Sit back and relax safe in the knowledge that your whole site will be backed up every day. The plugin will try to use the `mysqldump` and `zip` commands via shell if they are available, using these will greatly improve the time it takes to back up your site. == Frequently Asked Questions == ================================================ FILE: readme.md ================================================ ## BackUpWordPress Simple automated backups of your WordPress powered website. BackUpWordPress is a well tested, onsite backup plugin for WordPress. It's supports sending backups to cloud services through premium extensions Stop using outdated practices, and start making sense. ## Requirements BackUpWordPress requires WordPress 3.9 or newer and requires PHP 5.3+ due to the use of namespaced code. ## Installation In order to develop / add to this plugin, you will need to do the following in order to compile: == NPM == Run `npm install` == Composer == Run `composer install` == Grunt == Install `npm install -g grunt-cli` Install `npm install grunt --save-dev` Install `npm install -D load-grunt-config` Run `grunt build` ## Contributing Read our [contributing.md](https://github.com/xibodevelopment/backupwordpress/blob/master/CONTRIBUTING.md) file ## License BackUpWordPress is licensed under the GPLv2 or later. ## Credits Maintained by [XIBO Ltd](https://github.com/xibodevelopment). Created by Human Made for high volume and large-scale sites. BackUpWordPress is used on over 200,000 sites worldwide. Written by [Tom Willmot](https://github.com/willmot) & [Paul De Wouters](https://github.com/pdwouters). Thanks to all our [contributors](https://github.com/xibodevelopment/backupwordpress/graphs/contributors). BackUpWordPress was originally developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/) before being taken over by Human Made. --- ================================================ FILE: readme.txt ================================================ === BackUpWordPress === Contributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance, dnutbourne, snightingale Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment Requires at least: 3.9 Tested up to: 5.1 Stable tag: 3.10 Simple automated backups of your WordPress-powered website. == Description == BackupWordPress was created by our friends at Human Made but is now under new ownership. We're committed to opensource and WordPress and will provide free support for the many BackupWordPress fans. We'll make occasional updates to the free software - please send us any patches you'd like to see released here: [https://github.com/orgs/xibodevelopment/](https://github.com/orgs/xibodevelopment/) However, we'll no longer be selling or supporting the paid add-ons (e.g. for backups to Dropbox and Google Drive). It's certainly a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend [UpdraftPlus WordPress Backups](https://updraftplus.com/?afref=744) which can do things for free BackupWordPress Premium could do on a paid basis. Click here for [full comparison](https://updraftplus.com/backupwordpress/?afref=744). BackUpWordPress will back up your entire site including your database and all your files on a schedule that suits you. Try it now to see how easy it is! This plugin requires PHP version 5.3.2 or later = Features = * Super simple to use, no setup required. * Works in low memory, "shared host" environments. * Manage multiple schedules. * Option to have each backup file emailed to you. * Uses `zip` and `mysqldump` for faster backups if they are available. * Works on Linux & Windows Server. * Exclude files and folders from your backups. * Good support should you need help. * Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque. = Help develop this plugin = The BackUpWordPress plugin is hosted on GitHub, if you want to help out with development or testing then head over to [https://github.com/orgs/xibodevelopment/backupwordpress/](https://github.com/orgs/xibodevelopment/backupwordpress/) = Translations = We'd also love help translating the plugin into more languages, if you can help then please visit [https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/](https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/) to start translating. == Installation == 1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server. 2. Activate the plugin. 3. Sit back and relax safe in the knowledge that your whole site will be backed up every day. The plugin will try to use the `mysqldump` and `zip` commands via shell if they are available, using these will greatly improve the time it takes to back up your site. == Frequently Asked Questions == **Where does BackUpWordPress store the backup files?** Backups are stored on your server in `/wp-content/backups`, you can change the directory. Important: By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does mean that your backup directory can get quite large. **What if I want to back up my site to another destination?** We no longer be sell or support the paid add-ons (e.g. for backups to Dropbox and Google Drive). It's certainly a good idea to backup to cloud storage to protect against server-wide risks. For this we recommend [UpdraftPlus WordPress Backups](https://updraftplus.com/?afref=744) which can do things for free BackupWordPress Premium could do on a paid basis. Click here for [full comparison](https://updraftplus.com/backupwordpress/?afref=744). **How do I restore my site from a backup?** You need to download the latest backup file either by clicking download on the backups page or via `FTP`. `Unzip` the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely `phpMyAdmin`). **Does BackUpWordPress back up the backups directory?** No. **I'm not receiving my backups by email** Most servers have a filesize limit on email attachments, it's generally about 10mb. If your backup file is over that limit, it won't be sent attached to the email. Instead, you should receive an email with a link to download the backup. If you aren't even receiving that, then you likely have a mail issue on your server that you'll need to contact your host about. **How many backups are stored by default?** BackUpWordPress stores the last 10 backups by default. **How long should a backup take?** Unless your site is very large (many gigabytes) it should only take a few minutes to perform a backup. If your back up has been running for longer than an hour, it's safe to assume that something has gone wrong. Try de-activating and re-activating the plugin. If it keeps happening, contact support. **What do I do if I get the wp-cron error message?** The issue is that your `wp-cron.php` is not returning a `200` response when hit with a HTTP request originating from your own server, it could be several things. In most cases, it's an issue with the server / site. There are some things you can test to confirm this is the issue. * Are scheduled posts working? (They use wp-cron as well.) * Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around.) * If you click manual backup, does it work? * Try adding `define( 'ALTERNATE_WP_CRON', true );` to your `wp-config.php`. Do automatic backups work? * Is your site private (i.e. is it behind some kind of authentication, maintenance plugin, .htaccess)? If so, wp-cron won't work until you remove it. If you are and you temporarily remove the authentication, do backups start working? **How to get BackUpWordPress working in Heart Internet** The script to be entered into the Heart Internet cPanel is: `/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php` (note the space between php5 and the location of the file). The file `wp-cron.php` `chmod` must be set to `711`. **My backups seem to be failing?** If your backups are failing, it's commonly caused by a lack of available resources on your server. To establish this is the case, exclude the complete (or parts of the) uploads folder and run a backup. If that succeeds, you know it's probably a server issue. If it does not succeed, you can find further assistance on our support forums **Further Support & Feedback** General support questions should be posted in the WordPress support forums, tagged with backupwordpress. For development issues, feature requests or anybody wishing to help out with development checkout BackUpWordPress on GitHub. == Screenshots == 1. Manage multiple schedules. 2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email. 3. Easily manage exclude rules and see exactly which files are included and excluded from your backup. == Upgrade Notice == = 3.4 = * This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write unit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows users should see major improvements to reliability. = 3.3.4 = * WordPress 4.4 compatibility. = 3.3.1 = * Fixes a bug that would prevent downloading backups since 3.3.0 - please update. = 3.2.5 = * Security fixes related to add_query_arg = 3.2.1 = * Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups. = 3.1.3 = * Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons. = 3.0.4 = * Fixes a few minor bugs. Immediate update is recommended. = 3.0.2 = * Important: we have dropped support for PHP 5.2, you will not be able to activate BackUpWordPress on a server running PHP versions older than PHP 5.3.29 = 3.0.1 = * This is a critical update. Fixes a bug in the core backup library. Please update immediately. == Changelog == ### 3.10 / 2019-06-12 * Fixed whitelist-html ### 3.9 / 2019-06-10 * Readme update ### 3.8 / 2018-11-01 * GNU Wording change ### 3.7.2 / 2018-10-29 * Check remove intercomm links ### 3.7.1 / 2018-09-11 * Fixed admin notices ### 3.7 / 2018-08-30 * Updated readme to reflect ownership changes * Stripped out support and premium links ### 3.6.4 / 2016-06-02 * Various improvements to exclusion handling. * i18n improvements. * Misc. UI improvements. ### 3.6.3.1 / 2016-12-14 * Fix issue where low disk space caused the admin interface to be unavailable * Fix issue where admin notices were causing databases and error logs to fill up * Improves file size calculations * Improves remaining disk space calculations * Improves file exclusion methods * Misc admin interface improvements * Misc code quality improvements and bug fixes ### 3.6.2 / 2016-08-02 * Improves admin performance. * Improves security in internationalised strings. ### 3.6.1 / 2016-04-26 * Bug fixes/improvements in disk space calculation * Misc bug fixes ### 3.6.0 / 2016-03-31 * Fix a bug caused by using a function incompatible with min PHP version requirements * Misc code quality improvements and bug fixes * Fix bugs in the code responsible for admin notices * Display disk space info * Uninstall cleanup * Introduce a dedicated extensions page ### 3.5 / 2016-03-10 * Reduce duplication and improve code readability when echoing filesizes * Improve how filesizes are handled in the Your Site list * Switch to storing site size data in a file, large sites could cause database errors when saving the option * Re-remove the PHP User and Group Requirements * Check that the backup file exists before attempting to check it's contents * Only call getPerms on readable files to ensure we avoid a fatal error * Ensure error are correctly check in verify_backup * Use Symfony Process instead of shell_exec for all our system calls * More unit tests * Update dependencies * Detect disabled functions defined in php.ini, now accounts for different separators. ### 3.4.5 / 2016-02-23 * Fix fatal error on upgrade ### 3.4.4 / 2016-02-23 * Ensure temporary files are correctly cleaned up before and after running a backup. * Avoid killing site if plugin is active on PHP 52 * Allow custom secure key using filter * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.4-beta * Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups. ### 3.4.3 * Fix a bug where backups were not downloadable when WordPress installed in a subdirectory ### 3.4.2 * Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled. * Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling. * Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them. * Improve our upgrade code for users upgrading from pre version 2.0. Fixes a possible fatal error and ensures backups and backup settings are correctly brought forward. ### 3.4.1 * Fix a possible `PHP Warning` in the Schedule Sentence. ### 3.4 / 2016/01/20 * Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage. * Vastly improved Windows Server support. * We no longer write errors and warnings to files on disk. * Update to the latest version of `symfony/finder`. * Update to the latest version of `ifsnop/mysqldump-php`. ### 3.3.4 / 2015-12-10 * Fixes styling issues with WordPress 4.4 ### 3.3.3 / 2015-11-13 * Fix broken Intercom support window * Fixes Typos in i18n strings * Backups finish faster * Fix an issue that caused the site size to report as twice as large as it should * Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`) ### 3.3.2 / 2015-10-15 * Misc improvements ### 3.3.1 / 2015-10-12 * Fix false positive error message. * Fix broken download links ### 3.3.0 / 2015-10-09 * Dropped support for PclZip * Fixed duplicate cron schedule interval names ( props ucavus ) * Corrected some typos, grammar and punctuation ( props ucavus ) * Fixed a bug in the WP CLI command ( props duritong ) * Better message for wp-cron related errors * Replace 'bi-weekly' with less confusing wording * Fixed a few errors misc reported by code quality tool * Total site size display now subtracts excludes * Many general improvements and bug fixes #### 3.2.7 / 2015-07-27 * Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful * Simply output arrays rather than trying to be too clever about it * Start tracking PDO availability through Intercom * Catch database and files shell_exec warnings * Test under PHP 5.6 in Travis * Use the new backupwordpress@hmn.md email address everywhere * Clarify how people request access to Slack and GlotPress * Rewrite our contributing guidelines to be more comprehensive * Add instructions to contributing.md * Revert plugin name as it doesn't make a diff in search results * Always return an integer #### 3.2.6 / 2015-06-09 * Fixes admin page slug for multisite #### 3.2.5 / 2015-04-29 * Fixes an issue when evaluating expression with empty * Fixes a fatal error on PHP 5.3 * Displays other notices * Updates stable tag * Adds some escaping and sanitizing * Defines plugins dir for different environments * Adds tests for activation and deactivation hooks * Adds a debugging function for tests * Symlinks plugin into tests dir * Splits out deactivation code into separate functions * Fixes activation and deactivation hooks not being fired * Exclude backups folder from size calculation * Fixes a misplaced parenthesis * Fixes how error messages are bubbled up * get home path should return defined value * Removes redundant exclude statement as CVS folders are excluded by default * Adds a flag parameter to allow get_files to return all files including default excludes #### 3.2.4 / 2015-04-01 * Fixes default exclude pattern that was too greedy. #### 3.2.3 / 2015-04-01 * Fixes issue where files where 'cache' files were excluded by default. * Updates brazilian portuguese translations. * Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative. #### 3.2.2 / 2015-03-25 * Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version. #### 3.2.1 / 2015-03-25 * Check if shell_exec is available before running command * Only validate day of month if this is the schedule type * Make FS optional and fix the DB connect method * (issue-770) Exclude the folder, not the wildcard * (issue-751) Rename plugin #### 3.2 / 2015-03-16 * (issue-698) skip mySql bug * Use shell_exec * Remove use statement * Revert to using shell_exec * Remove Process * (cool-runnings-757) Add back session_write_close * (issue-479) Hide hours and minutes for hourly backups * (backupception) Only load if main site on multisite * (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths * (socket-to-me-one-more-time) Fix paths * Use socket if available * Display errors * Put the db dump in the archive first - fixes issue with large archive * Dont wait for response * Run schedule as a Backdrop task * Pass array directly to function * (issue-759) Fix require paths * check PHP version before anything else * Move plugin class to own file * Skip mysql bug error * Delete all BWP options * Start the process * Return and check WP_Error * (what-time-is-backup) Extract hours and minutes from the date as an array for display * Change plugin description if multisite * Use wp_get_sites * Add a comment * We check for this on plugin instantiation * Revert to clearing schedule and rescheduling * Delete schedules and leftover options from subsites * Ensure plugin only runs on main site * Fix Too Many Schedules * Use Symfony Process * (fix-incorrect-type-error) File is an SPL object so get path * Set root as default param * Delete backdrop transient * Force directory sizes recalculation * Define VCS abbr * Hide exclude patterns from Excludes list. * Check if user can connect * Test that the mysqldump command works * Add a couple of mysql versions * Automatically exclude VCS folders * Calculate Root size correctly * Get default rules from backup object * Do not auto ignore dot files * Count excluded * Do not count excluded * If its the root then return its size directly * Fix typo in transient names * Set and return class property instead * List default excludes as such * Require symfony finder * Clear transients on deactivate * Get list of files with Finder * Load composer packages * These are alredy filtered * Add some default excludes * Use absolute path for excludes added via UI * Fix tests * Fix conditional * Fix syntax error in travis YML * Run codesniffer only on pull requests * Update tested WP versions * Change min WP version required to match travis CI * Fix readme changelog placement * Add condtion for Cron and Ajax * Fix deactivate logic * Fixes recursive exclusion of files #### 3.1.4 / 2015-02-24 * (upgrade-options) Bump version * strtolower is redundant * Upgrade routine - renames service settings to avoid backslashes. * Use the Service name as the setting name * Clear settings for schedule settings * Fixes bug in displaying settings error notices * Update version number * Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons * Leave bare minimum to avoid fatal error * remove old main plugin class #### 3.1.3 / 2015-02-04 * Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade. #### 3.1.2 / 2015-02-03 * (simplify-bwp-file-timestamp) Simplify the file name timestamp * Fix class file name * (fixup-setup-class) Add missing transients to uninstall routine * switch Travis notifications to Slack instead of Hipchat * Do not delete backups on uninstall * wrap in parenthesis * Fix include paths after moving uninstall to own file herpderp * Update BackUp class include * Add all cases to switch * Pass scanned files sizes through conform_dir() * Fix some classes and requires * (origin/issue-684, issue-684) Fix namespaces * Remove unnecessary wildcard from regex * (crazy-refactor) Remove some duplication * Formatting * Fix Class name * Blank line * Uses a DirectoryIterator to delete files * Remove tests for now * Fix stable tag number * Revert to using uninstall.php * Add tests for uninstall and deactivate * Remove double lie break * Remove double line break * Remove phpdocumentor * We still need to require some scripts... * We dont need to check for this constant in the hook callback * Use get_col to directly have an array of schedule option names * Remove namespacing * Remove debugging * Make the uninstall, activation and deactivation hooks work * (change-singleton-implementation) Change the singleton implementation to not use the static() function * path argument interfers with wp-cli path argument. * Fix some scrutinizer issues, mostly major ones * Consistent default name for database dumps * Major 5.3 re-factoring fun * Minor code formatting * else if should be elseif * Update the WP_CLI command to fix some issues * Add support for copying and updating an existing backups #### 3.1.0 / 2015-01-13 * Correct $response1 variable * (origin/issue-652, issue-652) Suppress warnings from filesystem functions * Remove debugging function * (origin/issue-475, issue-475) Fix a French string * Format the intercom data better * Load Intercom in the admin footer * Fix some HTML issues * Add a function that returns a given option value * Return Unknown if no average exists or invalid * Add a start parameter to function * Pass in the start time as a parameter * Make strings translatable * Escape values * Adds a function to track backup duration and another to display it * Adds Average Backup Duration Info * Improve display of arrays * Fixes open_basedir warnings * Replace spaces with tabs for indentation * (wp-cron-test-improvements) Improve the reliability of the wp-cron test * Pop in the directory sizes * Adapt heartbeat pulse * Update Javascript * Update constant name * Load the default translations so that activation error message is in user language * Fix a few translatable strings * Update French translations * Re-uglify Intercom js * Use provided callback argument to determine current screen * remove deprecated code * Only show notices on BWP admin page * Fix class name * Make function public for now * Get an instance of BWP to load functions * Fix conditional * Show admin notice if fails to meet requirements * Remove unneeded function * Fix references * Refactor main class after addition of the Setup class * Introduce a setup class * Determine if we need to run a cleanup routine * Introduce a custom hook for addons * Refactor main plugin file into a singleton class * Bring activation and deactivation into main plugin class * css changes to fix support button alignment * Fixes issue preventing backups from running without JS * Remove back compat memory limit define * Refactor HMBKP_Notices to support non-persistant notices * Minor refactor for PHP minimum requirements notice * Clear previous backup notices when running a new backup * Fix issues with custom paths * Improved singleton pattern * Display errors in network admin * Change to text input so multiple email address are supported * Removes HTML tag from string * Account for new schedule * Make upsell sentence translatable * fix return type * Return true if transient exists * Check if constant is defined * Request the site size via heartbeat send * Pass site size through heartbeat * Only calculate if necessary #### 3.0.4 / 2014-12-10 * Simplify the backup count display * Enqueue scripts properly * Change how we check directory_sizes * Add BackUpWordPress test case class * Move class to separate file * Group help tab display functions * Update POT file * Make strings ready for translation #### 3.0.3 / 2014-12-06 * Add French translations * Update textdomain * Fix deleted function * Use HM_Backup function to determine if shell_exec is enabled * Check if file is readable first * Fix how we kick off Task * Remove unused var * Call recursive filescanner on admin page load * Update package.json * Update the POT file task params * Replace hmbkp with backupwordpress as textdomain * Exclude folders * Add Grunt task options * Remove hard line returns * Display placeholder if exec fails * Add 30 second time diff allowance * Use $TRAVIS_BUILD_DIR * we do this in travis.yml * Regenerate github account info * Update command to reflect function rename * Update tests to reflect function name change * Rename function * Filter tests to run * Fix group flags * Calculate site size on page load #### 3.0.2 / 2014-12-02 * Bump version * Add parenthesis to require_once * Remove disk space info * Attempt to fix build * define WP_TESTS_DIR * Make sure current_action fnction is loaded * Remove extra slashes and semicolons * Remove the custom webhook service * Better default WP_TESTS_DIR * move trailingslash calls out of the loop for performance * Minor code cleanup * Correct path for hm-backup so it's tests are run * add composer.lock * Use scrutinizer code coverage * add waffle.io badge * Use up to date commands for coverage * Add code rating * Don't test 5.2 * Update readme.md * excluded_dirs is deprecated * Update scrutinizer config * Add composer config and dev dependencies * Make PHPUnit generate an XML for coveralls * Add scrutinizer config * Ignore vendor dir * Add a link to Help page * Move to activation hook * Bump up required WP version * Escape all the things * Save errors to a notices option * Reload page on errors * Remove script * Remove unneeded class * Check PHP version on plugins loaded * Check PHP version on activate * Update readme * Set required version to 5.3.2 * Update tests * Allow for a 30 second delta in asserting schedule time * Use the new build env on Travis * Restrict plugin to be network only * Fix admin URL logic * Formatting * Update readme changelog #### 3.0.1 / 2014-11-20 * remove uneeded images * latest hm-backup / fixes a serious bug in backups. * Typos in v 3.0 changelog * Specify POT filename in grunt task * Update POT file * Markdown readme * Regenerate readme * Add plugin headers #### 3.0 / 2014-11-14 * Refactor the recursive filesize scanner * correct text domain * Remove unneede statements * reload the excludes filelist in the correct place when someone excludes a file * Latest backdrop * Regenerate minified CSS * Regenerate minified JS * Fix cancel backup action * WordPress Coding Standards * Exit early if incompatible version of WordPress * Update translations * Update changelog #### 3.0.0-beta / 2014-09-08 * Load minified CSS * Formatting * Biweekly wording * Add missing period * use nonce_url instead of manually adding the nonce query param * close the settings form when done * Design changes as per ticket * Start tracking langauge in server info * Right align the primary button in the enable support modal * Re-factor the directory filesize code to use a single array instead of thoussands of transients * Remove the warning that would show if you were using anything other than the latest stable, it's no longer needed now that the FAQ is local * switch to using a single transient to store directory filesize data * Add an anchor link * Add error message * Rename function * Prefix GET params * Update exclude rule action * Adds function for building admin action urls * fix vertical scroll * Adds some functions to manage settings form submission errors * Rename nonce and action * fetch errors to display * Form submission handling for BWP and add-ons settings * Use a new function that persists form submission errors to a transient * None check * Pass the nonce around in the ajax request * Enable support action links * Check nonces * Modify action URLs to use the admin_post hook * Remove unneeded code * New line at end * Use admin_post hook * Display schedule start time in local timezone * Add an action hook that gives access to consumers to the backup progress * Update translatable strings POT file * Bump version * Update min WP version and tested up to * accidently used dash instead of underscore * namespaced option and added option to uninstall.php * basic show/hide of premium upsell * Fix incorrect transient expiry * Show the spinner in the tab if a schedule other than the current is running * Snip snip * Bring back the some javascript enhancements * Switch to the PHP 5.2 compatible version of Backdrop * Finish up support * Brace up single line if's and foreach's * Only load minified scripts and styles if WP_DEBUG isn't on * Load the minified css and js files by default * Remove the combined css files as we only have one now. Stop loading colorbox. * Remove colorbox * Improvements * More improvements * Don't die when directly running a backup on page load * Re-factor the backup filesize calculation * make capability filterable * use core capabilities instead of custom * Switch to Backdrop * Fix typo in prefix * Hook function onto admin_post * Update delete link * Bookmark current admin page for redirect * Add custom capabilities and role * Exclude BackUpWP by default * Ignore the build folder * Add more build excludes * minify JS * generate markdown readme * minify css * combine css * regenerate readme * Make links consistent for the grunt task * Convert URLS to markdown * Update lang files * Add colorbox as bower dependency * remove colorbox folder * Remove colorbox submodule * Change how we include FAQ * Add readme partials * Add package.json * Add Gruntfile * Add bower.json * JSHint rules * remove from ignore * Update ignore list * Add bower config * Add FAQ strings * Return the cached directory size early if we have it * Re-factor the file browser scanner * correct sprintf usage * Handle saving service forms * Codeing standards * Move the error check outside of the foreach * Remove uneeded $is_tab_visible * Only show excludes for backups which include files * Show destinations in the list of schedule links * WordPress standard modal for enabling support * Remove extra slash in include path * Add a heading to the settings form * More work on excludes * Another todo * Add some todos * Don't include the parent directory in a browsable list * More work on Excludes * Switch to only storing 3 backups by default * More work on redesign * commented out enable support button till we figure out what to do with it * made tabs responsive below 639px * More work on redesign * Add more default excludes * Correctly highlight the tab for the first schedule * Switch to tabs instead of subsubsub * First bash at a redesign settings UX #### 2.6.2 * Reverts a change to how the home path is calculated as it caused issues on installs where wp-config.php was stored outside of web root. Props to @mikelittle for the bug report. #### 2.6.1 * Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch. * Fix an issues that could cause schedule times to fail to account for timezone differences. * Add a nonce check to the schedule settings. * Fix a possible JS warning when removing an exclude rule. * Our unit tests now run in PHP 5.2 again. #### 2.6 * It's now possible to choose the time and day that your schedule will run on. * Introduces several new unit tests around schedule timings. * Fixes a bug that could cause the hourly schedule to run constantly. * Improved the layout of the Constants help panel. * If the backup root directory is unreadable then the plugin will no longer function. * Update the backups table match the standard WordPress table styles. * Improved styling for the settings dialogue. * Improved styling for the Server Info help tab. * /s/back ups/backups. * Remove Deprecated call to `screen_icon`. * Updated French translation. * Update the `WP CLI` command to use the new method for registering command. * Reload the schedules when re-setting up the default schedules so they show up straight away. * s/dpesnt't/doesn't. * Only show the estimated total schedule size when editing an existing schedule. * Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show. * Disable buttons whilst ajax requests are running. * Move spinners outside the buttons as they didn't look very good inside. * Improve the detection of the home path on multisite installs which have WordPress in a subdirectory. * Track the time that the running backup is started and display how long a backup has been running for. * Fix an issue that meant it wasn't possible to run multiple manual backups at the same time. * Many other minor improvements. #### 2.5 * BackUpWordPress now requires WordPress 3.7.1 as a minimum. * Remove some old back-compat code that was required because we supported older WP versions. * It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter. * The spinner is now retina! * Close the PHP Session before starting the backup process to work around the 1 request per session issue. Backup status will now work on sites which happen to call `session_start`. * Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests * Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations. * Improve the display of the server info in the enable support popup. * New screenshots * Use `wp_safe_redirect` for internal redirects. * Use `wp_is_writable` instead of `is_writable`. #### 2.4.2 * In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site. * Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout * Fixed 3 stray PHP warnings. * BackUpWordPress will now always be loaded before any BackUpWordPress Extensions. * Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar. #### 2.4.1 * Add missing colorbox images #### 2.4 * Support for new premium extensions for storing backups in a variety of online services. * Exclude the WP DB Manager backups and WP Super Cache cache directories by default. * We now use Intercom to offer support directly from within the plugin, opt-in of course. * More i18n fixes / improvements. * We no longer show download links if your backups directory isn't web accessible. * Fix a bug that caused the plugin activation and deactivation hooks from firing. * Correctly handle `MYSQL TIMESTAMP` columns in database dumps. * `mysqldump` and `zip` are now correctly recognised on SmartOS. * Schedule names are now translatable. * Avoid having to re-calculate the filesize when a schedules type is set. * Compatibility with WordPress 3.8 #### 2.3.2 * Correct version number. #### 2.3.1 * Fix a PHP strict error. * Save and close as separate buttons. * Fix bug that caused multiple notification emails. * Fixes typo in database option name. * Updated translations. * Improve PHP docblocks. * Make schedules class a singleton. * Exclude popular backup plugin folders by default. * Exclude version control folders by default. * Fix broken localisation. * Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions * #### 2.3 * Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible. * Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section. * Correct filename for some mis-named translation files. * Show the total estimated disk space a schedule could take up (max backups * estimated site size). * Fix a typo (your -> you're). * Use the new time Constants and define backwords compatible ones for > than 3.5. * Play nice with custom cron intervals. * Main plugin file is now `backupwordpress.php` for consistency. * Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul! * Don't remove non-backup files from custom backup paths. * Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups. * When moving paths only move backup files. * Make some untranslatable strings translatable. * Don't allow a single schedule to run in multiple threads at once, should finally fix edge case issues where some load balancer / proxies were causing multiple backups per run. * Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value. * Remove help text for deprecated `HMBKP_EMAIL`. * Default to allways specificing `--single-transaction` when using `mysqldump` to backup the database, can be disabled by setting the `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION` to `false`. * Silence a `PHP Warning` if `mysql_pconnect` has been disabled. * Ensure dot directories `.` & `..` are always skipped when looping the filesystem. * Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`. * Fix issues on IIS that could cause the root directory to be incorrectly calculated. * Fix an issue on IIS that could cause the download backup url to be incorrect. * Fix an issue on IIS that could mean your existing backups are lost when moving backup directory. * Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist. * All unit tests now pass under IIS on Windows. * Prefix the backup directory with `backupwordpress-` so that it's easier to identify. * Re-calculate the backup directory name on plugin update and move backups. * Fix some issues with how `HMBKP_SECURE_KEY` was generated. #### 2.2.4 * Fix a fatal error on PHP 5.2, sorry! (again.) #### 2.2.3 * Fix a parse error, sorry! #### 2.2.2 * Fix a fatal error when uninstalling. * Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch. * Fix a possible notice when using the plugin on a server without internet access. * Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true. * Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant. * Nonce some ajax request. * Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled. * Handle situations where the mysql port is set to something wierd. * Fallback to `mysql_connect` on system that disable `mysql_pconnect`. * You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`. * Unit tests for `HM_Backup::is_safe_mode_available()`. * Silence possible PHP Warnings when unlinking files. #### 2.2.1 * Stop storing a list of unreadable files in the backup warnings as it's too memory intensive. * Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers. * Show all errors and warnings in the popup shown when a manual backup completes. * Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process. * Fix a couple of `PHP E_STRICT` notices. * Catch more errors during the manual backup process and expose them to the user. #### 2.2 * Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable. * Show the correct path in the warning message when the backups path can't be created. * Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY. * Stop relying on the built in WordPress schedules as other plugins can mess with them. * Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up. * Improve modals on small screens and mobile devices. * Use the retina spinner on retina screens. * Update buttons to the new 3.5 style. * Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction. * Fix an issue that could cause backups using PclZip with a custom backups path to fail. * Security hardening by improving escaping, sanitizitation and validation. * Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites. * Only clear the cached backup filesize if the backup type changes. * Add unit tests for all the schedule recurrences. * Fix an issue which could cause weekly and monthly schedules to fail. * Add an `uninstall.php` file which removes all BackUpWordPress data and options. * Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`. * Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file. #### 2.1.3 * Fix a regression in `2.1.2` that broke previewing and adding new exclude rules. #### 2.1.2 * Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests. * Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains. * The mysqldump fallback function will now be used if `mysqldump` produces an empty file. * Fix a possible PHP `NOTICE` on Apache servers. #### 2.1.1 * Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin. * Don't use functions from misc.php as loading it too early can cause fatal errors. * Don't hardcode an English string in the JS, use the translated string instead. * Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions. * Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead. * Fix a possible double full stop at the end of the schedule sentence. * Minor code cleanup. #### 2.1 * Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning. * Fix possible fatal error when setting schedule to monthly. * Fix issues with download backup not working on some shared hosts. * Fix issuses with download backup not working on sites with strange characters in the site name. * Fix a bug could cause the update actions to fire on initial activation. * Improved reliability when changing backup paths, now with Unit Tests. * Generate the lists of excluded, included and unreadable files in a more memory efficient way, no more fatal errors on sites with lots of files. * Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled. * Prepend a random string to the backups directory to make it harder to brute force guess. * Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable. * Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support. * Provide more granular status messages during the backup process. * Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing. * Improve the feedback when removing an exclude rule. * Fix an issue that could cause an exclude rule to be marked as default when it in-fact isn't, thus not letting it be deleted. * Add a line encouraging people to rate the plugin if they like it. * Change the support line to point to the FAQ before recommending they contact support. * Fix the link to the "How to Restore" post in the FAQ. * Some string changes for translators, 18 changed strings. #### 2.0.6 * Fix possible warning on plugin activation if the sites cron option is empty. * Don't show the version warning in the help for Constants as that comes from the current version. #### 2.0.5 * Re-setup the cron schedules if they get deleted somehow. * Delete all BackUpWordPress cron entries when the plugin is deactivated. * Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run. * Make sure the schedule times and times of previous backups are shown in local time. * Fix a bug that could cause the legacy backup schedule to be created on every update, not just when going from 1.x to 2.x. * Improve the usefulness of the `wp-cron.php` response code check. * Use the built in `site_format` function for human readable filesizes instead of defining our own function. #### 2.0.4 * Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems. #### 2.0.3 * Fix issues with scheduled backups not firing in some cases. * Better compatibility when the WP Remote plugin is active alongside BackUpWordPress. * Catch and display more WP Cron errors. * BackUpWordPress now fails to activate on WordPress 3.3.2 and below. * Other minor fixes and improvements. #### 2.0.2 * Only send backup failed emails if the backup actually failed. * Turn off the generic "memory limit probably hit" message as it was showing for too many people. * Fix a possible notice when the backup running filename is blank. * Include the `wp_error` response in the cron check. #### 2.0.1 * Fix fatal error on PHP 5.2. #### 2.0 * Ability to have multiple schedules with separate settings & excludes per schedule. * Ability to manage exclude rules and see exactly which files are included and excluded. * Fix an issue with sites with an `open_basedir` restriction. * Backups should now be much more reliable in low memory environments. * Lots of other minor improvements and bug fixes. #### 1.6.9 * Updated and improved translations across the board - props @elektronikLexikon. * German translation - props @elektronikLexikon. * New Basque translation - props Unai ZC. * New Dutch translation - Anno De Vries. * New Italian translation. * Better support for when WordPress is installed in a sub directory - props @mattheu #### 1.6.8 * French translation props Christophe - http://catarina.fr. * Updated Spanish Translation props DD666 - https://github.com/radinamatic. * Serbian translation props StefanRistic - https://github.com/StefanRistic. * Lithuanian translation props Vincent G - http://www.Host1Free.com. * Romanian translation. * Fix conflict with WP Remote. * Fix a minor issue where invalid email address's were still stored. * The root path that is backed up can now be controlled by defining `HMBKP_ROOT`. #### 1.6.7 * Fix issue with backups being listed in reverse chronological order. * Fix issue with newest backup being deleted when you hit your max backups limit. * It's now possible to have backups sent to multiple email address's by entering them as a comma separated list. * Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`. * Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform. * Updated Spanish translation. * Fix a minor spelling mistake. * Speed up the manage backups page by caching the FAQ data for 24 hours. #### 1.6.6 * Fix backup path issue with case sensitive filesystems. #### 1.6.5 * Fix an issue with emailing backups that could cause the backup file to not be attached. * Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd. * Never show the running backup in the list of backups. * Show an error backup email failed to send. * Fix possible notice when deleting a backup file which doesn't exist. * Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`. * Make `HMBKP_SECURE_KEY` override-able. * BackUpWordPress should now work when `ABSPATH` is `/`. #### 1.6.4 * Don't show warning message as they cause to much panic. * Move previous methods errors to warnings in fallback methods. * Wrap `.htaccess` rewrite rules in if `mod_rewrite` check. * Add link to new restore help article to FAQ. * Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version. * Bug fix in `zip command` check that could cause an incorrect `zip` path to be used. * Detect and pass `MySQL` port to `mysqldump`. #### 1.6.3 * Don't fail archive verification for errors in previous archive methods. * Improved detection of the `zip` and `mysqldump` commands. * Fix issues when `ABSPATH` is `/`. * Remove reliance on `SECURE_AUTH_KEY` as it's often not defined. * Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`. * Fix download zip on Windows when `ABSPATH` contains a trailing forward slash. * Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing. * Add missing / to `PCLZIP_TEMPORARY_DIR` define. * Catch and display errors during `mysqldump`. #### 1.6.2 * Track `PHP` errors as backup warnings not errors. * Only show warning message for `PHP` errors in BackUpWordPress files. * Ability to dismiss the error / warning messages. * Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites. * Don't delete "number of backups" setting on update. * Better handling of multibyte characters in archive and database dump filenames. * Mark backup as running and increase callback timeout to `500` when firing backup via ajax. * Don't send backup email if backup failed. * Filter out duplicate exclude rules. #### 1.6.1 * Fix fatal error on PHP =< 5.3 #### 1.6 * Fixes issue with backups dir being included in backups on some Windows Servers. * Consistent handling of symlinks across all archive methods (they are followed). * Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files. * Track errors and warnings that happen during backup and expose them through admin. * Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed. * Ability to cancel a running backup. * Zip files are now integrity checked after every backup. * More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works. * Use `mysql_query` instead of the depreciated `mysql_list_tables`. #### 1.5.2 * Better handling of unreadable files in ZipArchive and the backup size calculation. * Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path] [--root] [--zip_command_path=] [--mysqldump_command_path=]` #### 1.5.1 * Better detection of `zip` command. * Don't delete user settings on update / deactivate. * Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed. * Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests. * Improved the speed of the backup size calculation. #### 1.5 * Re-written core backup engine should be more robust especially in edge case scenarios. * 48 unit tests for the core backup engine, yay for unit tests. * Remove some extraneous status information from the admin interface. * Rename Advanced Options to Settings * New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed. * Suppress possible filemtime warnings in some edge cases. * 3.3 compatability. * Set proper charset of MySQL backup, props valericus. * Fix some inconsistencies between the estimated backup size and actual backup size when excluding files. #### 1.4.1 * 1.4 was incorrectly marked as beta. #### 1.4 * Most options can now be set on the backups page, all options can still be set by defining them as `Constants`. * Russian translation, props valericus. * All dates are now translatable. * Fixed some strings which weren't translatable. * New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups. * Manual backups now work if `DISABLE_WP_CRON` is defined as `true`. #### 1.3.2 * Spanish translation * Bump PHP version check to 5.2.4 * Fallback to PHP mysqldump if shell_exec fails for any reason. * Silently ignore unreadable files / folders * Make sure binary data is properly exported when doing a mysqldump * Use 303 instead of 302 when redirecting in the admin. * Don't `set_time_limit` inside a loop * Use WordPress 3.2 style buttons * Don't pass an empty password to mysqldump #### 1.3.1 * Check for PHP version. Deactivate plugin if running on PHP version 4. #### 1.3 * Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability. * Support for excluding files and folders, define `HMBKP_EXCLUDE` with a comma separated list of files and folders to exclude, supports wildcards `*`, path fragments and absolute paths. * Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it. * Work around issues caused by low MySQL `wait_timeout` setting. * Add FAQ to readme.txt. * Pull FAQ into the contextual help tab on the backups page. * Block activation on old versions of WordPress. * Stop guessing compressed backup file size, instead just show size of site uncompressed. * Fix bug in `safe_mode` detection which could cause `Off` to act like `On`. * Better name for the database dump file. * Better name for the backup files. * Improve styling for advanced options. * Show examples for all advanced options. * Language improvements. * Layout tweaks. #### 1.2 * Show live backup status in the back up now button when a back up is running. * Show free disk space after total used by backups. * Several langauge changes. * Work around the 1 cron every 60 seconds limit. * Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue. * Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future. * Highlight defined `Constants`. * Show defaults for all `Constants`. * Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time. * Make sure options added in 1.1.4 are cleared on de-activate. * Support `mysqldump on` Windows if it's available. * New option to have each backup emailed to you on completion. Props @matheu for the contribution. * Improved windows server support. #### 1.1.4 * Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if `mysql.max_links` is set to 2 or less. * Don't suppress `mysql_connect` errors in the mysqldump PHP fallback. * One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup. * Fix a spelling error in the `shell_exec` disabled message. * Store the BackUpWordPress version as a `Constant` rather than a `Variable`. * Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated. * Minor PHPDoc improvements. #### 1.1.3 * Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed. * When using `PCLZIP` as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP. #### 1.1.2 * Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working. #### 1.1.1 * Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`. * Clear the running backup status and reset the calculated filesize on update. * Show a link to the manage backups page in the plugin description. * Other general fixes. #### 1.1 * Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update. * Expose the various `Constants` that can be defined to change advanced settings. * Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`. * Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`. * Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );` * Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );` * Tweaks to the backups page layout. * General bug fixes and improvements. #### 1.0.5 * Don't ajax load estimated backup size if it's already been calculated. * Fix time in backup complete log message. * Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired. * Show number of backups saved message. * Add a link to the backups page to the plugin action links. #### 1.0.4 Don't throw PHP Warnings when `shell_exec` is disabled #### 1.0.3 Minor bug fix release. * Suppress `filesize()` warnings when calculating backup size. * Plugin should now work when symlinked. * Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt. * Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings. * Don't ajax ping running backup status quite so often. #### 1.0.1 & 1.0.2 Fix some silly 1.0 bugs #### 1.0 1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by [Human Made](http://hmn.md) the chaps behind [WP Remote](https://wpremote.com) #### Previous Version 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/) ================================================ FILE: tests/bootstrap.php ================================================ setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); } public function tearDown() { $this->cleanup_test_data(); } public function test_backup() { $this->assertTrue( $this->backup->backup() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); } public function test_backup_with_errors() { $this->assertTrue( $this->backup->backup() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->backup->error( get_class( $this->backup ), 'foobar' ); $this->assertFalse( $this->backup->verify_backup() ); } } ================================================ FILE: tests/class-backup-engine/common-file-backup-engine-tests.php ================================================ setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); } public function tearDown() { if ( file_exists( Path::get_root() . '/exclude' ) ) { chmod( Path::get_root() . '/exclude', 0755 ); } if ( file_exists( Path::get_root() . '/test-data.txt' ) ) { chmod( Path::get_root() . '/test-data.txt', 0644 ); } if ( file_exists( $this->hidden ) ) { unlink( $this->hidden ); } if ( file_exists( $this->symlink ) || is_link( $this->symlink ) ) { unlink( $this->symlink ); } $this->cleanup_test_data(); } public function test_backup() { $this->assertTrue( $this->backup->backup() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'test-data.txt' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 ); } /** * Test an unreadable file with the shell commands * */ public function test_backup_with_hidden_file() { $this->hidden = $this->test_data . '/.hidden'; if ( ! file_put_contents( $this->hidden, 'test' ) ) { $this->markTestSkipped( 'Couldn\'t create hidden file to test with' ); } $this->assertFileExists( $this->hidden ); $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->hidden ) ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 ); } public function test_backup_with_symlink_directory() { if ( ! function_exists( 'symlink' ) ) { $this->markTestSkipped( 'symlink function not defined' ); } $this->symlink = $this->test_data . '/tests'; if ( ! @symlink( trailingslashit( $this->test_data_symlink ), $this->symlink ) ) { $this->markTestSkipped( 'Couldn\'t create symlink to test with' ); } $this->assertFileExists( $this->symlink ); $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 5 ); $this->assertEmpty( $this->backup->get_errors() ); } public function test_backup_with_symlink_file() { if ( ! function_exists( 'symlink' ) ) { $this->markTestSkipped( 'symlink function not defined' ); } $this->symlink = trailingslashit( $this->test_data ) . basename( __FILE__ ); if ( ! @symlink( __FILE__, $this->symlink ) ) { $this->markTestSkipped( 'Couldn\'t create symlink to test with' ); } $this->assertFileExists( $this->symlink ); $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 ); $this->assertEmpty( $this->backup->get_errors() ); } public function test_backup_with_broken_symlink() { if ( ! function_exists( 'symlink' ) ) { $this->markTestSkipped( 'symlink function not defined' ); } $this->symlink = trailingslashit( $this->test_data ) . basename( __FILE__ ); file_put_contents( $this->test_data . '/symlink', '' ); $symlink_created = @symlink( $this->test_data . '/symlink', $this->symlink ); unlink( $this->test_data . '/symlink' ); if ( ! $symlink_created ) { $this->markTestSkipped( 'Couldn\'t create symlink to test with' ); } $this->assertFileNotExists( $this->symlink ); $this->assertTrue( is_link( $this->symlink ) ); $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 ); $this->assertEmpty( $this->backup->get_errors() ); } public function test_backup_with_unreadable_file() { chmod( Path::get_root() . '/test-data.txt', 0220 ); if ( is_readable( Path::get_root() . '/test-data.txt' ) ) { $this->markTestSkipped( "File was readable." ); } $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'test-data.txt' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 2 ); } public function test_backup_with_unreadable_directory() { chmod( Path::get_root() . '/exclude', 0220 ); if ( is_readable( Path::get_root() . '/exclude' ) ) { $this->markTestSkipped( "Directory was readable." ); } $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'exclude' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 1 ); } public function test_file_with_strange_characters() { file_put_contents( PATH::get_root() . '/Groß.jpg', '' ); $this->assertFileExists( PATH::get_root() . '/Groß.jpg' ); $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'Groß.jpg' ) ); unlink( PATH::get_root() . '/Groß.jpg' ); } /** * Test a complete backup of the WordPress Site * * @group full-backup */ public function test_complete_file_backup_with_excludes() { // Reset root back to defaults Path::get_instance()->set_root( false ); $this->backup->set_excludes( new Excludes( array( 'wp-*' ) ) ); $this->backup->backup(); $finder = $this->backup->get_files(); foreach( $finder as $file ) { $files[] = $file->getRelativePathname(); } $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), iterator_count( $finder ) ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), $files ); } /** * Test a complete backup of the WordPress Site * * @group full-backup */ public function test_complete_file_backup() { // Reset root back to defaults Path::get_instance()->set_root( false ); $this->backup->backup(); $finder = $this->backup->get_files(); foreach( $finder as $file ) { $files[] = $file->getRelativePathname(); } $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), iterator_count( $finder ) ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), $files ); } public function test_adding_files_to_existing_backup() { $this->backup->backup(); $filepath = $this->backup->get_backup_filepath(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'test-data.txt', 'exclude', 'exclude/exclude.exclude' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 ); // create a new file if ( ! file_put_contents( Path::get_root() . '/new.file', 'test' ) ) { $this->markTestSkipped( 'new.file couldn\'t be created' ); } $this->backup->backup(); $this->assertEquals( $filepath, $this->backup->get_backup_filepath() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'new.file' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 ); } public function test_backup_with_errors() { $this->assertTrue( $this->backup->backup() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->backup->error( get_class( $this->backup ), 'foobar' ); $this->assertFalse( $this->backup->verify_backup() ); } } ================================================ FILE: tests/class-backup-engine/test-class-backup-engine-database-imysqldump.php ================================================ backup = new IMysqldump_Database_Backup_Engine; parent::setUp(); } } ================================================ FILE: tests/class-backup-engine/test-class-backup-engine-database-mysqldump.php ================================================ backup = new Mysqldump_Database_Backup_Engine; if ( ! $this->backup->get_mysqldump_executable_path() ) { $this->markTestSkipped( 'mysqldump not available' ); } parent::setUp(); } public function test_default_command_path() { $this->assertEquals( 'mysqldump', $this->backup->get_mysqldump_executable_path() ); } } ================================================ FILE: tests/class-backup-engine/test-class-backup-engine-database.php ================================================ db = new Mock_Database_Backup_Engine; } function test_db_host_localhost() { $this->db->parse_db_host_constant( 'localhost' ); $this->assertEquals( 'localhost', $this->db->get_host() ); $this->assertEmpty( $this->db->get_port() ); $this->assertEmpty( $this->db->get_socket() ); } function test_db_host_localhost_port() { $this->db->parse_db_host_constant( 'localhost:3306' ); $this->assertEquals( 'localhost', $this->db->get_host() ); $this->assertEquals( 3306, $this->db->get_port() ); $this->assertEmpty( $this->db->get_socket() ); } function test_db_host_localhost_socket() { $this->db->parse_db_host_constant( 'localhost:/tmp/mysql5.sock' ); $this->assertEquals( 'localhost', $this->db->get_host() ); $this->assertEmpty( $this->db->get_port() ); $this->assertEquals( '/tmp/mysql5.sock', $this->db->get_socket() ); } function test_db_host_url() { $this->db->parse_db_host_constant( 'mysqlXY-AB.wcN.dfQ.stabletransit.com' ); $this->assertEquals( 'mysqlXY-AB.wcN.dfQ.stabletransit.com', $this->db->get_host() ); $this->assertEmpty( $this->db->get_port() ); $this->assertEmpty( $this->db->get_socket() ); } function test_db_host_ip() { $this->db->parse_db_host_constant( '127.0.0.1' ); $this->assertEquals( '127.0.0.1', $this->db->get_host() ); $this->assertEmpty( $this->db->get_port() ); $this->assertEmpty( $this->db->get_socket() ); } } ================================================ FILE: tests/class-backup-engine/test-class-backup-engine-file-zip-archive.php ================================================ backup = new Zip_Archive_File_Backup_Engine; parent::setUp(); } } ================================================ FILE: tests/class-backup-engine/test-class-backup-engine-file-zip.php ================================================ backup = new Zip_File_Backup_Engine; if ( ! $this->backup->get_zip_executable_path() ) { $this->markTestSkipped( 'zip not available' ); } parent::setUp(); } /** * Override the common version of this test as `zip` does include unreadable directories, * it just doesn't include any of the files in the unreadable directory */ public function test_backup_with_unreadable_directory() { chmod( Path::get_root() . '/exclude', 0220 ); if ( is_readable( Path::get_root() . '/exclude' ) ) { $this->markTestSkipped( "Directory was readable." ); } $this->backup->backup(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'exclude' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 2 ); } } ================================================ FILE: tests/class-backup-utilities/test-get-executable-path.php ================================================ paths = array_combine( $paths, $paths ); if ( ! function_exists( 'proc_open' ) || ! function_exists( 'proc_close' ) ) { $this->markTestSkipped( 'proc_open is disabled' ); } } public function test_can_pick_first_path() { $this->assertEquals( 'mysql', Backup_Utilities::get_executable_path( $this->paths ) ); } public function test_can_pick_shuffled_command_path() { $paths = $this->paths; shuffle( $paths ); $this->assertEquals( 'mysql', Backup_Utilities::get_executable_path( $paths ) ); } public function test_remove_default_command_path() { $paths = $this->paths; $paths[] = $path = trim( shell_exec( 'which mysql ' . ignore_stderr() ) ); if ( ! $path ) { $this->markTestSkipped( 'Couldn\'t find mysql' ); } unset( $paths['mysql'] ); shuffle( $paths ); $this->assertEquals( $path, Backup_Utilities::get_executable_path( $paths ) ); } } ================================================ FILE: tests/class-backup-utilities/test-get-home-path.php ================================================ setup_test_data(); } function tearDown() { rmdirtree( $this->test_data ); rmdirtree( $this->test_data_symlink ); } /** * In this scenario WordPress is installed as normal with wp-config.php and index.php in the root directory. */ function test_standard_install() { $this->assertEquals( wp_normalize_path( untrailingslashit( ABSPATH ) ), Path::get_home_path() ); } /** * In this scenario, WordPress is installed in a subdirectory with index.php and wp-config both in root. */ function test_standard_install_in_subdirectory() { $home = get_option( 'home' ); $siteurl = get_option( 'siteurl' ); $sfn = $_SERVER['SCRIPT_FILENAME']; $this->assertEquals( wp_normalize_path( untrailingslashit( ABSPATH ) ), Path::get_home_path() ); update_option( 'home', 'http://localhost' ); update_option( 'siteurl', 'http://localhost/wp' ); $_SERVER['SCRIPT_FILENAME'] = 'D:\root\vhosts\site\httpdocs\wp\wp-admin\options-permalink.php'; $this->assertEquals( 'D:/root/vhosts/site/httpdocs/', trailingslashit( Path::get_home_path() ) ); $_SERVER['SCRIPT_FILENAME'] = '/Users/foo/public_html/trunk/wp/wp-admin/options-permalink.php'; $this->assertEquals( '/Users/foo/public_html/trunk/', trailingslashit( Path::get_home_path() ) ); $_SERVER['SCRIPT_FILENAME'] = 'S:/home/wordpress/trunk/wp/wp-admin/options-permalink.php'; $this->assertEquals( 'S:/home/wordpress/trunk/', trailingslashit( Path::get_home_path() ) ); update_option( 'home', $home ); update_option( 'siteurl', $siteurl ); $_SERVER['SCRIPT_FILENAME'] = $sfn; } } ================================================ FILE: tests/class-backup-utilities/test-safe-mode.php ================================================ safe_mode; } function testSafeModeEmpty() { $this->safe_mode = ''; $this->assertEmpty( $this->ini_get_mock() ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeUpperCaseOff() { $this->safe_mode = 'Off'; $this->assertEquals( $this->ini_get_mock(), 'Off' ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeLowerCaseOff() { $this->safe_mode = 'off'; $this->assertEquals( $this->ini_get_mock(), 'off' ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeWierdCaseOff() { $this->safe_mode = 'oFf'; $this->assertEquals( $this->ini_get_mock(), 'oFf' ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeStringZero() { $this->safe_mode = '0'; $this->assertEquals( $this->ini_get_mock(), '0' ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeIntZero() { $this->safe_mode = 0; $this->assertEquals( $this->ini_get_mock(), 0 ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeFalse() { $this->safe_mode = false; $this->assertFalse( $this->ini_get_mock() ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeNull() { $this->safe_mode = null; $this->assertNull( $this->ini_get_mock() ); $this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeIntOne() { $this->safe_mode = 1; $this->assertEquals( $this->ini_get_mock(), 1 ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeStringOne() { $this->safe_mode = '1'; $this->assertEquals( $this->ini_get_mock(), '1' ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeUpperCaseOn() { $this->safe_mode = 'On'; $this->assertEquals( $this->ini_get_mock(), 'On' ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeLowerCaseOn() { $this->safe_mode = 'on'; $this->assertEquals( $this->ini_get_mock(), 'on' ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeWierdCaseOn() { $this->safe_mode = 'oN'; $this->assertEquals( $this->ini_get_mock(), 'oN' ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } function testSafeModeTrue() { $this->safe_mode = true; $this->assertEquals( $this->ini_get_mock(), true ); $this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) ); } } ================================================ FILE: tests/class-mock-backup-engines.php ================================================ good_backup_engine = new Mock_Backup_Engine; $this->bad_backup_engine = new Mock_Failing_Backup_Engine; $this->backup = new Backup( 'backup.zip' ); } public function test_backup_director_good() { $backup_engine = $this->backup->perform_backup( array( $this->good_backup_engine ) ); $this->assertEquals( $this->good_backup_engine, $backup_engine ); } public function test_backup_director_good_first() { $backup_engine = $this->backup->perform_backup( array( $this->good_backup_engine, $this->bad_backup_engine ) ); $this->assertEquals( $this->good_backup_engine, $backup_engine ); } public function test_backup_director_good_last() { $backup_engine = $this->backup->perform_backup( array( $this->bad_backup_engine, $this->good_backup_engine ) ); $this->assertEquals( $this->good_backup_engine, $backup_engine ); } public function test_backup_director_bad() { $backup_engine = $this->backup->perform_backup( array( $this->bad_backup_engine ) ); $this->assertFalse( $backup_engine ); } public function test_backup_director_lots_of_bad() { $backup_engine = $this->backup->perform_backup( array( $this->bad_backup_engine, $this->bad_backup_engine, $this->bad_backup_engine, $this->bad_backup_engine, $this->good_backup_engine, $this->bad_backup_engine ) ); $this->assertEquals( $this->good_backup_engine, $backup_engine ); } } ================================================ FILE: tests/class-site-backup/test-class-site-backup.php ================================================ backup = new Backup( 'backup.zip' ); $this->setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); } public function tearDown() { $this->cleanup_test_data(); } public function test_database_backup() { $this->backup->set_type( 'database' ); $this->backup->run(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->backup->get_database_backup_filepath() ) ) ); } public function test_only_database_zipped_up() { $this->backup->set_type( 'database' ); Path::get_instance()->reset_path(); file_put_contents( PATH::get_path() . '/foo.zip.SmuhtP', 'bar' ); file_put_contents( PATH::get_path() . '/zicBotXQ', 'baz' ); $this->backup->run(); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->backup->get_database_backup_filepath() ) ) ); $this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'zicBotXQ', 'foo.zip.SmuhtP' ) ); $this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 1 ); } public function test_files_backup() { $this->backup->set_type( 'files' ); $this->backup->run(); $finder = new Mock_File_Backup_Engine; $finder = $finder->get_files(); foreach ( $finder as $file ) { $files[] = $file->getRelativePathname(); } $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), $files ); } public function test_complete_backup() { $this->backup->run(); $finder = new Mock_File_Backup_Engine; $finder = $finder->get_files(); foreach ( $finder as $file ) { $files[] = $file->getRelativePathname(); } $files[] = basename( $this->backup->get_database_backup_filepath() ); $this->assertFileExists( $this->backup->get_backup_filepath() ); $this->assertArchiveContains( $this->backup->get_backup_filepath(), $files ); } public function test_multiple_backups_exclude_backups() { $this->backup->set_backup_filename( 'backup1.zip' ); $this->backup->run(); $backup1 = $this->backup->get_backup_filepath(); $this->backup->set_backup_filename( 'backup2.zip' ); $this->backup->run(); $backup2 = $this->backup->get_backup_filepath(); // Allow the filesize to vary by 10 bytes to avoid minor changes causing failures $this->assertEquals( filesize( $backup1 ), filesize( $backup2 ), '', 10 ); $this->assertArchiveNotContains( $backup2, array( 'backup1.zip' ) ); } } ================================================ FILE: tests/class-wp-test-hm-backup-testcase.php ================================================ pclzip_extract_as_string( $zip_file ); $files = array(); foreach( $filepaths as $filepath ) { $filenames[] = str_ireplace( trailingslashit( $root ), '', wp_normalize_path( (string) $filepath ) ); } foreach( $extracted as $fileInfo ) { $files[] = untrailingslashit( $fileInfo['filename'] ); } $this->assertEquals( $filenames, $files ); } /** * Assert that a zip archive doesn't match the array of filenames * * @param string path to zip file * @param array of filenames to check for * @return null */ function assertArchiveNotEquals( $zip_file, $filenames ) { $extracted = $this->pclzip_extract_as_string( $zip_file ); $files = array(); foreach( $extracted as $fileInfo ) { $files[] = $fileInfo['filename']; } $this->assertNotEquals( $filenames, $files ); } /** * Assert that a zip archive contains the array * of filenames * * @param string path to zip file * @param array of filenames to check for * @return null */ function assertArchiveContains( $zip_file, $filepaths, $root = ABSPATH ) { $extracted = $this->pclzip_extract_as_string( $zip_file ); $files = array(); foreach( $filepaths as $filepath ) { $filenames[] = str_ireplace( trailingslashit( $root ), '', wp_normalize_path( (string) $filepath ) ); } foreach( $extracted as $fileInfo ) { $files[] = untrailingslashit( wp_normalize_path( $fileInfo['filename'] ) ); } foreach( $filenames as $filename ) { $this->assertContains( $filename, $files ); } } /** * Assert that a zip archive doesn't contain any of the files * in the array of filenames * * @param string path to zip file * @param array of filenames to check for * @return null */ function assertArchiveNotContains( $zip_file, $filenames ) { $extracted = $this->pclzip_extract_as_string( $zip_file ); $files = array(); foreach( (array) $extracted as $fileInfo ) { $files[] = wp_normalize_path( $fileInfo['filename'] ); } foreach( $filenames as $filename ) { $this->assertNotContains( $filename, $files ); } } /** * Assert that a zip archive contains the * correct number of files * * @param string path to zip file * @param int the number of files the archive should contain * @return null */ function assertArchiveFileCount( $zip_file, $file_count ) { $extracted = $this->pclzip_extract_as_string( $zip_file ); $this->assertEquals( count( array_filter( (array) $extracted ) ), $file_count ); } private function pclzip_extract_as_string( $zip_file ) { require_once( ABSPATH . 'wp-admin/includes/class-pclzip.php' ); if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) { $previous_encoding = mb_internal_encoding(); mb_internal_encoding( 'ISO-8859-1' ); } $archive = new PclZip( $zip_file ); $extracted = $archive->extract( PCLZIP_OPT_EXTRACT_AS_STRING ); if ( isset( $previous_encoding ) ) { mb_internal_encoding( $previous_encoding ); } return $extracted; } protected function setup_test_data() { $this->test_data = wp_normalize_path( __DIR__ ) . '/test-data'; $this->test_data_symlink = wp_normalize_path( __DIR__ ) . '/test-data-symlink'; $this->cleanup_test_data(); mkdir( $this->test_data ); mkdir( $this->test_data . '/exclude' ); file_put_contents( $this->test_data . '/test-data.txt', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla adipiscing tincidunt dictum. Cras sed elit in ligula volutpat egestas et ac ipsum. Maecenas vitae lorem nulla, vel lacinia ligula. Duis varius nibh consequat dui lacinia tempor eu eu ipsum. Cras gravida metus ut elit eleifend mattis. Cras porta dignissim elit, at tincidunt ante pellentesque vitae. Nam dictum dapibus arcu, vitae tincidunt nunc semper eu. Pellentesque ornare interdum arcu, sit amet molestie orci malesuada a. Morbi ac lacus a lorem consectetur auctor. Suspendisse facilisis nisi vitae nisi convallis a blandit odio imperdiet. Ut lobortis luctus lacinia. Maecenas malesuada ultrices dui.' ); file_put_contents( $this->test_data . '/exclude/exclude.exclude', '' ); mkdir( $this->test_data_symlink ); file_put_contents( $this->test_data_symlink . '/test-data-symlink.txt', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla adipiscing tincidunt dictum. Cras sed elit in ligula volutpat egestas et ac ipsum. Maecenas vitae lorem nulla, vel lacinia ligula. Duis varius nibh consequat dui lacinia tempor eu eu ipsum. Cras gravida metus ut elit eleifend mattis. Cras porta dignissim elit, at tincidunt ante pellentesque vitae. Nam dictum dapibus arcu, vitae tincidunt nunc semper eu. Pellentesque ornare interdum arcu, sit amet molestie orci malesuada a. Morbi ac lacus a lorem consectetur auctor. Suspendisse facilisis nisi vitae nisi convallis a blandit odio imperdiet. Ut lobortis luctus lacinia. Maecenas malesuada ultrices dui.' ); } protected function cleanup_test_data() { HM\BackUpWordPress\rmdirtree( $this->test_data ); HM\BackUpWordPress\rmdirtree( $this->test_data_symlink ); } /** * Provide a backwards compatible version of assertNotWPError for old versions of WordPress */ public function assertNotWPError( $actual, $message = '' ) { if ( is_callable( 'parent::assertNotWPError' ) ) { return parent::assertNotWPError( $actual, $message ); } if ( is_wp_error( $actual ) && '' === $message ) { $message = $actual->get_error_message(); } $this->assertNotInstanceOf( 'WP_Error', $actual, $message ); } } ================================================ FILE: tests/data/response.json ================================================ [{"id":24261,"date":"2016-03-01T15:40:08","date_gmt":"2016-03-01T15:40:08","guid":{"rendered":"https:\/\/bwp.hmn.md\/?post_type=download&p=24261"},"modified":"2016-03-14T14:55:34","modified_gmt":"2016-03-14T14:55:34","slug":"backupwordpress-to-dropbox","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-dropbox\/","title":{"rendered":"BackUpWordPress To Dropbox"},"content":{"rendered":"

    For you who use Dropbox already in your daily workflow, it just makes sense to keep your important backups stored with the service that you already trust for your other important documents and media. BackUpWordPress to Dropbox allows you to automatically send a copy of your backup to your linked account. All you need to do is authorize BackUpWordPress once in your dashboard, and set a schedule.
    \nRequirements:<\/strong><\/p>\n

      \n
    • PHP 5.3<\/li>\n
    • Latest BackUpWordPress<\/li>\n
    • WordPress 4.4.2<\/li>\n
    • Mcrypt PHP extension<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

      For you who use Dropbox already in your daily workflow, it just makes sense to keep your important backups stored with the service that you already trust for your other important documents and media. BackUpWordPress to Dropbox allows you to automatically send a copy of your backup to your linked account. All you need to […]<\/p>\n"},"author":35,"featured_image":27085,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/dropbox-bwp.png","_edd_sl_version":"2.2.2","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/24261"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/24261\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27085"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=24261"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/24261\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/24261\/download_tag"}]}},{"id":23934,"date":"2016-02-22T10:47:50","date_gmt":"2016-02-22T10:47:50","guid":{"rendered":"https:\/\/bwp.hmn.md\/?post_type=download&p=23934"},"modified":"2016-03-14T14:55:58","modified_gmt":"2016-03-14T14:55:58","slug":"backupwordpress-to-amazon-s3","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-amazon-s3\/","title":{"rendered":"BackUpWordPress To Amazon S3"},"content":{"rendered":"

      You can now backup your website automatically to your Amazon S3 account automatically on a schedule.<\/p>\n

      Amazon S3 is an immensely popular and inexpensive cloud storage service.<\/p>\n

      Requirements:<\/strong><\/p>\n

        \n
      • PHP version 5.3.2<\/li>\n
      • Latest BackUpWordPress<\/li>\n
      • WordPress\u00a04.4.2<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

        You can now backup your website automatically to your Amazon S3 account automatically on a schedule. Amazon S3 is an immensely popular and inexpensive cloud storage service. Requirements: PHP version 5.3.2 Latest BackUpWordPress WordPress\u00a04.4.2<\/p>\n"},"author":35,"featured_image":27086,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/s3-bwp.png","_edd_sl_version":"2.1.10","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23934"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23934\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27086"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=23934"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23934\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23934\/download_tag"}]}},{"id":23472,"date":"2016-02-09T14:40:23","date_gmt":"2016-02-09T14:40:23","guid":{"rendered":"https:\/\/bwp.hmn.md\/?post_type=download&p=23472"},"modified":"2016-03-14T14:56:20","modified_gmt":"2016-03-14T14:56:20","slug":"backupwordpress-to-google-drive","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-google-drive\/","title":{"rendered":"BackUpWordPress To Google Drive"},"content":{"rendered":"

        Many people already use Google Drive for creating and storing documents in the cloud, but did you know you can also use it for storing other types of files?<\/p>\n

        Well now you set BackUpWordPress to automatically send a copy of your backups to your Google Drive account, simply by authenticating with it through the extension settings.<\/p>\n

        Requirements:<\/strong><\/p>\n

          \n
        • Latest BackUpWordPress<\/li>\n
        • WordPress\u00a04.4.2<\/li>\n
        • PHP\u00a05.3.3<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

          Many people already use Google Drive for creating and storing documents in the cloud, but did you know you can also use it for storing other types of files? Well now you set BackUpWordPress to automatically send a copy of your backups to your Google Drive account, simply by authenticating with it through the extension […]<\/p>\n"},"author":35,"featured_image":27087,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/gdrive-bwp.png","_edd_sl_version":"2.1.13","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23472"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23472\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27087"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=23472"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23472\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/23472\/download_tag"}]}},{"id":41,"date":"2013-05-24T20:55:30","date_gmt":"2013-05-24T20:55:30","guid":{"rendered":"http:\/\/bwp.hmn.md\/?post_type=download&p=41"},"modified":"2016-03-14T15:10:11","modified_gmt":"2016-03-14T15:10:11","slug":"backupwordpress-to-ftp","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-ftp\/","title":{"rendered":"BackUpWordPress To FTP"},"content":{"rendered":"

          Do you wish you could store a copy of your backup files on another server than your website hosting? Well now you can!<\/p>\n

          After activating the BackUpWordPress to FTP extension, you’ll find a new destination in your backup schedule settings. Just fill out your FTP\/ SFTP credentials and you’ll be all set to get automatic backups sent to a remote server.<\/p>\n

          Requirements:<\/strong><\/p>\n

            \n
          • Latest BackUpWordPress<\/li>\n
          • WordPress 4.4.2<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

            Do you wish you could store a copy of your backup files on another server than your website hosting? Well now you can! After activating the BackUpWordPress to FTP extension, you’ll find a new destination in your backup schedule settings. Just fill out your FTP\/ SFTP credentials and you’ll be all set to get automatic […]<\/p>\n"},"author":35,"featured_image":27092,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/ftp-bwp.png","_edd_sl_version":"2.1.8","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/41"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/41\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27092"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=41"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/41\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/41\/download_tag"}]}},{"id":49,"date":"2013-05-24T20:54:29","date_gmt":"2013-05-24T20:54:29","guid":{"rendered":"http:\/\/bwp.hmn.md\/?post_type=download&p=49"},"modified":"2016-03-14T14:56:42","modified_gmt":"2016-03-14T14:56:42","slug":"backupwordpress-to-rackspace-cloud","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-rackspace-cloud\/","title":{"rendered":"BackUpWordPress To Rackspace Cloud"},"content":{"rendered":"

            Buy yourself some peace of mind by getting the Rackspace Cloud\u00a0extension and let BackUpWordPress send a copy of your website backup to this cloud\u00a0storage sevice.<\/p>\n

            Requirements:<\/strong><\/p>\n

              \n
            • PHP version 5.3.0<\/li>\n
            • BackUpWordPress 3.1<\/li>\n
            • WordPress\u00a04.4.2<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

              Buy yourself some peace of mind by getting the Rackspace Cloud\u00a0extension and let BackUpWordPress send a copy of your website backup to this cloud\u00a0storage sevice. Requirements: PHP version 5.3.0 BackUpWordPress 3.1 WordPress\u00a04.4.2<\/p>\n"},"author":35,"featured_image":27088,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/rackspace-bwp.png","_edd_sl_version":"2.1.9","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/49"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/49\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27088"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=49"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/49\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/49\/download_tag"}]}},{"id":48,"date":"2013-05-24T20:53:48","date_gmt":"2013-05-24T20:53:48","guid":{"rendered":"http:\/\/bwp.hmn.md\/?post_type=download&p=48"},"modified":"2016-03-14T14:57:32","modified_gmt":"2016-03-14T14:57:32","slug":"backupwordpress-to-windows-azure","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-windows-azure\/","title":{"rendered":"BackUpWordPress To Windows Azure"},"content":{"rendered":"

              Windows Azure is a cloud\u00a0storage service similar to Amazon S3.<\/p>\n

              Now BackUpWordPress to Windows Azure allows you to seamlessly send your backups to this destination by simply adding your credentials in the settings form for BackUpWordPress schedules.<\/p>\n

              Requirements:<\/strong><\/p>\n

                \n
              • PHP version 5.3.3<\/li>\n
              • Latest BackUpWordPress<\/li>\n
              • WordPress\u00a04.4.2<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

                Windows Azure is a cloud\u00a0storage service similar to Amazon S3. Now BackUpWordPress to Windows Azure allows you to seamlessly send your backups to this destination by simply adding your credentials in the settings form for BackUpWordPress schedules. Requirements: PHP version 5.3.3 Latest BackUpWordPress WordPress\u00a04.4.2<\/p>\n"},"author":35,"featured_image":27089,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/azure-bwp.png","_edd_sl_version":"2.2.2","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/48"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/48\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27089"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=48"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/48\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/48\/download_tag"}]}},{"id":36,"date":"2013-05-24T13:15:34","date_gmt":"2013-05-24T13:15:34","guid":{"rendered":"http:\/\/bwp.hmn.md\/?post_type=download&p=36"},"modified":"2016-03-14T15:00:46","modified_gmt":"2016-03-14T15:00:46","slug":"developer-bundle","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/developer-bundle\/","title":{"rendered":"Developer Bundle"},"content":{"rendered":"

                All our extensions for BackUpWordPress in a single bundle.<\/p>\n

                Best value!<\/p>\n"},"excerpt":{"rendered":"

                All our extensions for BackUpWordPress in a single bundle. Best value!<\/p>\n"},"author":5,"featured_image":27091,"edd_price":"99.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/bundle-bwp.png","_edd_sl_version":"1.0.6","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/36"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/5"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/36\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27091"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=36"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/36\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/36\/download_tag"}]}},{"id":19,"date":"2013-05-22T20:03:26","date_gmt":"2013-05-22T20:03:26","guid":{"rendered":"http:\/\/bwp.hmn.md\/?post_type=download&p=19"},"modified":"2016-03-14T14:57:59","modified_gmt":"2016-03-14T14:57:59","slug":"backupwordpress-to-dreamobjects","type":"download","link":"https:\/\/bwp.hmn.md\/downloads\/backupwordpress-to-dreamobjects\/","title":{"rendered":"BackUpWordPress To DreamHost DreamObjects"},"content":{"rendered":"

                Have you heard of Dreamhost Dream Objects? If you have a Dreamhost account, it just makes sense to use their cloud storage service to backup your website.<\/p>\n

                BackUpWordPress to Dreamhost dreamobjects now allows you to do that, automatically, on a schedule!<\/p>\n

                Requirements:<\/strong><\/p>\n

                  \n
                • PHP 5.3.3<\/li>\n
                • BackUpWordPress 3.1.4<\/li>\n
                • WordPress 4.4.2<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"

                  Have you heard of Dreamhost Dream Objects? If you have a Dreamhost account, it just makes sense to use their cloud storage service to backup your website. BackUpWordPress to Dreamhost dreamobjects now allows you to do that, automatically, on a schedule! Requirements: PHP 5.3.3 BackUpWordPress 3.1.4 WordPress 4.4.2<\/p>\n"},"author":35,"featured_image":27090,"edd_price":"24.00","featured_image_url":"https:\/\/hmn.imgix.net\/humanmade-production\/uploads\/sites\/5\/edd\/2016\/03\/dreamhost-bwp.png","_edd_sl_version":"2.1.7","_links":{"self":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/19"}],"collection":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/19\/revisions"}],"https:\/\/api.w.org\/featuredmedia":[{"embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media\/27090"}],"https:\/\/api.w.org\/attachment":[{"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/media?parent=19"}],"https:\/\/api.w.org\/term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/19\/download_category"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/bwp.hmn.md\/wp-json\/wp\/v2\/edd-downloads\/19\/download_tag"}]}}] ================================================ FILE: tests/ini/php.ini ================================================ [PHP] ; Recommended that short tags - - are not used. ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/short-open-tag short_open_tag = Off ; If you pass a value by reference at function call time... ; Default Value: On (Suppress warnings) ; Development Value: Off (Issue warnings) ; Production Value: Off (Issue warnings) ; http://php.net/allow-call-time-pass-reference allow_call_time_pass_reference = Off ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI max_execution_time = 300 ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 128M ; Common Values: ; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.) ; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.) ; Default Value: E_ALL & ~E_NOTICE ; Development Value: E_ALL | E_STRICT ; Production Value: E_ALL & ~E_DEPRECATED ; http://php.net/error-reporting error_reporting = E_ALL | E_STRICT ; Should PHP output errors. If so, where? ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = On ; Besides displaying errors, PHP can also log errors to locations such as a ; server-specific log, STDERR, or a location specified by the error_log ; directive found below. While errors should not be displayed on productions ; servers they should still be monitored and logging is a great way to do that. ; Default Value: Off ; Development Value: On ; Production Value: On ; http://php.net/log-errors log_errors = On ; Set maximum length of log_errors. In error_log information about the source is ; added. The default is 1024 and 0 allows to not apply any maximum length at all. ; http://php.net/log-errors-max-len log_errors_max_len = 1024 ; Do not log repeated messages. Repeated errors must occur in same file on same ; line unless ignore_repeated_source is set true. ; http://php.net/ignore-repeated-errors ignore_repeated_errors = Off ; Ignore source of message when ignoring repeated messages. When this setting ; is On you will not log errors with repeated messages from different files or ; source lines. ; http://php.net/ignore-repeated-source ignore_repeated_source = Off ; Store the last error/warning message in $php_errormsg (boolean). Setting this value ; to On can assist in debugging and is appropriate for development servers. It should ; however be disabled on production servers. ; Default Value: Off ; Development Value: On ; Production Value: Off ; http://php.net/track-errors track_errors = Off ; Display HTML links to docs related to the error? ; Default Value: On ; Development Value: On ; Production value: Off ; http://php.net/html-errors html_errors = 1 ; String to output before an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-prepend-string ; Example: ;error_prepend_string = "" ; String to output after an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-append-string ; Example: ;error_append_string = "" ; Log errors to specified file. PHP's default behavior is to leave this value ; empty. ; http://php.net/error-log ; Example: error_log = /var/log/php.log ; Maximum size of POST data that PHP will accept. ; http://php.net/post-max-size post_max_size = 50M ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 50M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 20 ; Default timeout for socket based streams (seconds) ; http://php.net/default-socket-timeout default_socket_timeout = 60 ;disable_functions = shell_exec,exec date.timezone = "Europe/Paris" extension=mcrypt.so open_basedir=/srv/www ================================================ FILE: tests/misc/test-path-in-open-basedir.php ================================================ basedir; } public function test_empty_basedir() { $this->basedir = ''; $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_not_in_basedir() { $this->basedir = 'foobarbaz'; $this->assertFalse( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_is_basedir() { $this->basedir = __DIR__; $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_in_basedir() { $this->basedir = dirname( __DIR__ ); $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_deep_in_basedir() { $this->basedir = dirname( dirname( dirname( __DIR__ ) ) ); $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_multiple_basedir() { $this->basedir = 'foobarbaz' . PATH_SEPARATOR . __DIR__; $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } public function test_preceding_basedir() { $this->basedir = 'foobarbaz' . dirname( __DIR__ ); $this->assertFalse( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) ); } } ================================================ FILE: tests/misc/testDetermineStartTime.php ================================================ time() * @see $this->time() * @static * @access public */ public static $now; public $plugin; public $schedule_intervals; public function setUp() { $this->plugin = Plugin::get_instance(); $this->schedule_intervals = cron_schedules(); } public function time() { return self::$now ? self::$now : time(); } /** * Reset custom time after test */ public function tearDown() { self::$now = null; } /** * Test that the default time args are respected for hourly schedule * */ public function testDefaultArgs() { foreach ( $this->schedule_intervals as $interval_name => $schedule_interval ) { // Test with current time $timestamp = determine_start_time( $interval_name ); // Should be the beginning of the current minute + 10 minutes $this->assertEquals( $this->time() + 600 - date( 's', $this->time() ), $timestamp, $interval_name, 30 ); // 12:00 self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); $timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T12:10:00+00:00' ), $timestamp, $interval_name, 30 ); // 23:59 self::$now = strtotime( '2014-03-05T23:59:00+00:00' ); $timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-06T00:09:00+00:00' ), $timestamp, '', 30 ); // The next day at 9 minutes past midnight // 23:59 on the Dec 31 self::$now = strtotime( '2013-12-31T23:59:00+00:00' ); $timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-01-01T00:09:00+00:00' ), $timestamp, '', 30 ); // 1st of Jan of the next year at 9 minutes past midnight self::$now = null; } } /** * Test that setting the hourly schedule to various future times works as expected * */ public function testFutureStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); foreach ( array( 'hourly', 'twicedaily', 'fortnightly' ) as $interval_name ) { // 13:01 $timestamp = determine_start_time( $interval_name, array( 'hours' => 12, 'minutes' => 1, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T12:01:00+00:00' ), $timestamp, '', 30 ); // 23:59 $timestamp = determine_start_time( $interval_name, array( 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T23:59:00+00:00' ), $timestamp, '', 30 ); } } /** * Test that setting the hourly schedule to various past times works as expected * */ public function testHourlyPastStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); // 12:00 $timestamp = determine_start_time( 'hourly', array( 'hours' => 12, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // An hour after current time // 11:59 $timestamp = determine_start_time( 'hourly', array( 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T12:59:00+00:00' ), $timestamp, '', 30 ); // 59 minutes past the next hour // 01:00 $timestamp = determine_start_time( 'hourly', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // An hour after the current time } /** * Test that setting the twice daily schedule to various past times works as expected * */ public function testTwiceDailyPastStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); // 01:00 $timestamp = determine_start_time( 'twicedaily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // 12 hours after the start time self::$now = strtotime( '2014-03-05T13:00:00+00:00' ); // 01:00 $timestamp = determine_start_time( 'twicedaily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-06T01:00:00+00:00' ), $timestamp, '', 30 ); // Tomorrow at 1am as we've already missed both schedules today // 12:59 self::$now = strtotime( '2014-03-05T12:59:00+00:00' ); $timestamp = determine_start_time( 'twicedaily', array( 'hours' => 12, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-06T00:59:00+00:00' ), $timestamp, '', 30 ); // Tomorrow at 59 minutes past midnight } /** * Test that setting the daily schedule to various past times works as expected * */ public function testDailyPastStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); // 01:00 $timestamp = determine_start_time( 'daily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-06T01:00:00+00:00' ), $timestamp, '', 30 ); // 24 hours after the start time // 12:59 self::$now = strtotime( '2014-03-05T12:59:00+00:00' ); $timestamp = determine_start_time( 'daily', array( 'hours' => 12, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-06T12:59:00+00:00' ), $timestamp, '', 30 ); } /** * Test that setting the daily schedule to various past times works as expected * */ public function testWeeklyPastStart() { self::$now = strtotime( '2014-03-05T12:59:00+00:00'); $timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'monday', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-10T01:00:00+00:00', $this->time() ), $timestamp, '', 30 ); // 11:59 $timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'wednesday', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-12T11:59:00+00:00', $this->time() ), $timestamp, '', 30 ); // Next week } /** * Test that setting the weekly schedule to various future times works as expected * */ public function testWeeklyFutureStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); // 23:59 on Friday $timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'friday', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-07T23:59:00+00:00' ), $timestamp, '', 30 ); } /** * Test that setting the fortnightly schedule to various past times works as expected * */ public function testFortnightlyPastStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); $timestamp = determine_start_time( 'fortnightly', array( 'day_of_week' => 'monday', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-10T01:00:00+00:00' ), $timestamp, '', 30 ); // 11:59 // @todo feels like this should actually be wednesday the 12th not the 19th $timestamp = determine_start_time( 'fortnightly', array( 'day_of_week' => 'wednesday', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-19T11:59:00+00:00' ), $timestamp, '', 30 ); // Next week } /** * Test that setting the monthly schedule to various past times works as expected * */ public function testMonthlyPastStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); $timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '1', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-04-01T01:00:00+00:00' ), $timestamp, '', 30 ); $timestamp = determine_start_time( 'monthly', array( 'day_of_week' => '5', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-04-05T11:59:00+00:00' ), $timestamp, '', 30 ); // Next week } /** * Test that setting the monthly schedule to various future times works as expected * */ public function testMonthlyFutureStart() { self::$now = strtotime( '2014-03-05T12:00:00+00:00' ); // 23:59 on the 25th $timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '25', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-03-25T23:59:00+00:00' ), $timestamp, '', 30 ); // 23:59 on the Dec 31 self::$now = strtotime( '2013-12-31T23:59:00+00:00' ); $timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '31', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) ); $this->assertEquals( strtotime( '2014-01-31T23:59:00+00:00' ), $timestamp, '', 30 ); } } ================================================ FILE: tests/misc/testUninstallActivateDeactivate.php ================================================ assertFalse( get_transient( $transient ) ); } foreach ( $options as $option ) { $this->assertFalse( get_option( $option ) ); } } public function test_deactivate() { // Just make sure the transients have been deleted, which means plugin wa deactivated. $transients = array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesize_running' ); foreach ( $transients as $transient ) { $this->assertFalse( get_transient( $transient ) ); } } public function test_activate() { $this->plugin = HM\BackUpWordPress\Plugin::get_instance(); $this->assertInstanceOf( 'HM\BackUpWordPress\Plugin', $this->plugin ); } } ================================================ FILE: tests/schedule/testScheduleTest.php ================================================ schedule = new Scheduled_Backup( 'unit-test' ); $this->recurrences = get_cron_schedules(); } /** * Teardown the schedule and cleanup * */ public function tearDown() { $this->schedule->cancel(); unset( $this->schedule ); unset( $this->recurrences ); } /** * Test that the default schedule is manual * */ public function testDefaultSchedule() { // The default recurrence should be manual $this->assertEquals( 'manually', $this->schedule->get_reoccurrence() ); // There shouldn't be a next occurence $this->assertEmpty( $this->schedule->get_next_occurrence() ); // There shoudldn't be a start time $this->assertEmpty( $this->schedule->get_schedule_start_time() ); // There shouldn't be an interval $this->assertEmpty( $this->schedule->get_interval() ); } /** * Test that setting a start time in the past causes a wp_error and default to now instead * */ public function set_past_start_time() { $this->assertTrue( is_wp_error( $this->schedule->set_schedule_start_time( time() - 7200 ) ) ); $this->assertEquals( $this->schedule->get_schedule_start_time(), time(), '', 30 ); } /** * Test that we can set the each schedule without a start time * */ public function testSetrecurrences() { foreach ( $this->recurrences as $reoccurrence => $settings ) { $this->schedule->set_reoccurrence( $reoccurrence ); $this->assertEquals( $reoccurrence, $this->schedule->get_reoccurrence() ); // The default start time should be now $this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 ); // Check that the start time is the same as the next occurance $this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 ); } } /** * Test that the cron even is re-setup if the cron option in the database is lost * */ public function testReSetupAfterDeleteCron() { $this->schedule->set_reoccurrence( 'hourly' ); $this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() ); // The default start time should be now $this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 ); // Check that the start time is the same as the next occurance $this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 ); $this->schedule->save(); // delete the cron_array delete_option( 'cron' ); $this->schedule->__construct( 'unit-test' ); // The default start time should be now $this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 ); // Check that the start time is the same as the next occurance $this->assertEquals( $this->schedule->get_next_occurrence(), time(), '', 30 ); } /** * Test that we can set the each schedule with a start time * */ public function testSetFutureSchedule() { foreach ( $this->recurrences as $reoccurrence => $settings ) { $this->schedule->set_reoccurrence( 'hourly' ); $this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() ); $this->assertFalse( is_wp_error( $this->schedule->set_schedule_start_time( time() + 7200 ) ) ); $this->assertEquals( $this->schedule->get_schedule_start_time(), time() + 7200, '', 30 ); $this->assertEquals( $this->schedule->get_next_occurrence(), time() + 7200, '', 30 ); } } /** * Test that we everything is properly removed when we unschedule * */ public function testUnschedule() { $this->schedule->set_reoccurrence( 'hourly' ); $this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() ); // The default start time should be now $this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 ); // Check that the start time is the same as the next occurance $this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 ); $this->schedule->unschedule(); // Check that the start time is the same as the next occurance $this->assertEmpty( $this->schedule->get_next_occurrence() ); } public function testAverageBackupDurationCorrectValuesMinutes() { $test_values = array( array( 'start' => time(), 'end' => time() + ( 10 * MINUTE_IN_SECONDS ), ), array( 'start' => time(), 'end' => time() + ( 5 * MINUTE_IN_SECONDS ), ), ); $this->add_mock_backup_data( $test_values ); // We round the average so 7.5 becomes 8 $this->assertEquals( '8 mins', $this->schedule->get_schedule_average_duration() ); } public function testAverageBackupDurationCorrectValuesHours() { $test_values = array( array( 'start' => time(), 'end' => time() + ( 10 * HOUR_IN_SECONDS ), ), array( 'start' => time(), 'end' => time() + ( 5 * HOUR_IN_SECONDS ), ), ); $this->add_mock_backup_data( $test_values ); // We round the average so 7.5 becomes 8 $this->assertEquals( '8 hours', $this->schedule->get_schedule_average_duration() ); } public function testAverageBackupDurationIncorrectValues() { // Add an initial fake run $this->add_mock_backup_data( array( 'start' => time(), 'end' => time() + ( 7 * MINUTE_IN_SECONDS ), ) ); $current_average = $this->schedule->get_schedule_average_duration(); $test_values = array( array( 'start' => time(), 'end' => time() - ( 10 * MINUTE_IN_SECONDS ), ), array( 'start' => time(), 'end' => time() - ( 5 * MINUTE_IN_SECONDS ), ), ); $this->add_mock_backup_data( $test_values ); // Value should not have changed $this->assertEquals( $current_average, $this->schedule->get_schedule_average_duration() ); } public function testAverageBackupDurationZeroValues() { // Add an initial fake run $this->add_mock_backup_data( array( 'start' => time(), 'end' => time() + ( 7 * MINUTE_IN_SECONDS ), ) ); $current_average = $this->schedule->get_schedule_average_duration(); $test_values = array( array( 'start' => 0, 'end' => 0, ), array( 'start' => 0, 'end' => 0, ), ); $this->add_mock_backup_data( $test_values ); // Value should not have changed $this->assertEquals( $current_average, $this->schedule->get_schedule_average_duration() ); } protected function add_mock_backup_data( $data = array() ) { foreach ( $data as $run ) { $this->schedule->update_average_schedule_run_time( $run['start'], $run['end'] ); } } } ================================================ FILE: tests/test-backup-path.php ================================================ is_apache = $is_apache; $this->path = Path::get_instance(); $this->custom_path = wp_normalize_path( WP_CONTENT_DIR . '/custom' ); // Cleanup before we kickoff in-case theirs cruft around from previous failures $this->tearDown(); } public function tearDown() { // Restore the is_apache global in-case it was messed with in the test global $is_apache; if ( isset( $this->is_apache ) ) { $is_apache = $this->is_apache; } if ( file_exists( $this->path->get_default_path() ) ) { chmod( $this->path->get_default_path(), 0755 ); } chmod( dirname( $this->path->get_default_path() ), 0755 ); // Remove all backup paths that exist foreach( $this->path->get_existing_paths() as $path ) { rmdirtree( $path ); } // Remove our custom path rmdirtree( $this->custom_path ); // Reset the path internally $this->path->reset_path(); } /** * By default the path should be the default path */ public function testDefaultPath() { $this->assertEquals( $this->path->get_default_path(), $this->path->get_path() ); $this->assertFileExists( $this->path->get_default_path() ); } /** * If the default path is unwritable then it should fallback to the fallback path */ public function testFallbackPath() { $this->assertEquals( $this->path->get_default_path(), Path::get_path() ); $path = $this->path->get_default_path(); chmod( $path, 0555 ); $this->path->calculate_path(); // wp_mkdir_p fixes permissions which invalidates this test if ( wp_is_writable( $path ) ) { $this->markTestSkipped( 'The default path was still writable' ); } $this->assertEquals( Path::get_path(), $this->path->get_fallback_path() ); $this->assertFileExists( $this->path->get_fallback_path() ); } /** * If there are 1 or more existing paths then the first one of those should be used */ public function testExistingPath() { $paths = $this->generate_additional_paths(); $this->assertEquals( $this->path->get_existing_path(), $paths[0] ); $this->path->set_path( '' ); $this->path->calculate_path(); $this->assertEquals( Path::get_path(), $this->path->get_existing_path() ); $this->assertFileExists( $this->path->get_existing_path() ); } /** * If there are several existing paths this should find all of them */ public function testExistingPaths() { $generated_paths = $this->generate_additional_paths(); $paths = $this->path->get_existing_paths(); sort( $generated_paths ); sort( $paths ); $this->assertEquals( $paths, $paths ); } /** * Setting a writable custom path should override everything */ public function testCustomPath() { $this->path->set_path( $this->custom_path ); $this->assertEquals( $this->path->get_custom_path(), $this->custom_path ); $this->assertEquals( Path::get_path(), wp_normalize_path( $this->custom_path ) ); $this->assertFileExists( $this->path->get_custom_path() ); } /** * Unwritable or otherwide broken custom paths should be ignored */ public function testUnwritableCustomPath() { $this->path->set_path( '/' . rand() ); if ( wp_is_writable( $this->custom_path ) ) { $this->markTestSkipped( 'The custom path was still writable' ); } $this->assertEquals( Path::get_path(), $this->path->get_default_path() ); $this->assertFileExists( $this->path->get_default_path() ); } /** * Test that backups are correctly merged from multiple existing backup paths */ public function testMergeExistingPath() { $paths = $this->generate_additional_paths(); // Create a dummy database backup in each path foreach ( $paths as $path ) { $backups[] = $backup = microtime() . '.zip'; file_put_contents( trailingslashit( $path ) . $backup, 'Just keep swimming, just keep swimming...' ); } $this->path->merge_existing_paths(); foreach ( $backups as $backup ) { $this->assertFileExists( Path::get_path() . '/' . $backup ); } } /** * Test that the backup path is correctly protected */ public function testIsPathProtected() { // Fake that we're on Apache so we can also test .htaccess global $is_apache; $is_apache = true; // Test the default backup path $this->assertFileExists( Path::get_path() . '/index.html' ); $this->assertFileExists( Path::get_path() . '/.htaccess' ); // Test a custom backup path $this->path->set_path( $this->custom_path ); $this->path->calculate_path(); $this->assertFileExists( Path::get_path() . '/index.html' ); $this->assertFileExists( Path::get_path() . '/.htaccess' ); } /** * Create multiple backup paths for testing purposes */ private function generate_additional_paths() { for ( $i = 0; $i < 3; $i++ ) { $paths[] = $path = wp_normalize_path( WP_CONTENT_DIR ) . '/backupwordpress-' . str_pad( $i, 10, $i ) . '-backups'; $this->path->set_path( $path ); } $uploads = wp_upload_dir(); for ( $i = 0; $i < 3; $i++ ) { $paths[] = $path = wp_normalize_path( $uploads['basedir'] ) . '/backupwordpress-' . str_pad( $i, 10, $i ) . '-backups'; $this->path->set_path( $path ); } return $paths; } public function test_cleanup() { // Should be cleaned up file_put_contents( PATH::get_path() . '/foo.zip.SmuhtP', 'bar' ); file_put_contents( PATH::get_path() . '/foo.sql', 'bar' ); file_put_contents( PATH::get_path() . '/zicBotXQ', 'baz' ); // Existing backups shouldn't be cleaned up file_put_contents( PATH::get_path() . '/backup.zip', 'baz' ); Path::get_instance()->cleanup(); $this->assertFileNotExists( PATH::get_path() . '/foo.zip.SmuhtP' ); $this->assertFileNotExists( PATH::get_path() . '/foo.sql' ); $this->assertFileNotExists( PATH::get_path() . '/zicBotXQ' ); $this->assertFileExists( PATH::get_path() . '/index.html' ); $this->assertFileExists( PATH::get_path() . '/backup.zip' ); } } ================================================ FILE: tests/test-backup-status.php ================================================ setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); $this->status = new Backup_Status( 'status1' ); } public function tearDown() { $this->cleanup_test_data(); } public function test_not_started() { $this->assertFalse( $this->status->is_started() ); } public function test_not_started_status_filepath() { $this->assertFileNotExists( $this->status->get_status_filepath() ); } public function test_not_started_filename() { $this->assertEmpty( $this->status->get_backup_filename() ); } public function test_not_started_status() { $this->assertEmpty( $this->status->get_status() ); } public function test_not_started_start_time() { $this->assertEquals( 0, $this->status->get_start_time() ); } public function test_not_started_set_status() { $this->status->set_status( 'running' ); $this->assertEmpty( $this->status->get_status() ); } public function test_started() { $this->status->start( 'pri', 'sm' ); $this->assertTrue( $this->status->is_started() ); } public function test_started_status_filepath() { $this->status->start( 'pri', 'sm' ); $this->assertFileExists( $this->status->get_status_filepath() ); } public function test_started_filename() { $this->status->start( 'pri', 'sm' ); $this->assertEquals( 'pri', $this->status->get_backup_filename() ); } public function test_started_status() { $this->status->start( 'pri', 'sm' ); $this->assertEquals( 'sm', $this->status->get_status() ); } public function test_started_start_time() { $this->status->start( 'pri', 'sm' ); $this->assertNotEquals( 0, $this->status->get_start_time() ); } public function test_started_set_status() { $this->status->start( 'pri', 'sm' ); $this->status->set_status( 'running' ); $this->assertEquals( 'running', $this->status->get_status() ); } public function test_finish() { $this->status->start( 'pri', 'sm' ); $this->status->finish(); $this->assertFileNotExists( $this->status->get_status_filepath() ); } public function test_multiple_status_dont_clash() { $status1 = $this->status; $status2 = new Backup_Status( 'status2' ); $status1->start( 'darth', 'vadar' ); $status2->start( 'master', 'yoda' ); $this->assertNotEquals( $status1->get_status_filepath(), $status2->get_status_filepath() ); $this->assertEquals( 'darth', $status1->get_backup_filename() ); $this->assertEquals( 'vadar', $status1->get_status() ); $this->assertEquals( 'master', $status2->get_backup_filename() ); $this->assertEquals( 'yoda', $status2->get_status() ); } } ================================================ FILE: tests/test-excludes.php ================================================ setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); $this->root = new \SplFileInfo( Path::get_root() ); $this->backup = new Mock_File_Backup_Engine; } public function tearDown() { $this->cleanup_test_data(); } public function testBackUpDirIsExcludedWhenBackUpDirIsInRoot() { $excludes = new Excludes; $this->assertContains( Path::get_root(), Path::get_path() ); $this->assertContains( str_replace( trailingslashit( Path::get_root() ), '', Path::get_path() ), $excludes->get_excludes() ); } public function testNoExcludesExceptDefaults() { $files = $this->get_and_prepare_files(); $this->assertContains( 'exclude', $files ); $this->assertContains( 'exclude/exclude.exclude', $files ); $this->assertContains( 'test-data.txt', $files ); $this->assertCount( 3, $files ); } public function testExcludeAbsoluteDirPath() { $this->backup->set_excludes( new Excludes( '/exclude/' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertCount( 1, $files ); } public function testExcludeAbsoluteRootDirPath() { $this->backup->set_excludes( new Excludes( $this->test_data . '/exclude/' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertCount( 1, $files ); } public function testExcludeDirPathFragment() { $this->backup->set_excludes( new Excludes( 'exclude/' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertCount( 1, $files ); } public function testExcludeAmbiguousAbsoluteDirPath() { $this->backup->set_excludes( new Excludes( 'exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertCount( 1, $files ); } public function testExcludeAbsoluteFilePath() { $this->backup->set_excludes( new Excludes( '/exclude/exclude.exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAmbiguousAbsoluteFilePath() { $this->backup->set_excludes( new Excludes( 'exclude/exclude.exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAbsolutePathWithWildcardFile() { $this->backup->set_excludes( new Excludes( '/exclude/*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAmbiguousAbsolutePathWithWildcardFile() { $this->backup->set_excludes( new Excludes( 'exclude/*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeWildcardFileName() { $this->backup->set_excludes( new Excludes( '*.exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAbsolutePathWithWildcardFileName() { $this->backup->set_excludes( new Excludes( '/exclude/*.exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAmbiguousAbsolutePathWithWildcardFileName() { $this->backup->set_excludes( new Excludes( 'exclude/*.exclude' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeWildcardFileExtension() { $this->backup->set_excludes( new Excludes( 'exclude.*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAbsolutePathWithWildcardFileExtension() { $this->backup->set_excludes( new Excludes( '/exclude/exclude.*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludeAmbiguousAbsolutePathWithWildcardFileExtension() { $this->backup->set_excludes( new Excludes( 'exclude/exclude.*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludePartialFilename() { $this->backup->set_excludes( new Excludes( 'test-*' ) ); $files = $this->get_and_prepare_files(); $this->assertNotContains( 'test-data.txt', $files ); $this->assertContains( 'exclude', $files ); $this->assertContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 2, $files ); } public function testExcludePartialDirectory() { $this->backup->set_excludes( new Excludes( 'excl*' ) ); $files = $this->get_and_prepare_files(); $this->assertContains( 'test-data.txt', $files ); $this->assertNotContains( 'exclude', $files ); $this->assertNotContains( 'exclude/exclude.exclude', $files ); $this->assertCount( 1, $files ); } public function testWildCard() { $this->backup->set_excludes( new Excludes( '*' ) ); $files = $this->get_and_prepare_files(); $this->assertEmpty( $files ); } /** * File is excluded directly (either in the root or any non-excluded sub-directory). * * Main test: Excludes->is_file_excluded( $file ) * Expected: true. */ public function test_excluded_file_directly_is_excluded() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Exclude file directly. $excluded_file = new Excludes( $file_path ); // Check the file is excluded - true. $this->assertContains( basename( $file->getPathname() ), $excluded_file->get_user_excludes() ); $this->assertTrue( $excluded_file->is_file_excluded( $file ) ); } /** * File is excluded as a result of being in an excluded directory. * * Main test: Excludes->is_file_excluded( $file ) * Expected: true. */ public function test_excluded_file_via_parent_directory_is_excluded() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Exclude the parent directory, so the file in it is excluded by "inheritance". $excluded_dir_name = basename( $file->getPath() ); // test-data directory, the parent dir of the file. $excluded_dir = new Excludes( $excluded_dir_name ); // Check the directory is excluded. File in that directory should be excluded too. $this->assertContains( $excluded_dir_name, $excluded_dir->get_user_excludes() ); $this->assertTrue( $excluded_dir->is_file_excluded( $file ) ); } /** * File is NOT excluded directly (either in the root or any non-excluded sub-directory). * * Main test: Excludes->is_file_excluded( $file ) * Expected: false. */ public function test_non_excluded_file_is_excluded() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Do NOT exclude the parent directory, so the file in it is also non excluded by "inheritance". $non_excluded_dir_name = basename( $file->getPath() ); // test-data directory, the parent dir of the file. $non_excluded_dir = new Excludes(); // Check the directory is NOT excluded. File in that directory should be NOT excluded too. $this->assertNotContains( $non_excluded_dir_name, $non_excluded_dir->get_user_excludes() ); $this->assertFalse( $non_excluded_dir->is_file_excluded( $file ) ); } private function get_and_prepare_files() { $finder = $this->backup->get_files(); $files = array(); foreach ( $finder as $file ) { $files[] = wp_normalize_path( $file->getRelativePathname() ); } return $files; } } ================================================ FILE: tests/test-extensions.php ================================================ extensions = Extensions::get_instance(); } public function tearDown() { } public function test_instance() { $instance = Extensions::get_instance(); $this->assertInstanceOf( 'HM\BackUpWordPress\Extensions', $instance ); } public function test_fetch_api_data() { add_filter( 'pre_http_request', $this->get_http_request_overide( 'https://bwp.hmn.md/wp-json/wp/v2/edd-downloads', file_get_contents( __DIR__ . '/data/response.json' ) ), 10, 3 ); $extensions_data = $this->extensions->get_edd_data(); $this->assertNotFalse( $extensions_data ); $this->assertInternalType( 'array', $extensions_data ); $this->assertGreaterThan( 0, count( $extensions_data ) ); } private function get_http_request_overide( $matched_url, $response_body ) { $func = null; return $func = function( $return, $request, $url ) use ( $matched_url, $response_body, &$func ) { remove_filter( 'pre_http_request', $func ); if ( $url !== $matched_url ) { return $return; } $response = array( 'headers' => array(), 'body' => $response_body, 'response' => array( 'code' => 200 ), ); return $response; }; } } ================================================ FILE: tests/test-get-files.php ================================================ backup = new Mock_File_Backup_Engine; $this->setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); } public function tearDown() { chmod( Path::get_root() . '/exclude', 0755 ); $this->cleanup_test_data(); } public function test_get_files() { $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 3 ); } public function test_get_files_includes_hidden_files() { file_put_contents( $this->test_data . '/.hidden', '' ); $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 4 ); } public function test_unreadable_files_ignored() { chmod( Path::get_root() . '/test-data.txt', 0220 ); if ( is_readable( Path::get_root() . '/test-data.txt' ) ) { $this->markTestSkipped( "File was readable." ); } $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 2 ); } public function test_unreadable_directory_ignored() { chmod( Path::get_root() . '/exclude', 0220 ); if ( is_readable( Path::get_root() . '/exclude' ) ) { $this->markTestSkipped( "directory was readable." ); } $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 1 ); } public function test_vcs_ignored() { mkdir( $this->test_data . '/.git' ); $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 3 ); } public function test_default_excludes_ignored() { $excludes = new Excludes; $default_excludes = $excludes->get_default_excludes(); foreach ( $default_excludes as $default_exclude ) { $default_exclude = str_replace( '*', rand(), $default_exclude ); mkdir( trailingslashit( $this->test_data ) . $default_exclude ); } $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 3 ); } /** * The .gitignore file should be ignored because .git is a default exclude */ public function test_excluded_git_in_filename_is_ignored() { file_put_contents( $this->test_data . '/.gitignore', '' ); $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 3 ); } /** * These folders shouln't be excluded just because `updraft` is an excluded directory */ public function test_excluded_dir_in_name_isnt_ignored() { $this->markTestSkipped( 'This fails because our default excludes are too generic' ); mkdir( $this->test_data . '/updraft-plus' ); file_put_contents( $this->test_data . '/updraft-plus/file.txt', 'The cake is a lie.' ); mkdir( $this->test_data . '/plus-updraft' ); file_put_contents( $this->test_data . '/plus-updraft/file.txt', 'The cake is a lie.' ); $files = $this->backup->get_files(); $this->assertEquals( count( $files ), 7 ); } } ================================================ FILE: tests/test-is-same-size-format.php ================================================ assertTrue( is_same_size_format( 22000000, 22000000 ) ); } public function test_not_both_same_size() { $this->assertFalse( is_same_size_format( 22000, 22000000 ) ); } public function test_both_strings() { $this->assertFalse( is_same_size_format( '22', '22' ) ); } } ================================================ FILE: tests/test-notices.php ================================================ notices = Notices::get_instance(); } public function tearDown() { $this->notices->clear_all_notices(); $this->reset_notices(); } public function test_no_notices_no_context() { $this->assertEquals( array(), $this->notices->get_notices() ); } public function test_no_notices_context() { $this->assertEquals( array(), $this->notices->get_notices( 'foo' ) ); } public function test_set_single_notice_with_context() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); } public function test_get_notices_with_wrong_context() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->assertEquals( array(), $this->notices->get_notices( 'bar' ) ); } public function test_empty_context() { $this->notices->set_notices( '', array( 'bar' ), false ); $this->assertEquals( array(), $this->notices->get_notices() ); } public function test_empty_message() { $this->notices->set_notices( 'foo', array( '' ), false ); $this->assertEquals( array(), $this->notices->get_notices() ); } public function test_set_multiple_notice_with_context() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->notices->set_notices( 'fizz', array( 'buzz' ), false ); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); $this->assertEquals( array( 'buzz' ), $this->notices->get_notices( 'fizz' ) ); $this->assertEquals( array( 'foo' => array( 'bar' ), 'fizz' => array( 'buzz' ) ), $this->notices->get_notices() ); } public function test_set_multiple_notices_in_same_context() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->notices->set_notices( 'foo', array( 'baz' ), false ); $this->assertEquals( array( 'bar', 'baz' ), $this->notices->get_notices( 'foo' ) ); } public function test_set_multiple_persistant_notices_in_same_context() { $this->notices->set_notices( 'foo', array( 'bar' ), true ); $this->notices->set_notices( 'foo', array( 'baz' ), true ); $this->reset_notices(); $this->assertEquals( array( 'bar', 'baz' ), $this->notices->get_notices( 'foo' ) ); } public function test_set_duplicate_notice() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); } public function test_set_duplicate_notices_different_contexts() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->notices->set_notices( 'baz', array( 'bar' ), false ); $this->assertEquals( array( 'foo' => array( 'bar' ), 'baz' => array( 'bar' ) ), $this->notices->get_notices() ); } public function test_clear_notices() { $this->notices->set_notices( 'foo', array( 'bar' ), false ); $this->notices->clear_all_notices(); $this->assertEquals( array(), $this->notices->get_notices( 'bar' ) ); $this->assertEquals( array(), $this->notices->get_notices() ); } public function test_persistant_notice() { $this->notices->set_notices( 'foo', array( 'bar' ), true ); $this->reset_notices(); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); } public function test_set_persistant_single_notice_with_context() { $this->notices->set_notices( 'foo', array( 'bar' ), true ); $this->reset_notices(); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); } public function test_get_persistant_notices_with_wrong_context() { $this->notices->set_notices( 'foo', array( 'bar' ), true ); $this->reset_notices(); $this->assertEquals( array(), $this->notices->get_notices( 'bar' ) ); } public function test_set_persistant_multiple_notice_with_context() { $this->notices->set_notices( 'foo', array( 'bar' ), true ); $this->notices->set_notices( 'fizz', array( 'buzz' ), true ); $this->reset_notices(); $this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) ); $this->assertEquals( array( 'buzz' ), $this->notices->get_notices( 'fizz' ) ); $this->assertEquals( array( 'foo' => array( 'bar' ), 'fizz' => array( 'buzz' ) ), $this->notices->get_notices() ); } private function reset_notices() { $reflection = new \ReflectionClass( Notices::get_instance() ); $instance = $reflection->getProperty( 'instance' ); $instance->setAccessible( true ); $instance->setValue( null, null ); $instance->setAccessible( false ); $this->notices = Notices::get_instance(); } } ================================================ FILE: tests/test-site-size.php ================================================ size = new Site_Size; $this->setup_test_data(); Path::get_instance()->set_path( $this->test_data . '/tmp' ); Path::get_instance()->set_root( $this->test_data ); $this->root = new \SplFileInfo( Path::get_root() ); } public function tearDown() { if ( file_exists( Path::get_path() . '/.files' ) ) { unlink( Path::get_path() . '/.files' ); } $this->cleanup_test_data(); delete_transient( 'hmbkp_directory_filesizes_running' ); } public function test_rebuild_directory_filesizes() { $this->assertNull( $this->size->filesize( $this->root ) ); $this->size->recursive_filesize_scanner(); $this->assertNotEmpty( $this->size->filesize( $this->root ), '', 40 ); } public function test_filesize_excludes() { $this->size = new Site_Size( 'file', new Excludes( 'exclude' ) ); $this->size->recursive_filesize_scanner(); $this->assertNotEmpty( $this->size->get_site_size() ); } public function test_lock() { $this->assertFalse( $this->size->is_site_size_being_calculated() ); $this->size->rebuild_directory_filesizes(); $this->assertTrue( $this->size->is_site_size_being_calculated() ); $this->assertFalse( $this->size->rebuild_directory_filesizes() ); } public function test_is_site_cached() { $this->assertFalse( $this->size->is_site_size_cached() ); $this->size->rebuild_directory_filesizes(); $this->assertTrue( $this->size->is_site_size_being_calculated() ); } public function test_old_cache_is_cleared() { $this->assertFalse( $this->size->is_site_size_cached() ); $this->size = new Site_Size( 'file' ); $this->size->recursive_filesize_scanner(); $this->assertTrue( $this->size->is_site_size_cached() ); // Set the filemtime to over a week ago touch( PATH::get_path() . '/.files', time() - WEEK_IN_SECONDS - 10 ); clearstatcache(); $this->assertFalse( $this->size->is_site_size_cached() ); } public function test_site_size_file() { $this->size = new Site_Size( 'file' ); $this->size->recursive_filesize_scanner(); $this->assertNotEmpty( $this->size->get_site_size() ); } public function test_site_size_formatted() { $this->size = new Site_Size( 'file' ); $this->size->recursive_filesize_scanner(); $this->assertNotEmpty( $this->size->get_formatted_site_size() ); } public function test_site_size_database() { $size_database = new Site_Size( 'database' ); $this->assertNotEmpty( $size_database->get_site_size() ); } public function test_site_size_without_filescanner_complete_equals_database() { $size_complete = $this->size; $size_database = new Site_Size( 'database' ); $this->assertEquals( $size_complete->get_site_size(), $size_database->get_site_size() ); } public function test_site_size_with_filescanner_complete_equals_database_plus_files() { $this->size->recursive_filesize_scanner(); $size_complete = $this->size; $size_database = new Site_Size( 'database' ); $size_file = new Site_Size( 'file' ); $this->assertNotEmpty( $size_database->get_site_size() ); $this->assertNotEmpty( $size_file->get_site_size() ); $this->assertEquals( $size_complete->get_site_size(), $size_database->get_site_size() + $size_file->get_site_size() ); } /** * File is excluded directly (either in the root or any non-excluded sub-directory). * * Main test: Site_Size->filesize( $file ) * Expected: file size should be 0. */ public function test_file_size_excluded_directly() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Exclude file directly - file size should be 0. $excluded_file_site_size = new Site_Size( 'file', new Excludes( $file_path ) ); $this->assertSame( $excluded_file_site_size->filesize( $file ), 0 ); } /** * File is excluded as a result of being in an excluded directory. * * Main test: Site_Size->filesize( $file ) * Expected: file size should be 0. */ public function test_file_size_excluded_via_parent_directory() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Exclude the parent directory, so the file in it is excluded by "inheritance" - file size should be 0. $excluded_dir_name = basename( $file->getPath() ); // test-data directory, the parent dir of the file. $excluded_dir = new Excludes( $excluded_dir_name ); $excluded_dir_site_size = new Site_Size( 'file', $excluded_dir ); // Check the directory is excluded. File size in that directory should return 0. $this->assertContains( $excluded_dir_name, $excluded_dir->get_user_excludes() ); $this->assertSame( $excluded_dir_site_size->filesize( $file ), 0 ); } /** * File is NOT excluded directly (either in the root or any non-excluded sub-directory). * * Main test: Site_Size->filesize( $file ) * Expected: file size should be what it is. */ public function test_file_size_not_excluded_directly() { $file_path = $this->test_data . '/test-data.txt'; $file = new \SplFileInfo( $file_path ); // Check the file is created and its size is NOT 0. $this->assertContains( $this->root->getPath(), $file->getPath() ); $this->assertNotSame( $file->getSize(), 0 ); // Check file size via BWP function. It should NOT be 0, should be the same size as via getSize(). $site_size = new Site_Size( 'file' ); $this->assertNotSame( $site_size->filesize( $file ), 0 ); $this->assertSame( $site_size->filesize( $file ), $file->getSize() ); } } ================================================ FILE: uninstall.php ================================================ get_existing_path(); // Delete the file manifest if it exists if ( file_exists( $path . '/.files' ) ) { unlink( $path . '/.files' ); } // Get all schedule options with a SELECT query and delete them. $schedules = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s", 'hmbkp_schedule_%' ) ); array_map( 'delete_option', $schedules ); // Remove all the options array_map( 'delete_option', array( 'hmbkp_enable_support', 'hmbkp_plugin_version', 'hmbkp_path', 'hmbkp_default_path', 'hmbkp_upsell', 'hmbkp_notices' ) ); // Delete all transients array_map( 'delete_transient', array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesize_running', 'timeout_hmbkp_wp_cron_test_beacon', 'hmbkp_wp_cron_test_beacon' ) ); ================================================ FILE: whitelist-html/README.md ================================================ # Whitelist HTML Introduces an `esc_*()`-like function for when you need to allow *some* HTML. ## Rationale ### Background Best practices when working with any sort of data is to escape your output, and do it as late as possible. Values can't usually know about where they're going to be used, so you need to escape based on whatever context you're outputting into. These are things like `esc_attr()` for HTML attribute values, `esc_html()` for text in HTML, and so on. Even if values could know about their output context, it's still possible for users to craft malicious output if you're not escaping properly. For this reason, you need to do sanitization on input (to ensure your value is correct), as well as escaping on output (to ensure the value is output into the context correctly). Right now across every WordPress site, there's a glaring hole in escaping, and hence in security. When translating strings in WordPress, the most common functions to use are `__()` (translate and return) or `_e()` (translate and output). Where possible, these need to be escaped too, to ensure that translations don't accidentally break your output. For this reason, `esc_html_e()`, `esc_attr_e()`, etc are offered as convenience functions. However, this falls down when you need to have HTML in the translation. Translation best practices say to include as much information as possible for translators when you translate a string. This means including HTML tags in the string so translators can understand how the sentence is formed. It's possible to do "clever" hacks to get around this with placeholders, for example: ```php $text = sprintf( esc_html__( 'This is some text %1$swith a link%2$s'), '', '' ); ``` Note though that this is much harder for translators to understand, since they can't intuitively tell what's going on without checking the code. Even with translator comments, it's still harder to understand. There's also no guarantee that this is secure. You could swap the placeholders, or leave out pieces. Best practice states that we should instead have the following: ```php $text = sprintf( esc_html__( 'This is some text with a link'), 'http://example.com/' ); ``` Right now, the policy is essentially to treat translated strings with HTML as trusted. Not only does this push the burden off to translation validators in GlotPress, but it means you're no longer in control of your output. This is an attack vector waiting to be exploited. ### How do we solve this? WordPress contains functions specifically designed to help with this problem. After all, people can submit comments or posts with HTML in them, but WP can handle this fine. WordPress handles this through a library called kses, which sanitizes HTML down to a small, whitelisted subset of HTML. Posts can have more HTML tags than comments can, since they're usually semi-trusted users. kses is great, but is not typically used outside of large HTML blocks like post or comment content. The reason for this is often stated as performance. It's well-known that kses is pretty slow, since it has to essentially disassemble the HTML, then reconstruct it with the allowed tags. However, Zack Tollman wrote a [fantastic post][tollmanz-kses] that calls into question this accepted knowledge of kses performance. Zack's findings show that while kses is worse with performance on longer pieces of content (like post content), it's actually closer to being on-par with other escaping for short strings. This is even more evident when reducing the whitelist of elements down from the default to just the elements you need. [tollmanz-kses]: https://www.tollmanz.com/wp-kses-performance/ ### `whitelist_html` This library provides a nice, easy, performant way to perform sanitization on translated strings. Rather than requiring you to work with the internals of kses, it's much closer to functions like `esc_html`. Security is only useful if it's also usable. For the most part, `whitelist_html` can be used in exactly the same way developers are used to using other escaping functions. A quick example to demonstrate how easy it is: ```html

                  WP_Error.' ) ?>

                  WP_Error.' ), 'code' ) ?>

                  ``` Even if a malicious translator changed this to include a link to a spam site (or worse), this would be caught and stripped by `whitelist_html`. Taking our original example from above, we can modify it to only allow `a` tags: ```php $text = whitelist_html( sprintf( __( 'This is some text with a link'), 'http://example.com/' ), 'a' ); ``` It's that easy. You can do this with multiple elements as well, using a comma-separated string or list of elements: ```php $text = whitelist_html( sprintf( __( 'This is some text with a link'), 'http://example.com/' ), 'a, code' // or array( 'a', 'code' ) ); ``` If you need custom attributes, you can use kses-style attribute specifiers. These can be mixed too: ```php $text = whitelist_html( sprintf( __( 'This is some text with a link'), 'http://example.com/' ), array( 'a', 'span' => array( 'class' => true, ), ) ); ``` ### Performance Test In a quick test, the string `'hello with a malicious extra link!b'` was run through both `whitelist_html` (with only `a`) and `esc_html` with 10,000 iterations. While the two functions don't perform the same task, they're both escaping functions, so it's useful to compare performance to understand whether this approach can be used in production code. In an unscientific trial, this gave figures of 0.96s for `whitelist_html` and 1.07s for `esc_html` for 10,000 trials each. This indicates that `whitelist_html` is at least on the order of other escaping functions. ## Using this Library Two steps to using this library: 1. Add this library in as a git submodule. 2. Load `whitelist-html.php` before you need to use it. We recommend in `mu-plugins`, but you can also load it in via `wp-config.php` if you want it earlier. Done. Start using the function. ================================================ FILE: whitelist-html/whitelist-html.php ================================================ array( 'attr' => true, 'otherattr' => true ) ]` which * specifies tags and their attributes. * * The concise form, useful for inline usage on output, is in the form of * `[ 'element', 'otherelement' ]` - This concise form takes the attribute list * from WP core's attribute whitelist for a good-enough list for most usages. * This can also be passed as a comma separated string. * * (You can also mix these forms, so something like * `[ 'a', 'code', 'x-panel' => array( 'src' => true ) ] )` is perfectly valid.) * * For example: * * whitelist_html( __( 'Hello World!' ), 'a' ); * * This example would strip any tag except `a`, but would allow the default * attributes on it (`href` and `title`). * * The default attributes and tags are based on {@see wp_kses_allowed_html} with * the blank (default) "context". These are the tags in {@see $allowedtags}. To * get all allowed post tags, pass `'post'` as the `$context` parameter, or pass * the tags you need in the `$allowedtags` array. If a specified tag is not in * the list, no attributes will be allowed. * * @link https://www.tollmanz.com/wp-kses-performance/ * * @param string $text Content to escape * @param array $allowedtags Allowed tags, see description. * @param string $context kses context to use, {@see wp_kses_allowed_html}. * @return string Escaped string for output into HTML context. */ function whitelist_html( $text, $allowedtags = array(), $context = '' ) { $actually_allowed = array(); $default_list = wp_kses_allowed_html( $context ); // Split comma-separated string if ( is_string( $allowedtags ) ) { $allowedtags = array_map( 'trim', explode( ',', $allowedtags ) ); } foreach ( $allowedtags as $key => $tag ) { if ( is_array( $tag ) && is_string( $key ) ) { // kses-formatted of `'element' => [ 'attr' => true ] // `$tag` is actually the attrs, and `$key` is the tag name $actually_allowed[ $key ] = $tag; continue; } if ( ! is_string( $tag ) ) { // Not concise form, what even is this? _doing_it_wrong( 'whitelist_html', '$allowedtags must consist of strings or kses-style arrays' ); continue; } // Grab default attributes for the tag $attrs = array(); if ( isset( $default_list[ $tag ] ) ) { $attrs = $default_list[ $tag ]; } // Add to allowed list $actually_allowed[ $tag ] = $attrs; } // Do the sanitization dance $sanitized = wp_kses( $text, $actually_allowed ); /** * Filter a string to be output into HTML, allowing some tags * * @param string $sanitized The text after it has been escaped. * @param string $text The text before it has been escaped. * @param string $allowedtags Tags requested to whitelist. * @param string */ return apply_filters( 'whitelist_html', $sanitized, $text, $allowedtags, $context ); } /** * Escapes text for HTML output, allowing certain tags, then outputs. * * @see whitelist_html * * @param string $text Content to escape * @param array $allowedtags Allowed tags, {@see whitelist_html}. * @param string $context kses context to use, {@see wp_kses_allowed_html}. * @return string Escaped string for output into HTML context. */ function print_whitelist_html( $text, $allowedtags = array(), $context = '' ) { echo whitelist_html( $text, $allowedtags, $context ); }