[
  {
    "path": ".bowerrc",
    "content": "{\n\t\"directory\": \"assets\",\n\t\"scripts\": {\n\t\t\"postinstall\": \"rm -rf js/jquery\"\n\t}\n}"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "### Description of issue\nReplace this text with a short description\n\n### Steps to recreate issue\n1. Replace this\n2. text with \n3. the steps\n4. to recreate\n\n### Current behavior\nExplain what it's doing and why it's wrong\n\n### Expected behavior\nExplain what it should be doing after it's fixed.\n\n### Additional Useful Information\n1. Results of Basic Troubleshooting Checklist?\n"
  },
  {
    "path": ".gitignore",
    "content": ".svn\nnode_modules\nnpm-debug.log\nassets/jquery\nreadme/faq.txt\nbuild\nHistory.md\nvendor\n.idea\ncomposer.lock\n.DS_Store\nreleases\npackage-lock.json\ntmp"
  },
  {
    "path": ".jshintrc",
    "content": "{\n    \"boss\": true,\n    \"curly\": true,\n    \"eqeqeq\": true,\n    \"eqnull\": true,\n    \"es3\": true,\n    \"expr\": true,\n    \"immed\": true,\n    \"noarg\": true,\n    \"onevar\": true,\n    \"quotmark\": \"single\",\n    \"trailing\": true,\n    \"undef\": true,\n    \"unused\": true,\n\n    \"browser\": true,\n    \"devel\": true,\n\n    \"globals\": {\n        \"_\": false,\n        \"Backbone\": false,\n        \"jQuery\": false,\n        \"wp\": false,\n        \"hmbkp\": false,\n        \"ajaxurl\": false\n    }\n}"
  },
  {
    "path": ".scrutinizer.yml",
    "content": "filter:\n    excluded_paths: [ 'vendor/*', 'bin/*', 'backdrop/*', 'node_modules/*', 'readme/*', 'tests/*', 'languages/*', 'grunt/*', 'Gruntfile.js', '*.min.*']\n\nbefore_commands:\n    - \"composer self-update\"\n    - \"composer install --prefer-source --dev\"\n\ntools:\n    php_code_sniffer:\n        config: { standard: WordPress }\n\n    php_changetracking:\n        enabled: true\n        bug_patterns:\n            - '\\bfix(?:es|ed)?\\b'\n        feature_patterns:\n            - '\\badd(?:s|ed)?\\b'\n            - '\\bimplement(?:s|ed)?\\b'\n\n    js_hint: true\n\n    php_mess_detector:\n        config:\n            naming_rules: { boolean_method_name: true }\n            controversial_rules: { superglobals: false }\n\n    sensiolabs_security_checker: true\n\n    php_loc: true\n\n    php_hhvm:\n        enabled: true\n        command: hhvm\n        extensions:\n            - php\n\n    php_analyzer:\n        enabled: true\n        extensions:\n              - php\n        config:\n            parameter_reference_check: { enabled: false }\n            checkstyle: { enabled: false }\n            unreachable_code: { enabled: true }\n            check_access_control: { enabled: false }\n            typo_checks: { enabled: true }\n            check_variables: { enabled: true }\n            check_calls: { enabled: true, too_many_arguments: true, missing_argument: true, argument_type_checks: lenient }\n            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 }\n            dead_assignments: { enabled: true }\n            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 }\n            loops_must_use_braces: { enabled: false }\n            check_usage_context: { enabled: true, foreach: { value_as_reference: true, traversable: true } }\n            simplify_boolean_return: { enabled: true }\n            phpunit_checks: { enabled: false }\n            reflection_checks: { enabled: false }\n            precedence_checks: { enabled: true, assignment_in_condition: true, comparison_of_bit_result: true }\n            basic_semantic_checks: { enabled: true }\n            unused_code: { enabled: true }\n            deprecation_checks: { enabled: true }\n            useless_function_calls: { enabled: true }\n            metrics_lack_of_cohesion_methods: { enabled: true }\n            metrics_coupling: { enabled: true, stable_code: { namespace_prefixes: {  }, classes: {  } } }\n            doctrine_parameter_binding: { enabled: false }\n            doctrine_entity_manager_injection: { enabled: false }\n            symfony_request_injection: { enabled: false }\n            doc_comment_fixes: { enabled: false }\n            reflection_fixes: { enabled: false }\n            use_statement_fixes: { enabled: true, remove_unused: true, preserve_multiple: false, preserve_blanklines: false, order_alphabetically: false }\n\n    # PHP Similarity Analyzer and Copy/paste Detector cannot be used at\n    # the same time right now. Make sure to either remove, or disable one.\n    php_cpd: false\n\n    php_pdepend: true\n\n    php_sim:\n            enabled: true\n            min_mass: 50\n\nchecks:\n    php:\n        code_rating: true\n        duplication: true\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: php\nsudo: false\nphp:\n  - 5.3\n  - 5.4\n  - 5.5\n  - 5.6\n  - hhvm\n  - 7.0\n\nenv:\n  # trunk:\n  - WP_VERSION=master WP_MULTISITE=0\n  - WP_VERSION=master WP_MULTISITE=1\n  # latest stable:\n  - WP_VERSION=4.3.1 WP_MULTISITE=0\n  # previous stable:\n  - WP_VERSION=4.2.5 WP_MULTISITE=0\n  # earliest supported:\n  - WP_VERSION=3.9.9 WP_MULTISITE=0\n\nmatrix:\n  allow_failures:\n    - php: hhvm\n    - php: 7.0\n  fast_finish: true\n  exclude:\n  # Only test latest version of WP with HHVM and PHP 7\n    - php: hhvm\n      env: WP_VERSION=3.9.9 WP_MULTISITE=0\n    - php: hhvm\n      env: WP_VERSION=4.2.5 WP_MULTISITE=0\n    - php: hhvm\n      env: WP_VERSION=4.3.1 WP_MULTISITE=0\n    - php: 7.0\n      env: WP_VERSION=3.9.9 WP_MULTISITE=0\n    - php: 7.0\n      env: WP_VERSION=4.2.5 WP_MULTISITE=0\n    - php: 7.0\n      env: WP_VERSION=4.3.1 WP_MULTISITE=0\n\ncache:\n  directories:\n  - vendor\n  - $HOME/.composer/cache\n\nbefore_install:\n  # set up WP install\n  - export WP_DEVELOP_DIR=/tmp/wordpress/\n  - mkdir -p $WP_DEVELOP_DIR\n  - git clone --depth=1 --branch $WP_VERSION git://develop.git.wordpress.org/ $WP_DEVELOP_DIR\n  # set up tests config\n  - cd $WP_DEVELOP_DIR\n  - cp wp-tests-config-sample.php wp-tests-config.php\n  - sed -i \"s/youremptytestdbnamehere/wordpress_test/\" wp-tests-config.php\n  - sed -i \"s/yourusernamehere/root/\" wp-tests-config.php\n  - sed -i \"s/yourpasswordhere//\" wp-tests-config.php\n  # set up database\n  - mysql -e 'CREATE DATABASE wordpress_test;' -uroot\n  - cd $TRAVIS_BUILD_DIR\n\ninstall:\n  - git config --global user.email \"paul@hmn.md\"\n  - git config --global user.name \"Paul de Wouters\"\n\nnotifications:\n  email: false\n  slack:\n    secure: ZyXhKGpR/VtggG3vcCaZ+50HBn4STi2fOvMKrmZaeS44s+j6lhkYt7qT1UeU1o2Vox2WCrdqfZqT370f4OV3izAgf7Ln+vIYxZvCywL2Cyt4YbHVPX0pMwuDuAW6a1zG5oP87CFZh9YYCHQ6HfX9ATKtnqiuMFx/SjOcD1Yb4Lk=\n\nbefore_script:\n  - cd $TRAVIS_BUILD_DIR\n  - composer self-update\n  - composer install --no-interaction\n\nscript:\n  - cd $TRAVIS_BUILD_DIR\n  - |\n    if [[ \"$TRAVIS_PHP_VERSION\" == \"5.6\" && \"$WP_VERSION\" == \"master\" && \"$WP_MULTISITE\" == \"0\" ]] ; then\n        phpunit --coverage-clover=coverage.xml\n    else\n        phpunit\n    fi\n\ngit:\n  depth: 1\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to BackUpWordPress\n\nThanks 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.\n\nThere are four main ways you can contribute currently:\n\n- Developing\n- Testing\n- Translating\n- Security\n\n## Developing\n\nDevelop your changes in a feature branch and send a pull request to BackUpWordPress' `master` branch for review.\n\nAssign the Pull Request to the Lead Developer: Paul de Wouters, [@pdewouters](https://github.com/pdewouters).\n\nYou can use Grunt to generate a built copy of the plugin to test with:\n\n```\nnpm install\ngrunt copy:build\n```\n\nWe try to follow the [WordPress Core Coding Standards](http://codex.wordpress.org/WordPress_Coding_Standards).\n\n## Testing\n\nWe'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.\n\nWe rely on a few different kinds of tests:\n\n- 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).\n- Integration tests are something we need, we don't currently have them.\n- 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.\n\n## Translating\n\nWe want BackUpWordPress to be available in as many languages as possible.\n\nAll 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.\n\n## Security\n\nWe 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.\n\nTo 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.\n\n(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.)\n\nThank you for contributing!\n"
  },
  {
    "path": "Gruntfile.js",
    "content": "module.exports = function( grunt ) {\n\trequire( 'load-grunt-config' )( grunt );\n};\n"
  },
  {
    "path": "admin/actions.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Delete the backup and then redirect back to the backups page\n */\nfunction request_delete_backup() {\n\n\tcheck_admin_referer( 'hmbkp_delete_backup', 'hmbkp_delete_backup_nonce' );\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) );\n\n\t$deleted = $schedule->delete_backup( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ) );\n\n\tif ( is_wp_error( $deleted ) ) {\n\t\twp_die( $deleted->get_error_message() );\n\t}\n\n\twp_safe_redirect( get_settings_url(), 303 );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_request_delete_backup', 'HM\\BackUpWordPress\\request_delete_backup' );\n\n/**\n * Enable support and then redirect back to the backups page\n */\nfunction request_enable_support() {\n\n\tcheck_admin_referer( 'hmbkp_enable_support', 'hmbkp_enable_support_nonce' );\n\n\tupdate_option( 'hmbkp_enable_support', true );\n\n\twp_safe_redirect( get_settings_url(), 303 );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_request_enable_support', 'HM\\BackUpWordPress\\request_enable_support' );\n\n/**\n * Delete a schedule and all it's backups and then redirect back to the backups page\n */\nfunction request_delete_schedule() {\n\n\tcheck_admin_referer( 'hmbkp_delete_schedule', 'hmbkp_delete_schedule_nonce' );\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) );\n\t$schedule->cancel( true );\n\n\twp_safe_redirect( get_settings_url(), 303 );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_request_delete_schedule', 'HM\\BackUpWordPress\\request_delete_schedule' );\n\nadd_action( 'admin_post_hmbkp_request_credentials', function() {\n\n\tglobal $wp_filesystem;\n\n\tob_start();\n\t$creds = request_filesystem_credentials( '' );\n\tob_end_clean();\n\n\t// Default to showing an error if we're not able to connect.\n\t$url = add_query_arg( 'connection_error', 1, get_settings_url() );\n\n\t/**\n\t * If we have valid filesystem credentials then let's attempt\n\t * to use them to create the backups directory. If we can't create it in\n\t * WP_CONTENT_DIR then we fallback to trying in uploads.\n\t */\n\tif ( WP_Filesystem( $creds ) ) {\n\n\t\t// If we're able to connect then no need to redirect with an error.\n\t\t$url = get_settings_url();\n\n\t\t// If the backup path exists then let's just try to chmod it to the correct permissions.\n\t\tif (\n\t\t\tis_dir( Path::get_instance()->get_default_path() ) &&\n\t\t\t! $wp_filesystem->chmod( Path::get_instance()->get_default_path(), FS_CHMOD_DIR )\n\t\t) {\n\t\t\t$url = add_query_arg( 'creation_error', 1, get_settings_url() );\n\t\t} else {\n\n\t\t\t// If the path doesn't exist then try to correct the permission for the parent directory and create it.\n\t\t\t$wp_filesystem->chmod( dirname( Path::get_instance()->get_default_path() ), FS_CHMOD_DIR );\n\n\t\t\tif (\n\t\t\t\t! $wp_filesystem->mkdir( Path::get_instance()->get_default_path(), FS_CHMOD_DIR ) &&\n\t\t\t\t! $wp_filesystem->mkdir( Path::get_instance()->get_fallback_path(), FS_CHMOD_DIR )\n\t\t\t) {\n\t\t\t\t$url = add_query_arg( 'creation_error', 1, get_settings_url() );\n\t\t\t}\n\t\t}\n\t}\n\n\twp_safe_redirect( $url , 303 );\n\tdie;\n\n} );\n\n/**\n * Perform a manual backup\n *\n * Handles ajax requests as well as standard GET requests\n */\nfunction request_do_backup() {\n\n\tif ( empty( $_REQUEST['hmbkp_schedule_id'] ) ) {\n\t\tdie;\n\t}\n\n\tif ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {\n\t\tcheck_ajax_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' );\n\t} else {\n\t\tcheck_admin_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' );\n\t}\n\n\tPath::get_instance()->cleanup();\n\n\t// Fixes an issue on servers which only allow a single session per client\n\tsession_write_close();\n\n\t$schedule_id = sanitize_text_field( urldecode( $_REQUEST['hmbkp_schedule_id'] ) );\n\t$task = new \\HM\\Backdrop\\Task( '\\HM\\BackUpWordPress\\run_schedule_async', $schedule_id );\n\n\t/**\n\t * Backdrop doesn't cleanup tasks which fatal before they can finish\n\t * so we manually cancel the task if it's already scheduled.\n\t */\n\tif ( $task->is_scheduled() ) {\n\t\t$task->cancel();\n\t}\n\t$task->schedule();\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_hmbkp_run_schedule', 'HM\\BackUpWordPress\\request_do_backup' );\n\nfunction run_schedule_async( $schedule_id ) {\n\t$schedule = new Scheduled_Backup( $schedule_id );\n\t$schedule->run();\n}\n\n/**\n * Send the download file to the browser and then redirect back to the backups page\n */\nfunction request_download_backup() {\n\n\tcheck_admin_referer( 'hmbkp_download_backup', 'hmbkp_download_backup_nonce' );\n\n\tif ( ! file_exists( sanitize_text_field( base64_decode( $_GET['hmbkp_backup_archive'] ) ) )  ) {\n\t\treturn;\n\t}\n\n\t$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 ) );\n\n\tglobal $is_apache;\n\n\tif ( $is_apache ) {\n\n\t\tPath::get_instance()->protect_path( 'reset' );\n\n\t\t$url = add_query_arg( 'key', HMBKP_SECURE_KEY, $url );\n\n\t}\n\n\twp_safe_redirect( $url, 303 );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_request_download_backup', 'HM\\BackUpWordPress\\request_download_backup' );\n\n/**\n * Cancels a running backup then redirect back to the backups page\n */\nfunction request_cancel_backup() {\n\n\tcheck_admin_referer( 'hmbkp_request_cancel_backup', 'hmbkp-request_cancel_backup_nonce' );\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) );\n\t$status = $schedule->get_status();\n\n\t// Delete the running backup\n\tif ( $status->get_backup_filename() && file_exists( trailingslashit( Path::get_path() ) . $status->get_backup_filename() ) ) {\n\t\tunlink( trailingslashit( Path::get_path() ) . $status->get_backup_filename() );\n\t}\n\n\tif ( file_exists( $status->get_status_filepath() ) ) {\n\t\tunlink( $status->get_status_filepath() );\n\t}\n\n\tPath::get_instance()->cleanup();\n\n\twp_safe_redirect( get_settings_url(), 303 );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_request_cancel_backup', 'HM\\BackUpWordPress\\request_cancel_backup' );\n\n/**\n * Dismiss an error and then redirect back to the backups page\n */\nfunction dismiss_error() {\n\n\tPath::get_instance()->cleanup();\n\n\tNotices::get_instance()->clear_all_notices();\n\n\twp_safe_redirect( wp_get_referer(), 303 );\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_hmbkp_dismiss_error', 'HM\\BackUpWordPress\\dismiss_error' );\n\n/**\n * Catch the schedule service settings form submission\n *\n * Validate and either return errors or update the schedule\n */\nfunction edit_schedule_services_submit() {\n\n\tcheck_admin_referer( 'hmbkp-edit-schedule-services', 'hmbkp-edit-schedule-services-nonce' );\n\n\tif ( empty( $_POST['hmbkp_schedule_id'] ) ) {\n\t\twp_die( __( 'The schedule ID was not provided. Aborting.', 'backupwordpress' ) );\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( $_POST['hmbkp_schedule_id'] ) );\n\n\t$errors = array();\n\n\t// Save the service options\n\tforeach ( Services::get_services( $schedule ) as $service ) {\n\t\t$errors = array_merge( $errors, $service->save() );\n\t}\n\n\t$schedule->save();\n\n\tif ( ! empty( $errors ) ) {\n\t\tforeach ( $errors as $error ) {\n\t\t\tadd_settings_error( $error );\n\t\t}\n\t}\n\n\t$redirect = remove_query_arg( array( 'hmbkp_panel', 'action' ), wp_get_referer() );\n\n\tif ( ! empty( $errors ) ) {\n\t\t$redirect = wp_get_referer();\n\t}\n\n\twp_safe_redirect( $redirect, '303' );\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_edit_schedule_services_submit', 'HM\\BackUpWordPress\\edit_schedule_services_submit' );\n\n/**\n * Catch the schedule settings form submission\n *\n * Validate and either return errors or update the schedule\n */\nfunction edit_schedule_submit() {\n\n\tcheck_admin_referer( 'hmbkp-edit-schedule', 'hmbkp-edit-schedule-nonce' );\n\n\tif ( empty( $_POST['hmbkp_schedule_id'] ) ) {\n\t\tdie;\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( $_POST['hmbkp_schedule_id'] ) );\n\t$site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() );\n\n\t$errors = $settings = array();\n\n\tif ( isset( $_POST['hmbkp_schedule_type'] ) ) {\n\n\t\t$schedule_type = sanitize_text_field( $_POST['hmbkp_schedule_type'] );\n\n\t\tif ( ! trim( $schedule_type ) ) {\n\t\t\t$errors['hmbkp_schedule_type'] = __( 'Backup type cannot be empty', 'backupwordpress' );\n\t\t} elseif ( ! in_array( $schedule_type, array( 'complete', 'file', 'database' ) ) ) {\n\t\t\t$errors['hmbkp_schedule_type'] = __( 'Invalid backup type', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['type'] = $schedule_type;\n\t\t}\n\t}\n\n\tif ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_type'] ) ) {\n\n\t\t$schedule_recurrence_type = sanitize_text_field( $_POST['hmbkp_schedule_recurrence']['hmbkp_type'] );\n\n\t\tif ( empty( $schedule_recurrence_type ) ) {\n\t\t\t$errors['hmbkp_schedule_recurrence']['hmbkp_type'] = __( 'Schedule cannot be empty', 'backupwordpress' );\n\t\t} elseif ( ! in_array( $schedule_recurrence_type, array_keys( cron_schedules() ) ) && 'manually' !== $schedule_recurrence_type ) {\n\t\t\t$errors['hmbkp_schedule_recurrence']['hmbkp_type'] = __( 'Invalid schedule', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['recurrence'] = $schedule_recurrence_type;\n\t\t}\n\t}\n\n\tif ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_week'] ) ) {\n\n\t\t$day_of_week = sanitize_text_field( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_week'] );\n\n\t\tif ( ! in_array( $day_of_week, array( 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday' ) ) ) {\n\t\t\t$errors['hmbkp_schedule_start_day_of_week'] = __( 'Day of the week must be a valid, lowercase day name', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['start_time']['day_of_week'] = $day_of_week;\n\t\t}\n\t}\n\n\tif ( ( 'monthly' === $schedule_recurrence_type ) && isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_month'] ) ) {\n\n\t\t$day_of_month = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_day_of_month'] );\n\n\t\t$options = array(\n\t\t\t'min_range' => 1,\n\t\t\t'max_range' => 31,\n\t\t);\n\n\t\tif ( false === filter_var( $day_of_month, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) {\n\t\t\t$errors['hmbkp_schedule_start_day_of_month'] = __( 'Day of month must be between 1 and 31', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['start_time']['day_of_month'] = $day_of_month;\n\t\t}\n\t}\n\n\tif ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_hours'] ) ) {\n\n\t\t$hours = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_hours'] );\n\n\t\t$options = array(\n\t\t\t'min_range' => 0,\n\t\t\t'max_range' => 23,\n\t\t);\n\n\t\tif ( false === filter_var( $hours, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) {\n\t\t\t$errors['hmbkp_schedule_start_hours'] = __( 'Hours must be between 0 and 23', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['start_time']['hours'] = $hours;\n\t\t}\n\t}\n\n\tif ( isset( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_minutes'] ) ) {\n\n\t\t$minutes = absint( $_POST['hmbkp_schedule_recurrence']['hmbkp_schedule_start_minutes'] );\n\n\t\t$options = array(\n\t\t\t'min_range' => 0,\n\t\t\t'max_range' => 59,\n\t\t);\n\n\t\tif ( false === filter_var( $minutes, FILTER_VALIDATE_INT, array( 'options' => $options ) ) ) {\n\t\t\t$errors['hmbkp_schedule_start_minutes'] = __( 'Minutes must be between 0 and 59', 'backupwordpress' );\n\t\t} else {\n\t\t\t$settings['start_time']['minutes'] = $minutes;\n\t\t}\n\t}\n\n\tif ( isset( $_POST['hmbkp_schedule_max_backups'] ) ) {\n\n\t\t$max_backups = sanitize_text_field( $_POST['hmbkp_schedule_max_backups'] );\n\n\t\tif ( empty( $max_backups ) ) {\n\t\t\t$errors['hmbkp_schedule_max_backups'] = __( 'Max backups can\\'t be empty', 'backupwordpress' );\n\t\t} elseif ( ! is_numeric( $max_backups ) ) {\n\t\t\t$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be a number', 'backupwordpress' );\n\t\t} elseif ( ! ( $max_backups >= 1 ) ) {\n\t\t\t$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be greater than 0', 'backupwordpress' );\n\t\t} elseif ( $site_size->is_site_size_cached() && disk_space_low( $site_size->get_site_size() * $max_backups ) ) {\n\t\t\t$errors['hmbkp_schedule_max_backups'] = sprintf( __( 'Storing %s backups would use %s of disk space but your server only has %s free.', 'backupwordpress' ), '<code>' . number_format_i18n( $max_backups ) . '</code>', '<code>' . size_format( $max_backups * $site_size->get_site_size() ) . '</code>', '<code>' . size_format( disk_free_space( Path::get_path() ) ) . '</code>' );\n\t\t} else {\n\t\t\t$settings['max_backups'] = absint( $max_backups );\n\t\t}\n\t}\n\n\t// Save the service options\n\tforeach ( Services::get_services( $schedule ) as $service ) {\n\t\t$errors = array_merge( $errors, $service->save() );\n\t}\n\n\tif ( ! empty( $settings['recurrence'] ) && ! empty( $settings['start_time'] ) ) {\n\n\t\t// Calculate the start time depending on the recurrence\n\t\t$start_time = determine_start_time( $settings['recurrence'], $settings['start_time'] );\n\n\t\tif ( $start_time ) {\n\t\t\t$schedule->set_schedule_start_time( $start_time );\n\t\t}\n\t}\n\n\tif ( ! empty( $settings['recurrence'] ) ) {\n\t\t$schedule->set_reoccurrence( $settings['recurrence'] );\n\t}\n\n\tif ( ! empty( $settings['type'] ) ) {\n\t\t$schedule->set_type( $settings['type'] );\n\t}\n\n\tif ( ! empty( $settings['max_backups'] ) ) {\n\t\t$schedule->set_max_backups( $settings['max_backups'] );\n\t}\n\n\t// Save the new settings\n\t$schedule->save();\n\n\t// Remove any old backups in-case max backups was reduced\n\t$schedule->delete_old_backups();\n\n\tif ( ! empty( $errors ) ) {\n\t\tforeach ( $errors as $error ) {\n\t\t\tadd_settings_error( $error );\n\t\t}\n\t}\n\n\t$redirect = remove_query_arg( array( 'hmbkp_panel', 'action' ), wp_get_referer() );\n\n\tif ( ! empty( $errors ) ) {\n\t\t$redirect = wp_get_referer();\n\t}\n\n\twp_safe_redirect( $redirect, '303' );\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_edit_schedule_submit', 'HM\\BackUpWordPress\\edit_schedule_submit' );\n\n/**\n * Add an exclude rule\n *\n * @access public\n * @return void\n */\nfunction add_exclude_rule() {\n\n\tcheck_admin_referer( 'hmbkp-add-exclude-rule', 'hmbkp-add-exclude-rule-nonce' );\n\n\tif ( ! isset( $_GET['hmbkp_exclude_pathname'] ) ) {\n\t\treturn;\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) );\n\n\t$exclude_rule = sanitize_text_field( $_GET['hmbkp_exclude_pathname'] );\n\n\t$schedule->set_excludes( $exclude_rule, true );\n\n\t$schedule->save();\n\tdelete_transient( 'hmbkp_root_size' );\n\n\twp_safe_redirect( wp_get_referer(), '303' );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_add_exclude_rule', 'HM\\BackUpWordPress\\add_exclude_rule' );\n\n/**\n * Delete an exclude rule\n *\n * @access public\n * @return void\n */\nfunction remove_exclude_rule() {\n\n\tcheck_admin_referer( 'hmbkp_remove_exclude_rule', 'hmbkp-remove_exclude_rule_nonce' );\n\n\tif ( ! isset( $_GET['hmbkp_remove_exclude'] ) ) {\n\t\tdie;\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) );\n\n\t$excludes = $schedule->get_excludes();\n\t$exclude_rule_to_remove = stripslashes( sanitize_text_field( $_GET['hmbkp_remove_exclude'] ) );\n\n\t$schedule->set_excludes( array_diff( $excludes->get_user_excludes(), (array) $exclude_rule_to_remove ) );\n\n\t$schedule->save();\n\tdelete_transient( 'hmbkp_root_size' );\n\n\twp_safe_redirect( wp_get_referer(), '303' );\n\n\tdie;\n\n}\nadd_action( 'admin_post_hmbkp_remove_exclude_rule', 'HM\\BackUpWordPress\\remove_exclude_rule' );\n\n/**\n *\n * @param null\n */\nfunction recalculate_directory_filesize() {\n\n\tif ( ! isset( $_GET['hmbkp_recalculate_directory_filesize'] ) || ! check_admin_referer( 'hmbkp-recalculate_directory_filesize' ) ) {\n\t\treturn;\n\t}\n\n\t// Delete the cached directory size\n\t@unlink( trailingslashit( Path::get_path() ) . '.files' );\n\n\t$url = add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_excludes' ), get_settings_url() );\n\n\tif ( isset( $_GET['hmbkp_directory_browse'] ) ) {\n\t\t$url = add_query_arg( 'hmbkp_directory_browse', sanitize_text_field( $_GET['hmbkp_directory_browse'] ), $url );\n\t}\n\n\twp_safe_redirect( $url, '303' );\n\tdie;\n\n}\nadd_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\\BackUpWordPress\\recalculate_directory_filesize' );\n\nfunction calculate_site_size() {\n\n\t$site_size = new Site_Size;\n\n\tif ( ! $site_size->is_site_size_cached() ) {\n\t\t$root = new \\SplFileInfo( Path::get_root() );\n\t\t$site_size->filesize( $root );\n\t}\n\n}\nadd_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\\BackUpWordPress\\calculate_site_size' );\n\n/**\n * Receive the heartbeat and return backup status\n */\nfunction heartbeat_received( $response, $data ) {\n\n\tif (!current_user_can('manage_options')) return $response;\n\n\t$response['heartbeat_interval'] = 'fast';\n\n\tif ( ! empty( $data['hmbkp_schedule_id'] ) ) {\n\n\t\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $data['hmbkp_schedule_id'] ) ) );\n\t\t$status = new Backup_Status( $schedule->get_id() );\n\n\t\tif ( ! empty( $data['hmbkp_is_in_progress'] ) ) {\n\n\t\t\tif ( ! $status->get_status() ) {\n\t\t\t\t$response['hmbkp_schedule_status'] = 0;\n\n\t\t\t\t// Slow the heartbeat back down\n\t\t\t\t$response['heartbeat_interval'] = 'slow';\n\n\t\t\t} else {\n\t\t\t\t$response['hmbkp_schedule_status'] = schedule_status( $schedule, false );\n\t\t\t}\n\t\t}\n\n\t\tif ( ! empty( $data['hmbkp_client_request'] ) ) {\n\n\t\t\t$site_size = new Site_Size( $schedule->get_type(),  $schedule->get_excludes() );\n\n\t\t\t// Pass the site size to be displayed when it's ready.\n\t\t\tif ( $site_size->is_site_size_cached() ) {\n\n\t\t\t\t$response['hmbkp_site_size'] = $site_size->get_formatted_site_size();\n\n\t\t\t\tob_start();\n\t\t\t\trequire( HMBKP_PLUGIN_PATH . 'admin/schedule-form-excludes.php' );\n\t\t\t\t$response['hmbkp_dir_sizes'] = ob_get_clean();\n\n\t\t\t\t// Slow the heartbeat back down\n\t\t\t\t$response['heartbeat_interval'] = 'slow';\n\t\t\t}\n\t\t}\n\t}\n\n\treturn $response;\n\n}\nadd_filter( 'heartbeat_received', 'HM\\BackUpWordPress\\heartbeat_received', 10, 2 );\n\n/**\n * Load the enable support modal contents\n *\n * @return void\n */\nfunction load_enable_support() {\n\n\tcheck_ajax_referer( 'hmbkp_nonce', '_wpnonce' );\n\n\trequire_once HMBKP_PLUGIN_PATH . 'admin/enable-support.php';\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_load_enable_support', 'HM\\BackUpWordPress\\load_enable_support' );\n\n/**\n * Display the running status via ajax\n */\nfunction ajax_is_backup_in_progress() {\n\n\tcheck_ajax_referer( 'hmbkp_nonce', 'nonce' );\n\n\tif ( empty( $_POST['hmbkp_schedule_id'] ) ) {\n\t\tdie;\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_POST['hmbkp_schedule_id'] ) ) );\n\n\tif ( ! $schedule->get_status() ) {\n\t\techo 0;\n\t} else {\n\t\thmbkp_schedule_status( $schedule );\n\t}\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_hmbkp_is_in_progress', 'HM\\BackUpWordPress\\ajax_is_backup_in_progress' );\n\n/**\n * Display the calculated size via ajax\n */\nfunction ajax_calculate_backup_size() {\n\n\tcheck_ajax_referer( 'hmbkp_nonce', 'nonce' );\n\n\tif ( empty( $_POST['hmbkp_schedule_id'] ) ) {\n\t\tdie;\n\t}\n\n\t$schedule = new Scheduled_Backup( sanitize_text_field( urldecode( $_POST['hmbkp_schedule_id'] ) ) );\n\n\t$recalculate_filesize = true;\n\n\trequire( HMBKP_PLUGIN_PATH . 'admin/schedule-sentence.php' );\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_hmbkp_calculate', 'HM\\BackUpWordPress\\ajax_calculate_backup_size' );\n\n/**\n * Test the cron response and if it's not 200 show a warning message\n */\nfunction ajax_cron_test() {\n\n\tcheck_ajax_referer( 'hmbkp_nonce', 'nonce' );\n\n\t// Only run the test once per week\n\tif ( get_transient( 'hmbkp_wp_cron_test_beacon' ) ) {\n\n\t\techo 1;\n\n\t\tdie;\n\n\t}\n\n\t// Skip the test if they are using Alternate Cron\n\tif ( defined( 'ALTERNATE_WP_CRON' ) ) {\n\n\t\tdelete_option( 'hmbkp_wp_cron_test_failed' );\n\n\t\techo 1;\n\n\t\tdie;\n\n\t}\n\n\t$url = site_url( 'wp-cron.php' );\n\n\t// Attempt to load wp-cron.php 3 times, if we get the same error each time then inform the user.\n\t$response1 = wp_remote_head( $url, array( 'timeout' => 30 ) );\n\t$response2 = wp_remote_head( $url, array( 'timeout' => 30 ) );\n\t$response3 = wp_remote_head( $url, array( 'timeout' => 30 ) );\n\n\tif ( is_wp_error( $response1 ) && is_wp_error( $response2 ) && is_wp_error( $response3 ) ) {\n\n\t\techo '<div id=\"hmbkp-warning\" class=\"updated fade\"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . 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' ), '<code>wp-cron.php</code>', '<code>' . $response1->get_error_message() . '</code>', '<a href=\"http://wordpress.org/extend/plugins/backupwordpress/faq/\">FAQ</a>' ) . '</p></div>';\n\n\t\tupdate_option( 'hmbkp_wp_cron_test_failed', true );\n\n\t} elseif ( ! in_array( 200, array_map( 'wp_remote_retrieve_response_code', array( $response1, $response2, $response3 ) ) ) ) {\n\n\t\techo '<div id=\"hmbkp-warning\" class=\"updated fade\"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</strong> ' . 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' ), '<code>wp-cron.php</code>', '<code>' . esc_html( wp_remote_retrieve_response_code( $response1 ) ) . ' ' . esc_html( get_status_header_desc( wp_remote_retrieve_response_code( $response1 ) ) ) . '</code>', '<a href=\"http://wordpress.org/extend/plugins/backupwordpress/faq/\">FAQ</a>' ) . '</p></div>';\n\n\t\tupdate_option( 'hmbkp_wp_cron_test_failed', true );\n\n\t} else {\n\n\t\techo 1;\n\n\t\tdelete_option( 'hmbkp_wp_cron_test_failed' );\n\t\tset_transient( 'hmbkp_wp_cron_test_beacon', 1, WEEK_IN_SECONDS );\n\n\t}\n\n\tdie;\n\n}\nadd_action( 'wp_ajax_hmbkp_cron_test', 'HM\\BackUpWordPress\\ajax_cron_test' );\n\n/**\n * Remember notice dismissal\n */\nfunction hmbkp_dismiss_notice() {\n\tupdate_site_option( 'hmbkp_hide_info_notice', true );\n}\nadd_action( 'wp_ajax_hmbkp_dismiss_notice', 'HM\\BackUpWordPress\\hmbkp_dismiss_notice' );\n\nfunction hmbkp_dismiss_rate_notice() {\n\t//Set rate notice to reappear after 30 days\n\t$expiry = time() + 2592000;\n\tupdate_site_option( 'hmbkp_hide_rate_notice', $expiry );\n}\nadd_action( 'wp_ajax_hmbkp_dismiss_rate_notice', 'HM\\BackUpWordPress\\hmbkp_dismiss_rate_notice' );\n"
  },
  {
    "path": "admin/backups-table.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n?>\n\n<table class=\"widefat\">\n\n\t<thead>\n\n\t\t<tr>\n\n\t\t\t<th scope=\"col\"><?php backups_number( $schedule ); ?></th>\n\t\t\t<th scope=\"col\"><?php _e( 'Size', 'backupwordpress' ); ?></th>\n\t\t\t<th scope=\"col\"><?php _e( 'Type', 'backupwordpress' ); ?></th>\n\t\t\t<th scope=\"col\"><?php _e( 'Actions', 'backupwordpress' ); ?></th>\n\n\t\t</tr>\n\n\t</thead>\n\n\t<tbody>\n\n\t\t<?php if ( $schedule->get_backups() ) :\n\n\t\t\t$schedule->delete_old_backups();\n\n\t\t\tforeach ( $schedule->get_backups() as $file ) :\n\n\t\t\t\tif ( ! file_exists( $file ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tget_backup_row( $file, $schedule );\n\n\t\t\tendforeach;\n\n\t\telse : ?>\n\n\t\t\t<tr>\n\t\t\t\t<td class=\"hmbkp-no-backups\" colspan=\"4\"><?php _e( 'This is where your backups will appear once you have some.', 'backupwordpress' ); ?></td>\n\t\t\t</tr>\n\n\t\t<?php endif; ?>\n\n\t</tbody>\n\n</table>\n"
  },
  {
    "path": "admin/backups.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n// Refresh the schedules from the database to make sure we have the latest changes\nSchedules::get_instance()->refresh_schedules();\n\n$schedules = Schedules::get_instance()->get_schedules();\n\nif ( ! empty( $_GET['hmbkp_schedule_id'] ) ) {\n\t$current_schedule = new Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) );\n} else {\n\t$current_schedule = reset( $schedules );\n} ?>\n\n<div class=\"wp-filter\">\n\t<ul class=\"filter-links\">\n\n\t\t<?php foreach ( $schedules as $schedule ) :\n\t\t\t$status = new Backup_Status( $schedule->get_id() ); ?>\n\n\t\t\t<li<?php if ( $status->get_status() ) { ?> title=\"<?php echo esc_attr( strip_tags( $status->get_status() ) ); ?>\"<?php } ?>><a href=\"<?php echo esc_url( add_query_arg( 'hmbkp_schedule_id', $schedule->get_id(), HMBKP_ADMIN_URL ) ); ?>\" class=\"<?php if ( $status->get_status() ) { ?>hmbkp-running<?php } ?> <?php if ( $schedule->get_id() === $current_schedule->get_id() ) { ?>current<?php } ?>\"><?php echo esc_html( translated_schedule_title( $schedule->get_slug(), $schedule->get_name() ) ); ?> <span class=\"count\">(<?php echo esc_html( count( $schedule->get_backups() ) ); ?>)</span></a></li>\n\n\t\t<?php endforeach; ?>\n\n\t\t<li><a href=\"<?php echo esc_url( add_query_arg( array( 'hmbkp_add_schedule' => '1', 'action' => 'hmbkp_edit_schedule', 'hmbkp_schedule_id' => time(), 'hmbkp_panel' => 'hmbkp_edit_schedule_settings' ), HMBKP_ADMIN_URL ) ); ?>\" class=\"<?php if ( ! Schedules::get_instance()->get_schedule( $current_schedule->get_id() ) ) { ?> current<?php } ?>\"> + <?php _e( 'add schedule', 'backupwordpress' ); ?></a></li>\n\n\t</ul>\n</div>\n\n<?php // Don't continue if we don't have a schedule\nif ( ! $schedule = $current_schedule ) {\n\treturn;\n} ?>\n\n<div data-hmbkp-schedule-id=\"<?php echo esc_attr( $schedule->get_id() ); ?>\" class=\"hmbkp_schedule\">\n\n\t<?php require( HMBKP_PLUGIN_PATH . 'admin/schedule-sentence.php' ); ?>\n\n\t<?php require( HMBKP_PLUGIN_PATH . 'admin/backups-table.php' ); ?>\n\n</div>\n"
  },
  {
    "path": "admin/constants.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n?>\n\n<div id=\"hmbkp-constants\">\n\n\t<p><?php printf( __( '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.', 'backupwordpress' ), '<code>define</code>', '<code>' . __( 'Constants', 'backupwordpress' ) . '</code>', '<code>wp-config.php</code>', '<a href=\"http://codex.wordpress.org/Editing_wp-config.php\">' . __( 'The Codex can help', 'backupwordpress' ) . '</a>', '<code>' . __( 'Constants', 'backupwordpress' ) . '</code>' ); ?></p>\n\n\t<table class=\"widefat\">\n\n\t\t<tr<?php if ( defined( 'HMBKP_PATH' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_PATH</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_PATH' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_PATH ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The path to the folder you would like to store your backup files in, defaults to %s.', 'backupwordpress' ), '<code>' . esc_html( Path::get_path() ) . '</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_PATH', '/home/willmot/backups' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_MYSQLDUMP_PATH</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_MYSQLDUMP_PATH ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The path to your %1$s executable. Will be used for the %2$s part of the back up if available.', 'backupwordpress' ), '<code>mysqldump</code>', '<code>' . __( 'database', 'backupwordpress' ) . '</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_MYSQLDUMP_PATH', '/opt/local/bin/mysqldump' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_ZIP_PATH' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_ZIP_PATH</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_ZIP_PATH' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_ZIP_PATH ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.', 'backupwordpress' ), '<code>zip</code>', '<code>' . __( 'files', 'backupwordpress' ) . '</code>', '<code>' . __( 'database', 'backupwordpress' ) . '</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_ZIP_PATH', '/opt/local/bin/zip' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_EXCLUDE' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_EXCLUDE</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_EXCLUDE' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_EXCLUDE ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php _e( 'Comma separated list of files or directories to exclude, the backups directory is automatically excluded.', 'backupwordpress' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_EXCLUDE', '/wp-content/uploads/, /stats/, .svn/, *.txt' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_CAPABILITY' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_CAPABILITY</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_CAPABILITY' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_CAPABILITY ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The capability to use when calling %1$s. Defaults to %2$s.', 'backupwordpress' ), '<code>add_menu_page</code>', '<code>manage_options</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_CAPABILITY', 'edit_posts' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_ROOT' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_ROOT</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_ROOT' ) ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_ROOT ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The root directory that is backed up. Defaults to %s.', 'backupwordpress' ), '<code>' . Path::get_home_path() . '</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_ROOT', ABSPATH . 'wp/' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<tr<?php if ( defined( 'HMBKP_SCHEDULE_TIME' ) && HMBKP_SCHEDULE_TIME !== '11pm' ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_SCHEDULE_TIME</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_SCHEDULE_TIME' ) && HMBKP_SCHEDULE_TIME !== '11pm' ) { ?>\n\t\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . esc_html( HMBKP_SCHEDULE_TIME ) . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The time that your schedules should run. Defaults to %s.', 'backupwordpress' ), '<code>23:00</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_SCHEDULE_TIME', '07:30' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t\t<?php foreach ( Services::get_services() as $file => $service ) :\n\t\t\techo wp_kses_post( call_user_func( array( $service, 'constant' ) ) );\n\t\tendforeach; ?>\n\n\t</table>\n\n</div>\n"
  },
  {
    "path": "admin/enable-support.php",
    "content": "<?php require_once HMBKP_PLUGIN_PATH . 'classes/class-requirements.php'; ?>\n\n<h2><?php _e( 'Enable BackUpWordPress Support', 'backupwordpress' ); ?></h2>\n\n<p class=\"howto\"><?php printf( __( '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:', 'backupwordpress' ), '<a target=\"blank\" href=\"https://www.intercom.io\">Intercom</a>' ); ?></p>\n\n<div class=\"server-info\">\n\n<?php foreach ( HM\\BackUpWordPress\\Requirements::get_requirement_groups() as $group ) : ?>\n\n\t<table class=\"fixed widefat\">\n\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th scope=\"col\" colspan=\"2\"><?php echo esc_html( ucwords( $group ) ); ?></th>\n\t\t\t</tr>\n\t\t</thead>\n\n\t\t<tbody>\n\n\t\t<?php foreach ( HM\\BackUpWordPress\\Requirements::get_requirements( $group ) as $requirement ) : ?>\n\n\t\t\t<?php if ( ( is_string( $requirement->raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) ) { ?>\n\n\t\t\t<tr>\n\n\t\t\t\t<td><?php echo esc_html( $requirement->name() ); ?></td>\n\n\t\t\t\t<td>\n\t\t\t\t\t<code><?php echo esc_html( $requirement->result() ); ?></code>\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<?php } else { ?>\n\n\t\t\t<tr>\n\n\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t<?php echo esc_html( $requirement->name() ); ?>\n\t\t\t\t\t<pre><?php echo esc_html( $requirement->result() ); ?></pre>\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<?php } ?>\n\n\t\t<?php endforeach; ?>\n\n\t\t</tbody>\n\n\t</table>\n\n<?php endforeach; ?>\n\n</div>\n\n<p class=\"howto\"><?php _e( 'You can disable support in the future by deactivating BackUpWordPress.', 'backupwordpress' ); ?></p>\n\n<a href=\"#\" class=\"button-secondary hmbkp-thickbox-close\"><?php _e( 'No, thanks', 'backupwordpress' ); ?></a>\n<a href=\"<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_request_enable_support' ), admin_url( 'admin-post.php' ) ), 'hmbkp_enable_support', 'hmbkp_enable_support_nonce' ) ); ?>\" class=\"button-primary right\"><?php _e( 'Yes, I want to enable support', 'backupwordpress' ); ?></a>\n"
  },
  {
    "path": "admin/extensions.php",
    "content": "<?php\nnamespace HM\\BackUpWordPress;\n?>\n\n<div class=\"wrap\">\n\t<h1>\n\t\t<a class=\"page-title-action\" href=\"<?php echo esc_url( get_settings_url() ); ?>\"><?php esc_html_e( '&larr; Backups', 'backupwordpress' ); ?></a>\n\t\t<?php esc_html_e( 'BackUpWordPress Extensions', 'backupwordpress' ); ?>\n\t</h1>\n\n\t<div class=\"wp-filter\">\n\t\t<p><?php esc_html_e( '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.', 'backupwordpress' ); ?></p>\n\t</div>\n\n\t<?php\n\t$extensions_data = Extensions::get_instance()->get_edd_data();\n\n\t// Sort by title.\n\tusort( $extensions_data, function( $a, $b ) {\n\t\treturn strcmp( $b->title->rendered, $a->title->rendered );\n\t});\n\n\t/**\n\t * Include is required for the usage of is_plugin_active()\n\t * to identify if a plugin is currently activated.\n\t * This info is further used to display a correct action button\n\t * depending on plugin's state (i.e. Update Now, Activate, Active).\n\t */\n\tinclude_once( ABSPATH . 'wp-admin/includes/plugin.php' );\n\n\t$installed_plugins = array();\n\tforeach ( get_plugins() as $path => $plugin_info ) {\n\t\t$installed_plugins[ strtolower( $plugin_info['Name'] ) ] = array(\n\t\t\t'version'   => $plugin_info['Version'],\n\t\t\t'path'      => $path,\n\t\t\t'is_active' => is_plugin_active( $path ),\n\t\t);\n\t}\n\t?>\n\n\t<h3><?php esc_html_e( 'Remote Storage', 'backupwordpress' ); ?></h3>\n\n\t<p><?php esc_html_e( '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.', 'backupwordpress' ); ?></p>\n\n\t<div class=\"wp-list-table widefat plugin-install\">\n\t\t<div id=\"the-list\">\n\n\t\t\t<?php $first = true; ?>\n\n\t\t\t<?php foreach ( $extensions_data as $extension ) :\n\n\t\t\t\t$extension_name_lowcase = strtolower( $extension->title->rendered );\n\t\t\t\t$is_extension_installed = in_array( $extension_name_lowcase, array_keys( $installed_plugins ) );\n\n\t\t\t\t$extension_version  = $is_extension_installed ?\n\t\t\t\t\t$installed_plugins[ $extension_name_lowcase ]['version'] : '';\n\n\t\t\t\t$extension_path     = $is_extension_installed ?\n\t\t\t\t\t$installed_plugins[ $extension_name_lowcase ]['path'] : '';\n\n\t\t\t\t$is_extension_active = $is_extension_installed ?\n\t\t\t\t\t$installed_plugins[ $extension_name_lowcase ]['is_active'] : false;\n\t\t\t\t?>\n\n\t\t\t\t<div class=\"plugin-card plugin-card-<?php echo esc_attr( $extension->slug ); ?>\">\n\t\t\t\t\t<div class=\"plugin-card-top\">\n\t\t\t\t\t\t<div class=\"name column-name\">\n\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t<a href=\"<?php echo esc_url( $extension->link ); ?>\" class=\"thickbox\">\n\t\t\t\t\t\t\t\t\t<?php echo esc_html( $extension->title->rendered ); ?>\n\t\t\t\t\t\t\t\t\t<img src=\"<?php echo esc_url( $extension->featured_image_url ); ?>\" class=\"plugin-icon\" alt=\"\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"action-links\">\n\t\t\t\t\t\t\t<ul class=\"plugin-action-buttons\">\n\n\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tcurrent_user_can( 'install_plugins' ) ||\n\t\t\t\t\t\t\t\t\tcurrent_user_can( 'update_plugins' )\n\t\t\t\t\t\t\t\t) : ?>\n\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t\t// Update Now - Installed and update is available.\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t$is_extension_installed &&\n\t\t\t\t\t\t\t\t\t\t\tversion_compare( $extension_version, $extension->_edd_sl_version, '<' )\n\t\t\t\t\t\t\t\t\t\t) :\n\n\t\t\t\t\t\t\t\t\t\t\t$update_url = wp_nonce_url(\n\t\t\t\t\t\t\t\t\t\t\t\tself_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $extension_path ),\n\t\t\t\t\t\t\t\t\t\t\t\t'upgrade-plugin_' . $extension_path\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t?>\n\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"update-now button aria-button-if-js\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-plugin=\"<?php echo esc_attr( $extension_path ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-slug=\"<?php echo esc_attr( $extension->slug ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\thref=\"<?php echo esc_url( $update_url ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"<?php printf( esc_attr__( 'Update %s now', 'backupwordpress' ), esc_attr( $extension->title->rendered ) ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-name=\"<?php esc_attr( $extension->title->rendered ); ?>\">\n\t\t\t\t\t\t\t\t\t\t\t\t<?php esc_html_e( 'Update Now', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t\t// Active - Installed and activated, but no update.\n\t\t\t\t\t\t\t\t\t\telseif ( $is_extension_installed && $is_extension_active ) : ?>\n\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"button button-disabled\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled=\"disabled\">\n\t\t\t\t\t\t\t\t\t\t\t\t<?php echo esc_html_x( 'Active', 'Plugin status', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t\t// Activate - Installed, but not activated.\n\t\t\t\t\t\t\t\t\t\telseif ( $is_extension_installed && ! $is_extension_active ) :\n\n\t\t\t\t\t\t\t\t\t\t\t$activate_url = add_query_arg( array(\n\t\t\t\t\t\t\t\t\t\t\t\t'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $extension_path ),\n\t\t\t\t\t\t\t\t\t\t\t\t'action'   => 'activate',\n\t\t\t\t\t\t\t\t\t\t\t\t'plugin'   => $extension_path,\n\t\t\t\t\t\t\t\t\t\t\t\t), network_admin_url( 'plugins.php' ) );\n\n\t\t\t\t\t\t\t\t\t\t\t// TODO: Network Activate?\n\t\t\t\t\t\t\t\t\t\t\t?>\n\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\thref=\"<?php echo esc_url( $activate_url ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"button activate-now button-secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"<?php printf( esc_attr__( 'Activate %s', 'backupwordpress' ), esc_attr( $extension->title->rendered ) ); ?>\">\n\t\t\t\t\t\t\t\t\t\t\t\t<?php esc_html_e( 'Activate', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t\t// Buy Now - Not installed.\n\t\t\t\t\t\t\t\t\t\telse : ?>\n\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"install-now button-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-slug=\"<?php echo esc_attr( $extension->slug ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\thref=\"<?php echo esc_url( $extension->link ); ?>\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"<?php printf( esc_attr__( 'Install %s now', 'backupwordpress' ), esc_attr( $extension->title->rendered ) ); ?>\n\t\t\t\t\t\t\t\t\t\t\t\tdata-name=\"<?php echo esc_attr( $extension->title->rendered ); ?>\">\n\t\t\t\t\t\t\t\t\t\t\t\t<?php printf( esc_html__( 'Buy Now &#36;%s', 'backupwordpress' ), esc_html( $extension->edd_price ) ); ?>\n\t\t\t\t\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\thref=\"<?php echo esc_url( $extension->link ); ?>\"\n\t\t\t\t\t\t\t\t\t\tclass=\"thickbox\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"<?php printf( esc_attr__( 'More information about %s', 'backupwordpress' ), esc_attr( $extension->title->rendered ) ) ; ?>\"\n\t\t\t\t\t\t\t\t\t\tdata-title=\"<?php echo esc_attr( $extension->title->rendered ); ?>\">\n\t\t\t\t\t\t\t\t\t\t<?php esc_html_e( 'More Details', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"desc column-description\">\n\t\t\t\t\t\t\t<p><?php echo wp_kses_post( $extension->content->rendered ); ?></p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<?php\n\t\t\t\t\t$style = $first === true ? 'background-color:aliceblue;' : '';\n\t\t\t\t\t$first = false;\n\t\t\t\t\t?>\n\n\t\t\t\t\t<div class=\"plugin-card-bottom\" style=\"<?php echo esc_attr( $style ); ?>\">\n\t\t\t\t\t\t<div class=\"vers column-rating\">\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"column-updated\">\n\t\t\t\t\t\t\t<?php printf(\n\t\t\t\t\t\t\t\twp_kses(\n\t\t\t\t\t\t\t\t\t__( '<strong>Last Updated:</strong> %s ago', 'backupwordpress' ),\n\t\t\t\t\t\t\t\t\tarray(\n\t\t\t\t\t\t\t\t\t\t'strong' => array(),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tesc_html( human_time_diff( strtotime( $extension->modified ) ) )\n\t\t\t\t\t\t\t); ?>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t<?php endforeach; ?>\n\t\t</div>\n\t</div>\n</div>\n"
  },
  {
    "path": "admin/faq.php",
    "content": "<?php\necho '<p><strong>' . __( 'Where does BackUpWordPress store the backup files?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'Backups are stored on your server in <code>/wp-content/backups</code>, you can change the directory.', 'backupwordpress' ). '</p>' .\n\n\t '<p>' . __( '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' ) . '</p>' .\n\n\t '<p><strong>' . __( 'What if I want to back up my site to another destination?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( '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 <a href=\"https://updraftplus.com/?afref=744\" title=\"UpdraftPlus WordPress Backups\" target=\"_blank\">UpdraftPlus WordPress Backups</a> which can do things for free BackupWordPress Premium could do on a paid basis. Click here for <a href=\"https://updraftplus.com/backupwordpress/?afref=744\" title=\"plugin comparison\" target=\"_blank\">full comparison</a>.', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'How do I restore my site from a backup?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'You need to download the latest backup file either by clicking download on the backups page or via <code>FTP</code>. <code>Unzip</code> 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 <code>phpMyAdmin</code>).', 'backupwordpress' ) . '</p>' .\n\n\t '<p>' . __( 'See this guide for more details - <a href=\"https://bwp.hmn.md/support-center/restore-backup/\" title=\"Go to support center\" target=\"_blank\">How to restore from backup</a>.', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'Does BackUpWordPress back up the backups directory?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'No.', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'I\\'m not receiving my backups by email', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( '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' ) . '</p>' .\n\n\t '<p><strong>' . __( 'How many backups are stored by default?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'BackUpWordPress stores the last 10 backups by default.', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'How long should a backup take?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( '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' ) . '</p>' .\n\n\t '<p><strong>' . __( 'What do I do if I get the wp-cron error message?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'The issue is that your <code>wp-cron.php</code> is not returning a <code>200</code> 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' ) . '</p>' .\n\n\t '<p>' . __( 'There are some things you can test to confirm this is the issue.', 'backupwordpress' ) . '</p>' .\n\n\t '<ul><li>' . __( 'Are scheduled posts working? (They use wp-cron as well.)', 'backupwordpress' ) . '</li>' .\n\n\t '<li>' . __( 'Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around.)', 'backupwordpress' ) . '</li>' .\n\n\t '<li>' . __( 'If you click manual backup, does it work?', 'backupwordpress' ) . '</li>' .\n\n\t '<li>' . __( 'Try adding <code>define( \\'ALTERNATE_WP_CRON\\', true );</code> to your <code>wp-config.php</code>. Do automatic backups work?', 'backupwordpress' ) . '</li>' .\n\n\t '<li>' . __( '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?', 'backupwordpress' ) . '</li></ul>' .\n\n\t '<p>' . __( 'For further help, please post on our <a href=\"http://wordpress.org/support/plugin/backupwordpress\" title=\"support forums\" target=\"_blank\">support forums</a>', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'How to get BackUpWordPress working in Heart Internet', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( 'The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the space between php5 and the location of the file). The file <code>wp-cron.php</code> <code>chmod</code> must be set to <code>711</code>.', 'backupwordpress' ) . '</p>' .\n\n\t '<p><strong>' . __( 'My backups seem to be failing?', 'backupwordpress' ) . '</strong></p>' .\n\n\t '<p>' . __( '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 <a href=\"http://wordpress.org/support/plugin/backupwordpress\" title=\"support forums\" target=\"_blank\">support forums</a>', 'backupwordpress' ) . '</p>';\n"
  },
  {
    "path": "admin/filesystem-credentials.php",
    "content": "<?php\n\n$_POST['action'] = 'hmbkp_request_credentials';\n$extra_fields    = array( 'action' );\n\nif ( ! isset( $_GET['creation_error'] ) ) {\n\trequest_filesystem_credentials( admin_url( 'admin-post.php' ), '', isset( $_GET['connection_error'] ), false, $extra_fields );\n}\n"
  },
  {
    "path": "admin/menu.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Add the backups menu item\n * to the tools menu\n */\nfunction admin_menu() {\n\n\tif ( is_multisite() ) {\n\t\tadd_submenu_page( 'settings.php', __( 'Manage Backups | BackUpWordPress', 'backupwordpress' ), __( 'Backups', 'backupwordpress' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'HM\\BackUpWordPress\\manage_backups' );\n\t} else {\n\t\tadd_management_page( __( 'Manage Backups', 'backupwordpress' ), __( 'Backups', 'backupwordpress' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'HM\\BackUpWordPress\\manage_backups' );\n\t}\n\n\tadd_submenu_page( null, __( 'BackUpWordPress Extensions', 'backupwordpress' ), __( 'Extensions', 'backupwordpress' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG . '_extensions', 'HM\\BackUpWordPress\\extensions' );\n\n}\nadd_action( 'network_admin_menu', 'HM\\BackUpWordPress\\admin_menu' );\nadd_action( 'admin_menu', 'HM\\BackUpWordPress\\admin_menu' );\n\n/**\n * Load the backups admin page\n * when the menu option is clicked\n *\n * @return null\n */\nfunction manage_backups() {\n\trequire_once( HMBKP_PLUGIN_PATH . 'admin/page.php' );\n}\n\n\n/**\n * Load the backups admin page\n * when the menu option is clicked\n *\n * @return null\n */\nfunction extensions() {\n\trequire_once( HMBKP_PLUGIN_PATH . 'admin/extensions.php' );\n}\n\n/**\n * Highlights the 'Backups' submenu item when on the Extensions page\n *\n * @param string $submenu_file\n * @return string $submenu_file The slug of the menu item to highlight\n */\nfunction highlight_submenu( $submenu_file ) {\n\n\t$screen = get_current_screen();\n\n\tif ( 'tools_page_' . HMBKP_PLUGIN_SLUG . '_extensions' === $screen->id ) {\n\n\t\t// Set the main plugin page to be the active submenu page\n\t\t$submenu_file = HMBKP_PLUGIN_SLUG;\n\n\t}\n\n\treturn $submenu_file;\n\n}\nadd_filter( 'submenu_file', 'HM\\BackUpWordPress\\highlight_submenu' );\n\n/**\n * Add a link to the backups page to the plugin action links.\n *\n * @param array $links\n * @param string $file\n *\n * @return array $links\n */\nfunction plugin_action_link( $links, $file ) {\n\n\tif ( false !== strpos( $file, HMBKP_PLUGIN_SLUG ) ) {\n\t\tarray_push( $links, '<a href=\"' . esc_url( HMBKP_ADMIN_URL ) . '\">' . __( 'Backups', 'backupwordpress' ) . '</a>' );\n\t}\n\n\treturn $links;\n\n}\nadd_filter( 'plugin_action_links', 'HM\\BackUpWordPress\\plugin_action_link', 10, 2 );\n\n/**\n * Add Contextual Help to Backups tools page.\n *\n * Help is pulled from the readme FAQ.\n *\n * @return null\n */\nfunction contextual_help() {\n\n\t// Pre WordPress 3.3 compat\n\tif ( ! method_exists( get_current_screen(), 'add_help_tab' ) ) {\n\t\treturn;\n\t}\n\n\tob_start();\n\trequire_once( HMBKP_PLUGIN_PATH . 'admin/constants.php' );\n\t$constants = ob_get_clean();\n\n\tob_start();\n\tinclude_once( HMBKP_PLUGIN_PATH . 'admin/faq.php' );\n\t$faq = ob_get_clean();\n\n\tget_current_screen()->add_help_tab( array(\n\t\t'title'   => __( 'FAQ', 'backupwordpress' ),\n\t\t'id'      => 'hmbkp_faq',\n\t\t'content' => wp_kses_post( $faq ),\n\t) );\n\n\tget_current_screen()->add_help_tab( array(\n\t\t'title'   => __( 'Constants', 'backupwordpress' ),\n\t\t'id'      => 'hmbkp_constants',\n\t\t'content' => wp_kses_post( $constants ),\n\t) );\n\n\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-requirements.php' );\n\n\tob_start();\n\trequire_once( HMBKP_PLUGIN_PATH . 'admin/server-info.php' );\n\t$info = ob_get_clean();\n\n\tget_current_screen()->add_help_tab(\n\t\tarray(\n\t\t\t'title'   => __( 'Server Info', 'backupwordpress' ),\n\t\t\t'id'      => 'hmbkp_server',\n\t\t\t'content' => $info,\n\t\t)\n\t);\n\n\tget_current_screen()->set_help_sidebar(\n\t\t'<p><strong>' . esc_html__( 'For more information:', 'backupwordpress' ) . '</strong></p><p><a href=\"https://github.com/xibodevelopment/backupwordpress\" target=\"_blank\">GitHub</a></p><p><a href=\"http://wordpress.org/tags/backupwordpress?forum_id=10\" target=\"_blank\">' . esc_html__( 'Support Forums', 'backupwordpress' ) . '</a></p><p><a href=\"https://translate.wordpress.org/projects/wp-plugins/backupwordpress/dev/\" target=\"_blank\">' . esc_html__( 'Help with translation', 'backupwordpress' ) . '</a></p>'\n\t);\n\n}\nadd_action( 'load-' . HMBKP_ADMIN_PAGE, 'HM\\BackUpWordPress\\contextual_help' );\n"
  },
  {
    "path": "admin/page.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n?>\n\n<div class=\"wrap\">\n\n\t<h1>\n\n\t\tBackUpWordPress\n\n\t</h1>\n\n\t<?php if ( has_server_permissions() ) : ?>\n\n\t\t<?php include_once( HMBKP_PLUGIN_PATH . 'admin/backups.php' ); ?>\n  \n\t\t<?php include_once( HMBKP_PLUGIN_PATH . 'admin/upsell.php' ); ?>\n\n\t<?php else : ?>\n\n\t\t<?php include_once( HMBKP_PLUGIN_PATH . 'admin/filesystem-credentials.php' ); ?>\n\n\t<?php endif; ?>\n\n</div>\n"
  },
  {
    "path": "admin/schedule-form-excludes.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n$excludes      = $schedule->get_excludes();\n$user_excludes = $excludes->get_user_excludes(); ?>\n\n<div class=\"hmbkp-exclude-settings\">\n\n\t<h3>\n\t\t<?php esc_html_e( 'Currently Excluded', 'backupwordpress' ); ?>\n\t</h3>\n\n\t<p>\n\t\t<?php esc_html_e( 'We automatically detect and ignore common Version Control Systems folders and other backup plugin folders.', 'backupwordpress' ); ?>\n\t</p>\n\n\t<table class=\"widefat\">\n\n\t\t<tbody>\n\n\t\t\t<?php foreach ( $user_excludes as $key => $exclude ) :\n\n\t\t\t\t$exclude_path = new \\SplFileInfo( trailingslashit( Path::get_root() ) . ltrim( str_ireplace( Path::get_root(), '', $exclude ), '/' ) ); ?>\n\n\t\t\t\t<tr>\n\n\t\t\t\t\t<th scope=\"row\">\n\n\t\t\t\t\t\t<?php if ( $exclude_path->isFile() ) : ?>\n\n\t\t\t\t\t\t\t<div class=\"dashicons dashicons-media-default\"></div>\n\n\t\t\t\t\t\t<?php elseif ( $exclude_path->isDir() ) : ?>\n\n\t\t\t\t\t\t\t<div class=\"dashicons dashicons-portfolio\"></div>\n\n\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t</th>\n\n\t\t\t\t\t<td>\n\n\t\t\t\t\t\t<code><?php echo esc_html( str_ireplace( Path::get_root(), '', $exclude ) ); ?></code>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td>\n\n\t\t\t\t\t\t<?php if (\n\t\t\t\t\t\t\t( in_array( $exclude, $excludes->get_default_excludes() ) ) ||\n\t\t\t\t\t\t\t( Path::get_path() === trailingslashit( Path::get_root() ) . untrailingslashit( $exclude ) )\n\t\t\t\t\t\t) : ?>\n\n\t\t\t\t\t\t\t<?php esc_html_e( 'Default rule', 'backupwordpress' ); ?>\n\n\t\t\t\t\t\t<?php elseif ( defined( 'HMBKP_EXCLUDE' ) && false !== strpos( HMBKP_EXCLUDE, $exclude ) ) : ?>\n\n\t\t\t\t\t\t\t<?php printf( esc_html__( 'Defined in %s', 'backupwordpress' ), 'wp-config.php' ); ?>\n\n\t\t\t\t\t\t<?php else : ?>\n\n\t\t\t\t\t\t\t<a href=\"<?php echo admin_action_url( 'remove_exclude_rule', array(\n\t\t\t\t\t\t\t\t'hmbkp_remove_exclude' => $exclude,\n\t\t\t\t\t\t\t\t'hmbkp_schedule_id'    => $schedule->get_id(),\n\t\t\t\t\t\t\t) ); ?>\" class=\"delete-action\">\n\t\t\t\t\t\t\t\t<?php esc_html_e( 'Stop excluding', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t</tr>\n\n\t\t\t<?php endforeach; ?>\n\n\t\t</tbody>\n\n\t</table>\n\n\t<h3 id=\"directory-listing\">\n\t\t<?php esc_html_e( 'Your Site', 'backupwordpress' ); ?>\n\t</h3>\n\n\t<p>\n\t\t<?php esc_html_e( '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.', 'backupwordpress' ); ?>\n\t</p>\n\n\t<?php\n\n\t// The directory to display.\n\t$directory = Path::get_root();\n\n\tif ( isset( $_GET['hmbkp_directory_browse'] ) ) {\n\n\t\t$untrusted_directory = urldecode( $_GET['hmbkp_directory_browse'] );\n\n\t\t// Only allow real sub-directories of the site root to be browsed.\n\t\tif (\n\t\t\tfalse !== strpos( $untrusted_directory, Path::get_root() ) &&\n\t\t\tis_dir( $untrusted_directory )\n\t\t) {\n\t\t\t$directory = $untrusted_directory;\n\t\t}\n\t}\n\n\t$site_size          = new Site_Size( 'file' );\n\t$excluded_site_size = new Site_Size( 'file', $excludes );\n\n\t// Kick off a recursive filesize scan.\n\t$files = list_directory_by_total_filesize( $directory, $excludes );\n\t?>\n\n\t<table class=\"widefat\">\n\n\t\t<thead>\n\n\t\t\t<tr>\n\t\t\t\t<th></th>\n\t\t\t\t<th scope=\"col\"><?php esc_html_e( 'Name', 'backupwordpress' ); ?></th>\n\t\t\t\t<th scope=\"col\" class=\"column-format\"><?php esc_html_e( 'Included Size', 'backupwordpress' ); ?></th>\n\t\t\t\t<th scope=\"col\" class=\"column-format\"><?php esc_html_e( 'Permissions', 'backupwordpress' ); ?></th>\n\t\t\t\t<th scope=\"col\" class=\"column-format\"><?php esc_html_e( 'Type', 'backupwordpress' ); ?></th>\n\t\t\t\t<th scope=\"col\" class=\"column-format\"><?php esc_html_e( 'Status', 'backupwordpress' ); ?></th>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<div class=\"dashicons dashicons-admin-home\"></div>\n\t\t\t\t</th>\n\n\t\t\t\t<th scope=\"col\">\n\n\t\t\t\t\t<?php if ( Path::get_root() !== $directory ) : ?>\n\n\t\t\t\t\t\t<a href=\"<?php echo esc_url( remove_query_arg( 'hmbkp_directory_browse' ) ); ?>\">\n\t\t\t\t\t\t\t<?php echo esc_html( Path::get_root() ); ?>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<code>/</code>\n\n\t\t\t\t\t\t<?php\n\t\t\t\t\t\t$parents = array_filter( explode(\n\t\t\t\t\t\t\t'/',\n\t\t\t\t\t\t\tstr_replace( trailingslashit( Path::get_root() ), '', trailingslashit( dirname( $directory ) ) )\n\t\t\t\t\t\t) );\n\n\t\t\t\t\t\tforeach ( $parents as $directory_basename ) : ?>\n\n\t\t\t\t\t\t\t<a href=\"<?php echo esc_url( add_query_arg( 'hmbkp_directory_browse', urlencode( substr( $directory, 0, strpos( $directory, $directory_basename ) ) . $directory_basename ) ) ); ?>\">\n\t\t\t\t\t\t\t\t<?php echo esc_html( $directory_basename ); ?>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<code>/</code>\n\n\t\t\t\t\t\t<?php endforeach; ?>\n\n\t\t\t\t\t\t<?php echo esc_html( basename( $directory ) ); ?>\n\n\t\t\t\t\t<?php else : ?>\n\n\t\t\t\t\t\t<?php echo esc_html( Path::get_root() ); ?>\n\n\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t</th>\n\n\t\t\t\t<td class=\"column-filesize\">\n\n\t\t\t\t\t<?php if ( Site_Size::is_site_size_being_calculated() ) : ?>\n\n\t\t\t\t\t\t<span class=\"spinner is-active\"></span>\n\n\t\t\t\t\t<?php else :\n\n\t\t\t\t\t\t$root          = new \\SplFileInfo( Path::get_root() );\n\t\t\t\t\t\t$size          = $site_size->filesize( $root );\n\t\t\t\t\t\t$excluded_size = $excluded_site_size->filesize( $root );\n\t\t\t\t\t\t$excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size );\n\t\t\t\t\t\t?>\n\n\t\t\t\t\t\t\t<code>\n\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t/* translators: 1: Excluded size 2: Overall site size */\n\t\t\t\t\t\t\t\tprintf(\n\t\t\t\t\t\t\t\t\tesc_html__( '%1$s of %2$s', 'backupwordpress' ),\n\t\t\t\t\t\t\t\t\t$excluded_size,\n\t\t\t\t\t\t\t\t\tsize_format( $size )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t?>\n\n\t\t\t\t\t\t\t\t<a class=\"dashicons dashicons-update\" href=\"<?php echo esc_url( wp_nonce_url( add_query_arg( 'hmbkp_recalculate_directory_filesize',  urlencode( Path::get_root() ) ), 'hmbkp-recalculate_directory_filesize' ) ); ?>\">\n\t\t\t\t\t\t\t\t\t<span><?php esc_html_e( 'Refresh', 'backupwordpress' ); ?></span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</code>\n\n\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t<td>\n\t\t\t\t\t<code><?php echo esc_html( substr( sprintf( '%o', fileperms( Path::get_root() ) ), - 4 ) ); ?></code>\n\t\t\t\t</td>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<code>\n\n\t\t\t\t\t\t<?php if ( is_link( Path::get_root() ) ) :\n\t\t\t\t\t\t\tesc_html_e( 'Symlink', 'backupwordpress' );\n\t\t\t\t\t\telseif ( is_dir( Path::get_root() ) ) :\n\t\t\t\t\t\t\tesc_html_e( 'Folder', 'backupwordpress' );\n\t\t\t\t\t\tendif; ?>\n\n\t\t\t\t\t</code>\n\n\t\t\t\t</td>\n\n\t\t\t\t<td></td>\n\n\t\t\t</tr>\n\n\t\t</thead>\n\n\t\t<tbody>\n\n\t\t<?php if ( $files ) :\n\n\t\t\tforeach ( $files as $size => $file ) :\n\n\t\t\t\t$is_excluded = $is_unreadable = false;\n\n\t\t\t\t// Check if the file is excluded.\n\t\t\t\tif ( $excludes->is_file_excluded( $file ) ) :\n\t\t\t\t\t$is_excluded = true;\n\t\t\t\tendif;\n\n\t\t\t\t// Skip unreadable files.\n\t\t\t\tif ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() ) :\n\t\t\t\t\t$is_unreadable = true;\n\t\t\t\tendif;\n\t\t\t\t?>\n\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td>\n\n\t\t\t\t\t\t<?php if ( $is_unreadable ) : ?>\n\n\t\t\t\t\t\t\t<div class=\"dashicons dashicons-dismiss\"></div>\n\n\t\t\t\t\t\t<?php elseif ( $file->isFile() ) : ?>\n\n\t\t\t\t\t\t\t<div class=\"dashicons dashicons-media-default\"></div>\n\n\t\t\t\t\t\t<?php elseif ( $file->isDir() ) : ?>\n\n\t\t\t\t\t\t\t<div class=\"dashicons dashicons-portfolio\"></div>\n\n\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td>\n\n\t\t\t\t\t\t<?php if ( $is_unreadable ) : ?>\n\n\t\t\t\t\t\t\t<code class=\"strikethrough\" title=\"<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>\">\n\t\t\t\t\t\t\t\t<?php echo esc_html( $file->getBasename() ); ?>\n\t\t\t\t\t\t\t</code>\n\n\t\t\t\t\t\t<?php elseif ( $file->isFile() ) : ?>\n\n\t\t\t\t\t\t\t<code title=\"<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>\">\n\t\t\t\t\t\t\t\t<?php echo esc_html( $file->getBasename() ); ?>\n\t\t\t\t\t\t\t</code>\n\n\t\t\t\t\t\t<?php elseif ( $file->isDir() ) : ?>\n\n\t\t\t\t\t\t\t<code title=\"<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>\">\n\t\t\t\t\t\t\t\t<a href=\"<?php echo esc_url( add_query_arg( 'hmbkp_directory_browse', urlencode( wp_normalize_path( $file->getPathname() ) ) ) ); ?>\">\n\t\t\t\t\t\t\t\t\t<?php echo esc_html( $file->getBasename() ); ?>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</code>\n\n\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td class=\"column-format column-filesize\">\n\n\t\t\t\t\t\t<?php if ( $file->isDir() && Site_Size::is_site_size_being_calculated() ) : ?>\n\t\t\t\t\t\t\t<span class=\"spinner is-active\"></span>\n\t\t\t\t\t\t<?php else :\n\t\t\t\t\t\t\t$size = $site_size->filesize( $file );\n\n\t\t\t\t\t\t\tif ( false !== $size ) :\n\n\t\t\t\t\t\t\t\t$size          = $size;\n\t\t\t\t\t\t\t\t$excluded_size = $excluded_site_size->filesize( $file ); ?>\n\n\t\t\t\t\t\t\t\t<code>\n\n\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t// Display `included of total size` info for directories and excluded files only.\n\t\t\t\t\t\t\t\t\tif ( $file->isDir() || ( $file->isFile() && $is_excluded ) ) :\n\n\t\t\t\t\t\t\t\t\t\tif ( $excluded_size ) {\n\t\t\t\t\t\t\t\t\t\t\t$excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size );\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( $size ) {\n\t\t\t\t\t\t\t\t\t\t\t$size = size_format( $size );\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t/* translators: 1: Excluded size 2: Overall directory/file size */\n\t\t\t\t\t\t\t\t\t\tprintf(\n\t\t\t\t\t\t\t\t\t\t\tesc_html__( '%1$s of %2$s', 'backupwordpress' ),\n\t\t\t\t\t\t\t\t\t\t\t$excluded_size,\n\t\t\t\t\t\t\t\t\t\t\t$size\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\telseif ( ! $is_unreadable ) :\n\t\t\t\t\t\t\t\t\t\techo esc_html( size_format( $size ) );\n\t\t\t\t\t\t\t\t\telse :\n\t\t\t\t\t\t\t\t\t\techo '-';\n\t\t\t\t\t\t\t\t\tendif; ?>\n\n\t\t\t\t\t\t\t\t</code>\n\n\t\t\t\t\t\t\t<?php else : ?>\n\n\t\t\t\t\t\t\t\t<code>--</code>\n\n\t\t\t\t\t\t\t<?php endif;\n\t\t\t\t\t\tendif;\n\t\t\t\t\t\t?>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>\n\t\t\t\t\t\t\t<?php if ( ! $is_unreadable ) :\n\t\t\t\t\t\t\t\techo esc_html( substr( sprintf( '%o', $file->getPerms() ), - 4 ) );\n\t\t\t\t\t\t\telse :\n\t\t\t\t\t\t\t\techo '-';\n\t\t\t\t\t\t\tendif; ?>\n\t\t\t\t\t\t</code>\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>\n\t\t\t\t\t\t<?php if ( $file->isLink() ) : ?>\n\t\t\t\t\t\t\t<span title=\"<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>\">\n\t\t\t\t\t\t\t\t<?php esc_html_e( 'Symlink', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<?php elseif ( $file->isDir() ) :\n\t\t\t\t\t\t\tesc_html_e( 'Folder', 'backupwordpress' );\n\t\t\t\t\t\telse :\n\t\t\t\t\t\t\tesc_html_e( 'File', 'backupwordpress' );\n\t\t\t\t\t\tendif; ?>\n\t\t\t\t\t\t</code>\n\t\t\t\t\t</td>\n\n\t\t\t\t\t<td class=\"column-format\">\n\n\t\t\t\t\t\t<?php if ( $is_unreadable ) : ?>\n\n\t\t\t\t\t\t\t<strong title=\"<?php esc_attr_e( 'Unreadable files won\\'t be backed up.', 'backupwordpress' ); ?>\">\n\t\t\t\t\t\t\t\t<?php esc_html_e( 'Unreadable', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t</strong>\n\n\t\t\t\t\t\t<?php elseif ( $is_excluded ) : ?>\n\n\t\t\t\t\t\t\t<strong><?php esc_html_e( 'Excluded', 'backupwordpress' ); ?></strong>\n\n\t\t\t\t\t\t<?php else :\n\n\t\t\t\t\t\t\t$exclude_path = $file->getPathname();\n\n\t\t\t\t\t\t\t// Excluded directories need to be trailingslashed.\n\t\t\t\t\t\t\tif ( $file->isDir() ) :\n\t\t\t\t\t\t\t\t$exclude_path = trailingslashit( wp_normalize_path( $file->getPathname() ) );\n\t\t\t\t\t\t\tendif; ?>\n\n\t\t\t\t\t\t\t<a href=\"<?php echo esc_url( wp_nonce_url(\n\t\t\t\t\t\t\t\tadd_query_arg( array(\n\t\t\t\t\t\t\t\t\t'hmbkp_schedule_id'      => $schedule->get_id(),\n\t\t\t\t\t\t\t\t\t'action'                 => 'hmbkp_add_exclude_rule',\n\t\t\t\t\t\t\t\t\t'hmbkp_exclude_pathname' => urlencode( $exclude_path ),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tadmin_url( 'admin-post.php' )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t'hmbkp-add-exclude-rule',\n\t\t\t\t\t\t\t\t'hmbkp-add-exclude-rule-nonce'\n\t\t\t\t\t\t\t) ); ?>\" class=\"button-secondary\">\n\t\t\t\t\t\t\t\t<?php esc_html_e( 'Exclude &rarr;', 'backupwordpress' ); ?>\n\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t<?php endif; ?>\n\n\t\t\t\t\t</td>\n\n\t\t\t\t</tr>\n\n\t\t\t<?php endforeach; ?>\n\n\t\t<?php else : ?>\n\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t<span class=\"description\"><?php esc_html_e( 'This folder is empty', 'backupwordpress' ); ?></span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\n\t\t<?php endif; ?>\n\n\t\t</tbody>\n\n\t</table>\n\n\t<p class=\"submit\">\n\t\t<a href=\"<?php echo esc_url( get_settings_url() ) ?>\" class=\"button-primary\">\n\t\t\t<?php esc_html_e( 'Done', 'backupwordpress' ); ?>\n\t\t</a>\n\t</p>\n\n</div>\n"
  },
  {
    "path": "admin/schedule-form.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n?>\n\n<h3><?php esc_html_e( 'Settings', 'backupwordpress' ); ?></h3>\n\n<?php $hmbkp_form_errors = get_settings_errors(); ?>\n\n<?php if ( ! empty( $hmbkp_form_errors ) ) { ?>\n\n\t<div id=\"hmbkp-warning\" class=\"error settings-error\">\n\n\t\t<?php foreach ( $hmbkp_form_errors as $error ) { ?>\n\t\t\t<p><strong><?php echo wp_kses_data( $error ); ?></strong></p>\n\t\t<?php } ?>\n\n\t</div>\n\n<?php }\n\n// We can clear them now we've displayed them\nclear_settings_errors();\n\n?>\n\n<form method=\"post\" action=\"<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>\">\n\n\t<input type=\"hidden\" name=\"hmbkp_schedule_id\" value=\"<?php echo esc_attr( $schedule->get_id() ); ?>\" />\n\t<input type=\"hidden\" name=\"action\" value=\"hmbkp_edit_schedule_submit\" />\n\n\t<?php wp_nonce_field( 'hmbkp-edit-schedule', 'hmbkp-edit-schedule-nonce' ); ?>\n\n\t<table class=\"form-table\">\n\n\t\t<tbody>\n\n\t\t\t<tr valign=\"top\">\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_type\"><?php _e( 'Backup', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<select name=\"hmbkp_schedule_type\" id=\"hmbkp_schedule_type\">\n\n\t\t\t\t\t\t<option<?php selected( $schedule->get_type(), 'complete' ); ?> value=\"complete\"><?php _e( 'Both Database &amp; files', 'backupwordpress' ); ?></option>\n\n\t\t\t\t\t\t<option<?php selected( $schedule->get_type(), 'file' ); ?> value=\"file\"><?php _e( 'Files only', 'backupwordpress' ); ?></option>\n\n\t\t\t\t\t\t<option<?php selected( $schedule->get_type(), 'database' ); ?> value=\"database\"><?php _e( 'Database only', 'backupwordpress' ); ?></option>\n\n\t\t\t\t\t</select>\n\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<tr>\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_recurrence_type\"><?php _e( 'Schedule', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<select name=\"hmbkp_schedule_recurrence[hmbkp_type]\" id=\"hmbkp_schedule_recurrence_type\">\n\n\t\t\t\t\t\t<option value=\"manually\"><?php _e( 'Manual Only', 'backupwordpress' ); ?></option>\n\n\t\t\t\t\t\t<?php foreach ( get_cron_schedules() as $cron_schedule => $cron_details ) : ?>\n\n\t\t\t\t\t\t\t\t<option <?php selected( $schedule->get_reoccurrence(), $cron_schedule ); ?> value=\"<?php echo esc_attr( $cron_schedule ); ?>\">\n\n\t\t\t\t\t\t\t\t\t<?php esc_html_e( $cron_details['display'], 'backupwordpress' ); ?>\n\n\t\t\t\t\t\t\t\t</option>\n\n\t\t\t\t\t\t<?php endforeach; ?>\n\n\t\t\t\t\t</select>\n\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<?php if ( ! $start_time = $schedule->get_schedule_start_time( false ) ) :\n\t\t\t\t$start_time = time();\n\t\t\tendif; ?>\n\n\t\t\t<?php $start_date_array = date_parse( date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $start_time ) ); ?>\n\n\t\t\t<tr id=\"start-day\" class=\"recurring-setting\">\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_start_day_of_week\"><?php _e( 'Start Day', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<select id=\"hmbkp_schedule_start_day_of_week\" name=\"hmbkp_schedule_recurrence[hmbkp_schedule_start_day_of_week]\">\n\n\t\t\t\t\t\t<?php $weekdays = array(\n\t\t\t\t\t\t\t'monday'    => __( 'Monday',    'backupwordpress' ),\n\t\t\t\t\t\t\t'tuesday'   => __( 'Tuesday',   'backupwordpress' ),\n\t\t\t\t\t\t\t'wednesday' => __( 'Wednesday', 'backupwordpress' ),\n\t\t\t\t\t\t\t'thursday'  => __( 'Thursday',  'backupwordpress' ),\n\t\t\t\t\t\t\t'friday'    => __( 'Friday',    'backupwordpress' ),\n\t\t\t\t\t\t\t'saturday'  => __( 'Saturday',  'backupwordpress' ),\n\t\t\t\t\t\t\t'sunday'    => __( 'Sunday',    'backupwordpress' ),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tforeach ( $weekdays as $key => $day ) : ?>\n\n\t\t\t\t\t\t\t<option value=\"<?php echo esc_attr( $key ) ?>\" <?php selected( strtolower( date_i18n( 'l', $start_time ) ), $key ); ?>><?php echo esc_html( $day ); ?></option>\n\n\t\t\t\t\t\t<?php endforeach; ?>\n\n\t\t\t\t\t</select>\n\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<tr id=\"start-date\" class=\"recurring-setting\">\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_start_day_of_month\"><?php _e( 'Start Day of Month', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\t\t\t\t\t<input type=\"number\" min=\"0\" max=\"31\" step=\"1\" id=\"hmbkp_schedule_start_day_of_month\" name=\"hmbkp_schedule_recurrence[hmbkp_schedule_start_day_of_month]\" value=\"<?php echo esc_attr( $start_date_array['day'] ); ?>\">\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<tr id=\"schedule-start\" class=\"recurring-setting\">\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_start_hours\"><?php _e( 'Start Time', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<span class=\"field-group\">\n\n\t\t\t\t\t\t<label for=\"hmbkp_schedule_start_hours\"><input type=\"number\" min=\"0\" max=\"23\" step=\"1\" name=\"hmbkp_schedule_recurrence[hmbkp_schedule_start_hours]\" id=\"hmbkp_schedule_start_hours\" value=\"<?php echo esc_attr( $start_date_array['hour'] ); ?>\">\n\n\t\t\t\t\t\t<?php _e( 'Hours', 'backupwordpress' ); ?></label>\n\n\t\t\t\t\t\t<label for=\"hmbkp_schedule_start_minutes\"><input type=\"number\" min=\"0\" max=\"59\" step=\"1\" name=\"hmbkp_schedule_recurrence[hmbkp_schedule_start_minutes]\" id=\"hmbkp_schedule_start_minutes\" value=\"<?php echo esc_attr( $start_date_array['minute'] ); ?>\">\n\n\t\t\t\t\t\t<?php _e( 'Minutes', 'backupwordpress' ); ?></label>\n\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<p class=\"description\">\n\t\t\t\t\t\t<?php esc_html_e( '24-hour format.', 'backupwordpress' ); ?>\n\t\t\t\t\t\t<span class=\"twice-js <?php if ( $schedule->get_reoccurrence() !== 'fortnightly' ) { ?> hidden<?php } ?>\"><?php _e( 'The second backup will run 12 hours after the first.', 'backupwordpress' ); ?><span>\n\t\t\t\t\t</p>\n\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<tr>\n\n\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t<label for=\"hmbkp_schedule_max_backups\"><?php _e( 'Number of backups to store on this server', 'backupwordpress' ); ?></label>\n\t\t\t\t</th>\n\n\t\t\t\t<td>\n\n\t\t\t\t\t<input type=\"number\" id=\"hmbkp_schedule_max_backups\" name=\"hmbkp_schedule_max_backups\" min=\"1\" step=\"1\" value=\"<?php echo esc_attr( $schedule->get_max_backups() ); ?>\" />\n\n\t\t\t\t\t<p class=\"description\">\n\n\t\t\t\t\t\t<?php printf( __( 'Past this limit older backups will be deleted automatically.', 'backupwordpress' ) ); ?>\n\n\t\t\t\t\t\t<?php\n\n\t\t\t\t\t\t$site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() );\n\n\t\t\t\t\t\tif ( $site_size->is_site_size_cached() ) :\n\t\t\t\t\t\t\tprintf( __( 'This schedule will store a maximum of %s of backups.', 'backupwordpress' ), '<code>' . esc_html( size_format( $site_size->get_site_size() * $schedule->get_max_backups() ) ) . '</code>' );\n\t\t\t\t\t\tendif; ?>\n\n\t\t\t\t\t</p>\n\n\t\t\t\t</td>\n\n\t\t\t</tr>\n\n\t\t\t<?php foreach ( Services::get_services( $schedule ) as $service ) :\n\t\t\t\t$service->field();\n\t\t\tendforeach; ?>\n\n\t\t</tbody>\n\n\t</table>\n\n\t<?php submit_button( __( 'Done', 'backupwordpress' ) ); ?>\n\n</form>\n"
  },
  {
    "path": "admin/schedule-sentence.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n$filesize = get_site_size_text( $schedule );\n\n// Backup Type\n$type = strtolower( human_get_type( $schedule->get_type() ) );\n\n// Backup Time\n$day = date_i18n( 'l', $schedule->get_next_occurrence( false ) );\n\n// Next Backup\n$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 ) ) ) ) . '\"';\n\n// Backup status\n$status = new Backup_Status( $schedule->get_id() );\n\n// Backup Re-occurrence\nswitch ( $schedule->get_reoccurrence() ) :\n\n\tcase 'hourly' :\n\n\t\t$reoccurrence = date_i18n( 'i', $schedule->get_next_occurrence( false ) ) === '00' ? '<span ' . $next_backup . '>' . __( 'hourly on the hour', 'backupwordpress' ) . '</span>' : sprintf( __( 'hourly at %s minutes past the hour', 'backupwordpress' ), '<span ' . $next_backup . '>' . intval( date_i18n( 'i', $schedule->get_next_occurrence( false ) ) ) ) . '</span>';\n\n\tbreak;\n\n\tcase 'daily' :\n\n\t\t$reoccurrence = sprintf( __( 'daily at %s', 'backupwordpress' ), '<span ' . $next_backup . '>' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '</span>' );\n\n\tbreak;\n\n\tcase 'twicedaily' :\n\n\t\t$times[] = date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) );\n\t\t$times[] = date_i18n( get_option( 'time_format' ), strtotime( '+ 12 hours', $schedule->get_next_occurrence( false ) ) );\n\n\t\tsort( $times );\n\n\t\t$reoccurrence = sprintf( __( 'every 12 hours at %1$s &amp; %2$s', 'backupwordpress' ), '<span ' . $next_backup . '>' . esc_html( reset( $times ) ) . '</span>', '<span>' . esc_html( end( $times ) ) ) . '</span>';\n\n\tbreak;\n\n\tcase 'weekly' :\n\n\t\t$reoccurrence = sprintf( __( 'weekly on %1$s at %2$s', 'backupwordpress' ), '<span ' . $next_backup . '>' .esc_html( $day ) . '</span>', '<span>' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '</span>' );\n\n\tbreak;\n\n\tcase 'fortnightly' :\n\n\t\t$reoccurrence = sprintf( __( 'every two weeks on %1$s at %2$s', 'backupwordpress' ), '<span ' . $next_backup . '>' . $day . '</span>', '<span>' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '</span>' );\n\n\tbreak;\n\n\tcase 'monthly' :\n\n\t\t$reoccurrence = sprintf( __( 'on the %1$s of each month at %2$s', 'backupwordpress' ), '<span ' . $next_backup . '>' . esc_html( date_i18n( 'jS', $schedule->get_next_occurrence( false ) ) ) . '</span>', '<span>' . esc_html( date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '</span>' );\n\n\tbreak;\n\n\tcase 'manually' :\n\n\t\t$reoccurrence = __( 'manually', 'backupwordpress' );\n\n\tbreak;\n\n\tdefault :\n\n\t\t$reoccurrence = __( 'manually', 'backupwordpress' );\n\t\t$schedule->set_reoccurrence( 'manually' );\n\nendswitch;\n\n$server = '<code title=\"' . __( 'Check the help tab to learn how to change where your backups are stored.', 'backupwordpress' ) . '\">' . esc_attr( str_replace( Path::get_home_path(), '', Path::get_path() ) ) . '</code>';\n\n// Backup to keep\nswitch ( $schedule->get_max_backups() ) :\n\n\tcase 1 :\n\n\t\t$backup_to_keep = sprintf( __( 'store the most recent backup in %s', 'backupwordpress' ), $server );\n\n\tbreak;\n\n\tcase 0 :\n\n\t\t$backup_to_keep = sprintf( __( 'don\\'t store any backups in on this server', 'backupwordpress' ), Path::get_path() );\n\n\tbreak;\n\n\tdefault :\n\n\t\t$backup_to_keep = sprintf( __( 'store the last %1$s backups in %2$s', 'backupwordpress' ), esc_html( $schedule->get_max_backups() ), $server );\n\nendswitch;\n\n$email_msg = '';\n$services = array();\n\nforeach ( Services::get_services( $schedule ) as $file => $service ) {\n\n\tif ( is_wp_error( $service ) ) {\n\t\t$email_msg = $service->get_error_message();\n\t} elseif ( 'Email' === $service->name ) {\n\t\t$email_msg = wp_kses_post( $service->display() );\n\t} elseif ( $service->is_service_active() && $service->display() ) {\n\t\t$services[] = esc_html( $service->display() );\n\t}\n}\n\nif ( ! empty( $services ) && count( $services ) > 1 ) {\n\t$services[ count( $services ) -2 ] .= ' & ' . $services[ count( $services ) -1 ];\n\tarray_pop( $services );\n} ?>\n\n<div class=\"hmbkp-schedule-sentence<?php if ( $status->get_status() ) { ?> hmbkp-running<?php } ?>\">\n\n\t<?php $sentence = sprintf( _x( 'Backup my %1$s %2$s %3$s, %4$s.', '1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to store', 'backupwordpress' ), '<span>' . esc_html( $type ) . '</span>', $filesize, $reoccurrence, $backup_to_keep );\n\n\tif ( $email_msg ) {\n\t\t$sentence .= ' ' . $email_msg;\n\t}\n\n\tif ( ! empty( $services ) ) {\n\t\t$sentence .= ' ' . sprintf( __( 'Send a copy of each backup to %s.', 'backupwordpress' ), implode( ', ', $services ) );\n\t}\n\n\techo $sentence; ?>\n\n\t<?php if ( Schedules::get_instance()->get_schedule( $schedule->get_id() ) ) :\n\t\tschedule_status( $schedule );\n\tendif; ?>\n\n\t<?php require( HMBKP_PLUGIN_PATH . 'admin/schedule-settings.php' ); ?>\n\n</div>\n\n<?php\n\n/**\n * Returns a formatted string containing the calculated total site size or a message\n * to indicate it is being calculated.\n *\n * @param HM\\BackUpWordPress\\Scheduled_Backup $schedule\n *\n * @return string\n */\nfunction get_site_size_text( Scheduled_Backup $schedule ) {\n\n\tif ( isset( $_GET['hmbkp_add_schedule'] ) ) {\n\t\treturn '';\n\t}\n\n\t$site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() );\n\n\tif ( 'database' === $schedule->get_type() || $site_size->is_site_size_cached() ) {\n\t\treturn sprintf(\n\t\t\t'(<code title=\"' . __( 'Backups will be compressed and should be smaller than this.', 'backupwordpress' ) . '\">%s</code>)',\n\t\t\tesc_html( $site_size->get_formatted_site_size() )\n\t\t);\n\t}\n\n\treturn '';\n}\n"
  },
  {
    "path": "admin/schedule-settings.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nif ( Schedules::get_instance()->get_schedule( $schedule->get_id() ) ) { ?>\n\n\t<div class=\"hmbkp-schedule-actions row-actions\">\n\n\t\t<?php if ( is_backup_possible() ) : ?>\n\n\t\t\t<a class=\"hmbkp-run\" href=\"<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ), 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' ) ); ?>\"><?php _e( 'Run now', 'backupwordpress' ); ?></a>  |\n\n\t\t<?php endif; ?>\n\n\t\t<a href=\"<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_settings', 'hmbkp_schedule_id' => $schedule->get_id() ), get_settings_url() ), 'hmbkp-edit-schedule' ); ?>\"><?php _e( 'Settings', 'backupwordpress' ); ?></a> |\n\n\t\t<?php\n\n\t\t// Only show excludes if we are backing up files\n\t\tif ( 'database' !== $schedule->get_type() ) : ?>\n\t\t\t<a href=\"<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_excludes', 'hmbkp_schedule_id' => $schedule->get_id() ), get_settings_url() ) ); ?>\"><?php _e( 'Excludes', 'backupwordpress' ); ?></a> |\n\t\t<?php endif; ?>\n\n\t\t<?php foreach ( Services::get_services( $schedule ) as $service ) :\n\n\t\t\tif ( ! $service->has_form() ) {\n\t\t\t\tcontinue;\n\t\t\t} ?>\n\n\t\t\t<a href=\"<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_settings_' . $service->get_slug(), 'hmbkp_schedule_id' => $schedule->get_id() ), get_settings_url() ) ); ?>\"><?php echo esc_html( $service->name ); ?></a> |\n\n\t\t<?php endforeach; ?>\n\n\t\t<a class=\"delete-action\" href=\"<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_request_delete_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-post.php' ) ), 'hmbkp_delete_schedule', 'hmbkp_delete_schedule_nonce' ) ); ?>\"><?php _e( 'Delete', 'backupwordpress' ); ?></a>\n\n\t</div>\n\n<?php } ?>\n\n<?php if ( ! isset( $_GET['action'] ) || 'hmbkp_edit_schedule' !== $_GET['action'] || ! isset( $_GET['hmbkp_panel'] ) ) {\n\treturn;\n} ?>\n\n<div class=\"hmbkp-schedule-settings\">\n\n\t<?php if ( 'hmbkp_edit_schedule' === $_GET['action'] && 'hmbkp_edit_schedule_settings' === $_GET['hmbkp_panel'] ) :\n\t\trequire( HMBKP_PLUGIN_PATH . 'admin/schedule-form.php' );\n\tendif; ?>\n\n\t<?php if ( 'hmbkp_edit_schedule' === $_GET['action'] && 'hmbkp_edit_schedule_excludes' === $_GET['hmbkp_panel'] ) :\n\t\trequire( HMBKP_PLUGIN_PATH . 'admin/schedule-form-excludes.php' );\n\tendif; ?>\n\n\t<?php // Show the service form if we are viewing one\n\tforeach ( Services::get_services( $schedule ) as $service ) : ?>\n\n\t\t<?php if ( 'hmbkp_edit_schedule' === $_GET['action'] && 'hmbkp_edit_schedule_settings_' . $service->get_slug() === $_GET['hmbkp_panel'] ) : ?>\n\n\t\t\t<h3><?php echo esc_html( $service->name ); ?></h3>\n\n\t\t\t<?php $hmbkp_form_errors = get_settings_errors();\n\n\t\t\tif ( ! empty( $hmbkp_form_errors ) ) :\n\n\t\t\t\t?>\n\n\t\t\t\t<div id=\"hmbkp-warning\" class=\"error settings-error\">\n\n\t\t\t\t\t<?php foreach ( $hmbkp_form_errors as $error ) : ?>\n\t\t\t\t\t\t<p><strong><?php echo esc_html( $error ); ?></strong></p>\n\t\t\t\t\t<?php endforeach; ?>\n\n\t\t\t\t</div>\n\n\t\t\t<?php endif;\n\n\t\t\t// We can clear them now we've displayed them\n\t\t\tclear_settings_errors(); ?>\n\n\t\t\t<form method=\"post\" action=\"<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>\">\n\n\t\t\t\t<input type=\"hidden\" name=\"hmbkp_schedule_id\" value=\"<?php echo esc_attr( $schedule->get_id() ); ?>\" />\n\t\t\t\t<input type=\"hidden\" name=\"action\" value=\"hmbkp_edit_schedule_services_submit\" />\n\n\t\t\t\t<?php wp_nonce_field( 'hmbkp-edit-schedule-services', 'hmbkp-edit-schedule-services-nonce' ); ?>\n\n\t\t\t\t<?php $service->form(); ?>\n\n\t\t\t\t<?php submit_button( __( 'Done', 'backupwordpress' ) ); ?>\n\n\t\t\t</form>\n\n\t\t\t<?php break; ?>\n\n\t\t<?php endif; ?>\n\n\t<?php endforeach; ?>\n\n</div>\n"
  },
  {
    "path": "admin/server-info.php",
    "content": "<?php\n\nforeach ( HM\\BackUpWordPress\\Requirements::get_requirement_groups() as $group ) : ?>\n\n\t<h3><?php echo esc_html( ucwords( $group ) ); ?></h3>\n\n\t<table class=\"fixed widefat\">\n\n\t\t<tbody>\n\n\t\t<?php foreach ( HM\\BackUpWordPress\\Requirements::get_requirements( $group ) as $requirement ) : ?>\n\n\t\t\t<?php if ( ( is_string( $requirement->raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) ) : ?>\n\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td><?php echo esc_html( $requirement->name() ); ?></td>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code><?php echo esc_html( $requirement->result() ); ?></code>\n\t\t\t\t\t</td>\n\n\t\t\t\t</tr>\n\n\t\t\t<?php elseif ( is_array( $requirement->raw_result() ) ) : ?>\n\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td><?php echo esc_html( $requirement->name() ); ?></td>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<ul>\n\n\t\t\t\t\t\t\t<pre><?php var_export( $requirement->raw_result() ); ?></pre>\n\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t<?php else : ?>\n\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t<?php echo esc_html( $requirement->name() ); ?>\n\t\t\t\t\t\t<pre><?php echo esc_html( $requirement->result() ); ?></pre>\n\t\t\t\t\t</td>\n\n\t\t\t\t</tr>\n\n\t\t\t<?php endif; ?>\n\n\t\t<?php endforeach; ?>\n\n\t\t</tbody>\n\n\t</table>\n\n<?php endforeach;\n\nforeach ( HM\\BackUpWordPress\\Services::get_services() as $file => $service ) :\n\techo wp_kses_post( call_user_func( array( $service, 'intercom_data_html' ) ) );\nendforeach;\n"
  },
  {
    "path": "admin/upsell.php",
    "content": "<?php namespace HM\\BackUpWordPress; ?>\n<div class=\"hmbkp-upsell\">\n\n<?php\n/** translators:  the 1st placeholder is the first part of the anchor tag with the link to the plugin review page and the second is the closing anchor tag */\n$cta_message = sprintf(\n\t__( 'If you\\'re finding BackUpWordPress useful, please %1$s rate it on the plugin directory%2$s.', 'backupwordpress' ),\n\t'<a target=\"_blank\" href=\"http://wordpress.org/support/view/plugin-reviews/backupwordpress\">',\n\t'</a>'\n);\n$hide_notice = get_site_option( 'hmbkp_hide_rate_notice', false );\nif(empty($hide_notice) || time() >= $hide_notice) {\n?>\n<div id=\"hmbkp-cta-message\" class=\"updated rate notice is-dismissible\">\n    <p><?php echo wp_kses_post( $cta_message ); ?></p>\n    <button type=\"button\" class=\"notice-dismiss\"><span class=\"screen-reader-text\"><?php esc_html_e( 'Dismiss this notice.', 'backupwordpress' ); ?></span></button>\n</div>\n\n</div>\n<?php\n}"
  },
  {
    "path": "assets/hmbkp.css",
    "content": "/*Constants Tab*/\n.hmbkp_active td:first-child > code:before { content: \"\\00a0 \\2713  \"; font-size: 11px; }\n.hmbkp_active { background: #E5F7E8; }\n\n/*Fix the bottom margin for warning messages in the admin*/\ndiv#hmbkp-warning, h2.nav-tab-wrapper + div[id^=\"hmbkp\"] { margin: 20px 0 15px; }\nh2 + div[id^=\"hmbkp\"] input { max-width: 100%; }\n\nli 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; }\n\n.hmbkp-upsell { margin-top: 40px; padding-top: 16px; border-top: 1px solid #ccc; }\n\n.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 ); }\n.hmbkp-schedule-sentence::before { content: \"\\2714\"; margin-right: 10px; width: 16px; height: 60px; display: block; float: left; }\n.hmbkp-schedule-sentence.hmbkp-error:before { content: \"\\2718\"; }\n.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; }\n.hmbkp-schedule-sentence .hmbkp-status { display: none; font-size: 12px; color: #666; margin: 2px 0 0 30px; }\n.hmbkp-schedule-sentence.hmbkp-running .hmbkp-status { display: block; }\n.hmbkp-schedule-sentence.hmbkp-running .hmbkp-schedule-actions { display: none; }\n.hmbkp-schedule-sentence *:not(a)[title] { border-bottom: 1px dotted #CCC; cursor: help; }\n.hmbkp-schedule-sentence .hmbkp-status[title] { border-bottom: none; }\n.hmbkp-schedule-sentence .submit { padding: 0; }\n.hmbkp-schedule-sentence .hmbkp-schedule-actions { visibility: visible; font-size: 12px; margin: 0 0 0 26px; padding: 10px 0 0; }\n.hmbkp-schedule-actions a { white-space: nowrap; }\n.hmbkp-schedule-sentence .row-actions { position: static; }\n\n.hmbkp-schedule-settings { border-top: 1px solid #e5e5e5; margin: 20px -20px -20px; background-color: #f5f5f5; padding: 0 20px 20px; }\n\n.hmbkp-ajax-loading, button.hmbkp-ajax-loading { padding-left: 20px; position: relative; }\n.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; }\n\n.delete-action { color: #a00; transition: all 300ms ease; }\n.delete-action:hover .delete-action:focus { color: red; transition: all 300ms ease; }\n\n.strikethrough { text-decoration: line-through; }\n\ntable.widefat tbody tr:nth-child(odd) { background-color: #f9f9f9 }\n.hmbkp-exclude-settings td:first-child, .hmbkp-exclude-settings th:first-child { width: 20px; padding-right: 0 }\n.hmbkp-exclude-settings thead tr:last-child { background-color: #f9f9f9; }\n.hmbkp-exclude-settings table .button-secondary { line-height: 18px; height: 20px; }\nthead td { border-bottom: 1px solid #e1e1e1; }\n.hmbkp-exclude-settings table .spinner { display: block; float: left; margin: 0; }\n.hmbkp-schedule-settings .column-format code { white-space: nowrap; }\n\n.column-filesize code { position: relative; }\n.column-filesize .dashicons-update { display: none; overflow: hidden; position: absolute; width: 100%; left: 0; text-align: center; background-color: rgba( 255, 255, 255, .8 ) }\n.column-filesize .dashicons-update span { display: none; }\n.column-filesize:hover .dashicons-update { display: inline-block; }\n\n.hmbkp-exclude-settings td span.reason { color: #CCC; }\n\n.server-info { overflow: auto; max-height: 50%; outline: black 1px solid; }\n.server-info pre { max-height: 100px; overflow-x:hidden; }\n\n.page-title-action span.dashicons-admin-users { position: relative; display:inline-block; vertical-align: middle; top:-2px; }\n\npre { background-color: #eee; padding: 10px; white-space: pre; max-height: 320px; overflow: auto; word-wrap: normal !important; }\n\n@media screen and (max-width: 768px) {\n\n    .wrap h2 {\n        padding: 10px 0 0 0;\n    }\n\n    .hmbkp-schedule-sentence::before { height: 80px; }\n\n    h2 .nav-tab {\n        display: block;\n        padding: 10px;\n        margin: 0;\n    }\n\n    .hmbkp-schedule-sentence {\n        margin: 10px 0;\n        padding: 10px;\n    }\n    #intercom-info { display: none; }\n    .hmbkp-schedule-settings { padding: 0 10px 10px; }\n    .hmbkp-exclude-settings table { margin: 0 -10px; border-left: none; border-right: none; width: calc(100% + 20px) }\n    .hmbkp-exclude-settings tr > *:first-child { display: none; }\n    .hmbkp-schedule-settings tr *:nth-child(4), .hmbkp-schedule-settings tr *:nth-child(5) { display: none; }\n    .hmbkp-schedule-settings thead tr:nth-child(2) { display: none; }\n    .hmbkp-schedule-settings { margin-left: -10px; margin-right: -10px; margin-bottom: -10px; }\n    table.widefat tbody tr:nth-child(even) { background-color: #fff }\n    table.widefat tbody tr:nth-child(odd) { background-color: #f9f9f9 }\n\n}\n"
  },
  {
    "path": "assets/hmbkp.js",
    "content": "var BackUpWordPressAdmin = (function($){\n\t'use strict';\n\n\tvar recurrenceType;\n\n\tfunction init(){\n\n\t\trecurrenceType = $( 'select#hmbkp_schedule_recurrence_type' );\n\t\t// Don't ever cache ajax requests\n\t\t$.ajaxSetup( {'cache': false} );\n\n\t\tif ( recurrenceType.length ) {\n\n\t\t\thmbkpToggleScheduleFields( recurrenceType.val() );\n\n\t\t\t$( document ).on( 'change', 'select#hmbkp_schedule_recurrence_type', function () {\n\t\t\t\thmbkpToggleScheduleFields( $( this ).val() );\n\t\t\t} );\n\n\t\t}\n\n\t\t$('.notice.is-dismissible').on('click', '.notice-dismiss', function(){\n\t\t\t$.post(\n\t\t\t\tajaxurl,\n\t\t\t\t{\n\t\t\t\t\t'action': 'hmbkp_dismiss_notice'\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t\t\n\t\t$('.notice.rate.is-dismissible').on('click', '.notice-dismiss', function(){\n\t\t\t$.post(\n\t\t\t\tajaxurl,\n\t\t\t\t{\n\t\t\t\t\t'action': 'hmbkp_dismiss_rate_notice'\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\n\t\t// Show delete confirm message for delete schedule\n\t\t$( document ).on( 'click', '.hmbkp-schedule-actions .delete-action', function ( e ) {\n\n\t\t\tif ( ! confirm( hmbkp.delete_schedule ) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t} );\n\n\t\t// Show delete confirm message for delete backup\n\t\t$( document ).on( 'click', '.hmbkp_manage_backups_row .delete-action', function ( e ) {\n\n\t\t\tif ( ! confirm( hmbkp.delete_backup ) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t} );\n\n\t\t// Show delete confirm message for remove exclude rule\n\t\t$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form .delete-action', function ( e ) {\n\n\t\t\tif ( ! confirm( hmbkp.remove_exclude_rule ) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t} );\n\n\t\t// Test the cron response using ajax\n\t\t$.post( ajaxurl, {'nonce': hmbkp.nonce, 'action': 'hmbkp_cron_test'},\n\t\t        function ( data ) {\n\t\t\t        if ( data !== '1' ) {\n\t\t\t\t        $( '.wrap > h2' ).after( data );\n\t\t\t        }\n\t\t        }\n\t\t);\n\n\t\t// Run a backup\n\t\t$( document ).on( 'click', '.hmbkp-run', function ( e ) {\n\t\t\twp.heartbeat.interval( 'fast' );\n\t\t\t$( this ).closest( '.hmbkp-schedule-sentence' ).addClass( 'hmbkp-running' );\n\n\t\t\t$( '.hmbkp-error' ).removeClass( 'hmbkp-error' );\n\n\t\t\tvar scheduleId = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );\n\n\t\t\t$.post(\n\t\t\t\t\tajaxurl,\n\t\t\t\t\t{\n\t\t\t\t\t\t'hmbkp_run_schedule_nonce': hmbkp.hmbkp_run_schedule_nonce,\n\t\t\t\t\t\t'action': 'hmbkp_run_schedule',\n\t\t\t\t\t\t'hmbkp_schedule_id': scheduleId\n\t\t\t\t\t}\n\t\t\t);\n\n\t\t\te.preventDefault();\n\n\t\t} );\n\n\t\t// Send the schedule id with the heartbeat\n\t\t$( document ).on( 'heartbeat-send', function ( e, data ) {\n\n\t\t\tdata.hmbkp_schedule_id = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );\n\n\t\t\tif ( $( '.hmbkp-schedule-sentence.hmbkp-running' ).length ) {\n\t\t\t\tdata.hmbkp_is_in_progress = true;\n\t\t\t} else {\n\t\t\t\tdata.hmbkp_client_request = 'site_size';\n\t\t\t}\n\n\t\t} );\n\n\t\t// Update schedule status on heartbeat tick\n\t\t$( document ).on( 'heartbeat-tick', function ( e, data ) {\n\n\t\t\t// If the schedule has finished then reload the page\n\t\t\tif ( data.hmbkp_schedule_status === 0 && ! $( '.hmbkp-error' ).length ) {\n\t\t\t\tlocation.reload( true );\n\t\t\t}\n\n\t\t\t// If the schedule is still running then update the schedule status\n\t\t\tif ( ( data.hmbkp_schedule_status !== 0 ) && ( data.hmbkp_schedule_status !== undefined ) ) {\n\t\t\t\t$( '.hmbkp-status' ).replaceWith( data.hmbkp_schedule_status );\n\t\t\t}\n\n\t\t\tif ( ( data.hmbkp_site_size !== undefined ) && ( $( 'code.calculating' ).length ) ) {\n\t\t\t\t$( 'code.calculating' ).text( data.hmbkp_site_size );\n\t\t\t\tvar excludes = $( '.hmbkp-exclude-settings' );\n\t\t\t\tif ( excludes.length ) {\n\t\t\t\t\texcludes.replaceWith( data.hmbkp_dir_sizes );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t\t// Closing ThickBox Modal Window\n\t\t$( document ).on( 'click', '.hmbkp-thickbox-close', function ( e ) {\n\n\t\t\te.preventDefault();\n\t\t\twindow.parent.tb_remove();\n\n\t\t} );\n\n\t\t$( document ).on( 'click', '[id^=\"hmbkp-warning-\"] .notice-dismiss', function(){\n\t\t\t$.post(\n\t\t\t\tajaxurl,\n\t\t\t\t{\n\t\t\t\t\t'action': 'hmbkp_dismiss_error'\n\t\t\t\t}\n\t\t\t);\n\t\t} );\n\n\t}\n\n\tfunction hmbkpToggleScheduleFields( recurrence ) {\n\n\t\trecurrence = (\n\t\t\t\ttypeof recurrence !== 'undefined'\n\t\t) ? recurrence : 'manually';\n\n\t\tvar settingFields = jQuery( '.recurring-setting' );\n\t\tvar scheduleSettingFields = jQuery( '#schedule-start' );\n\t\tvar twiceDailyNote = jQuery( '.twice-js' );\n\n\t\tswitch ( recurrence ) {\n\n\t\t\tcase 'manually':\n\t\t\t\tsettingFields.hide();\n\t\t\t\tbreak;\n\n\t\t\tcase 'hourly' :\n\t\t\t\tsettingFields.hide();\n\t\t\t\tbreak;\n\n\t\t\tcase 'daily' :\n\t\t\t\tsettingFields.hide();\n\t\t\t\tscheduleSettingFields.show();\n\t\t\t\ttwiceDailyNote.hide();\n\t\t\t\tbreak;\n\n\t\t\tcase 'twicedaily' :\n\t\t\t\tsettingFields.hide();\n\t\t\t\tscheduleSettingFields.show();\n\t\t\t\ttwiceDailyNote.show();\n\t\t\t\tbreak;\n\n\t\t\tcase 'weekly' : // fall through\n\t\t\tcase 'fortnightly' :\n\t\t\t\tsettingFields.hide();\n\t\t\t\tjQuery( '#start-day' ).show();\n\t\t\t\tscheduleSettingFields.show();\n\t\t\t\ttwiceDailyNote.hide();\n\t\t\t\tbreak;\n\n\t\t\tcase 'monthly' :\n\t\t\t\tsettingFields.hide();\n\t\t\t\tscheduleSettingFields.show();\n\t\t\t\tjQuery( '#start-date' ).show();\n\t\t\t\ttwiceDailyNote.hide();\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tinit: init\n\t};\n\n})(jQuery);\n\njQuery( document ).ready( BackUpWordPressAdmin.init );\n"
  },
  {
    "path": "backdrop/README.md",
    "content": "# Backdrop\nBackdrop is a simple library that does one thing: allows you to run one-off\ntasks in the background.\n\n## How to Use\n```php\nfunction my_awesome_function( $id ) {\n\t// Download initial data to my site. Might take a long time!\n\t$data = wp_remote_get( 'http://example.com/' . $id );\n\n\tif ( is_wp_error( $data ) ) {\n\t\treturn $data;\n\t}\n\n\tupdate_option( 'initial_data', $data );\n}\n\nadd_action( 'init', function () {\n\tif ( ! get_option( 'initial_data' ) ) {\n\t\t$task = new \\HM\\Backdrop\\Task( 'my_awesome_function', get_current_user_id() );\n\t\t$task->schedule();\n\t}\n} );\n```\n\n## API\n### `Task::__construct( $callback [, $...] )`\nCreating a new task sets up all of the internal data for your task. Pass in your\ncallback followed by your arguments to the function, and Backdrop will call it\nin a background process.\n\n#### Arguments\n* `$callback`: Callback method you want to use. Can be any callable type\n  (including object methods and static methods) **except for anonymous\n  functions**. Closures cannot be serialized, so they cannot be used for\n  Backdrop callbacks. This is an internal PHP limitation.\n* `$...`: Any other arguments you'd like to pass to your callback, as variable\n  arguments. e.g. `new Task( 'a', 'b', 'c', 'd' )` maps to `a( 'b', 'c', 'd' )`\n\n#### Return Value\nNone (constructor).\n\n### `Task::schedule()`\nSchedules your task to run. Typically runs after your page has been rendered, in\na separate process.\n\nBackdrop de-duplicates tasks based on the arguments passed in. For example, you\ncan do `new Task( 'myfunc', 1 )` on every request, and only one will be run.\nAfter this has been run, the next call will schedule again.\n\nTo avoid this, you should pass in unique identifiers as needed. Everything that\nmakes your task unique should be passed in and used by your function, as global\nstate may change.\n\n#### Arguments\nNone.\n\n#### Return Value\nEither `true`, or a `WP_Error` on failure. The error object will indicate the\ntype of error; typically this is a `hm_backdrop_scheduled` if the task is\nalready scheduled to run or is currently running.\n\n### `Task::is_scheduled()`\nChecks whether your task is scheduled to run.\n\n#### Arguments\nNone.\n\n#### Return Value\nBoolean indicating whether your task is scheduled to run, or is already running.\n\n#### `Task::cancel()`\nCancels a previously scheduled task.\n\nNote that if the task is already running, this will not cancel execution; it\nsimply removes it from the tasks scheduled to run.\n\n#### Arguments\nNone.\n\n#### Return Value\nEither `true`, or a `WP_Error` on failure. The error object will indicate the\ntype of error; typically this is a `hm_backdrop_not_scheduled` if the task\nhasn't been scheduled.\n\n## Compatibility\nBackdrop is compatible with PHP 5.2 and upwards.\n\n### PHP 5.2\nUse the `HM_Backdrop_Task` class (and `HM_Backdrop_Server`).\n\n**Important note:** If subclassing `HM_Backdrop_Server` with 5.2 compatibility,\nyou *must* reimplement the `spawn` method, as PHP 5.2 does not include late\nstatic bindings. This is automatically handled for 5.3+.\n\nHere's a minimal implementation that you can use:\n\n```\nclass MyBackdrop_Server extends HM_Backdrop_Server {\n\tpublic static function spawn() {\n\t\treturn self::spawn_run( __CLASS__ );\n\t}\n}\n```\n\n### PHP 5.3+\nUse the `HM\\Backdrop\\Task` class (and `HM\\Backdrop\\Server`). You can also import\nthe classes with the `use` keyword; for example, `use HM\\Backdrop\\Task` will\nallow you to create tasks with `new Task`.\n\n## License\nBackdrop is licensed under the GPL version 2.\n\nCopyright 2014 Human Made Limited\n"
  },
  {
    "path": "backdrop/hm-backdrop.php",
    "content": "<?php\n\nrequire dirname( __FILE__ ) . '/server.php';\nrequire dirname( __FILE__ ) . '/task.php';\n\nif ( version_compare( PHP_VERSION, '5.3', '>=' ) ) {\n\trequire dirname( __FILE__ ) . '/namespace.php';\n\tadd_action( 'wp_ajax_nopriv_hm_backdrop_run', 'HM\\Backdrop\\Server::spawn' );\n}\nelse {\n\tadd_action( 'wp_ajax_nopriv_hm_backdrop_run', 'HM_Backdrop_Server::spawn' );\n}\n"
  },
  {
    "path": "backdrop/license.txt",
    "content": "\n                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "backdrop/namespace.php",
    "content": "<?php\n\nnamespace HM\\Backdrop;\n\nclass Server extends \\HM_Backdrop_Server {}\nclass Task extends \\HM_Backdrop_Task {}"
  },
  {
    "path": "backdrop/server.php",
    "content": "<?php\n\nclass HM_Backdrop_Server {\n\tpublic function run() {\n\t\tif ( empty( $_POST['key'] ) ) {\n\t\t\treturn new WP_Error( 'hm_backdrop_no_key', __( 'No key supplied', 'hm_backdrop' ) );\n\t\t}\n\n\t\t$data = get_transient( 'hm_backdrop-' . $_POST['key'] );\n\t\tif ( empty( $data ) ) {\n\t\t\treturn new WP_Error( 'hm_backdrop_invalid_key', __( 'Supplied key was not valid', 'hm_backdrop' ) );\n\t\t}\n\n\t\t$result = call_user_func_array( $data['callback'], $data['params'] );\n\t\tdelete_transient( 'hm_backdrop-' . $_POST['key'] );\n\n\t\tif ( is_wp_error( $result ) ) {\n\t\t\treturn $result;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic static function spawn() {\n\t\t$class = get_class();\n\t\tif ( function_exists( 'get_called_class' ) ) {\n\t\t\t$class = get_called_class();\n\t\t}\n\n\t\treturn call_user_func( array( $class, 'spawn_run' ), $class );\n\t}\n\n\tprotected static function spawn_run( $class ) {\n\t\t$server = new $class();\n\t\t$server->run();\n\t\texit;\n\t}\n}\n"
  },
  {
    "path": "backdrop/task.php",
    "content": "<?php\n\nclass HM_Backdrop_Task {\n\tprotected $key;\n\tprotected $callback;\n\tprotected $params = array();\n\n\tpublic function __construct( $callback /* , $... */ ) {\n\t\t$this->callback = $callback;\n\n\t\tif ( func_num_args() > 1 ) {\n\t\t\t$args = func_get_args();\n\t\t\t$this->params = array_slice( $args, 1 );\n\t\t}\n\n\t\t$this->key = $this->get_unique_id();\n\t}\n\n\tpublic function schedule() {\n\n\t\tif ( $this->is_scheduled() ) {\n\t\t\treturn new WP_Error( 'hm_backdrop_scheduled', __( 'Task is already scheduled to run', 'hm_backdrop' ) );\n\t\t}\n\n\t\t$data = array(\n\t\t\t'callback' => $this->callback,\n\t\t\t'params' => $this->params\n\t\t);\n\t\tset_transient( 'hm_backdrop-' . $this->key, $data, 300 );\n\t\tadd_action( 'shutdown', array( $this, 'spawn_server' ) );\n\n\t\treturn true;\n\t}\n\n\tpublic function is_scheduled() {\n\t\treturn (bool) $this->get_data();\n\t}\n\n\tpublic function cancel() {\n\t\tif ( ! $this->is_scheduled() ) {\n\t\t\treturn new WP_Error( 'hm_backdrop_not_scheduled', __( 'Task is not scheduled to run', 'hm_backdrop' ) );\n\t\t}\n\n\t\tdelete_transient( 'hm_backdrop-' . $this->key );\n\t\treturn true;\n\t}\n\n\tpublic function spawn_server() {\n\t\t$server_url = admin_url( 'admin-ajax.php' );\n\t\t$data = array(\n\t\t\t'action' => 'hm_backdrop_run',\n\t\t\t'key'    => $this->key,\n\t\t);\n\t\t$args = array(\n\t\t\t'body' => $data,\n\t\t\t'timeout' => 0.01,\n\t\t\t'blocking' => false,\n\t\t\t'sslverify' => apply_filters( 'https_local_ssl_verify', false ),\n\t\t);\n\t\twp_remote_post( $server_url, $args );\n\t\treturn true;\n\t}\n\n\tprotected function get_data() {\n\t\treturn get_transient( 'hm_backdrop-' . $this->key );\n\t}\n\n\tprotected function get_unique_id() {\n\t\treturn substr( sha1( serialize( $this->callback ) . serialize( $this->params ) ), -28 );\n\t}\n}\n"
  },
  {
    "path": "backupwordpress.php",
    "content": "<?php\n/*\nPlugin Name: BackUpWordPress\nPlugin URI: https://updraftplus.com/backupwordpress/?afref=744\nDescription: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, you'll find me under the Network Settings menu.\nVersion: 3.10\nAuthor: XIBO Ltd\nAuthor URI: https://profiles.wordpress.org/xibodevelopment\nLicense: GPL-2+\nLicense URI: http://www.gnu.org/licenses/gpl-2.0.txt\nText Domain: backupwordpress\nDomain Path: /languages\nNetwork: true\n*/\n\n/*\nCopyright 2011 - 2018 XIBO Ltd\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n*/\n\n// Only load if >= PHP 5.3\n\n\nif ( ! defined( 'HMBKP_PLUGIN_PATH' ) ) {\n\tdefine( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );\n}\n\nif ( ! defined( 'HMBKP_BASENAME' ) ) {\n\tdefine( 'HMBKP_BASENAME', plugin_basename( __FILE__ ) );\n}\n\nrequire_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' );\n\nregister_activation_hook( __FILE__, array( 'HMBKP_Setup', 'activate' ) );\nregister_deactivation_hook( __FILE__, array( 'HMBKP_Setup', 'deactivate' ) );\n\nif ( HMBKP_Setup::meets_requirements() ) {\n\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-plugin.php' );\n} else {\n\tadd_action( 'admin_init', array( 'HMBKP_Setup', 'self_deactivate' ) );\n\tadd_action( 'all_admin_notices', array( 'HMBKP_Setup', 'display_admin_notices' ) );\n}\n"
  },
  {
    "path": "bin/readme.txt",
    "content": "=== BackUpWordPress ===\nContributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance, dnutbourne, snightingale\nTags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment\nRequires at least: 3.9\nTested up to: 5.1\nStable tag: 3.10\n\nSimple automated backups of your WordPress-powered website.\n\n== Description ==\n\nBackupWordPress 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.\nWe'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/)\n\nHowever, 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.\nFor 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). \n\nBackUpWordPress 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!\n\nThis plugin requires PHP version 5.3.2 or later\n\n= Features =\n\n* Super simple to use, no setup required.\n* Works in low memory, \"shared host\" environments.\n* Manage multiple schedules.\n* Option to have each backup file emailed to you.\n* Uses `zip` and `mysqldump` for faster backups if they are available.\n* Works on Linux & Windows Server.\n* Exclude files and folders from your backups.\n* Good support should you need help.\n* Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque.\n\n= Help develop this plugin =\n\nThe 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/)\n= Translations =\n\nWe'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.\n\n== Installation ==\n\n1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server.\n2. Activate the plugin.\n3. Sit back and relax safe in the knowledge that your whole site will be backed up every day.\n\nThe 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.\n\n== Frequently Asked Questions ==\n\n\n**Where does BackUpWordPress store the backup files?**\n\nBackups are stored on your server in `/wp-content/backups`, you can change the directory.\n\nImportant: 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.\n\n**What if I want to back up my site to another destination?**\n\nWe 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).\n\n**How do I restore my site from a backup?**\n\nYou 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`).\n\n**Does BackUpWordPress back up the backups directory?**\n\nNo.\n\n**I'm not receiving my backups by email**\n\nMost 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.\n\n**How many backups are stored by default?**\n\nBackUpWordPress stores the last 10 backups by default.\n\n**How long should a backup take?**\n\nUnless 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.\n\n**What do I do if I get the wp-cron error message?**\n\nThe 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.\n\nThere are some things you can test to confirm this is the issue.\n\n\t * Are scheduled posts working? (They use wp-cron as well.)\n\n\t * Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around.)\n\n\t * If you click manual backup, does it work?\n\n\t * Try adding `define( 'ALTERNATE_WP_CRON', true );` to your `wp-config.php`. Do automatic backups work?\n\n\t * 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?\n\n**How to get BackUpWordPress working in Heart Internet**\n\nThe 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`.\n\n**My backups seem to be failing?**\n\nIf 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 <a href=\"http://wordpress.org/support/plugin/backupwordpress\" title=\"support forums\" target=\"_blank\">support forums</a>.\n\n**Further Support & Feedback**\n\nGeneral support questions should be posted in the <a href=\"http://wordpress.org/tags/backupwordpress?forum_id=10\">WordPress support forums, tagged with backupwordpress.</a>\n\nFor development issues, feature requests or anybody wishing to help out with development checkout <a href=\"https://github.com/orgs/xibodevelopment/backupwordpress/\">BackUpWordPress on GitHub.</a>\n\n== Screenshots ==\n\n1. Manage multiple schedules.\n2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email.\n3. Easily manage exclude rules and see exactly which files are included and excluded from your backup.\n\n== Upgrade Notice ==\n\n= 3.4 =\n\n* This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write\nunit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows\nusers should see major improvements to reliability.\n\n= 3.3.4 =\n\n* WordPress 4.4 compatibility.\n\n= 3.3.1 =\n\n* Fixes a bug that would prevent downloading backups since 3.3.0 - please update.\n\n= 3.2.5 =\n\n* Security fixes related to add_query_arg\n\n= 3.2.1 =\n\n* Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups.\n\n= 3.1.3 =\n\n* Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons.\n\n= 3.0.4 =\n\n* Fixes a few minor bugs. Immediate update is recommended.\n\n= 3.0.2 =\n\n* 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\n\n= 3.0.1 =\n\n* This is a critical update. Fixes a bug in the core backup library. Please update immediately.\n\n== Changelog ==\n\n### 3.10 / 2019-06-12\n\n* Fixed whitelist-html\n\n### 3.9 / 2019-06-10\n\n* Readme update\n\n### 3.8 / 2018-11-01\n\n* GNU Wording change\n\n### 3.7.2 / 2018-10-29\n\n* Check remove intercomm links\n\n### 3.7.1 / 2018-09-11\n\n* Fixed admin notices\n\n### 3.7 / 2018-08-30\n\n* Updated readme to reflect ownership changes\n* Stripped out support and premium links\n\n### 3.6.4 / 2016-06-02\n\n* Various improvements to exclusion handling.\n* i18n improvements.\n* Misc. UI improvements.\n\n### 3.6.3.1 / 2016-12-14\n\n* Fix issue where low disk space caused the admin interface to be unavailable\n* Fix issue where admin notices were causing databases and error logs to fill up\n* Improves file size calculations\n* Improves remaining disk space calculations\n* Improves file exclusion methods\n* Misc admin interface improvements\n* Misc code quality improvements and bug fixes\n\n### 3.6.2 / 2016-08-02\n\n* Improves admin performance.\n* Improves security in internationalised strings.\n\n### 3.6.1 / 2016-04-26\n\n* Bug fixes/improvements in disk space calculation\n* Misc bug fixes\n\n### 3.6.0 / 2016-03-31\n\n* Fix a bug caused by using a function incompatible with min PHP version requirements\n* Misc code quality improvements and bug fixes\n* Fix bugs in the code responsible for admin notices\n* Display disk space info\n* Uninstall cleanup\n* Introduce a dedicated extensions page\n\n### 3.5 / 2016-03-10\n\n* Reduce duplication and improve code readability when echoing filesizes\n* Improve how filesizes are handled in the Your Site list\n* Switch to storing site size data in a file, large sites could cause database errors when saving the option\n* Re-remove the PHP User and Group Requirements\n* Check that the backup file exists before attempting to check it's contents\n* Only call getPerms on readable files to ensure we avoid a fatal error\n* Ensure error are correctly check in verify_backup\n* Use Symfony Process instead of shell_exec for all our system calls\n* More unit tests\n* Update dependencies\n* Detect disabled functions defined in php.ini, now accounts for different separators.\n\n### 3.4.5 / 2016-02-23\n\n* Fix fatal error on upgrade\n\n### 3.4.4 / 2016-02-23\n\n* Ensure temporary files are correctly cleaned up before and after running a backup.\n* Avoid killing site if plugin is active on PHP 52\n* Allow custom secure key using filter\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.4-beta\n\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.3\n\n* Fix a bug where backups were not downloadable when WordPress installed in a subdirectory\n\n### 3.4.2\n\n* Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled.\n* Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling.\n* Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them.\n* 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.\n\n### 3.4.1\n\n* Fix a possible `PHP Warning` in the Schedule Sentence.\n\n### 3.4 / 2016/01/20\n\n* Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage.\n* Vastly improved Windows Server support.\n* We no longer write errors and warnings to files on disk.\n* Update to the latest version of `symfony/finder`.\n* Update to the latest version of `ifsnop/mysqldump-php`.\n\n### 3.3.4 / 2015-12-10\n\n* Fixes styling issues with WordPress 4.4\n\n### 3.3.3 / 2015-11-13\n\n* Fix broken Intercom support window\n* Fixes Typos in i18n strings\n* Backups finish faster\n* Fix an issue that caused the site size to report as twice as large as it should\n* Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`)\n\n### 3.3.2 / 2015-10-15\n\n* Misc improvements\n\n### 3.3.1 / 2015-10-12\n\n* Fix false positive error message.\n* Fix broken download links\n\n### 3.3.0 / 2015-10-09\n\n* Dropped support for PclZip\n* Fixed duplicate cron schedule interval names ( props ucavus )\n* Corrected some typos, grammar and punctuation ( props ucavus )\n* Fixed a bug in the WP CLI command ( props duritong )\n* Better message for wp-cron related errors\n* Replace 'bi-weekly' with less confusing wording\n* Fixed a few errors misc reported by code quality tool\n* Total site size display now subtracts excludes\n* Many general improvements and bug fixes\n\n#### 3.2.7 / 2015-07-27\n\n* Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful\n* Simply output arrays rather than trying to be too clever about it\n* Start tracking PDO availability through Intercom\n* Catch database and files shell_exec warnings\n* Test under PHP 5.6 in Travis\n* Use the new backupwordpress@hmn.md email address everywhere\n* Clarify how people request access to Slack and GlotPress\n* Rewrite our contributing guidelines to be more comprehensive\n* Add instructions to contributing.md\n* Revert plugin name as it doesn't make a diff in search results\n* Always return an integer\n\n#### 3.2.6 / 2015-06-09\n\n* Fixes admin page slug for multisite\n\n#### 3.2.5 / 2015-04-29\n\n* Fixes an issue when evaluating expression with empty\n* Fixes a fatal error on PHP 5.3\n* Displays other notices\n* Updates stable tag\n* Adds some escaping and sanitizing\n* Defines plugins dir for different environments\n* Adds tests for activation and deactivation hooks\n* Adds a debugging function for tests\n* Symlinks plugin into tests dir\n* Splits out deactivation code into separate functions\n* Fixes activation and deactivation hooks not being fired\n* Exclude backups folder from size calculation\n* Fixes a misplaced parenthesis\n* Fixes how error messages are bubbled up\n* get home path should return defined value\n* Removes redundant exclude statement as CVS folders are excluded by default\n* Adds a flag parameter to allow get_files to return all files including default excludes\n\n#### 3.2.4 / 2015-04-01\n\n* Fixes default exclude pattern that was too greedy.\n\n#### 3.2.3 / 2015-04-01\n\n* Fixes issue where files where 'cache' files were excluded by default.\n* Updates brazilian portuguese translations.\n* Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative.\n\n#### 3.2.2 / 2015-03-25\n\n* Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version.\n\n#### 3.2.1 / 2015-03-25\n\n* Check if shell_exec is available before running command\n* Only validate day of month if this is the schedule type\n* Make FS optional and fix the DB connect method\n* (issue-770) Exclude the folder, not the wildcard\n* (issue-751) Rename plugin\n\n#### 3.2 / 2015-03-16\n\n* (issue-698) skip mySql bug\n* Use shell_exec\n* Remove use statement\n* Revert to using shell_exec\n* Remove Process\n* (cool-runnings-757) Add back session_write_close\n* (issue-479) Hide hours and minutes for hourly backups\n* (backupception) Only load if main site on multisite\n* (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths\n* (socket-to-me-one-more-time) Fix paths\n* Use socket if available\n* Display errors\n* Put the db dump in the archive first - fixes issue with large archive\n* Dont wait for response\n* Run schedule as a Backdrop task\n* Pass array directly to function\n* (issue-759) Fix require paths\n* check PHP version before anything else\n* Move plugin class to own file\n* Skip mysql bug error\n* Delete all BWP options\n* Start the process\n* Return and check WP_Error\n* (what-time-is-backup) Extract hours and minutes from the date as an array for display\n* Change plugin description if multisite\n* Use wp_get_sites\n* Add a comment\n* We check for this on plugin instantiation\n* Revert to clearing schedule and rescheduling\n* Delete schedules and leftover options from subsites\n* Ensure plugin only runs on main site\n* Fix Too Many Schedules\n* Use Symfony Process\n* (fix-incorrect-type-error) File is an SPL object so get path\n* Set root as default param\n* Delete backdrop transient\n* Force directory sizes recalculation\n* Define VCS abbr\n* Hide exclude patterns from Excludes list.\n* Check if user can connect\n* Test that the mysqldump command works\n* Add a couple of mysql versions\n* Automatically exclude VCS folders\n* Calculate Root size correctly\n* Get default rules from backup object\n* Do not auto ignore dot files\n* Count excluded\n* Do not count excluded\n* If its the root then return its size directly\n* Fix typo in transient names\n* Set and return class property instead\n* List default excludes as such\n* Require symfony finder\n* Clear transients on deactivate\n* Get list of files with Finder\n* Load composer packages\n* These are alredy filtered\n* Add some default excludes\n* Use absolute path for excludes added via UI\n* Fix tests\n* Fix conditional\n* Fix syntax error in travis YML\n* Run codesniffer only on pull requests\n* Update tested WP versions\n* Change min WP version required to match travis CI\n* Fix readme changelog placement\n* Add condtion for Cron and Ajax\n* Fix deactivate logic\n* Fixes recursive exclusion of files\n\n\n#### 3.1.4 / 2015-02-24\n\n* (upgrade-options) Bump version\n* strtolower is redundant\n* Upgrade routine - renames service settings to avoid backslashes.\n* Use the Service name as the setting name\n* Clear settings for schedule settings\n* Fixes bug in displaying settings error notices\n* Update version number\n* Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons\n* Leave bare minimum to avoid fatal error\n* remove old main plugin class\n\n#### 3.1.3 / 2015-02-04\n\n* Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade.\n\n#### 3.1.2 / 2015-02-03\n\n* (simplify-bwp-file-timestamp) Simplify the file name timestamp\n* Fix class file name\n* (fixup-setup-class) Add missing transients to uninstall routine\n* switch Travis notifications to Slack instead of Hipchat\n* Do not delete backups on uninstall\n* wrap in parenthesis\n* Fix include paths after moving uninstall to own file herpderp\n* Update BackUp class include\n* Add all cases to switch\n* Pass scanned files sizes through conform_dir()\n* Fix some classes and requires\n* (origin/issue-684, issue-684) Fix namespaces\n* Remove unnecessary wildcard from regex\n* (crazy-refactor) Remove some duplication\n* Formatting\n* Fix Class name\n* Blank line\n* Uses a DirectoryIterator to delete files\n* Remove tests for now\n* Fix stable tag number\n* Revert to using uninstall.php\n* Add tests for uninstall and deactivate\n* Remove double lie break\n* Remove double line break\n* Remove phpdocumentor\n* We still need to require some scripts...\n* We dont need to check for this constant in the hook callback\n* Use get_col to directly have an array of schedule option names\n* Remove namespacing\n* Remove debugging\n* Make the uninstall, activation and deactivation hooks work\n* (change-singleton-implementation) Change the singleton implementation to not use the static() function\n* path argument interfers with wp-cli path argument.\n* Fix some scrutinizer issues, mostly major ones\n* Consistent default name for database dumps\n* Major 5.3 re-factoring fun\n* Minor code formatting\n* else if should be elseif\n* Update the WP_CLI command to fix some issues\n* Add support for copying and updating an existing backups\n\n#### 3.1.0 / 2015-01-13\n\n* Correct $response1 variable\n* (origin/issue-652, issue-652) Suppress warnings from filesystem functions\n* Remove debugging function\n* (origin/issue-475, issue-475) Fix a French string\n* Format the intercom data better\n* Load Intercom in the admin footer\n* Fix some HTML issues\n* Add a function that returns a given option value\n* Return Unknown if no average exists or invalid\n* Add a start parameter to function\n* Pass in the start time as a parameter\n* Make strings translatable\n* Escape values\n* Adds a function to track backup duration and another to display it\n* Adds Average Backup Duration Info\n* Improve display of arrays\n* Fixes open_basedir warnings\n* Replace spaces with tabs for indentation\n* (wp-cron-test-improvements) Improve the reliability of the wp-cron test\n* Pop in the directory sizes\n* Adapt heartbeat pulse\n* Update Javascript\n* Update constant name\n* Load the default translations so that activation error message is in user language\n* Fix a few translatable strings\n* Update French translations\n* Re-uglify Intercom js\n* Use provided callback argument to determine current screen\n* remove deprecated code\n* Only show notices on BWP admin page\n* Fix class name\n* Make function public for now\n* Get an instance of BWP to load functions\n* Fix conditional\n* Show admin notice if fails to meet requirements\n* Remove unneeded function\n* Fix references\n* Refactor main class after addition of the Setup class\n* Introduce a setup class\n* Determine if we need to run a cleanup routine\n* Introduce a custom hook for addons\n* Refactor main plugin file into a singleton class\n* Bring activation and deactivation into main plugin class\n* css changes to fix support button alignment\n* Fixes issue preventing backups from running without JS\n* Remove back compat memory limit define\n* Refactor HMBKP_Notices to support non-persistant notices\n* Minor refactor for PHP minimum requirements notice\n* Clear previous backup notices when running a new backup\n* Fix issues with custom paths\n* Improved singleton pattern\n* Display errors in network admin\n* Change to text input so multiple email address are supported\n* Removes HTML tag from string\n* Account for new schedule\n* Make upsell sentence translatable\n* fix return type\n* Return true if transient exists\n* Check if constant is defined\n* Request the site size via heartbeat send\n* Pass site size through heartbeat\n* Only calculate if necessary\n\n#### 3.0.4 / 2014-12-10\n\n  * Simplify the backup count display\n  * Enqueue scripts properly\n  * Change how we check directory_sizes\n  * Add BackUpWordPress test case class\n  * Move class to separate file\n  * Group help tab display functions\n  * Update POT file\n  * Make strings ready for translation\n\n#### 3.0.3 / 2014-12-06\n\n  * Add French translations\n  * Update textdomain\n  * Fix deleted function\n  * Use HM_Backup function to determine if shell_exec is enabled\n  * Check if file is readable first\n  * Fix how we kick off Task\n  * Remove unused var\n  * Call recursive filescanner on admin page load\n  * Update package.json\n  * Update the POT file task params\n  * Replace hmbkp with backupwordpress as textdomain\n  * Exclude folders\n  * Add Grunt task options\n  * Remove hard line returns\n  * Display placeholder if exec fails\n  * Add 30 second time diff allowance\n  * Use $TRAVIS_BUILD_DIR\n  * we do this in travis.yml\n  * Regenerate github account info\n  * Update command to reflect function rename\n  * Update tests to reflect function name change\n  * Rename function\n  * Filter tests to run\n  * Fix group flags\n  * Calculate site size on page load\n\n#### 3.0.2 / 2014-12-02\n\n  * Bump version\n  * Add parenthesis to require_once\n  * Remove disk space info\n  * Attempt to fix build\n  * define WP_TESTS_DIR\n  * Make sure current_action fnction is loaded\n  * Remove extra slashes and semicolons\n  * Remove the custom webhook service\n  * Better default WP_TESTS_DIR\n  * move trailingslash calls out of the loop for performance\n  * Minor code cleanup\n  * Correct path for hm-backup so it's tests are run\n  * add composer.lock\n  * Use scrutinizer code coverage\n  * add waffle.io badge\n  * Use up to date commands for coverage\n  * Add code rating\n  * Don't test 5.2\n  * Update readme.md\n  * excluded_dirs is deprecated\n  * Update scrutinizer config\n  * Add composer config and dev dependencies\n  * Make PHPUnit generate an XML for coveralls\n  * Add scrutinizer config\n  * Ignore vendor dir\n  * Add a link to Help page\n  * Move to activation hook\n  * Bump up required WP version\n  * Escape all the things\n  * Save errors to a notices option\n  * Reload page on errors\n  * Remove script\n  * Remove unneeded class\n  * Check PHP version on plugins loaded\n  * Check PHP version on activate\n  * Update readme\n  * Set required version to 5.3.2\n  * Update tests\n  * Allow for a 30 second delta in asserting schedule time\n  * Use the new build env on Travis\n  * Restrict plugin to be network only\n  * Fix admin URL logic\n  * Formatting\n  * Update readme changelog\n\n#### 3.0.1 / 2014-11-20\n\n  * remove uneeded images\n  * latest hm-backup / fixes a serious bug in backups.\n  * Typos in v 3.0 changelog\n  * Specify POT filename in grunt task\n  * Update POT file\n  * Markdown readme\n  * Regenerate readme\n  * Add plugin headers\n\n#### 3.0 / 2014-11-14\n\n  * Refactor the recursive filesize scanner\n  * correct text domain\n  * Remove unneede statements\n  * reload the excludes filelist in the correct place when someone excludes a file\n  * Latest backdrop\n  * Regenerate minified CSS\n  * Regenerate minified JS\n  * Fix cancel backup action\n  * WordPress Coding Standards\n  * Exit early if incompatible version of WordPress\n  * Update translations\n  * Update changelog\n\n#### 3.0.0-beta / 2014-09-08\n\n  * Load minified CSS\n  * Formatting\n  * Biweekly wording\n  * Add missing period\n  * use nonce_url instead of manually adding the nonce query param\n  * close the settings form when done\n  * Design changes as per ticket\n  * Start tracking langauge in server info\n  * Right align the primary button in the enable support modal\n  * Re-factor the directory filesize code to use a single array instead of thoussands of transients\n  * 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\n  * switch to using a single transient to store directory filesize data\n  * Add an anchor link\n  * Add error message\n  * Rename function\n  * Prefix GET params\n  * Update exclude rule action\n  * Adds function for building admin action urls\n  * fix vertical scroll\n  * Adds some functions to manage settings form submission errors\n  * Rename nonce and action\n  * fetch errors to display\n  * Form submission handling for BWP and add-ons settings\n  * Use a new function that persists form submission errors to  a transient\n  * None check\n  * Pass the nonce around in the ajax request\n  * Enable support action links\n  * Check nonces\n  * Modify action URLs to use the admin_post hook\n  * Remove unneeded code\n  * New line at end\n  * Use admin_post hook\n  * Display schedule start time in local timezone\n  * Add an action hook that gives access to consumers to the backup progress\n * Update translatable strings POT file\n * Bump version\n * Update min WP version and tested up to\n * accidently used dash instead of underscore\n * namespaced option and added option to uninstall.php\n * basic show/hide of premium upsell\n * Fix incorrect transient expiry\n * Show the spinner in the tab if a schedule other than the current is running\n * Snip snip\n * Bring back the some javascript enhancements\n * Switch to the PHP 5.2 compatible version of Backdrop\n * Finish up support\n * Brace up single line if's and foreach's\n * Only load minified scripts and styles if WP_DEBUG isn't on\n * Load the minified css and js files by default\n * Remove the combined css files as we only have one now. Stop loading colorbox.\n * Remove colorbox\n * Improvements\n * More improvements\n * Don't die when directly running a backup on page load\n * Re-factor the backup filesize calculation\n * make capability filterable\n * use core capabilities instead of custom\n * Switch to Backdrop\n * Fix typo in prefix\n * Hook function onto admin_post\n * Update delete link\n * Bookmark current admin page for redirect\n * Add custom capabilities and role\n * Exclude BackUpWP by default\n * Ignore the build folder\n * Add more build excludes\n * minify JS\n * generate markdown readme\n * minify css\n * combine css\n * regenerate readme\n * Make links consistent for the grunt task\n * Convert URLS to markdown\n * Update lang files\n * Add colorbox as bower dependency\n * remove colorbox folder\n * Remove colorbox submodule\n * Change how we include FAQ\n * Add readme partials\n * Add package.json\n * Add Gruntfile\n * Add bower.json\n * JSHint rules\n * remove from ignore\n * Update ignore list\n * Add bower config\n * Add FAQ strings\n * Return the cached directory size early if we have it\n * Re-factor the file browser scanner\n * correct sprintf usage\n * Handle saving service forms\n * Codeing standards\n * Move the error check outside of the foreach\n * Remove uneeded $is_tab_visible\n * Only show excludes for backups which include files\n * Show destinations in the list of schedule links\n * WordPress standard modal for enabling support\n * Remove extra slash in include path\n * Add a heading to the settings form\n * More work on excludes\n * Another todo\n * Add some todos\n * Don't include the parent directory in a browsable list\n * More work on Excludes\n * Switch to only storing 3 backups by default\n * More work on redesign\n * commented out enable support button till we figure out what to do with it\n * made tabs responsive below 639px\n * More work on redesign\n * Add more default excludes\n * Correctly highlight the tab for the first schedule\n * Switch to tabs instead of subsubsub\n * First bash at a redesign settings UX\n\n#### 2.6.2\n\n* 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.\n\n#### 2.6.1\n\n* Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch.\n* Fix an issues that could cause schedule times to fail to account for timezone differences.\n* Add a nonce check to the schedule settings.\n* Fix a possible JS warning when removing an exclude rule.\n* Our unit tests now run in PHP 5.2 again.\n\n#### 2.6\n\n* It's now possible to choose the time and day that your schedule will run on.\n* Introduces several new unit tests around schedule timings.\n* Fixes a bug that could cause the hourly schedule to run constantly.\n* Improved the layout of the Constants help panel.\n* If the backup root directory is unreadable then the plugin will no longer function.\n* Update the backups table match the standard WordPress table styles.\n* Improved styling for the settings dialogue.\n* Improved styling for the Server Info help tab.\n* /s/back ups/backups.\n* Remove Deprecated call to `screen_icon`.\n* Updated French translation.\n* Update the `WP CLI` command to use the new method for registering command.\n* Reload the schedules when re-setting up the default schedules so they show up straight away.\n* s/dpesnt't/doesn't.\n* Only show the estimated total schedule size when editing an existing schedule.\n* Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show.\n* Disable buttons whilst ajax requests are running.\n* Move spinners outside the buttons as they didn't look very good inside.\n* Improve the detection of the home path on multisite installs which have WordPress in a subdirectory.\n* Track the time that the running backup is started and display how long a backup has been running for.\n* Fix an issue that meant it wasn't possible to run multiple manual backups at the same time.\n* Many other minor improvements.\n\n#### 2.5\n\n* BackUpWordPress now requires WordPress 3.7.1 as a minimum.\n* Remove some old back-compat code that was required because we supported older WP versions.\n* It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter.\n* The spinner is now retina!\n* 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`.\n* Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests\n* Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations.\n* Improve the display of the server info in the enable support popup.\n* New screenshots\n* Use `wp_safe_redirect` for internal redirects.\n* Use `wp_is_writable` instead of `is_writable`.\n\n\n#### 2.4.2\n\n* In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.\n* Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout\n* Fixed 3 stray PHP warnings.\n* BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.\n* Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.\n\n#### 2.4.1\n\n* Add missing colorbox images\n\n#### 2.4\n\n* Support for new premium extensions for storing backups in a variety of online services.\n* Exclude the WP DB Manager backups and WP Super Cache cache directories by default.\n* We now use Intercom to offer support directly from within the plugin, opt-in of course.\n* More i18n fixes / improvements.\n* We no longer show download links if your backups directory isn't web accessible.\n* Fix a bug that caused the plugin activation and deactivation hooks from firing.\n* Correctly handle `MYSQL TIMESTAMP` columns in database dumps.\n* `mysqldump` and `zip` are now correctly recognised on SmartOS.\n* Schedule names are now translatable.\n* Avoid having to re-calculate the filesize when a schedules type is set.\n* Compatibility with WordPress 3.8\n\n\n#### 2.3.2\n\n* Correct version number.\n\n#### 2.3.1\n\n* Fix a PHP strict error.\n* Save and close as separate buttons.\n* Fix bug that caused multiple notification emails.\n* Fixes typo in database option name.\n* Updated translations.\n* Improve PHP docblocks.\n* Make schedules class a singleton.\n* Exclude popular backup plugin folders by default.\n* Exclude version control folders by default.\n* Fix broken localisation.\n* Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions\n*\n\n#### 2.3\n\n* Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible.\n* Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section.\n* Correct filename for some mis-named translation files.\n* Show the total estimated disk space a schedule could take up (max backups * estimated site size).\n* Fix a typo (your -> you're).\n* Use the new time Constants and define backwords compatible ones for > than 3.5.\n* Play nice with custom cron intervals.\n* Main plugin file is now `backupwordpress.php` for consistency.\n* Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul!\n* Don't remove non-backup files from custom backup paths.\n* Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups.\n* When moving paths only move backup files.\n* Make some untranslatable strings translatable.\n* 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.\n* Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value.\n* Remove help text for deprecated `HMBKP_EMAIL`.\n* 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`.\n* Silence a `PHP Warning` if `mysql_pconnect` has been disabled.\n* Ensure dot directories `.` & `..` are always skipped when looping the filesystem.\n* Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`.\n* Fix issues on IIS that could cause the root directory to be incorrectly calculated.\n* Fix an issue on IIS that could cause the download backup url to be incorrect.\n* Fix an issue on IIS that could mean your existing backups are lost when moving backup directory.\n* Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist.\n* All unit tests now pass under IIS on Windows.\n* Prefix the backup directory with `backupwordpress-` so that it's easier to identify.\n* Re-calculate the backup directory name on plugin update and move backups.\n* Fix some issues with how `HMBKP_SECURE_KEY` was generated.\n\n#### 2.2.4\n\n* Fix a fatal error on PHP 5.2, sorry! (again.)\n\n#### 2.2.3\n\n* Fix a parse error, sorry!\n\n#### 2.2.2\n\n* Fix a fatal error when uninstalling.\n* Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch.\n* Fix a possible notice when using the plugin on a server without internet access.\n* Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true.\n* Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant.\n* Nonce some ajax request.\n* Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled.\n* Handle situations where the mysql port is set to something wierd.\n* Fallback to `mysql_connect` on system that disable `mysql_pconnect`.\n* You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`.\n* Unit tests for `HM_Backup::is_safe_mode_available()`.\n* Silence possible PHP Warnings when unlinking files.\n\n#### 2.2.1\n\n* Stop storing a list of unreadable files in the backup warnings as it's too memory intensive.\n* Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers.\n* Show all errors and warnings in the popup shown when a manual backup completes.\n* Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process.\n* Fix a couple of `PHP E_STRICT` notices.\n* Catch more errors during the manual backup process and expose them to the user.\n\n#### 2.2\n\n* Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable.\n* Show the correct path in the warning message when the backups path can't be created.\n* Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY.\n* Stop relying on the built in WordPress schedules as other plugins can mess with them.\n* Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up.\n* Improve modals on small screens and mobile devices.\n* Use the retina spinner on retina screens.\n* Update buttons to the new 3.5 style.\n* Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction.\n* Fix an issue that could cause backups using PclZip with a custom backups path to fail.\n* Security hardening by improving escaping, sanitizitation and validation.\n* Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites.\n* Only clear the cached backup filesize if the backup type changes.\n* Add unit tests for all the schedule recurrences.\n* Fix an issue which could cause weekly and monthly schedules to fail.\n* Add an `uninstall.php` file which removes all BackUpWordPress data and options.\n* Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`.\n* Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file.\n\n#### 2.1.3\n\n* Fix a regression in `2.1.2` that broke previewing and adding new exclude rules.\n\n#### 2.1.2\n\n* Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests.\n* Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains.\n* The mysqldump fallback function will now be used if `mysqldump` produces an empty file.\n* Fix a possible PHP `NOTICE` on Apache servers.\n\n#### 2.1.1\n\n* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.\n* Don't use functions from misc.php as loading it too early can cause fatal errors.\n* Don't hardcode an English string in the JS, use the translated string instead.\n* Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.\n* Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.\n* Fix a possible double full stop at the end of the schedule sentence.\n* Minor code cleanup.\n\n#### 2.1\n\n* Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.\n* Fix possible fatal error when setting schedule to monthly.\n* Fix issues with download backup not working on some shared hosts.\n* Fix issuses with download backup not working on sites with strange characters in the site name.\n* Fix a bug could cause the update actions to fire on initial activation.\n* Improved reliability when changing backup paths, now with Unit Tests.\n* 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.\n* Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled.\n* Prepend a random string to the backups directory to make it harder to brute force guess.\n* Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable.\n* Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support.\n* Provide more granular status messages during the backup process.\n* Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing.\n* Improve the feedback when removing an exclude rule.\n* 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.\n* Add a line encouraging people to rate the plugin if they like it.\n* Change the support line to point to the FAQ before recommending they contact support.\n* Fix the link to the \"How to Restore\" post in the FAQ.\n* Some string changes for translators, 18 changed strings.\n\n#### 2.0.6\n\n* Fix possible warning on plugin activation if the sites cron option is empty.\n* Don't show the version warning in the help for Constants as that comes from the current version.\n\n#### 2.0.5\n\n* Re-setup the cron schedules if they get deleted somehow.\n* Delete all BackUpWordPress cron entries when the plugin is deactivated.\n* Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run.\n* Make sure the schedule times and times of previous backups are shown in local time.\n* 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.\n* Improve the usefulness of the `wp-cron.php` response code check.\n* Use the built in `site_format` function for human readable filesizes instead of defining our own function.\n\n#### 2.0.4\n\n* Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.\n\n#### 2.0.3\n\n* Fix issues with scheduled backups not firing in some cases.\n* Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.\n* Catch and display more WP Cron errors.\n* BackUpWordPress now fails to activate on WordPress 3.3.2 and below.\n* Other minor fixes and improvements.\n\n#### 2.0.2\n\n* Only send backup failed emails if the backup actually failed.\n* Turn off the generic \"memory limit probably hit\" message as it was showing for too many people.\n* Fix a possible notice when the backup running filename is blank.\n* Include the `wp_error` response in the cron check.\n\n#### 2.0.1\n\n* Fix fatal error on PHP 5.2.\n\n#### 2.0\n\n* Ability to have multiple schedules with separate settings & excludes per schedule.\n* Ability to manage exclude rules and see exactly which files are included and excluded.\n* Fix an issue with sites with an `open_basedir` restriction.\n* Backups should now be much more reliable in low memory environments.\n* Lots of other minor improvements and bug fixes.\n\n#### 1.6.9\n\n* Updated and improved translations across the board - props @elektronikLexikon.\n* German translation - props @elektronikLexikon.\n* New Basque translation - props Unai ZC.\n* New Dutch translation - Anno De Vries.\n* New Italian translation.\n* Better support for when WordPress is installed in a sub directory - props @mattheu\n\n\n#### 1.6.8\n\n* French translation props Christophe - http://catarina.fr.\n* Updated Spanish Translation props DD666 - https://github.com/radinamatic.\n* Serbian translation props StefanRistic - https://github.com/StefanRistic.\n* Lithuanian translation props Vincent G - http://www.Host1Free.com.\n* Romanian translation.\n* Fix conflict with WP Remote.\n* Fix a minor issue where invalid email address's were still stored.\n* The root path that is backed up can now be controlled by defining `HMBKP_ROOT`.\n\n#### 1.6.7\n\n* Fix issue with backups being listed in reverse chronological order.\n* Fix issue with newest backup being deleted when you hit your max backups limit.\n* It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.\n* Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`.\n* Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform.\n* Updated Spanish translation.\n* Fix a minor spelling mistake.\n* Speed up the manage backups page by caching the FAQ data for 24 hours.\n\n#### 1.6.6\n\n* Fix backup path issue with case sensitive filesystems.\n\n#### 1.6.5\n\n* Fix an issue with emailing backups that could cause the backup file to not be attached.\n* Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd.\n* Never show the running backup in the list of backups.\n* Show an error backup email failed to send.\n* Fix possible notice when deleting a backup file which doesn't exist.\n* Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`.\n* Make `HMBKP_SECURE_KEY` override-able.\n* BackUpWordPress should now work when `ABSPATH` is `/`.\n\n#### 1.6.4\n\n* Don't show warning message as they cause to much panic.\n* Move previous methods errors to warnings in fallback methods.\n* Wrap `.htaccess` rewrite rules in if `mod_rewrite` check.\n* Add link to new restore help article to FAQ.\n* Fix issue that could cause \"not using latest stable version\" message to show when you were in-fact using the latest version.\n* Bug fix in `zip command` check that could cause an incorrect `zip` path to be used.\n* Detect and pass `MySQL` port to `mysqldump`.\n\n#### 1.6.3\n\n* Don't fail archive verification for errors in previous archive methods.\n* Improved detection of the `zip` and `mysqldump` commands.\n* Fix issues when `ABSPATH` is `/`.\n* Remove reliance on `SECURE_AUTH_KEY` as it's often not defined.\n* Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`.\n* Fix download zip on Windows when `ABSPATH` contains a trailing forward slash.\n* Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.\n* Add missing / to `PCLZIP_TEMPORARY_DIR` define.\n* Catch and display errors during `mysqldump`.\n\n#### 1.6.2\n\n* Track `PHP` errors as backup warnings not errors.\n* Only show warning message for `PHP` errors in BackUpWordPress files.\n* Ability to dismiss the error / warning messages.\n* Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites.\n* Don't delete \"number of backups\" setting on update.\n* Better handling of multibyte characters in archive and database dump filenames.\n* Mark backup as running and increase callback timeout to `500` when firing backup via ajax.\n* Don't send backup email if backup failed.\n* Filter out duplicate exclude rules.\n\n#### 1.6.1\n\n* Fix fatal error on PHP =< 5.3\n\n#### 1.6\n\n* Fixes issue with backups dir being included in backups on some Windows Servers.\n* Consistent handling of symlinks across all archive methods (they are followed).\n* Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.\n* Track errors and warnings that happen during backup and expose them through admin.\n* Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed.\n* Ability to cancel a running backup.\n* Zip files are now integrity checked after every backup.\n* More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.\n* Use `mysql_query` instead of the depreciated `mysql_list_tables`.\n\n#### 1.5.2\n\n* Better handling of unreadable files in ZipArchive and the backup size calculation.\n* Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]`\n\n#### 1.5.1\n\n* Better detection of `zip` command.\n* Don't delete user settings on update / deactivate.\n* Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed.\n* Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.\n* Improved the speed of the backup size calculation.\n\n#### 1.5\n\n* Re-written core backup engine should be more robust especially in edge case scenarios.\n* 48 unit tests for the core backup engine, yay for unit tests.\n* Remove some extraneous status information from the admin interface.\n* Rename Advanced Options to Settings\n* New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed.\n* Suppress possible filemtime warnings in some edge cases.\n* 3.3 compatability.\n* Set proper charset of MySQL backup, props valericus.\n* Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.\n\n#### 1.4.1\n\n* 1.4 was incorrectly marked as beta.\n\n#### 1.4\n\n* Most options can now be set on the backups page, all options can still be set by defining them as `Constants`.\n* Russian translation, props valericus.\n* All dates are now translatable.\n* Fixed some strings which weren't translatable.\n* New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups.\n* Manual backups now work if `DISABLE_WP_CRON` is defined as `true`.\n\n#### 1.3.2\n\n* Spanish translation\n* Bump PHP version check to 5.2.4\n* Fallback to PHP mysqldump if shell_exec fails for any reason.\n* Silently ignore unreadable files / folders\n* Make sure binary data is properly exported when doing a mysqldump\n* Use 303 instead of 302 when redirecting in the admin.\n* Don't `set_time_limit` inside a loop\n* Use WordPress 3.2 style buttons\n* Don't pass an empty password to mysqldump\n\n#### 1.3.1\n\n* Check for PHP version. Deactivate plugin if running on PHP version 4.\n\n#### 1.3\n\n* Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.\n* 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.\n* Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.\n* Work around issues caused by low MySQL `wait_timeout` setting.\n* Add FAQ to readme.txt.\n* Pull FAQ into the contextual help tab on the backups page.\n* Block activation on old versions of WordPress.\n* Stop guessing compressed backup file size, instead just show size of site uncompressed.\n* Fix bug in `safe_mode` detection which could cause `Off` to act like `On`.\n* Better name for the database dump file.\n* Better name for the backup files.\n* Improve styling for advanced options.\n* Show examples for all advanced options.\n* Language improvements.\n* Layout tweaks.\n\n#### 1.2\n\n* Show live backup status in the back up now button when a back up is running.\n* Show free disk space after total used by backups.\n* Several langauge changes.\n* Work around the 1 cron every 60 seconds limit.\n* Store backup status in a 2 hour transient as a last ditch attempt to work around the \"stuck on backup running\" issue.\n* Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.\n* Highlight defined `Constants`.\n* Show defaults for all `Constants`.\n* Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time.\n* Make sure options added in 1.1.4 are cleared on de-activate.\n* Support `mysqldump on` Windows if it's available.\n* New option to have each backup emailed to you on completion. Props @matheu for the contribution.\n* Improved windows server support.\n\n#### 1.1.4\n\n* 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.\n* Don't suppress `mysql_connect` errors in the mysqldump PHP fallback.\n* One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.\n* Fix a spelling error in the `shell_exec` disabled message.\n* Store the BackUpWordPress version as a `Constant` rather than a `Variable`.\n* Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.\n* Minor PHPDoc improvements.\n\n#### 1.1.3\n\n* 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.\n* 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.\n\n#### 1.1.2\n\n* Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working.\n\n#### 1.1.1\n\n* Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`.\n* Clear the running backup status and reset the calculated filesize on update.\n* Show a link to the manage backups page in the plugin description.\n* Other general fixes.\n\n#### 1.1\n\n* Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.\n* Expose the various `Constants` that can be defined to change advanced settings.\n* Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`.\n* Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`.\n* Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );`\n* Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );`\n* Tweaks to the backups page layout.\n* General bug fixes and improvements.\n\n#### 1.0.5\n\n* Don't ajax load estimated backup size if it's already been calculated.\n* Fix time in backup complete log message.\n* Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.\n* Show number of backups saved message.\n* Add a link to the backups page to the plugin action links.\n\n#### 1.0.4\n\nDon't throw PHP Warnings when `shell_exec` is disabled\n\n#### 1.0.3\n\nMinor bug fix release.\n\n* Suppress `filesize()` warnings when calculating backup size.\n* Plugin should now work when symlinked.\n* Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.\n* Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.\n* Don't ajax ping running backup status quite so often.\n\n#### 1.0.1 & 1.0.2\n\nFix some silly 1.0 bugs\n\n#### 1.0\n\n1.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)\n\n#### Previous\n\nVersion 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/)\n"
  },
  {
    "path": "bin/release.sh",
    "content": "# release.sh\n#\n# Takes a tag to release, and syncs it to WordPress.org\n\nTAG=3.10\nPLUGIN=\"backupwordpress\"\nPLUGINDIR=$(pwd)\nTMPDIR=$(pwd)/tmp/\n\n# Fail on any error\nset -e\n\nif [[ $VERSION == \"v*\" ]]; then\n\t# Starts with an extra \"v\", strip for the version\n\tVERSION=${TAG:1}\nelse\n\tVERSION=\"$TAG\"\nfi\n\necho \"Version: $VERSION .\"\n\nif [ -d \"${TMPDIR}\" ]; then\n\t# Wipe it clean\n\trm -rf \"${TMPDIR}\"\n\techo \"Remove TMP\"\nfi\n\n# Ensure the directory exists first\nmkdir -p \"${TMPDIR}\"\n\necho \"Make TMP: ${TMPDIR}\"\n\n# Make a Copy of all the files in the folder\nrsync -av --progress --exclude=tmp/ --exclude=node_modules/ \"${PWD}\" \"${TMPDIR}\"\nif [[ $? -ne 0 ]]; then\n\tremove_tmp\n\techo \"rsync $PLUGINDIR Failed. Aborting.\"\n\texit 1\nfi\n\n# Switch to build dir\ncd \"${TMPDIR}\"\n\n# change folder name to TAG ID\nmv ${PLUGIN} ${TAG}\n\n# THen CD into folder\ncd ${TAG}\n\nls -lh\n\n# Run build tasks\nsed -e \"s/{{TAG}}/$VERSION/g\" < \"$PLUGINDIR/bin/readme.txt\" > readme.txt\n\n# Remove special files\nrm .gitignore\nrm .bowerrc\nrm .travis.yml\nrm .jshintrc\nrm -rf .git\nrm -rf .github\nrm CONTRIBUTING.md\nrm changelog.txt\nrm .scrutinizer.yml\nrm phpunit.xml\nrm bower.json\nrm Gruntfile.js\nrm package.json\nrm composer.json\nrm composer.lock\nrm -rf bin\nrm -rf grunt\nrm -rf tmp\nrm -rf readme\nrm -rf tests\nrm -rf node_modules"
  },
  {
    "path": "bower.json",
    "content": "{\n\t\"name\": \"backupwordpress\",\n\t\"version\": \"3.6.0\",\n\t\"homepage\": \"https://profiles.wordpress.org/xibodevelopment\",\n\t\"authors\": [\n\t\t\"XIBO Ltd\"\n\t],\n\t\"description\": \"Simple automated backups of your WordPress powered website.\",\n\t\"main\": \"backupwordpress.php\",\n\t\"license\": \"GPLv2\",\n\t\"ignore\": [\n\t\t\"**/.*\",\n\t\t\"node_modules\",\n\t\t\"bower_components\",\n\t\t\"assets\",\n\t\t\"test\",\n\t\t\"tests\"\n\t],\n\t\"dependencies\": {\n\t}\n}\n"
  },
  {
    "path": "changelog.txt",
    "content": "2741ba7 composer npm update\nd5a5468 Update class-plugin to remove escaping\n37bbf48 Update upsell.php\n06d1ec7 Update upsell.php\nc48fa22 Update page.php\nb37d80d Update to bump up padding. Bumped up padding around schedule sentence.\n25da000 Update to error notices. Removed extra extensions upsell and replaced non-dismissible notice with a dismissible notice. Both are at the top, though?\n647b4a1 corrected improper URL inclusion\n71570de This just adds error and debug logs to the automatic exclusions list in the class-excludes.php\n9ecc8f6 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.\n5191fc9 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.\nd6ee584 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.\ndae3fef 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.\n31a4d53 Update tags for wp.org\n3928532 Fix wp-snapshots\n335865c Rename ISSUE_TEMPLATE to ISSUE_TEMPLATE.md\n8a04298 Update TEMPLATE file\n34702b1 Create new ISSUE_TEMPLATE\nf840674 Delete template.txt\n19255c3 Create template.txt\na02d722 Check for correct server permission, else show site credentials form\n32f6791 Minor - simplify 'if' statements. Fix coding standards - full stop after single line comment\n7b9be93 Correct the order of error messages when both a custom path and the default paths are both unwritable.\nbadc2e4 Avoid a Warning when the backup path isn't readable\n3f81248 Improve the ability to automatically create the backups directory\ncd957da Clean up translatin strings - remove allowed HTML per string and add some allowed tags to generic output function for Server Notices in WP admin\n45492c0 Use whitelist_html for translated strings to allow some HTML\n1f4395a Clean up - combine conditions in if statements for better readability, alignment and indentation of code\n611b878 Ensure Path is readable before calling `disk_free_space`\n3267c87 s/sites/site's when used in a singulat possesive context\nb9173ef Improved error messaging\n0915923 WPCS fixes\n1d5a525 Refactor the request_credentials code so it actually works\ncdfe2e4 Show notice and hide backups list\n6092f59 Force FTP form\n7e01802 Add a function comment\nfd95e12 Extract list of possible paths to own method\n428a939 Fix code formatting\nd4835f6 Display a form to get users connection credentials\n17f238f Make notices dismissable\ne9d99f8 Remove folder permissions notices\n"
  },
  {
    "path": "classes/backup/class-backup-engine-database-imysqldump.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse Ifsnop\\Mysqldump as IMysqldump;\n\n/**\n * Perform a database backup using the mysqldump-php library\n *\n * @see https://github.com/ifsnop/mysqldump-php\n */\nclass IMysqldump_Database_Backup_Engine extends Database_Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\t/**\n\t * Perform the database backupwordpress\n\t *\n\t * @return bool True if the backup completed successfully, else false.\n\t */\n\tpublic function backup() {\n\n\t\ttry {\n\n\t\t\t$dump = new IMysqldump\\Mysqldump( $this->get_dsn(), $this->get_user(), $this->get_password(), $this->get_dump_settings() );\n\t\t\t$dump->start( $this->get_backup_filepath() );\n\n\t\t} catch ( \\Exception $e ) {\n\t\t\t$this->error( __CLASS__, $e->getMessage() );\n\t\t}\n\n\t\treturn $this->verify_backup();\n\n\t}\n\n\t/**\n\t * Get the settings for the database bump.\n\t *\n\t * @return array The array of database dump settings.\n\t */\n\tpublic function get_dump_settings() {\n\n\t\t/**\n\t\t * Allow additional settings to be added.\n\t\t *\n\t\t * @param string[] $settings The array of settings.\n\t\t * @todo can these be standardised across all database backup engines\n\t\t */\n\t\treturn apply_filters( 'hmbkp_imysqldump_command', array(\n\t\t\t'default-character-set' => $this->get_charset(),\n\t\t\t'hex-blob'              => true,\n\t\t\t'single-transaction'    => defined( 'HMBKP_MYSQLDUMP_SINGLE_TRANSACTION' ) && HMBKP_MYSQLDUMP_SINGLE_TRANSACTION,\n\t\t) );\n\n\t}\n\n\t/**\n\t * Correctly calculates the DSN string for the various mysql\n\t * connection variations including simplt hostname, non-standard ports\n\t * and socket connections.\n\t *\n\t * @return string  The DSN connection string\n\t */\n\tpublic function get_dsn() {\n\n\t\t$dsn = 'mysql:host=' . $this->get_host() . ';dbname=' . $this->get_name();\n\n\t\tif ( $this->get_host() && $this->get_port() ) {\n\t\t\t$dsn = 'mysql:host=' . $this->get_host() . ';port=' . $this->get_port() . ';dbname=' . $this->get_name();\n\t\t} elseif ( $this->get_socket() ) {\n\t\t\t$dsn = 'mysql:unix_socket=' . $this->get_socket() . ';dbname=' . $this->get_name();\n\t\t}\n\n\t\treturn $dsn;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine-database-mysqldump.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse Symfony\\Component\\Process\\Process as Process;\n\n/**\n * Perform a database backup using the mysqldump cli command\n */\nclass Mysqldump_Database_Backup_Engine extends Database_Backup_Engine {\n\n\t/**\n\t * The path to the mysqldump executable\n\t *\n\t * @var string|false\n\t */\n\tprivate $mysqldump_executable_path = '';\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\t/**\n\t * Calculate the path to the mysqldump executable.\n\t *\n\t * The executable path can be overridden using either the `HMBKP_MYSQLDUMP_PATH`\n\t * Constant or the `hmbkp_mysqldump_executable_path` filter.\n\t *\n\t * If neither of those are set then we fallback to checking a number of\n\t * common locations.\n\t *\n\t * @return string|false The path to the executable or false.\n\t */\n\tpublic function get_mysqldump_executable_path() {\n\n\t\t// Return now if it's set in a Constant\n\t\tif ( defined( 'HMBKP_MYSQLDUMP_PATH' ) && HMBKP_MYSQLDUMP_PATH ) {\n\t\t\t$this->mysqldump_executable_path = HMBKP_MYSQLDUMP_PATH;\n\t\t}\n\n\t\t/**\n\t\t * Allow the executable path to be set via a filter\n\t\t *\n\t\t * @param string The path to the mysqldump executable\n\t\t */\n\t\t$this->mysqldump_executable_path = apply_filters( 'hmbkp_mysqldump_executable_path', '' );\n\n\t\tif ( ! $this->mysqldump_executable_path ) {\n\n\t\t\t// List of possible mysqldump locations\n\t\t\t$paths = array(\n\t\t\t\t'mysqldump',\n\t\t\t\t'/usr/local/bin/mysqldump',\n\t\t\t\t'/usr/local/mysql/bin/mysqldump',\n\t\t\t\t'/usr/mysql/bin/mysqldump',\n\t\t\t\t'/usr/bin/mysqldump',\n\t\t\t\t'/opt/local/lib/mysql6/bin/mysqldump',\n\t\t\t\t'/opt/local/lib/mysql5/bin/mysqldump',\n\t\t\t\t'/opt/local/lib/mysql4/bin/mysqldump',\n\t\t\t\t'/xampp/mysql/bin/mysqldump',\n\t\t\t\t'/Program Files/xampp/mysql/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 6.0/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.6/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.4/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump',\n\t\t\t\t'/Program Files/MySQL/MySQL Server 4.1/bin/mysqldump',\n\t\t\t\t'/opt/local/bin/mysqldump',\n\t\t\t);\n\n\t\t\t$this->mysqldump_executable_path = Backup_Utilities::get_executable_path( $paths );\n\n\t\t}\n\n\t\treturn $this->mysqldump_executable_path;\n\n\t}\n\n\t/**\n\t * Perform the database backup.\n\t *\n\t * @return bool Whether the backup completed successfully or not.\n\t */\n\tpublic function backup() {\n\n\t\tif ( ! $this->get_mysqldump_executable_path() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Grab the database connections args\n\t\t$args = $this->get_mysql_connection_args();\n\n\t\t// Allow lock-tables to be overridden\n\t\tif ( defined( 'HMBKP_MYSQLDUMP_SINGLE_TRANSACTION' ) && HMBKP_MYSQLDUMP_SINGLE_TRANSACTION  ) {\n\t\t\t$args[] = '--single-transaction';\n\t\t}\n\n\t\t// Make sure binary data is exported properly\n\t\t$args[] = '--hex-blob';\n\n\t\t// The file we're saving too\n\t\t$args[] = '-r ' . escapeshellarg( $this->get_backup_filepath() );\n\n\t\t// The database we're dumping\n\t\t$args[] = escapeshellarg( $this->get_name() );\n\n\t\t$process = new Process( $this->get_mysqldump_executable_path() . ' ' . implode( ' ', $args ) );\n\t\t$process->setTimeout( HOUR_IN_SECONDS );\n\n\t\ttry {\n\t\t\t$process->run();\n\t\t} catch ( \\Exception $e ) {\n\t\t\t$this->error( __CLASS__, $e->getMessage() );\n\t\t}\n\n\t\tif ( ! $process->isSuccessful() ) {\n\t\t\t$this->error( __CLASS__, $process->getErrorOutput() );\n\t\t}\n\n\t\treturn $this->verify_backup();\n\n\t}\n\n\t/**\n\t * Get the connection args for the mysqldump command\n\t *\n\t * @return string[] The array of connection args\n\t */\n\tpublic function get_mysql_connection_args() {\n\n\t\t$args = array();\n\n\t\t$args[] = '-u ' . escapeshellarg( $this->get_user() );\n\n\t\tif ( $this->get_password() ) {\n\t\t\t$args[] = '-p' . escapeshellarg( $this->get_password() );\n\t\t}\n\n\t\t$args[] = '-h ' . escapeshellarg( $this->get_host() );\n\n\t\tif ( $this->get_port() ) {\n\t\t\t$args[] = '-P ' . escapeshellarg( $this->get_port() );\n\t\t}\n\n\t\tif ( $this->get_socket() ) {\n\t\t\t$args[] = '--protocol=socket -S ' . escapeshellarg( $this->get_socket() );\n\t\t}\n\n\t\treturn $args;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine-database.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * The Database Backup Engine type\n *\n * All Database Backup Engine implementations should extend this class\n */\nabstract class Database_Backup_Engine extends Backup_Engine {\n\n\t/**\n\t * The filename for the resulting Backup\n\t *\n\t * @var string\n\t */\n\tpublic $backup_filename = '';\n\n\t/**\n\t * The database host string, typically the value of\n\t * the `DB_HOST` Constant.\n\t *\n\t * @var string\n\t */\n\tprivate $host = '';\n\n\t/**\n\t * The database socket, if it's using a socket connection\n\t *\n\t * @var string\n\t */\n\tprivate $socket = '';\n\n\t/**\n\t * The database port, if a custom one is set\n\t *\n\t * @var integer\n\t */\n\tprivate $port = 0;\n\n\t/**\n\t * Individual Database Backup Engine implementations must include\n\t * a backup method at a minimum.\n\t *\n\t * @return bool Whether the backup completed successfully or not.\n\t */\n\tabstract public function backup();\n\n\t/**\n\t * Setup some general database backup settings\n\t *\n\t * Child classes must call `parent::__construct` in their own constructor.\n\t */\n\tpublic function __construct() {\n\n\t\tparent::__construct();\n\n\t\t$this->parse_db_host_constant();\n\n\t\t// Set a default backup filename\n\t\t$this->set_backup_filename( 'database-' . $this->get_name() . '.sql' );\n\n\t}\n\n\t/**\n\t * Get the database charset setting.\n\t *\n\t * @return string The database charset.\n\t */\n\tpublic function get_charset() {\n\t\tglobal $wpdb;\n\t\treturn $wpdb->charset;\n\t}\n\n\t/**\n\t * Get the database collate setting.\n\t *\n\t * @return string The database collage setting.\n\t */\n\tpublic function get_collate() {\n\t\tglobal $wpdb;\n\t\treturn $wpdb->collate;\n\t}\n\n\t/**\n\t * Get the database name.\n\t *\n\t * @return string The database name.\n\t */\n\tpublic function get_name() {\n\t\tglobal $wpdb;\n\t\treturn $wpdb->dbname;\n\t}\n\n\t/**\n\t * Get the database user.\n\t *\n\t * @return string The database user.\n\t */\n\tpublic function get_user() {\n\t\tglobal $wpdb;\n\t\treturn $wpdb->dbuser;\n\t}\n\n\t/**\n\t * Get the database password.\n\t *\n\t * @return string The database password.\n\t */\n\tpublic function get_password() {\n\t\tglobal $wpdb;\n\t\treturn $wpdb->dbpassword;\n\t}\n\n\t/**\n\t * Get the database hostname.\n\t *\n\t * @return string The database hostname.\n\t */\n\tpublic function get_host() {\n\t\treturn $this->host;\n\t}\n\n\t/**\n\t * Get the database port.\n\t *\n\t * @return int The database port.\n\t */\n\tpublic function get_port() {\n\t\treturn $this->port;\n\t}\n\n\t/**\n\t * Get the database socket.\n\t *\n\t * @return string The database socket.\n\t */\n\tpublic function get_socket() {\n\t\treturn $this->socket;\n\t}\n\n\t/**\n\t * Parse the `DB_HOST` constant.\n\t *\n\t * The `DB_HOST` constant potentially contains the hostname, port or socket.\n\t * We need to parse it to figure out the type of mysql connection to make.\n\t *\n\t * @param  string $constant The Constant to parse. If the string isn't a\n\t *                          defined Constant then it will be parsed directly.\n\t */\n\tpublic function parse_db_host_constant( $constant = 'DB_HOST' ) {\n\n\t\t// If we've been passed a Constant then grab it's contents\n\t\tif ( defined( $constant ) ) {\n\t\t\t$constant = constant( $constant );\n\t\t}\n\n\t\t// If we weren't passed a Constant then just parse the string directly.\n\t\t$this->host = (string) $constant;\n\n\t\t// Grab the part after :, it could either be a port or a socket\n\t\t$port_or_socket = strstr( $constant, ':' );\n\n\t\tif ( $port_or_socket ) {\n\n\t\t\t// The host is the bit up to the :\n\t\t\t$this->host = substr( $constant, 0, strpos( $constant, ':' ) );\n\n\t\t\t// Strip the :\n\t\t\t$port_or_socket = substr( $port_or_socket, 1 );\n\n\t\t\tif ( 0 !== strpos( $port_or_socket, '/' ) ) {\n\n\t\t\t\t$this->port = intval( $port_or_socket );\n\t\t\t\t$maybe_socket = strstr( $port_or_socket, ':' );\n\n\t\t\t\tif ( ! empty( $maybe_socket ) ) {\n\t\t\t\t\t$this->socket = substr( $maybe_socket, 1 );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$this->socket = $port_or_socket;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Verify that the database backup was successful.\n\t *\n\t * It's important this function is performant as it's called after every\n\t * backup.\n\t *\n\t * @return bool Whether the backup completed successfully\n\t */\n\tpublic function verify_backup() {\n\n\t\t// If there are errors delete the database dump file\n\t\tif ( $this->get_errors( get_called_class() ) && file_exists( $this->get_backup_filepath() ) ) {\n\t\t\tunlink( $this->get_backup_filepath() );\n\t\t}\n\n\t\t// If we have an empty file delete it\n\t\tif ( @filesize( $this->get_backup_filepath() ) === 0 ) {\n\t\t\tunlink( $this->get_backup_filepath() );\n\t\t}\n\n\t\t// If the database backup doesn't exist then the backup must have failed\n\t\tif ( ! file_exists( $this->get_backup_filepath() ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine-file-zip-archive.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Perform a file backup using the native PHP ZipArchive extension\n */\nclass Zip_Archive_File_Backup_Engine extends File_Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\tpublic function backup() {\n\n\t\tif ( ! class_exists( 'ZipArchive' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$zip = new \\ZipArchive();\n\n\t\t// Attempt to create the zip file.\n\t\tif ( $zip->open( $this->get_backup_filepath(), \\ZIPARCHIVE::CREATE ) ) {\n\n\t\t\tforeach ( $this->get_files() as $file ) {\n\n\t\t\t\t// Create an empty directory for each directory in the filesystem\n\t\t\t\tif ( $file->isDir() ) {\n\t\t\t\t\t$zip->addEmptyDir( $file->getRelativePathname() );\n\t\t\t\t} elseif ( $file->isFile() ) { // Archive the file with a relative path\n\t\t\t\t\t$zip->addFile( $file->getPathname(), $file->getRelativePathname() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Track any internal warnings\n\t\t\tif ( $zip->status ) {\n\t\t\t\t$this->warning( __CLASS__, $zip->status );\n\t\t\t}\n\n\t\t\t// @codingStandardsIgnoreStart\n\t\t\tif ( $zip->statusSys ) {\n\t\t\t\t$this->warning( __CLASS__, $zip->statusSys );\n\t\t\t}\n\t\t\t// @codingStandardsIgnoreEnd\n\n\t\t\t$zip->close();\n\n\t\t}\n\n\t\treturn $this->verify_backup();\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine-file-zip.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse Symfony\\Component\\Process\\Process as Process;\n\n/**\n * Perform a file backup using the zip cli command\n */\nclass Zip_File_Backup_Engine extends File_Backup_Engine {\n\n\t/**\n\t * The path to the zip executable\n\t *\n\t * @var string|false\n\t */\n\tprivate $zip_executable_path = '';\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\t/**\n\t * Calculate the path to the zip executable.\n\t *\n\t * The executable path can be overridden using either the `HMBKP_ZIP_PATH`\n\t * Constant or the `hmbkp_zip_executable_path` filter.\n\t *\n\t * If neither of those are set then we fallback to checking a number of\n\t * common locations.\n\t *\n\t * @return string|false The path to the executable or false.\n\t */\n\tpublic function get_zip_executable_path() {\n\n\t\tif ( defined( 'HMBKP_ZIP_PATH' ) ) {\n\t\t\treturn HMBKP_ZIP_PATH;\n\t\t}\n\n\t\t/**\n\t\t * Allow the executable path to be set via a filter\n\t\t *\n\t\t * @param string The path to the zip executable\n\t\t */\n\t\t$this->zip_executable_path = apply_filters( 'hmbkp_zip_executable_path', '' );\n\n\t\tif ( ! $this->zip_executable_path ) {\n\n\t\t\t// List of possible zip locations\n\t\t\t$paths = array(\n\t\t\t\t'zip',\n\t\t\t\t'/usr/bin/zip',\n\t\t\t\t'/usr/local/bin/zip',\n\t\t\t\t'/opt/local/bin/zip',\n\t\t\t);\n\n\t\t\t$this->zip_executable_path = Backup_Utilities::get_executable_path( $paths );\n\n\t\t}\n\n\t\treturn $this->zip_executable_path;\n\n\t}\n\n\t/**\n\t * Perform the file backup.\n\t *\n\t * @return bool Whether the backup completed successfully or not.\n\t */\n\tpublic function backup() {\n\n\t\tif ( ! $this->get_zip_executable_path() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$command = array();\n\n\t\t// cd to the site root\n\t\t$command[] = 'cd ' . escapeshellarg( Path::get_root() );\n\n\t\t// Run the zip command with the recursive and quiet flags\n\t\t$command[] = '&& ' . escapeshellcmd( $this->get_zip_executable_path() ) . ' -rq';\n\n\t\t// Save the zip file to the correct path\n\t\t$command[] = escapeshellarg( $this->get_backup_filepath() ) . ' ./';\n\n\t\t// Pass exclude rules in if we have them\n\t\tif ( $this->get_exclude_string() ) {\n\t\t\t$command[] = '-x ' . $this->get_exclude_string();\n\t\t}\n\n\t\t$command = implode( ' ', $command );\n\n\t\t$process = new Process( $command );\n\t\t$process->setTimeout( HOUR_IN_SECONDS );\n\n\t\ttry {\n\t\t\t$process->run();\n\t\t} catch ( \\Exception $e ) {\n\t\t\t$this->error( __CLASS__, $e->getMessage() );\n\t\t}\n\n\t\tif ( ! $process->isSuccessful() ) {\n\n\t\t\t/**\n\t\t\t * Exit Code 18 is returned when an unreadable file is encountered during the zip process.\n\t\t\t *\n\t\t\t * Given the zip process still completes correctly and the unreadable file is simple skipped\n\t\t\t * we don't want to treat 18 as an actual error.\n\t\t\t */\n\t\t\tif ( $process->getExitCode() !== 18 ) {\n\t\t\t\t$this->error( __CLASS__, $process->getErrorOutput() );\n\t\t\t}\n\t\t}\n\n\t\treturn $this->verify_backup();\n\n\t}\n\n\t/**\n\t * Convert the exclude rules to a format zip accepts\n\t *\n\t * @return string The exclude string ready to pass to `zip -x`\n\t */\n\tpublic function get_exclude_string() {\n\n\t\tif ( empty( $this->excludes ) ) {\n\t\t\treturn '';\n\t\t}\n\n\t\t$excludes = $this->excludes->get_excludes();\n\n\t\tforeach ( $excludes as $key => &$rule ) {\n\n\t\t\t$file = $absolute = $fragment = false;\n\n\t\t\t// Files don't end with /\n\t\t\tif ( ! in_array( substr( $rule, - 1 ), array( '\\\\', '/' ) ) ) {\n\t\t\t\t$file = true;\n\t\t\t} // If rule starts with a / then treat as absolute path\n\t\t\telseif ( in_array( substr( $rule, 0, 1 ), array( '\\\\', '/' ) ) ) {\n\t\t\t\t$absolute = true;\n\t\t\t} // Otherwise treat as dir fragment\n\t\t\telse {\n\t\t\t\t$fragment = true;\n\t\t\t}\n\n\t\t\t$rule = str_ireplace( Path::get_root(), '', untrailingslashit( wp_normalize_path( $rule ) ) );\n\n\t\t\t// Strip the preceeding slash\n\t\t\tif ( in_array( substr( $rule, 0, 1 ), array( '\\\\', '/' ) ) ) {\n\t\t\t\t$rule = substr( $rule, 1 );\n\t\t\t}\n\n\t\t\t// Wrap directory fragments and files in wildcards for zip\n\t\t\tif ( $fragment || $file ) {\n\t\t\t\t$rule = '*' . $rule . '*';\n\t\t\t}\n\n\t\t\t// Add a wildcard to the end of absolute url for zips\n\t\t\tif ( $absolute ) {\n\t\t\t\t$rule .= '*';\n\t\t\t}\n\t\t}\n\n\t\t// Escape shell args for zip command\n\t\t$excludes = array_map( 'escapeshellarg', array_unique( $excludes ) );\n\n\t\treturn implode( ' -x ', $excludes );\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine-file.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse Symfony\\Component\\Finder\\Finder as Finder;\n\n/**\n * The File Backup Engine type\n *\n * All File Backup Engine implementations should extend this class\n */\nabstract class File_Backup_Engine extends Backup_Engine {\n\n\t/**\n\t * The array of excludes rules\n\t *\n\t * @var Excludes\n\t */\n\tprotected $excludes;\n\n\t/**\n\t * Set the default backup filename.\n\t */\n\tpublic function __construct() {\n\n\t\tparent::__construct();\n\n\t\t$this->set_backup_filename( implode( '-', array(\n\t\t\tstr_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ),\n\t\t\t'backup',\n\t\t\tcurrent_time( 'Y-m-d-H-i-s' ),\n\t\t) ) . '.zip' );\n\n\t\t$this->excludes = new Excludes;\n\n\t}\n\n\t/**\n\t * Set the excludes rules for the backup.\n\t *\n\t * @param Excludes $excludes The exclude rules.\n\t */\n\tpublic function set_excludes( Excludes $excludes ) {\n\t\t$this->excludes = $excludes;\n\t}\n\n\t/**\n\t * Returns a Finder instance for the files that will be included in the\n\t * backup.\n\t *\n\t * By default we ignore unreadable files and directories as well as, common\n\t * version control folders / files, \"Dot\" files and anything matching the\n\t * exclude rules.\n\t *\n\t * @uses Finder\n\t * @return SplFileInfo[] The array of all files to be included\n\t */\n\tpublic function get_files() {\n\n\t\t$finder = new Finder();\n\n\t\t$finder->followLinks(); // defaults to true\n\t\t$finder->ignoreDotFiles( false );\n\t\t$finder->ignoreVCS( true );\n\t\t$finder->ignoreUnreadableDirs( true );\n\n\t\t// Skip unreadable files too\n\t\t$finder->filter(\n\t\t\tfunction ( \\SplFileInfo $file ) {\n\t\t\t\tif ( ! $file->isReadable() ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// Finder expects exclude rules to be in a regex format\n\t\t$exclude_rules = $this->excludes->get_excludes_for_regex();\n\n\t\t// Skips folders/files that match default exclude patterns\n\t\tforeach ( $exclude_rules as $exclude ) {\n\t\t\t$finder->notPath( $exclude );\n\t\t}\n\n\t\treturn $finder->in( Path::get_root() );\n\n\t}\n\n\t/**\n\t * Verify that the file backup completed successfully.\n\t *\n\t * This should be called from backup method of any final file backup engine\n\t * implementations.\n\t *\n\t * @return bool Whether the backup completed successfully.\n\t */\n\tpublic function verify_backup() {\n\n\t\t// If there are errors delete the backup file.\n\t\tif ( $this->get_errors( get_called_class() ) && file_exists( $this->get_backup_filepath() ) ) {\n\t\t\tunlink( $this->get_backup_filepath() );\n\t\t}\n\n\t\t// If the backup doesn't exist then we must have failed.\n\t\tif ( ! file_exists( $this->get_backup_filepath() ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-engine.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * The base Backup Engine\n *\n * Base Backup Engine types should extend this class and call parent::__construct in\n * there constructor.\n *\n * Defines base functionality shared across all types of backups\n */\nabstract class Backup_Engine {\n\n\t/**\n\t * The filename of the backup\n\t *\n\t * @var string\n\t */\n\tprivate $backup_filename = '';\n\n\t/**\n\t * An array of backup errors.\n\t *\n\t * @var array\n\t */\n\tprivate $errors = array();\n\n\t/**\n\t * An array of backup warnings.\n\t *\n\t * @var array\n\t */\n\tprivate $warnings = array();\n\n\tpublic function __construct() {\n\n\t\t/**\n\t\t * Raise the `memory_limit` and `max_execution time`\n\t\t *\n\t\t * Respects the WP_MAX_MEMORY_LIMIT Constant and the `admin_memory_limit`\n\t\t * filter.\n\t\t */\n\t\t@ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );\n\t\t@set_time_limit( 0 );\n\n\t\t// Set a custom error handler so we can track errors\n\t\tset_error_handler( array( $this, 'error_handler' ) );\n\n\t}\n\n\t/**\n\t * Backup Engine Types should always implement the `verify_backup` method.\n\t *\n\t * @return bool Whether the backup completed successfully or not.\n\t */\n\tabstract public function verify_backup();\n\n\t/**\n\t * Get the full filepath to the backup file.\n\t *\n\t * @return string The backup filepath.\n\t */\n\tpublic function get_backup_filepath() {\n\t\treturn trailingslashit( Path::get_path() ) . $this->get_backup_filename();\n\t}\n\n\t/**\n\t * Get the filename of the backup.\n\t *\n\t * @return string The backup filename.\n\t */\n\tpublic function get_backup_filename() {\n\t\treturn $this->backup_filename;\n\t}\n\n\t/**\n\t * Set the filename of the backup.\n\t *\n\t * @param string $filename The backup filename.\n\t */\n\tpublic function set_backup_filename( $filename ) {\n\t\t$this->backup_filename = strtolower( sanitize_file_name( remove_accents( $filename ) ) );\n\t}\n\n\t/**\n\t * Get the array of errors encountered during the backup process.\n\t *\n\t * @param  string|null $context The context for the error, usually the Backup\n\t *                              Engine that encountered the error.\n\t *\n\t * @return array                The array of errors.\n\t */\n\tpublic function get_errors( $context = null ) {\n\n\t\t// Only return a specific contexts errors.\n\t\tif ( ! empty( $context ) ) {\n\t\t\treturn isset( $this->errors[ $context ] ) ? $this->errors[ $context ] : array();\n\t\t}\n\n\t\treturn $this->errors;\n\n\t}\n\n\t/**\n\t * Add an error to the errors array.\n\t *\n\t * An error is always treat as fatal and should only be used for unrecoverable\n\t * issues with the backup process.\n\t *\n\t * @param  string $context The context for the error.\n\t * @param  string $error   The error that was encountered.\n\t */\n\tpublic function error( $context, $error ) {\n\n\t\tif ( empty( $context ) || empty( $error ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure we don't store duplicate errors by md5'ing the error as the key\n\t\t$this->errors[ $context ][ md5( implode( ':', (array) $error ) ) ] = $error;\n\n\t}\n\n\t/**\n\t * Get the array of warnings encountered during the backup process.\n\t *\n\t * @param  string|null $context The context for the warning, usually the Backup\n\t *                              Engine that encountered the warning.\n\t *\n\t * @return array                The array of warnings.\n\t */\n\tpublic function get_warnings( $context = null ) {\n\n\t\t// Only return a specific contexts errors.\n\t\tif ( ! empty( $context ) ) {\n\t\t\treturn isset( $this->warnings[ $context ] ) ? $this->warnings[ $context ] : array();\n\t\t}\n\n\t\treturn $this->warnings;\n\n\t}\n\n\t/**\n\t * Add an warning to the errors warnings.\n\t *\n\t * A warning is always treat as non-fatal and should only be used for recoverable\n\t * issues with the backup process.\n\t *\n\t * @param  string $context The context for the warning.\n\t * @param  string $warning The warning that was encountered.\n\t */\n\tpublic function warning( $context, $warning ) {\n\n\t\tif ( empty( $context ) || empty( $warning ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure we don't store duplicate warnings by md5'ing the error as the key\n\t\t$this->warnings[ $context ][ md5( implode( ':', (array) $warning ) ) ] = $warning;\n\n\t}\n\n\t/**\n\t * Hooked into `set_error_handler` to catch any PHP errors that happen during\n\t * the backup process.\n\t *\n\t * PHP errors are always treat as warnings rather than errors.\n\t *\n\t * @param  int $type The level of error raised.\n\t *\n\t * @return boolean   Return false to pass the error back to PHP so it can\n\t *                   be handled natively.\n\t */\n\tpublic function error_handler( $type ) {\n\n\t\t// Skip strict & deprecated warnings.\n\t\tif ( ( defined( 'E_DEPRECATED' ) && E_DEPRECATED === $type ) || ( defined( 'E_STRICT' ) && E_STRICT === $type ) || 0 === error_reporting() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * Get the details of the error.\n\t\t *\n\t\t * These are:\n\t\t *\n\t\t * @param int    $errorno   The error level expressed as an integer.\n\t\t * @param string $errstr    The error message.\n\t\t * @param string $errfile   The file that the error raised in.\n\t\t * @param string $errorline The line number the error was raised on.\n\t\t */\n\t\t$args = func_get_args();\n\n\t\t// Strip the error level\n\t\tarray_shift( $args );\n\n\t\t// Fire a warning for the PHP error passing the message, file and line number.\n\t\t$this->warning( 'php', implode( ', ', array_splice( $args, 0, 3 ) ) );\n\n\t\treturn false;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-status.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Manages status and progress of a backup\n */\nclass Backup_Status {\n\n\tprivate $filename = '';\n\tprivate $id;\n\n\tpublic function __construct( $id ) {\n\t\t$this->id = $id;\n\t}\n\n\tpublic function start( $backup_filename, $status_message ) {\n\t\t$this->filename = $backup_filename;\n\t\t$this->set_status( $status_message );\n\t}\n\n\t/**\n\t * Get the filename of the backup.\n\t *\n\t * @return string|null The backup filename.\n\t */\n\tpublic function get_backup_filename() {\n\n\t\tif ( $this->is_started() ) {\n\t\t\t$status = json_decode( file_get_contents( $this->get_status_filepath() ) );\n\n\t\t\tif ( ! empty( $status->filename ) ) {\n\t\t\t\t$this->filename = $status->filename;\n\t\t\t}\n\t\t}\n\n\t\treturn $this->filename;\n\t}\n\n\tpublic function is_started() {\n\t\treturn (bool) file_exists( $this->get_status_filepath() );\n\t}\n\n\tpublic function finish() {\n\t\t// Delete the backup running file\n\t\tif ( file_exists( $this->get_status_filepath() ) ) {\n\t\t\tunlink( $this->get_status_filepath() );\n\t\t}\n\t}\n\n\t/**\n\t * Get the status of the running backup.\n\t *\n\t * @return string\n\t */\n\tpublic function get_status() {\n\n\t\tif ( ! file_exists( $this->get_status_filepath() ) ) {\n\t\t\treturn '';\n\t\t}\n\n\t\t$status = json_decode( file_get_contents( $this->get_status_filepath() ) );\n\n\t\tif ( ! empty( $status->status ) ) {\n\t\t\treturn $status->status;\n\t\t}\n\n\t\treturn '';\n\n\t}\n\n\t/**\n\t * Set the status of the running backup\n\t *\n\t * @param string $message\n\t *\n\t * @return null\n\t */\n\tpublic function set_status( $message ) {\n\n\t\t// If start hasn't been called yet then we wont' have a backup filename\n\t\tif ( ! $this->filename ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$status = json_encode( (object) array(\n\t\t\t'filename' => $this->filename,\n\t\t\t'started'  => $this->get_start_time(),\n\t\t\t'status'   => $message,\n\t\t) );\n\n\t\tfile_put_contents( $this->get_status_filepath(), $status );\n\n\t}\n\n\t/**\n\t * Get the time that the current running backup was started\n\t *\n\t * @return int $timestamp\n\t */\n\tpublic function get_start_time() {\n\n\t\tif ( ! file_exists( $this->get_status_filepath() ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t$status = json_decode( file_get_contents( $this->get_status_filepath() ) );\n\n\t\tif ( ! empty( $status->started ) && (int) (string) $status->started === $status->started ) {\n\t\t\treturn $status->started;\n\t\t}\n\n\t\treturn time();\n\n\t}\n\n\t/**\n\t * Get the path to the backup running file that stores the running backup status\n\t *\n\t * @return string\n\t */\n\tpublic function get_status_filepath() {\n\t\treturn Path::get_path() . '/.backup-' . $this->id . '-running';\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup-utilities.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse Symfony\\Component\\Process\\Process as Process;\n\n/**\n * A set of Backup Utility functions\n */\nclass Backup_Utilities {\n\n\t/**\n\t * Checks whether Safe Mode is currently on\n\t *\n\t * @param  string  $ini_get_callback By default we use `ini_get` to check for\n\t *                                   the Safe Mode setting but this can be\n\t *                                   overridden for testing purposes.\n\t *\n\t * @return boolean                   Whether Safe Mode is on or off.\n\t */\n\tpublic static function is_safe_mode_on( $ini_get_callback = 'ini_get' ) {\n\n\t\t$safe_mode = @call_user_func( $ini_get_callback, 'safe_mode' );\n\n\t\tif ( $safe_mode && strtolower( $safe_mode ) !== 'off' ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Attempt to work out path to a cli executable.\n\t *\n\t * @param  array $paths An array of paths to check against.\n\t *\n\t * @return string|false        The path to the executable.\n\t */\n\tpublic static function get_executable_path( $paths ) {\n\n\t\tif ( ! function_exists( 'proc_open' ) || ! function_exists( 'proc_close' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$paths = array_map( 'wp_normalize_path', $paths );\n\n\t\tforeach ( $paths as $path ) {\n\n\t\t\t/**\n\t\t\t * Attempt to call `--version` on each path, the one which works\n\t\t\t * must be the correct path.\n\t\t\t */\n\t\t\t $process = new Process( $path . ' --version' );\n\n\t\t\ttry {\n\t\t\t\t$process->run();\n\t\t\t} catch ( \\Exception $e ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( $process->isSuccessful() ) {\n\t\t\t\treturn $path;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t}\n}\n"
  },
  {
    "path": "classes/backup/class-backup.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Backup {\n\n\tprivate $excludes;\n\tpublic $warnings = array();\n\tpublic $errors = array();\n\tprivate $backup_filename;\n\tprivate $database_dump_filename;\n\tprivate $backup_filepath = '';\n\tprivate $database_dump_filepath = '';\n\tprivate $status = null;\n\tprivate $type = 'complete';\n\n\tpublic function __construct( $backup_filename, $database_dump_filename = null ) {\n\t\t$this->backup_filename = $backup_filename;\n\t\t$this->database_dump_filename = $database_dump_filename;\n\t}\n\n\tpublic function set_type( $type ) {\n\t\t$this->type = $type;\n\t}\n\n\tpublic function set_backup_filename( $filename ) {\n\t\t$this->backup_filename = $filename;\n\t}\n\n\tpublic function set_status( Backup_Status $status ) {\n\t\t$this->status = $status;\n\t}\n\n\tpublic function set_excludes( Excludes $excludes ) {\n\t\t$this->excludes = $excludes;\n\t}\n\n\tpublic function run() {\n\n\t\tPath::get_instance()->cleanup();\n\n\t\tif ( 'file' !== $this->type ) {\n\t\t\t$this->backup_database();\n\t\t}\n\n\t\tif ( 'database' !== $this->type ) {\n\t\t\t$this->backup_files();\n\t\t}\n\n\t\tPath::get_instance()->cleanup();\n\n\t}\n\n\tpublic function backup_database() {\n\n\t\tif ( $this->status ) {\n\t\t\t$this->status->set_status( __( 'Backing up database...', 'backupwordpress' ) );\n\t\t}\n\n\t\t$database_backup_engines = apply_filters( 'hmbkp_database_backup_engines', array(\n\t\t\tnew Mysqldump_Database_Backup_Engine,\n\t\t\tnew IMysqldump_Database_Backup_Engine,\n\t\t) );\n\n\t\t// Set the file backup engine settings\n\t\tif (  $this->database_dump_filename ) {\n\t\t\tforeach ( $database_backup_engines as &$backup_engine ) {\n\t\t\t\t$backup_engine->set_backup_filename( $this->database_dump_filename );\n\t\t\t}\n\t\t}\n\n\t\t// Dump the database\n\t\t$database_dump = $this->perform_backup( $database_backup_engines );\n\n\t\tif ( is_a( $database_dump, __NAMESPACE__ . '\\\\Backup_Engine' ) ) {\n\t\t\t$this->database_dump_filepath = $database_dump->get_backup_filepath();\n\t\t}\n\n\t\t// Fire up the file backup engines\n\t\t$file_backup_engines = apply_filters( 'hmbkp_file_backup_engines', array(\n\t\t\tnew Zip_File_Backup_Engine,\n\t\t\tnew Zip_Archive_File_Backup_Engine,\n\t\t) );\n\n\t\t// Set the file backup engine settings\n\t\tforeach ( $file_backup_engines as &$backup_engine ) {\n\t\t\t$backup_engine->set_backup_filename( $this->backup_filename );\n\t\t\t$backup_engine->set_excludes( new Excludes( array( '*.zip', 'index.html', '.htaccess', '.*-running', '.files' ) ) );\n\t\t}\n\n\t\t// Zip up the database dump\n\t\t$root = Path::get_root();\n\t\tPath::get_instance()->set_root( Path::get_path() );\n\t\t$file_backup = $this->perform_backup( $file_backup_engines );\n\t\tPath::get_instance()->set_root( $root );\n\n\t\tif ( is_a( $file_backup, __NAMESPACE__ . '\\\\Backup_Engine' ) ) {\n\t\t\t$this->backup_filepath = $file_backup->get_backup_filepath();\n\t\t}\n\n\t\t// Delete the Database Backup now that we've zipped it up\n\t\tif ( file_exists( $this->database_dump_filepath ) ) {\n\t\t\tunlink( $this->database_dump_filepath );\n\t\t}\n\n\t}\n\n\tpublic function backup_files() {\n\n\t\tif ( $this->status ) {\n\t\t\t$this->status->set_status( __( 'Backing up files...', 'backupwordpress' ) );\n\t\t}\n\n\t\t// Fire up the file backup engines\n\t\t$backup_engines = apply_filters( 'hmbkp_file_backup_engines', array(\n\t\t\tnew Zip_File_Backup_Engine,\n\t\t\tnew Zip_Archive_File_Backup_Engine,\n\t\t) );\n\n\t\t// Set the file backup engine settings\n\t\tforeach ( $backup_engines as &$backup_engine ) {\n\t\t\t$backup_engine->set_backup_filename( $this->backup_filename );\n\t\t\tif ( $this->excludes ) {\n\t\t\t\t$backup_engine->set_excludes( $this->excludes );\n\t\t\t}\n\t\t}\n\n\t\t$file_backup = $this->perform_backup( $backup_engines );\n\n\t\tif ( is_a( $file_backup, __NAMESPACE__ . '\\\\Backup_Engine' ) ) {\n\t\t\t$this->backup_filepath = $file_backup->get_backup_filepath();\n\t\t}\n\n\t}\n\n\t/**\n\t * Perform the backup by iterating through each Backup_Engine in turn until\n\t * we find one which works. If a backup filename or any excludes have been\n\t * set then those are passed to each Backup_Engine.\n\t *\n\t * @return Backup_Engine|false The successful backup engine or false on failure.\n\t */\n\tpublic function perform_backup( array $backup_engines ) {\n\n\t\tforeach ( $backup_engines as $backup_engine ) {\n\n\t\t\t/**\n\t\t\t * If the backup_engine completes the backup then we\n\t\t\t * clear any errors or warnings from previously failed backup_engines\n\t\t\t * and return the successful one.\n\t\t\t */\n\t\t\tif ( $backup_engine->backup() ) {\n\t\t\t\t$this->errors = array();\n\t\t\t\t$this->warnings = $backup_engine->get_warnings();\n\t\t\t\treturn $backup_engine;\n\t\t\t}\n\n\t\t\t// Store all the errors and warnings as they are shown if all engines fail\n\t\t\t$this->warnings = array_merge( $this->warnings, $backup_engine->get_warnings() );\n\t\t\t$this->errors   = array_merge( $this->errors, $backup_engine->get_errors() );\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tpublic function get_warnings() {\n\t\treturn $this->warnings;\n\t}\n\n\tpublic function get_errors() {\n\t\treturn $this->errors;\n\t}\n\n\t/**\n\t * Add an warning to the errors warnings.\n\t *\n\t * A warning is always treat as non-fatal and should only be used for recoverable\n\t * issues with the backup process.\n\t *\n\t * @param  string $context The context for the warning.\n\t * @param  string $warning The warning that was encountered.\n\t */\n\tpublic function warning( $context, $warning ) {\n\n\t\tif ( empty( $context ) || empty( $warning ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure we don't store duplicate warnings by md5'ing the error as the key\n\t\t$this->warnings[ $context ][ md5( implode( ':', (array) $warning ) ) ] = $warning;\n\n\t}\n\n\t/**\n\t * Back compat with old error method\n\t *\n\t * Only the backup engines themselves can fire fatal errors\n\t *\n\t * @deprecated 3.4 Backup->warning( $context, $warning )\n\t */\n\tpublic function error( $context, $message ) {\n\t\t_deprecated_function( __FUNCTION__, '3.4', 'Backup->warning( $context, $warning )' );\n\t\t$this->warning( $context, $message );\n\t}\n\n\tpublic function get_database_backup_filepath() {\n\t\treturn $this->database_dump_filepath;\n\t}\n\n\tpublic function get_backup_filepath() {\n\t\treturn $this->backup_filepath;\n\t}\n\n\t/**\n\t * Back compat with old method name\n\t *\n\t * @see Backup::get_backup_filepath()\n\t * @deprecated 3.4 Use Backup::get_backup_filepath()\n\t */\n\tpublic function get_archive_filepath() {\n\t\t_deprecated_function( __FUNCTION__, '3.4', 'get_backup_filepath()' );\n\t\treturn $this->get_backup_filepath();\n\t}\n}\n"
  },
  {
    "path": "classes/class-backupwordpress-wp-cli-command.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Implement backup command\n *\n * @todo fix\n * @package wp-cli\n * @subpackage commands/third-party\n */\nclass CLI extends \\WP_CLI_Command {\n\n\t/**\n\t * Perform a Backup.\n\t *\n\t * ## OPTIONS\n\t *\n\t * [--files_only]\n\t * : Backup files only, default to off\n\t *\n\t * [--database_only]\n\t * : Backup database only, defaults to off\n\t *\n\t * [--destination]\n\t * : dir that the backup should be save in, defaults to your existing backups directory\n\t *\n\t * [--root]\n\t * : dir that should be backed up, defaults to site root.\n\t *\n\t * [--archive_filename]\n\t * : filename for the resulting zip file\n\t *\n\t * [--excludes]\n\t * : list of paths you'd like to exclude\n\t *\n\t * ## Usage\n\t *\n\t *     wp backupwordpress backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]\n\t *\n\t * @todo errors should be bubbled from Backup, Scheduled_Backup and the like instead of being repeated.\n\t */\n\tpublic function backup( $args, $assoc_args ) {\n\n\t\tadd_action( 'hmbkp_mysqldump_started', function () {\n\t\t\t\\WP_CLI::line( __( 'Backup: Dumping database...', 'backupwordpress' ) );\n\t\t} );\n\n\t\tadd_action( 'hmbkp_archive_started', function () {\n\t\t\t\\WP_CLI::line( __( 'Backup: Zipping everything up...', 'backupwordpress' ) );\n\t\t} );\n\n\t\tif ( ! empty( $assoc_args['destination'] ) ) {\n\t\t\tPath::get_instance()->set_path( $assoc_args['destination'] );\n\t\t}\n\n\t\tPath::get_instance()->cleanup();\n\n\t\tif ( ! empty( $assoc_args['root'] ) ) {\n\t\t\tPath::get_instance()->set_root( $assoc_args['root'] );\n\t\t}\n\n\t\tif ( ( ! is_dir( Path::get_path() ) ) ) {\n\t\t\t\\WP_CLI::error( __( 'Invalid backup path', 'backupwordpress' ) );\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! is_dir( Path::get_root() ) || ! is_readable( Path::get_root() ) ) {\n\t\t\t\\WP_CLI::error( __( 'Invalid root path', 'backupwordpress' ) );\n\t\t\treturn false;\n\t\t}\n\n\t\t$filename = 'backup.zip';\n\n\t\tif ( isset( $assoc_args['archive_filename'] ) ) {\n\t\t\t$filename = $assoc_args['archive_filename'];\n\t\t}\n\n\t\t$hm_backup = new Backup( $filename );\n\n\t\tif ( ! empty( $assoc_args['files_only'] ) ) {\n\t\t\t$hm_backup->set_type( 'file' );\n\t\t}\n\n\t\tif ( ! empty( $assoc_args['database_only'] ) ) {\n\t\t\t$hm_backup->set_type( 'database' );\n\t\t}\n\n\t\tif ( ! empty( $assoc_args['excludes'] ) ) {\n\t\t\t$hm_backup->set_excludes( new Excludes( $assoc_args['excludes'] ) );\n\t\t}\n\n\t\t$hm_backup->run();\n\n\t\tif ( file_exists( $hm_backup->get_backup_filepath() ) ) {\n\t\t\t\\WP_CLI::success( __( 'Backup Complete: ', 'backupwordpress' ) . $hm_backup->get_backup_filepath() );\n\t\t} else {\n\t\t\t\\WP_CLI::error( __( 'Backup Failed', 'backupwordpress' ) );\n\t\t}\n\n\t}\n}\n\n\\WP_CLI::add_command( 'backupwordpress', 'HM\\BackUpWordPress\\CLI' );\n"
  },
  {
    "path": "classes/class-email-service.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Email notifications for backups\n *\n * @extends Service\n */\nclass Email_Service extends Service {\n\n\t/**\n\t * Human readable name for this service\n\t * @var string\n\t */\n\tpublic $name = 'Email';\n\n\t/**\n\t * Output the email form field\n\t *\n\t * @access  public\n\t */\n\tpublic function field() {\n\n\t?>\n\n\t\t<tr>\n\n\t\t\t<th scope=\"row\">\n\t\t\t\t<label for=\"<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>\"><?php _e( 'Email notification', 'backupwordpress' ); ?></label>\n\t\t\t</th>\n\n\t\t\t<td>\n\t\t\t\t<input type=\"text\" id=\"<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>\" name=\"<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>\" value=\"<?php echo esc_attr( $this->get_field_value( 'email' ) ); ?>\" placeholder=\"name@youremail.com\" />\n\n\t\t\t\t<p class=\"description\"><?php printf( __( 'Receive a notification email when a backup completes. If the backup is small enough (&lt; %s), then it will be attached to the email. Separate multiple email addresses with a comma.', 'backupwordpress' ), '<code>' . size_format( get_max_attachment_size() ) . '</code>' ); ?></p>\n\t\t\t</td>\n\n\t\t</tr>\n\n\t<?php }\n\n\t/**\n\t * Not used as we only need a field\n\t *\n\t * @see  field\n\t * @return string Empty string\n\t */\n\tpublic function form() {\n\t\treturn '';\n\t}\n\n\tpublic static function constant() {\n\n\t?>\n\n\t\t<tr<?php if ( defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) ) { ?> class=\"hmbkp_active\"<?php } ?>>\n\n\t\t\t<td><code>HMBKP_ATTACHMENT_MAX_FILESIZE</code></td>\n\n\t\t\t<td>\n\n\t\t\t\t<?php if ( defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) ) { ?>\n\t\t\t\t<p><?php printf( __( 'You\\'ve set it to: %s', 'backupwordpress' ), '<code>' . HMBKP_ATTACHMENT_MAX_FILESIZE . '</code>' ); ?></p>\n\t\t\t\t<?php } ?>\n\n\t\t\t\t<p><?php printf( __( 'The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.', 'backupwordpress' ), '<code>10MB</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_ATTACHMENT_MAX_FILESIZE', '25MB' );</code></p>\n\n\t\t\t</td>\n\n\t\t</tr>\n\n\t<?php }\n\n\t/**\n\t * The sentence fragment that is output as part of the schedule sentence\n\t *\n\t * @return string\n\t */\n\tpublic function display() {\n\n\t\tif ( $emails = $this->get_email_address_array() ) {\n\n\t\t\t$email = '<code>' . implode( '</code>, <code>', array_map( 'esc_html', $emails ) ) . '</code>';\n\n\t\t\treturn sprintf( __( 'Send an email notification to %s', 'backupwordpress' ), $email );\n\n\t\t}\n\n\t\treturn '';\n\n\t}\n\n\t/**\n\t * Used to determine if the service is in use or not\n\t */\n\tpublic function is_service_active() {\n\t\treturn (bool) $this->get_email_address_array();\n\t}\n\n\t/**\n\t * Validate the email and return an error if validation fails\n\t *\n\t * @param array &$new_data Array of new data, passed by reference.\n\t * @param array $old_data  The data we are replacing.\n\t *\n\t * @return array|null      Null on success, array of errors if validation failed.\n\t */\n\tpublic function update( &$new_data, $old_data ) {\n\n\t\t$errors = array();\n\n\t\tif ( isset( $new_data['email'] ) ) {\n\n\t\t\tif ( ! empty( $new_data['email'] ) ) {\n\n\t\t\t\tforeach ( explode( ',', $new_data['email'] ) as $email ) {\n\n\t\t\t\t\t$email = trim( $email );\n\n\t\t\t\t\tif ( ! is_email( $email ) ) {\n\t\t\t\t\t\t$errors['email'] = sprintf( __( '%s isn\\'t a valid email',  'backupwordpress' ), $email );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! empty( $errors['email'] ) ) {\n\t\t\t\t$new_data['email'] = '';\n\t\t\t}\n\n\t\t\treturn $errors;\n\n\t\t}\n\t}\n\n\t/**\n\t * Get an array or validated email address's\n\t * @return array An array of validated email address's\n\t */\n\tprivate function get_email_address_array() {\n\t\t$emails = array_map( 'trim', explode( ',', $this->get_field_value( 'email' ) ) );\n\t\treturn array_filter( array_unique( $emails ), 'is_email' );\n\t}\n\n\t/**\n\t * Fire the email notification on the hmbkp_backup_complete\n\t *\n\t * @see  Backup::do_action\n\t * @param  string $action The action received from the backup\n\t */\n\tpublic function action( $action, Backup $backup ) {\n\n\t\tif ( 'hmbkp_backup_complete' === $action && $this->get_email_address_array() ) {\n\n\t\t\t$file = $backup->get_backup_filepath();\n\n\t\t\t$sent = false;\n\n\t\t\t$download = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL );\n\t\t\t$domain   = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH );\n\n\t\t\t$headers  = 'From: BackUpWordPress <' . apply_filters( 'hmbkp_from_email', get_bloginfo( 'admin_email' ) ) . '>' . \"\\r\\n\";\n\n\t\t\t// The backup failed, send a message saying as much\n\t\t\tif ( ! file_exists( $file ) && ( $errors = array_merge( $backup->get_errors(), $backup->get_warnings() ) ) ) {\n\n\t\t\t\t$error_message = '';\n\n\t\t\t\tforeach ( $errors as $error_set ) {\n\t\t\t\t\t$error_message .= implode( \"\\n - \", $error_set );\n\t\t\t\t}\n\n\t\t\t\tif ( $error_message ) {\n\t\t\t\t\t$error_message = ' - ' . $error_message;\n\t\t\t\t}\n\n\t\t\t\t$subject = sprintf( __( 'Backup of %s Failed', 'backupwordpress' ), $domain );\n\n\t\t\t\t$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, '<a href=\"http://wordpress.org/support/plugin/backupwordpress\" title=\"support forums\" target=\"_blank\">', '</a>' );\n\n\t\t\t\twp_mail( $this->get_email_address_array(), $subject, $message, $headers );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t$subject = sprintf( __( 'Backup of %s', 'backupwordpress' ), $domain );\n\n\t\t\t// If it's larger than the max attachment size limit assume it's not going to be able to send the backup\n\t\t\tif ( @filesize( $file ) < get_max_attachment_size() ) {\n\n\t\t\t\t$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 );\n\n\t\t\t\t$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers, $file );\n\n\t\t\t}\n\n\t\t\t// If we didn't send the email above then send just the notification\n\t\t\tif ( ! $sent ) {\n\n\t\t\t\t$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 );\n\t\t\t\twp_mail( $this->get_email_address_array(), $subject, $message, $headers );\n\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static function intercom_data() {\n\t\treturn array();\n\t}\n\n\tpublic static function intercom_data_html() {}\n}\n\n// Register the service\nServices::register( __FILE__, 'HM\\BackUpWordPress\\Email_Service' );\n"
  },
  {
    "path": "classes/class-excludes.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Manages exclude rules\n */\nclass Excludes {\n\n\t/**\n\t * The array of exclude rules.\n\t *\n\t * @var array\n\t */\n\tprivate $excludes;\n\n\t/**\n\t * The array of default exclude rules.\n\t *\n\t * @var array\n\t */\n\tprivate $default_excludes = array(\n\t\t'.svn',\n\t\t'_svn',\n\t\t'CVS',\n\t\t'_darcs',\n\t\t'.arch-params',\n\t\t'.monotone',\n\t\t'.bzr',\n\t\t'.git',\n\t\t'.hg',\n\t\t'backupwp',\n\t\t'backwpup-*',\n\t\t'updraft',\n\t\t'wp-snapshots',\n\t\t'backupbuddy_backups',\n\t\t'pb_backupbuddy',\n\t\t'backup-db',\n\t\t'Envato-backups',\n\t\t'managewp',\n\t\t'backupwordpress-*-backups',\n\t);\n\n\tpublic function __construct( $excludes = array() ) {\n\t\t$this->set_excludes( $excludes );\n\t}\n\n\t/**\n\t * Set the exclude rules.\n\t *\n\t * Excludes rules should be a complete or partial directory or file path.\n\t * Wildcards can be specified with the * character.\n\t *\n\t * @param string|array $excludes The list of exclude rules, accepts either\n\t *                               a comma separated list or an array.\n\t */\n\tpublic function set_excludes( $excludes ) {\n\n\t\tif ( is_string( $excludes ) ) {\n\t\t\t$excludes = explode( ',', $excludes );\n\t\t}\n\n\t\t$this->excludes = $excludes;\n\t}\n\n\t/**\n\t * Get the excludes.\n\t *\n\t * Returns any user set excludes as well as the default list.\n\t *\n\t * @return array The array of exclude rules.\n\t */\n\tpublic function get_excludes() {\n\t\treturn array_merge( $this->get_default_excludes(), $this->get_user_excludes() );\n\t}\n\n\t/**\n\t * Get the excludes prepared for use with regex.\n\t *\n\t * The primary difference being that any wildcard (*) rules are converted to the regex\n\t * fragment `[\\s\\S]*?`.\n\t *\n\t * @return array The array of exclude rules.\n\t */\n\tpublic function get_excludes_for_regex() {\n\n\t\t$excludes = $this->get_excludes();\n\n\t\t// Prepare the exclude rules.\n\t\tforeach ( $excludes as &$exclude ) {\n\n\t\t\tif ( strpos( $exclude, '*' ) !== false ) {\n\n\t\t\t\t// Escape slashes.\n\t\t\t\t$exclude = str_replace( '/', '\\/', $exclude );\n\n\t\t\t\t// Convert WildCards to regex.\n\t\t\t\t$exclude = str_replace( '*', '[\\s\\S]*?', $exclude );\n\n\t\t\t\t// Wrap in slashes.\n\t\t\t\t$exclude = '/' . $exclude . '/';\n\n\t\t\t}\n\t\t}\n\n\t\treturn $excludes;\n\t}\n\n\t/**\n\t * Get the user defined excludes.\n\t *\n\t * @return array The array of excludes.\n\t */\n\tpublic function get_user_excludes() {\n\n\t\t$excludes = $this->excludes;\n\n\t\t// If path() is inside root(), exclude it.\n\t\tif ( strpos( Path::get_path(), Path::get_root() ) !== false && Path::get_root() !== Path::get_path() ) {\n\t\t\tarray_unshift( $excludes, trailingslashit( Path::get_path() ) );\n\t\t}\n\n\t\treturn $this->normalize( $excludes );\n\t}\n\n\t/**\n\t * Get the array of default excludes.\n\t *\n\t * @return array The array of excludes.\n\t */\n\tpublic function get_default_excludes() {\n\n\t\t$excludes = array();\n\n\t\t// Back compat with the old constant.\n\t\tif ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE ) {\n\t\t\t$excludes = explode( ',', implode( ',', (array) HMBKP_EXCLUDE ) );\n\t\t}\n\n\t\t$excludes = array_merge( $this->default_excludes, $excludes );\n\n\t\t/**\n\t\t * Allow the default excludes list to be modified.\n\t\t *\n\t\t * @param $excludes The array of exclude rules.\n\t\t */\n\t\t$excludes = apply_filters( 'hmbkp_default_excludes', $excludes );\n\n\t\treturn $this->normalize( $excludes );\n\t}\n\n\t/**\n\t * Normalise the exclude rules so they are ready to work with.\n\t *\n\t * @param array $excludes The array of exclude rules to normalise.\n\t *\n\t * @return array          The array of normalised rules.\n\t */\n\tpublic function normalize( $excludes ) {\n\n\t\t$excludes = array_map(\n\t\t\tfunction( $exclude ) {\n\n\t\t\t\t// Convert absolute paths to relative.\n\t\t\t\t$exclude = str_replace( PATH::get_root(), '', wp_normalize_path( $exclude ) );\n\n\t\t\t\t// Trim the slashes.\n\t\t\t\t$exclude = trim( $exclude );\n\t\t\t\t$exclude = ltrim( $exclude, '/' );\n\t\t\t\t$exclude = untrailingslashit( $exclude );\n\n\t\t\t\treturn $exclude;\n\t\t\t},\n\t\t\t$excludes\n\t\t);\n\n\t\t// Remove duplicate or empty rules.\n\t\t$excludes = array_unique( $excludes );\n\t\t$excludes = array_filter( $excludes );\n\n\t\treturn $excludes;\n\t}\n\n\t/**\n\t * Check if a file is excluded,\n\t * i.e. excluded directly or is in an excluded folder.\n\t *\n\t * @param \\SplFileInfo $file File to check if it's excluded.\n\t *\n\t * @return bool|null         True if file is excluded, false otherwise.\n\t *                           Null - if it's not a file.\n\t */\n\tpublic function is_file_excluded( \\SplFileInfo $file ) {\n\n\t\t$exclude_string    = implode( '|', $this->get_excludes_for_regex() );\n\t\t$file_path_no_root = str_ireplace(\n\t\t\ttrailingslashit( Path::get_root() ),\n\t\t\t'',\n\t\t\twp_normalize_path( $file->getPathname() )\n\t\t);\n\n\t\tif ( $exclude_string && preg_match( '(' . $exclude_string . ')', $file_path_no_root ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "classes/class-extensions.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Class Extensions\n * @package HM\\BackUpWordPress\n */\nfinal class Extensions {\n\n\t/**\n\t * Contains the instantiated Extensions instance.\n\t *\n\t * @var Extensions $this->instance\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * Holds the root URL of the API.\n\t *\n\t * @var string\n\t */\n\tprotected $root_url = '';\n\n\t/**\n\t * Extensions constructor.\n\t *\n\t */\n\tprivate function __construct() {\n\n\t\t$this->root_url  = 'https://bwp.hmn.md/wp-json/wp/v2/';\n\n\t}\n\n\tpublic function __wakeup() { throw new \\Exception('may not be serialized'); }\n\n\tpublic function __clone() { throw new \\Exception('may not be cloned'); }\n\n\t/**\n\t * Returns the *Singleton* instance of this class.\n\t *\n\t * @staticvar Extensions $instance The *Singleton* instances of this class.\n\t *\n\t * @return Extensions The *Singleton* instance.\n\t */\n\tpublic static function get_instance() {\n\n\t\tif ( ! ( self::$instance instanceof Extensions ) ) {\n\n\t\t\tself::$instance = new Extensions();\n\n\t\t}\n\n\t\treturn self::$instance;\n\n\t}\n\n\t/**\n\t * Parses the body of the API response and returns it.\n\t *\n\t * @return array|bool|mixed|object\n\t */\n\tpublic function get_edd_data() {\n\n\t\t$response = $this->fetch( 'edd-downloads' );\n\n\t\tif ( is_wp_error( $response ) || empty( $response['body'] ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn json_decode( $response['body'] );\n\n\t}\n\n\t/**\n\t * Makes a request to the JSON API or retrieves the cached response. Caches the response for one day.\n\t *\n\t * @param $endpoint\n\t * @param int $ttl\n\t *\n\t * @return array|mixed|\\WP_Error\n\t */\n\tprotected function fetch( $endpoint, $ttl = DAY_IN_SECONDS ) {\n\n\t\t$request_url = $this->root_url . $endpoint;\n\n\t\t$cache_key = md5( $request_url );\n\n\t\t$cached = get_transient( 'bwp_' . $cache_key );\n\n\t\tif ( $cached ) {\n\t\t\treturn $cached;\n\t\t}\n\n\t\t$response = wp_remote_get( $request_url );\n\n\t\tif ( 200 !== wp_remote_retrieve_response_code( $response ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp-error', 'Unable to fetch API response' );\n\t\t}\n\n\t\tset_transient( 'bwp_' . $cache_key, $response, $ttl );\n\n\t\treturn $response;\n\n\t}\n\n}\n"
  },
  {
    "path": "classes/class-notices.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Class for managing notices\n *\n * Notices are messages along with an associated context, by default\n * they are stored in the db and thus persist between page loads.\n */\nclass Notices {\n\n\t/**\n\t * The array of notice messages\n\t *\n\t * This is a multidimensional array of\n\t * `array( context => array( 'message' ) );``\n\t *\n\t * @var array\n\t */\n\tprivate $notices = array();\n\n\t/**\n\t * Contains the instantiated Notices instance\n\t *\n\t * @var Notices $this->get_instance\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * Protected constructor to prevent creating a new instance of the\n\t * *Singleton* via the `new` operator from outside of this class.\n\t */\n\tprotected function __construct() {}\n\n\t/**\n\t * Prevent cloning of the instance of the *Singleton* instance.\n\t */\n\tpublic function __clone() { throw new \\Exception('may not be cloned'); }\n\n\t/**\n\t * Prevent unserializing of the *Singleton* instance.\n\t */\n\tpublic function __wakeup() { throw new \\Exception('may not be serialized'); }\n\n\t/**\n\t * Returns the *Singleton* instance of this class.\n\t *\n\t * @staticvar Notices $instance The *Singleton* instances of this class.\n\t *\n\t * @return Notices The *Singleton* instance.\n\t */\n\tpublic static function get_instance() {\n\n\t\tif ( ! ( self::$instance instanceof Notices ) ) {\n\t\t\tself::$instance = new Notices();\n\t\t}\n\n\t\treturn self::$instance;\n\n\t}\n\n\t/**\n\t * Set an array of notice messages for a specific context\n\t *\n\t * @param string  $context    The context of the notice message\n\t * @param array   $messages   The array of messages\n\t * @param boolean $persistent Whether the notice should persist via the database. Defaults to true.\n\t */\n\tpublic function set_notices( $context, array $messages, $persistent = true ) {\n\n\t\t// Clear any empty messages and avoid duplicates\n\t\t$messages = array_unique( array_filter( $messages ) );\n\n\t\tif ( empty( $context ) || empty( $messages ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$this->notices[ $context ] = array_merge( $this->get_notices( $context ), $messages );\n\n\t\tif ( $persistent ) {\n\n\t\t\t$new_notices = $notices = $this->get_persistent_notices();\n\n\t\t\t// Make sure we merge new notices into to any existing notices\n\t\t\tif ( ! empty( $notices[ $context ] ) ) {\n\t\t\t\t$new_notices[ $context ] = array_unique( array_merge( $new_notices[ $context ], $messages ) );\n\t\t\t} else {\n\t\t\t\t$new_notices[ $context ] = $messages;\n\t\t\t}\n\n\t\t\t// Only update the database if the notice array has changed\n\t\t\tif ( $new_notices !== $notices ) {\n\t\t\t\tupdate_option( 'hmbkp_notices', $new_notices );\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Fetch an array of notices messages\n\t *\n\t * If you specify a context then you'll just get messages for that context otherwise\n\t * you get multidimensional array of all contexts and their messages.\n\t *\n\t * @param string $context The context that you'd like the messages for\n\t *\n\t * @return array The array of notice messages\n\t */\n\tpublic function get_notices( $context = '' ) {\n\n\t\t$notices = $this->get_all_notices();\n\n\t\tif ( ! empty( $notices ) ) {\n\n\t\t\tif ( ! empty( $context ) ) {\n\t\t\t\treturn isset( $notices[ $context ] ) ? $notices[ $context ] : array();\n\t\t\t}\n\n\t\t\treturn $notices;\n\t\t}\n\n\t\treturn array();\n\n\t}\n\n\t/**\n\t * Get both standard and persistent notices\n\t *\n\t * @return array The array of contexts and notices\n\t */\n\tprivate function get_all_notices() {\n\t\treturn array_map( 'array_unique', array_merge_recursive( $this->notices, $this->get_persistent_notices() ) );\n\t}\n\n\t/**\n\t * Load the persistent notices from the database\n\t *\n\t * @return array The array of notices\n\t */\n\tprivate function get_persistent_notices() {\n\t\t$notices = get_option( 'hmbkp_notices' );\n\t\treturn ! empty( $notices ) ? $notices : array();\n\t}\n\n\t/**\n\t * Clear all notices including persistent ones\n\t */\n\tpublic function clear_all_notices() {\n\t\t$this->notices = array();\n\t\tdelete_option( 'hmbkp_notices' );\n\t}\n}\n"
  },
  {
    "path": "classes/class-path.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Manages both the backup path and site root\n *\n * Handles calculating & protecting the directory that backups will be stored in\n * as well as the directory that is being backed up\n */\nclass Path {\n\n\t/**\n\t * The path to the directory that backup files are stored in\n\t *\n\t * @var string $this->path\n\t */\n\tprivate $path;\n\n\t/**\n\t * The path to the directory that will be backed up\n\t *\n\t * @var string $this->root\n\t */\n\tprivate $root;\n\n\t/**\n\t * The path to the directory that backup files are stored in\n\t *\n\t * @var string $this->path\n\t */\n\tprivate $custom_path;\n\n\t/**\n\t * Contains the instantiated Path instance\n\t *\n\t * @var Path $this->instance\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * Protected constructor to prevent creating a new instance of the\n\t * *Singleton* via the `new` operator from outside of this class.\n\t */\n\tprotected function __construct() {}\n\n\t/**\n\t * Prevent cloning of the instance of the *Singleton* instance.\n\t */\n\tpublic function __clone() { throw new \\Exception('may not be cloned'); }\n\n\t/**\n\t * Prevent unserializing of the *Singleton* instance.\n\t */\n\tpublic function __wakeup() { throw new \\Exception('may not be serialized'); }\n\n\t/**\n\t * Returns the *Singleton* instance of this class.\n\t *\n\t * @staticvar Path $instance The *Singleton* instances of this class.\n\t *\n\t * @return Path The *Singleton* instance.\n\t */\n\tpublic static function get_instance() {\n\n\t\tif ( ! ( self::$instance instanceof Path ) ) {\n\t\t\tself::$instance = new Path();\n\t\t}\n\n\t\treturn self::$instance;\n\t}\n\n\t/**\n\t * Convenience method for quickly grabbing the path\n\t */\n\tpublic static function get_path() {\n\t\treturn self::get_instance()->get_calculated_path();\n\t}\n\n\t/**\n\t * Convenience method for quickly grabbing the root\n\t */\n\tpublic static function get_root() {\n\t\treturn self::get_instance()->get_calculated_root();\n\t}\n\n\t/**\n\t * Calculate the path to the site \"home\" directory.\n\t *\n\t * The home directory is the path equivalent to the home_url. That is,\n\t * the path to the true root of the website. In situations where WordPress is\n\t * installed in a subdirectory the home path is different to ABSPATH\n\t *\n\t * @param string $site_path The site_path to use when calculating the home path, defaults to ABSPATH\n\t */\n\tpublic static function get_home_path( $site_path = ABSPATH ) {\n\n\t\tif ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT ) {\n\t\t\treturn wp_normalize_path( HMBKP_ROOT );\n\t\t}\n\n\t\t$home_path = wp_normalize_path( $site_path );\n\n\t\tif ( path_in_php_open_basedir( dirname( $site_path ) ) ) {\n\n\t\t\t$home    = set_url_scheme( get_option( 'home' ), 'http' );\n\t\t\t$siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' );\n\t\t\tif ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) {\n\t\t\t\t$wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */\n\t\t\t\t$pos = strripos( wp_normalize_path( $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) );\n\t\t\t\t$home_path = substr( wp_normalize_path( $_SERVER['SCRIPT_FILENAME'] ), 0, $pos );\n\t\t\t\t$home_path = trailingslashit( $home_path );\n\t\t\t}\n\n\t\t\tif ( is_multisite() ) {\n\t\t\t\t$slashed_home      = trailingslashit( get_option( 'home' ) );\n\t\t\t\t$base              = parse_url( $slashed_home, PHP_URL_PATH );\n\t\t\t\t$document_root_fix = wp_normalize_path( realpath( $_SERVER['DOCUMENT_ROOT'] ) );\n\t\t\t\t$abspath_fix       = wp_normalize_path( ABSPATH );\n\t\t\t\t$home_path         = strpos( $abspath_fix, $document_root_fix ) === 0 ? $document_root_fix . $base : $home_path;\n\t\t\t}\n\t\t}\n\n\t\treturn wp_normalize_path( untrailingslashit( $home_path ) );\n\n\t}\n\n\t/**\n\t * get the calculated path to the directory where backups will be stored\n\t */\n\tprivate function get_calculated_path() {\n\n\t\t// Calculate the path if needed\n\t\tif ( empty( $this->path ) || ! wp_is_writable( $this->path ) ) {\n\t\t\t$this->calculate_path();\n\t\t}\n\n\t\t// Ensure the backup directory is protected\n\t\t$this->protect_path();\n\n\t\treturn wp_normalize_path( $this->path );\n\n\t}\n\n\t/**\n\t * Set the path directly, overriding the default\n\t *\n\t * @param $path\n\t */\n\tpublic function set_path( $path ) {\n\n\t\t$this->custom_path = $path;\n\n\t\t// Re-calculate the backup path\n\t\t$this->calculate_path();\n\n\t}\n\n\t/**\n\t * get the calculated path to the directory that will be backed up\n\t */\n\tprivate function get_calculated_root() {\n\n\t\t$root = self::get_home_path();\n\n\t\tif ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT ) {\n\t\t\t$root = HMBKP_ROOT;\n\t\t}\n\n\t\tif ( $this->root ) {\n\t\t\t$root = $this->root;\n\t\t}\n\n\t\treturn wp_normalize_path( $root );\n\n\t}\n\n\t/**\n\t * Set the root path directly, overriding the default\n\t *\n\t * @param $root\n\t */\n\tpublic function set_root( $root ) {\n\t\t$this->root = $root;\n\t}\n\n\tpublic function reset_path() {\n\t\t$this->path = $this->custom_path = '';\n\t}\n\n\t/**\n\t * Get the path to the default backup location in wp-content\n\t */\n\tpublic function get_default_path() {\n\t\treturn trailingslashit( wp_normalize_path( WP_CONTENT_DIR ) ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups';\n\t}\n\n\t/**\n\t * Get the path to the fallback backup location in uploads\n\t */\n\tpublic function get_fallback_path() {\n\n\t\t$upload_dir = wp_upload_dir();\n\n\t\treturn trailingslashit( wp_normalize_path( $upload_dir['basedir'] ) ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups';\n\n\t}\n\n\t/**\n\t * Get the path to the custom backup location if it's been set\n\t */\n\tpublic function get_custom_path() {\n\n\t\tif ( $this->custom_path ) {\n\t\t\treturn $this->custom_path;\n\t\t}\n\n\t\tif ( defined( 'HMBKP_PATH' ) && wp_is_writable( HMBKP_PATH ) ) {\n\t\t\treturn HMBKP_PATH;\n\t\t}\n\n\t\treturn '';\n\n\t}\n\n\t/**\n\t * Builds an array containing existing backups folders.\n\t *\n\t * @return array\n\t */\n\tpublic function get_existing_paths() {\n\n\t\tif ( false === $default = glob( WP_CONTENT_DIR . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) {\n\t\t\t$default = array();\n\t\t}\n\n\t\t$upload_dir = wp_upload_dir();\n\n\t\tif ( false === $fallback = glob( $upload_dir['basedir'] . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) {\n\t\t\t$fallback = array();\n\t\t}\n\n\t\t$paths = array_merge( $default, $fallback );\n\t\t$paths = array_map( 'wp_normalize_path', $paths );\n\n\t\treturn $paths;\n\n\t}\n\n\t/**\n\t * Returns the first existing path if there is one\n\t *\n\t * @return string Backup path if found empty string if not\n\t */\n\tpublic function get_existing_path() {\n\n\t\t$paths = $this->get_existing_paths();\n\n\t\tif ( ! empty( $paths[0] ) ) {\n\t\t\treturn $paths[0];\n\t\t}\n\n\t\treturn '';\n\n\t}\n\n\t/**\n\t * Calculate the backup path and create the directory if it doesn't exist.\n\t *\n\t * Tries all possible locations and uses the first one possible.\n\t *\n\t * @return\n\t */\n\tpublic function calculate_path() {\n\n\t\t$paths = $this->get_possible_paths();\n\n\t\t// Loop through possible paths, use the first one that exists/can be created and is writable.\n\t\tforeach ( $paths as $path ) {\n\t\t\t// Also handles fixing perms / directory already exists.\n\t\t\tif ( wp_mkdir_p( $path ) && wp_is_writable( $path ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * If we managed to create a writable path then use that,\n\t\t * otherwise just return the unwritable path.\n\t\t */\n\t\tif ( file_exists( $path ) && wp_is_writable( $path ) ) {\n\t\t\t$this->path = $path;\n\t\t} else {\n\t\t\t$this->path = reset( $paths );\n\t\t}\n\t}\n\n\tpublic function get_possible_paths() {\n\n\t\t$paths = array();\n\n\t\t// If we have a custom path then try to use it.\n\t\tif ( $this->get_custom_path() ) {\n\t\t\t$paths[] = $this->get_custom_path();\n\t\t}\n\n\t\t// If there is already a backups directory then try to use that.\n\t\tif ( $this->get_existing_path() ) {\n\t\t\t$paths[] = $this->get_existing_path();\n\t\t}\n\n\t\t// If not then default to a new directory in wp-content.\n\t\t$paths[] = $this->get_default_path();\n\n\t\t// If that didn't work then fallback to a new directory in uploads.\n\t\t$paths[] = $this->get_fallback_path();\n\n\t\treturn $paths;\n\t}\n\n\t/**\n\t * Protect the directory that backups are stored in\n\t *\n\t * - Adds an index.html file in an attempt to disable directory browsing\n\t * - Adds a .httaccess file to deny direct access if on Apache\n\t *\n\t * @param string $reset\n\t */\n\tpublic function protect_path( $reset = 'no' ) {\n\n\t\tglobal $is_apache;\n\n\t\t// Protect against directory browsing by including an index.html file\n\t\t$index = $this->path . '/index.html';\n\n\t\tif ( 'reset' === $reset && file_exists( $index ) ) {\n\t\t\t@unlink( $index );\n\t\t}\n\n\t\tif ( ! file_exists( $index ) && wp_is_writable( $this->path ) ) {\n\t\t\tfile_put_contents( $index, '' );\n\t\t}\n\n\t\t$htaccess = $this->path . '/.htaccess';\n\n\t\tif ( ( 'reset' === $reset ) && file_exists( $htaccess ) ) {\n\t\t\t@unlink( $htaccess );\n\t\t}\n\n\t\t// Protect the directory with a .htaccess file on Apache servers\n\t\tif ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && wp_is_writable( $this->path ) ) {\n\n\t\t\t$contents   = array();\n\t\t\t$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'backupwordpress' ), '.htaccess' );\n\t\t\t$contents[] = '';\n\t\t\t$contents[] = '<IfModule mod_rewrite.c>';\n\t\t\t$contents[] = 'RewriteEngine On';\n\t\t\t$contents[] = 'RewriteCond %{QUERY_STRING} !key=' . HMBKP_SECURE_KEY;\n\t\t\t$contents[] = 'RewriteRule (.*) - [F]';\n\t\t\t$contents[] = '</IfModule>';\n\t\t\t$contents[] = '';\n\n\t\t\tfile_put_contents( $htaccess, '' );\n\n\t\t\tinsert_with_markers( $htaccess, 'BackUpWordPress', $contents );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * If we have more than one path then move any existing backups to the current path and remove them\n\t */\n\tpublic function merge_existing_paths() {\n\n\t\t$paths = $this->get_existing_paths();\n\n\t\tif ( ( ! empty( $paths ) && $this->get_custom_path() ) || count( $paths ) > 1 ) {\n\t\t\tforeach ( $paths as $old_path ) {\n\t\t\t\t$this->move_old_backups( $old_path );\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Move backup files from an existing directory and the new\n\t * location.\n\t *\n\t * @param string $from The path to move the backups from.\n\t */\n\tpublic function move_old_backups( $from ) {\n\n\t\tif ( ! is_readable( $from ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! wp_is_writable( Path::get_path() ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move any existing backups\n\t\tif ( $handle = opendir( $from ) ) {\n\n\t\t\t// Loop through the backup directory\n\t\t\twhile ( false !== ( $file = readdir( $handle ) ) ) {\n\n\t\t\t\t// Find all zips\n\t\t\t\tif ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) ) {\n\n\t\t\t\t\t// Try to move them\n\t\t\t\t\tif ( ! @rename( trailingslashit( $from ) . $file, trailingslashit( Path::get_path() ) . $file ) ) {\n\n\t\t\t\t\t\t// If we can't move them then try to copy them\n\t\t\t\t\t\tcopy( trailingslashit( $from ) . $file, trailingslashit( Path::get_path() ) . $file );\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tclosedir( $handle );\n\n\t\t}\n\n\t\t// Delete the old directory if it's inside WP_CONTENT_DIR\n\t\tif ( false !== strpos( $from, WP_CONTENT_DIR ) &&  Path::get_path() !== $from ) {\n\t\t\trmdirtree( $from );\n\t\t}\n\t}\n\n\t/**\n\t * Clean any temporary / incomplete backups from the backups directory\n\t */\n\tpublic function cleanup() {\n\n\t\t// Don't cleanup a custom path, who knows what other stuff is there\n\t\tif ( Path::get_path() === $this->get_custom_path() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tforeach ( new CleanUpIterator( new \\DirectoryIterator( Path::get_path() ) ) as $file ) {\n\n\t\t\tif ( $file->isDot() || ! $file->isReadable() || ! $file->isFile() ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t@unlink( $file->getPathname() );\n\n\t\t}\n\t}\n}\n\nclass CleanUpIterator extends \\FilterIterator {\n\n\t// Don't match index.html, files with zip extension or status logfiles.\n\tpublic function accept() {\n\n\t\t// Don't remove existing backups\n\t\tif ( 'zip' === pathinfo( $this->current()->getFilename(), PATHINFO_EXTENSION ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Don't remove the index.html file\n\t\tif ( 'index.html' === $this->current()->getBasename() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Don't remove the file manifest\n\t\tif ( '.files' === $this->current()->getBasename() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Don't cleanup the backup running file\n\t\treturn ! preg_match( '/(.*-running)/', $this->current() );\n\n\t}\n}\n"
  },
  {
    "path": "classes/class-plugin.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Class Plugin\n */\nfinal class Plugin {\n\tconst PLUGIN_VERSION = '3.10';\n\n\t/**\n\t * @var Plugin The singleton instance.\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * Instantiates a new Plugin object.\n\t */\n\tprivate function __construct() {\n\t\tadd_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );\n\n\t\t$hide_notice = get_site_option( 'hmbkp_hide_info_notice', false );\n\n\t\t// Display message about XIBO\n\t\tif(!$hide_notice) {\n\t\t\tadd_action( 'admin_notices', array( $this, 'display_xibo_message' ) );\n\t\t\tadd_action( 'network_admin_notices', array( $this, 'display_xibo_message' ) );\n\t\t}\n\n\t}\n\n\t/**\n\t * Insures we always return the same object.\n\t *\n\t * @return Plugin\n\t */\n\tpublic static function get_instance() {\n\n\t\tif ( ! ( self::$instance instanceof Plugin ) ) {\n\t\t\tself::$instance = new Plugin();\n\t\t}\n\n\t\treturn self::$instance;\n\t}\n\n\t/**\n\t * Initialize the plugin.\n\t */\n\tpublic function plugins_loaded() {\n\n\t\tif ( true !== $this->maybe_self_deactivate() ) {\n\n\t\t\t$this->constants();\n\n\t\t\t$this->includes();\n\n\t\t\t$this->hooks();\n\n\t\t\t$this->text_domain();\n\n\t\t\t// If we get here, then BWP is loaded\n\t\t\tdo_action( 'backupwordpress_loaded' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Check plugin requirements.\n\t *\n\t * @return bool True is fails requirements. False otherwise.\n\t */\n\tpublic function maybe_self_deactivate() {\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' );\n\n\t\tif ( false === \\HMBKP_Setup::meets_requirements() ) {\n\n\t\t\tadd_action( 'admin_init', array( '\\HMBKP_Setup', 'self_deactivate' ) );\n\n\t\t\tadd_action( 'all_admin_notices', array( '\\HMBKP_Setup', 'display_admin_notices' ) );\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Define all the constants.\n\t */\n\tpublic function constants() {\n\n\t\tif ( ! defined( 'HMBKP_PLUGIN_SLUG' ) ) {\n\t\t\tdefine( 'HMBKP_PLUGIN_SLUG', dirname( HMBKP_BASENAME ) );\n\t\t}\n\n\t\tif ( ! defined( 'HMBKP_PLUGIN_URL' ) ) {\n\t\t\tdefine( 'HMBKP_PLUGIN_URL', plugin_dir_url( HMBKP_BASENAME ) );\n\t\t}\n\n\t\tif ( ! defined( 'HMBKP_PLUGIN_LANG_DIR' ) ) {\n\t\t\tdefine( 'HMBKP_PLUGIN_LANG_DIR', apply_filters( 'hmbkp_filter_lang_dir', HMBKP_PLUGIN_SLUG . '/languages/' ) );\n\t\t}\n\n\t\tif ( ! defined( 'HMBKP_ADMIN_URL' ) ) {\n\t\t\t$page = is_multisite() ? network_admin_url( 'settings.php' ) : admin_url( 'tools.php' );\n\t\t\tdefine( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, $page ) );\n\t\t}\n\n\t\tif ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) {\n\t\t\t$prefix = is_multisite() ? 'settings_page_' : 'tools_page_';\n\n\t\t\tdefine( 'HMBKP_ADMIN_PAGE', $prefix . HMBKP_PLUGIN_SLUG );\n\t\t}\n\n\t\tdefine( 'HMBKP_SECURE_KEY', $this->generate_key() );\n\n\t}\n\n\t/**\n\t * Load all BackUpWordPress functions.\n\t */\n\tprotected function includes() {\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'vendor/autoload.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-notices.php' );\n\n\t\t// Load Whitelist HTML submodule and admin required functions.\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'whitelist-html/whitelist-html.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'admin/menu.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'admin/actions.php' );\n\n\t\t// Load Backdrop if necessary.\n\t\tif ( ! class_exists( 'HM_Backdrop_Task' ) ) {\n\t\t\trequire_once( HMBKP_PLUGIN_PATH . 'backdrop/hm-backdrop.php' );\n\t\t}\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-requirements.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-requirement.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-path.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-excludes.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-site-size.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-utilities.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-status.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database-mysqldump.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-database-imysqldump.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file-zip.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup-engine-file-zip-archive.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/backup/class-backup.php' );\n\n\t\t// Load the backup scheduling classes\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-scheduled-backup.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-schedules.php' );\n\n\t\t// Load the core functions\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'functions/core.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'functions/interface.php' );\n\n\t\t// Load the services\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-services.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-service.php' );\n\n\t\t// Load the email service\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-email-service.php' );\n\n\t\t// Load the webhook services\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-webhook-service.php' );\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-wpremote-webhook-service.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/deprecated.php' );\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-extensions.php' );\n\n\t\t// Load the wp cli command\n\t\tif ( defined( 'WP_CLI' ) && WP_CLI ) {\n\t\t\tinclude( HMBKP_PLUGIN_PATH . 'classes/class-backupwordpress-wp-cli-command.php' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Hook into WordPress page lifecycle and execute BackUpWordPress functions.\n\t */\n\tpublic function hooks() {\n\n\t\tadd_action( 'activated_plugin', array( $this, 'load_first' ) );\n\n\t\tadd_action( 'admin_init', array( $this, 'upgrade' ) );\n\n\t\tadd_action( 'admin_init', array( $this, 'init' ) );\n\n\t\tadd_action( 'hmbkp_schedule_hook', array( $this, 'schedule_hook_run' ) );\n\n\t\tadd_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );\n\n\t\tadd_action( 'admin_footer-' . HMBKP_ADMIN_PAGE, array( $this, 'load_intercom_script' ) );\n\n\t\tadd_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );\n\n\t}\n\n\t/**\n\t * Load the Javascript in the admin.\n\t *\n\t * @param $hook The name of the admin page hook.\n\t */\n\tpublic function scripts( $hook ) {\n\n\t\tif ( HMBKP_ADMIN_PAGE !== $hook ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.js';\n\n\t\t// TODO shuold this also support WP_SCRIPT_DEBUG\n\t\tif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {\n\t\t\t$js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.js';\n\t\t}\n\n\t\twp_enqueue_script( 'hmbkp', $js_file, array( 'heartbeat' ), sanitize_key( self::PLUGIN_VERSION ) );\n\n\t\twp_localize_script(\n\t\t\t'hmbkp',\n\t\t\t'hmbkp',\n\t\t\tarray(\n\t\t\t\t'page_slug'                => HMBKP_PLUGIN_SLUG,\n\t\t\t\t'nonce'                    => wp_create_nonce( 'hmbkp_nonce' ),\n\t\t\t\t'hmbkp_run_schedule_nonce' => wp_create_nonce( 'hmbkp_run_schedule' ),\n\t\t\t\t'update'                   => __( 'Update', 'backupwordpress' ),\n\t\t\t\t'cancel'                   => __( 'Cancel', 'backupwordpress' ),\n\t\t\t\t'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\",\n\t\t\t\t'delete_backup'            => __( 'Are you sure you want to delete this backup?', 'backupwordpress' ) . \"\\n\\n\" . __( '\\'Cancel\\' to go back, \\'OK\\' to delete.', 'backupwordpress' ) . \"\\n\",\n\t\t\t\t'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\",\n\t\t\t\t'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\",\n\t\t\t)\n\t\t);\n\n\t}\n\n\t/**\n\t * Loads the plugin text domain for translation.\n\t * This setup allows a user to just drop his custom translation files into the WordPress language directory\n\t * Files will need to be in a subdirectory with the name of the textdomain 'backupwordpress'\n\t */\n\tpublic function text_domain() {\n\n\t\t// Set unique textdomain string\n\t\t$textdomain = 'backupwordpress';\n\n\t\t// The 'plugin_locale' filter is also used by default in load_plugin_textdomain()\n\t\t$locale = apply_filters( 'plugin_locale', get_locale(), $textdomain );\n\n\t\t// Set filter for WordPress languages directory\n\t\t$hmbkp_wp_lang_dir = apply_filters( 'hmbkp_do_filter_wp_lang_dir', trailingslashit( WP_LANG_DIR ) . trailingslashit( $textdomain ) . $textdomain . '-' . $locale . '.mo' );\n\n\t\t// Translations: First, look in WordPress' \"languages\" folder = custom & update-secure!\n\t\tload_textdomain( $textdomain, $hmbkp_wp_lang_dir );\n\n\t\t// Translations: Secondly, look in plugin's \"languages\" folder = default\n\t\tload_plugin_textdomain( $textdomain, false, HMBKP_PLUGIN_LANG_DIR );\n\n\t}\n\n\t/**\n\t * Determine if we need to run an upgrade routine.\n\t */\n\tpublic function upgrade() {\n\n\t\t// Fire the update action\n\t\tif ( self::PLUGIN_VERSION != get_option( 'hmbkp_plugin_version' ) ) {\n\t\t\tupdate();\n\t\t}\n\n\t}\n\n\t/**\n\t * Runs on every admin page load\n\t */\n\tpublic function init() {\n\n\t\t// If we have multiple paths for some reason then clean them up\n\t\tPath::get_instance()->merge_existing_paths();\n\t}\n\n\t/**\n\t * Generate a unique key.\n\t *\n\t * @return string\n\t */\n\tprotected function generate_key() {\n\n\t\t$check = apply_filters( 'hmbkp_generate_key', null );\n\n\t\tif ( null !== $check ) {\n\t\t\treturn $check;\n\t\t}\n\n\t\t$key = array( ABSPATH, time() );\n\t\t$constants = array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT', 'SECRET_KEY' );\n\n\t\tforeach ( $constants as $constant ) {\n\t\t\tif ( defined( $constant ) ) {\n\t\t\t\t$key[] = constant( $constant );\n\t\t\t}\n\t\t}\n\n\t\tshuffle( $key );\n\n\t\treturn md5( serialize( $key ) );\n\n\t}\n\n\t/**\n\t * Ensure BackUpWordPress is loaded before add-ons, changes the order of the serialized values in the DB field.\n\t */\n\tpublic function load_first() {\n\n\t\t$active_plugins = get_option( 'active_plugins' );\n\n\t\t$plugin_path = plugin_basename( __FILE__ );\n\n\t\t$key = array_search( $plugin_path, $active_plugins );\n\n\t\tif ( $key > 0 ) {\n\n\t\t\tarray_splice( $active_plugins, $key, 1 );\n\n\t\t\tarray_unshift( $active_plugins, $plugin_path );\n\n\t\t\tupdate_option( 'active_plugins', $active_plugins );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Function to run when the schedule cron fires.\n\t *\n\t * @param $id\n\t */\n\tpublic function schedule_hook_run( $id ) {\n\n\t\tif ( ! is_backup_possible() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$schedules = Schedules::get_instance();\n\t\t$schedule  = $schedules->get_schedule( $id );\n\n\t\tif ( ! $schedule ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$schedule->run();\n\n\t}\n\n\t/**\n\t * Enqueue the plugin styles.\n\t *\n\t * @param $hook\n\t */\n\tpublic function styles( $hook ) {\n\n\t\tif ( 'tools_page_backupwordpress_extensions' !== $hook && HMBKP_ADMIN_PAGE !== $hook ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.css';\n\n\t\tif ( WP_DEBUG ) {\n\t\t\t$css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.css';\n\t\t}\n\n\t\twp_enqueue_style( 'backupwordpress', $css_file, false, sanitize_key( self::PLUGIN_VERSION ) );\n\n\t}\n\n\t/**\n\t * Load Intercom and send across user information and server info. Only loaded if the user has opted in.\n\t *\n\t * @param $hook\n\t */\n\tpublic function load_intercom_script() {\n\n\t\tif ( ! get_option( 'hmbkp_enable_support' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$info = array();\n\n\t\tforeach ( Requirements::get_requirement_groups() as $group ) {\n\t\t\tforeach ( Requirements::get_requirements( $group ) as $requirement ) {\n\t\t\t\t$info[ $requirement->name() ] = $requirement->result();\n\t\t\t}\n\t\t}\n\n\t\tforeach ( Services::get_services() as $file => $service ) {\n\t\t\tarray_merge( $info, call_user_func( array( $service, 'intercom_data' ) ) );\n\t\t}\n\n\t\t$current_user = wp_get_current_user();\n\n\t\t$info['user_hash']  = hash_hmac( 'sha256', $current_user->user_email, 'fcUEt7Vi4ym5PXdcr2UNpGdgZTEvxX9NJl8YBTxK' );\n\t\t$info['email']      = $current_user->user_email;\n\t\t$info['created_at'] = strtotime( $current_user->user_registered );\n\t\t$info['app_id']     = '7f1l4qyq';\n\t\t$info['name']       = $current_user->display_name;\n\t\t$info['widget']     = array( 'activator' => '#intercom' ); ?>\n\n\t\t<script id=\"IntercomSettingsScriptTag\">\n\t\t\twindow.intercomSettings = <?php echo json_encode( $info ); ?>;\n\t\t</script>\n\t\t<script>!function(){function e(){var a=c.createElement(\"script\");a.type=\"text/javascript\",a.async=!0,a.src=\"https://static.intercomcdn.com/intercom.v1.js\";var b=c.getElementsByTagName(\"script\")[0];b.parentNode.insertBefore(a,b)}var a=window,b=a.Intercom;if(\"function\"==typeof b)b(\"reattach_activator\"),b(\"update\",intercomSettings);else{var c=document,d=function(){d.c(arguments)};d.q=[],d.c=function(a){d.q.push(a)},a.Intercom=d,a.attachEvent?a.attachEvent(\"onload\",e):a.addEventListener(\"load\",e,!1)}}();</script>\n\n\t<?php }\n\n\tpublic function display_xibo_message() {\n\t\t$current_screen = get_current_screen();\n\n\t\tif ( ! isset( $current_screen ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$page = is_multisite() ? HMBKP_ADMIN_PAGE . '-network' : HMBKP_ADMIN_PAGE;\n\t\tif ( $current_screen->id !== $page ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t$owner_message = sprintf(\n\t\t\t__('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'),\n\t\t\t'<p/>',\n\t\t\t'<a href=\"https://updraftplus.com/?afref=744\" target=\"_blank\">',\n\t\t\t'</a>',\n\t\t\t'<a href=\"https://updraftplus.com/backupwordpress/?afref=744\">'\n\t\t);\n\t\t?>\n\t\t\n\t\t<div id=\"hmbkp-info-message\" class=\"notice-info notice is-dismissible\">\n\t\t\t\n\t\t\t<p><?php echo wp_kses_post( $owner_message ); ?></p>\n\n\t\t\t<button type=\"button\" class=\"notice-dismiss\"><span class=\"screen-reader-text\"><?php esc_html_e( 'Dismiss this notice.', 'backupwordpress' ); ?></span></button>\n\n\t\t</div>\n\n\t<?php \n\t}\n\n}\n\nif ( is_multisite() && ! is_main_site() ) {\n\treturn;\n}\n\nPlugin::get_instance();\n"
  },
  {
    "path": "classes/class-requirement.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * An abstract requirement class, individual requirements should\n * extend this class\n */\nabstract class Requirement {\n\n\t/**\n\t * The name of the requirement.\n\t *\n\t * @var string\n\t */\n\tprotected $name = '';\n\n\t/**\n\t * @return mixed Did the requirement pass or fail.\n\t */\n\tprotected static function test() {}\n\n\t/**\n\t * @return string\n\t */\n\tpublic function name() {\n\t\treturn $this->name;\n\t}\n\n\t/**\n\t * @return string\n\t */\n\tpublic function result() {\n\n\t\t$test = $this->test();\n\n\t\tif ( is_string( $test ) && $test ) {\n\t\t\treturn $test;\n\t\t}\n\n\t\tif ( is_bool( $test ) || empty( $test ) ) {\n\n\t\t\tif ( $test ) {\n\t\t\t\treturn 'Yes';\n\t\t\t}\n\n\t\t\treturn 'No';\n\n\t\t}\n\n\t\treturn var_export( $test, true );\n\n\t}\n\n\tpublic function raw_result() {\n\t\treturn $this->test();\n\t}\n}\n\n/**\n * Class Requirement_Zip_Archive\n */\nclass Requirement_Zip_Archive extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'ZipArchive';\n\n\t/**\n\t * @return bool\n\t */\n\tpublic static function test() {\n\n\t\tif ( class_exists( 'ZipArchive' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Zip_Archive', 'PHP' );\n\n/**\n * Class Requirement_Zip_Command\n *\n * Tests whether the zip command is available and if it is what path it's available at\n */\nclass Requirement_Zip_Command_Path extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'zip command';\n\n\t/**\n\t * @return string|false\n\t */\n\tpublic static function test() {\n\n\t\t$backup = new Zip_File_Backup_Engine;\n\n\t\treturn $backup->get_zip_executable_path();\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Zip_Command_Path', 'Server' );\n\n/**\n * Class Requirement_Mysqldump_Command\n *\n * Tests whether the zip command is available and if it is what path it's available at\n */\nclass Requirement_Mysqldump_Command_Path extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'mysqldump command';\n\n\t/**\n\t * @return string|false\n\t */\n\tpublic static function test() {\n\n\t\t$backup = new Mysqldump_Database_Backup_Engine;\n\n\t\treturn $backup->get_mysqldump_executable_path();\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Mysqldump_Command_Path', 'Server' );\n\n/**\n * Class Requirement_PHP_Version\n */\nclass Requirement_PHP_Version extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Version';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn PHP_VERSION;\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PHP_Version', 'PHP' );\n\n/**\n * Class Requirement_Cron_Array\n */\nclass Requirement_Cron_Array extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Cron Array';\n\n\t/**\n\t * @return bool|mixed\n\t */\n\tpublic static function test() {\n\n\t\t$cron = get_option( 'cron' );\n\n\t\tif ( ! $cron ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $cron;\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Cron_Array', 'Site' );\n\n/**\n * Class Requirement_Cron_Array\n */\nclass Requirement_Language extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Language';\n\n\t/**\n\t * @return bool|mixed\n\t */\n\tpublic static function test() {\n\n\t\t// Since 4.0\n\t\t$language = get_option( 'WPLANG' );\n\n\t\tif ( $language ) {\n\t\t\treturn $language;\n\t\t}\n\n\t\tif ( defined( 'WPLANG' ) && WPLANG ) {\n\t\t\treturn WPLANG;\n\t\t}\n\n\t\treturn 'en_US';\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Language', 'Site' );\n\n/**\n * Class Requirement_Safe_Mode\n */\nclass Requirement_Safe_Mode extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Safe Mode';\n\n\t/**\n\t * @return bool\n\t */\n\tpublic static function test() {\n\t\treturn Backup_Utilities::is_safe_mode_on();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Safe_Mode', 'PHP' );\n\n/**\n * Class Requirement_Memory_Limit\n */\nclass Requirement_PHP_Memory_Limit extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Memory Limit';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn @ini_get( 'memory_limit' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PHP_Memory_Limit', 'PHP' );\n\n/**\n * Class Requirement_Backup_Path\n */\nclass Requirement_Backup_Path extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Backup Path';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn Path::get_path();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Backup_Path', 'Site' );\n\n/**\n * Class Requirement_Backup_Path_Permissions\n */\nclass Requirement_Backup_Path_Permissions extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Backup Path Permissions';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\tif ( is_readable( PATH::get_path() ) ) {\n\t\t\treturn substr( sprintf( '%o', fileperms( Path::get_path() ) ), - 4 );\n\t\t}\n\t\treturn 'Unreadable';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Backup_Path_Permissions', 'Site' );\n\n/**\n * Class Requirement_WP_CONTENT_DIR\n */\nclass Requirement_WP_CONTENT_DIR extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'WP_CONTENT_DIR';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn WP_CONTENT_DIR;\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_WP_CONTENT_DIR', 'Site' );\n\n/**\n * Class Requirement_WP_CONTENT_DIR_Permissions\n */\nclass Requirement_WP_CONTENT_DIR_Permissions extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'WP_CONTENT_DIR Permissions';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn substr( sprintf( '%o', fileperms( WP_CONTENT_DIR ) ), - 4 );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_WP_CONTENT_DIR_Permissions', 'Site' );\n\n/**\n * Class Requirement_ABSPATH\n */\nclass Requirement_ABSPATH extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'ABSPATH';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn ABSPATH;\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_ABSPATH', 'Site' );\n\n/**\n * Class Requirement_Backup_Root_Path\n */\nclass Requirement_Backup_Root_Path extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Site Root Path';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn Path::get_root();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Backup_Root_Path', 'Site' );\n\n/**\n * Class Requirement_Calculated_Size\n */\nclass Requirement_Calculated_Size extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Calculated size of site';\n\n\t/**\n\t * @return array\n\t */\n\tpublic static function test() {\n\n\t\t$backup_sizes = array();\n\n\t\t$schedules = Schedules::get_instance();\n\n\t\tforeach ( $schedules->get_schedules() as $schedule ) {\n\n\t\t\t$site_size = new Site_Size( $schedule->get_type(), $schedule->get_excludes() );\n\n\t\t\tif ( $site_size->is_site_size_cached() ) {\n\t\t\t\t$backup_sizes[ $schedule->get_type() ] = $site_size->get_formatted_site_size();\n\t\t\t}\n\t\t}\n\n\t\treturn $backup_sizes;\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Calculated_Size', 'Site' );\n\n/**\n * Class Requirement_WP_Cron_Test_Response\n */\nclass Requirement_WP_Cron_Test extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'WP Cron Test Failed';\n\n\t/**\n\t * @return boolean\n\t */\n\tpublic static function test() {\n\t\treturn (bool) get_option( 'hmbkp_wp_cron_test_failed' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_WP_Cron_Test', 'Site' );\n\n/**\n * Class Requirement_PHP_API\n */\nclass Requirement_PHP_API extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Interface';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn php_sapi_name();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PHP_API', 'PHP' );\n\n/**\n * Class Requirement_Server_Software\n */\nclass Requirement_Server_Software extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Server';\n\n\t/**\n\t * @return bool\n\t */\n\tpublic static function test() {\n\n\t\tif ( ! empty( $_SERVER['SERVER_SOFTWARE'] ) ) {\n\t\t\treturn $_SERVER['SERVER_SOFTWARE'];\n\t\t}\n\n\t\treturn false;\n\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Server_Software', 'Server' );\n\n/**\n * Class Requirement_Server_OS\n */\nclass Requirement_Server_OS extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'OS';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn PHP_OS;\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Server_OS', 'Server' );\n\n/**\n * Class Requirement_PHP_Disable_Functions\n */\nclass Requirement_PHP_Disable_Functions extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'Disabled Functions';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn @ini_get( 'disable_functions' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PHP_Disable_Functions', 'PHP' );\n\n/**\n * Class Requirement_PHP_Open_Basedir\n */\nclass Requirement_PHP_Open_Basedir extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'open_basedir';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn @ini_get( 'open_basedir' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PHP_Open_Basedir', 'PHP' );\n\n/* CONSTANTS */\n\n/**\n * Class Requirement_Define_HMBKP_PATH\n */\nclass Requirement_Define_HMBKP_PATH extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_PATH';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_PATH' ) ? HMBKP_PATH : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_PATH', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_ROOT\n */\nclass Requirement_Define_HMBKP_ROOT extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_ROOT';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_ROOT' ) ? HMBKP_ROOT : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_ROOT', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_MYSQLDUMP_PATH\n */\nclass Requirement_Define_HMBKP_MYSQLDUMP_PATH extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_MYSQLDUMP_PATH';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_MYSQLDUMP_PATH' ) ? HMBKP_MYSQLDUMP_PATH : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_MYSQLDUMP_PATH', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_ZIP_PATH\n */\nclass Requirement_Define_HMBKP_ZIP_PATH extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_ZIP_PATH';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_ZIP_PATH' ) ? HMBKP_ZIP_PATH : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_ZIP_PATH', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_CAPABILITY\n */\nclass Requirement_Define_HMBKP_CAPABILITY extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_CAPABILITY';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_CAPABILITY' ) ? HMBKP_CAPABILITY : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_CAPABILITY', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_EMAIL\n */\nclass Requirement_Define_HMBKP_EMAIL extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_EMAIL';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_EMAIL' ) ? HMBKP_EMAIL : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_EMAIL', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE\n */\nclass Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_ATTACHMENT_MAX_FILESIZE';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) ? HMBKP_ATTACHMENT_MAX_FILESIZE : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_ATTACHMENT_MAX_FILESIZE', 'constants' );\n\n/**\n * Class Requirement_Define_HMBKP_EXCLUDE\n */\nclass Requirement_Define_HMBKP_EXCLUDE extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'HMBKP_EXCLUDE';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn defined( 'HMBKP_EXCLUDE' ) ? HMBKP_EXCLUDE : '';\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Define_HMBKP_EXCLUDE', 'constants' );\n\nclass Requirement_Active_Plugins extends Requirement {\n\n\tprotected $name = 'Active Plugins';\n\n\t/**\n\t * Output the list of active plugins.\n\t *\n\t * @return array The array of active plugins.\n\t */\n\tpublic static function test() {\n\t\treturn get_option( 'active_plugins' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Active_Plugins', 'Site' );\n\nclass Requirement_Home_Url extends Requirement {\n\n\tprotected $name = 'Home URL';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn home_url();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Home_Url', 'Site' );\n\nclass Requirement_Site_Url extends Requirement {\n\n\tprotected $name = 'Site URL';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn site_url();\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Site_Url', 'Site' );\n\nclass Requirement_Plugin_Version extends Requirement {\n\tprotected $name = 'Plugin Version';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn Plugin::PLUGIN_VERSION;\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Plugin_Version', 'constants' );\n\nclass Requirement_Max_Exec extends Requirement {\n\n\tprotected $name = 'Max execution time';\n\n\t/**\n\t * @return string\n\t */\n\tpublic static function test() {\n\t\treturn @ini_get( 'max_execution_time' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Max_Exec', 'PHP' );\n\nclass Requirement_PDO extends Requirement {\n\n\tprotected $name = 'PDO';\n\n\t/**\n\t * @return string|false\n\t */\n\tpublic static function test() {\n\n\t\tif ( class_exists( 'PDO' ) && \\PDO::getAvailableDrivers() ) {\n\t\t\treturn implode( ', ', \\PDO::getAvailableDrivers() );\n\t\t}\n\n\t\treturn false;\n\n\t}\n}\n\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_PDO', 'PHP' );\n\n/**\n * Class Requirement_Proc_Open\n */\nclass Requirement_Proc_Open extends Requirement {\n\n\t/**\n\t * @var string\n\t */\n\tprotected $name = 'proc_open';\n\n\t/**\n\t * @return bool\n\t */\n\tpublic static function test() {\n\t\treturn function_exists( 'proc_open' ) && function_exists( 'proc_close' );\n\t}\n}\nRequirements::register( 'HM\\BackUpWordPress\\Requirement_Proc_Open', 'PHP' );\n"
  },
  {
    "path": "classes/class-requirements.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * A singleton to handle the registering, unregistering\n * and storage of individual requirements\n */\nclass Requirements {\n\n\t/**\n\t * The array of requirements\n\t *\n\t * Should be of the format array( (string) group => __CLASS__ );\n\t * @var array\n\t */\n\tprivate static $requirements = array();\n\n\n\t/**\n\t * Get the array of registered requirements\n\t *\n\t * @param string $group\n\t * @return array\n\t */\n\tpublic static function get_requirements( $group = '' ) {\n\n\t\t$requirements = $group ? self::$requirements[ $group ] : self::$requirements;\n\n\t\tksort( $requirements );\n\n\t\treturn array_map( array( 'self', 'instantiate' ), $requirements );\n\n\t}\n\n\t/**\n\t * Get the requirement groups\n\t *\n\t * @return string[]\n\t */\n\tpublic static function get_requirement_groups() {\n\t\treturn array_keys( self::$requirements );\n\t}\n\n\t/**\n\t * Register a new requirement\n\t *\n\t * @param        $class\n\t * @param string $group\n\t */\n\tpublic static function register( $class, $group = 'misc' ) {\n\t\tself::$requirements[ $group ][] = $class;\n\t}\n\n\t/**\n\t * Instantiate the individual requirement classes\n\t *\n\t * @param string $class\n\t * @return array An array of instantiated classes\n\t */\n\tprivate static function instantiate( $class ) {\n\t\t$$class = new $class;\n\t\treturn $$class;\n\t}\n}\n"
  },
  {
    "path": "classes/class-scheduled-backup.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * The Backup Scheduler\n *\n * Handles everything related to managing and running a backup schedule\n *\n * @uses Backup\n * @uses\n */\nclass Scheduled_Backup {\n\n\t/**\n\t * The unique schedule id\n\t *\n\t * @var string\n\t * @access private\n\t */\n\tprivate $id = '';\n\n\t/**\n\t * The slugified version of the schedule name\n\t *\n\t * @var string\n\t * @access private\n\t */\n\tprivate $slug = '';\n\n\t/**\n\t * The raw schedule options from the database\n\t *\n\t * @var array\n\t * @access private\n\t */\n\tprivate $options = array(\n\t\t'max_backups'   => 3,\n\t\t'excludes'      => array(),\n\t\t'type'          => 'complete',\n\t\t'reoccurrence'  => 'manually',\n\t);\n\n\t/**\n\t * Setup the schedule object\n\t * Loads the options from the database and populates properties\n\t *\n\t * @param string $id\n\t *\n\t * @throws Exception\n\t */\n\n\tpublic function __construct( $id ) {\n\n\t\t// Verify the schedule id\n\t\tif ( ! is_string( $id ) || ! trim( $id ) ) {\n\t\t\tthrow new \\Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non-empty string' );\n\t\t}\n\n\t\t// Store id for later\n\t\t$this->id = $id;\n\n\t\t// Load the options\n\t\t$this->options = array_merge( $this->options, array_filter( (array) get_option( 'hmbkp_schedule_' . $this->get_id() ) ) );\n\n\t\tif ( defined( 'HMBKP_SCHEDULE_START_TIME' ) && strtotime( 'HMBKP_SCHEDULE_START_TIME' ) ) {\n\t\t\t$this->set_schedule_start_time( strtotime( 'HMBKP_SCHEDULE_START_TIME' ) );\n\t\t}\n\n\t\t// Setup the schedule if it isn't set\n\t\tif ( ( ! $this->is_cron_scheduled() && $this->get_reoccurrence() !== 'manually' ) ) {\n\t\t\t$this->schedule();\n\t\t}\n\n\t\t$this->backup_filename = implode( '-', array(\n\t\t\tsanitize_title( str_ireplace( array(\n\t\t\t\t'http://',\n\t\t\t\t'https://',\n\t\t\t\t'www',\n\t\t\t), '', home_url() ) ),\n\t\t\t$this->get_id(),\n\t\t\t$this->get_type(),\n\t\t\tcurrent_time( 'Y-m-d-H-i-s' ),\n\t\t) ) . '.zip';\n\n\t\t$this->database_dump_filename = implode( '-', array(\n\t\t\t'database',\n\t\t\tsanitize_title( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ) ),\n\t\t\t$this->get_id(),\n\t\t) ) . '.sql';\n\n\t\t$this->status = new Backup_Status( $this->get_id() );\n\n\t}\n\n\t/**\n\t * Get the id for this schedule\n\t */\n\tpublic function get_id() {\n\t\treturn esc_attr( $this->id );\n\t}\n\n\t/**\n\t * Get a slugified version of name\n\t */\n\tpublic function get_slug() {\n\n\t\t// We cache slug in $this to save expensive calls to sanitize_title\n\t\tif ( ! empty( $this->slug ) ) {\n\t\t\treturn $this->slug;\n\t\t}\n\n\t\treturn $this->slug = sanitize_title( $this->get_name() );\n\n\t}\n\n\t/**\n\t * Returns the given option value\n\t *\n\t * @param $option_name\n\t * @return mixed The option value\n\t */\n\tpublic function get_schedule_option( $option_name ) {\n\t\tif ( isset( $this->options[ $option_name ] ) ) {\n\t\t\treturn $this->options[ $option_name ];\n\t\t}\n\t}\n\n\t/**\n\t * Get the name of this backup schedule\n\t *\n\t * @return string\n\t */\n\tpublic function get_name() {\n\t\treturn ucwords( $this->get_type() ) . ' ' . $this->get_reoccurrence();\n\t}\n\n\t/**\n\t * Get the type of backup\n\t *\n\t * @return string\n\t */\n\tpublic function get_type() {\n\t\treturn $this->options['type'];\n\t}\n\n\t/**\n\t * Set the type of backup\n\t *\n\t * @param string $type\n\t */\n\tpublic function set_type( $type ) {\n\t\tif ( ! isset( $this->options['type'] ) || $this->options['type'] !== $type ) {\n\t\t\t$this->options['type'] = $type;\n\t\t}\n\t}\n\n\t/**\n\t * Get the exclude rules\n\t *\n\t * @return array\n\t */\n\tpublic function get_excludes() {\n\t\treturn new Excludes( $this->options['excludes'] );\n\t}\n\n\t/**\n\t * Set the exclude rules\n\t *\n\t * @param mixed $excludes A comma separated list or array of exclude rules\n\t * @param bool $append Whether to replace or append to existing rules\n\t *\n\t * @return string\n\t */\n\tpublic function set_excludes( $exclude_rules, $append = false ) {\n\n\t\t// Normalize the exclude rules before we save them\n\t\t$excludes = new Excludes;\n\t\t$excludes = $excludes->normalize( (array) $exclude_rules );\n\n\t\t// If these are valid excludes and they are different save them\n\t\tif ( empty( $this->options['excludes'] ) || $this->options['excludes'] !== $excludes ) {\n\t\t\t$this->options['excludes'] = $append && ! empty( $this->options['excludes'] ) ? array_merge( (array) $this->options['excludes'], (array) $excludes ) : (array) $excludes;\n\t\t}\n\n\t}\n\n\t/**\n\t * Get the maximum number of backups to keep\n\t *\n\t * @return int\n\t */\n\tpublic function get_max_backups() {\n\t\treturn (int) $this->options['max_backups'];\n\t}\n\n\t/**\n\t * Set the maximum number of backups to keep\n\t *\n\t * @param int $max\n\t *\n\t * @return WP_Error|boolean\n\t */\n\tpublic function set_max_backups( $max ) {\n\t\t$this->options['max_backups'] = $max;\n\t}\n\n\tpublic function get_status() {\n\t\treturn $this->status;\n\t}\n\n\t/**\n\t * Back compat with old set_status mathod\n\t *\n\t * @deprecated 3.4 Backup->status->set_status()\n\t */\n\tpublic function set_status( $message ) {\n\t\t_deprecated_function( __FUNCTION__, '3.4', 'Backup->status->set_status()' );\n\t\t$this->status->set_status( $message );\n\t}\n\n\t/**\n\t * Get the array of services options for this schedule\n\t *\n\t * @param      $service\n\t * @param null $option\n\t *\n\t * @return array\n\t */\n\tpublic function get_service_options( $service, $option = null ) {\n\n\t\tif ( ! is_null( $option ) ) {\n\n\t\t\tif ( isset( $this->options[ $service ][ $option ] ) ) {\n\t\t\t\treturn $this->options[ $service ][ $option ];\n\t\t\t}\n\n\t\t\treturn array();\n\n\t\t}\n\n\t\tif ( isset( $this->options[ $service ] ) ) {\n\t\t\treturn $this->options[ $service ];\n\t\t}\n\n\t\treturn array();\n\n\t}\n\n\t/**\n\t * Set the service options for this schedule\n\t *\n\t * @param $service\n\t * @param array $options\n\t */\n\tpublic function set_service_options( $service, array $options ) {\n\t\t$this->options[ $service ] = $options;\n\t}\n\n\t/**\n\t * Get the start time for the schedule\n\t *\n\t * @return int timestamp || 0 for manual only schedules\n\t */\n\tpublic function get_schedule_start_time( $gmt = true ) {\n\n\t\tif ( 'manually' === $this->get_reoccurrence() ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( ! $gmt ) {\n\t\t\t$offset = get_option( 'gmt_offset' ) * 3600;\n\t\t} else {\n\t\t\t$offset = 0;\n\t\t}\n\n\t\tif ( ! empty( $this->options['schedule_start_time'] ) ) {\n\t\t\treturn $this->options['schedule_start_time'] + $offset;\n\t\t}\n\n\t\t$this->set_schedule_start_time( time() );\n\n\t\treturn time() + $offset;\n\n\t}\n\n\t/**\n\t * Set the schedule start time.\n\t *\n\t * @param Int $time A valid timestamp\n\t */\n\tpublic function set_schedule_start_time( $time ) {\n\n\t\t$this->options['schedule_start_time'] = $time;\n\n\t\t$this->schedule();\n\n\t}\n\n\t/**\n\t * Get the schedule reoccurrence\n\t *\n\t */\n\tpublic function get_reoccurrence() {\n\t\treturn $this->options['reoccurrence'];\n\t}\n\n\t/**\n\t * Set the schedule reoccurrence\n\t *\n\t * @param string $reoccurrence\n\t *\n\t * @return \\WP_Error|null|boolean\n\t */\n\tpublic function set_reoccurrence( $reoccurrence ) {\n\n\t\t$hmbkp_schedules = cron_schedules();\n\n\t\t// Check it's valid\n\t\tif ( ! is_string( $reoccurrence ) || ! trim( $reoccurrence ) || ( ! in_array( $reoccurrence, array_keys( $hmbkp_schedules ) ) ) && 'manually' !== $reoccurrence ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_invalid_argument_error', sprintf( __( 'Argument 1 for %s must be a valid cron recurrence or \"manually\"', 'backupwordpress' ), __METHOD__ ) );\n\t\t}\n\n\t\t// If the recurrence is already set to the same thing then there's no need to continue\n\t\tif ( isset( $this->options['reoccurrence'] ) && $this->options['reoccurrence'] === $reoccurrence && $this->is_cron_scheduled() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$this->options['reoccurrence'] = $reoccurrence;\n\n\t\tif ( 'manually' === $reoccurrence ) {\n\t\t\t$this->unschedule();\n\n\t\t} else {\n\t\t\t$this->schedule();\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Get the interval between backups\n\t *\n\t * @return int\n\t */\n\tpublic function get_interval() {\n\n\t\t$hmbkp_schedules = cron_schedules();\n\n\t\tif ( 'manually' === $this->get_reoccurrence() ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn $hmbkp_schedules[ $this->get_reoccurrence() ]['interval'];\n\n\t}\n\n\t/**\n\t * Get the next occurrence of this scheduled backup\n\t *\n\t */\n\tpublic function get_next_occurrence( $gmt = true ) {\n\n\t\t$time = wp_next_scheduled( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );\n\n\t\tif ( ! $time ) {\n\t\t\t$time = 0;\n\t\t}\n\n\t\tif ( ! $gmt ) {\n\t\t\t$time += get_option( 'gmt_offset' ) * 3600;\n\t\t}\n\n\t\treturn $time;\n\n\t}\n\n\tpublic function is_cron_scheduled() {\n\t\treturn (bool) $this->get_next_occurrence();\n\t}\n\n\t/**\n\t * Schedule the backup cron\n\t *\n\t */\n\tpublic function schedule() {\n\n\t\t// Clear any existing hooks\n\t\t$this->unschedule();\n\n\t\t$schedule_timestamp = $this->get_schedule_start_time();\n\n\t\twp_schedule_event( $schedule_timestamp, $this->get_reoccurrence(), 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );\n\n\t}\n\n\n\t/**\n\t * Unschedule the backup cron.\n\t *\n\t * @return void\n\t */\n\tpublic function unschedule() {\n\t\twp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );\n\t}\n\n\t/**\n\t * Run the backup\n\t *\n\t */\n\tpublic function run() {\n\n\t\t// Don't run if this schedule is already running\n\t\tif ( $this->status->is_started() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup our Site Backup Object\n\t\t$backup = new Backup( $this->get_backup_filename(), $this->get_database_dump_filename() );\n\t\t$backup->set_type( $this->get_type() );\n\t\t$backup->set_excludes( $this->get_excludes() );\n\t\t$backup->set_status( $this->status );\n\n\t\t$this->do_action( 'hmbkp_backup_started', $backup );\n\n\t\t$this->status->start( $this->get_backup_filename(), __( 'Starting backup...', 'backupwordpress' ) );\n\n\t\t$this->status->set_status( __( 'Deleting old backups...', 'backupwordpress' ) );\n\n\t\t// Delete old backups now in-case we fatal error during the backup process\n\t\t$this->delete_old_backups();\n\n\t\t$backup->run();\n\n\t\t$errors = array_merge( $backup->errors, $backup->warnings );\n\t\t$notices = array();\n\t\tforeach ( $errors as $key => $error ) {\n\t\t\t$key = str_replace( array( __NAMESPACE__ . '\\\\', '_File_Backup_Engine', '_Database_Backup_Engine' ), array( '', '', '' ), $key );\n\t\t\t$notices[] = $key . ': ' . implode( ', ', $error );\n\t\t}\n\t\tNotices::get_instance()->set_notices( 'backup_errors', $notices );\n\n\t\t$this->status->set_status( __( 'Deleting old backups...', 'backupwordpress' ) );\n\n\t\t// Delete old backups again\n\t\t$this->delete_old_backups();\n\n\t\t$this->do_action( 'hmbkp_backup_complete', $backup );\n\n\t\t$this->status->finish();\n\t\t$this->update_average_schedule_run_time( $this->status->get_start_time(), time() );\n\n\t}\n\n\tpublic function get_backup_filename() {\n\n\t\tif ( $this->status->is_started() ) {\n\t\t\t$this->backup_filename = $this->status->get_backup_filename();\n\t\t}\n\n\t\treturn $this->backup_filename;\n\t}\n\n\tpublic function get_database_dump_filename() {\n\t\treturn $this->database_dump_filename;\n\t}\n\n\t/**\n\t * Hook into the actions fired in the Backup class and set the status\n\t *\n\t * @param $action\n\t */\n\tpublic function do_action( $action, Backup $backup ) {\n\n\t\t// Pass the actions to all the services\n\t\t// Todo should be decoupled into the service class\n\t\tforeach ( Services::get_services( $this ) as $service ) {\n\t\t\tif ( is_wp_error( $service ) ) {\n\t\t\t\treturn $service;\n\t\t\t}\n\t\t\t$service->action( $action, $backup );\n\t\t}\n\n\t}\n\n\t/**\n\t * Calculate schedule run time.\n\t *\n\t * @param int Timestamp $end\n\t */\n\tpublic function update_average_schedule_run_time( $start, $end ) {\n\n\t\tif ( $end <= $start ) {\n\t\t\t// Something went wrong, ignore.\n\t\t\treturn;\n\t\t}\n\n\t\t$diff = (int) abs( $end - $start );\n\n\t\tif ( isset( $this->options['duration_total'] ) && isset( $this->options['backup_run_count'] ) ) {\n\n\t\t\t$this->options['duration_total'] += $diff;\n\t\t\t$this->options['backup_run_count'] ++;\n\n\t\t} else {\n\n\t\t\t$this->options['duration_total'] = $diff;\n\t\t\t$this->options['backup_run_count'] = 1;\n\n\t\t}\n\n\t\t$this->save();\n\t}\n\n\t/**\n\t * Calculates the average run time for this schedule.\n\t *\n\t * @return string\n\t */\n\tpublic function get_schedule_average_duration() {\n\n\t\t$duration = 'Unknown';\n\n\t\tif ( ! isset( $this->options['duration_total'] ) || ! isset( $this->options['backup_run_count'] ) ) {\n\t\t\treturn $duration;\n\t\t}\n\n\t\tif ( 0 === (int) $this->options['backup_run_count'] ) {\n\t\t\treturn $duration;\n\t\t}\n\n\t\t$average_run_time = (int) $this->options['duration_total'] / (int) $this->options['backup_run_count'];\n\n\t\tif ( $average_run_time < HOUR_IN_SECONDS ) {\n\n\t\t\t$mins = round( $average_run_time / MINUTE_IN_SECONDS );\n\n\t\t\tif ( $mins <= 1 ) {\n\t\t\t\t$mins = 1;\n\t\t\t}\n\n\t\t\t/* translators: min=minute */\n\t\t\t$duration = sprintf( _n( '%s min', '%s mins', $mins, 'backupwordpress' ), $mins );\n\n\t\t} elseif ( $average_run_time < DAY_IN_SECONDS && $average_run_time >= HOUR_IN_SECONDS ) {\n\n\t\t\t$hours = round( $average_run_time / HOUR_IN_SECONDS );\n\n\t\t\tif ( $hours <= 1 ) {\n\t\t\t\t$hours = 1;\n\t\t\t}\n\n\t\t\t$duration = sprintf( _n( '%s hour', '%s hours', $hours, 'backupwordpress' ), $hours );\n\t\t}\n\n\t\treturn $duration;\n\t}\n\n\t/**\n\t * Get the backups created by this schedule\n\t *\n\t * @todo   look into using recursiveDirectoryIterator and recursiveRegexIterator\n\t * @return string[] - file paths of the backups\n\t */\n\tpublic function get_backups() {\n\n\t\t$files = array();\n\n\t\tif ( $handle = @opendir( Path::get_path() ) ) {\n\n\t\t\twhile ( false !== ( $file = readdir( $handle ) ) ) {\n\n\t\t\t\tif ( pathinfo( $file, PATHINFO_EXTENSION ) === 'zip' && strpos( $file, $this->get_id() ) !== false && ( isset( $this->status ) && $this->get_backup_filename() !== $file ) ) {\n\t\t\t\t\t$files[ @filemtime( trailingslashit( Path::get_path() ) . $file ) ] = trailingslashit( Path::get_path() ) . $file;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tclosedir( $handle );\n\n\t\t}\n\n\t\tkrsort( $files );\n\n\t\treturn $files;\n\n\t}\n\n\t/**\n\t * Delete old backups\n\t *\n\t * @access private\n\t */\n\tpublic function delete_old_backups() {\n\n\t\tif ( count( $this->get_backups() ) <= $this->get_max_backups() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tarray_map( array( $this, 'delete_backup' ), array_slice( $this->get_backups(), $this->get_max_backups() ) );\n\n\t}\n\n\t/**\n\t * Delete a specific back up file created by this schedule\n\t *\n\t * @param string $filepath\n\t *\n\t * @return \\WP_Error|boolean\n\t */\n\tpublic function delete_backup( $filepath ) {\n\n\t\t// Check that it's a valid filepath\n\t\tif ( empty( $filepath ) || ! is_string( $filepath ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_empty_string_error', sprintf( __( 'Argument 1 for %s must be a non-empty string', 'backupwordpress' ), __METHOD__ ) );\n\t\t}\n\n\t\t// Make sure it exists\n\t\tif ( ! file_exists( $filepath ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_file_error', sprintf( __( '%s doesn\\'t exist', 'backupwordpress' ), $filepath ) );\n\t\t}\n\n\t\t// Make sure it was created by this schedule\n\t\tif ( strpos( $filepath, $this->get_id() ) === false ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_backup_error', __( 'That backup wasn\\'t created by this schedule', 'backupwordpress' ) );\n\t\t}\n\n\t\tunlink( $filepath );\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Delete all back up files created by this schedule\n\t *\n\t */\n\tpublic function delete_backups() {\n\t\tarray_map( array( $this, 'delete_backup' ), $this->get_backups() );\n\t}\n\n\t/**\n\t * Save the schedules options.\n\t *\n\t */\n\tpublic function save() {\n\n\t\t// Only save them if they have changed\n\t\tif ( get_option( 'hmbkp_schedule_' . $this->get_id() ) !== $this->options ) {\n\t\t\tupdate_option( 'hmbkp_schedule_' . $this->get_id(), $this->options );\n\n\t\t\t// Delete the schedule cache.\n\t\t\tdelete_transient( 'hmbkp_schedules' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Cancel this schedule\n\t *\n\t * Cancels the cron job, removes the schedules options\n\t * and optionally deletes all backups created by\n\t * this schedule.\n\t *\n\t */\n\tpublic function cancel( $delete_backups = false ) {\n\n\t\t// Delete the schedule options\n\t\tdelete_option( 'hmbkp_schedule_' . $this->get_id() );\n\n\t\t// Delete the schedule cache.\n\t\tdelete_transient( 'hmbkp_schedules' );\n\n\t\t// Clear any existing schedules\n\t\t$this->unschedule();\n\n\t\t// Delete it's backups\n\t\tif ( $delete_backups ) {\n\t\t\t$this->delete_backups();\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "classes/class-schedules.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * A simple class for loading schedules\n */\nclass Schedules {\n\n\t/**\n\t * An array of schedules\n\t *\n\t * @var mixed\n\t * @access private\n\t */\n\tprivate $schedules;\n\n\t/**\n\t *\n\t */\n\tprotected static $instance;\n\n\tpublic static function get_instance() {\n\n\t\tif ( ! ( self::$instance instanceof Schedules ) ) {\n\t\t\tself::$instance = new Schedules();\n\t\t}\n\n\t\treturn self::$instance;\n\n\t}\n\n\t/**\n\t * Load the schedules from wp_options and store in $this->schedules\n\t *\n\t */\n\tprivate function __construct() {\n\t\t$this->refresh_schedules();\n\t}\n\n\tpublic function refresh_schedules() {\n\n\t\t$schedules = get_transient( 'hmbkp_schedules' );\n\n\t\tif ( ! $schedules ) {\n\n\t\t\tglobal $wpdb;\n\n\t\t\t// Load all schedule options from the database.\n\t\t\t$schedules = $wpdb->get_col( \"SELECT option_name from $wpdb->options WHERE option_name LIKE 'hmbkp\\_schedule\\_%'\" );\n\n\t\t\tset_transient( 'hmbkp_schedules', $schedules, WEEK_IN_SECONDS );\n\t\t}\n\n\t\t// Instantiate each one as a Scheduled_Backup\n\t\t$this->schedules = array_map( array( $this, 'instantiate' ), array_filter( (array) $schedules ) );\n\n\t}\n\n\t/**\n\t * Get an array of schedules\n\t *\n\t * @return Scheduled_Backup[]\n\t */\n\tpublic function get_schedules() {\n\t\treturn $this->schedules;\n\t}\n\n\t/**\n\t * Get a schedule by ID\n\t *\n\t * @param $id\n\t * @return Scheduled_Backup\n\t */\n\tpublic function get_schedule( $id ) {\n\n\t\tforeach ( $this->schedules as $schedule ) {\n\t\t\tif ( $schedule->get_id() == $id ) {\n\t\t\t\treturn $schedule;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Instantiate the individual scheduled backup objects\n\t *\n\t * @access private\n\t * @param string $id\n\t * @return Scheduled_Backup\n\t */\n\tprivate function instantiate( $id ) {\n\t\treturn new Scheduled_Backup( str_replace( 'hmbkp_schedule_', '', $id ) );\n\t}\n}\n"
  },
  {
    "path": "classes/class-service.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * An abstract service class, individual services should\n * extend this class\n */\nabstract class Service {\n\n\t/**\n\t * Human readable name for this service\n\t * @var string\n\t */\n\tpublic $name;\n\n\t/**\n\t * The instance Backup_Schedule that this service is\n\t * is currently working with\n\t *\n\t * @var Scheduled_Backup\n\t */\n\tprotected $schedule;\n\n\tpublic function __construct( Scheduled_Backup $schedule ) {\n\t\t$this->set_schedule( $schedule );\n\t}\n\n\t/**\n\t * Used to determine if the service is in use or not\n\t *\n\t * @return boolean\n\t */\n\tabstract public function is_service_active();\n\n\t/**\n\t * The form to output as part of the schedule settings\n\t *\n\t * If you don't want a whole form return ''; here and use @field instead\n\t *\n\t * @return string    The raw HTML for the form you want to output\n\t */\n\tabstract public function form();\n\n\t/**\n\t * The field to output as part of the schedule settings\n\t *\n\t * If you don't want a field return ''; here and use @form instead\n\t *\n\t * @return string    The raw HTML for the field you want to output\n\t */\n\tabstract public function field();\n\n\t/**\n\t * Help text that should be output in the Constants help tab\n\t *\n\t * @return string    The raw HTML for the Constant help text you want to output\n\t */\n\tpublic static function constant() {}\n\n\t/**\n\t * Validate and sanitize data before it's saved.\n\t *\n\t * @param  array &$new_data An array or data from $_GET, passed by reference so it can be modified,\n\t * @param  array $old_data  The old data thats going to be overwritten\n\t * @return array $error     Array of validation errors e.g. return array( 'email' => 'not valid' );\n\t */\n\tabstract public function update( &$new_data, $old_data );\n\n\t/**\n\t * The string to be output as part of the schedule sentence\n\t *\n\t * @return string\n\t */\n\tabstract public function display();\n\n\t/**\n\t * Receives actions from the backup\n\t *\n\t * This is where the service should do it's thing\n\t *\n\t * @see  Backup::do_action for a list of the actions\n\t *\n\t * @param $action\n\t * @param Backup $backup\n\t *\n\t * @return mixed\n\t */\n\tpublic function action( $action, Backup $backup ) {}\n\n\tpublic function get_slug() {\n\t\treturn sanitize_key( $this->name );\n\t}\n\n\t/**\n\t * Utility for getting a formated html input name attribute\n\t *\n\t * @param  string $name The name of the field\n\t * @return string       The formated name\n\t */\n\tprotected function get_field_name( $name ) {\n\t\treturn esc_attr( $this->get_slug() . '[' . $name . ']' );\n\t}\n\n\t/**\n\t * Get the value of a field\n\t *\n\t * @param string $name The name of the field\n\t * @param string $esc  The escaping function that should be used\n\t * @return string\n\t */\n\tprotected function get_field_value( $name, $esc = 'esc_attr' ) {\n\n\t\tif ( $name && $this->schedule->get_service_options( $this->get_slug(), $name ) ) {\n\t\t\treturn $esc( $this->schedule->get_service_options( $this->get_slug(), $name ) );\n\t\t}\n\n\t\treturn '';\n\n\t}\n\n\t/**\n\t * Save the settings for this service\n\t *\n\t * @return null|array returns null on success, array of errors on failure\n\t */\n\tpublic function save() {\n\n\t\t$classname = $this->get_slug();\n\n\t\t$old_data = $this->schedule->get_service_options( $classname );\n\n\t\t$new_data = isset( $_POST[ $classname ] ) ? $_POST[ $classname ] : array();\n\n\t\t// $new_data is passed by ref, so it is clean after this method call.\n\t\t$errors = $this->update( $new_data, $old_data );\n\n\t\tif ( $errors && $errors = array_flip( $errors ) ) {\n\n\t\t\tforeach ( $errors as $error => &$field ) {\n\t\t\t\t$field = $this->get_slug() . '[' . $field . ']';\n\t\t\t}\n\n\t\t\treturn array_flip( $errors );\n\n\t\t}\n\n\t\t// Only overwrite settings if they changed\n\t\tif ( ! empty( $new_data ) ) {\n\t\t\t$this->schedule->set_service_options( $classname, $new_data );\n\t\t}\n\n\t\treturn array();\n\n\t}\n\n\t/**\n\t * Set the current schedule object\n\t *\n\t * @param Scheduled_Backup $schedule An instantiated schedule object\n\t */\n\tpublic function set_schedule( Scheduled_Backup $schedule ) {\n\t\t$this->schedule = $schedule;\n\t}\n\n\t/**\n\t * Gets the settings for a similar destination from the existing schedules\n\t * so that we can copy them into the form to avoid having to type them again\n\t *\n\t * @return array\n\t */\n\tprotected function fetch_destination_settings() {\n\n\t\t$service = $this->get_slug();\n\n\t\t$schedules_obj = Schedules::get_instance();\n\n\t\t$schedules = $schedules_obj->get_schedules();\n\n\t\tforeach ( $schedules as $schedule ) {\n\n\t\t\tif ( $schedule->get_id() != $this->schedule->get_id() ) {\n\n\t\t\t\t$options = $schedule->get_service_options( $service );\n\n\t\t\t\tif ( ! empty( $options ) ) {\n\t\t\t\t\treturn $options;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn array();\n\n\t}\n\n\t/**\n\t * @return boolean\n\t */\n\tpublic function has_form() {\n\n\t\tob_start();\n\n\t\t$this->form();\n\n\t\treturn (bool) ob_get_clean();\n\n\t}\n\n\t/**\n\t * Handles passing service specific data to Intercom\n\t */\n\tpublic static function intercom_data() {}\n\n\tpublic static function intercom_data_html() {}\n}\n"
  },
  {
    "path": "classes/class-services.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * A singleton to handle the registering, de-registering\n * and storage of services\n */\nclass Services {\n\n\t/**\n\t * Store the current instance\n\t *\n\t * @access private\n\t * @var object Services\n\t * @static\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * The array of services\n\t *\n\t * Should be of the format array( __FILE__ => __CLASS__ );\n\t *\n\t * @access private\n\t * @var  array\n\t * @static\n\t */\n\tprivate $services = array();\n\n\t/**\n\t * The current schedule object\n\t *\n\t * @access private\n\t * @var object Scheduled_Backup\n\t */\n\tprivate $schedule;\n\n\t/**\n\t * Get the current instance\n\t *\n\t * @static\n\t */\n\tpublic static function instance() {\n\n\t\tif ( ! isset( self::$instance ) ) {\n\t\t\tself::$instance = new Services;\n\t\t}\n\n\t\treturn self::$instance;\n\n\t}\n\n\t/**\n\t * Get the array of registered services\n\t *\n\t * @param Scheduled_Backup $schedule\n\t * @return Service[]\n\t */\n\tpublic static function get_services( Scheduled_Backup $schedule = null ) {\n\n\t\tif ( is_null( $schedule ) ) {\n\t\t\treturn self::instance()->services;\n\t\t}\n\n\t\tself::instance()->schedule = $schedule;\n\n\t\treturn array_map( array( self::instance(), 'instantiate' ), self::instance()->services );\n\n\t}\n\n\t/**\n\t * Register a new service\n\t *\n\t * @param $filepath\n\t * @param $classname\n\t * @return \\WP_Error|boolean\n\t */\n\tpublic static function register( $filepath, $classname ) {\n\t\tif ( ! file_exists( $filepath ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_invalid_path_error', sprintf( __( 'Argument 1 for %s must be a valid filepath', 'backupwordpress' ), __METHOD__ ) );\n\t\t}\n\n\t\tself::instance()->services[ $filepath ] = $classname;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * De-register an existing service\n\t * @param string $filepath\n\t * @return \\WP_Error|boolean\n\t */\n\tpublic static function unregister( $filepath ) {\n\n\t\tif ( ! isset( self::instance()->services[ $filepath ] ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_unrecognized_service_error', sprintf( __( 'Argument 1 for %s must be a registered service', 'backupwordpress' ), __METHOD__ ) );\n\t\t}\n\n\t\tunset( self::instance()->services[ $filepath ] );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Instantiate the individual service classes\n\t *\n\t * @param string $classname\n\t *\n\t * @return array An array of instantiated classes\n\t */\n\tprivate static function instantiate( $classname ) {\n\n\t\tif ( ! class_exists( $classname ) ) {\n\t\t\treturn new \\WP_Error( 'hmbkp_invalid_type_error', sprintf( __( 'Argument 1 for %s must be a valid class', 'backupwordpress' ), __METHOD__ ) );\n\t\t}\n\n\t\t/**\n\t\t * @var Service\n\t\t */\n\t\t$class = new $classname( self::instance()->schedule );\n\n\t\treturn $class;\n\n\t}\n}\n"
  },
  {
    "path": "classes/class-setup.php",
    "content": "<?php\n/**\n * Class BackUpWordPress_Setup\n */\nclass HMBKP_Setup {\n\n\t/**\n\t * Defines the minimum version of WordPress required by BWP.\n\t */\n\tconst MIN_WP_VERSION = '3.9';\n\n\t/**\n\t * Defines the minimum version of PHP required by BWP.\n\t */\n\tconst MIN_PHP_VERSION = '5.3.2';\n\n\t/**\n\t * Setup the plugin defaults on activation\n\t */\n\tpublic static function activate() {\n\n\t\tif ( ! current_user_can( 'activate_plugins' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// loads the translation files for the Error message in the wp_die call.\n\t\tload_plugin_textdomain( 'backupwordpress', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );\n\n\t\tif ( ! self::meets_requirements() ) {\n\n\t\t\twp_die( self::get_notice_message(), __( 'BackUpWordPress', 'backupwordpress' ), array( 'back_link' => true ) );\n\n\t\t}\n\n\t\t// Run deactivate on activation in-case it was deactivated manually\n\t\tself::deactivate();\n\n\t}\n\n\t/**\n\t * Cleanup on plugin deactivation\n\t *\n\t * Removes options and clears all cron schedules\n\t */\n\tpublic static function deactivate() {\n\n\t\tif ( ! current_user_can( 'activate_plugins' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tself::delete_schedules();\n\n\t\tself::delete_transients();\n\n\t}\n\n\t/**\n\t * Deletes the backup schedule database entries and WP Cron entries.\n\t */\n\tpublic static function delete_schedules() {\n\n\t\t// Delete Cron schedules.\n\t\tglobal $wpdb;\n\n\t\t$schedules = $wpdb->get_col( $wpdb->prepare( \"SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s\", 'hmbkp_schedule_%' ) );\n\n\t\tforeach ( array_map( array( 'self', 'trim_prefix' ), $schedules ) as $item ) {\n\t\t\twp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $item ) );\n\t\t}\n\t}\n\n\tpublic static function trim_prefix( $item ) {\n\t\treturn ltrim( $item, 'hmbkp_schedule_' );\n\t}\n\n\t/**\n\t * Deletes the plugin's transients from the database.\n\t */\n\tpublic static function delete_transients() {\n\n\t\t// Delete all transients\n\t\t$transients = array(\n\t\t\t'hmbkp_plugin_data',\n\t\t\t'hmbkp_directory_filesizes',\n\t\t\t'hmbkp_directory_filesizes_running',\n\t\t\t'hmbkp_wp_cron_test_beacon',\n\t\t\t'hm_backdrop',\n\t\t);\n\n\t\tarray_map( 'delete_transient', $transients );\n\t}\n\n\t/**\n\t * Deactivate BackUpWordPress.\n\t */\n\tpublic static function self_deactivate() {\n\n\t\tif ( ! current_user_can( 'activate_plugins' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! function_exists( 'deactivate_plugins' ) ) {\n\t\t\trequire_once( ABSPATH . 'wp-admin/includes/plugin.php' );\n\t\t}\n\n\t\tdeactivate_plugins( dirname( dirname( __FILE__ ) ) . '/backupwordpress.php' );\n\n\t\tif ( isset( $_GET['activate'] ) ) {\n\t\t\tunset( $_GET['activate'] );\n\t\t}\n\n\t}\n\n\t/**\n\t * Determine if this WordPress install meets the minimum requirements for BWP to run.\n\t *\n\t * @return bool\n\t */\n\tpublic static function meets_requirements() {\n\n\t\tif ( false === self::is_supported_php_version() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( false === self::is_supported_wp_version() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks the current PHP version against the required version.\n\t *\n\t * @return bool 'Operator' parameter specified, returns a boolean.\n\t */\n\tprotected static function is_supported_php_version() {\n\n\t\treturn version_compare( phpversion(), self::MIN_PHP_VERSION, '>=' );\n\t}\n\n\t/**\n\t * Checks the current WordPress version against the required version.\n\t *\n\t * @return bool 'Operator' parameter specified, returns a boolean.\n\t */\n\tprotected static function is_supported_wp_version() {\n\n\t\treturn version_compare( get_bloginfo( 'version' ), self::MIN_WP_VERSION, '>=' );\n\t}\n\n\t/**\n\t * Displays a user friendly message in the WordPress admin.\n\t */\n\tpublic static function display_admin_notices() {\n\n\t\techo '<div class=\"error\"><p>' . self::get_notice_message() . '</p></div>';\n\n\t}\n\n\t/**\n\t * Returns a localized user friendly error message.\n\t *\n\t * @return string\n\t */\n\tpublic static function get_notice_message() {\n\n\t\treturn sprintf(\n\t\t\t__( 'BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to run. It has not been activated.', 'backupwordpress' ),\n\t\t\tself::MIN_PHP_VERSION,\n\t\t\tself::MIN_WP_VERSION\n\t\t);\n\t}\n}\n"
  },
  {
    "path": "classes/class-site-size.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nuse HM\\Backdrop\\Task;\nuse Symfony\\Component\\Finder\\Finder;\n\n/**\n * Site Size class\n *\n * Use to calculate the total or partial size of the site's database and files.\n */\nclass Site_Size {\n\n\tprivate $size = 0;\n\tprivate $type = '';\n\tprivate $excludes = array();\n\n\t/**\n\t * Constructor\n\t *\n\t * Set up some initial conditions including whether we want to calculate the\n\t * size of the database, files or both and whether to exclude any files from\n\t * the file size calculation.\n\t *\n\t * @param string $type     Whether to calculate the size of the database, files\n\t *                         or both. Should be one of 'file', 'database' or 'complete'\n\t * @param array  $excludes An array of exclude rules\n\t */\n\tpublic function __construct( $type = 'complete', Excludes $excludes = null ) {\n\t\t$this->type = $type;\n\t\t$this->excludes = $excludes;\n\t}\n\n\t/**\n\t * Calculate the size total size of the database + files.\n\t *\n\t * Doesn't account for any compression that would be gained by zipping.\n\t *\n\t * @return string\n\t */\n\tpublic function get_site_size() {\n\n\t\tif ( $this->size ) {\n\t\t\treturn $this->size;\n\t\t}\n\n\t\t$size = 0;\n\n\t\t// Include database size except for file only schedule.\n\t\tif ( 'file' !== $this->type ) {\n\n\t\t\t$size = (int) get_transient( 'hmbkp_database_size' );\n\n\t\t\tif ( ! $size ) {\n\n\t\t\t\tglobal $wpdb;\n\n\t\t\t\t$tables = $wpdb->get_results( 'SHOW TABLE STATUS FROM `' . DB_NAME . '`', ARRAY_A );\n\n\t\t\t\tforeach ( $tables as $table ) {\n\t\t\t\t\t$size += (float) $table['Data_length'];\n\t\t\t\t}\n\n\t\t\t\tset_transient( 'hmbkp_database_size', $size, WEEK_IN_SECONDS );\n\t\t\t}\n\t\t}\n\n\t\t// Include total size of dirs/files except for database only schedule.\n\t\tif ( 'database' !== $this->type ) {\n\n\t\t\t$root = new \\SplFileInfo( Path::get_root() );\n\t\t\t$size += $this->filesize( $root );\n\n\t\t}\n\n\t\t$this->size = $size;\n\n\t\treturn $size;\n\n\t}\n\n\t/**\n\t * Get the site size formatted\n\t *\n\t * @see size_format\n\t *\n\t * @return string\n\t */\n\tpublic function get_formatted_site_size() {\n\t\treturn size_format( $this->get_site_size() );\n\t}\n\n\t/**\n\t * Whether the total filesize is being calculated\n\t *\n\t * @return bool\n\t */\n\tpublic static function is_site_size_being_calculated() {\n\t\treturn false !== get_transient( 'hmbkp_directory_filesizes_running' );\n\t}\n\n\t/**\n\t * Whether the total filesize is cached\n\t *\n\t * @return bool\n\t */\n\tpublic function is_site_size_cached() {\n\t\treturn (bool) $this->get_cached_filesizes();\n\t}\n\n\t/**\n\t * Recursively scans a directory to calculate the total filesize\n\t *\n\t * Locks should be set by the caller with `set_transient( 'hmbkp_directory_filesizes_running', true, HOUR_IN_SECONDS );`\n\t *\n\t * @return array $directory_sizes    An array of directory paths => filesize sum of all files in directory\n\t */\n\tpublic function recursive_filesize_scanner() {\n\n\t\t/**\n\t\t * Raise the `memory_limit` and `max_execution time`\n\t\t *\n\t\t * Respects the WP_MAX_MEMORY_LIMIT Constant and the `admin_memory_limit`\n\t\t * filter.\n\t\t */\n\t\t@ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );\n\t\t@set_time_limit( 0 );\n\n\t\t// Use the cached array directory sizes if available\n\t\t$directory_sizes = $this->get_cached_filesizes();\n\n\t\t// If we do have it in cache then let's use it and also clear the lock\n\t\tif ( is_array( $directory_sizes ) ) {\n\t\t\tdelete_transient( 'hmbkp_directory_filesizes_running' );\n\t\t\treturn $directory_sizes;\n\t\t}\n\n\t\t// If we don't have it cached then we'll need to re-calculate\n\t\t$finder = new Finder();\n\t\t$finder->followLinks();\n\t\t$finder->ignoreDotFiles( false );\n\t\t$finder->ignoreUnreadableDirs( true );\n\n\t\t$files = $finder->in( Path::get_root() );\n\n\t\tforeach ( $files as $file ) {\n\n\t\t\tif ( $file->isReadable() ) {\n\t\t\t\t$directory_sizes[ wp_normalize_path( $file->getRealpath() ) ] = $file->getSize();\n\t\t\t} else {\n\t\t\t\t$directory_sizes[ wp_normalize_path( $file->getRealpath() ) ] = 0;\n\t\t\t}\n\t\t}\n\n\t\tfile_put_contents( PATH::get_path() . '/.files', gzcompress( json_encode( $directory_sizes ) ) );\n\n\t\t// Remove the lock\n\t\tdelete_transient( 'hmbkp_directory_filesizes_running' );\n\n\t\treturn $directory_sizes;\n\n\t}\n\n\t/**\n\t * Get the total filesize for a given file or directory. Aware of exclusions.\n\t *\n\t * If $file is a file then return the result of `filesize()` or 0 if it's excluded.\n\t * If $file is a directory then recursively calculate the size without\n\t * the size of excluded files/directories.\n\t *\n\t * @param \\SplFileInfo   $file The file or directory you want to know the size of.\n\t *\n\t * @return int           The total filesize of the file or directory without\n\t *                       the size of excluded files/directories.\n\t */\n\tpublic function filesize( \\SplFileInfo $file ) {\n\n\t\t// Skip missing or unreadable files.\n\t\tif ( ! file_exists( $file->getPathname() ) || ! $file->getRealpath() || ! $file->isReadable() ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// If it's a file then return its filesize or 0 if it's excluded.\n\t\tif ( $file->isFile() ) {\n\n\t\t\tif ( $this->excludes && $this->excludes->is_file_excluded( $file ) ) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn $file->getSize();\n\t\t\t}\n\t\t}\n\n\t\t// If it's a directory then pull it from the cached filesize array.\n\t\tif ( $file->isDir() ) {\n\t\t\treturn $this->directory_filesize( $file );\n\t\t}\n\t}\n\n\tpublic function directory_filesize( \\SplFileInfo $file ) {\n\n\t\t// For performance reasons we cache the root.\n\t\tif ( $file->getRealPath() === PATH::get_root() && $this->excludes ) {\n\n\t\t\t$directory_sizes = get_transient( 'hmbkp_root_size' );\n\n\t\t\tif ( $directory_sizes ) {\n\t\t\t\treturn (int) $directory_sizes;\n\t\t\t}\n\t\t}\n\n\t\t// If we haven't calculated the site size yet then kick it off in a thread.\n\t\t$directory_sizes = $this->get_cached_filesizes();\n\n\t\tif ( ! is_array( $directory_sizes ) ) {\n\t\t\t$this->rebuild_directory_filesizes();\n\n\t\t\t// Intentionally return null so the caller can tell that the size is being calculated.\n\t\t\treturn null;\n\t\t}\n\n\t\t/*\n\t\t * Ensure we only include files in the current path, the filepaths are stored in keys\n\t\t * so we need to flip for use with preg_grep.\n\t\t */\n\t\t$directory_sizes = array_flip( preg_grep( '(' . wp_normalize_path( $file->getRealPath() ) . ')', array_flip( $directory_sizes ) ) );\n\n\t\tif ( $this->excludes ) {\n\n\t\t\t$excludes = implode( '|', $this->excludes->get_excludes_for_regex() );\n\n\t\t\tif ( $excludes ) {\n\t\t\t\t// Use PREG_GREP_INVERT to remove any filepaths which match an exclude rule\n\t\t\t\t$directory_sizes = array_flip( preg_grep( '(' . $excludes . ')', array_flip( $directory_sizes ), PREG_GREP_INVERT ) );\n\t\t\t}\n\t\t}\n\n\t\t$directory_sizes = absint( array_sum( $directory_sizes ) );\n\n\t\t// For performance reasons we cache the root.\n\t\tif ( $file->getRealPath() === PATH::get_root() && $this->excludes ) {\n\t\t\tset_transient( 'hmbkp_root_size', $directory_sizes, DAY_IN_SECONDS );\n\t\t}\n\n\t\t// Directory size is now just a sum of all files across all sub directories.\n\t\treturn (int) $directory_sizes;\n\n\t}\n\n\tpublic function rebuild_directory_filesizes() {\n\n\t\tif ( $this->is_site_size_being_calculated() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Mark the filesize as being calculated\n\t\tset_transient( 'hmbkp_directory_filesizes_running', true, HOUR_IN_SECONDS );\n\n\t\t// Schedule a Backdrop task to trigger a recalculation\n\t\t$task = new Task( array( $this, 'recursive_filesize_scanner' ) );\n\t\t$task->schedule();\n\n\t}\n\n\tpublic function get_cached_filesizes( $max_age = WEEK_IN_SECONDS ) {\n\n\t\t$cache = PATH::get_path() . '/.files';\n\t\t$files = false;\n\n\t\tif ( file_exists( $cache ) ) {\n\n\t\t\t// If the file is old then regenerate it\n\t\t\tif ( ( time() - filemtime( $cache ) ) <= $max_age ) {\n\t\t\t\t$files = json_decode( gzuncompress( file_get_contents( $cache ) ), 'ARRAY_A' );\n\t\t\t}\n\t\t}\n\n\t\treturn $files;\n\n\t}\n}\n"
  },
  {
    "path": "classes/class-webhook-service.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Webhook notifications for backups\n *\n * @extends Service\n */\nabstract class Webhook_Service extends Service {\n\n\t/**\n\t * Human readable name for this service\n\t * @var string\n\t */\n\tpublic $name = 'Webhook';\n\n\t/**\n\t * @return string\n\t */\n\tabstract protected function get_secret_key();\n\n\t/**\n\t * @return string\n\t */\n\tabstract protected function get_url();\n\n\t/**\n\t * Fire the webhook notification on the hmbkp_backup_complete\n\t *\n\t * @see  Backup::do_action\n\t * @param  string $action The action received from the backup\n\t * @return void\n\t */\n\tpublic function action( $action, Backup $backup ) {\n\n\t\tif ( 'hmbkp_backup_complete' !== $action || ! $this->is_service_active() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$webhook_url = $this->get_url();\n\t\t$file        = $backup->get_backup_filepath();\n\t\t$download    = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL );\n\t\t$domain      = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH );\n\n\t\t// The backup failed, send a message saying as much\n\t\tif ( ! file_exists( $file ) && ( $errors = array_merge( $backup->get_errors(), $backup->get_warnings() ) ) ) {\n\n\t\t\t$error_message = '';\n\n\t\t\tforeach ( $errors as $error_set ) {\n\t\t\t\t$error_message .= implode( \"\\n - \", $error_set );\n\t\t\t}\n\n\t\t\tif ( $error_message ) {\n\t\t\t\t$error_message = ' - ' . $error_message;\n\t\t\t}\n\n\t\t\t$subject = sprintf( __( 'Backup of %s Failed', 'backupwordpress' ), $domain );\n\n\t\t\t$body = array(\n\t\t\t\t'type'         => 'backup.error',\n\t\t\t\t'site_url'     => site_url(),\n\t\t\t\t'backup'       => array(\n\t\t\t\t\t'id'           => 'backup_' . pathinfo( $file, PATHINFO_FILENAME ),\n\t\t\t\t\t'start'        => '0',\n\t\t\t\t\t'end'          => '0',\n\t\t\t\t\t'download_url' => '',\n\t\t\t\t\t'type'         => $this->schedule->get_type(),\n\t\t\t\t\t'status'       => array(\n\t\t\t\t\t\t'message'      => $subject . ' - ' . $error_message,\n\t\t\t\t\t\t'success'      => '0',\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\n\t\t} else {\n\n\t\t\t$body = array(\n\t\t\t\t'type'         => 'backup.success',\n\t\t\t\t'site_url'     => site_url(),\n\t\t\t\t'backup'      => array(\n\t\t\t\t\t'id'           => 'backup_' . $this->schedule->get_id(),\n\t\t\t\t\t'start'        => '0',\n\t\t\t\t\t'end'          => '0',\n\t\t\t\t\t'download_url' => $download,\n\t\t\t\t\t'type'         => $this->schedule->get_type(),\n\t\t\t\t\t'status'       => array(\n\t\t\t\t\t\t'message'      => 'Backup complete',\n\t\t\t\t\t\t'success'      => '1',\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\n\t\t}\n\n\t\t$signature    = hash_hmac( 'sha1', serialize( $body ), $this->get_secret_key() );\n\t\t$webhook_args = array( 'headers' => array( 'X-BWP-Signature' => $signature ), 'body' => $body );\n\n\t\t$ret = wp_remote_post( $webhook_url, $webhook_args );\n\n\t\tif ( is_wp_error( $ret ) ) {\n\t\t\t$backup->warning( 'Webhook', sprintf( __( 'Error: %s', 'backupwordpress' ), $ret->get_error_message() ) );\n\t\t}\n\n\t}\n\n\tpublic static function intercom_data() {\n\t\treturn array();\n\t}\n\n\tpublic static function intercom_data_html() {}\n}\n"
  },
  {
    "path": "classes/class-wpremote-webhook-service.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Webhook notifications for backups on WPRemote\n *\n * @extends Service\n */\nclass WPRemote_Webhook_Service extends Webhook_Service {\n\n\t/**\n\t * Human readable name for this service\n\t * @var string\n\t */\n\tpublic $name = 'WP Remote Webhook';\n\n\tprivate $wpremote_webhook_url = 'http://wpremote.com/api/json/backupwordpress/webhook';\n\n\t/**\n\t * Not in use\n\t *\n\t * @see  field\n\t * @return null\n\t */\n\tpublic function form() {}\n\n\t/**\n\t * Not in use\n\t *\n\t * @return null\n\t */\n\tpublic function field() {}\n\n\t/**\n\t * Not in use\n\t *\n\t * @return null\n\t */\n\tpublic function display() {}\n\n\t/**\n\t * Not in use\n\t * $return null\n\t */\n\tpublic function update( &$new_data, $old_data ) {}\n\n\t/**\n\t * Used to determine if the service is in use or not\n\t */\n\tpublic function is_service_active() {\n\t\treturn strlen( $this->get_url() ) > 0;\n\t}\n\n\t/**\n\t * @return string\n\t */\n\tprotected function get_url() {\n\t\treturn ( defined( 'WPRP_PLUGIN_SLUG' ) && get_option( 'wpr_api_key' ) ) ? $this->wpremote_webhook_url : false;\n\t}\n\n\t/**\n\t * @return string\n\t */\n\tprotected function get_secret_key() {\n\t\treturn get_option( 'wpr_api_key' );\n\t}\n}\n\n// Register the service\nServices::register( __FILE__, 'HM\\BackUpWordPress\\WPRemote_Webhook_Service' );\n"
  },
  {
    "path": "classes/deprecated.php",
    "content": "<?php\n\n\n/**\n * An abstract service class, individual services should\n * extend this class\n */\nabstract class HMBKP_Service {}\n\n/**\n * A singleton to handle the registering, de-registering\n * and storage of services\n */\nclass HMBKP_Services {\n\n\t/**\n\t * Store the current instance\n\t *\n\t * @access private\n\t * @var object HMBKP_Services\n\t * @static\n\t */\n\tprivate static $instance;\n\n\t/**\n\t * The array of services\n\t *\n\t * Should be of the format array( __FILE__ => __CLASS__ );\n\t *\n\t * @access private\n\t * @var  array\n\t * @static\n\t */\n\tprivate $services = array();\n\n\t/**\n\t * The current schedule object\n\t *\n\t * @access private\n\t * @var object HMBKP_Scheduled_Backup\n\t */\n\tprivate $schedule;\n\n\t/**\n\t * Get the current instance\n\t *\n\t * @access public\n\t * @static\n\t */\n\tpublic static function instance() {\n\n\t\tif ( ! isset( self::$instance ) )\n\t\t\tself::$instance = new HMBKP_Services;\n\n\t\treturn self::$instance;\n\n\t}\n\n\t/**\n\t * Register a new service\n\t *\n\t * @param $filepath\n\t * @param $classname\n\t * @return bool|WP_Error\n\t */\n\tpublic static function register( $filepath, $classname ) {\n\n\t\t_deprecated_function( __METHOD__, '3.1.2' );\n\t}\n\n\t/**\n\t * Instantiate the individual service classes\n\t *\n\t * @param string $classname\n\t *\n\t * @return array An array of instantiated classes\n\t */\n\tprivate static function instantiate( $classname ) {\n\n\t\tif ( ! class_exists( $classname ) )\n\t\t\treturn new \\WP_Error( 'hmbkp_invalid_type_error', sprintf( __( 'Argument 1 for %s must be a valid class', 'backupwordpress' ) ), __METHOD__ );\n\n\t\t/**\n\t\t * @var HMBKP_Service\n\t\t */\n\t\t$class = new $classname( self::instance()->schedule );\n\n\t\treturn $class;\n\n\t}\n\n}\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\"       : \"xibodevelopment/backupwordpress\",\n    \"description\": \"Simple automated backups of your WordPress powered website.\",\n    \"keywords\"   : [\n        \"wordpress\",\n        \"backup\"\n    ],\n    \"type\"       : \"wordpress-plugin\",\n    \"homepage\"   : \"https://github.com/xibodevelopment/backupwordpress\",\n    \"license\"    : \"GPL-2.0\",\n    \"authors\"    : [\n        {\n            \"name\"    : \"XIBO Ltd\",\n            \"email\"   : \"support@xibomarketing.com\",\n            \"homepage\": \"https://github.com/xibodevelopment\"\n        }\n    ],\n    \"support\"    : {\n        \"issues\": \"https://github.com/xibodevelopment/backupwordpress/issues\"\n    },\n    \"require\": {\n        \"symfony/finder\": \"~2.8\",\n        \"symfony/process\": \"~2.8\",\n        \"ifsnop/mysqldump-php\":\"~2.1\"\n    }\n}\n"
  },
  {
    "path": "functions/core.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Handles anything that needs to be\n * done when the plugin is updated\n */\nfunction update() {\n\n\t// Update from backUpWordPress 0.4.5\n\tif ( get_option( 'bkpwp_max_backups' ) ) {\n\n\t\t// Carry over the custom path\n\t\tif ( $legacy_path = get_option( 'bkpwppath' ) ) {\n\t\t\tupdate_option( 'hmbkp_path', $legacy_path );\n\t\t}\n\n\t\t// Options to remove\n\t\t$legacy_options = array(\n\t\t\t'bkpwp_archive_types',\n\t\t\t'bkpwp_automail_from',\n\t\t\t'bkpwp_domain',\n\t\t\t'bkpwp_domain_path',\n\t\t\t'bkpwp_easy_mode',\n\t\t\t'bkpwp_excludelists',\n\t\t\t'bkpwp_install_user',\n\t\t\t'bkpwp_listmax_backups',\n\t\t\t'bkpwp_max_backups',\n\t\t\t'bkpwp_presets',\n\t\t\t'bkpwp_reccurrences',\n\t\t\t'bkpwp_schedules',\n\t\t\t'bkpwp_calculation',\n\t\t\t'bkpwppath',\n\t\t\t'bkpwp_status_config',\n\t\t\t'bkpwp_status',\n\t\t);\n\n\t\tforeach ( $legacy_options as $option ) {\n\t\t\tdelete_option( $option );\n\t\t}\n\n\t\tglobal $wp_roles;\n\n\t\t$wp_roles->remove_cap( 'administrator', 'manage_backups' );\n\t\t$wp_roles->remove_cap( 'administrator', 'download_backups' );\n\n\t\twp_clear_scheduled_hook( 'bkpwp_schedule_bkpwp_hook' );\n\n\t}\n\n\t// Version 1 to 2\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '2.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t/**\n\t\t * Setup a backwards compatible schedule\n\t\t */\n\t\t$legacy_schedule = new Scheduled_Backup( 'backup' );\n\n\t\t// Backup type\n\t\tif ( ( defined( 'HMBKP_FILES_ONLY' ) && HMBKP_FILES_ONLY ) || get_option( 'hmbkp_files_only' ) ) {\n\t\t\t$legacy_schedule->set_type( 'file' );\n\t\t} elseif ( ( defined( 'HMBKP_DATABASE_ONLY' ) && HMBKP_DATABASE_ONLY ) || get_option( 'hmbkp_database_only' ) ) {\n\t\t\t$legacy_schedule->set_type( 'database' );\n\t\t} else {\n\t\t\t$legacy_schedule->set_type( 'complete' );\n\t\t}\n\n\t\t// Daily schedule time\n\t\tif ( defined( 'HMBKP_DAILY_SCHEDULE_TIME' ) && HMBKP_DAILY_SCHEDULE_TIME ) {\n\t\t\t$legacy_schedule->set_schedule_start_time( strtotime( HMBKP_DAILY_SCHEDULE_TIME ) );\n\t\t}\n\n\t\t// Backup schedule\n\t\t$legacy_schedule->set_reoccurrence( get_option( 'hmbkp_schedule_frequency', 'daily' ) );\n\n\t\t// Automatic backups disabled?\n\t\tif ( ( defined( 'HMBKP_DISABLE_AUTOMATIC_BACKUP' ) && HMBKP_DISABLE_AUTOMATIC_BACKUP ) || get_option( 'hmbkp_disable_automatic_backup' ) ) {\n\t\t\t$legacy_schedule->set_reoccurrence( 'manually' );\n\t\t}\n\n\t\t// Max backups\n\t\tif ( defined( 'HMBKP_MAX_BACKUPS' ) && is_numeric( HMBKP_MAX_BACKUPS ) ) {\n\t\t\t$legacy_schedule->set_max_backups( (int) HMBKP_MAX_BACKUPS );\n\t\t} else {\n\t\t\t$legacy_schedule->set_max_backups( (int) get_option( 'hmbkp_max_backups', 10 ) );\n\t\t}\n\n\t\t// Excludes\n\t\tif ( get_option( 'hmbkp_excludes' ) ) {\n\t\t\t$legacy_schedule->set_excludes( get_option( 'hmbkp_excludes' ) );\n\t\t}\n\n\t\t// Backup email\n\t\tif ( defined( 'HMBKP_EMAIL' ) && is_email( HMBKP_EMAIL ) ) {\n\t\t\t$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => HMBKP_EMAIL ) );\n\t\t} elseif ( is_email( get_option( 'hmbkp_email_address' ) ) ) {\n\t\t\t$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => get_option( 'hmbkp_email_address' ) ) );\n\t\t}\n\n\t\t// Set the archive filename to what it used to be\n\t\t$legacy_schedule->backup_filename = implode( '-', array( get_bloginfo( 'name' ), 'backup', current_time( 'Y-m-d-H-i-s' ) ) ) . '.zip';\n\n\t\t$legacy_schedule->save();\n\n\t\t$legacy_path = get_option( 'hmbkp_path' );\n\n\t\tif ( $legacy_path ) {\n\n\t\t\t// Prepend 'backup-' to the beginning of any legacy backups so they are picked up by the legacy schedule\n\t\t\tif ( $handle = opendir( $legacy_path ) ) {\n\t\t\t\twhile ( false !== ( $file = readdir( $handle ) ) ) {\n\t\t\t\t\tif ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) ) {\n\t\t\t\t\t\trename( trailingslashit( $legacy_path ) . $file, trailingslashit( $legacy_path ) . 'backup-' . $file );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclosedir( $handle );\n\t\t\t}\n\n\t\t\tPATH::get_instance()->move_old_backups( $legacy_path );\n\n\t\t}\n\n\t\t// Remove the legacy options\n\t\tforeach ( 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 ) {\n\t\t\tdelete_option( $option_name );\n\t\t}\n\t}\n\n\t// Update from 2.x to 3.0\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '2.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t// Remove the plugin data cache\n\t\tdelete_transient( 'hmbkp_plugin_data' );\n\n\t}\n\n\t// Update to 3.1\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t// Remove the plugin data cache\n\t\tdelete_option( 'hmbkp_path' );\n\t\tdelete_option( 'hmbkp_default_path' );\n\n\t}\n\n\t// update to 3.1.4\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.1.4', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t$old_option_names = array(\n\t\t\t'HM\\BackUpWordPressDropbox\\Dropbox_Service'    => 'dropbox',\n\t\t\t'HMBKP_DX_Backup_Service'                      => 'dropbox',\n\t\t\t'HM\\BackUpWordPressFTP\\FTP_Backup_Service'     => 'ftp',\n\t\t\t'HMBKP_FTP_Backup_Service'                     => 'ftp',\n\t\t\t'HM\\BackUpWordPressGDrive\\Google_Drive_BackUp' => 'google-drive',\n\t\t\t'HMBKP_GDV_Backup_Service'                     => 'google-drive',\n\t\t\t'HM\\BackUpWordPressRackspace\\RackSpace_BackUp' => 'rackspace-cloud',\n\t\t\t'HMBKP_RSC_Backup_Service'                     => 'rackspace-cloud',\n\t\t\t'HM\\BackUpWordPressS3\\S3_Backup'               => 's3',\n\t\t\t'HMBKP_S3_Backup_Service'                      => 's3',\n\t\t\t'HM\\BackUpWordPressWinAzure\\WinAzure_Backup'   => 'azure',\n\t\t\t'HMBKP_WAZ_Backup_Service'                     => 'azure',\n\t\t\t'HM\\BackUpWordPress\\Email_Service'             => 'email',\n\t\t);\n\n\t\tglobal $wpdb;\n\n\t\t// Get all schedule options with a SELECT query and delete them.\n\t\t$schedules = $wpdb->get_col( $wpdb->prepare( \"SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s\", 'hmbkp_schedule_%' ) );\n\n\t\tif ( 0 < count( $schedules ) ) {\n\n\t\t\t// 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.\n\t\t\tforeach ( $schedules as $schedule_id ) {\n\n\t\t\t\t// Load the settings for this schedule into an array\n\t\t\t\t// so we can loop through the different service settings\n\t\t\t\t$schedule_settings = get_option( $schedule_id );\n\n\t\t\t\t// Iterate over each schedule setting for this schedule and check its name against our array.\n\t\t\t\tforeach ( $schedule_settings as $key => $val ) {\n\t\t\t\t\t// 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\n\t\t\t\t\tif ( array_key_exists( $key, $old_option_names ) ) {\n\n\t\t\t\t\t\t// move the value to our new key\n\t\t\t\t\t\t$schedule_settings[ $old_option_names[ $key ] ] = $schedule_settings[ $key ];\n\n\t\t\t\t\t\tunset( $schedule_settings[ $key ] );\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Save back to the DB\n\t\t\t\tupdate_option( $schedule_id, $schedule_settings );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Update to 3.1.5\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.1.5', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t// Delete all transients\n\t\t$transients = array(\n\t\t\t'hmbkp_plugin_data',\n\t\t\t'hmbkp_directory_filesizes',\n\t\t\t'hmbkp_directory_filesizes_running',\n\t\t\t'hmbkp_wp_cron_test_beacon',\n\t\t\t'hm_backdrop',\n\t\t);\n\n\t\tarray_map( 'delete_transient', $transients );\n\n\t\t// Clear duplicate schedules on multisite\n\t\tif ( is_multisite() ) {\n\n\t\t\t// get current blogs from DB\n\t\t\t$blogs = wp_get_sites();\n\n\t\t\tforeach ( $blogs as $blog ) {\n\n\t\t\t\tswitch_to_blog( get_current_blog_id() );\n\n\t\t\t\tif ( is_main_site( get_current_blog_id() ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tglobal $wpdb;\n\n\t\t\t\t// Get the schedule options\n\t\t\t\t$schedules = $wpdb->get_col( $wpdb->prepare( \"SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s\", 'hmbkp_schedule_%' ) );\n\n\t\t\t\t// clear schedules\n\t\t\t\tforeach ( array_map( function ( $item ) {\n\t\t\t\t\treturn ltrim( $item, 'hmbkp_schedule_' );\n\t\t\t\t}, $schedules ) as $item ) {\n\t\t\t\t\twp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $item ) );\n\t\t\t\t}\n\n\t\t\t\t// delete options\n\t\t\t\tarray_map( 'delete_option', $schedules );\n\n\t\t\t\tarray_map( 'delete_option', array( 'hmbkp_enable_support', 'hmbkp_plugin_version', 'hmbkp_path', 'hmbkp_default_path', 'hmbkp_upsell' ) );\n\n\t\t\t\t// Delete all transients\n\t\t\t\tarray_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' ) );\n\n\t\t\t}\n\n\t\t\trestore_current_blog();\n\t\t}\n\t}\n\n\t// Update from 3.3.0\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.3.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\t$schedules = Schedules::get_instance();\n\n\t\t// Loop through all schedules and re-set the reccurrence to include hmbkp_\n\t\tforeach ( $schedules->get_schedules() as $schedule ) {\n\n\t\t\t$reoccurrence = $schedule->get_reoccurrence();\n\n\t\t\tif ( 'manually' !== $reoccurrence && strpos( $reoccurrence, 'hmbkp_' ) === 0 ) {\n\t\t\t\t$schedule->set_reoccurrence( substr( $reoccurrence, 6 ) );\n\t\t\t}\n\n\t\t\t$schedule->save();\n\n\t\t}\n\t}\n\n\t// Update from 3.3.4\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.4.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\t\tdelete_transient( 'hmbkp_directory_filesizes' );\n\t}\n\n\t// Every update\n\tif ( get_option( 'hmbkp_plugin_version' ) && version_compare( Plugin::PLUGIN_VERSION, get_option( 'hmbkp_plugin_version' ), '>' ) ) {\n\n\t\trequire_once( HMBKP_PLUGIN_PATH . 'classes/class-setup.php' );\n\n\t\t\\HMBKP_Setup::deactivate();\n\n\t\tPath::get_instance()->protect_path( 'reset' );\n\n\t}\n\n\t// Update the stored version\n\tif ( get_option( 'hmbkp_plugin_version' ) !== Plugin::PLUGIN_VERSION ) {\n\t\tupdate_option( 'hmbkp_plugin_version', Plugin::PLUGIN_VERSION );\n\t}\n\n}\n\n/**\n * Setup the default backup schedules\n */\nfunction setup_default_schedules() {\n\n\t$schedules = Schedules::get_instance();\n\n\tif ( $schedules->get_schedules() ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Schedule a database backup daily and store backups\n\t * for the last 2 weeks\n\t */\n\t$database_daily = new Scheduled_Backup( (string) time() );\n\t$database_daily->set_type( 'database' );\n\t$database_daily->set_schedule_start_time( determine_start_time( 'daily', array( 'hours' => '23', 'minutes' => '0' ) ) );\n\t$database_daily->set_reoccurrence( 'daily' );\n\t$database_daily->set_max_backups( 7 );\n\t$database_daily->save();\n\n\t/**\n\t * Schedule a complete backup to run weekly and store backups for\n\t * the last 3 months\n\t */\n\t$complete_weekly = new Scheduled_Backup( (string) ( time() + 1 ) );\n\t$complete_weekly->set_type( 'complete' );\n\t$complete_weekly->set_schedule_start_time( determine_start_time( 'weekly', array( 'day_of_week' => 'sunday', 'hours' => '3', 'minutes' => '0' ) ) );\n\t$complete_weekly->set_reoccurrence( 'weekly' );\n\t$complete_weekly->set_max_backups( 3 );\n\t$complete_weekly->save();\n\n\t$schedules->refresh_schedules();\n\n\tadd_action( 'admin_notices', function() {\n\t\techo '<div id=\"hmbkp-warning\" class=\"updated fade\"><p><strong>' . __( 'BackUpWordPress has set up your default schedules.', 'backupwordpress' ) . '</strong> ' . __( 'By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.', 'backupwordpress' ) . '</p></div>';\n\t} );\n\n}\n\nadd_action( 'admin_init', '\\HM\\BackUpWordPress\\setup_default_schedules', 11 );\n\n/**\n * Return an array of cron schedules\n *\n * @param $schedules\n * @return array $reccurrences\n */\nfunction cron_schedules( $schedules = array() ) {\n\n\t$schedules += array(\n\t\t'hourly'      => array( 'interval' => HOUR_IN_SECONDS, 'display' => __( 'Once Hourly', 'backupwordpress' ) ),\n\t\t'twicedaily'  => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily', 'backupwordpress' ) ),\n\t\t'daily'       => array( 'interval' => DAY_IN_SECONDS, 'display' => __( 'Once Daily', 'backupwordpress' ) ),\n\t\t'weekly'      => array( 'interval' => WEEK_IN_SECONDS, 'display' => __( 'Once Weekly', 'backupwordpress' ) ),\n\t\t'fortnightly' => array( 'interval' => 2 * WEEK_IN_SECONDS, 'display' => __( 'Once Every Two Weeks', 'backupwordpress' ) ),\n\t\t'monthly'     => array( 'interval' => 30 * DAY_IN_SECONDS, 'display' => __( 'Once Monthly', 'backupwordpress' ) ),\n\t);\n\n\treturn $schedules;\n}\n\nadd_filter( 'cron_schedules', '\\HM\\BackUpWordPress\\cron_schedules' );\n\n/**\n * Recursively delete a directory including\n * all the files and sub-directories.\n *\n * @param string $dir\n * @return bool\n * @return bool|WP_Error\n */\nfunction rmdirtree( $dir ) {\n\n\tif ( false !== strpos( Path::get_home_path(), $dir ) ) {\n\t\treturn new WP_Error( 'hmbkp_invalid_action_error', sprintf( __( 'You can only delete directories inside your WordPress installation', 'backupwordpress' ) ) );\n\t}\n\n\tif ( is_file( $dir ) ) {\n\t\t@unlink( $dir );\n\t}\n\n\tif ( ! is_dir( $dir ) || ! is_readable( $dir ) ) {\n\t\treturn false;\n\t}\n\n\t$files = new \\RecursiveIteratorIterator( new \\RecursiveDirectoryIterator( $dir, \\RecursiveDirectoryIterator::SKIP_DOTS ), \\RecursiveIteratorIterator::CHILD_FIRST, \\RecursiveIteratorIterator::CATCH_GET_CHILD );\n\n\tforeach ( $files as $file ) {\n\n\t\tif ( $file->isDir() ) {\n\t\t\t@rmdir( $file->getPathname() );\n\t\t} else {\n\t\t\t@unlink( $file->getPathname() );\n\t\t}\n\t}\n\n\t@rmdir( $dir );\n\n\treturn true;\n\n}\n\n/**\n * Check if we have read and write permission on the server\n *\n * @return bool\n */\nfunction has_server_permissions() {\n\n\tif ( ! wp_is_writable( Path::get_path() ) ) {\n\t\treturn false;\n\t}\n\n\tif ( ! is_readable( Path::get_root() ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Check if a backup is possible with regards to file\n * permissions etc.\n *\n * @return bool\n */\nfunction is_backup_possible() {\n\n\tif ( ! has_server_permissions() || ! is_dir( Path::get_path() ) ) {\n\t\treturn false;\n\t}\n\n\tif ( ! Requirement_Mysqldump_Command_Path::test() && ! Requirement_PDO::test() ) {\n\t\treturn false;\n\t}\n\n\tif ( ! Requirement_Zip_Command_Path::test() && ! Requirement_Zip_Archive::test() ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Get the max email attachment filesize\n *\n * Can be overridden by defining HMBKP_ATTACHMENT_MAX_FILESIZE\n *\n * return int the filesize\n */\nfunction get_max_attachment_size() {\n\n\t$max_size = '10mb';\n\n\tif ( defined( 'HMBKP_ATTACHMENT_MAX_FILESIZE' ) && wp_convert_hr_to_bytes( HMBKP_ATTACHMENT_MAX_FILESIZE ) ) {\n\t\t$max_size = HMBKP_ATTACHMENT_MAX_FILESIZE;\n\t}\n\n\treturn wp_convert_hr_to_bytes( $max_size );\n\n}\n\nfunction is_path_accessible( $dir ) {\n\n\t// Path is inaccessible\n\tif ( strpos( $dir, Path::get_home_path() ) === false ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * List of schedules\n *\n * @return array\n */\nfunction get_cron_schedules() {\n\treturn cron_schedules();\n}\n\n/**\n * @param string $type the type of the schedule\n * @param array $times {\n *     An array of time arguments. Optional.\n *\n *     @type int $minutes          The minute to start the schedule on. Defaults to current time + 10 minutes. Accepts\n *                                 any valid `date( 'i' )` output.\n *     @type int $hours            The hour to start the schedule on. Defaults to current time + 10 minutes. Accepts\n *                                 any valid `date( 'G' )` output.\n *     @type string $day_of_week   The day of the week to start the schedule on. Defaults to current time + 10 minutes. Accepts\n *                                 any valid `date( 'l' )` output.\n *     @type int $day_of_month     The day of the month to start the schedule on. Defaults to current time + 10 minutes. Accepts\n *                                 any valid `date( 'j' )` output.\n *     @type int $now              The current time. Defaults to `time()`. Accepts any valid timestamp.\n *\n * }\n * @return int $timestamp Returns the resulting timestamp on success and Int 0 on failure\n */\nfunction determine_start_time( $type, $times = array() ) {\n\n\t// Default to in 10 minutes\n\tif ( ! empty( $times['now'] ) ) {\n\t\t$default_timestamp = $times['now'] + 600;\n\n\t} else {\n\t\t$default_timestamp = time() + 600;\n\t}\n\n\t$default_times = array(\n\t\t'minutes'      => date( 'i', $default_timestamp ),\n\t\t'hours'        => date( 'G', $default_timestamp ),\n\t\t'day_of_week'  => date( 'l', $default_timestamp ),\n\t\t'day_of_month' => date( 'j', $default_timestamp ),\n\t\t'now'          => time(),\n\t);\n\n\t$args = wp_parse_args( $times, $default_times );\n\n\t$intervals = get_cron_schedules();\n\n\t// Allow the hours and minutes to be overwritten by a constant\n\tif ( defined( 'HMBKP_SCHEDULE_TIME' ) && HMBKP_SCHEDULE_TIME ) {\n\t\t$hm = HMBKP_SCHEDULE_TIME;\n\t} else { // The hour and minute that the schedule should start on\n\t\t$hm = $args['hours'] . ':' . $args['minutes'] . ':00';\n\t}\n\n\tswitch ( $type ) {\n\n\t\tcase 'hourly' :\n\t\tcase 'daily' :\n\t\tcase 'twicedaily':\n\n\t\t\t// The next occurance of the specified time\n\t\t\t$schedule_start = $hm;\n\t\t\tbreak;\n\n\t\tcase 'weekly' :\n\t\tcase 'fortnightly' :\n\n\t\t\t// The next day of the week at the specified time\n\t\t\t$schedule_start = $args['day_of_week'] . ' ' . $hm;\n\t\t\tbreak;\n\n\t\tcase 'monthly' :\n\n\t\t\t// The occurance of the time on the specified day of the month\n\t\t\t$schedule_start = date( 'F', $args['now'] ) . ' ' . $args['day_of_month'] . ' ' . $hm;\n\n\t\t\t// If we've already gone past that day this month then we'll need to start next month\n\t\t\tif ( strtotime( $schedule_start, $args['now'] ) <= $args['now'] ) {\n\t\t\t\t$schedule_start = date( 'F', strtotime( '+ 1 month', $args['now'] ) )  . ' ' . $args['day_of_month'] . ' ' . $hm;\n\t\t\t}\n\n\t\t\t// If that's still in the past then we'll need to jump to next year\n\t\t\tif ( strtotime( $schedule_start, $args['now'] ) <= $args['now'] ) {\n\t\t\t\t$schedule_start = date( 'F', strtotime( '+ 1 month', $args['now'] ) )  . ' ' . $args['day_of_month'] . ' ' . date( 'Y', strtotime( '+ 1 year', $args['now'] ) ) . ' ' . $hm;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tdefault :\n\n\t\t\treturn 0;\n\n\t}\n\n\t$timestamp = strtotime( $schedule_start, $args['now'] );\n\n\t// Convert to UTC\n\t$timestamp -= get_option( 'gmt_offset' ) * 3600;\n\n\t// If the scheduled time already passed then keep adding the interval until we get to a future date\n\twhile ( $timestamp <= $args['now'] ) {\n\t\t$timestamp += $intervals[ $type ]['interval'];\n\t}\n\n\treturn $timestamp;\n\n}\n\n/**\n * Helper function for creating safe action URLs.\n *\n * @param string $action Callback function name.\n * @param array $query_args Additional GET params.\n *\n * @return string\n */\nfunction admin_action_url( $action, array $query_args = array() ) {\n\n\t$query_args = array_merge( $query_args, array( 'action' => 'hmbkp_' . $action ) );\n\n\treturn esc_url( wp_nonce_url( add_query_arg( $query_args, admin_url( 'admin-post.php' ) ), 'hmbkp_' . $action, 'hmbkp-' . $action . '_nonce' ) );\n}\n\n/**\n * OS dependant way to pipe stderr to null\n *\n * @return string The exec argument to pipe stderr to null\n */\nfunction ignore_stderr() {\n\n\t// If we're on Windows\n\tif ( DIRECTORY_SEPARATOR == '\\\\' ) {\n\t\treturn '2>nul';\n\t}\n\n\t// Or Unix\n\treturn '2>/dev/null';\n\n}\n\n/**\n * Return the contents of `$directory` as a single depth list ordered by total filesize.\n *\n * Will schedule background threads to recursively calculate the filesize of subdirectories.\n * The total filesize of each directory and subdirectory is cached in a transient for 1 week.\n *\n * @param string $directory The directory to list\n *\n * @todo doesn't really belong in this class, should just be a function\n * @return array            returns an array of files ordered by filesize\n */\nfunction list_directory_by_total_filesize( $directory, Excludes $excludes ) {\n\n\t$files = $files_with_no_size = $empty_files = $files_with_size = $unreadable_files = array();\n\n\tif ( ! is_dir( $directory ) ) {\n\t\treturn $files;\n\t}\n\n\t$finder = new \\Symfony\\Component\\Finder\\Finder();\n\t$finder->followLinks();\n\t$finder->ignoreDotFiles( false );\n\t$finder->ignoreUnreadableDirs();\n\t$finder->depth( '== 0' );\n\n\t$site_size = new Site_Size( 'file', $excludes );\n\n\t$files = $finder->in( $directory );\n\n\tforeach ( $files as $entry ) {\n\n\t\t// Get the total filesize for each file and directory\n\t\t$filesize = $site_size->filesize( $entry );\n\n\t\tif ( $filesize ) {\n\n\t\t\t// 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\n\t\t\twhile ( array_key_exists( $filesize, $files_with_size ) ) {\n\t\t\t\t$filesize ++;\n\t\t\t}\n\n\t\t\t$files_with_size[ $filesize ] = $entry;\n\n\t\t} elseif ( 0 === $filesize ) {\n\t\t\t$empty_files[] = $entry;\n\t\t} else {\n\t\t\t$files_with_no_size[] = $entry;\n\t\t}\n\t}\n\n\t// Sort files by filesize, largest first\n\tkrsort( $files_with_size );\n\n\t// Add 0 byte files / directories to the bottom\n\t$files = $files_with_size + array_merge( $empty_files, $unreadable_files );\n\n\t// Add directories that are still calculating to the top\n\tif ( $files_with_no_size ) {\n\n\t\t// 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\n\t\tforeach ( $files_with_no_size as $entry ) {\n\t\t\tarray_unshift( $files, $entry );\n\t\t}\n\t}\n\n\treturn $files;\n\n}\n"
  },
  {
    "path": "functions/interface.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Displays a row in the manage backups table\n *\n * @param string                 $file\n * @param Scheduled_Backup $schedule\n */\nfunction get_backup_row( $file, Scheduled_Backup $schedule ) {\n\n\t$encoded_file = urlencode( base64_encode( $file ) );\n\t$offset       = get_option( 'gmt_offset' ) * 3600;\n\n\t?>\n\n\t<tr class=\"hmbkp_manage_backups_row\">\n\n\t\t<th scope=\"row\">\n\t\t\t<?php echo esc_html( date_i18n( get_option( 'date_format' ) . ' - ' . get_option( 'time_format' ), @filemtime( $file ) + $offset ) ); ?>\n\t\t</th>\n\n\t\t<td class=\"code\">\n\t\t\t<?php echo esc_html( size_format( @filesize( $file ) ) ); ?>\n\t\t</td>\n\n\t\t<td><?php echo esc_html( human_get_type( $file, $schedule ) ); ?></td>\n\n\t\t<td>\n\n\t\t\t<?php if (  is_path_accessible( Path::get_path() )  ) : ?>\n\t\t\t\t<a href=\"<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'hmbkp_backup_archive' => $encoded_file, 'hmbkp_schedule_id' => $schedule->get_id(), 'action' => 'hmbkp_request_download_backup' ), admin_url( 'admin-post.php' ) ), 'hmbkp_download_backup', 'hmbkp_download_backup_nonce' ) ); ?>\" class=\"download-action\"><?php _e( 'Download', 'backupwordpress' ); ?></a> |\n\t\t\t<?php endif; ?>\n\n\t\t\t<a href=\"<?php echo esc_url( wp_nonce_url(\n\t\t\t\tadd_query_arg( array(\n\t\t\t\t\t'hmbkp_backup_archive' => $encoded_file,\n\t\t\t\t\t'hmbkp_schedule_id'    => $schedule->get_id(),\n\t\t\t\t\t'action'               => 'hmbkp_request_delete_backup',\n\t\t\t\t\t),\n\t\t\t\t\tadmin_url( 'admin-post.php' )\n\t\t\t\t),\n\t\t\t\t'hmbkp_delete_backup',\n\t\t\t\t'hmbkp_delete_backup_nonce'\n\t\t\t) ); ?>\" class=\"delete-action\">\n\t\t\t\t<?php esc_html_e( 'Delete', 'backupwordpress' ); ?>\n\t\t\t</a>\n\n\t\t</td>\n\n\t</tr>\n\n<?php }\n\n/**\n * Displays admin notices for various error / warning conditions.\n *\n * @return void\n */\nfunction admin_notices() {\n\n\t$current_screen = get_current_screen();\n\n\tif ( ! isset( $current_screen ) ) {\n\t\treturn;\n\t}\n\n\t$page = is_multisite() ? HMBKP_ADMIN_PAGE . '-network' : HMBKP_ADMIN_PAGE;\n\tif ( $current_screen->id !== $page ) {\n\t\treturn;\n\t}\n\n\t$notices = Notices::get_instance()->get_notices();\n\n\tif ( empty( $notices ) ) {\n\t\treturn;\n\t}\n\n\tob_start(); ?>\n\n\t<?php if ( ! empty( $notices['backup_errors'] ) ) : ?>\n\n\t\t<div id=\"hmbkp-warning-backup\" class=\"error notice is-dismissible\">\n\t\t\t<p>\n\t\t\t\t<strong><?php _e( 'BackUpWordPress detected issues with your last backup.', 'backupwordpress' ); ?></strong>\n\t\t\t</p>\n\n\t\t\t<ul>\n\n\t\t\t\t<?php foreach ( $notices['backup_errors'] as $notice ) : ?>\n\t\t\t\t\t<li><pre><?php echo esc_html( $notice ); ?></pre></li>\n\t\t\t\t<?php endforeach; ?>\n\n\t\t\t</ul>\n\n\t\t</div>\n\n\t<?php endif; ?>\n\n\t<?php if ( ! empty( $notices['server_config'] ) ) : ?>\n\n\t\t<div id=\"hmbkp-warning-server\" class=\"error notice\">\n\n\t\t\t<ul>\n\n\t\t\t\t<?php foreach ( $notices['server_config'] as $notice ) : ?>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<?php print_whitelist_html(\n\t\t\t\t\t\t\t$notice,\n\t\t\t\t\t\t\t'strong, b, i, em, code, a'\n\t\t\t\t\t\t); ?>\n\t\t\t\t\t</li>\n\n\t\t\t\t<?php endforeach; ?>\n\n\t\t\t</ul>\n\n\t\t</div>\n\n\t<?php endif; ?>\n\n\t<?php $notices = array_filter( $notices );\n\n\tif ( ! empty( $notices ) ) : ?>\n\n\t\t<?php foreach ( $notices as $key => $notice_type ) : ?>\n\n\t\t\t<?php if ( ! ( in_array( $key, array( 'server_config', 'backup_errors' ) ) ) ) : ?>\n\n\t\t\t\t<div id=\"hmbkp-warning-other\" class=\"error notice is-dismissible\">\n\n\t\t\t\t\t<?php foreach ( array_unique( $notice_type ) as $msg ) : ?>\n\n\t\t\t\t\t\t<p><?php echo wp_kses_data( $msg ); ?></p>\n\n\t\t\t\t\t<?php endforeach; ?>\n\n\t\t\t\t</div>\n\n\t\t\t<?php endif; ?>\n\n\t\t<?php endforeach; ?>\n\n\t<?php endif; ?>\n\n\t<?php echo ob_get_clean();\n\n}\nadd_action( 'admin_notices', 'HM\\BackUpWordPress\\admin_notices' );\nadd_action( 'network_admin_notices', 'HM\\BackUpWordPress\\admin_notices' );\n\nfunction set_server_config_notices() {\n\n\t$notices  = Notices::get_instance();\n\t$messages = array();\n\n\tif ( Backup_Utilities::is_safe_mode_on() ) {\n\n\t\t$messages[] = sprintf(\n\t\t\t/* translators: 1: The `PHP` abbreviation. */\n\t\t\t__( '%1$s is running in <a href=\"http://php.net/manual/en/features.safe-mode.php\">Safe Mode</a>, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst <code>Safe Mode</code> is on.', 'backupwordpress' ),\n\t\t\t'<code>PHP</code>'\n\t\t);\n\t}\n\n\tif ( defined( 'HMBKP_PATH' ) && HMBKP_PATH ) {\n\n\t\t// Suppress open_basedir warning https://bugs.php.net/bug.php?id=53041\n\t\tif ( ! path_in_php_open_basedir( HMBKP_PATH ) ) {\n\n\t\t\t$messages[] = sprintf(\n\t\t\t\t__( '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' ),\n\t\t\t\t'<code>open_basedir</code>',\n\t\t\t\t'<code>' . esc_html( HMBKP_PATH ) . '</code>',\n\t\t\t\t'<code>' . esc_html( @ini_get( 'open_basedir' ) ) . '</code>'\n\t\t\t);\n\n\t\t} elseif ( ! is_dir( HMBKP_PATH ) ) {\n\n\t\t\t$messages[] = sprintf(\n\t\t\t\t__( 'Your custom backups directory (%1$s) doesn&apos;t exist, your backups will be saved to %2$s instead.', 'backupwordpress' ),\n\t\t\t\t'<code>' . esc_html( HMBKP_PATH ) . '</code>',\n\t\t\t\t'<code>' . esc_html( Path::get_path() ) . '</code>'\n\t\t\t);\n\n\t\t} elseif ( is_dir( HMBKP_PATH ) && ! wp_is_writable( HMBKP_PATH ) ) {\n\n\t\t\t$messages[] = sprintf(\n\t\t\t\t__( 'Your custom backups directory (%1$s) isn&apos;t writable, new backups will be saved to %2$s instead.', 'backupwordpress' ),\n\t\t\t\t'<code>' . esc_html( HMBKP_PATH ) . '</code>',\n\t\t\t\t'<code>' . esc_html( Path::get_path() ) . '</code>'\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( ! is_dir( Path::get_path() ) || is_dir( Path::get_path() ) && ! wp_is_writable( Path::get_path() ) ) {\n\n\t\tif ( isset( $_GET['creation_error'] ) ) {\n\n\t\t\t$messages[] = __( 'We connected to your server successfully but still weren&apos;t able to automatically create the directory. You&apos;ll need to manually specify a valid directory', 'backupwordpress' );\n\n\t\t} else {\n\n\t\t\t$messages[] = sprintf(\n\t\t\t\t/* translators: 1: Path to backup directory.*/\n\t\t\t\t__( 'We couldn&apos;t create the backups directory (%1$s). You&apos;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' ),\n\t\t\t\t'<code>' . esc_html( Path::get_path() ) . '</code>'\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( ! is_readable( Path::get_root() ) ) {\n\n\t\t$messages[] = sprintf(\n\t\t\t__( 'Your site&apos;s root path (%s) isn&apos;t readable. Please contact support.', 'backupwordpress' ),\n\t\t\t'<code>' . Path::get_root() . '</code>'\n\t\t);\n\t}\n\n\tif ( ! Requirement_Mysqldump_Command_Path::test() && ! Requirement_PDO::test() ) {\n\n\t\t$messages[] = sprintf(\n\t\t\t/* translators: FYI: specified MySQL features. */\n\t\t\t__( 'Your site cannot be backed up because your server doesn&apos;t support %1$s or %2$s. Please contact your host and ask them to enable them.', 'backupwordpress' ),\n\t\t\t'<code>mysqldump</code>',\n\t\t\t'<code>PDO::mysql</code>'\n\t\t);\n\t}\n\n\tif ( ! Requirement_Zip_Command_Path::test() && ! Requirement_Zip_Archive::test() ) {\n\n\t\t$messages[] = sprintf(\n\t\t\t/* translators: FYI: specified zip archiving features. */\n\t\t\t__( 'Your site cannot be backed up because your server doesn&apos;t support %1$s or %2$s. Please contact your host and ask them to enable them.', 'backupwordpress' ),\n\t\t\t'<code>zip</code>',\n\t\t\t'<code>ZipArchive</code>'\n\t\t);\n\t}\n\n\tif ( disk_space_low() ) {\n\n\t\t$messages[] = sprintf(\n\t\t\t__( 'Your server only has %s of disk space left which probably isn&apos;t enough to complete a backup. Try deleting some existing backups or other files to free up space.', 'backupwordpress' ),\n\t\t\t'<code>' . size_format( disk_free_space( Path::get_path() ) ) . '</code>'\n\t\t);\n\t}\n\n\tif ( count( $messages ) > 0 ) {\n\t\t$notices->set_notices( 'server_config', $messages, false );\n\t}\n}\n\nadd_action( 'admin_init', 'HM\\BackUpWordPress\\set_server_config_notices' );\n\n/**\n * Hook in an change the plugin description when BackUpWordPress is activated\n *\n * @param array $plugins\n * @return array $plugins\n */\nfunction plugin_row( $plugins ) {\n\n\t$menu = is_multisite() ? 'Settings' : 'Tools';\n\n\tif ( isset( $plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ] ) ) {\n\t\t$plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ]['Description'] = str_replace( 'Once activated you\\'ll find me under <strong>' . $menu . ' &rarr; Backups</strong>', 'Find me under <strong><a href=\"' . esc_url( get_settings_url() ) . '\">' . $menu . ' &rarr; Backups</a></strong>', $plugins[ HMBKP_PLUGIN_SLUG . '/backupwordpress.php' ]['Description'] );\n\t}\n\n\treturn $plugins;\n\n}\nadd_filter( 'all_plugins', 'HM\\BackUpWordPress\\plugin_row', 10 );\n\n/**\n * Get the human readable backup type in.\n *\n * @access public\n * @param string                 $type\n * @param Scheduled_Backup $schedule (default: null)\n * @return string\n */\nfunction human_get_type( $type, Scheduled_Backup $schedule = null ) {\n\n\tif ( strpos( $type, 'complete' ) !== false ) {\n\t\treturn __( 'Database and Files', 'backupwordpress' );\n\t}\n\n\tif ( strpos( $type, 'file' ) !== false ) {\n\t\treturn __( 'Files', 'backupwordpress' );\n\t}\n\n\tif ( strpos( $type, 'database' ) !== false ) {\n\t\treturn __( 'Database', 'backupwordpress' );\n\t}\n\n\tif ( ! is_null( $schedule ) ) {\n\t\treturn human_get_type( $schedule->get_type() );\n\t}\n\n\treturn __( 'Legacy', 'backupwordpress' );\n\n}\n\n/**\n * Display the row of actions for a schedule\n *\n * @access public\n * @param Scheduled_Backup $schedule\n * @return void\n */\nfunction schedule_status( Scheduled_Backup $schedule, $echo = true ) {\n\n\t$status = new Backup_Status( $schedule->get_id() );\n\n\tob_start(); ?>\n\n\t<span class=\"hmbkp-status\"<?php if ( $status->get_status() ) { ?> title=\"<?php printf( __( 'Started %s ago', 'backupwordpress' ), human_time_diff( $status->get_start_time() ) ); ?>\"<?php } ?>>\n\t\t<?php echo $status->get_status() ? wp_kses_data( $status->get_status() ) : __( 'Starting backup...', 'backupwordpress' ); ?>\n\t\t<a href=\"<?php echo admin_action_url( 'request_cancel_backup', array( 'hmbkp_schedule_id' => $schedule->get_id() ) ); ?>\"><?php _e( 'cancel', 'backupwordpress' ); ?></a>\n\t</span>\n\n\t<?php $output = ob_get_clean();\n\n\tif ( ! $echo ) {\n\t\treturn $output;\n\t}\n\n\techo $output;\n\n}\n\nfunction backups_number( Scheduled_Backup $schedule ) {\n\n\t$number = count( $schedule->get_backups() );\n\n\tif ( 0 === $number ) {\n\t\t$output = sprintf( __( 'No backups completed', 'backupwordpress' ) );\n\t} else {\n\t\t$output = sprintf( _nx( 'One backup completed', '%1$s backups completed', $number, 'backups count', 'backupwordpress' ), number_format_i18n( $number ) );\n\t}\n\n\techo apply_filters( 'hmbkp_backups_number', $output, $number );\n}\n\nfunction translated_schedule_title( $slug, $title ) {\n\n\t$titles = array(\n\t\t'complete-hourly'      => esc_html__( 'Complete Hourly', 'backupwordpress' ),\n\t\t'file-hourly'          => esc_html__( 'File Hourly', 'backupwordpress' ),\n\t\t'database-hourly'      => esc_html__( 'Database Hourly', 'backupwordpress' ),\n\t\t'complete-twicedaily'  => esc_html__( 'Complete Twice Daily', 'backupwordpress' ),\n\t\t'file-twicedaily'      => esc_html__( 'File Twice Daily', 'backupwordpress' ),\n\t\t'database-twicedaily'  => esc_html__( 'Database Twice Daily', 'backupwordpress' ),\n\t\t'complete-daily'       => esc_html__( 'Complete Daily', 'backupwordpress' ),\n\t\t'file-daily'           => esc_html__( 'File Daily', 'backupwordpress' ),\n\t\t'database-daily'       => esc_html__( 'Database Daily', 'backupwordpress' ),\n\t\t'complete-weekly'      => esc_html__( 'Complete Weekly', 'backupwordpress' ),\n\t\t'file-weekly'          => esc_html__( 'File Weekly', 'backupwordpress' ),\n\t\t'database-weekly'      => esc_html__( 'Database Weekly', 'backupwordpress' ),\n\t\t'complete-fortnightly' => esc_html__( 'Complete Every Two Weeks', 'backupwordpress' ),\n\t\t'file-fortnightly'     => esc_html__( 'File Every Two Weeks', 'backupwordpress' ),\n\t\t'database-fortnightly' => esc_html__( 'Database Every Two Weeks', 'backupwordpress' ),\n\t\t'complete-monthly'     => esc_html__( 'Complete Monthly', 'backupwordpress' ),\n\t\t'file-monthly'         => esc_html__( 'File Monthly', 'backupwordpress' ),\n\t\t'database-monthly'     => esc_html__( 'Database Monthly', 'backupwordpress' ),\n\t\t'complete-manually'    => esc_html__( 'Complete Manually', 'backupwordpress' ),\n\t\t'file-manually'        => esc_html__( 'File Manually', 'backupwordpress' ),\n\t\t'database-manually'    => esc_html__( 'Database Manually', 'backupwordpress' ),\n\t);\n\n\tif ( isset( $titles[ $slug ] ) ) {\n\t\treturn $titles[ $slug ];\n\t}\n\n\treturn $title;\n\n}\n\nfunction get_settings_url( $slug = HMBKP_PLUGIN_SLUG ) {\n\n\t$url = is_multisite() ? network_admin_url( 'settings.php?page=' . $slug ) : admin_url( 'tools.php?page=' . $slug );\n\n\tschedules::get_instance()->refresh_schedules();\n\n\tif ( ! empty( $_REQUEST['hmbkp_schedule_id'] ) && schedules::get_instance()->get_schedule( sanitize_text_field( $_REQUEST['hmbkp_schedule_id'] ) ) ) {\n\t\t$url = add_query_arg( 'hmbkp_schedule_id', sanitize_text_field( $_REQUEST['hmbkp_schedule_id'] ), $url );\n\t}\n\n\treturn $url;\n\n}\n\n/**\n * Add an error message to the array of messages.\n *\n * @param $error_message\n */\nfunction add_settings_error( $error_message ) {\n\n\t$hmbkp_settings_errors = get_transient( 'hmbkp_settings_errors' );\n\n\t// If it doesnt exist, create.\n\tif ( ! $hmbkp_settings_errors ) {\n\t\tset_transient( 'hmbkp_settings_errors', (array) $error_message );\n\t} else {\n\t\tset_transient( 'hmbkp_settings_errors', array_unique( array_merge( $hmbkp_settings_errors, (array) $error_message ) ) );\n\t}\n\n}\n\n/**\n * Back compat version of add_settings_error\n *\n * @deprecated 3.4 add_settings_error()\n */\nfunction hmbkp_add_settings_error( $error_message ) {\n\t_deprecated_function( __FUNCTION__, '3.4', 'add_settings_error()' );\n\tadd_settings_error( $error_message );\n}\n\n/**\n * Fetch the form submission errors for display.\n *\n * @return mixed\n */\nfunction get_settings_errors() {\n\treturn get_transient( 'hmbkp_settings_errors' );\n}\n\n/**\n * Clear all error messages.\n *\n * @return bool\n */\nfunction clear_settings_errors() {\n\treturn delete_transient( 'hmbkp_settings_errors' );\n}\n\nfunction path_in_php_open_basedir( $path, $ini_get = 'ini_get' ) {\n\n\t$open_basedir = @call_user_func( $ini_get, 'open_basedir' );\n\n\tif ( ! $open_basedir ) {\n\t\treturn true;\n\t}\n\n\t$open_basedir_paths = array_map( 'trim', explode( PATH_SEPARATOR, $open_basedir ) );\n\n\tif ( ! $open_basedir_paths ) {\n\t\treturn true;\n\t}\n\n\t// Is path in the open_basedir allowed paths?\n\tif ( in_array( $path, $open_basedir_paths ) ) {\n\t\treturn true;\n\t}\n\n\t// Is path a subdirectory of one of the allowed paths?\n\tforeach ( $open_basedir_paths as $basedir_path ) {\n\t\tif ( 0 === strpos( $path, $basedir_path ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n\n}\n\n/**\n * Check if two filesizes are of the same size format\n *\n * E.g. 22 MB and 44 MB are both MB so return true. Whereas\n * 22 KB and 12 TB are not so return false.\n *\n * @param  int  $size\n * @param  int  $other_size\n *\n * @return boolean             Whether the two filesizes are of the same magnitude\n */\nfunction is_same_size_format( $size, $other_size ) {\n\n\tif ( ! is_int( $size ) || ! is_int( $other_size ) ) {\n\t\treturn false;\n\t}\n\n\treturn preg_replace( '/[0-9]+/', '', size_format( $size ) ) === preg_replace( '/[0-9]+/', '', size_format( $other_size ) );\n}\n\n/**\n * Check whether the server is low on disk space.\n *\n * @return bool Whether there's less disk space less than 2 * the entire size of the site.\n */\nfunction disk_space_low( $backup_size = false ) {\n\n\t$disk_space = @disk_free_space( Path::get_path() );\n\n\tif ( ! $disk_space ) {\n\t\treturn false;\n\t}\n\n\tif ( ! $backup_size ) {\n\n\t\t$site_size = new Site_Size( 'complete', new Excludes() );\n\n\t\tif ( ! $site_size->is_site_size_cached() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$backup_size = $site_size->get_site_size() * 2;\n\n\t}\n\n\tif ( ! is_readable( Path::get_path() ) ) {\n\t\treturn false;\n\t}\n\n\t$disk_space = disk_free_space( Path::get_path() );\n\n\treturn $disk_space && $backup_size >= $disk_space;\n}\n"
  },
  {
    "path": "grunt/aliases.yml",
    "content": "build-dev:\n  - makepot\n  - autoprefixer\n  - cssmin\n  - uglify\n  - shell\n  - compress:dev\n\nbuild:\n  - autoprefixer\n  - cssmin\n  - uglify\n  - bumpup # defaults to patch, change to :minor or :major if necessary\n  - replace # Update version numbers, build faq.txt\n  - makepot\n\n  # Adds a default to Grunt\ndefault:\n  - autoprefixer\n  - cssmin\n  - uglify\n  - bumpup # defaults to patch, change to :minor or :major if necessary\n  - replace # Update version numbers, build faq.txt\n  - makepot\n\n# before running release, make sure to add the changelog to readme-footer.txt Also, update the \"tested up to\" version if necessary\nrelease:\n  - concat # build readme.txt\n  - shell\n  - compress:main\n\nlocalize:\n  - makepot\n"
  },
  {
    "path": "grunt/autoprefixer.js",
    "content": "module.exports = {\n\tno_dest: {\n\t\tsrc: 'assets/hmbkp.css'\n\t}\n};\n"
  },
  {
    "path": "grunt/bumpup.js",
    "content": "module.exports = {\n\toptions: {\n\t\tupdateProps: {\n\t\t\tpackage: 'package.json'\n\t\t}\n\t},\n\tfiles: ['package.json']\n};\n"
  },
  {
    "path": "grunt/checktextdomain.js",
    "content": "module.exports = {\n\tstandard: {\n\t\toptions: {\n\t\t\ttext_domain: 'backupwordpress', //Specify allowed domain(s),\n\t\t\tcorrect_domain: true,\n\t\t\tkeywords: [ //List keyword specifications\n\t\t\t\t'__:1,2d',\n\t\t\t\t'_e:1,2d',\n\t\t\t\t'_x:1,2c,3d',\n\t\t\t\t'esc_html__:1,2d',\n\t\t\t\t'esc_html_e:1,2d',\n\t\t\t\t'esc_html_x:1,2c,3d',\n\t\t\t\t'esc_attr__:1,2d',\n\t\t\t\t'esc_attr_e:1,2d',\n\t\t\t\t'esc_attr_x:1,2c,3d',\n\t\t\t\t'_ex:1,2c,3d',\n\t\t\t\t'_n:1,2,4d',\n\t\t\t\t'_nx:1,2,4c,5d',\n\t\t\t\t'_n_noop:1,2,3d',\n\t\t\t\t'_nx_noop:1,2,3c,4d'\n\t\t\t]\n\t\t},\n\t\tfiles: [{\n\t\t\tsrc: ['**/*.php', '!**/vendor/**', '!**/node_modules/**', '!**/tests/**'], //all php\n\t\t\texpand: true,\n\t\t}],\n\t}\n};\n"
  },
  {
    "path": "grunt/compress.js",
    "content": "module.exports = {\n\tmain: {\n\t\toptions: {\n\t\t\tarchive: 'releases/<%= package.name %>-<%= package.version %>.zip'\n\t\t},\n\t\texpand: true,\n\t\tcwd: 'releases/svn/trunk/',\n\t\tsrc: ['**/*'],\n\t},\n\tdev: {\n\t\toptions: {\n\t\t\tarchive: 'releases/<%= package.name %>-<%= package.version %>-dev.zip'\n\t\t},\n\t\texpand: true,\n\t\tcwd: 'releases/svn/trunk/',\n\t\tsrc: ['**/*'],\n\t}\n};\n"
  },
  {
    "path": "grunt/concat.js",
    "content": "module.exports = {\n\treadme: {\n\t\tsrc : [\n\t\t\t'readme/readme-header.txt',\n\t\t\t'readme/faq.txt',\n\t\t\t'readme/readme-footer.txt'\n\t\t],\n\t\tdest: 'readme.txt'\n\t}\n};\n"
  },
  {
    "path": "grunt/cssmin.js",
    "content": "module.exports = {\n\tminify: {\n\t\texpand: true,\n\t\tcwd   : 'assets/',\n\t\tsrc   : ['hmbkp.css'],\n\t\tdest  : 'assets/',\n\t\text   : '.min.css'\n\t}\n};\n"
  },
  {
    "path": "grunt/excludes",
    "content": ".DS_Store\n.svn\n.git\n.gitignore\n.gitmodules\n.editorconfig\n.sass-cache\nnode_modules\n.bowerrc\n.travis.yml\nbin\ngrunt\nreleases\nbower.json\nGruntfile.js\npackage.json\nREADME.md\nvendor/symfony/finder/Tests\nreadme\ntests\nphpunit\n.jshintrc\nCONTRIBUTING.md\nchangelog.txt\n.scrutinizer.yml\nphpunit.xml\n"
  },
  {
    "path": "grunt/jshint.js",
    "content": "module.exports = {\n\toptions: {\n\t\t'boss': true,\n\t\t'curly': true,\n\t\t'eqeqeq': true,\n\t\t'eqnull': true,\n\t\t'es3': true,\n\t\t'expr': true,\n\t\t'immed': true,\n\t\t'noarg': true,\n\n\t\t'onevar': true,\n\n\t\t'trailing': true,\n\t\t'undef': true,\n\t\t'unused': true,\n\n\t\t'browser': true,\n\t\t'devel': true,\n\n\t\t'globals': {\n\t\t\t'_': true,\n\t\t\t'Backbone': true,\n\t\t\t'jQuery': true,\n\t\t\t'wp': true,\n\t\t\t'hmbkp': true,\n\t\t\t'ajaxurl': true\n\t\t}\n\t},\n\tall: ['Gruntfile.js', 'assets/hmbkp.js']\n};\n"
  },
  {
    "path": "grunt/makepot.js",
    "content": "module.exports = {\n\ttarget: {\n\t\toptions: {\n\t\t\tmainFile: 'backupwordpress.php',\n\t\t\tpotFilename: 'backupwordpress.pot',\n\t\t\tdomainPath: '/languages',       // Where to save the POT file.\n\t\t\texclude: ['node_modules/.*','vendor/.*', 'backdrop/.*','bin/.*','tests/.*','readme/.*','languages/.*', 'releases/.*'],\n\t\t\tmainFile  : 'backupwordpress.php',         // Main project file.\n\t\t\ttype      : 'wp-plugin',    // Type of project (wp-plugin or wp-theme).\n\t\t\tprocessPot: function( pot, options ) {\n\t\t\t\tpot.headers['report-msgid-bugs-to'] = 'support@xibomarketing.com';\n\t\t\t\tpot.headers['last-translator'] = 'XIBO Ltd';\n\t\t\t\tpot.headers['language-team'] = 'XIBO Ltd';\n\t\t\t\treturn pot;\n\t\t\t}\n\t\t}\n\t}\n};\n"
  },
  {
    "path": "grunt/replace.js",
    "content": "module.exports = {\n\tpluginClassVersion: {\n\t\tsrc: [\n\t\t\t'classes/class-plugin.php'\n\t\t],\n\t\toverwrite: true,\n\t\treplacements: [ {\n\t\t\tfrom: /^(\\s)+const PLUGIN_VERSION = '.*';$/m,\n\t\t\tto: '$1const PLUGIN_VERSION = \\'<%= package.version %>\\';'\n\t\t} ]\n\t},\n\tstableTag: {\n\t\tsrc: [\n\t\t\t'readme/readme-header.txt'\n\t\t],\n\t\toverwrite: true,\n\t\treplacements: [ {\n\t\t\tfrom: /^Stable tag: .*$/m,\n\t\t\tto: 'Stable tag: <%= package.version %>'\n\t\t} ]\n\t},\n\n\tpluginVersion: {\n\t\tsrc: [\n\t\t\t'backupwordpress.php'\n\t\t],\n\t\toverwrite: true,\n\t\treplacements: [ {\n\t\t\tfrom: /^Version: .*$/m,\n\t\t\tto: 'Version: <%= package.version %>'\n\t\t} ]\n\t},\n\tfaq          : {\n\t\tsrc         : [\n\t\t\t'admin/faq.php'\n\t\t],\n\t\tdest        : 'readme/faq.txt',\n\t\treplacements: [\n\t\t\t{\n\t\t\t\tfrom: /.*<p>' \\. __\\( '(.*)', '\\w+' \\).*/mg,\n\t\t\t\tto  : '$1'\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: '<?php',\n\t\t\t\tto  : ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: /\\\\'/g,\n\t\t\t\tto:   '\\''\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: /.*<strong>.*__\\( '(.*)', '\\w+' \\).*<\\/strong>.*/g,\n\t\t\t\tto: '**$1**'\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: /'(?:<ul>)?<li>' \\. .*__\\( '(.*)', '.*' \\) .* '<\\/li>(?:<\\/ul>)?' \\./g,\n\t\t\t\tto: '* $1'\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: /<\\/?code>/g,\n\t\t\t\tto: '`'\n\t\t\t},\n\t\t\t{\n\t\t\t\tfrom: /<a href=\"(.*)\" title=\"(.*)\" target=\"_blank\">(.*)<\\/a>/g,\n\t\t\t\tto: '[$3]($1 \"$2\")'\n\t\t\t}\n\t\t]\n\t}\n};\n"
  },
  {
    "path": "grunt/shell.js",
    "content": "module.exports = {\n\tbuild: {\n\t\tcommand: 'mkdir -p releases/svn && rsync -avzrR --exclude-from \\'grunt/excludes\\' . releases/svn/trunk'\n\t}\n};\n"
  },
  {
    "path": "grunt/uglify.js",
    "content": "module.exports = {\n\toptions: {\n\t\tpreserveComments: 'some'\n\t},\n\tplugin : {\n\t\tfiles: {\n\t\t\t'assets/hmbkp.min.js': ['assets/hmbkp.js']\n\t\t}\n\t}\n};\n"
  },
  {
    "path": "languages/backupwordpress-ca_ES.po",
    "content": "# Translation of 2.x in Catalan\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: ca_ES\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-cs_CZ.po",
    "content": "# Translation of 2.x in Czech\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: cs_CZ\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"Zálohování skončilo s těmito chybami/varováními, ale je možné je ignorovat.\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"Zálohování se nezdařilo.\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"Odeslat oznámení o provedení zálohy a pokud je záloha malá (&lt; %s) tak bude připojena k tomuto emailu. Adresy více příjemců oddělte čárkou.\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"Maximální velikost souboru se zálohou, která bude připojena k oznamovacímu emailu. Výchozí velikost je %s.\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"Detaily této chyby můžete poslat emailem na adresu %s a pokusíme se zjistit příčiny.\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"Jednou za hodinu\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"Dvakrát denně\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"Jednou denně\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"Jednou za týden\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"Jednou za čtrnáct dnů\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"Jednou měsíčně\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Email na podporu\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nové pravidlo pro vyjmutí\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Zde je odpověď serveru:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"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. \"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Spouštím zálohu\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Provádím dump databáze %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Ověřuji dump databáze %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Vytvářím zip archiv %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Ověřuji zip archive %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Dokončuji zálohování\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress nemusí správně fungovat pokud je php spuštěno s %s na \"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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í.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Čas, kdy budou zálohy spuštěny. Výchozí je %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Opravdu chcete smazat tento plán záloh? Všechny zálohy provedené tímto plánem budou také smazány.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"Klepněte na 'Zrušit' pro návrat nebo 'OK' pro smazání.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Opravdu chcete smazat tuto zálohu?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Opravdu chcete odebrat toto pravidlo výjimek?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Maximální počet nemůže být prázdný\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Maximální počet musí být větší než 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Vyjmout\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"výchozí\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"nastavené\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Pouze ručně\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"nebude to trvat dlouho &hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"zjišťuji velikost všech souborů &hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Příští záloha bude provedena v %1$s v %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"každých 12 hodin v %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"týdně v %1$s v %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"každé dva týdny v %1$s v %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"v %1$s každý měsíc v %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"ručně\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"tomto serveru\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"na %s neukládat žádné zálohy\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"na %2$s ponechat pouze poslední(ch) %1$s záloh(y)\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Zálohovat mých %1$s %2$s %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackupWordPress nebyl schopen provést zálohu vašeho webu %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Zde je seznam zjištěných problémů:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"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\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"S pozdravem,\\n\"\n\"robot aplikace BackupWordPress \"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackupWordPress dokončil zálohu vašeho webu %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Záloha bude připojena jako příloha k tomuto emailu.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Zálohu si můžete stáhnout klepnutím na odkaz níže:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"S pozdravem,\\n\"\n\"robot aplikace BackupWordPress \"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Bohužel je záloha tak velká, že nemůže být přiložena k emailu.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Záloha: provádím dump databáze...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Záloha: provádím komprimaci...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Neplatná cesta k zálohám\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Neplatná hlavní cesta\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Záloha ukončena:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Záloha selhala\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"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.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Do adresáře pro zálohy nelze zapisovat, spusťte %1$s nebo %2$s nebo si nastavte oprávnění podle sebe.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress nastavil výchozí plán pro zálohování.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Záloha %s selhala\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Odeslat upozornění emailem na %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s není platná emailová adresa\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Záloha bude komprimována a velikost bude menší než tato.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Upozornění emailem\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"každou hodinu v celou\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"denně v %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Počet záloh uložených na tomto serveru\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Nastavení plánu záloh\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Zavřít\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Informace uvedené níže jsou pro verzi %1$s. Pokud chcete nápovědu k verzi %3$s zobrazte si soubor %2$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Kořenový adresář, který bude zálohován. Výchozí je %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Cesta k %1$s. Pokud je dostupný, bude použit pro komprimaci vašich %2$s a %3$s.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackuWordPress vyžaduje WordPress verze %s nebo vyšší.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Zrušit\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Cesta k spustitelnému souboru %1$s. Pokud je dostupný, bude použit pro část %2$s zálohování.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"např.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Safe Mode\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Vámi zvolený adresář pro zálohy %1$s neexistuje a nelze jej vytvořit, zálohy se budou ukládat do %2$s.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Do vámi zvoleného adresáře pro zálohy %1$s nelze zapisovat, zálohy se budou ukládat do %2$s.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"zrušit\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Nastavení\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Vyjímky\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Stáhnout\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress je připraven.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress detekoval problém s poslední zálohou.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Databáze a soubory\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Databáze\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress detekoval problém.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Typ zálohy nemůže být prázdný\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Neplatný typ zálohy\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Čas zálohy nemůže být prázdný\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Neplatný čas pro zálohu\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Počet záloh musí být číslo\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s nenalezl žádné soubory.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"přidat plán zálohy\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Velikost\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Typ\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Akce\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Codex s pomocí\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Cesta pro uložení souborů se zálohami, výchozí je %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"databáze\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"souborů\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Čárkou oddělený seznam souborů nebo adresářů, které se nebudou zálohovat, adresář se zálohami je vyjmut automaticky.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Správa zálohování\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Zálohy\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Nepoužíváte poslední stabilní verzi zásuvného modulu BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Konstanty\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Více informace najdete na:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Fórum pro podporu\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Pomoc s překladem\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Před dalším spuštěním nástroje BackUpWordPress je nutné opravit chyby uvedené výše.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Náhled\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Pravidla pro vyjmutí\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Odebrat\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Vyjmuto\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Zahrnuto\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Nečitelné\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Nečitelné soubory nelze zálohovat\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Veilikost webu je %s. Záloha bude komprimována aby se zmenšila velikost.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Zálohovat\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Databázi i soubory\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Pouze soubory\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Pouze databázi\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Soubory\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Správa vyjímek\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Plán záloh\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Aktualizovat\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"každou hodinu %s minut po celé\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Spustit nyní\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Smazat\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Záloha webu %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Soubor %s zajišťuje, že ostatní uživatelé si nemohou stáhnout soubory s vašimi zálohami.\"\n"
  },
  {
    "path": "languages/backupwordpress-da_DK.po",
    "content": "# Translation of 2.x in Danish\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: da_DK\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"Du kan sende detaljer om denne fejl til %s, så de kan undersøge sagen nærmere.\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"En gang i timen\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"To gange dagligt\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"En gang dagligt\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"En gang om ugen\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"En gang hver anden uge\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"En gang om måneden\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Send e-mail til support\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nye eksluderingsregler\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Her er svaret fra serveren:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"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.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Starter sikkerhedskopiering\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Gemmer database %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Kontroller database-kopi %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Opretter zip-arkiv %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Kontrollerer zip-arkiv %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Afslutter sikkerhedskopiering\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordpress virker ikke når php kører med %s slået til\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Det tidspunkt dine planlagt sikkerhedskopieringer skal foretages på. Standard er %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Er du sikker på, at du vil slette denne planlagte sikkerhedskopiering? Alle dens sikkerhedskopier vil også blive slettet.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"'Annuller' for at få tilbage, 'OK' for at slette.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Er du sikker på, at du vil slette denne sikkerhedskopi.\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Er du sikker på, at du vil fjerne denne ekskluderingsregel?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Maksimalt antal sikkerhedskopier kan ikke være tomt.\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Maksimalt antal sikkerhedskopier skal være større end 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Ekskludér\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"standard\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"defineret\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Kun manuelt\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"det her burde ikke tage så lang tid &hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"Beregner størrelse af dit websted&hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Den næste sikkerhedskopi bliver taget %1$s klokken %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"hver 12. time klokken %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"ugentligt på %1$s klokken %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"Hver anden uge på %1$s klokken %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"Den %1$s. hver måned klokken %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manuelt\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"denne server\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"Gem ingen sikkerhedskopier på %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"gem kun de seneste %1$s sikkerhedskopier på %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Sikkerhedskopiér min %1$s  %2$s  %3$s,  %4$s.  %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress kunne ikke sikkerhedskopiere dit websted %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Her er de fejl, der opstod:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Hvis fejlene ovenfor ligner volapyk, så send denne e-mail til %3$s, så kigger vi på det.\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Med venlig hilsen\\n\"\n\"Den beklagende BackUpWordPress sikkerhedskopi-email-robot\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress har fuldført sikkerhedskopiering af dit websted %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Sikkerhedskopien er vedhæftet denne e-mail.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Du kan hente sikkerhedskopien ved at klikke på linket herunder:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Med venlig hilsen\\n\"\n\"Den glade BackupWordPress sikkerhedskopi-email-robot\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Desværre var sikkerhedskopien for stor til at vedhæfte denne e-mail.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Sikkerhedskopiering: Eksporterer database...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Sikkerhedskopieringen: Pakker det hele i en zip-fil...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Ugyldig sti til sikkerhedskopi\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Ugyldig rodmappe.\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Sikkerhedskopiering fuldført:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Sikkerhedskopiering fejlede.\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"Som udgangspunkt sikkerhedskopierer BackUpWordPress din database dagligt, og din database &amp; dine filer ugentligt. Du kan ændre disse indstillinger.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Tidligere\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Der kan ikke oprettes filer i mappen til sikkerhedskopier. Kør %1$s eller %2$s eller tildel selv rettigheder.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"Mappen til sikkerhedskopier kan ikke oprettes, fordi mappen %1$s ikke er skrivbar. Kør %2$s eller %3$s eller opret mappen selv.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress har konfigureret din tidsplaner.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Sikkerhedskopiering af %s fejlede.\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Send en notifikation via e-mail til %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s er ikke en gyldig e-mail-adresse.\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Sikkerhedskopier komprimeres, så de bør blive mindre end dette.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Notifikation via e-mail\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"Hver hele time\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"dagligt klokken %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Antal sikkerhedskopier der skal gemmes på denne server\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Indstilling af tidsplan\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Luk\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Informationen herunder gælder version %1$s. Kig i filen %2$s for at få hjælp der passer til version %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Rodmappen, der skal sikkerhedskopieres. Standard er %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Den egenskab der skal bruges, når %1$s kaldes. Standard er %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Stien til kommandofilen for %1$s. Den bliver brugt til at zippe dine %2$s og %3$s, hvis tilgængelig.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress kræver WordPress version %s eller nyere.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Annuller\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Stien til din %1$s kommandofil. Den bliver brugt til %2s-delen af sikkerhedskopieringen, hvis tilgængelig.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"f. eks.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Fejlsikret tilstand.\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Mappen til sikkerhedskopier, %1$s, eksisterer ikke og kan ikke oprettes. Dine sikkerhedskopier bliver gem i %2$s i stedet.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Mappen til sikkerhedskopier, %1$s, er ikke skrivbar. Nye sikkerhedskopier bliver gemt i %2$s i stedet.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"annuller\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Indstillinger\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Eksluderinger\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Hent\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress er næsten klar.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BakcUpWordPress har opdaget fejl ved din seneste sikkerhedskopi.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Database og filer\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Database\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress har opdaget et problem.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Typen af sikkerhedskopi skal angives.\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Ugyldig type af sikkerhedskopi\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Tidsplan skal angives.\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Ugyldig tidsplan.\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Maksimalt antal sikkerhedskopier skal angives med et tal\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s passer ikke på nogen filer.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"tilføj tidsplan\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Størrelse\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Type\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Handlinger\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Codex'et kan hjælpe\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Stien til den mappe, hvor du vil gemme dine sikkerhedskopier. Standard er %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"database\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"filer\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Komma-separeret liste af filer eller mapper, der skal ekskluderes. Mappen med sikkerhedskopier bliver automatisk ekskluderet.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Håndter sikkerhedskopier\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Sikkerhedskopier\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Du bruger ikke den nyeste, stabile version af BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Konstanter\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"For yderligere oplysninger\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Support-forums\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Hjælp med oversættelse\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Du skal løse de problemer, der er beskrevet ovenfor, før BackUpWordPress kan starte.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Preview\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Ekskluderingsregler\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Ekskluderet\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Inkluderet\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Ikke-læsbar\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Filer, der ikke kan læses, kan ikke sikkerhedskopieres.\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Dit websted er %s. Sikkerhedskopier komprimeres, og vil derfor blive mindre end det.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Sikkerhedskopier\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Både database &amp; filer\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Kun filer\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Kun database\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Filer\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Håndter ekskluderinger\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Tidsplan\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Opdater\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"Hver time klokken %s minutter over hel.\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Kør nu\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Slet\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Sikkerhedskopiering af %s.\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Denne %s fil sikrer, at andre ikke kan hente dine sikkerhedskopier.\"\n"
  },
  {
    "path": "languages/backupwordpress-de_DE.po",
    "content": "# Translation of 2.x in German\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: de_DE\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"BackUpWordPress benötigt die PHP-Version %s oder neuer.\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"Hier erscheinen deine Backups, sobald sie erstellt wurden.\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"% Backups durchgeführt\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"Keine Backups durchgeführt\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"1 Backup durchgeführt\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"BackUpWordPress-Support aktivieren\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"BackUpWordPress benutzt %s, um Support bereitzustellen. Neben der Möglichkeit, Nachrichten zu senden und zu empfangen, werden auch folgende Serverinformationen bei der Kommunikation übertragen:\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"Support kann ab sofort deaktiviert werden, indem BackUpWordPress deaktiviert wird.\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"Nein, danke\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"Ja, ich möchte den Support aktivieren\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"Support\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"Falls du BackUpWordPress nützlich findest, dann %1$s bewerte es bitte im Plugin-Verzeichnis. %2$s\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"Erstelle neue Ausnahmen - du kannst mehrere per Komma separieren, z.B. %s\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"Ältere Backups werden bei Erreichen dieses Grenzwerts automatisch gelöscht. Dieser Plan wird also maximal %s Backups speichern.\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"nur das letzte Backup bei %s speichern\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"Backup von %1$s %2$s %3$s, %4$s. %5$s Eine Kopie von jedem Backup an %6$s senden.\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"%s nicht vorhanden\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"Dieses Backup wurde nicht anhand dieses Plans erstellt.\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"Nur Verzeichnisse innerhalb deiner WordPress-Installation können entfernt werden.\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"Dein Backup wurde fertiggestellt, aber es traten folgende Fehler/Warnungen auf. Möglicherweise kannst du diese ignorieren.\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"Dein Backup ist fehlgeschlagen.\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"Erhalte eine E-Mail, wenn ein Backup fertiggestellt wird. Wenn das Backup klein genug (&lt; %s) ist, wird es an die E-Mail angehängt. Trenne mehrere E-Mail-Adressen mit Kommata.\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"Die maximale Dateigröße, mit welcher dein Backup an E-Mail-Benachrichtigungen angehängt wird. Standardmäßig %s.\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"Du kannst Fehlerdetails via E-Mail an %s senden, damit diese sich das Problem ansehen können.\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"Einmal pro Stunde\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"Zweimal pro Tag\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"Einmal pro Tag\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"Einmal pro Woche\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"Alle 14 Tage\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"Einmal pro Monat\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Sende eine E-Mail an den Support\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Neue Ausnahme/n\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Hier ist die Antwort des Servers:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"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.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Starte Backup\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Sichere Datenbank %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Prüfe die Sicherung der Datenbank %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Erstelle ZIP-Archiv %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Prüfe ZIP-Archiv %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Backup fertigstellen\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress funktioniert vielleicht nicht, wenn PHP mit %s aktiviert läuft\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Die Dauer, über die deine geplanten Aufgaben laufen sollen. Standard: %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Bist du sicher, dass dieser Plan gelöscht werden soll? Alle zugehörigen Backups werden mit diesem Schritt auch gelöscht.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"'Abbrechen' zum Zurückkehren, 'OK' zum Löschen.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Bist du sicher, dass du dieses Backup löschen möchtest?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Bist du sicher, dass du diese Ausschlussregel entfernen möchtest?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Die maximale Anzahl Backups kann nicht leer sein.\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Die maximale Anzahl Backups muss größer als 0 sein.\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Ausschließen\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"standard\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"festgelegt\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Nur manuell\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"das sollte nicht lange dauern&hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"Wir berechnen die Größe deiner Seite&hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Das nächste Backup wird am %1$s um %2$s durchgeführt.\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"alle 12 Stunden um %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"wöchentlich am %1$s um %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"zweiwöchentlich am %1$s um %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"am %1$s. jedes Monats um %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manuell\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"diesem Server\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"Speichere keine Backups auf %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"behalte nur die letzten %1$s Backups auf %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Erstelle ein Backup meiner %1$s %2$s %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress konnte deine Seite %1$s nicht sichern.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Hier sind die Fehler, auf die wir gestoßen sind:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Wenn dir die Fehlermeldung oben wie ein Marsmensch vorkommt, dann leite diese E-Mail weiter an %3$s und wir schauen und das an.\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Mit freundlichen Grüßen\\n\"\n\"Der Untröstliche BackUpWordpress Backup-E-Mail-Roboter \"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress hat ein Backup deiner Seite %1$s fertiggestellt.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Die Backup-Datei sollte dieser E-Mail angehängt sein.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Du kannst die Backup-Datei herunterladen, indem du auf den folgenden Link klickst:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Mit freundlichen Grüßen\\n\"\n\"Der Glückliche BackUpWordPress Backup-E-Mail-Roboter\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Unglücklicherweise war die Backup-Datei zu groß, um sie dieser E-Mail anzuhängen.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Fertige Backup an: Sichere Datenbank...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Fertige Backup an: Packe alles zusammen...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Ungültiges Backupverzeichnis\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Ungültiges Rootverzeichnis\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Backup fertiggestellt:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Backup fehlgeschlagen\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"Standardmäßig führt BackUpWordPress ein tägliches Backup deiner Datenbank und ein wöchentliches Backup deiner Datenbank &amp; Dateien durch. Du kannst diesen Aufgabenplan anpassen.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Bisherig\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Dein Backup-Verzeichnis ist nicht beschreibbar. Führe %1$s oder %2$s aus oder setze die Berechtigungen selbst.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress hat Standard-Pläne für dich eingerichtet.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Backup von %s fehlgeschlagen\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Sende eine E-Mail-Benachrichtigung an %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s ist keine gültige E-Mail-Adresse\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Die Backups werden komprimiert und sollten kleiner sein als angegeben.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"E-Mail-Benachrichtigung\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"stündlich zur vollen Stunde\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"täglich um %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Anzahl der Backups, die auf dem Server gespeichert bleiben\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Plan-Einstellungen\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Schließen\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Diese Informationen sind für Version %1$s. Sieh dir die %2$s-Datei  für Hilfe speziell für Version %3$s an.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Das Wurzelverzeichnis, das gesichert wird. Standard: %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Die Rolle, die beim Aufrufen von %1$s benutzt wird. Standard: %2$s\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"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.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress benötigt WordPress Version %s oder größer.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Abbrechen\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"z.B.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"Du kannst jede der folgenden %2$s in deinem %3$s %1$sn, um erweiterte Einstellungen vorzunehmen. %4$s. Definierte %5$s werden hervorgehoben.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/de/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Safe Mode\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Dein angepasstes Backup-Verzeichnis %1$s existiert nicht und kann nicht erstellt werden, neue Backups werden stattdessen nach %2$s gespeichert.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Dein angepasstes Backup-Verzeichnis %1$s ist nicht beschreibbar, neue Backups werden stattdessen nach %2$s gespeichert.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"abbrechen\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Einstellungen\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Ausnahmen\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Download\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress ist fast fertig.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress hat Probleme bei deinem letzten Backup bemerkt.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Datenbank und Dateien\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Datenbank\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress hat ein Problem entdeckt.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Backup-Typ kann nicht leer sein\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Ungültiger Backup-Typ\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Aufgaben können nicht leer sein\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Ungültige Aufgaben\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Maximale Anzahl der Backups muss eine Zahl sein\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s passt auf keine Dateien.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"Plan hinzufügen\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Größe\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Typ\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Aktionen\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Der Codex kann helfen\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Der Pfad zum Verzeichnis, in dem du die Backups speichern möchtest. Standard: %s\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"Datenbank\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"Dateien\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Kommagetrennte Liste von Dateien oder Verzeichnissen, die ausgeschlossen werden sollen (das Backup-Verzeichnis ist automatisch ausgeschlossen).\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Backups verwalten\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Backups\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Du benutzt nicht die neueste stabile BackUpWordPress-Version\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Konstanten\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Für mehr Informationen:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Support-Foren\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Beim Übersetzen helfen\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Du musst die oben beschriebenen Probleme beheben, bevor BackUpWordPress gestartet werden kann.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Vorschau\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Ausnahmeregeln\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Entfernen\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Ausnehmen\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Einschließen\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Nicht lesbar\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Nicht lesbare Dateien können nicht gesichert werden\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Deine Seite ist %s groß. Die Backups werden komprimiert und sollten kleiner sein.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Backup\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Datenbank &amp; Dateien\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Dateien\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Datenbank\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Dateien\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Ausnahmen verwalten\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Plan\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Update\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"stündlich, %s Minuten nach der vollen Stunde\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Jetzt ausführen\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Löschen\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Backup von %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Diese %s-Datei garantiert, dass andere Leute deine Backup-Dateien nicht herunterladen können.\"\n"
  },
  {
    "path": "languages/backupwordpress-el_GR.po",
    "content": "# Translation of 2.x in Greek\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: el_GR\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-en_AU.po",
    "content": "# Copyright (C) 2018 XIBO Ltd\n# This file is distributed under the GPL-2.0+.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: BackUpWordPress Backup Plugin 3.2.6\\n\"\n\"POT-Creation-Date: 2015-07-13 12:44+0930\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"PO-Revision-Date: 2015-07-13 13:39+0930\\n\"\n\"Last-Translator: ucavus\\n\"\n\"Language-Team: ucavus\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\"Language: en_AU\\n\"\n\n#: admin/actions.php:191\nmsgid \"The schedule ID was not provided. Aborting.\"\nmsgstr \"\"\n\n#: admin/actions.php:241\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:245\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: admin/actions.php:259\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:263\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: admin/actions.php:277\nmsgid \"Day of the week must be a valid lowercase day name\"\nmsgstr \"\"\n\n#: admin/actions.php:296\nmsgid \"Day of month must be between 1 and 31\"\nmsgstr \"\"\n\n#: admin/actions.php:315\nmsgid \"Hours must be between 0 and 23\"\nmsgstr \"\"\n\n#: admin/actions.php:334\nmsgid \"Minutes must be between 0 and 59\"\nmsgstr \"\"\n\n#: admin/actions.php:348\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:352\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: admin/actions.php:356\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: admin/actions.php:708 admin/actions.php:714\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: admin/actions.php:708 admin/actions.php:714\nmsgid \"\"\n\"%1$s is returning a %2$s response which could mean cron jobs aren't getting \"\n\"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. \"\n\"See the %3$s for more details.\"\nmsgstr \"\"\n\n#: admin/backups-table.php:8 admin/schedule-form-excludes.php:105\nmsgid \"Size\"\nmsgstr \"\"\n\n#: admin/backups-table.php:9 admin/schedule-form-excludes.php:107\nmsgid \"Type\"\nmsgstr \"\"\n\n#: admin/backups-table.php:10\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: admin/backups-table.php:35\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: admin/backups.php:22\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: admin/backups.php:26\nmsgid \"Support\"\nmsgstr \"\"\n\n#: admin/backups.php:32\nmsgid \"Enable Support\"\nmsgstr \"\"\n\n#: admin/constants.php:3\nmsgid \"\"\n\"You can %1$s any of the following %2$s in your %3$s to control advanced \"\n\"settings. %4$s. Defined %5$s will be highlighted.\"\nmsgstr \"\"\n\n#: admin/constants.php:3 admin/menu.php:82\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46\n#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94\n#: admin/constants.php:110 classes/class-email-service.php:60\nmsgid \"You've set it to: %s\"\nmsgstr \"\"\n\n#: admin/constants.php:17\nmsgid \"\"\n\"The path to folder you would like to store your backup files in, defaults to \"\n\"%s.\"\nmsgstr \"\"\n\n#: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49\n#: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97\n#: admin/constants.php:113 classes/class-email-service.php:63\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: admin/constants.php:33\nmsgid \"\"\n\"The path to your %1$s executable. Will be used for the %2$s part of the back \"\n\"up if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:33 admin/constants.php:49\nmsgid \"database\"\nmsgstr \"\"\n\n#: admin/constants.php:49\nmsgid \"\"\n\"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s \"\n\"if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:49\nmsgid \"files\"\nmsgstr \"\"\n\n#: admin/constants.php:65\nmsgid \"\"\n\"Comma separated list of files or directories to exclude, the backups \"\n\"directory is automatically excluded.\"\nmsgstr \"\"\n\n#: admin/constants.php:81\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: admin/constants.php:97\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/constants.php:113\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: admin/enable-support.php:5\nmsgid \"\"\n\"BackUpWordPress uses %s to provide support. In addition to allowing you to \"\n\"send and receive messages we also send the following server information \"\n\"along with your requests:\"\nmsgstr \"\"\n\n#: admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:60\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: admin/enable-support.php:61\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: admin/faq.php:2\nmsgid \"Where does BackUpWordPress store the backup files?\"\nmsgstr \"\"\n\n#: admin/faq.php:4\nmsgid \"\"\n\"Backups are stored on your server in <code>/wp-content/backups</code>, you \"\n\"can change the directory.\"\nmsgstr \"\"\n\n#: admin/faq.php:6\nmsgid \"\"\n\"Important: By default BackUpWordPress backs up everything in your site root \"\n\"as well as your database, this includes any non WordPress folders that \"\n\"happen to be in your site root. This does mean that your backup directory \"\n\"can get quite large.\"\nmsgstr \"\"\n\n#: admin/faq.php:8\nmsgid \"What if I want to back up my site to another destination?\"\nmsgstr \"\"\n\n#: admin/faq.php:10\nmsgid \"\"\n\"BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, \"\n\"Azure, DreamObjects and FTP/SFTP. Check it out here: <a href=\\\"http://bwp.\"\n\"hmn.md/?utm_source=wordpress-org&utm_medium=plugin-\"\n\"page&utm_campaign=freeplugin\\\" title=\\\"BackUpWordPress Homepage\\\" target=\"\n\"\\\"_blank\\\">https://bwp.hmn.md</a>\"\nmsgstr \"\"\n\n#: admin/faq.php:12\nmsgid \"How do I restore my site from a backup?\"\nmsgstr \"\"\n\n#: admin/faq.php:14\nmsgid \"\"\n\"You need to download the latest backup file either by clicking download on \"\n\"the backups page or via <code>FTP</code>. <code>Unzip</code> the files and \"\n\"upload all the files to your server overwriting your site. You can then \"\n\"import the database using your hosts database management tool (likely \"\n\"<code>phpMyAdmin</code>).\"\nmsgstr \"\"\n\n#: admin/faq.php:16\nmsgid \"\"\n\"See this guide for more details - <a href=\\\"https://bwp.hmn.md/support-\"\n\"center/restore-backup/\\\" title=\\\"Go to support center\\\" target=\\\"_blank\"\n\"\\\">How to restore from backup</a>.\"\nmsgstr \"\"\n\n#: admin/faq.php:18\nmsgid \"Does BackUpWordPress back up the backups directory?\"\nmsgstr \"\"\n\n#: admin/faq.php:20\nmsgid \"No.\"\nmsgstr \"\"\n\n#: admin/faq.php:22\nmsgid \"I'm not receiving my backups by email?\"\nmsgstr \"\"\n\n#: admin/faq.php:24\nmsgid \"\"\n\"Most servers have a filesize limit on email attachments, it's generally \"\n\"about 10mb. If your backup file is over that limit it won't be sent attached \"\n\"to the email, instead you should receive an email with a link to download \"\n\"the backup, if you aren't even receiving that then you likely have a mail \"\n\"issue on your server that you'll need to contact your host about.\"\nmsgstr \"\"\n\n#: admin/faq.php:26\nmsgid \"How many backups are stored by default?\"\nmsgstr \"\"\n\n#: admin/faq.php:28\nmsgid \"BackUpWordPress stores the last 10 backups by default.\"\nmsgstr \"\"\n\n#: admin/faq.php:30\nmsgid \"How long should a backup take?\"\nmsgstr \"\"\n\n#: admin/faq.php:32\nmsgid \"\"\n\"Unless your site is very large (many gigabytes) it should only take a few \"\n\"minutes to perform a back up, if your back up has been running for longer \"\n\"than an hour it's safe to assume that something has gone wrong, try de-\"\n\"activating and re-activating the plugin, if it keeps happening, contact \"\n\"support.\"\nmsgstr \"\"\n\n#: admin/faq.php:34\nmsgid \"What do I do if I get the wp-cron error message?\"\nmsgstr \"\"\n\n#: admin/faq.php:36\nmsgid \"\"\n\"The issue is that your <code>wp-cron.php</code> is not returning a \"\n\"<code>200</code> response when hit with a HTTP request originating from your \"\n\"own server, it could be several things, in most cases, it's an issue with \"\n\"the server / site.\"\nmsgstr \"\"\n\n#: admin/faq.php:38\nmsgid \"There are some things you can test to confirm this is the issue.\"\nmsgstr \"\"\n\n#: admin/faq.php:40\nmsgid \"Are scheduled posts working? (They use wp-cron as well ). \"\nmsgstr \"\"\n\n#: admin/faq.php:42\nmsgid \"\"\n\"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart \"\n\"Internet, see below for work-around).\"\nmsgstr \"\"\n\n#: admin/faq.php:44\nmsgid \"If you click manual backup does it work?\"\nmsgstr \"\"\n\n#: admin/faq.php:46\nmsgid \"\"\n\"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your \"\n\"<code>wp-config.php</code>, do automatic backups work?\"\nmsgstr \"\"\n\n#: admin/faq.php:48\nmsgid \"\"\n\"Is your site private (I.E. is it behind some kind of authentication, \"\n\"maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, \"\n\"if you are and you temporarily remove the authentication, do backups start \"\n\"working?\"\nmsgstr \"\"\n\n#: admin/faq.php:50\nmsgid \"\"\n\"Report the results to our support team for further help. To do this, either \"\n\"enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment.\"\n\"com\"\nmsgstr \"\"\n\n#: admin/faq.php:52\nmsgid \"How to get BackUpWordPress working in Heart Internet\"\nmsgstr \"\"\n\n#: admin/faq.php:54\nmsgid \"\"\n\"The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/\"\n\"php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the \"\n\"space between php5 and the location of the file). The file <code>wp-cron.\"\n\"php</code> <code>chmod</code> must be set to <code>711</code>.\"\nmsgstr \"\"\n\n#: admin/faq.php:56\nmsgid \"My backups seem to be failing?\"\nmsgstr \"\"\n\n#: admin/faq.php:58\nmsgid \"\"\n\"If your backups are failing - it's commonly caused by lack of available \"\n\"resources on your server. The easiest way to establish this to exclude some \"\n\"[of] or your entire uploades folder, running a backup an if that succeeds. \"\n\"If so, we know it's probably a server issue. If not, report the results to \"\n\"our support team for further help. To do this, either enable suport from \"\n\"your Admin Dashboard (recommended), or email support@xibodevelopment.com\"\nmsgstr \"\"\n\n#: admin/menu.php:13 admin/menu.php:17\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:13 admin/menu.php:17 admin/menu.php:46\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: admin/menu.php:95\nmsgid \"Server Info\"\nmsgstr \"\"\n\n#: admin/menu.php:102\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: admin/menu.php:104\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: admin/menu.php:105\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: admin/page.php:7\nmsgid \"\"\n\"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin \"\n\"directory%2$s.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:6\nmsgid \"Currently Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:9\nmsgid \"\"\n\"We automatically detect and ignore common <abbr title=\\\"Version Control \"\n\"Systems\\\">VCS</abbr> folders and other backup plugin folders.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:44\nmsgid \"Default rule\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:48\nmsgid \"Defined in wp-config.php\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:55\nmsgid \"Stop excluding\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:71\nmsgid \"Directory Listing\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:73\nmsgid \"\"\n\"Here's a directory listing of all files on your site, you can browse through \"\n\"and exclude files or folders that you don't want included in your backup.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:104\nmsgid \"Name\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:106\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:108\nmsgid \"Status\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:168 admin/schedule-form-excludes.php:284\nmsgid \"Refresh\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:185 admin/schedule-form-excludes.php:308\nmsgid \"Symlink\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:189 admin/schedule-form-excludes.php:312\nmsgid \"Folder\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:282\nmsgid \"Recalculate the size of this directory\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:316\nmsgid \"File\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:327\nmsgid \"Unreadable files won't be backed up.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:327\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:331\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:347\nmsgid \"Exclude &rarr;\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:365 admin/schedule-form.php:192\n#: admin/schedule-settings.php:88\nmsgid \"Done\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:1 admin/schedule-settings.php:9\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:36\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:43\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:45\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:47\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:58\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:65\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:92\nmsgid \"Start Day\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:100\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:101\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:102\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:103\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:104\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:105\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:106\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:124\nmsgid \"Start Day of Month\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:136\nmsgid \"Start Time\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:145\nmsgid \"Hours\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:149\nmsgid \"Minutes\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:152\nmsgid \"Please use 24 hour format for hours\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:153\nmsgid \"The second backup will run 12 hours after the first\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:162\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:171\nmsgid \"Past this limit older backups will be deleted automatically.\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:174\nmsgid \"This schedule will store a maximum of %s of backups.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:11\nmsgid \"The next backup will be on %1$s at %2$s %3$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:24\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:35\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:41\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:47\nmsgid \"biweekly on %1$s at %2$s\"\nmsgstr \"fortnightly on %1$s at %2$s\"\n\n#: admin/schedule-sentence.php:53\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65\nmsgid \"manually\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:70\nmsgid \"this server\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:78\nmsgid \"store the most recent backup in %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:84\nmsgid \"don't store any backups in on this server\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:90\nmsgid \"store the last %1$s backups in %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:123\nmsgid \"%s. \"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:127\nmsgid \"Send a copy of each backup to %s.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:158\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:162\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:162\nmsgid \"calculating the size of your backup&hellip;\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:7\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:15\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:27 functions/interface.php:34\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: admin/server-info.php:43\nmsgid \"%1$s - %2$s\"\nmsgstr \"\"\n\n#: admin/upsell.php:3\nmsgid \"Backup to\"\nmsgstr \"\"\n\n#: admin/upsell.php:18\nmsgid \"\"\n\"%1$sor buy the %2$sDeveloper Bundle%3$s now for only &dollar;99 (all \"\n\"Destinations &amp; Unlimited Sites)%4$s\"\nmsgstr \"\"\n\n#: backupwordpress.php:53\nmsgid \"\"\n\"BackUpWordPress will not work on this site. ( PHP Version %s is unsupported )\"\nmsgstr \"\"\n\n#: backupwordpress.php:53\nmsgid \"BackUpWordPress Error\"\nmsgstr \"\"\n\n#: classes/class-backup.php:388\nmsgid \"archive filename must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-backup.php:392\nmsgid \"invalid file extension for archive filename <code>%s</code>\"\nmsgstr \"\"\n\n#: classes/class-backup.php:433\nmsgid \"database dump filename must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-backup.php:437\nmsgid \"invalid file extension for database dump filename <code>%s</code>\"\nmsgstr \"\"\n\n#: classes/class-backup.php:471\nmsgid \"Invalid root path <code>%s</code> must be a valid directory path\"\nmsgstr \"\"\n\n#: classes/class-backup.php:497\nmsgid \"\"\n\"Invalid existing archive filepath <code>%s</code> must be a non empty \"\n\"(string)\"\nmsgstr \"\"\n\n#: classes/class-backup.php:552\nmsgid \"\"\n\"Invalid backup type <code>%s</code> must be one of (string) file, database \"\n\"or complete\"\nmsgstr \"\"\n\n#: classes/class-backup.php:1926\nmsgid \"Could not connect to mysql\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:50\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:54\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:70\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:75\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:106\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:108\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:28\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:34\nmsgid \"\"\n\"Receive a notification email when a backup completes, if the backup is small \"\n\"enough (&lt; %s) then it will be attached to the email. Separate multiple \"\n\"email addresses with a comma.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:63\nmsgid \"\"\n\"The maximum filesize of your backup that will be attached to your \"\n\"notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:82\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:117\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179 classes/class-webhook-service.php:59\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"If the errors above look like Martian, forward this email to %3$s and we'll \"\n\"take a look\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:189\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:203\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: classes/class-path.php:249\nmsgid \"\"\n\"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:214\nmsgid \"Update\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:215\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:216\nmsgid \"\"\n\"Are you sure you want to delete this schedule? All of it's backups will also \"\n\"be deleted.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:216 classes/class-plugin.php:217\n#: classes/class-plugin.php:218 classes/class-plugin.php:219\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:217\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:218\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:219\nmsgid \"\"\n\"Reducing the number of backups that are stored on this server will cause \"\n\"some of your existing backups to be deleted, are you sure that's what you \"\n\"want?\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:151\nmsgid \"Invalid Option Name\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:264\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:612\nmsgid \"Argument 1 for %s must be a valid future timestamp\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:649\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:778 functions/interface.php:267\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:865\nmsgid \"Error writing to file. (%s)\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:916\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:921\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:926\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:931\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:936\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:987\nmsgid \"An unexpected error occured\"\nmsgstr \"\"\n\n#. translators: min=minute\n#: classes/class-schedule.php:1050\nmsgid \"%s min\"\nmsgid_plural \"%s mins\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-schedule.php:1060\nmsgid \"%s hour\"\nmsgid_plural \"%s hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-schedule.php:1122\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:1127\nmsgid \"%s doesn't exist\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:1132\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: classes/class-services.php:80\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: classes/class-services.php:96\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: classes/class-services.php:114 classes/deprecated.php:81\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: classes/class-setup.php:34\nmsgid \"BackUpWordPress\"\nmsgstr \"\"\n\n#: classes/class-setup.php:170\nmsgid \"\"\n\"BackUpWordPress requires PHP version %1$s or later and WordPress version \"\n\"%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s\"\nmsgstr \"\"\n\n#: classes/class-webhook-service.php:103\nmsgid \"Error: %s\"\nmsgstr \"\"\n\n#: functions/core.php:326\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:326\nmsgid \"\"\n\"By default BackUpWordPress performs a daily backup of your database and a \"\n\"weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:341\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: functions/core.php:342\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: functions/core.php:343\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: functions/core.php:344\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: functions/core.php:345\nmsgid \"Once Biweekly\"\nmsgstr \"Once Fortnightly\"\n\n#: functions/core.php:346\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: functions/core.php:364\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: functions/interface.php:31\nmsgid \"Download\"\nmsgstr \"\"\n\n#: functions/interface.php:68\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: functions/interface.php:70\nmsgid \"Dismiss\"\nmsgstr \"\"\n\n#: functions/interface.php:136\nmsgid \"\"\n\"The backups directory can't be created because your %1$s directory isn't \"\n\"writable, run %2$s or %3$s or create the folder yourself.\"\nmsgstr \"\"\n\n#: functions/interface.php:140\nmsgid \"\"\n\"Your backups directory isn't writable, run %1$s or %2$s or set the \"\n\"permissions yourself.\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"\"\n\"%1$s is running in %2$s, please contact your host and ask them to disable \"\n\"it. BackUpWordPress may not work correctly whilst %3$s is on.\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: functions/interface.php:152\nmsgid \"Your custom path does not exist\"\nmsgstr \"\"\n\n#: functions/interface.php:156\nmsgid \"\"\n\"Your custom path is unreachable due to a restriction set in your PHP \"\n\"configuration (open_basedir)\"\nmsgstr \"\"\n\n#: functions/interface.php:161\nmsgid \"\"\n\"Your custom backups directory %1$s doesn't exist and can't be created, your \"\n\"backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:165\nmsgid \"\"\n\"Your custom backups directory %1$s isn't writable, new backups will be saved \"\n\"to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:174\nmsgid \"Your site root path %s isn't readable.\"\nmsgstr \"\"\n\n#: functions/interface.php:236\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: functions/interface.php:240\nmsgid \"Files\"\nmsgstr \"\"\n\n#: functions/interface.php:244\nmsgid \"Database\"\nmsgstr \"\"\n\n#: functions/interface.php:251\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: functions/interface.php:266\nmsgid \"Started %s ago\"\nmsgstr \"\"\n\n#: functions/interface.php:268\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: functions/interface.php:316\nmsgid \"No backups completed\"\nmsgstr \"\"\n\n#: functions/interface.php:327\nmsgid \"Complete Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:328\nmsgid \"File Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:329\nmsgid \"Database Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:330\nmsgid \"Complete Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:331\nmsgid \"File Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:332\nmsgid \"Database Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:333\nmsgid \"Complete Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:334\nmsgid \"File Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:335\nmsgid \"Database Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:336\nmsgid \"Complete Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:337\nmsgid \"File Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:338\nmsgid \"Database Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:339\nmsgid \"Complete Biweekly\"\nmsgstr \"Complete Fortnightly\"\n\n#: functions/interface.php:340\nmsgid \"File Biweekly\"\nmsgstr \"File Fortnightly\"\n\n#: functions/interface.php:341\nmsgid \"Database Biweekly\"\nmsgstr \"Database Fortnightly\"\n\n#: functions/interface.php:342\nmsgid \"Complete Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:343\nmsgid \"File Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:344\nmsgid \"Database Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:345\nmsgid \"Complete Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:346\nmsgid \"File Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:347\nmsgid \"Database Manually\"\nmsgstr \"\"\n\n#. Plugin Name of the plugin/theme\nmsgid \"BackUpWordPress Backup Plugin\"\nmsgstr \"\"\n\n#. Plugin URI of the plugin/theme\nmsgid \"https://github.com/xibodevelopment\"\nmsgstr \"\"\n\n#. Description of the plugin/theme\nmsgid \"\"\n\"Simple automated backups of your WordPress powered website. Once activated \"\n\"you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, \"\n\"you'll find me under the Network Settings menu.\"\nmsgstr \"\"\n\n#. Author of the plugin/theme\nmsgid \"XIBO Ltd\"\nmsgstr \"\"\n\n#. Author URI of the plugin/theme\nmsgid \"https://github.com/xibodevelopment\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:120\nmsgctxt \"\"\n\"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to \"\n\"store\"\nmsgid \"Backup my %1$s %2$s %3$s, %4$s.\"\nmsgstr \"\"\n\n#: functions/interface.php:318\nmsgctxt \"backups count\"\nmsgid \"One backup completed\"\nmsgid_plural \"%1$s backups completed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "languages/backupwordpress-en_GB.po",
    "content": "# Copyright (C) 2015 XIBO Ltd\n# This file is distributed under the GPL-2.0+.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: BackUpWordPress Backup Plugin 3.2.6\\n\"\n\"POT-Creation-Date: 2015-07-13 12:44+0930\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"PO-Revision-Date: 2015-07-13 13:39+0930\\n\"\n\"Last-Translator: ucavus\\n\"\n\"Language-Team: ucavus\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\"Language: en_GB\\n\"\n\n#: admin/actions.php:191\nmsgid \"The schedule ID was not provided. Aborting.\"\nmsgstr \"\"\n\n#: admin/actions.php:241\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:245\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: admin/actions.php:259\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:263\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: admin/actions.php:277\nmsgid \"Day of the week must be a valid lowercase day name\"\nmsgstr \"\"\n\n#: admin/actions.php:296\nmsgid \"Day of month must be between 1 and 31\"\nmsgstr \"\"\n\n#: admin/actions.php:315\nmsgid \"Hours must be between 0 and 23\"\nmsgstr \"\"\n\n#: admin/actions.php:334\nmsgid \"Minutes must be between 0 and 59\"\nmsgstr \"\"\n\n#: admin/actions.php:348\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:352\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: admin/actions.php:356\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: admin/actions.php:708 admin/actions.php:714\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: admin/actions.php:708 admin/actions.php:714\nmsgid \"\"\n\"%1$s is returning a %2$s response which could mean cron jobs aren't getting \"\n\"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. \"\n\"See the %3$s for more details.\"\nmsgstr \"\"\n\n#: admin/backups-table.php:8 admin/schedule-form-excludes.php:105\nmsgid \"Size\"\nmsgstr \"\"\n\n#: admin/backups-table.php:9 admin/schedule-form-excludes.php:107\nmsgid \"Type\"\nmsgstr \"\"\n\n#: admin/backups-table.php:10\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: admin/backups-table.php:35\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: admin/backups.php:22\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: admin/backups.php:26\nmsgid \"Support\"\nmsgstr \"\"\n\n#: admin/backups.php:32\nmsgid \"Enable Support\"\nmsgstr \"\"\n\n#: admin/constants.php:3\nmsgid \"\"\n\"You can %1$s any of the following %2$s in your %3$s to control advanced \"\n\"settings. %4$s. Defined %5$s will be highlighted.\"\nmsgstr \"\"\n\n#: admin/constants.php:3 admin/menu.php:82\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46\n#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94\n#: admin/constants.php:110 classes/class-email-service.php:60\nmsgid \"You've set it to: %s\"\nmsgstr \"\"\n\n#: admin/constants.php:17\nmsgid \"\"\n\"The path to folder you would like to store your backup files in, defaults to \"\n\"%s.\"\nmsgstr \"\"\n\n#: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49\n#: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97\n#: admin/constants.php:113 classes/class-email-service.php:63\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: admin/constants.php:33\nmsgid \"\"\n\"The path to your %1$s executable. Will be used for the %2$s part of the back \"\n\"up if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:33 admin/constants.php:49\nmsgid \"database\"\nmsgstr \"\"\n\n#: admin/constants.php:49\nmsgid \"\"\n\"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s \"\n\"if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:49\nmsgid \"files\"\nmsgstr \"\"\n\n#: admin/constants.php:65\nmsgid \"\"\n\"Comma separated list of files or directories to exclude, the backups \"\n\"directory is automatically excluded.\"\nmsgstr \"\"\n\n#: admin/constants.php:81\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: admin/constants.php:97\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/constants.php:113\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: admin/enable-support.php:5\nmsgid \"\"\n\"BackUpWordPress uses %s to provide support. In addition to allowing you to \"\n\"send and receive messages we also send the following server information \"\n\"along with your requests:\"\nmsgstr \"\"\n\n#: admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:60\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: admin/enable-support.php:61\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: admin/faq.php:2\nmsgid \"Where does BackUpWordPress store the backup files?\"\nmsgstr \"\"\n\n#: admin/faq.php:4\nmsgid \"\"\n\"Backups are stored on your server in <code>/wp-content/backups</code>, you \"\n\"can change the directory.\"\nmsgstr \"\"\n\n#: admin/faq.php:6\nmsgid \"\"\n\"Important: By default BackUpWordPress backs up everything in your site root \"\n\"as well as your database, this includes any non WordPress folders that \"\n\"happen to be in your site root. This does mean that your backup directory \"\n\"can get quite large.\"\nmsgstr \"\"\n\n#: admin/faq.php:8\nmsgid \"What if I want to back up my site to another destination?\"\nmsgstr \"\"\n\n#: admin/faq.php:10\nmsgid \"\"\n\"BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, \"\n\"Azure, DreamObjects and FTP/SFTP. Check it out here: <a href=\\\"http://bwp.\"\n\"hmn.md/?utm_source=wordpress-org&utm_medium=plugin-\"\n\"page&utm_campaign=freeplugin\\\" title=\\\"BackUpWordPress Homepage\\\" target=\"\n\"\\\"_blank\\\">https://bwp.hmn.md</a>\"\nmsgstr \"\"\n\n#: admin/faq.php:12\nmsgid \"How do I restore my site from a backup?\"\nmsgstr \"\"\n\n#: admin/faq.php:14\nmsgid \"\"\n\"You need to download the latest backup file either by clicking download on \"\n\"the backups page or via <code>FTP</code>. <code>Unzip</code> the files and \"\n\"upload all the files to your server overwriting your site. You can then \"\n\"import the database using your hosts database management tool (likely \"\n\"<code>phpMyAdmin</code>).\"\nmsgstr \"\"\n\n#: admin/faq.php:16\nmsgid \"\"\n\"See this guide for more details - <a href=\\\"https://bwp.hmn.md/support-\"\n\"center/restore-backup/\\\" title=\\\"Go to support center\\\" target=\\\"_blank\"\n\"\\\">How to restore from backup</a>.\"\nmsgstr \"\"\n\n#: admin/faq.php:18\nmsgid \"Does BackUpWordPress back up the backups directory?\"\nmsgstr \"\"\n\n#: admin/faq.php:20\nmsgid \"No.\"\nmsgstr \"\"\n\n#: admin/faq.php:22\nmsgid \"I'm not receiving my backups by email?\"\nmsgstr \"\"\n\n#: admin/faq.php:24\nmsgid \"\"\n\"Most servers have a filesize limit on email attachments, it's generally \"\n\"about 10mb. If your backup file is over that limit it won't be sent attached \"\n\"to the email, instead you should receive an email with a link to download \"\n\"the backup, if you aren't even receiving that then you likely have a mail \"\n\"issue on your server that you'll need to contact your host about.\"\nmsgstr \"\"\n\n#: admin/faq.php:26\nmsgid \"How many backups are stored by default?\"\nmsgstr \"\"\n\n#: admin/faq.php:28\nmsgid \"BackUpWordPress stores the last 10 backups by default.\"\nmsgstr \"\"\n\n#: admin/faq.php:30\nmsgid \"How long should a backup take?\"\nmsgstr \"\"\n\n#: admin/faq.php:32\nmsgid \"\"\n\"Unless your site is very large (many gigabytes) it should only take a few \"\n\"minutes to perform a back up, if your back up has been running for longer \"\n\"than an hour it's safe to assume that something has gone wrong, try de-\"\n\"activating and re-activating the plugin, if it keeps happening, contact \"\n\"support.\"\nmsgstr \"\"\n\n#: admin/faq.php:34\nmsgid \"What do I do if I get the wp-cron error message?\"\nmsgstr \"\"\n\n#: admin/faq.php:36\nmsgid \"\"\n\"The issue is that your <code>wp-cron.php</code> is not returning a \"\n\"<code>200</code> response when hit with a HTTP request originating from your \"\n\"own server, it could be several things, in most cases, it's an issue with \"\n\"the server / site.\"\nmsgstr \"\"\n\n#: admin/faq.php:38\nmsgid \"There are some things you can test to confirm this is the issue.\"\nmsgstr \"\"\n\n#: admin/faq.php:40\nmsgid \"Are scheduled posts working? (They use wp-cron as well ). \"\nmsgstr \"\"\n\n#: admin/faq.php:42\nmsgid \"\"\n\"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart \"\n\"Internet, see below for work-around).\"\nmsgstr \"\"\n\n#: admin/faq.php:44\nmsgid \"If you click manual backup does it work?\"\nmsgstr \"\"\n\n#: admin/faq.php:46\nmsgid \"\"\n\"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your \"\n\"<code>wp-config.php</code>, do automatic backups work?\"\nmsgstr \"\"\n\n#: admin/faq.php:48\nmsgid \"\"\n\"Is your site private (I.E. is it behind some kind of authentication, \"\n\"maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, \"\n\"if you are and you temporarily remove the authentication, do backups start \"\n\"working?\"\nmsgstr \"\"\n\n#: admin/faq.php:50\nmsgid \"\"\n\"Report the results to our support team for further help. To do this, either \"\n\"enable suport from your Admin Dashboard (recommended), or email support@xibodevelopment.\"\n\"com\"\nmsgstr \"\"\n\n#: admin/faq.php:52\nmsgid \"How to get BackUpWordPress working in Heart Internet\"\nmsgstr \"\"\n\n#: admin/faq.php:54\nmsgid \"\"\n\"The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/\"\n\"php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the \"\n\"space between php5 and the location of the file). The file <code>wp-cron.\"\n\"php</code> <code>chmod</code> must be set to <code>711</code>.\"\nmsgstr \"\"\n\n#: admin/faq.php:56\nmsgid \"My backups seem to be failing?\"\nmsgstr \"\"\n\n#: admin/faq.php:58\nmsgid \"\"\n\"If your backups are failing - it's commonly caused by lack of available \"\n\"resources on your server. The easiest way to establish this to exclude some \"\n\"[of] or your entire uploades folder, running a backup an if that succeeds. \"\n\"If so, we know it's probably a server issue. If not, report the results to \"\n\"our support team for further help. To do this, either enable suport from \"\n\"your Admin Dashboard (recommended), or email support@xibodevelopment.com\"\nmsgstr \"\"\n\n#: admin/menu.php:13 admin/menu.php:17\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:13 admin/menu.php:17 admin/menu.php:46\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: admin/menu.php:95\nmsgid \"Server Info\"\nmsgstr \"\"\n\n#: admin/menu.php:102\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: admin/menu.php:104\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: admin/menu.php:105\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: admin/page.php:7\nmsgid \"\"\n\"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin \"\n\"directory%2$s.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:6\nmsgid \"Currently Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:9\nmsgid \"\"\n\"We automatically detect and ignore common <abbr title=\\\"Version Control \"\n\"Systems\\\">VCS</abbr> folders and other backup plugin folders.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:44\nmsgid \"Default rule\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:48\nmsgid \"Defined in wp-config.php\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:55\nmsgid \"Stop excluding\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:71\nmsgid \"Directory Listing\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:73\nmsgid \"\"\n\"Here's a directory listing of all files on your site, you can browse through \"\n\"and exclude files or folders that you don't want included in your backup.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:104\nmsgid \"Name\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:106\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:108\nmsgid \"Status\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:168 admin/schedule-form-excludes.php:284\nmsgid \"Refresh\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:185 admin/schedule-form-excludes.php:308\nmsgid \"Symlink\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:189 admin/schedule-form-excludes.php:312\nmsgid \"Folder\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:282\nmsgid \"Recalculate the size of this directory\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:316\nmsgid \"File\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:327\nmsgid \"Unreadable files won't be backed up.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:327\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:331\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:347\nmsgid \"Exclude &rarr;\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:365 admin/schedule-form.php:192\n#: admin/schedule-settings.php:88\nmsgid \"Done\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:1 admin/schedule-settings.php:9\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:36\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:43\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:45\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:47\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:58\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:65\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:92\nmsgid \"Start Day\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:100\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:101\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:102\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:103\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:104\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:105\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:106\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:124\nmsgid \"Start Day of Month\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:136\nmsgid \"Start Time\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:145\nmsgid \"Hours\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:149\nmsgid \"Minutes\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:152\nmsgid \"Please use 24 hour format for hours\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:153\nmsgid \"The second backup will run 12 hours after the first\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:162\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:171\nmsgid \"Past this limit older backups will be deleted automatically.\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:174\nmsgid \"This schedule will store a maximum of %s of backups.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:11\nmsgid \"The next backup will be on %1$s at %2$s %3$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:24\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:35\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:41\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:47\nmsgid \"biweekly on %1$s at %2$s\"\nmsgstr \"fortnightly on %1$s at %2$s\"\n\n#: admin/schedule-sentence.php:53\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65\nmsgid \"manually\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:70\nmsgid \"this server\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:78\nmsgid \"store the most recent backup in %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:84\nmsgid \"don't store any backups in on this server\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:90\nmsgid \"store the last %1$s backups in %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:123\nmsgid \"%s. \"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:127\nmsgid \"Send a copy of each backup to %s.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:158\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:162\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:162\nmsgid \"calculating the size of your backup&hellip;\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:7\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:15\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:27 functions/interface.php:34\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: admin/server-info.php:43\nmsgid \"%1$s - %2$s\"\nmsgstr \"\"\n\n#: admin/upsell.php:3\nmsgid \"Backup to\"\nmsgstr \"\"\n\n#: admin/upsell.php:18\nmsgid \"\"\n\"%1$sor buy the %2$sDeveloper Bundle%3$s now for only &dollar;99 (all \"\n\"Destinations &amp; Unlimited Sites)%4$s\"\nmsgstr \"\"\n\n#: backupwordpress.php:53\nmsgid \"\"\n\"BackUpWordPress will not work on this site. ( PHP Version %s is unsupported )\"\nmsgstr \"\"\n\n#: backupwordpress.php:53\nmsgid \"BackUpWordPress Error\"\nmsgstr \"\"\n\n#: classes/class-backup.php:388\nmsgid \"archive filename must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-backup.php:392\nmsgid \"invalid file extension for archive filename <code>%s</code>\"\nmsgstr \"\"\n\n#: classes/class-backup.php:433\nmsgid \"database dump filename must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-backup.php:437\nmsgid \"invalid file extension for database dump filename <code>%s</code>\"\nmsgstr \"\"\n\n#: classes/class-backup.php:471\nmsgid \"Invalid root path <code>%s</code> must be a valid directory path\"\nmsgstr \"\"\n\n#: classes/class-backup.php:497\nmsgid \"\"\n\"Invalid existing archive filepath <code>%s</code> must be a non empty \"\n\"(string)\"\nmsgstr \"\"\n\n#: classes/class-backup.php:552\nmsgid \"\"\n\"Invalid backup type <code>%s</code> must be one of (string) file, database \"\n\"or complete\"\nmsgstr \"\"\n\n#: classes/class-backup.php:1926\nmsgid \"Could not connect to mysql\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:50\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:54\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:70\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:75\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:106\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:108\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:28\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:34\nmsgid \"\"\n\"Receive a notification email when a backup completes, if the backup is small \"\n\"enough (&lt; %s) then it will be attached to the email. Separate multiple \"\n\"email addresses with a comma.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:63\nmsgid \"\"\n\"The maximum filesize of your backup that will be attached to your \"\n\"notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:82\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:117\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179 classes/class-webhook-service.php:59\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"If the errors above look like Martian, forward this email to %3$s and we'll \"\n\"take a look\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:189\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:203\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: classes/class-path.php:249\nmsgid \"\"\n\"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:214\nmsgid \"Update\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:215\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:216\nmsgid \"\"\n\"Are you sure you want to delete this schedule? All of it's backups will also \"\n\"be deleted.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:216 classes/class-plugin.php:217\n#: classes/class-plugin.php:218 classes/class-plugin.php:219\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:217\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:218\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:219\nmsgid \"\"\n\"Reducing the number of backups that are stored on this server will cause \"\n\"some of your existing backups to be deleted, are you sure that's what you \"\n\"want?\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:151\nmsgid \"Invalid Option Name\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:264\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:612\nmsgid \"Argument 1 for %s must be a valid future timestamp\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:649\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:778 functions/interface.php:267\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:865\nmsgid \"Error writing to file. (%s)\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:916\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:921\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:926\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:931\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:936\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:987\nmsgid \"An unexpected error occured\"\nmsgstr \"\"\n\n#. translators: min=minute\n#: classes/class-schedule.php:1050\nmsgid \"%s min\"\nmsgid_plural \"%s mins\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-schedule.php:1060\nmsgid \"%s hour\"\nmsgid_plural \"%s hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-schedule.php:1122\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:1127\nmsgid \"%s doesn't exist\"\nmsgstr \"\"\n\n#: classes/class-schedule.php:1132\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: classes/class-services.php:80\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: classes/class-services.php:96\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: classes/class-services.php:114 classes/deprecated.php:81\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: classes/class-setup.php:34\nmsgid \"BackUpWordPress\"\nmsgstr \"\"\n\n#: classes/class-setup.php:170\nmsgid \"\"\n\"BackUpWordPress requires PHP version %1$s or later and WordPress version \"\n\"%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s\"\nmsgstr \"\"\n\n#: classes/class-webhook-service.php:103\nmsgid \"Error: %s\"\nmsgstr \"\"\n\n#: functions/core.php:326\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:326\nmsgid \"\"\n\"By default BackUpWordPress performs a daily backup of your database and a \"\n\"weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:341\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: functions/core.php:342\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: functions/core.php:343\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: functions/core.php:344\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: functions/core.php:345\nmsgid \"Once Biweekly\"\nmsgstr \"Once Fortnightly\"\n\n#: functions/core.php:346\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: functions/core.php:364\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: functions/interface.php:31\nmsgid \"Download\"\nmsgstr \"\"\n\n#: functions/interface.php:68\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: functions/interface.php:70\nmsgid \"Dismiss\"\nmsgstr \"\"\n\n#: functions/interface.php:136\nmsgid \"\"\n\"The backups directory can't be created because your %1$s directory isn't \"\n\"writable, run %2$s or %3$s or create the folder yourself.\"\nmsgstr \"\"\n\n#: functions/interface.php:140\nmsgid \"\"\n\"Your backups directory isn't writable, run %1$s or %2$s or set the \"\n\"permissions yourself.\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"\"\n\"%1$s is running in %2$s, please contact your host and ask them to disable \"\n\"it. BackUpWordPress may not work correctly whilst %3$s is on.\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: functions/interface.php:144\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: functions/interface.php:152\nmsgid \"Your custom path does not exist\"\nmsgstr \"\"\n\n#: functions/interface.php:156\nmsgid \"\"\n\"Your custom path is unreachable due to a restriction set in your PHP \"\n\"configuration (open_basedir)\"\nmsgstr \"\"\n\n#: functions/interface.php:161\nmsgid \"\"\n\"Your custom backups directory %1$s doesn't exist and can't be created, your \"\n\"backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:165\nmsgid \"\"\n\"Your custom backups directory %1$s isn't writable, new backups will be saved \"\n\"to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:174\nmsgid \"Your site root path %s isn't readable.\"\nmsgstr \"\"\n\n#: functions/interface.php:236\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: functions/interface.php:240\nmsgid \"Files\"\nmsgstr \"\"\n\n#: functions/interface.php:244\nmsgid \"Database\"\nmsgstr \"\"\n\n#: functions/interface.php:251\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: functions/interface.php:266\nmsgid \"Started %s ago\"\nmsgstr \"\"\n\n#: functions/interface.php:268\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: functions/interface.php:316\nmsgid \"No backups completed\"\nmsgstr \"\"\n\n#: functions/interface.php:327\nmsgid \"Complete Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:328\nmsgid \"File Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:329\nmsgid \"Database Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:330\nmsgid \"Complete Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:331\nmsgid \"File Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:332\nmsgid \"Database Twicedaily\"\nmsgstr \"\"\n\n#: functions/interface.php:333\nmsgid \"Complete Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:334\nmsgid \"File Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:335\nmsgid \"Database Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:336\nmsgid \"Complete Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:337\nmsgid \"File Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:338\nmsgid \"Database Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:339\nmsgid \"Complete Biweekly\"\nmsgstr \"Complete Fortnightly\"\n\n#: functions/interface.php:340\nmsgid \"File Biweekly\"\nmsgstr \"File Fortnightly\"\n\n#: functions/interface.php:341\nmsgid \"Database Biweekly\"\nmsgstr \"Database Fortnightly\"\n\n#: functions/interface.php:342\nmsgid \"Complete Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:343\nmsgid \"File Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:344\nmsgid \"Database Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:345\nmsgid \"Complete Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:346\nmsgid \"File Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:347\nmsgid \"Database Manually\"\nmsgstr \"\"\n\n#. Plugin Name of the plugin/theme\nmsgid \"BackUpWordPress Backup Plugin\"\nmsgstr \"\"\n\n#. Plugin URI of the plugin/theme\nmsgid \"http://bwp.hmn.md/\"\nmsgstr \"\"\n\n#. Description of the plugin/theme\nmsgid \"\"\n\"Simple automated backups of your WordPress powered website. Once activated \"\n\"you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, \"\n\"you'll find me under the Network Settings menu.\"\nmsgstr \"\"\n\n#. Author of the plugin/theme\nmsgid \"XIBO Ltd\"\nmsgstr \"\"\n\n#. Author URI of the plugin/theme\nmsgid \"http://hmn.md/\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:120\nmsgctxt \"\"\n\"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to \"\n\"store\"\nmsgid \"Backup my %1$s %2$s %3$s, %4$s.\"\nmsgstr \"\"\n\n#: functions/interface.php:318\nmsgctxt \"backups count\"\nmsgid \"One backup completed\"\nmsgid_plural \"%1$s backups completed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "languages/backupwordpress-es_ES.po",
    "content": "# Translation of 2.x in Spanish (Spain)\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: es_ES\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"Puedes enviar los detalles del error a %s para que sea investigado.\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"Cada hora\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"Dos veces al día\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"A diario\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"Una vez al día\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"Cada quince días\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"Cada mes\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Contacta con soporte\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nueva regla de exclusión\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Esta es la respuesta del servidor\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"Si necesitas ayuda haz clic en la ayuda de la esquina superior derecha de esta página.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Backup comenzando\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Guardando la base de datos %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Verificando la base de datos %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Creando archivo comprimido %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Verificando archivo comprimido %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Finalizando copia de seguridad\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress podría no funcionar cuando php está funcionando con %s\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Hora a la que debe programarse. Por defecto %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"¿Estás seguro de que deseas eliminar esta programación? Todos sus copias de seguridad serán también eliminados.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"Cancela para volver atrás, OK para borrar.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"¿Estás seguro de que quieres eliminar esta copia de seguridad?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"¿Estás seguro de que quieres eliminar esta regla?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Máximas copias de seguridad no puede estar vacío\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Máximas copias de seguridad debe ser mayor de 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Excluír\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"defecto\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"definido\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Sólo manual\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"esto no debería llevar mucho &hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"calculando el tamaño de tu sitio web&hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"La próxima copia de seguridad será el %1$s a las %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"cada 12 horas a %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"semanalmente los %1$s a las %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"quincenalmente los %1$s a las %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"el %1$s de cada mes a las %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manualmente\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"este servidor\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"no almacenar ninguna copia de seguridad en %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"almacenar sólo la/las última/s %1$s copia de seguridad en %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress no ha podido hacer una copia de seguridad de tu sitio %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Estos son los errores encontrados:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Si los errores indicados te suenan a chino, reenvía este email a %3$s y le echaremos un vistazo\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Saludos,\\n\"\n\"El robot de BackUpWordPress\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress ha completado una copia de seguridad de tu sitio %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"El archivo debería estar adjunto a este email.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Puedes descargar el archivo haciendo clic en el enlace inferior:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Saludos,\\n\"\n\"El robot de BackUpWordPress\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Desgraciadamente el archivo de copia de seguridad es demasiado grande para adjuntarlo a este email.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Copia de seguridad: Comprimiendo ...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Ruta de copia de seguridad no válida\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Ruta de raíz no válida\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Copia de seguridad completada:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"La copia de seguridad ha fallado\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"Por defecto BackUpWordPress realiza automáticamente una copia de seguridad de la base de datos diaria y semanal. Puedes modificar la configuración.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Heredado\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"El directorio de copias de seguridad no se puede escribir. Ejecuta %1$s o %2$s o establece los permisos.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress ha configurado tus ajustes por defecto.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"La copia de seguridad de %s ha fallado\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Enviar un email de notificación a %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s no es un email válido\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Las copias de seguridad serán comprimidas y deberían ser más pequeñas que esto.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Notificación de email\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"diariamente a las %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Número de copias de seguridad a almacenar en el servidor\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Configuración de frecuencia de copias de seguridad\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Cerrar\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"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.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Directorio raíz. Por defecto %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Capacidad que se usa al llamar %1$s. Valor predeterminado es %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"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.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress necesita versión de WordPress %s o superior.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"La ruta hacia tu %1$s ejecutable. Se utilizará para la parte %2$s de la copia de seguridad si está disponible.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"ej.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"Puedes %1$s cualquiera de los %2$s en tu %3$s para controlar opciones avanzadas. %4$s. %5$s establecidas verán destacadas.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://www.php.net/manual/es/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Modo seguro\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"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.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"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.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"cancelar\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Configuración\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Exclusiones\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Descargar\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress está casi listo.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress ha detectado problemas con tu última copia de seguridad.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Base de datos y archivos\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Base de datos\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress ha detectado un problema.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Tipo de copia de seguridad no puede estar vacío\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Tipo de copia de seguridad no válido\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Debe indicar una programación\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Programación no válida\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Máximas copias de seguridad debe ser un número\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s no ah encontrado coincidencias.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"añadir programa\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Tamaño\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Tipo\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Acciones\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"El Codex puede ayudar\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Ruta a la carpeta en la que te gustaría almacenar tus copias de seguridad. Por defecto %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"base de datos\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"archivos\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Lista de archivos o directorios a excluir en las copias de seguridad, separados por comas.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Gestionar copias de seguridad\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Copias de seguridad\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"No estás usando la última versión estable de BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"Preguntas frecuentes (FAQ)\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Constantes\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Para más información:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Foros de soporte\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Ayuda en la traducción\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Necesitas arreglar los problemas detallados antes de poder comenzar BackUpWordPress.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Previsualizar\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Reglas de exclusión\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Excluído\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Incluído\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"No legible\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"No se puede hacer copia de seguridad de los archivos no legibles\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Tu sitio es %s. Las copias de seguridad se comprimirán y por tanto serán más pequeñas.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Copia de seguridad\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Base de datos y archivos\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Archivos sólo\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Base de datos sólo\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Archivos\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Gestiona las exclusiones\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Programa\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Actualizar\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"cada hora, %s minutos después de las horas en punto\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Ejecutar ahora\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Copia de seguridad de %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"El archivo de seguridad %s evita que otros puedan descargar tus copias de seguridad.\"\n"
  },
  {
    "path": "languages/backupwordpress-eu.po",
    "content": "# Translation of 2.x in Basque\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: eu\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-fr_FR.po",
    "content": "# Translation of 3.x in French (France)\n# This file is distributed under the same license as the 3.x package.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 3.x\\n\"\n\"Report-Msgid-Bugs-To: support@xibodevelopment.com\\n\"\n\"POT-Creation-Date: 2015-02-24 08:44:19+00:00\\n\"\n\"PO-Revision-Date: 2015-07-18 15:53+0100\\n\"\n\"Last-Translator: XIBO Ltd <support@xibodevelopment.com>\\n\"\n\"Language-Team: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n > 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Language: fr_FR\\n\"\n\n#: admin/actions.php:215\nmsgid \"The schedule ID was not provided. Aborting.\"\nmsgstr \"L'identifiant d'horaire non fourni. Execution interrompue.\"\n\n#: admin/actions.php:265\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Le type de sauvegarde doit être indiqué\"\n\n#: admin/actions.php:269\nmsgid \"Invalid backup type\"\nmsgstr \"Type de sauvegarde inexistant\"\n\n#: admin/actions.php:283\nmsgid \"Schedule cannot be empty\"\nmsgstr \"La planification doit être indiquée\"\n\n#: admin/actions.php:287\nmsgid \"Invalid schedule\"\nmsgstr \"Horaire incorrect\"\n\n#: admin/actions.php:301\nmsgid \"Day of the week must be a valid lowercase day name\"\nmsgstr \"Le jour de la semain doit être un nom de jour existant en minuscules\"\n\n#: admin/actions.php:320\nmsgid \"Day of month must be between 1 and 31\"\nmsgstr \"La valeur pour jour du mois doit être un nombre entre 1 et 31\"\n\n#: admin/actions.php:339\nmsgid \"Hours must be between 0 and 23\"\nmsgstr \"La valeur pour les heures doit être entre 0 et 23\"\n\n#: admin/actions.php:358\nmsgid \"Minutes must be between 0 and 59\"\nmsgstr \"Doit être un nombre entre 0 et 59\"\n\n#: admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Le nombre maximum de sauvegarde doit être indiqué\"\n\n#: admin/actions.php:376\nmsgid \"Max backups must be a number\"\nmsgstr \"Le nombre maximum de sauvegardes doit être un nombre\"\n\n#: admin/actions.php:380\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Le nombre maximum de sauvegardes doit être supérieur à 0\"\n\n#: admin/actions.php:732 admin/actions.php:738\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress a détecté un problème.\"\n\n#: admin/actions.php:732 admin/actions.php:738\nmsgid \"\"\n\"%1$s is returning a %2$s response which could mean cron jobs aren't getting fired \"\n\"properly. BackUpWordPress relies on wp-cron to run scheduled backups. See the %3$s for \"\n\"more details.\"\nmsgstr \"\"\n\"%1$s retourne une réponse %2$s ce qui signifie que les tâches cron ne sont pas lancées \"\n\"correctement. BackUpWordPress dépend du bon fonctionnement de wp-cron pour lancer les \"\n\"sauvegardes programmées. Voir %3$s pour plus de détails.\"\n\n#: admin/backups-table.php:8 admin/schedule-form-excludes.php:98\nmsgid \"Size\"\nmsgstr \"Taille\"\n\n#: admin/backups-table.php:9 admin/schedule-form-excludes.php:100\nmsgid \"Type\"\nmsgstr \"Type\"\n\n#: admin/backups-table.php:10\nmsgid \"Actions\"\nmsgstr \"Actions\"\n\n#: admin/backups-table.php:35\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"Vos sauvegardes seront disponibles ici\"\n\n#: admin/backups.php:22\nmsgid \"add schedule\"\nmsgstr \"ajouter un horaire\"\n\n#: admin/backups.php:26\nmsgid \"Support\"\nmsgstr \"Support\"\n\n#: admin/backups.php:32\nmsgid \"Enable Support\"\nmsgstr \"Activer le support\"\n\n#: admin/constants.php:3\nmsgid \"\"\n\"You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. \"\n\"Defined %5$s will be highlighted.\"\nmsgstr \"\"\n\"Vous pouvez %1$s chacun des prochains %2$s dans votre %3$s pour régler les paramètres \"\n\"avancés. %4$s. %5$s défini sera souligné.\"\n\n#: admin/constants.php:3 admin/menu.php:69\nmsgid \"Constants\"\nmsgstr \"Constantes\"\n\n#: admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Le Codex peut aider\"\n\n#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46\n#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94\n#: admin/constants.php:110 classes/class-email-service.php:60\nmsgid \"You've set it to: %s\"\nmsgstr \"Vous l'avez défini comme suit: %s\"\n\n#: admin/constants.php:17\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Le chemin du dossier de sauvegarde. Par défaut : %s.\"\n\n#: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49\n#: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97\n#: admin/constants.php:113 classes/class-email-service.php:63\nmsgid \"e.g.\"\nmsgstr \"par exemple\"\n\n#: admin/constants.php:33\nmsgid \"\"\n\"The path to your %1$s executable. Will be used for the %2$s part of the back up if \"\n\"available.\"\nmsgstr \"\"\n\"Le chemin de l'exécutable %1$s. Il sera utilisé pour la partie %2$s de la sauvegarde, \"\n\"s'il est présent.\"\n\n#: admin/constants.php:33 admin/constants.php:49\nmsgid \"database\"\nmsgstr \"base de données\"\n\n#: admin/constants.php:49\nmsgid \"\"\n\"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\"Le chemin vers l'exécutable %1$s. Il sera utilisé pour compresser %2$s et %3$s s'il est \"\n\"présent.\"\n\n#: admin/constants.php:49\nmsgid \"files\"\nmsgstr \"fichiers\"\n\n#: admin/constants.php:65\nmsgid \"\"\n\"Comma separated list of files or directories to exclude, the backups directory is \"\n\"automatically excluded.\"\nmsgstr \"\"\n\"Liste, séparée par des virgules, des dossiers à exclure. Le dossier de sauvegarde est \"\n\"automatiquement exclu.\"\n\n#: admin/constants.php:81\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"La capacité à utiliser quand %1$s est appelé. Par défaut : %2$s.\"\n\n#: admin/constants.php:97\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Le répertoire racine à sauvegarder. Par défaut : %s.\"\n\n#: admin/constants.php:113\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"L'heure à laquelle vos sauvegardes seront effectuées. Par défaut : %s.\"\n\n#: admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"Activer le support \"\n\n#: admin/enable-support.php:5\nmsgid \"\"\n\"BackUpWordPress uses %s to provide support. In addition to allowing you to send and \"\n\"receive messages we also send the following server information along with your requests:\"\nmsgstr \"\"\n\"BqckUpWordPress utilise %s pour fournir du support technique. En plus de vous permettre \"\n\"d'envoyer et recevoir des messages, de l'information concernant la configuration du \"\n\"serveur est également jointe.\"\n\n#: admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"Vous pouvez désactiver le support tecnique en désactivant BackUpWordPress.\"\n\n#: admin/enable-support.php:60\nmsgid \"No thanks\"\nmsgstr \"Non merci\"\n\n#: admin/enable-support.php:61\nmsgid \"Yes I want to enable support\"\nmsgstr \"Oui, je veux activer le support technique\"\n\n#: admin/faq.php:2\nmsgid \"Where does BackUpWordPress store the backup files?\"\nmsgstr \"Où sont stockées les sauvegardes ?\"\n\n#: admin/faq.php:4\nmsgid \"\"\n\"Backups are stored on your server in <code>/wp-content/backups</code>, you can change the \"\n\"directory.\"\nmsgstr \"\"\n\"Les sauvegardes sont stockées sur votre serveur sous <code>/wp-content/backups</code>, \"\n\"vous pouvez changer ce répertoire.\"\n\n#: admin/faq.php:6\nmsgid \"\"\n\"Important: By default BackUpWordPress backs up everything in your site root as well as \"\n\"your database, this includes any non WordPress folders that happen to be in your site \"\n\"root. This does mean that your backup directory can get quite large.\"\nmsgstr \"\"\n\"Important: Par défault, BackUpWordPress sauvegarde tout ce que contient la racine de \"\n\"votre site ainsi que votre base de données, y compris d'éventuels répertoires externes à \"\n\"WordPress. Ceci peut causer des archives de taille conséquente.\"\n\n#: admin/faq.php:8\nmsgid \"What if I want to back up my site to another destination?\"\nmsgstr \"Et si je désire stocker mes sauvegardes ailleurs que sur l'hébergement ?\"\n\n#: admin/faq.php:10\nmsgid \"\"\n\"BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, Azure, \"\n\"DreamObjects and FTP/SFTP. Check it out here: <a href=\\\"http://bwp.hmn.md/?\"\n\"utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=freeplugin\\\" title=\"\n\"\\\"BackUpWordPress Homepage\\\" target=\\\"_blank\\\">https://bwp.hmn.md</a>\"\nmsgstr \"\"\n\"BackUpWordPress Pro est compatible avec Dropbox, Google Drive, Amazon S3, Rackspace, \"\n\"Azure, DreamObjects and FTP/SFTP. Plus d'infos: <a href=\\\"http://bwp.hmn.md/?\"\n\"utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=freeplugin\\\" title=\"\n\"\\\"BackUpWordPress Homepage\\\" target=\\\"_blank\\\">https://bwp.hmn.md</a>\"\n\n#: admin/faq.php:12\nmsgid \"How do I restore my site from a backup?\"\nmsgstr \"Comment restaurer mon site à partir d'une sauvegarde ?\"\n\n#: admin/faq.php:14\nmsgid \"\"\n\"You need to download the latest backup file either by clicking download on the backups \"\n\"page or via <code>FTP</code>. <code>Unzip</code> the files and upload all the files to \"\n\"your server overwriting your site. You can then import the database using your hosts \"\n\"database management tool (likely <code>phpMyAdmin</code>).\"\nmsgstr \"\"\n\"Vous devez télécharger l'archive la plus récente soit en cliquant télécharger à partir de \"\n\"la page des sauvegardes ou via <code>FTP</code>. <code>Extraire</code> les fichiers et \"\n\"les transférer sur votre serveur en remplaçant les fichiers existants. Vous pouvez alors \"\n\"importer la base de données en utilisant votre outil de gestion de base de données. \"\n\"Probablement <code>phpMyAdmin</code>\"\n\n#: admin/faq.php:16\nmsgid \"\"\n\"See this guide for more details - <a href=\\\"https://bwp.hmn.md/support-center/restore-\"\n\"backup/\\\" title=\\\"Go to support center\\\" target=\\\"_blank\\\">How to restore from backup</a>.\"\nmsgstr \"\"\n\"Voir ce guide pour plus de détails - <a href=\\\"https://bwp.hmn.md/support-center/restore-\"\n\"backup/\\\" title=\\\"Go to support center\\\" target=\\\"_blank\\\">Comment restaurer à partir \"\n\"d'une sauvegarde</a>.\"\n\n#: admin/faq.php:18\nmsgid \"Does BackUpWordPress back up the backups directory?\"\nmsgstr \"Est-ce que BackUpWordPress sauvegarde le répertoire de sauvegardes ?\"\n\n#: admin/faq.php:20\nmsgid \"No.\"\nmsgstr \"Non\"\n\n#: admin/faq.php:22\nmsgid \"I'm not receiving my backups by email?\"\nmsgstr \"Je ne reçois pas mes sauvegardes par email ?\"\n\n#: admin/faq.php:24\nmsgid \"\"\n\"Most servers have a filesize limit on email attachments, it's generally about 10mb. If \"\n\"your backup file is over that limit it won't be sent attached to the email, instead you \"\n\"should receive an email with a link to download the backup, if you aren't even receiving \"\n\"that then you likely have a mail issue on your server that you'll need to contact your \"\n\"host about.\"\nmsgstr \"\"\n\"La plupart des serveurs limitent la taille des pièces jointes aux emails, environ 10Mb en \"\n\"moyenne. Si votre archive est au delà de cette limite, elle ne sera pas jointe à l'email. \"\n\"Vous recevrez un email avec un lien pour télécharger le fichier. Si vous ne recevez aucun \"\n\"email, vous devrez probablement contacter votre hébergeur \"\n\n#: admin/faq.php:26\nmsgid \"How many backups are stored by default?\"\nmsgstr \"Combien de sauvegardes sont stockées par défaut ?\"\n\n#: admin/faq.php:28\nmsgid \"BackUpWordPress stores the last 10 backups by default.\"\nmsgstr \"BackUpWordPress stocke les 10 sauvegardes les plus récentes par défaut.\"\n\n#: admin/faq.php:30\nmsgid \"How long should a backup take?\"\nmsgstr \"Combien de temps en moyenne prend une sauvegarde ?\"\n\n#: admin/faq.php:32\nmsgid \"\"\n\"Unless your site is very large (many gigabytes) it should only take a few minutes to \"\n\"perform a back up, if your back up has been running for longer than an hour it's safe to \"\n\"assume that something has gone wrong, try de-activating and re-activating the plugin, if \"\n\"it keeps happening, contact support.\"\nmsgstr \"\"\n\"A mois que la taille totale de votre site soit très grande, celq ne devrait prendre que \"\n\"quelques minutes pour effectuer une sauvegarde, si celle-ci n'est toujours pas terminée \"\n\"après une heure, vous pouvez être certain qu'un problème s'est produit. Essayez de \"\n\"désactiver puis de réactiver le plugin.\"\n\n#: admin/faq.php:34\nmsgid \"What do I do if I get the wp-cron error message?\"\nmsgstr \"Que dois-je faire si je reçois un message d'erreur pour wp-cron ?\"\n\n#: admin/faq.php:36\nmsgid \"\"\n\"The issue is that your <code>wp-cron.php</code> is not returning a <code>200</code> \"\n\"response when hit with a HTTP request originating from your own server, it could be \"\n\"several things, in most cases, it's an issue with the server / site.\"\nmsgstr \"\"\n\"Le problème est que le fichier <code>wp-cron.php</code> ne renvoie pas un code <code>200</\"\n\"code> lorsqu'il reçoit une requête HTTP à pqrtir de votre propre serveur. Plusieurs \"\n\"raisons peuvent causer ce problème. La plupart du temps, c'est la faute du serveur / site.\"\n\n#: admin/faq.php:38\nmsgid \"There are some things you can test to confirm this is the issue.\"\nmsgstr \"Il y a certaines choses que vous pouvez faire pour confirmer le problème.\"\n\n#: admin/faq.php:40\nmsgid \"Are scheduled posts working? (They use wp-cron as well ). \"\nmsgstr \"Est-ce que la publication programmée fonctionne ?\"\n\n#: admin/faq.php:42\nmsgid \"\"\n\"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see \"\n\"below for work-around).\"\nmsgstr \"Est-ce que votre site est hébergé par Heart Internet ?\"\n\n#: admin/faq.php:44\nmsgid \"If you click manual backup does it work?\"\nmsgstr \"Est-ce que la sauvegarde manuelle fonctionne ?\"\n\n#: admin/faq.php:46\nmsgid \"\"\n\"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your <code>wp-config.php</\"\n\"code>, do automatic backups work?\"\nmsgstr \"\"\n\"Essayez d'ajouter <code>define( 'ALTERNATE_WP_CRON', true );</code> à votre fichier  \"\n\"<code>wp-config.php</code>, est-ce que les sauvegardes automatiques fonctionnent ?\"\n\n#: admin/faq.php:48\nmsgid \"\"\n\"Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, .\"\n\"htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily \"\n\"remove the authentication, do backups start working?\"\nmsgstr \"\"\n\"Est-ce que votre site est privé ? ( protégé par une forme d'identification, un plugin de \"\n\"maintenance, ou .htaccess). Si oui, wp-cron ne fonctionnera pas tant que vous n'aurez pas \"\n\"désactivé la restriction. Vérifiez si la désactivation de la restriction solutionne le \"\n\"problème.\"\n\n#: admin/faq.php:50\nmsgid \"\"\n\"Report the results to our support team for further help. To do this, either enable suport \"\n\"from your Admin Dashboard (recommended), or email support@xibodevelopment.com\"\nmsgstr \"\"\n\"Envoyer un rapport des résultats à notre équipe de support technique pour obtenir de \"\n\"l'aide. Pour ce faire, activez le support via l'admin (recommandé) ou envoyez un courriel \"\n\"à support@xibodevelopment.com\"\n\n#: admin/faq.php:52\nmsgid \"How to get BackUpWordPress working in Heart Internet\"\nmsgstr \"Instructions spécifiques pour l'hébergeur Heart Internet.\"\n\n#: admin/faq.php:54\nmsgid \"\"\n\"The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/php5 /home/\"\n\"sites/yourdomain.com/public_html/wp-cron.php</code> (note the space between php5 and the \"\n\"location of the file). The file <code>wp-cron.php</code> <code>chmod</code> must be set \"\n\"to <code>711</code>.\"\nmsgstr \"\"\n\"Le script à ajouter au cPanel de Heart Internet est le suivant: <code>/usr/bin/php5 /home/\"\n\"sites/yourdomain.com/public_html/wp-cron.php</code> ( espace entre php5 et le chemin ). \"\n\"Les permissions <code>chmod</code> du fichier  <code>wp-cron.php</code> doit être \"\n\"<code>711</code>.\"\n\n#: admin/faq.php:56\nmsgid \"My backups seem to be failing?\"\nmsgstr \"Mes sauvegardes échouent !\"\n\n#: admin/faq.php:58\nmsgid \"\"\n\"If your backups are failing - it's commonly caused by lack of available resources on your \"\n\"server. The easiest way to establish this to exclude some [of] or your entire uploades \"\n\"folder, running a backup an if that succeeds. If so, we know it's probably a server \"\n\"issue. If not, report the results to our support team for further help. To do this, \"\n\"either enable suport from your Admin Dashboard (recommended), or email \"\n\"support@xibodevelopment.com\"\nmsgstr \"\"\n\"Si vos sauvegardes échouent, la cause la plus commune est un manque de ressources du \"\n\"serveur. Afin de vérifier si cela en est réellement la cause, excluez votre répertoire wp-\"\n\"uploads et démarrez une sauvegarde. Si la sauvegarde réussit, alors c'est très \"\n\"probablement une question de ressources insuffisantes. Sinon, envoyez les résultats à \"\n\"notre support technique qui pourra vous aider. Pour ce faire, activez le support sur la \"\n\"page de configuration du plugin, ou envoyez un courriel à support@xibodevelopment.com\"\n\n#: admin/menu.php:12 admin/menu.php:14\nmsgid \"Manage Backups\"\nmsgstr \"Gérer les sauvegardes\"\n\n#: admin/menu.php:12 admin/menu.php:14 admin/menu.php:39\nmsgid \"Backups\"\nmsgstr \"Sauvegardes\"\n\n#: admin/menu.php:67\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: admin/menu.php:79\nmsgid \"Server Info\"\nmsgstr \"Info serveur\"\n\n#: admin/menu.php:86\nmsgid \"For more information:\"\nmsgstr \"Pour de plus amples informations:\"\n\n#: admin/menu.php:88\nmsgid \"Support Forums\"\nmsgstr \"Forums de support\"\n\n#: admin/menu.php:89\nmsgid \"Help with translation\"\nmsgstr \"Aider à la traduction\"\n\n#: admin/page.php:7\nmsgid \"\"\n\"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory%2$s.\"\nmsgstr \"\"\n\"Si vous aimez BackUpWordPress, n'hésitez pas à %1$slaisser une évaluation positive sur \"\n\"WordPress.org%2$s.\"\n\n#: admin/schedule-form-excludes.php:5\nmsgid \"Currently Excluded\"\nmsgstr \"Exclusions actives\"\n\n#: admin/schedule-form-excludes.php:40\nmsgid \"Default rule\"\nmsgstr \"Règle par défaut\"\n\n#: admin/schedule-form-excludes.php:44\nmsgid \"Defined in wp-config.php\"\nmsgstr \"Défini dans le fichier wp-config.php\"\n\n#: admin/schedule-form-excludes.php:48\nmsgid \"Stop excluding\"\nmsgstr \"Ne plus exclure\"\n\n#: admin/schedule-form-excludes.php:64\nmsgid \"Directory Listing\"\nmsgstr \"Contenu du répertoire\"\n\n#: admin/schedule-form-excludes.php:66\nmsgid \"\"\n\"Here's a directory listing of all files on your site, you can browse through and exclude \"\n\"files or folders that you don't want included in your backup.\"\nmsgstr \"\"\n\"Voici l'arborescence de tous les fichiers de votre site, vous pouvez naviguer et exclure \"\n\"les fichiers et répertoire que vous ne voulez pas sauvegardez.\"\n\n#: admin/schedule-form-excludes.php:97\nmsgid \"Name\"\nmsgstr \"Nom\"\n\n#: admin/schedule-form-excludes.php:99\nmsgid \"Permissions\"\nmsgstr \"Permissions\"\n\n#: admin/schedule-form-excludes.php:101\nmsgid \"Status\"\nmsgstr \"Statut\"\n\n#: admin/schedule-form-excludes.php:158 admin/schedule-form-excludes.php:269\nmsgid \"Refresh\"\nmsgstr \"Rafraîchir\"\n\n#: admin/schedule-form-excludes.php:175 admin/schedule-form-excludes.php:293\nmsgid \"Symlink\"\nmsgstr \"Alias\"\n\n#: admin/schedule-form-excludes.php:179 admin/schedule-form-excludes.php:297\nmsgid \"Folder\"\nmsgstr \"Répertoire\"\n\n#: admin/schedule-form-excludes.php:269\nmsgid \"Recalculate the size of this directory\"\nmsgstr \"Recalculer la taille de ce répertoire\"\n\n#: admin/schedule-form-excludes.php:301\nmsgid \"File\"\nmsgstr \"Fichier\"\n\n#: admin/schedule-form-excludes.php:311\nmsgid \"Unreadable files won't be backed up.\"\nmsgstr \"Les fichiers illisibles ne seront pas sauvegardés.\"\n\n#: admin/schedule-form-excludes.php:311\nmsgid \"Unreadable\"\nmsgstr \"Illisible\"\n\n#: admin/schedule-form-excludes.php:315\nmsgid \"Excluded\"\nmsgstr \"Exclus\"\n\n#: admin/schedule-form-excludes.php:326\nmsgid \"Exclude &rarr;\"\nmsgstr \"Exclure &rarr;\"\n\n#: admin/schedule-form-excludes.php:345 admin/schedule-form.php:190\n#: admin/schedule-settings.php:88\nmsgid \"Done\"\nmsgstr \"Terminé\"\n\n#: admin/schedule-form.php:1 admin/schedule-settings.php:9\nmsgid \"Settings\"\nmsgstr \"Paramètres\"\n\n#: admin/schedule-form.php:36\nmsgid \"Backup\"\nmsgstr \"Sauvegarde\"\n\n#: admin/schedule-form.php:43\nmsgid \"Both Database &amp; files\"\nmsgstr \"BDD et fichiers\"\n\n#: admin/schedule-form.php:45\nmsgid \"Files only\"\nmsgstr \"Fichiers seulement\"\n\n#: admin/schedule-form.php:47\nmsgid \"Database only\"\nmsgstr \"BDD seulement\"\n\n#: admin/schedule-form.php:58\nmsgid \"Schedule\"\nmsgstr \"Horaire\"\n\n#: admin/schedule-form.php:65\nmsgid \"Manual Only\"\nmsgstr \"Manuel seulement\"\n\n#: admin/schedule-form.php:90\nmsgid \"Start Day\"\nmsgstr \"Premier jour\"\n\n#: admin/schedule-form.php:98\nmsgid \"Monday\"\nmsgstr \"Lundi\"\n\n#: admin/schedule-form.php:99\nmsgid \"Tuesday\"\nmsgstr \"Mardi\"\n\n#: admin/schedule-form.php:100\nmsgid \"Wednesday\"\nmsgstr \"Mercredi\"\n\n#: admin/schedule-form.php:101\nmsgid \"Thursday\"\nmsgstr \"Jeudi\"\n\n#: admin/schedule-form.php:102\nmsgid \"Friday\"\nmsgstr \"Vendredi\"\n\n#: admin/schedule-form.php:103\nmsgid \"Saturday\"\nmsgstr \"Samedi\"\n\n#: admin/schedule-form.php:104\nmsgid \"Sunday\"\nmsgstr \"Dimanche\"\n\n#: admin/schedule-form.php:122\nmsgid \"Start Day of Month\"\nmsgstr \"Premier jour du mois\"\n\n#: admin/schedule-form.php:134\nmsgid \"Start Time\"\nmsgstr \"Heure de début\"\n\n#: admin/schedule-form.php:143\nmsgid \"Hours\"\nmsgstr \"Heures\"\n\n#: admin/schedule-form.php:147\nmsgid \"Minutes\"\nmsgstr \"Minutes\"\n\n#: admin/schedule-form.php:151\nmsgid \"The second backup will run 12 hours after the first\"\nmsgstr \"La seconde sauvegarde commencera 12 heures plus tard\"\n\n#: admin/schedule-form.php:160\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Nombre de sauvegarde à conserver sur ce serveur \"\n\n#: admin/schedule-form.php:169\nmsgid \"Past this limit older backups will be deleted automatically.\"\nmsgstr \"\"\n\"Passé cette limite, les sauvegardes plus anciennes seront automatiquement supprimées.\"\n\n#: admin/schedule-form.php:172\nmsgid \"This schedule will store a maximum of %s of backups.\"\nmsgstr \"Un maximum de %s sauvegardes seront stockées pour cet horaire.\"\n\n#: admin/schedule-sentence.php:11\nmsgid \"The next backup will be on %1$s at %2$s %3$s\"\nmsgstr \"La prochaine sauvegarde est programmée pour: %1$s à %2$s %3$s\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly on the hour\"\nmsgstr \"toutes les heures\"\n\n#: admin/schedule-sentence.php:18\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"toutes les heures, %s minutes après l'heure pile\"\n\n#: admin/schedule-sentence.php:24\nmsgid \"daily at %s\"\nmsgstr \"chaque jour à %s\"\n\n#: admin/schedule-sentence.php:35\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"toutes les 12 heures à %1$s &amp; %2$s\"\n\n#: admin/schedule-sentence.php:41\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"toutes les semaines le %1$s à %2$s\"\n\n#: admin/schedule-sentence.php:47\nmsgid \"biweekly on %1$s at %2$s\"\nmsgstr \"toutes les 2 semaines le %1$s à %2$s\"\n\n#: admin/schedule-sentence.php:53\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"le %1$s de chaque mois à %2$s\"\n\n#: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65\nmsgid \"manually\"\nmsgstr \"manuellement\"\n\n#: admin/schedule-sentence.php:70\nmsgid \"this server\"\nmsgstr \"ce serveur\"\n\n#: admin/schedule-sentence.php:78\nmsgid \"store the most recent backup in %s\"\nmsgstr \"stocker la sauvegarde la plus récente dans %s\"\n\n#: admin/schedule-sentence.php:84\nmsgid \"don't store any backups in on this server\"\nmsgstr \"ne stocker aucune sauvegarde sur ce serveur\"\n\n#: admin/schedule-sentence.php:90\nmsgid \"store the last %1$s backups in %2$s\"\nmsgstr \"stocker les %1$s sauvegardes ici:%2$s\"\n\n#: admin/schedule-sentence.php:121\nmsgid \"%s. \"\nmsgstr \"%s. \"\n\n#: admin/schedule-sentence.php:125\nmsgid \"Send a copy of each backup to %s.\"\nmsgstr \"Envoyer une copie de chaque sauvegarde à %s.\"\n\n#: admin/schedule-sentence.php:153\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Les sauvegardes sont compresss et seront de taille plus petite\"\n\n#: admin/schedule-sentence.php:155\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"Cela prendra quelques instants&hellip;\"\n\n#: admin/schedule-sentence.php:155\nmsgid \"calculating the size of your backup&hellip;\"\nmsgstr \"calcul de la taille de votre sauvegarde en cours&hellip;\"\n\n#: admin/schedule-settings.php:7\nmsgid \"Run now\"\nmsgstr \"Exécuter maintenant\"\n\n#: admin/schedule-settings.php:15\nmsgid \"Excludes\"\nmsgstr \"Exclusions\"\n\n#: admin/schedule-settings.php:27 functions/interface.php:34\nmsgid \"Delete\"\nmsgstr \"Supprimer\"\n\n#: admin/server-info.php:43\n#, fuzzy\nmsgid \"%1$s - %2$s\"\nmsgstr \"toutes les semaines le %1$s à %2$s\"\n\n#: admin/upsell.php:3\n#, fuzzy\nmsgid \"Backup to\"\nmsgstr \"Sauvegarde\"\n\n#: admin/upsell.php:18\nmsgid \"\"\n\"%1$sor buy the %2$sDeveloper Bundle%3$s now for only &dollar;99 (all Destinations &amp; \"\n\"Unlimited Sites)%4$s\"\nmsgstr \"\"\n\"%1$sou achetez la %2$scollection developpeur%3$s maintenant pour seulement &dollar;99 \"\n\"( nombre illimité de sites et toutes les destinations )%4$s\"\n\n#: backupwordpress.php:240\nmsgid \"Update\"\nmsgstr \"Enregistrer\"\n\n#: backupwordpress.php:241\nmsgid \"Cancel\"\nmsgstr \"Annuler\"\n\n#: backupwordpress.php:242\nmsgid \"\"\n\"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\"Etes-vous sûr(e) de vouloir supprimer cette planification de sauvegarde ? Toutes les \"\n\"sauvegardes associées seront aussi supprimées.\"\n\n#: backupwordpress.php:242 backupwordpress.php:243 backupwordpress.php:244\n#: backupwordpress.php:245\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"Annuler pour retourner, OK pour supprimer\"\n\n#: backupwordpress.php:243\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Etes-vous sûr(e) de vouloir supprimer cette sauvegarde ?\"\n\n#: backupwordpress.php:244\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Etes-vous sûr(e) de vouloir supprimer cette règle d'exclusion ?\"\n\n#: backupwordpress.php:245\nmsgid \"\"\n\"Reducing the number of backups that are stored on this server will cause some of your \"\n\"existing backups to be deleted, are you sure that's what you want?\"\nmsgstr \"\"\n\"Réduire le nombre de sauvegardes stockées sur le serveur supprimera certaines de vos \"\n\"sauvegardes. Etes-vous sûr(e) de vouloir effectuer cette action ?\"\n\n#: classes/class-backup.php:348\nmsgid \"archive filename must be a non empty string\"\nmsgstr \"le nom de fichier doit être une chaîne de cqrqctères non vide\"\n\n#: classes/class-backup.php:352\nmsgid \"invalid file extension for archive filename <code>%s</code>\"\nmsgstr \"extension de fichier incorrect pour le fichier de nom <code>%s</code>\"\n\n#: classes/class-backup.php:392\nmsgid \"database dump filename must be a non empty string\"\nmsgstr \"le nom de fichier pour l'export de la BDD ne peut être vide\"\n\n#: classes/class-backup.php:396\nmsgid \"invalid file extension for database dump filename <code>%s</code>\"\nmsgstr \"l'extension de fichier de l'export de la BDD est invalide  <code>%s</code>\"\n\n#: classes/class-backup.php:429\nmsgid \"Invalid root path <code>%s</code> must be a valid directory path\"\nmsgstr \"Répertoire racine <code>%s</code> doit être un chemin valide\"\n\n#: classes/class-backup.php:454\n#, fuzzy\nmsgid \"Invalid existing archive filepath <code>%s</code> must be a non empty (string)\"\nmsgstr \"Chemin de sauvegarde invalide  <code>%s</code>, ne peut pas être vide\"\n\n#: classes/class-backup.php:508\nmsgid \"\"\n\"Invalid backup type <code>%s</code> must be one of (string) file, database or complete\"\nmsgstr \"\"\n\"Type de sauvegarde invalide  <code>%s</code> doit être parmi les suivants: file, database \"\n\"ou complete\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:50\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Sauvegarde: export de la BDD\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:54\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Sauvegarde: compression\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:70\nmsgid \"Invalid backup path\"\nmsgstr \"Chemin de sauvegarde incorrect\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:75\nmsgid \"Invalid root path\"\nmsgstr \"Le chemin racine est invalide\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:106\nmsgid \"Backup Complete: \"\nmsgstr \"Sauvegarde terminée :\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:108\nmsgid \"Backup Failed\"\nmsgstr \"La sauvegarde a échoué\"\n\n#: classes/class-email-service.php:28\nmsgid \"Email notification\"\nmsgstr \"Notification par e-mail\"\n\n#: classes/class-email-service.php:34\nmsgid \"\"\n\"Receive a notification email when a backup completes, if the backup is small enough (&lt; \"\n\"%s) then it will be attached to the email. Separate multiple email addresses with a comma.\"\nmsgstr \"\"\n\"Recevoir une alert quand une sauvegarde s'achève. Si l'archive est suffisamment petite \"\n\"(&lt; %s), elle sera jointe au courriel. Séparez les addresses email par des virgules.\"\n\n#: classes/class-email-service.php:63\nmsgid \"\"\n\"The maximum filesize of your backup that will be attached to your notification emails . \"\n\"Defaults to %s.\"\nmsgstr \"\"\n\"La taille maximum du fichier de sauvegarde qui sera joint à l'email de notification de \"\n\"sauvegarde. Par défaut %s.\"\n\n#: classes/class-email-service.php:82\nmsgid \"Send an email notification to %s\"\nmsgstr \"Envoyer une confirmation par courrier électronique à %s\"\n\n#: classes/class-email-service.php:117\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s n'est pas une addresse email valable\"\n\n#: classes/class-email-service.php:179 classes/class-webhook-service.php:59\nmsgid \"Backup of %s Failed\"\nmsgstr \"La sauvegarde de %s a échoué\"\n\n#: classes/class-email-service.php:181\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress n'a pas pu sauvegarder votre site %1$s.\"\n\n#: classes/class-email-service.php:181\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Voici les erreurs survenues\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\"Si les erreurs décrites ci-dessus sont pour vous du chinois, transférez nous ce courrier \"\n\"électronique à %3$s et nous y jetterons un coup d'oeil\"\n\n#: classes/class-email-service.php:181\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"Veuillez accepter les excuses du robot messager de BackUpWordPress\"\n\n#: classes/class-email-service.php:189\nmsgid \"Backup of %s\"\nmsgstr \"Sauvegarde de %s\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress vient de terminer une sauvegarde de votre site %1$s.\"\n\n#: classes/class-email-service.php:194\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Le fichier de sauvegarde devrait être joint à ce courrier électronique.\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Vous pouvez télécharger le fichier de sauvegarde en cliquant sur le lien suivant :\"\n\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"Salutations, le robot de sauvegarde et messager BackUpWordPress\"\n\n#: classes/class-email-service.php:203\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\"Malheureusement le fichier de sauvegarde est trop gros pour être joint à ce courrier \"\n\"électronique.\"\n\n#: classes/class-path.php:249\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n\"Ce fichier %s permet de s'assurer que personne d'autre ne puisse télécharger vos fichiers \"\n\"de sauvegarde.\"\n\n#: classes/class-schedule.php:137\n#, fuzzy\nmsgid \"Invalid Option Name\"\nmsgstr \"Le chemin racine est invalide\"\n\n#: classes/class-schedule.php:250\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"Paramètre 1 de %s doit être un nombre entier valide.\"\n\n#: classes/class-schedule.php:599\nmsgid \"Argument 1 for %s must be a valid future timestamp\"\nmsgstr \"Paramètre 1 de %s doit être un horodatage futur valide\"\n\n#: classes/class-schedule.php:636\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"Paramètre 1 pour %s doit être un intervalle de cron valide ou \\\"manuel\\\"\"\n\n#: classes/class-schedule.php:765 functions/interface.php:249\nmsgid \"Starting Backup\"\nmsgstr \"Début de la sauvegarde\"\n\n#: classes/class-schedule.php:851\nmsgid \"Error writing to file. (%s)\"\nmsgstr \"Erreur lors de l'écriture de fichier.\"\n\n#: classes/class-schedule.php:899\nmsgid \"Dumping Database %s\"\nmsgstr \"Export de la BDD %s en cours\"\n\n#: classes/class-schedule.php:904\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Vérification de l'export de la base de données %s\"\n\n#: classes/class-schedule.php:909\nmsgid \"Creating zip archive %s\"\nmsgstr \"Création de l'archive zip %s\"\n\n#: classes/class-schedule.php:914\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Vérification de l'archive zip %s\"\n\n#: classes/class-schedule.php:919\nmsgid \"Finishing Backup\"\nmsgstr \"Fin de la sauvegarde\"\n\n#: classes/class-schedule.php:970\nmsgid \"An unexpected error occured\"\nmsgstr \"Une erreur inconnue s'est produit\"\n\n#. translators: min=minute\n#: classes/class-schedule.php:1033\nmsgid \"%s min\"\nmsgid_plural \"%s mins\"\nmsgstr[0] \"% min\"\nmsgstr[1] \"% mins\"\n\n#: classes/class-schedule.php:1043\nmsgid \"%s hour\"\nmsgid_plural \"%s hours\"\nmsgstr[0] \"% heure\"\nmsgstr[1] \"% heures\"\n\n#: classes/class-schedule.php:1105\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"Paramètre 1 pour %s doit être une chaîne de caractères non vide\"\n\n#: classes/class-schedule.php:1110\nmsgid \"%s doesn't exist\"\nmsgstr \"%s n'existe pas\"\n\n#: classes/class-schedule.php:1115\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"Cette sauvegarde n'a pas été créée par cet horaire\"\n\n#: classes/class-services.php:81\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"Paramètre 1 de %s doit être un chemin valide\"\n\n#: classes/class-services.php:97\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"Paramètre 1 pour %s doit être un Service enregistré\"\n\n#: classes/class-services.php:115 classes/deprecated.php:81\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"Paramètre 1 de %s doit être une classe existante\"\n\n#. Plugin Name of the plugin/theme\nmsgid \"BackUpWordPress\"\nmsgstr \"BackUpWordPress\"\n\n#: classes/class-setup.php:141\nmsgid \"\"\n\"BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to \"\n\"run. It has not been activated. %3$s%4$s%5$sLearn more%6$s\"\nmsgstr \"\"\n\"Pour fonctionner, BackUpWordPress requiert la version %1$s de PHP et la version %2$s de \"\n\"WordPress ou supérieur. Il n'a pas ete activé\"\n\n#: classes/class-webhook-service.php:103\nmsgid \"Error: %s\"\nmsgstr \"Erreur: %s\"\n\n#: functions/core.php:272\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress a réglé les planifications de sauvegarde par défaut.\"\n\n#: functions/core.php:272\nmsgid \"\"\n\"By default BackUpWordPress performs a daily backup of your database and a weekly backup \"\n\"of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\"Par défaut, BackUpWordPress effectue une sauvegarde suotidienne de votre base de données \"\n\"et une sauvegarde hebdomadaire de votre base de données &amp; des fichiers. Vous pouvez \"\n\"modifier cette fréquence.\"\n\n#: functions/core.php:287\nmsgid \"Once Hourly\"\nmsgstr \"Toutes les heures\"\n\n#: functions/core.php:288\nmsgid \"Twice Daily\"\nmsgstr \"Deux fois par jour\"\n\n#: functions/core.php:289\nmsgid \"Once Daily\"\nmsgstr \"Quotidiennement\"\n\n#: functions/core.php:290\nmsgid \"Once Weekly\"\nmsgstr \"Hebdomadaire\"\n\n#: functions/core.php:291\nmsgid \"Once Biweekly\"\nmsgstr \"Toutes les deux semaines\"\n\n#: functions/core.php:292\nmsgid \"Once Monthly\"\nmsgstr \"Mensuel\"\n\n#: functions/core.php:310\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"Vous ne pouvez supprimer que les sauvegardes sous votre installation de WordPress\"\n\n#: functions/interface.php:31\nmsgid \"Download\"\nmsgstr \"Télécharger\"\n\n#: functions/interface.php:68\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress a détecté des problèmes lors de la dernière sauvegarde.\"\n\n#: functions/interface.php:70\nmsgid \"Dismiss\"\nmsgstr \"Ignorer\"\n\n#: functions/interface.php:120\nmsgid \"\"\n\"The backups directory can't be created because your %1$s directory isn't writable, run \"\n\"%2$s or %3$s or create the folder yourself.\"\nmsgstr \"\"\n\"Le dossier de sauvegarde ne peut être créé car le dossier %1$s n'a pas l'autorisation \"\n\"d'écriture. Exécutez %2$s ou %3$s, ou réglez les permissions adéquates.\"\n\n#: functions/interface.php:124\nmsgid \"\"\n\"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\"Votre dossier de sauvegarde n'a pas l'autorisation d'écriture. Exécutez %1$s ou %2$s, ou \"\n\"réglez les permissions adéquates.\"\n\n#: functions/interface.php:128\nmsgid \"\"\n\"%1$s is running in %2$s, please contact your host and ask them to disable it. \"\n\"BackUpWordPress may not work correctly whilst %3$s is on.\"\nmsgstr \"\"\n\"%1$s s'exécute dans %2$s, merci de contacter votre hébergeur et de lui demande de \"\n\"désactiver cela. BackUpWordPress peut ne pas fonctionner correctement tant que %3$s est \"\n\"activé.\"\n\n#: functions/interface.php:128\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://br2.php.net/manual/fr/features.safe-mode.php\"\n\n#: functions/interface.php:128\nmsgid \"Safe Mode\"\nmsgstr \"Safe mode\"\n\n#: functions/interface.php:136\nmsgid \"Your custom path does not exist\"\nmsgstr \"Le chemin de répértoire specifié n'existe pas\"\n\n#: functions/interface.php:140\nmsgid \"\"\n\"Your custom path is unreachable due to a restriction set in your PHP configuration \"\n\"(open_basedir)\"\nmsgstr \"\"\n\"Le chemin de répertoire specifié est inaccessible du à une restriction dans votre \"\n\"configuration PHP. open_basedir\"\n\n#: functions/interface.php:145\nmsgid \"\"\n\"Your custom backups directory %1$s doesn't exist and can't be created, your backups will \"\n\"be saved to %2$s instead.\"\nmsgstr \"\"\n\"Le dossier de sauvegarde %1$s n'existe pas et ne peut être créé. Vos sauvegardes seront \"\n\"stockées dans %2$s.\"\n\n#: functions/interface.php:149\nmsgid \"\"\n\"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s \"\n\"instead.\"\nmsgstr \"\"\n\"Le dossier de sauvegarde %1$s n'a pas l'autorisation d'écriture. Les nouvelles \"\n\"sauvegardes seront stockées dans %2$s.\"\n\n#: functions/interface.php:158\n#, fuzzy\nmsgid \"Your site root path %s isn't readable.\"\nmsgstr \"Permission insuffisante en lecture de la racine du chemin de sauvegarde %s.\"\n\n#: functions/interface.php:218\nmsgid \"Database and Files\"\nmsgstr \"Base de données et fichiers\"\n\n#: functions/interface.php:222\nmsgid \"Files\"\nmsgstr \"Fichiers\"\n\n#: functions/interface.php:226\nmsgid \"Database\"\nmsgstr \"Base de données\"\n\n#: functions/interface.php:233\nmsgid \"Legacy\"\nmsgstr \"Contribution\"\n\n#: functions/interface.php:248\nmsgid \"Started %s ago\"\nmsgstr \"Démarré il y a %s\"\n\n#: functions/interface.php:250\nmsgid \"cancel\"\nmsgstr \"annuler\"\n\n#: functions/interface.php:298\n#, fuzzy\nmsgid \"No backups completed\"\nmsgstr \"Aucune Sauvegarde Terminée\"\n\n#: functions/interface.php:309\nmsgid \"Complete Hourly\"\nmsgstr \"Complet toutes les heures\"\n\n#: functions/interface.php:310\nmsgid \"File Hourly\"\nmsgstr \"Fichier une fois l'heure\"\n\n#: functions/interface.php:311\nmsgid \"Database Hourly\"\nmsgstr \"BDD une fois l'heure\"\n\n#: functions/interface.php:312\nmsgid \"Complete Twicedaily\"\nmsgstr \"Complet deux fois par jour\"\n\n#: functions/interface.php:313\nmsgid \"File Twicedaily\"\nmsgstr \"Fichier deux fois par jour\"\n\n#: functions/interface.php:314\nmsgid \"Database Twicedaily\"\nmsgstr \"BDD deux fois par jour\"\n\n#: functions/interface.php:315\nmsgid \"Complete Daily\"\nmsgstr \"Complet quotidiennement\"\n\n#: functions/interface.php:316\nmsgid \"File Daily\"\nmsgstr \"Fichier quotidiennement\"\n\n#: functions/interface.php:317\nmsgid \"Database Daily\"\nmsgstr \"BDD quotidien\"\n\n#: functions/interface.php:318\nmsgid \"Complete Weekly\"\nmsgstr \"Complet hebdomadaire\"\n\n#: functions/interface.php:319\nmsgid \"File Weekly\"\nmsgstr \"Fichier hebdomadaire\"\n\n#: functions/interface.php:320\nmsgid \"Database Weekly\"\nmsgstr \"BDD hebdomadaire\"\n\n#: functions/interface.php:321\nmsgid \"Complete Biweekly\"\nmsgstr \"Complet bi hebdomadaire\"\n\n#: functions/interface.php:322\nmsgid \"File Biweekly\"\nmsgstr \"Fichiers bihebdomadaire\"\n\n#: functions/interface.php:323\nmsgid \"Database Biweekly\"\nmsgstr \"BDD bihebdomadaire\"\n\n#: functions/interface.php:324\nmsgid \"Complete Monthly\"\nmsgstr \"Complet mensuel\"\n\n#: functions/interface.php:325\nmsgid \"File Monthly\"\nmsgstr \"Fichier mensuel\"\n\n#: functions/interface.php:326\nmsgid \"Database Monthly\"\nmsgstr \"BDD mensuel\"\n\n#: functions/interface.php:327\nmsgid \"Complete Manually\"\nmsgstr \"Complet mensuel\"\n\n#: functions/interface.php:328\nmsgid \"File Manually\"\nmsgstr \"Fichier manuel\"\n\n#: functions/interface.php:329\nmsgid \"Database Manually\"\nmsgstr \"BDD manuel\"\n\n#. Plugin URI of the plugin/theme\nmsgid \"http://bwp.hmn.md/\"\nmsgstr \"http://bwp.hmn.md/\"\n\n#. Description of the plugin/theme\n#, fuzzy\nmsgid \"\"\n\"Simple automated backups of your WordPress powered website. Once activated you'll find me \"\n\"under <strong>Tools &rarr; Backups</strong>. On multisite, you'll find me under the \"\n\"Network Settings menu.\"\nmsgstr \"\"\n\"Sauvegardes automatiques et faciles de votre site WordPress. Une fois activé, les \"\n\"règlages se trouvent ici: <strong>Outils > Sauvegardes</strong>\"\n\n#. Author of the plugin/theme\nmsgid \"XIBO Ltd\"\nmsgstr \"XIBO Ltd\"\n\n#. Author URI of the plugin/theme\nmsgid \"http://hmn.md/\"\nmsgstr \"http://hmn.md/\"\n\n#: admin/schedule-sentence.php:118\n#, fuzzy\nmsgctxt \"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to store\"\nmsgid \"Backup my %1$s %2$s %3$s, %4$s.\"\nmsgstr \"Sauvegarder %1$s %2$s %3$s, %4$s.\"\n\n#: functions/interface.php:300\nmsgctxt \"backups count\"\nmsgid \"One backup completed\"\nmsgid_plural \"%1$s backups completed\"\nmsgstr[0] \"1 Sauvegarde Disponible\"\nmsgstr[1] \"%1$s sauvegardss disponibles\"\n\n#~ msgid \"Remove\"\n#~ msgstr \"Retirer\"\n\n#~ msgid \"No key supplied\"\n#~ msgstr \"Aucune clé fournie\"\n\n#~ msgid \"Supplied key was not valid\"\n#~ msgstr \"La clé fournie est invalide\"\n\n#~ msgid \"Task is already scheduled to run\"\n#~ msgstr \"La tâche a déjà été programmée\"\n\n#~ msgid \"Task is not scheduled to run\"\n#~ msgstr \"La tâche n'a pas été programmée\"\n\n#~ msgid \"BackUpWordPress requires WordPress version %s or greater.\"\n#~ msgstr \"BackUpWordPress nécessite WordPress version %s ou plus récent.\"\n\n#~ msgid \"BackUpWordPress may not work when php is running with %s on\"\n#~ msgstr \"\"\n#~ \"BackUpWordPress peut ne pas fonctionner correctement lorsque PHP s'exécute avec %s \"\n#~ \"activé\"\n\n#~ msgid \"BackUpWordPress is almost ready.\"\n#~ msgstr \"BackUpWordPress a presque terminé.\"\n\n#~ msgid \"% Backups Completed\"\n#~ msgstr \"% Sauvegardes terminées\"\n\n#~ msgid \"\"\n#~ \"Your backup completed but with the following errors / warnings, it's probably ok to \"\n#~ \"ignore these.\"\n#~ msgstr \"\"\n#~ \"La sauvegarde s'est achevée, mais a généré les erreurs suivantes, vous pouvez \"\n#~ \"probablement les ignorer.\"\n\n#~ msgid \"Your backup failed\"\n#~ msgstr \"La sauvegarde a échoué\"\n\n#~ msgid \"Here's the response from the server:\"\n#~ msgstr \"Voici la réponse du serveur :\"\n\n#~ msgid \"You can email details of this error to %s so they can look into the issue.\"\n#~ msgstr \"\"\n#~ \"Vous pouvez envoyez les détails de cette erreur par e-mail ) %s afin qu'il l'analyse.\"\n\n#~ msgid \"Close\"\n#~ msgstr \"Fermer\"\n\n#~ msgid \"Email to Support\"\n#~ msgstr \"Contacter le support technique par e-mail\"\n"
  },
  {
    "path": "languages/backupwordpress-he_IL.po",
    "content": "# Translation of 2.x in Hebrew\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:52+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: he_IL\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress הגדיר את תזמוני ברירת-המחדל שלך.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"גיבוי של %s נכשל\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"שלח התראה בדוא\\\"ל אל %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s אינו דוא\\\"ל חוקי\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"גיבויים ידחסו וצריכים להיות קטנים יותר מזה.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"התראה בדוא\\\"ל\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"פעם בשעה על השעה\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"פעם ביום ב-%s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"מספר גיבויים לאחסון על שרת זה\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"הגדרות תזמון\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"סגור\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"המידע שלהלן הוא לגרסה %1$s. צפה בקובץ %2$s לעזרה ספציפית לגרסה %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"הספריה הראשית שמגובית. ברירת-מחדל היא %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress דורש וורדפרס גרסה %s או יותר.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"ביטול\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"למשל\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"מצב בטוח\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"ספריית הגיבויים המותאמת אישית שלך %1$s לא קיימת ולא יכולה להיוצר, הגיבויים שלך ישמרו ב-%2$s במקום.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"ספריית הגיבויים המותאמת אישית שלך %1$s לא ניתנת לכתיבה, גיבויים חדשים ישמרו ב-%2$s במקום.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"ביטול\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"הגדרות\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"לא כלולים\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"הורד\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress כמעט מוכן.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress זיהה בעיות עם הגיבוי האחרון שלך.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"מסד נתונים וקבצים\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"מסד נתונים\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress זיהה בעיה.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"סוג הגיבוי אינו יכול להיות ריק\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"סוג גיבוי לא חוקי\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"תזמון אינו יכול להיות ריק\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"תזמון לא חוקי\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"מספר גיבויים מקסימלי חייב להיות מספר\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s לא תאם אף קובץ.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"הוסף תזמון\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"גודל\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"סוג\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"פעולות\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"הקודקס יכול לעזור\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"הנתיב לתיקיה שבה תרצה לאחסן את קבצי הגיבוי שלך, ברירת-מחדל היא %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"מסד נתונים\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"קבצים\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"ניהול גיבויים\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"גיבויים\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"אינך משתמש בגרסה האחרונה היציבה של BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"שאלות נפוצות\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"למידע נוסף:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"פורומי תמיכה\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"עזרה עם תרגום\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"עליך לתקן את הבעיות המפורטות לעיל לפני ש-BackUpWordPress יוכל להתחיל.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"הצג\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"הסר\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"לא כלול\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"כלול\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"לא קריא\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"קבצים לא קריאים אינם יכולים להיות מגובים\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"האתר שלך הוא %s. גיבויים ידחסו ולכן יהיו קטנים יותר.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"גיבוי\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"גם מסד נתונים וגם קבצים\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"קבצים בלבד\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"מסד נתונים בלבד\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"קבצים\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"תזמון\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"עדכן\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"פעם בשעה %s דקות לאחר תחילת השעה\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"גבה עכשיו\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"מחק\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"גיבוי של %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"קובץ ה-%s מבטיח שאנשים אחרים לא יכולים להוריד את קבצי הגיבוי שלך.\"\n"
  },
  {
    "path": "languages/backupwordpress-it_IT.po",
    "content": "# Translation of 2.x in Italian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: it_IT\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Email al supporto\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nuove  regole di esclusione\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Ecco la risposta del server:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"Se hai bisogno di aiuto controlla le FAQ cliccando su \\\"Aiuto\\\" nell'angolo in alto a destra di questa pagina.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Avvio backup\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Dumping Database %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Verifica Database Dump %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Creazione archivio zip %s \"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Verifica archivio zip %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Termino il backup\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress potrebbe non funzionare quando php è in esecuzione con  %s \"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Quando si deve avviare la tua pianificazione. Il valore predefinito è %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Sei sicuro di voler cancellare questa pianificazione? Tutti i backup verranno eliminati.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\\\"Annulla\\\" per tornare indietro, \\\"OK\\\" per cancellare.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Sei sicuro di voler cancellare questo backup?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Sei sicuro di voler rimuovere questa regola di esclusione?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"La riduzione del numero di backup che sono memorizzati sul server causerà la cancellazione di alcuni dei vostri backup esistenti, sei sicuro?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"I backup massimi non devono essere vuoti\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"I backup massimi devono essere maggiori di 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Escludere\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"default\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"definito\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Solo manuale\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"questo non dovrebbe impiegare troppo tempo\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"calcolando le dimensioni del sito\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Il prossimo backup sarà da %1$s a %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"ogni 12 ore dalle %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"ogni settimana da %1$s alle %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"ogni 15 giorni da %1$s a %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"da %1$s di ogni mese a %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manualmente\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"questo server\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"non memorizzare alcun backup su %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"memorizza solo gli ultimi %1$s backup su %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Memorizza %1$s %2$s %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress non è riuscito a memorizzare il tuo sito %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Qui ci sono gli errori riscontrati:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Se gli errori di cui sopra hanno un aspetto marziano, inoltra questa email a %3$s e gli daremo un'occhiata.\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Cordiali saluti, \\n\"\n\"L'apologetico BackUpWordPress Backup Robot Emailing\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress ha completato un backup del tuo sito %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Il file di backup deve essere allegato a questa email.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"È possibile scaricare il file di backup cliccando sul link sottostante:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"Cordiali saluti, Il felice BackUpWordPress Backup Robot Emailing\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Purtroppo il file di backup è troppo grande da allegare a questa email.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Backup: Dumping database...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Backup: zippando...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Cartella backup non valida\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Percorso non valido\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Backup completo:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Backup fallito\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"Per impostazione predefinita BackUpWordPress esegue un backup giornaliero del database e un backup settimanale del database e dei file. È possibile modificare queste pianificazioni.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Legacy\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"La tua directory di backup non è scrivibile, esegui %1$s o %2$s o imposta le autorizzazioni.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress ha impostato le pianificazioni predefinite.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Backup di %s fallito\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Invia una notifica email a %s \"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s non è un'email valida\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Il backup sarà compresso e dovrebbe occupare meno spazio di questo.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Notifica email\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"ogni ora\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"ogni giorno alle %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Numero di backup da memorizzare su questo server\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Impostazioni di pianificazione\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Chiudi\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Le seguenti informazioni sono per la versione %1$s. Visualizza il file %2$s per un aiuto specifico sulla versione %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"La directory principale che è stata salvata. Il valore predefinito è %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"La capacità da utilizzare quando si richiama %1$s. Il valore predefinito è %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Il percorso del tuo %1$s eseguibile. Sarà utilizzato per comprimere i tuoi %2$s e il tuo %3$s se disponibile.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress richiede WordPress versione %s o superiore.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Cancella\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Il percorso del tuo %1$s eseguibile. Sarà utilizzato per la parte del %2$s del backup, se disponibile.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"ad esempio\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Modalità provvisoria\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"La tua directory personalizzata di backup %1$s non esiste e non può essere creata, i tuoi backup verranno salvati in % 2$s\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"La tua directory personalizzata di backup %1$s non è scrivibile, i nuovi backup verranno salvati in % 2$s\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"cancella\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Impostazioni\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Esclusioni\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Scarica\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress è quasi pronto\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress ha rilevato problemi con l'ultimo backup.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Database e files\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Database\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress ha rilevato un problema.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Il tipo di backup non può essere vuoto\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Tipo di backup non valido\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"La pianificazione non può essere vuota\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Pianificazione non valida\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Max backup deve essere un numero\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s non corrisponde ad alcun file.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"aggiungi pianificazione\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Dimensione\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Tipo\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Azioni\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Leggere il Codex può aiutare.\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Il percorso della cartella dove vuoi memorizzare i file di backup. Il valore predefinito è %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"database\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"files\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Elenca file o directory da escludere separate da virgole, la directory di backup viene automaticamente esclusa.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Gestione dei Backups\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Backups\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Non si sta utilizzando l'ultima versione stabile di BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Costanti\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Per altre informazioni:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Forum di supporto\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Aiuto per la traduzione\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"È necessario risolvere i problemi descritti sopra prima che BackUpWordPress possa iniziare.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Anteprima\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Escludi regole\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Rimuovi\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Escluso\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Incluso\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Illeggibile\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Files illeggibili che non possono essere salvati\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Il tuo sito è %s. I backup verranno compressi per renderli meno ingombranti.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Backup\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Database e files insieme\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Solo files\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Solo database\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Files\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Gestione esclusioni\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Pianificazione\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Aggiorna\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"ogni %s minuti di ogni ora\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Avvia adesso\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Cancella\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Backup di %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Questo %s file assicura che non è possibile scaricare i file di backup.\"\n"
  },
  {
    "path": "languages/backupwordpress-lt_LT.po",
    "content": "# Translation of 2.x in Lithuanian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\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\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: lt_LT\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-lv_LV.po",
    "content": "# Translation of 2.x in Latvian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: lv_LV\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Laiks, kurā tiek veiktas ik dienas rezerves kopija. Pēc noklusējuma: %s\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Vai tiešām vēlaties izdzēst šo grafiku? Visas tā rezerves kopijas arī tiks izdzēstas.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"Spied 'Atcelt' lai dotos atpakaļ, vai 'OK', lai izdzēstu.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Vai tiešām vēlaties izdzēst šo rezerves kopiju? \"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Vai tiešām vēlaties izdzēst šos izņēmumus?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"Samazinot rezerves kopiju skaitu, cik tiek glabātas uz servera, varat pazaudēt jau saglabātās kopijas. Vai tiešām to vēlaties?  \"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Norādiet rezerves kopiju skaitu\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Maksimālais rezerves kopiju skaits ir jābūt lielākam par 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Nav iekļauts\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"noklusētais\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"noteiktais\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Tikai manuāli\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"tam nevajadzētu aizņemt pārāk daudz laika&hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"mēram Jūsu mājas lapas lielumu&hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Nākamā rezerves kopija tiks veidota %1$s pulksten %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"katras 12 stundas pulksten %1$s un %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"katru nedēļu %1$s pulksten %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"ik pa divām nedēļām  %1$s pulksten %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"katra mēneša %1$s datumā pulksten %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manuāli\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"serveris\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"nesaglabāt nevienu rezerves kopiju %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"saglabāt tikai pēdējo %1$s rezerves kopiju %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Izveidot rezerves kopiju %1$s %2$s %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress nevarēja izveidot rezerves kopiju Jūsu mājas lapai %1$s. \"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Kļūdas, kuras radās veidojot rezerves kopiju:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"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. \"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Ar sveicieniem,\\n\"\n\"BackUpWordPress Robots\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress ir izveidojis rezerves kopiju Jūsu mājas lapai %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Rezerves kopijai vajadzētu būtu epasta pielikumā.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Lai lejupielādētu izveidoto rezerves kopiju spiediet uz zemāk esošo saiti:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Ar Sveicieniem,\\n\"\n\"Priecīgais BackUpWordPress Robots\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Diemžēl rezerves kopija bija pārāk liela, lai to nosūtītu epastā.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Veido rezerves kopiju datubāzei\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Veidojam zip arhīvu… \"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Nepareizs rezerves kopijas formāts\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Invalid root path\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"1 rezerves kopija izveidot\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Kļūda veidojot rezerves kopiju\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"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.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Legacy\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"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.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress ir iestatījis Jūsu noklusētos grafikus.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Rezerves kopija %s netika izveidota\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Nosūtīt epasta paziņojumu uz %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"epasts %s ir norādīts nepareizi \"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Rezerves kopija tiks saspiesta, tāpēc tā aizņems mazāk vietas.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Epasta paziņojumi\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"katru stundu\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"katru dienu pulksten %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Skaits, cik rezerves kopijas tiks glabātas uz servera.\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Rezerves Kopiju Uzstādījumi\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Aizvērt\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Šī informācija attiecas uz versiju %1$s. Apskaties failu %2$s, lai iegūtu informāciju kas attiecas uz versiju %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Galvenā mape, kura tikai izveidota rezerves kopija. Pēc noklusējuma: %s\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"The capability to use when calling %1$s. Defaults to %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Tiks izmantos %1$s. Tas tiks izmantots lai arhivētu %2$s un %3$s ja tie būs pieejami.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress nepieciešams WordPress %s vai jaunāka versija.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Atcelt\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Tiks izmantots %1$s. Mēs izmantosim %2$s, lai veidotu rezerves kopiju, ja tas būs pieejams.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"Kā piemēram\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Drošais režīms\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Jūsu izvēlētā mape %1$s neeksistē, tāpēc rezerves kopija tika saglabāta mapē %2$s\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Jūsu izvēlētajā mapē %1$s nebija iespējams ierakstīt, tāpēc rezerves kopija tika saglabāta mapē \\\"%2$s.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"atcelt\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Iestatījumi\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Izņēmumi\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Lejupielādēt\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress ir gandrīz gatavs.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress konstatēja problēmas ar Jūsu janāko rezerves kopiju.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Datubāzi un failus\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Datubāze\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress ir konstatējis problēmas. \"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Norādiet rezerves kopijas veidu\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Nepareizs rezerves kopijas formāts\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Grafiks nevar palikt tukšs\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Nesaderīgs grafiks\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Maksimālajam rezerves kopiju skaitu jānorāda kā numuru\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s nesakrīt ar nevienu failu. \"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"Pievienot grafiku\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Izmērs\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Veids\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Darbības\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Codex var palīdzēt\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Vieta kurā tiks glabātas Jūsu rezerves kopijas. Pēc noklusējuma: %s\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"datubāze\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"faili\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Ar komatiem atdalīts saraksts ar mapēm, kuras netiks iekļautas rezerves kopijā. \"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Pārvaldīt Rezerves Kopijas\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Rezerves kopijas\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Jūs neizmantojat jaunāko BackUpWordPress versiju.\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Konstantes\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Vairāk informācijai:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Atbalsta Forums\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Palīdzi ar tulkojumu\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Jums nepieciešams salabot augstāk minētās problēmas, lai BackUpWordPress varētu sākt strādāt.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Priekšskatījums\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Izņēmumi\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Izdzēst\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Nav iekļauts \"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Iekļauts\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Nenolasāms\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Failiem kurus nevar atvērt nav iespējams izveidot rezerves kopijas\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Jūsu mājas lapa aizņem %s. Rezerves kopija tiks saspiest, lai samazinātu tās izmēru.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Ko saglabāt\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Gan datubāzi, gan failus\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Tikai failus\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Tikai datubāzi\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Faili\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Pārvaldīt izņēmumus\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Cik bieži\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Atjaunināt\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"ik stundu, %s minūtes pāri\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Palaist tulīt\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Izdzēst\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Backup von %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-nl_NL.po",
    "content": "# Translation of 2.x in Dutch\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: nl_NL\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"De tijd waarop je schema zou moeten draaien, Standaard is dat %s\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Weet je zeker dat je dit schema wilt verwijderen? Alle backups van dit schema zullen ook worden verwijderd.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"'Cancel\\\"om terug te gaan, 'OK' om te verwijderen.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Weet je zeker dat je deze backup wilt verwijderen?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Weet je zeker dat je deze uitzonderingsregel wilt verwijderen?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"bijv.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"Annuleren\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Instellingen\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Exclusief\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Download\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress is bijna klaar.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress heeft problemen ondervonden met je laatste back-up.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress heeft een probleem ondervonden.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Grootte\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Acties\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"De Codex kan hulp bieden.\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Het pad naar de map waar je de back up bestanden wilt bewaren, standaard naar %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"database\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"bestanden\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Een door komma's gescheiden lijst van bestanden of mappen die uitgesloten worden, de backup(s) map is automatisch uitgesloten.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Beheer back ups\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Back ups\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Je gebruikt niet de laatste stabiele versie van BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"Veel gestelde vragen\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Constanten\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Voor meer informatie:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Ondersteunings forums\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Vertaal hulp\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Je moet de hierboven beschreven problemen oplossen voordat BackUpWordPress kan beginnen.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Verwijderen\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Back up van %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-pl_PL.po",
    "content": "# Translation of 2.x in Polish\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: pl_PL\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Wyślij e-mail do wsparcia technicznego\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nowa zasada wykluczeń\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Oto odpowiedź z serwera:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"Jeśli potrzebujesz pomocy by uruchomieniu wtyczki, sprawdź FAQ klikając na pomoc w górnym prawym rogu tej strony.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Rozpoczynam wykonywanie kopii zapasowej\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Zrzucam bazę danych %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Sprawdzam poprawność zrzutu bazy %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Tworzę archiwum ZIP %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Sprawdzam poprawność archiwum ZIP %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Kończę wykonywanie kopii zapasowej\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress może nie działać jeśli PHP działa z włączonym %s\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Godzina o której powinny się uruchamiać zadania. Domyślnie to %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Czy na pewno chcesz usunąć ten harmonogram? Wszystkie jego kopie zapasowe również zostaną usunięte.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"'Anuluj' by powrócić, 'OK' by usunąć.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Czy na pewno chcesz usunąć tą kopię zapasową?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Czy na pewno chcesz usunąć tę regułę wykluczającą?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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ć?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Maksymalna liczba kopii nie może być pusta\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Maksymalna liczba kopii musi być większa od 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Wyklucz\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"domyślnie\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"zdefiniowane\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Tylko ręcznie\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"to nie powinno długo potrwać long&hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"obliczam rozmiar Twojej strony&hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Następna kopia zapasowa zostanie wykonana %1$s o godzinie %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"co 12 godzin o %1$s oraz %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"cotygodniowo w %1$s o %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"co dwa tygodnie w %1$s o %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"%1$s. każdego miesiąca o %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"ręcznie\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"tym serwerze\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"nie przechowuj żadnych kopii na %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"przechowuj tylko ostatnie %1$s kopii zapasowych na %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Wykonaj kopię zapasową moich %2$s o rozmiarze %1$s %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress nie był w stanie wykonać kopii zapasowej Twojej strony %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Oto błędy na które się natknęliśmy:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"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\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Z poważaniem,\\n\"\n\"skruszony automat mailingowy BackUpWordPress \"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress wykonal kopię zapasową Twojej strony %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Kopia zapasowa powinna być dołączona do tej wiadomości e-mail.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Mozesz pobrać kopię zapasową klikając odnośnik poniżej:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Z poważaniem,\\n\"\n\"szczęśliwy automat mailingowy BackUpWordPress \"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Niestety kopia zapasowa była zbyt duża by dołączyć ją do tej wiadomości e-mail.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Kopia zapasowa: zrzucam bazę danych...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Kopia zapasowa: Kompresuję wszystko...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Nieprawidłowa ścieżka kopii zapasowej\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Nieprawidłowa ścieżka katalogu głównego\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Wykonywanie kopii zapasowych zakończone:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Wykonywanie kopii zapasowych nie powiodło się\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"Domyślnie BackUpWordPress wykonuje codziennie kopię zapasową bazy danych oraz cotygodniowo kopię bazy danych i plików. Możesz zmienić te harmonogramy.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Zgodność\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Twój katalog kopii zapasowych nie jest zapisywalny, wykonaj polecenie %1$s lub %2$s, albo ustaw uprawnienia własnoręcznie.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress ustawił Twoje domyślne harmonogramy.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Kopia zapasowa %s nie powiodła się\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Wyślij powiadomienie e-mail do %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s nie jest poprawnym adresem e-mail\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Kopie zapasowe zostaną skompresowane i powinny być mniejsze niż to.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Powiadom e-mailem\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"co godzinę o\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"codziennie o %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Liczba kopii zapasowych, które mają być przechowywane na tym serwerze. \"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Ustawienia harmonogramu\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Zamknij\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Informacje poniżej są dla wersji %1$s. Zobacz plik %2$s dla informacji specyficznych dla wersji %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"katalog główny, który jest uwzględniony w kopii zapasowej. Domyślnie to %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Możliwość użycia przy wywołaniu %1$s. Domyślnie to %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Ścieżka do pliku wykonywalnego %1$s. Będzie używane przy kompresowaniu %2$s oraz %3$s, jeśli jest dostępne.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress wymaga WordPress w wersji %s albo nowszej.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Anuluj\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Ścieżka do pliku wykonywalnego %1$s. Będzie używane przy %2$s kopii zapasowej, jeśli jest dostępne.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"np.\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"Możesz %1$s którekolwiek %2$s w Twoim %3$s by kontrolować zaawansowane ustawienia. %4$s. Zdefiniowane %5$s zostanie podświetlone.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/pl/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Tryb bezpieczny\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Twój katalog kopii zapasowych %1$s nie istnieje i nie może zostać utworzony, Twoje kopie zapasowe zostaną zapisane w %2$s.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Twój katalog kopii zapasowych %1$s nie jest zapisywalny, Twoje kopie zapasowe zostaną zapisane w %2$s.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"anuluj\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Ustawienia\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Wykluczenia\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Pobierz\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress prawie skończył.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress wykrył problemy z Twoją ostatnią kopią zapasową.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Baza danych i pliki\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Baza danych\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress wykrył problem.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Typ kopii zapasowej nie może być pusty\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Nieprawidłowy typ kopii zapasowej\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Harmonogram nie może być pusty\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Nieprawidłowy harmonogram\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Maksymalna liczna kopii musi być liczbą\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s nie pasuje do żadnych plików.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"dodaj harmonogram\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Rozmiar\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Typ\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Akcje\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Codex może pomóc\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Ścieżka do folderu w którym chciałbyś trzymać swoje kopie zapasowe, domyślnie to %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"baza danych\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"pliki\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Lista rozdzielana przecinkiem plików lub katalogów, które zostaną wykluczone. Katalog kopii zapasowych jest wykluczony automatycznie.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Zarządzaj kopiami\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Kopie zapasowe\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Nie korzystasz z najnowszej, stabilnej wersji BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Stałe\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Więcej informacji:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Forum wsparcia technicznego\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Pomoc w tłumaczeniu\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Musisz rozwiązać problemy wymienione powyżej nim będzie można uruchomić BackUpWordPress.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Podgląd\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Zasady wykluczeń\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Usuń\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Wykluczone\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Zawarte\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Nieczytelne\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Pliki, których nie można odczytać, nie mogą być uwzględnione w kopii zapasowej.\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Twoja strona ma rozmiar %s. Kopie zapasowe zostaną skompresowane by zmniejszyć ich rozmiar.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Uwzględnij w kopii\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Bazę danych i pliki\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Tylko pliki\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Tylko bazę danych\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Pliki\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Zarządzaj wykluczeniami\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Harmonogram\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Aktualizuj\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"co godzinę, %s minut po pełnej godzinie\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Uruchom teraz\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Usuń\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Kopia zapasowa %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Plik %s zapewnia że inny ludzie nie będą mogli pobrać Twoich kopii zapasowych.\"\n"
  },
  {
    "path": "languages/backupwordpress-pt_BR.po",
    "content": "msgid \"\"\r\nmsgstr \"\"\r\n\"Project-Id-Version: BackUpWordPress v3.1.3\\n\"\r\n\"Report-Msgid-Bugs-To: \\n\"\r\n\"POT-Creation-Date: \\n\"\r\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\r\n\"Last-Translator: \\n\"\r\n\"Language-Team: \\n\"\r\n\"MIME-Version: 1.0\\n\"\r\n\"Content-Type: text/plain; charset=UTF-8\\n\"\r\n\"Content-Transfer-Encoding: 8bit\\n\"\r\n\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\r\n\"X-Generator: Poedit 1.8.2\\n\"\r\n\"X-Poedit-SourceCharset: utf-8\\n\"\r\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\"\r\n\"X-Textdomain-Support: yes\\n\"\r\n\"Language: pt_BR\\n\"\r\n\"X-Poedit-SearchPath-0: .\\n\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups-table.php:35\r\nmsgid \"This is where your backups will appear once you have some.\"\r\nmsgstr \"Aqui será onde os seus backups irão aparecer assim que você tiver algum.\"\r\n\r\n# @ backupwordpress\r\n#: admin/enable-support.php:3\r\nmsgid \"Enable BackUpWordPress Support\"\r\nmsgstr \"Ativar Suporte do BackUpWordPress\"\r\n\r\n# @ backupwordpress\r\n#: admin/enable-support.php:5\r\n#, php-format\r\nmsgid \"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:\"\r\nmsgstr \"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:\"\r\n\r\n# @ backupwordpress\r\n#: admin/enable-support.php:58\r\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\r\nmsgstr \"Você pode desativar o suporte no futuro desativando o BackUpWordPress.\"\r\n\r\n# @ backupwordpress\r\n#: admin/enable-support.php:60\r\nmsgid \"No thanks\"\r\nmsgstr \"Não obrigado\"\r\n\r\n# @ backupwordpress\r\n#: admin/enable-support.php:61\r\nmsgid \"Yes I want to enable support\"\r\nmsgstr \"Sim eu quero ativar o suporte\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups.php:26\r\nmsgid \"Support\"\r\nmsgstr \"Suporte\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:250\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a valid integer\"\r\nmsgstr \"Argumento 1 de %s deve ser um número inteiro válido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:636\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\r\nmsgstr \"Argumento 1 de %s deve ser uma recorrência cron válida ou \\\"manualmente\\\"\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:1105\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a non empty string\"\r\nmsgstr \"Argumento 1 de %s não deve ser uma string vazia\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:1115\r\nmsgid \"That backup wasn't created by this schedule\"\r\nmsgstr \"Esse backup não foi criado por este agendamento\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-services.php:81\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a valid filepath\"\r\nmsgstr \"Argumento 1 de %s deve ser um caminho de arquivo válido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-services.php:97\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a registered service\"\r\nmsgstr \"Argumento 1 de %s deve ser um serviço registrado\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-services.php:115 classes/deprecated.php:81\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a valid class\"\r\nmsgstr \"Argumento 1 de %s deve ser uma classe válida\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:256\r\nmsgid \"You can only delete directories inside your WordPress installation\"\r\nmsgstr \"Você só pode deletar pastas dentro da sua instalação do Wordpress\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:63\r\n#, php-format\r\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\r\nmsgstr \"O tamanho máximo do seu backup que será anexado aos e-mails de notificação. O padrão é %s.\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:233\r\nmsgid \"Once Hourly\"\r\nmsgstr \"Um vez a cada hora\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:234\r\nmsgid \"Twice Daily\"\r\nmsgstr \"Duas vezes por dia\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:235\r\nmsgid \"Once Daily\"\r\nmsgstr \"Uma vez por dia\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:236\r\nmsgid \"Once Weekly\"\r\nmsgstr \"Uma vez por semana\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:238\r\nmsgid \"Once Monthly\"\r\nmsgstr \"Uma vez por mês\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:765 functions/interface.php:249\r\nmsgid \"Starting Backup\"\r\nmsgstr \"Iniciando Backup\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:899\r\n#, php-format\r\nmsgid \"Dumping Database %s\"\r\nmsgstr \"Realizando o dumping do Banco de Dados %s\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:904\r\n#, php-format\r\nmsgid \"Verifying Database Dump %s\"\r\nmsgstr \"Verificando o Dump do Banco de Dados %s\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:909\r\n#, php-format\r\nmsgid \"Creating zip archive %s\"\r\nmsgstr \"Criando arquivo ZIP %s\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:914\r\n#, php-format\r\nmsgid \"Verifying Zip Archive %s\"\r\nmsgstr \"Verificando arquivo ZIP %s\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:919\r\nmsgid \"Finishing Backup\"\r\nmsgstr \"Finalizando Backup\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:128\r\n#, php-format\r\nmsgid \"%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.\"\r\nmsgstr \"%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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:113\r\n#, php-format\r\nmsgid \"The time that your schedules should run. Defaults to %s.\"\r\nmsgstr \"O horário em que seus agendamentos devem ser executados. O padrão é %s.\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:242\r\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\r\nmsgstr \"Você tem certeza de que quer apagar este agendamento? Todos os backups já realizados nesta programação também serão excluídos.\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:242 backupwordpress.php:243 backupwordpress.php:244\r\n#: backupwordpress.php:245\r\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\r\nmsgstr \"'Cancelar' para voltar, 'OK' para apagar.\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:243\r\nmsgid \"Are you sure you want to delete this backup?\"\r\nmsgstr \"Você tem certeza que quer apagar este backup?\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:244\r\nmsgid \"Are you sure you want to remove this exclude rule?\"\r\nmsgstr \"Você tem certeza de que deseja remover esta regra de exclusão?\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:245\r\nmsgid \"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?\"\r\nmsgstr \"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?\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:376\r\nmsgid \"Max backups can't be empty\"\r\nmsgstr \"A quant. de backups não pode ficar vazia\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:384\r\nmsgid \"Max backups must be greater than 0\"\r\nmsgstr \"A quant. de backups precisa ser maior que 0\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:60\r\nmsgid \"Manual Only\"\r\nmsgstr \"Apenas Manualmente\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:155\r\nmsgid \"this shouldn't take long&hellip;\"\r\nmsgstr \"isso não deve demorar muito&hellip;\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:35\r\n#, php-format\r\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\r\nmsgstr \"a cada 12 horas às %1$s &amp; %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:41\r\n#, php-format\r\nmsgid \"weekly on %1$s at %2$s\"\r\nmsgstr \"semanalmente no(a) %1$s às %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:53\r\n#, php-format\r\nmsgid \"on the %1$s of each month at %2$s\"\r\nmsgstr \"no %1$s de cada mês às %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:59 admin/schedule-sentence.php:65\r\nmsgid \"manually\"\r\nmsgstr \"manualmente\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:70\r\nmsgid \"this server\"\r\nmsgstr \"neste servidor\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:181\r\n#, php-format\r\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\r\nmsgstr \"O BackUpWordPress não foi capaz de realizar o backup do seu site %1$s.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:181\r\nmsgid \"Here are the errors that we're encountered:\"\r\nmsgstr \"Aqui estão os erros que foram encontrados:\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:181\r\n#, php-format\r\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\r\nmsgstr \"Se os erros acima parecem tão esquisitos quanto Marcianos, encaminhe este email para %3$s e iremos dar uma olhada\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:181\r\nmsgid \"\"\r\n\"Kind Regards,\\n\"\r\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\r\nmsgstr \"\"\r\n\"Atenciosamente, \\n\"\r\n\"O Apologético Robô Carteiro do BackUpWordPress\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\r\n#, php-format\r\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\r\nmsgstr \"O BackUpWordPress completou a realização de um backup do seu site %1$s.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:194\r\nmsgid \"The backup file should be attached to this email.\"\r\nmsgstr \"O arquivo de backup será anexado neste email.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\r\nmsgid \"You can download the backup file by clicking the link below:\"\r\nmsgstr \"Você pode realizar o download do arquivo de backup clicando no link abaixo:\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:194 classes/class-email-service.php:203\r\nmsgid \"\"\r\n\"Kind Regards,\\n\"\r\n\"The Happy BackUpWordPress Backup Emailing Robot\"\r\nmsgstr \"\"\r\n\"Atenciosamente,\\n\"\r\n\"O Robô Feliz Entregador de Backups do BackUpWordPress\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:203\r\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\r\nmsgstr \"Infelizmente o arquivo de backup era muito grande para ser anexado nesta mensagem de email.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:50\r\nmsgid \"Backup: Dumping database...\"\r\nmsgstr \"Backup: Realizando o dumping do banco de dados...\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:54\r\nmsgid \"Backup: Zipping everything up...\"\r\nmsgstr \"Backup: Compactando tudo...\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:70\r\nmsgid \"Invalid backup path\"\r\nmsgstr \"Caminho de backup inválido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:75\r\nmsgid \"Invalid root path\"\r\nmsgstr \"Caminho do diretório raiz inválido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:106\r\nmsgid \"Backup Complete: \"\r\nmsgstr \"Backup Concluído: \"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backupwordpress-wp-cli-command.php:108\r\nmsgid \"Backup Failed\"\r\nmsgstr \"Falha no Backup\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:218\r\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:233\r\nmsgid \"Legacy\"\r\nmsgstr \"Legado\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:124\r\n#, php-format\r\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\r\nmsgstr \"Seu diretório de backups não é gravável. Execute o comando %1$s ou %2$s, ou defina as permissões você mesmo.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:120\r\n#, php-format\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:218\r\nmsgid \"BackUpWordPress has setup your default schedules.\"\r\nmsgstr \"O BackUpWordPress configurou seus agendamentos padrão.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:179 classes/class-webhook-service.php:59\r\n#, php-format\r\nmsgid \"Backup of %s Failed\"\r\nmsgstr \"Backup de %s Falhou\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:82\r\n#, php-format\r\nmsgid \"Send an email notification to %s\"\r\nmsgstr \"<br /> Enviar uma notificação por email para %s\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:117\r\n#, php-format\r\nmsgid \"%s isn't a valid email\"\r\nmsgstr \"%s não é um email válido\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:153\r\nmsgid \"Backups will be compressed and should be smaller than this.\"\r\nmsgstr \"Os backups serão compactados e ficarão menores que isso.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:28\r\nmsgid \"Email notification\"\r\nmsgstr \"Notificação por email\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:18\r\nmsgid \"hourly on the hour\"\r\nmsgstr \"de hora em hora\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:24\r\n#, php-format\r\nmsgid \"daily at %s\"\r\nmsgstr \"diariamente às %s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:155\r\nmsgid \"Number of backups to store on this server\"\r\nmsgstr \"Número de backups para armazenar\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:97\r\n#, php-format\r\nmsgid \"The root directory that is backed up. Defaults to %s.\"\r\nmsgstr \"O diretório raiz onde será realizado o backup. O padrão é %s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:81\r\n#, php-format\r\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\r\nmsgstr \"A capacidade que o usuário deve ter ao solicitar %1$s. O padrão é %2$s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:49\r\n#, php-format\r\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\r\nmsgstr \"O caminho para executar a função %1$s. Será usado para compactar seus %2$s e %3$s, se disponível.\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:241\r\nmsgid \"Cancel\"\r\nmsgstr \"Cancelar\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:33\r\n#, php-format\r\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\r\nmsgstr \"O caminho para executar o comando %1$s. Será usado para parte do backup do seu %2$s, se disponível.\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49\r\n#: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97\r\n#: admin/constants.php:113 classes/class-email-service.php:63\r\nmsgid \"e.g.\"\r\nmsgstr \"ex:\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:3\r\n#, php-format\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:128\r\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\r\nmsgstr \"http://php.net/manual/pt_BR/features.safe-mode.php\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:128\r\nmsgid \"Safe Mode\"\r\nmsgstr \"Safe Mode (Modo Seguro)\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:145\r\n#, php-format\r\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:149\r\n#, php-format\r\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:250\r\nmsgid \"cancel\"\r\nmsgstr \"cancelar\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:1 admin/schedule-settings.php:9\r\nmsgid \"Settings\"\r\nmsgstr \"Configurações\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-settings.php:15\r\nmsgid \"Excludes\"\r\nmsgstr \"Exclusões\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:31\r\nmsgid \"Download\"\r\nmsgstr \"Download\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:68\r\nmsgid \"BackUpWordPress detected issues with your last backup.\"\r\nmsgstr \"O BackUpWordPress detectou problemas com o seu último backup.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:218\r\nmsgid \"Database and Files\"\r\nmsgstr \"Banco de Dados e Arquivos\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:226\r\nmsgid \"Database\"\r\nmsgstr \"Banco de dados\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:736 admin/actions.php:742\r\nmsgid \"BackUpWordPress has detected a problem.\"\r\nmsgstr \"O BackUpWordPress detectou um problema.\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:269\r\nmsgid \"Backup type cannot be empty\"\r\nmsgstr \"O tipo de backup não pode ficar vazio\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:273\r\nmsgid \"Invalid backup type\"\r\nmsgstr \"Tipo de backup inválido\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:287\r\nmsgid \"Schedule cannot be empty\"\r\nmsgstr \"O intervalo não pode ficar vazio\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:291\r\nmsgid \"Invalid schedule\"\r\nmsgstr \"Agendamento inválido\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:380\r\nmsgid \"Max backups must be a number\"\r\nmsgstr \"A quant. de backups precisa ser um número\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups.php:22\r\nmsgid \"add schedule\"\r\nmsgstr \"agendar novo backup\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups-table.php:8 admin/schedule-form-excludes.php:98\r\nmsgid \"Size\"\r\nmsgstr \"Tamanho\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups-table.php:9 admin/schedule-form-excludes.php:100\r\nmsgid \"Type\"\r\nmsgstr \"Tipo\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups-table.php:10\r\nmsgid \"Actions\"\r\nmsgstr \"Ações\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:3\r\nmsgid \"The Codex can help\"\r\nmsgstr \"O Codex pode ajudar\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:17\r\n#, php-format\r\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\r\nmsgstr \"O caminho do diretório que você gostaria de armazenar os arquivos de backup. O padrão é %s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:33 admin/constants.php:49\r\nmsgid \"database\"\r\nmsgstr \"banco de dados\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:49\r\nmsgid \"files\"\r\nmsgstr \"arquivos\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:65\r\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:12 admin/menu.php:14\r\nmsgid \"Manage Backups\"\r\nmsgstr \"Gerenciar Backups\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:12 admin/menu.php:14 admin/menu.php:39\r\nmsgid \"Backups\"\r\nmsgstr \"Backups\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:67\r\nmsgid \"FAQ\"\r\nmsgstr \"FAQ\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:3 admin/menu.php:69\r\nmsgid \"Constants\"\r\nmsgstr \"Constantes\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:86\r\nmsgid \"For more information:\"\r\nmsgstr \"Para mais informações:\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:88\r\nmsgid \"Support Forums\"\r\nmsgstr \"Fóruns de suporte\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:89\r\nmsgid \"Help with translation\"\r\nmsgstr \"Ajude a traduzir\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:315\r\nmsgid \"Excluded\"\r\nmsgstr \"Excluído\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:311\r\nmsgid \"Unreadable\"\r\nmsgstr \"Ilegível\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:31\r\nmsgid \"Backup\"\r\nmsgstr \"Backup\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:38\r\nmsgid \"Both Database &amp; files\"\r\nmsgstr \"Banco de dados e arquivos\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:40\r\nmsgid \"Files only\"\r\nmsgstr \"Apenas arquivos\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:42\r\nmsgid \"Database only\"\r\nmsgstr \"Apenas banco de dados\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:222\r\nmsgid \"Files\"\r\nmsgstr \"Arquivos\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:53\r\nmsgid \"Schedule\"\r\nmsgstr \"Intervalo\"\r\n\r\n# @ backupwordpress\r\n#: backupwordpress.php:240\r\nmsgid \"Update\"\r\nmsgstr \"Atualizar\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:18\r\n#, php-format\r\nmsgid \"hourly at %s minutes past the hour\"\r\nmsgstr \"de hora em hora, passado %s minutos de cada hora\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-settings.php:7\r\nmsgid \"Run now\"\r\nmsgstr \"Executar agora\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-settings.php:27 functions/interface.php:34\r\nmsgid \"Delete\"\r\nmsgstr \"Excluir\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:189\r\n#, php-format\r\nmsgid \"Backup of %s\"\r\nmsgstr \"Backup de %s\"\r\n\r\n# @ hmbkp\r\n#: classes/class-path.php:249\r\n#, php-format\r\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\r\nmsgstr \"Este arquivo %s garante que nenhuma outra pessoa consiga fazer o download dos seus arquivos de backup.\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:215\r\nmsgid \"The schedule ID was not provided. Aborting.\"\r\nmsgstr \"O ID de agendamento não foi fornecido. Cancelando...\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:305\r\nmsgid \"Day of the week must be a valid lowercase day name\"\r\nmsgstr \"O dia da semana deve ser um nome da semana em minúsculo\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:324\r\nmsgid \"Day of month must be between 1 and 31\"\r\nmsgstr \"O dia do mês deve ser entre 1 e 31\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:343\r\nmsgid \"Hours must be between 0 and 23\"\r\nmsgstr \"As horas devem ser entre 0 e 23\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:362\r\nmsgid \"Minutes must be between 0 and 59\"\r\nmsgstr \"Os minutos devem ser entre 0 e 59\"\r\n\r\n# @ backupwordpress\r\n#: admin/actions.php:736 admin/actions.php:742\r\n#, php-format\r\nmsgid \"%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.\"\r\nmsgstr \"%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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/backups.php:32\r\nmsgid \"Enable Support\"\r\nmsgstr \"Ativar Suporte\"\r\n\r\n# @ backupwordpress\r\n#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46\r\n#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94\r\n#: admin/constants.php:110 classes/class-email-service.php:60\r\n#, php-format\r\nmsgid \"You've set it to: %s\"\r\nmsgstr \"Você configurou isso para: %s\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:2\r\nmsgid \"Where does BackUpWordPress store the backup files?\"\r\nmsgstr \"Onde é que BackUpWordPress armazenar os arquivos de backup?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:4\r\nmsgid \"Backups are stored on your server in <code>/wp-content/backups</code>, you can change the directory.\"\r\nmsgstr \"Backups são armazenados no seu servidor em <code> / wp-content / backups </ code>, você pode alterar o diretório.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:6\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:8\r\nmsgid \"What if I want to back up my site to another destination?\"\r\nmsgstr \"E se eu quiser fazer o backup do meu site para outro destino?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:10\r\nmsgid \"BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, Azure, DreamObjects and FTP/SFTP. Check it out here: <a href=\\\"http://bwp.hmn.md/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=freeplugin\\\" title=\\\"BackUpWordPress Homepage\\\" target=\\\"_blank\\\">https://bwp.hmn.md</a>\"\r\nmsgstr \"BackUpWordPress Pro suporta Dropbox, Google Drive, Amazon S3, Rackspace, Azure, DreamObjects e FTP / SFTP. Confira aqui: <a href=\\\"http://bwp.hmn.md/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=freeplugin\\\" title=\\\"BackUpWordPress Site Oficial\\\" target=\\\"_blank\\\">https://bwp.hmn.md</a>\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:12\r\nmsgid \"How do I restore my site from a backup?\"\r\nmsgstr \"Como eu recupero meu site usando um backup?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:14\r\nmsgid \"You need to download the latest backup file either by clicking download on the backups page or via <code>FTP</code>. <code>Unzip</code> 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 <code>phpMyAdmin</code>).\"\r\nmsgstr \"Você precisa fazer o download do arquivo mais recente de backup clicando em <b>download</b> na página de backups ou via <code>FTP</code>. <code>Descompactar</code> 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 <code>phpMyAdmin</code>).\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:16\r\nmsgid \"See this guide for more details - <a href=\\\"https://bwp.hmn.md/support-center/restore-backup/\\\" title=\\\"Go to support center\\\" target=\\\"_blank\\\">How to restore from backup</a>.\"\r\nmsgstr \"Veja este guia para mais detalhes - <a href=\\\"https://bwp.hmn.md/support-center/restore-backup/\\\" title=\\\"Ir para o centro de suporte\\\" target=\\\"_blank\\\">Como recuperar meu site usando backups</a>.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:18\r\nmsgid \"Does BackUpWordPress back up the backups directory?\"\r\nmsgstr \"O BackUpWordPress faz uma copia dos diretórios de backups?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:20\r\nmsgid \"No.\"\r\nmsgstr \"Não.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:22\r\nmsgid \"I'm not receiving my backups by email?\"\r\nmsgstr \"Não estou recebendo meus backups por e-mail e agora?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:24\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:26\r\nmsgid \"How many backups are stored by default?\"\r\nmsgstr \"Quantos backups são mantidos por padrão?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:28\r\nmsgid \"BackUpWordPress stores the last 10 backups by default.\"\r\nmsgstr \"BackUpWordPress mantém os últimos 10 backups por padrão.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:30\r\nmsgid \"How long should a backup take?\"\r\nmsgstr \"Quanto tempo deve demorar um backup?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:32\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:34\r\nmsgid \"What do I do if I get the wp-cron error message?\"\r\nmsgstr \"O que eu faço se eu receber a mensagem de erro do wp-cron?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:36\r\nmsgid \"The issue is that your <code>wp-cron.php</code> is not returning a <code>200</code> 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.\"\r\nmsgstr \"O problema é que seu <code> wp-cron.php </ code> não está retornando um <code> 200 </ code> 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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:38\r\nmsgid \"There are some things you can test to confirm this is the issue.\"\r\nmsgstr \"Há algumas coisas que você pode testar para confirmar se esta é a questão.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:40\r\nmsgid \"Are scheduled posts working? (They use wp-cron as well ). \"\r\nmsgstr \"Os posts de agendamento estão funcinando? (Eles usam wp-cron também).\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:42\r\nmsgid \"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around).\"\r\nmsgstr \"Você está hospedado no Heart Internet? (wp-cron pode não ser suportadas por Heart Internet, veja abaixo para o work-around).\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:44\r\nmsgid \"If you click manual backup does it work?\"\r\nmsgstr \"Se você clicar em backup manual funciona?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:46\r\nmsgid \"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your <code>wp-config.php</code>, do automatic backups work?\"\r\nmsgstr \"Adicionando <code>define( 'ALTERNATE_WP_CRON', true );</code> ao seu <code>wp-config.php</code>, os backups automáticos funcionam?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:48\r\nmsgid \"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?\"\r\nmsgstr \"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?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:50\r\nmsgid \"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\"\r\nmsgstr \"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\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:52\r\nmsgid \"How to get BackUpWordPress working in Heart Internet\"\r\nmsgstr \"Como fazer BackUpWordPress funcionar em Heart Internet\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:54\r\nmsgid \"The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the space between php5 and the location of the file). The file <code>wp-cron.php</code> <code>chmod</code> must be set to <code>711</code>.\"\r\nmsgstr \"O script a ser inserido no Heart Internet cPanel é: <code>/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note o espaço entre php5 e o local do arquivo). O arquivo <code> wp-cron.php </ code> <code> chmod </ code> deve ser definido como <code> 711 </ code>.\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:56\r\nmsgid \"My backups seem to be failing?\"\r\nmsgstr \"Meus backups parecem estar falhando?\"\r\n\r\n# @ backupwordpress\r\n#: admin/faq.php:58\r\nmsgid \"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\"\r\nmsgstr \"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\"\r\n\r\n# @ backupwordpress\r\n#: admin/menu.php:79\r\nmsgid \"Server Info\"\r\nmsgstr \"Informações do servidor\"\r\n\r\n# @ backupwordpress\r\n#: admin/page.php:7\r\n#, php-format\r\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory%2$s.\"\r\nmsgstr \"Se você acha BackUpWordPress útil, por favor %1$s envie sua avaliação no diretório de plugins %2$s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:5\r\nmsgid \"Currently Excluded\"\r\nmsgstr \"Excluídos Atualmente\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:40\r\nmsgid \"Default rule\"\r\nmsgstr \"Regra padrão\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:44\r\nmsgid \"Defined in wp-config.php\"\r\nmsgstr \"Definido no wp-config.php\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:48\r\nmsgid \"Stop excluding\"\r\nmsgstr \"Parar exclusão\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:64\r\nmsgid \"Directory Listing\"\r\nmsgstr \"Listagem de Diretório\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:66\r\nmsgid \"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.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:97\r\nmsgid \"Name\"\r\nmsgstr \"Nome\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:99\r\nmsgid \"Permissions\"\r\nmsgstr \"Permissões\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:101\r\nmsgid \"Status\"\r\nmsgstr \"Situação\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:158 admin/schedule-form-excludes.php:269\r\nmsgid \"Refresh\"\r\nmsgstr \"Atualizar\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:175 admin/schedule-form-excludes.php:293\r\nmsgid \"Symlink\"\r\nmsgstr \"Symlink\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:179 admin/schedule-form-excludes.php:297\r\nmsgid \"Folder\"\r\nmsgstr \"Pasta\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:269\r\nmsgid \"Recalculate the size of this directory\"\r\nmsgstr \"Recalcular o tamanho dessa pasta\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:301\r\nmsgid \"File\"\r\nmsgstr \"Arquivo\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:311\r\nmsgid \"Unreadable files won't be backed up.\"\r\nmsgstr \"Não será feito o backup de arquivos ilegíveis.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:326\r\nmsgid \"Exclude &rarr;\"\r\nmsgstr \"Excluir &rarr;\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form-excludes.php:345 admin/schedule-form.php:185\r\n#: admin/schedule-settings.php:81\r\nmsgid \"Done\"\r\nmsgstr \"Pronto\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:66\r\nmsgid \"display\"\r\nmsgstr \"exibir\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:85\r\nmsgid \"Start Day\"\r\nmsgstr \"Dia Inicial\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:93\r\nmsgid \"Monday\"\r\nmsgstr \"Segunda-feira\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:94\r\nmsgid \"Tuesday\"\r\nmsgstr \"Terça-feira\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:95\r\nmsgid \"Wednesday\"\r\nmsgstr \"Quarta-feira\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:96\r\nmsgid \"Thursday\"\r\nmsgstr \"Quinta-feira\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:97\r\nmsgid \"Friday\"\r\nmsgstr \"Sexta-feira\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:98\r\nmsgid \"Saturday\"\r\nmsgstr \"Sábado\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:99\r\nmsgid \"Sunday\"\r\nmsgstr \"Domingo\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:117\r\nmsgid \"Start Day of Month\"\r\nmsgstr \"Dia Inicial do Mês\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:129\r\nmsgid \"Start Time\"\r\nmsgstr \"Hora de início\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:138\r\nmsgid \"Hours\"\r\nmsgstr \"Horas\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:142\r\nmsgid \"Minutes\"\r\nmsgstr \"Minutos\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:146\r\nmsgid \"The second backup will run 12 hours after the first\"\r\nmsgstr \"O segundo backup será iniciado 12 horas depois do primeiro\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:164\r\nmsgid \"Past this limit older backups will be deleted automatically.\"\r\nmsgstr \"Passado este limite, os backups mais antigos serão excluídos automaticamente.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-form.php:167\r\n#, php-format\r\nmsgid \"This schedule will store a maximum of %s of backups.\"\r\nmsgstr \" Este agendamento irá manter no máximo um total de %s em backups.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:11\r\n#, php-format\r\nmsgid \"The next backup will be on %1$s at %2$s %3$s\"\r\nmsgstr \"O próximo backup será em %1$s às %2$s %3$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:47\r\n#, php-format\r\nmsgid \"biweekly on %1$s at %2$s\"\r\nmsgstr \"quinzenal em %1$s às %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:78\r\n#, php-format\r\nmsgid \"store the most recent backup in %s\"\r\nmsgstr \"manter o backup mais recente em %s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:84\r\nmsgid \"don't store any backups in on this server\"\r\nmsgstr \"não manter nenhum backup neste servidor\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:90\r\n#, php-format\r\nmsgid \"store the last %1$s backups in %2$s\"\r\nmsgstr \"manter os ultimos %1$s backups em %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:118\r\n#, php-format\r\nmsgctxt \"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to store\"\r\nmsgid \"Backup my %1$s %2$s %3$s, %4$s.\"\r\nmsgstr \"Copiar meu %1$s %2$s %3$s, %4$s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:121\r\n#, php-format\r\nmsgid \"%s. \"\r\nmsgstr \"%s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:125\r\n#, php-format\r\nmsgid \"Send a copy of each backup to %s.\"\r\nmsgstr \"Enviar uma copia de cada backup para %s.\"\r\n\r\n# @ backupwordpress\r\n#: admin/schedule-sentence.php:155\r\nmsgid \"calculating the size of your backup&hellip;\"\r\nmsgstr \"calculando o tamanho do seu backup&hellip;\"\r\n\r\n# @ default\r\n#: admin/server-info.php:43\r\n#, php-format\r\nmsgid \"%1$s - %2$s\"\r\nmsgstr \"%1$s - %2$s\"\r\n\r\n# @ backupwordpress\r\n#: admin/upsell.php:3\r\nmsgid \"Backup to\"\r\nmsgstr \"Enviar backup para \"\r\n\r\n# @ backupwordpress\r\n#: admin/upsell.php:18\r\n#, php-format\r\nmsgid \"%1$sor buy the %2$sDeveloper Bundle%3$s now for only &dollar;99 (all Destinations &amp; Unlimited Sites)%4$s\"\r\nmsgstr \"%1$s ou compre o %2$s Pacote de Desenvolvimento %3$s agora, por apenas &dollar;99 (Todos os destinos e sites ilimitados) %4$s\"\r\n\r\n# @ hm_backdrop\r\n#: backdrop/server.php:6\r\nmsgid \"No key supplied\"\r\nmsgstr \"Nenhuma chave fornecida\"\r\n\r\n# @ hm_backdrop\r\n#: backdrop/server.php:11\r\nmsgid \"Supplied key was not valid\"\r\nmsgstr \"Chave fornecida não era válida\"\r\n\r\n# @ hm_backdrop\r\n#: backdrop/task.php:22\r\nmsgid \"Task is already scheduled to run\"\r\nmsgstr \"Tarefa já está programada para ser executada\"\r\n\r\n# @ hm_backdrop\r\n#: backdrop/task.php:41\r\nmsgid \"Task is not scheduled to run\"\r\nmsgstr \"Tarefa não está programada para ser executada\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'Name'\r\n#: backupwordpress.php:0 classes/class-setup.php:34\r\nmsgid \"BackUpWordPress\"\r\nmsgstr \"BackUpWordPress\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'PluginURI'\r\n#: backupwordpress.php:0\r\nmsgid \"http://bwp.hmn.md/\"\r\nmsgstr \"http://bwp.hmn.md/\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'Description'\r\n#: backupwordpress.php:0\r\nmsgid \"Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, you'll find me under the Network Settings menu.\"\r\nmsgstr \"Simples backups automatizado do seu site Wordpress.\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'Author'\r\n#: backupwordpress.php:0\r\nmsgid \"XIBO Ltd\"\r\nmsgstr \"XIBO Ltd\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'AuthorURI'\r\n#: backupwordpress.php:0\r\nmsgid \"http://hmn.md/\"\r\nmsgstr \"http://hmn.md/\"\r\n\r\n# @ backupwordpress\r\n#. translators: plugin header field 'Version'\r\n#: backupwordpress.php:0\r\nmsgid \"3.1.3\"\r\nmsgstr \"3.1.3\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:348\r\nmsgid \"archive filename must be a non empty string\"\r\nmsgstr \"nome do arquivo deve ser uma string não vazia\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:352\r\n#, php-format\r\nmsgid \"invalid file extension for archive filename <code>%s</code>\"\r\nmsgstr \"extensão de arquivo inválido para nome de arquivo <code>%s</code>\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:392\r\nmsgid \"database dump filename must be a non empty string\"\r\nmsgstr \"nome de arquivo dump deve ser uma string não vazia\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:396\r\n#, php-format\r\nmsgid \"invalid file extension for database dump filename <code>%s</code>\"\r\nmsgstr \"extensão de arquivo inválido para nome de arquivo dump de banco de dados <code>%s</code>\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:429\r\n#, php-format\r\nmsgid \"Invalid root path <code>%s</code> must be a valid directory path\"\r\nmsgstr \"caminho raiz inválido <code>%s</code> deve ser um caminho de diretório válido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:454\r\n#, php-format\r\nmsgid \"Invalid existing archive filepath <code>%s</code> must be a non empty (string)\"\r\nmsgstr \"caminho de arquivo existente inválido <code>%s</code> deve ser uma (string) não vazia\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-backup.php:508\r\n#, php-format\r\nmsgid \"Invalid backup type <code>%s</code> must be one of (string) file, database or complete\"\r\nmsgstr \"tipo de backup inválido <code>%s</code> deve ser um arquivo de (string), banco de dados ou completo\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-email-service.php:34\r\n#, php-format\r\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email addresses with a comma.\"\r\nmsgstr \"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.\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:137\r\nmsgid \"Invalid Option Name\"\r\nmsgstr \"Nome de Opção Inválido\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:599\r\n#, php-format\r\nmsgid \"Argument 1 for %s must be a valid future timestamp\"\r\nmsgstr \"Argumento 1 de %s deve ser uma data futura válida\"\r\n\r\n# @ backpwordpress\r\n#: classes/class-schedule.php:851\r\n#, php-format\r\nmsgid \"Error writing to file. (%s)\"\r\nmsgstr \"Erro ao escrever o arquivo. (%s)\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:970\r\nmsgid \"An unexpected error occured\"\r\nmsgstr \"Houve um erro inesperado\"\r\n\r\n# @ backupwordpress\r\n#. translators: min=minute\r\n#: classes/class-schedule.php:1033\r\n#, php-format\r\nmsgid \"%s min\"\r\nmsgid_plural \"%s mins\"\r\nmsgstr[0] \"%s min\"\r\nmsgstr[1] \"%s mins\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:1043\r\n#, php-format\r\nmsgid \"%s hour\"\r\nmsgid_plural \"%s hours\"\r\nmsgstr[0] \"%s hora\"\r\nmsgstr[1] \"%s horas\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-schedule.php:1110\r\n#, php-format\r\nmsgid \"%s doesn't exist\"\r\nmsgstr \"%s não existe\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-setup.php:141\r\n#, php-format\r\nmsgid \"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\"\r\nmsgstr \"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\"\r\n\r\n# @ backupwordpress\r\n#: classes/class-webhook-service.php:103\r\n#, php-format\r\nmsgid \"Error: %s\"\r\nmsgstr \"Erro: %s\"\r\n\r\n# @ backupwordpress\r\n#: functions/core.php:237\r\nmsgid \"Once Biweekly\"\r\nmsgstr \"Uma vez quinzenalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:70\r\nmsgid \"Dismiss\"\r\nmsgstr \"Dispensar\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:136\r\nmsgid \"Your custom path does not exist\"\r\nmsgstr \"Seu caminho customizado não existe\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:140\r\nmsgid \"Your custom path is unreachable due to a restriction set in your PHP configuration (open_basedir)\"\r\nmsgstr \"Seu caminho personalizado está inacessível devido a uma restrição estabelecida na sua configuração do PHP (open_basedir)\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:158\r\n#, php-format\r\nmsgid \"Your site root path %s isn't readable.\"\r\nmsgstr \"Seu caminho raiz do site %s não existe.\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:248\r\n#, php-format\r\nmsgid \"Started %s ago\"\r\nmsgstr \"Iniciado %s atrás\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:298\r\nmsgid \"No backups completed\"\r\nmsgstr \"Nenhum backup completo\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:300\r\n#, php-format\r\nmsgctxt \"backups count\"\r\nmsgid \"One backup completed\"\r\nmsgid_plural \"%1$s backups completed\"\r\nmsgstr[0] \"Um backup concluído\"\r\nmsgstr[1] \"%1$s backups concluídos\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:309\r\nmsgid \"Complete Hourly\"\r\nmsgstr \"Concluído de hora em hora\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:310\r\nmsgid \"File Hourly\"\r\nmsgstr \"Arquivo de hora em hora\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:311\r\nmsgid \"Database Hourly\"\r\nmsgstr \"Banco de dados de hora em hora\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:312\r\nmsgid \"Complete Twicedaily\"\r\nmsgstr \"Completo duas vezes por dia\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:313\r\nmsgid \"File Twicedaily\"\r\nmsgstr \"Arquivo duas vezes por dia\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:314\r\nmsgid \"Database Twicedaily\"\r\nmsgstr \"Banco de dados duas vezes ao dia\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:315\r\nmsgid \"Complete Daily\"\r\nmsgstr \"Completo Diariamente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:316\r\nmsgid \"File Daily\"\r\nmsgstr \"Arquivo Diariamente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:317\r\nmsgid \"Database Daily\"\r\nmsgstr \"Banco de dados diariamente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:318\r\nmsgid \"Complete Weekly\"\r\nmsgstr \"Completo Semanalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:319\r\nmsgid \"File Weekly\"\r\nmsgstr \"Arquivo Semanalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:320\r\nmsgid \"Database Weekly\"\r\nmsgstr \"Banco de dados semanalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:321\r\nmsgid \"Complete Biweekly\"\r\nmsgstr \"Completo Quinzenalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:322\r\nmsgid \"File Biweekly\"\r\nmsgstr \"Arquivo Quinzenalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:323\r\nmsgid \"Database Biweekly\"\r\nmsgstr \"Banco de dados Quinzenalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:324\r\nmsgid \"Complete Monthly\"\r\nmsgstr \"Completo Mensalmentes\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:325\r\nmsgid \"File Monthly\"\r\nmsgstr \"Arquivo Mensalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:326\r\nmsgid \"Database Monthly\"\r\nmsgstr \"Banco de dados Mensalmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:327\r\nmsgid \"Complete Manually\"\r\nmsgstr \"Completo Manualmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:328\r\nmsgid \"File Manually\"\r\nmsgstr \"Arquivo Manualmente\"\r\n\r\n# @ backupwordpress\r\n#: functions/interface.php:329\r\nmsgid \"Database Manually\"\r\nmsgstr \"Banco de dados Manualmente\"\r\n"
  },
  {
    "path": "languages/backupwordpress-ro_RO.po",
    "content": "# Translation of 2.x in Romanian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: ro_RO\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-ru_RU.po",
    "content": "# Translation of 2.x in Russian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\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\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: ru_RU\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"Резервноекопирование завершено, но со следующими ошибки/предупреждениями, вероятно, все ОК, и можно игнорировать это.\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"Резервирование окончилось неудачно\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"Получать уведомление по электронной почте при завершении резервного копирования, если резервная копия достаточно мала (&lt; %s), то он будет прикреплен к электронной почте. Разделите несколько E-mail адресов с помощью запятой.\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"Максимальный размер файла резервной копии, которая будет прикреплена к уведомлению по электронной почте . По умолчанию %s.\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"Вы можете отправить детали этой ошибки %s, чтобы они могли изучить вопрос.\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"Раз в час\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"Два раза в день\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"Раз в день\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"Раз в неделю\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"Раз в две недели\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"Раз в месяц\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"Email для поддержки\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Новое правило(а) исключения\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Ответ от сервера:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"Если вам нужна помощь в том, как некоторые вещи работают, то прочтите FAQ, нажав на помощь в правом верхнем углу этой страницы.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Запуск резервного копирования\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Дамп базы данных %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Проверка дампа базы данных %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Создание zip архива %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Проверка Zip архива %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Завершение резервного копирования\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress не может работать, когда PHP работает с %s\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%1$s работает с %2$s, пожалуйста, свяжитесь с вашим хостингом, и попросить их отключить его. BackUpWordPress может работать некорректно, когда %3$s включен.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Время, в которое по расписанию BackUpWordPress должен  работать. По умолчанию %s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Вы уверены, что хотите удалить это расписание? Все резервные копии в нем также будут удалены.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"«Отмена», чтобы вернуться, «OK» для удаления.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Вы уверены, что хотите удалить эту резервную копию?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Вы уверены, что хотите удалить этот правило исключения?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"Уменьшение количества резервных копий, которые хранятся на этом сервере, вызовет удаление некоторых из существующих резервных копий, Вы уверены, что хотите этого?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Максимальное количество резервных копий не может быть пустым\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Максимальное количество копий должен быть больше 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Исключить\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"по умолчанию\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"заданный\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Только вручную\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"это не займет много времени...\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"расчет размера Вашего сайта ...\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Следующее резервное копирование будет  %1$s в %2$s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"каждые 12 часов в %1$s &amp; %2$s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"еженедельно в %1$s в %2$s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"раз в две недели в %1$s в %2$s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \" %1$s числа каждого месяца в %2$s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"вручную\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"этом сервере\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"не хранить никаких резервных копий на %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"хранить только последние %1$s резервных копий на %2$s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Резервное копирование %1$s (%2$s) %3$s, %4$s. %5$s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress не смог сделать резервную копию вашего сайта %1$s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Вот ошибки, с которыми мы столкнулись:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Если вышеуказанные ошибки выглядят как марсианские, перешлите это письмо на %3$s, мы посмотрим\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"С уважением,\\n\"\n\"Извиняющийся почтовый робот резервного копирования BackUpWordPress\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress завершил резервное копирование Вашего сайта %1$s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Файл резервной копии должtн быть приложен к этому письму.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Вы можете скачать файл резервной копии, нажав на ссылку ниже:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"С уважение,\\n\"\n\"Счастливый почтовый робот резервного копирования BackUpWordPress\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"К сожалению, резервная копия файла была слишком велика, чтобы прикрепить к этому письму.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Резервное копирование: выгрузки базы данных ...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Резервное копирование: Архивирование всего вверху ...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Неверный путь к резервной копии \"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Неверный корневой путь\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Резервное копирование завершено:\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Ошибка резервного копирования\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"По умолчанию BackUpWordPress выполняет ежедневно резервное копирование базы данных и еженедельно резервное копирование базы данных и файлов. Вы можете изменить это расписание.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Наследие\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Каталог резервных копий не доступен для записи, запустите %1$s или %2$s или установите разрешение самостоятельно.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"Каталог резервных копий не может быть создан, потому что каталог %1$s не доступен для записи, запустите %2$s или %3$s или создайте папку самостоятельно.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress установил ваше расписание по умолчанию.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Резервное копирование %s не удалось\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Отправить уведомление по электронной почте %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s - недопустимый email\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Резервные копии будут сжаты и должны быть меньше, чем эта.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"Уведомление по электронной почте\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"раз в час \"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"ежедневно в %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Количество резервных копий на этом сервере\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Настройки расписания\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Закрыть\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Приведенная ниже информация для версии %1$s. Посмотрите файл %2$s чтобы понять особенности версии %3$s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"Корневой каталог в который создается резервная копия. По умолчанию %s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Возможность использования при вызове %1$s. По умолчанию %2$s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Путь к Вашему %1$s доступен. Можете использовать zip архивацию Ваших %2$s и %3$s, если таковые имеются.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"Для BackUpWordPress требуется WordPress версии %s или выше.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Отмена\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Путь к Вашему %1$s доступен. Можете использовать для %2$s путь для резервного копирования, если таковой имеется.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"например\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"Вы можете %1$s любые следующие %2$s в файле %3$s для управления дополнительными настройками. %4$s. Заданные %5$s будут выделены.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%1$s возвращает ответ %2$s, который может означать, что запланированные задачи не отключены должным образом. BackUpWordPress основан на WP-Cron для запуска резервного копирования по графику.  См. %3$s для более подробной информации.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/ru/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Безопасный режим\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Ваш каталог резервных копий %1$s не существует и не может быть создан, вместо этого Ваши резервные копии будут созданы в %2$s.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Ваш каталог резервных копий %1$s не доступен для записи, вместо этого новые резервные копии будут созданы в %2$s.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"отмена\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Настройки\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Исключения\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Загрузить\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress готов к работе.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress обнаружил проблемы в результате последнего резервного копирования.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"База данных и Файлы\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"База данных\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress обнаружил проблему.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Тип резервного копирования не может быть пустым\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Неверный тип резервного копирования\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Расписание не может быть пустым\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Неверное расписание\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Максимальное количество резервных копий должно быть числом\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s не соответствует ни одному файлу.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"добавить расписание\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Размер\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Тип\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Действие\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Может помочь  Кодекс.\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Путь к папке, в которой Вы хотели бы хранить резервные файлы,  по умолчанию %s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"база данных\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"файлы\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Разделенный запятыми список файлов или каталогов для исключения, каталог резервных копий исключается автоматически.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Управление резервным копированием\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Резервные копии\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Вы не используете последнюю стабильную версию BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Константы\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Для получения дополнительной информации:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Форум поддержки\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Помощь с переводом\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Вам необходимо исправить проблемы описанные выше до запуска BackUpWordPress.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Найти\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Правила исключений\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Удалить\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Исключены\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Включены\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Нечитаемые\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Нечитаемые файлы не могут быть скопированы\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Ваш сайт %s. Резервные копии будут сжаты и поэтому будут меньше.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Резервная копия\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"База данных &amp; файлы\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Только файлы\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Только база данных\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Файлы\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Управление исключениями\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Расписание\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Обновить\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"каждый час в %s мин. часа\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Запустить сейчас\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Удалить\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Резервная копия %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Этот файл %s гарантирует, что другие люди не могут загрузить Ваши файлы резервных копий.\"\n"
  },
  {
    "path": "languages/backupwordpress-sk_SK.po",
    "content": "# Translation of 2.x in Slovak\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: sk_SK\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"E-mail na podporu\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"Nové pravidlo vylúčiť [s]\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"Tu je odpoveď zo servera:\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"Ak potrebujete pomoc pri získavaní pracovných veciach skontrolujte FAQ kliknutím na Pomocníka v pravom hornom rohu tejto stránky.\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"Spúšťa sa program Zálohovanie\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"Dumping databáza %s\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"Overovanie Dump databázy %s\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"Vytváranie zip archív %s\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"Overovanie Zip archív %s\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"Dokončuje sa zálohovanie\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"BackUpWordPress nemusia fungovať, keď beží php s %s\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"%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ý.\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"Čas, ktorý by mala spustiť svoje plány. Predvolené nastavenia na % s.\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"Naozaj chcete odstrániť tento plán? Všetko je to záloh sa tiež odstránia.\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\\\"Zrušiť\\\" ísť späť, \\\"OK\\\" zmazať.\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"Naozaj chcete zmaza╗ t·to zßlohu?\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"Naozaj chcete odstrániť toto pravidlo vylúčiť?\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"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?\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"Max zálohovanie nemôže byť prázdny\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"Max zálohy musí byť väčšia ako 0\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"Vylúčiť\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"predvolené\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"definované\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"Len manuál\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"to by nemalo trvať dlho &hellip;\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"vypočítava sa veľkosť vašich stránok &hellip;\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"Ďalšie zálohovanie bude na %1$ s na %2$ s\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"každých 12 hodín v %1$ s &amp; %2$ s\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"každý týždeň v %1$ s na %2$ s\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"dvojtýždenník o %1$ s na %2$ s\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"na %1$ s každého mesiaca %2$ s\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"manuálne\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"Tento server\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"nechcete uložiť žiadne zálohy na %s\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"uložiť len posledných %1$ s zálohy na %2$ s\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"Zálohovať moje %1$ s %2$ s %3$ s, %4 s. %5$ $s\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"BackUpWordPress sa nepodarilo zálohovať vaše stránky %1$ s.\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"Tu sú chyby, že sme sa už stretli:\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"Ak vyššie uvedené chyby vyzerať Martian, toto e-mailom na %3$ s a budeme sa pozrieť\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"Kind Regards, \\n\"\n\" Ospravedlňujúci BackUpWordPress Backup e-mailom Robot\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"BackUpWordPress ukončil zálohu vaše stránky %1$ s.\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"Záložný súbor má byť pričlenený na tento e-mail.\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"Záložný súbor si môžete stiahnuť kliknutím na odkaz nižšie:\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\"So srdečným pozdravom,\\n\"\n\"Šťastný BackUpWordPress Backup e-mailom Robot\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"Bohužiaľ záložný súbor bol príliš veľký pripojiť na tento e-mail.\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"Zálohovanie: Dumpingu databázy...\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"Zálohovanie: Zipovanie všetko...\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"Neplatný cestu zálohovania\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"Neplatný koreňový cestu\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"Kompletné zálohovanie: \"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"Zálohovanie zlyhalo\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"V predvolenom nastavení BackUpWordPress vykonáva denné zálohovanie databázy a týždenné zálohovanie súborov &amp; databázy. Môžete upraviť tieto plány.\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"Dedičstvo\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"Adresára zálohy nie je možné zapisovať, spustiť %1$ s alebo %2$ s alebo nastaviť povolenia sami.\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"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.\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress má nastavenie vaše predvolené plány.\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"Zálohu %s zlyhalo\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"Odoslať e-mail oznámenia na %s\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s nie je platný e-mail\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"Zálohy sa skomprimujú a by mala byť menšia než tohle.\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"E-mail oznámenia\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"hodinové na hodinu\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"denne na %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"Počet zálohy na uloženie, na tomto serveri\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"Nastavenie plánu\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"Zavrieť\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"Nižšie uvedené informácie je pre verziu %1$ s. %2$ s súbor zobrazenia pre Pomocníka špecifického pre verziu %3$ s.\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"V koreňovom adresári, ktorý je zálohovaný. Predvolené nastavenia na % s.\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"Schopnosť používať pri volaní %1$ s. predvolené %2$ s.\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"Cesta k %1$ s spustiteľný. Sa použije na zips až %2$ s a %3$ s Ak je k dispozícii.\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress vyžaduje WordPress verzia %s alebo väčšia.\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"Zrušiť\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"Cesta k %1$ s spustiteľný. Sa použije pre %2$ s časť chrbta ak je k dispozícii.\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"napr\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"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é.\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"%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í.\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"Núdzový režim\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"Vaše vlastné zálohovanie adresára %1$ s neexistuje a nemožno vytvoriť, zálohy sa uloží do %2$ s namiesto.\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"Vaše vlastné zálohovanie adresára %1$ s nie je zapisovateľný, nové zálohy sa uloží do %2$ s namiesto.\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"zrušiť\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"Nastavenia\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"Vylučuje\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"Stiahnuť\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress je takmer pripravená.\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress zistené problémy s posledného zálohovania.\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"Databázy a súbory\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"Databáza\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress bol zistený problém.\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"Typ zálohovania nemôže byť prázdny\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"Neplatný typ zálohovania\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"Plán nemôže byť prázdny\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"Neplatný rozvrh\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"Max zálohy musí byť číslo\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"%s nezodpovedajú žiadne súbory.\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"pridať plán\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"Veľkosť\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"Typ\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"Akcie\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"Kódex môže pomôcť\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"Cestu k priečinku chcete uložiť súbory zálohy, predvolené nastavenia na % s.\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"databáza\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"súbory\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"Oddelené čiarkou zoznam súborov alebo adresárov vylúčiť, adresári zálohy je automaticky vylúčená.\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"Spravovať zálohy\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"Zálohy\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"Nepoužívate najnovšiu stabilnú verziu BackUpWordPress\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"FAQ\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"Konštanty\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"Ďalšie informácie:\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"Diskusné fóra\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"Pomôcť s prekladom\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"Potrebujete opraviť problémy opísané vyššie, než môžete začať BackUpWordPress.\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"Náhľad\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"Vylúčiť pravidlá\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"Odstrániť\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"Vylúčené\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"Zahrnuté\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"Nečitateľné\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"Nečitateľné súbory nedajú zálohovať\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"Vaše stránky sú % s. zálohy sa skomprimujú a tak bude menšie.\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"Zálohovanie\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"Súborov &amp; databázy\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"Iba súbory\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"Databázy len\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"Súbory\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"Spravovať vylučuje\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"Harmonogram\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"Aktualizácia\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"každú hodinu v %s minúty po hodine\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"Spustiť teraz\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"Odstrániť\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"Zálohovanie %s\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"Tento súbor %s zaisťuje, že ostatných ľudí nemôže prevziať súbory zo zálohy.\"\n"
  },
  {
    "path": "languages/backupwordpress-sr_RS.po",
    "content": "# Translation of 2.x in Serbian\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\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\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: sr_RS\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n"
  },
  {
    "path": "languages/backupwordpress-zh-cn.po",
    "content": "# Translation of 2.x in Chinese (China)\n# This file is distributed under the same license as the 2.x package.\nmsgid \"\"\nmsgstr \"\"\n\"PO-Revision-Date: 2015-07-18 15:51+0100\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"X-Generator: Poedit 1.8.2\\n\"\n\"Project-Id-Version: 2.x\\n\"\n\"POT-Creation-Date: \\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\n#: ../backupwordpress.php:119\nmsgid \"BackUpWordPress requires PHP version %s or greater.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:100\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:120\nmsgid \"% Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:122\nmsgid \"No Backups Completed\"\nmsgstr \"\"\n\n#: ../admin/backups.php:124\nmsgid \"1 Backup Completed\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:5\nmsgid \"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:\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:68\nmsgid \"No thanks\"\nmsgstr \"\"\n\n#: ../admin/enable-support.php:70\nmsgid \"Yes I want to enable support\"\nmsgstr \"\"\n\n#: ../admin/page.php:10\nmsgid \"Support\"\nmsgstr \"\"\n\n#: ../admin/page.php:31\nmsgid \"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin directory. %2$s\"\nmsgstr \"\"\n\n#: ../admin/page.php:35\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:19\nmsgid \"Enter new exclude rules as a comma separated list, e.g. %s\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:45\nmsgid \"Past this limit older backups will be deleted automatically. This schedule will store a maximum of %s of backups\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:78\nmsgid \"store only the last backup on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:118\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s Send a copy of each backup to %6$s.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:239\nmsgid \"Argument 1 for %s must be a valid integer\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:491\nmsgid \"Argument 1 for %s must be a valid cron reoccurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:811\nmsgid \"Argument 1 for %s must be a non empty string\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:815\nmsgid \"%s dpesn't exist\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:819\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:252\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:267\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: ../classes/class-services.php:284\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#: ../functions/core.php:269\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: ../admin/actions.php:508\nmsgid \"Your backup completed but with the following errors / warnings, it's probably ok to ignore these.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:512\nmsgid \"Your backup failed\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:35\nmsgid \"Receive a notification email when a backup completes, if the backup is small enough (&lt; %s) then it will be attached to the email. Separate multiple email address's with a comma.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:54\nmsgid \"The maximum filesize of your backup that will be attached to your notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:520\nmsgid \"You can email details of this error to %s so they can look into the issue.\"\nmsgstr \"\"\n\n#: ../functions/core.php:246\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: ../functions/core.php:247\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:248\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: ../functions/core.php:249\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: ../functions/core.php:250\nmsgid \"Once Fortnightly\"\nmsgstr \"\"\n\n#: ../functions/core.php:251\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: ../admin/actions.php:524\nmsgid \"Email to Support\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:13\nmsgid \"New Exclude Rule[s]\"\nmsgstr \"\"\n\n#: ../admin/actions.php:516\nmsgid \"Here's the response from the server:\"\nmsgstr \"\"\n\n#: ../admin/page.php:33\nmsgid \"If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:609 ../functions/interface.php:261\nmsgid \"Starting Backup\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:686\nmsgid \"Dumping Database %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:691\nmsgid \"Verifying Database Dump %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:696\nmsgid \"Creating zip archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:701\nmsgid \"Verifying Zip Archive %s\"\nmsgstr \"\"\n\n#: ../classes/class-schedule.php:706\nmsgid \"Finishing Backup\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:16\nmsgid \"BackUpWordPress may not work when php is running with %s on\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:26\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171\nmsgid \"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:171 ../backupwordpress.php:172\n#: ../backupwordpress.php:173 ../backupwordpress.php:174\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:172\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:173\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:174\nmsgid \"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?\"\nmsgstr \"\"\n\n#: ../admin/actions.php:372\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: ../admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: ../admin/actions.php:486\nmsgid \"Exclude\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:44\nmsgid \"default\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:48\nmsgid \"defined\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:27\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"this shouldn't take long&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:4\nmsgid \"calculating the size of your site&hellip;\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:12\nmsgid \"The next backup will be on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:37\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:43\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:49\nmsgid \"fortnightly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:56\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:62\nmsgid \"manually\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:71\nmsgid \"this server\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:84\nmsgid \"don't store any backups on %s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:90\nmsgid \"store only the last %1$s backups on %2$s\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:120\nmsgid \"Backup my %1$s %2$s %3$s, %4$s. %5$s\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"Here are the errors that we're encountered:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"If the errors above look like Martian, forward this email to %3$s and we'll take a look\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:156\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:169 ../classes/class-email.php:178\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: ../classes/class-email.php:178\nmsgid \"Unfortunately the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:19\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:23\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:38\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:43\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:68\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: ../classes/wp-cli.php:71\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: ../functions/core.php:229\nmsgid \"By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:245\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: ../functions/interface.php:67\nmsgid \"Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself.\"\nmsgstr \"你的备份目录无法写入，运行  %1$s 或 %2$s 或者自行设置权限。\"\n\n#: ../functions/interface.php:54\nmsgid \"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.\"\nmsgstr \"因为目录 %1$s 无法写入导致不能创建备份目录, 运行 %2$s 或 %3$s 或 自行创建目录。\"\n\n#: ../functions/core.php:229\nmsgid \"BackUpWordPress has setup your default schedules.\"\nmsgstr \"BackUpWordPress 已经配置了你的默认安排。\"\n\n#: ../classes/class-email.php:154\nmsgid \"Backup of %s Failed\"\nmsgstr \"%s 的备份失败\"\n\n#: ../classes/class-email.php:69\nmsgid \"Send an email notification to %s\"\nmsgstr \"给%s发送电子邮件通知\"\n\n#: ../classes/class-email.php:100\nmsgid \"%s isn't a valid email\"\nmsgstr \"%s 不是有效的电子邮件地址\"\n\n#: ../admin/schedule.php:4\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"备份会被压缩所以应该会比这个数值要小。\"\n\n#: ../classes/class-email.php:31\nmsgid \"Email notification\"\nmsgstr \"电子邮件通知\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: ../admin/schedule.php:25\nmsgid \"daily at %s\"\nmsgstr \"在每天的 %s\"\n\n#: ../admin/schedule-form.php:41\nmsgid \"Number of backups to store on this server\"\nmsgstr \"存储在服务器上的备份数目\"\n\n#: ../admin/schedule-form.php:7\nmsgid \"Schedule Settings\"\nmsgstr \"日程安排\"\n\n#: ../admin/actions.php:523 ../admin/schedule-form-excludes.php:119\nmsgid \"Close\"\nmsgstr \"关闭\"\n\n#: ../admin/menu.php:69\nmsgid \"The information below is for version %1$s. View the %2$s file for help specific to version %3$s.\"\nmsgstr \"以下信息适用于%1$s版本。查看%2$s 文件以获取%3$s版本的帮助信息。\"\n\n#: ../admin/constants.php:23\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"根目录已经备份。默认备份到 %s 。\"\n\n#: ../admin/constants.php:20\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:14\nmsgid \"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.\"\nmsgstr \"\"\n\n#: ../backupwordpress.php:132\nmsgid \"BackUpWordPress requires WordPress version %s or greater.\"\nmsgstr \"BackUpWordPress 需要Wordpress的版本至少为%s。\"\n\n#: ../backupwordpress.php:170 ../admin/actions.php:487\nmsgid \"Cancel\"\nmsgstr \"取消\"\n\n#: ../admin/constants.php:11\nmsgid \"The path to your %1$s executable. Will be used for the %2$s part of the back up if available.\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8 ../admin/constants.php:11\n#: ../admin/constants.php:14 ../admin/constants.php:17\n#: ../admin/constants.php:20 ../admin/constants.php:23\n#: ../admin/constants.php:26 ../classes/class-email.php:54\nmsgid \"e.g.\"\nmsgstr \"例如：\"\n\n#: ../admin/constants.php:3\nmsgid \"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.\"\nmsgstr \"\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\nmsgid \"%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.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:78\nmsgid \"http://php.net/manual/en/features.safe-mode.php\"\nmsgstr \"http://php.net/manual/en/features.safe-mode.php\"\n\n#: ../functions/interface.php:78\nmsgid \"Safe Mode\"\nmsgstr \"安全模式\"\n\n#: ../functions/interface.php:89\nmsgid \"Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: ../functions/interface.php:100\nmsgid \"Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead.\"\nmsgstr \"您设定的备份目录 %1$s 无法写入，新的备份文件将会被存储到 %2$s 。\"\n\n#: ../functions/interface.php:261\nmsgid \"cancel\"\nmsgstr \"取消\"\n\n#: ../functions/interface.php:265\nmsgid \"Settings\"\nmsgstr \"设置\"\n\n#: ../functions/interface.php:268\nmsgid \"Excludes\"\nmsgstr \"排除\"\n\n#: ../functions/interface.php:29\nmsgid \"Download\"\nmsgstr \"下载\"\n\n#: ../functions/interface.php:54 ../functions/interface.php:67\nmsgid \"BackUpWordPress is almost ready.\"\nmsgstr \"BackUpWordPress 已经准备好。\"\n\n#: ../functions/interface.php:111\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"BackUpWordPress 检测到上一个备份存在错误。\"\n\n#: ../functions/interface.php:234\nmsgid \"Database and Files\"\nmsgstr \"数据库和文件\"\n\n#: ../functions/interface.php:240\nmsgid \"Database\"\nmsgstr \"数据库\"\n\n#: ../admin/actions.php:250 ../admin/actions.php:256\n#: ../functions/interface.php:78 ../functions/interface.php:89\n#: ../functions/interface.php:100\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"BackUpWordPress 检测到一个问题。\"\n\n#: ../admin/actions.php:342\nmsgid \"Backup type cannot be empty\"\nmsgstr \"备份类型不能为空\"\n\n#: ../admin/actions.php:345\nmsgid \"Invalid backup type\"\nmsgstr \"无效的备份类型。\"\n\n#: ../admin/actions.php:357\nmsgid \"Schedule cannot be empty\"\nmsgstr \"计划不能为空\"\n\n#: ../admin/actions.php:360\nmsgid \"Invalid schedule\"\nmsgstr \"无效的计划\"\n\n#: ../admin/actions.php:375\nmsgid \"Max backups must be a number\"\nmsgstr \"最大备份数必须是数字\"\n\n#: ../admin/actions.php:481\nmsgid \"%s didn't match any files.\"\nmsgstr \"\"\n\n#: ../admin/backups.php:40\nmsgid \"add schedule\"\nmsgstr \"添加计划\"\n\n#: ../admin/backups.php:71\nmsgid \"Size\"\nmsgstr \"大小\"\n\n#: ../admin/backups.php:72\nmsgid \"Type\"\nmsgstr \"类型\"\n\n#: ../admin/backups.php:73\nmsgid \"Actions\"\nmsgstr \"行动\"\n\n#: ../admin/constants.php:3\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: ../admin/constants.php:8\nmsgid \"The path to folder you would like to store your backup files in, defaults to %s.\"\nmsgstr \"您想要存储备份文件的目录，默认是%s。\"\n\n#: ../admin/constants.php:11 ../admin/constants.php:14\nmsgid \"database\"\nmsgstr \"数据库\"\n\n#: ../admin/constants.php:14\nmsgid \"files\"\nmsgstr \"文件\"\n\n#: ../admin/constants.php:17\nmsgid \"Comma separated list of files or directories to exclude, the backups directory is automatically excluded.\"\nmsgstr \"\"\n\n#: ../admin/menu.php:10 ../admin/page.php:6\nmsgid \"Manage Backups\"\nmsgstr \"管理备份\"\n\n#: ../admin/menu.php:10 ../admin/menu.php:34\nmsgid \"Backups\"\nmsgstr \"备份\"\n\n#: ../admin/menu.php:69\nmsgid \"You are not using the latest stable version of BackUpWordPress\"\nmsgstr \"您使用的不是BackUpWordPress的最新稳定版本\"\n\n#: ../admin/menu.php:77\nmsgid \"FAQ\"\nmsgstr \"常见问题\"\n\n#: ../admin/constants.php:3 ../admin/menu.php:79\nmsgid \"Constants\"\nmsgstr \"常量\"\n\n#: ../admin/menu.php:82\nmsgid \"For more information:\"\nmsgstr \"获取更多信息：\"\n\n#: ../admin/menu.php:84\nmsgid \"Support Forums\"\nmsgstr \"支持论坛\"\n\n#: ../admin/menu.php:85\nmsgid \"Help with translation\"\nmsgstr \"帮助进行翻译\"\n\n#: ../admin/page.php:27\nmsgid \"You need to fix the issues detailed above before BackUpWordPress can start.\"\nmsgstr \"\"\n\n#: ../admin/schedule-form-excludes.php:17\nmsgid \"Preview\"\nmsgstr \"预览\"\n\n#: ../admin/schedule-form-excludes.php:29\nmsgid \"Exclude Rules\"\nmsgstr \"排除规则\"\n\n#: ../admin/schedule-form-excludes.php:52\nmsgid \"Remove\"\nmsgstr \"移除\"\n\n#: ../admin/schedule-form-excludes.php:71\nmsgid \"Excluded\"\nmsgstr \"已被排除的\"\n\n#: ../admin/schedule-form-excludes.php:75\nmsgid \"Included\"\nmsgstr \"已包括\"\n\n#: ../admin/schedule-form-excludes.php:79\nmsgid \"Unreadable\"\nmsgstr \"无法读取的\"\n\n#: ../admin/schedule-form-excludes.php:107\nmsgid \"Unreadable files can't be backed up\"\nmsgstr \"无法读取的文件不会被备份\"\n\n#: ../admin/schedule-form-excludes.php:113\nmsgid \"Your site is %s. Backups will be compressed and so will be smaller.\"\nmsgstr \"您的站点大小为 %s. 压缩文件的大小会比这个值要小。\"\n\n#: ../admin/schedule-form.php:11\nmsgid \"Backup\"\nmsgstr \"备份\"\n\n#: ../admin/schedule-form.php:14\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:15\nmsgid \"Files only\"\nmsgstr \"仅文件\"\n\n#: ../admin/schedule-form.php:16\nmsgid \"Database only\"\nmsgstr \"仅数据库\"\n\n#: ../functions/interface.php:237\nmsgid \"Files\"\nmsgstr \"文件\"\n\n#: ../admin/schedule-form-excludes.php:7\nmsgid \"Manage Excludes\"\nmsgstr \"\"\n\n#: ../admin/schedule-form.php:23\nmsgid \"Schedule\"\nmsgstr \"计划\"\n\n#: ../backupwordpress.php:169 ../admin/schedule-form.php:58\nmsgid \"Update\"\nmsgstr \"更新\"\n\n#: ../admin/schedule.php:19\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: ../functions/interface.php:275\nmsgid \"Run now\"\nmsgstr \"现在备份\"\n\n#: ../functions/interface.php:32 ../functions/interface.php:277\nmsgid \"Delete\"\nmsgstr \"删除\"\n\n#: ../classes/class-email.php:164\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: ../functions/core.php:334\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"这个 %s 文件确保其他人不能下载您的备份文件\"\n"
  },
  {
    "path": "languages/backupwordpress.pot",
    "content": "# Copyright (C) 2018 XIBO Ltd\n# This file is distributed under the GPL-2+.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: BackUpWordPress 3.10\\n\"\n\"Report-Msgid-Bugs-To: support@xibomarketing.com\\n\"\n\"POT-Creation-Date: 2018-10-29 10:39:44+00:00\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: XIBO Ltd\\n\"\n\"Language-Team: XIBO Ltd\\n\"\n\"X-Generator: grunt-wp-i18n1.0.2\\n\"\n\n#: admin/actions.php:234 tmp/3.7.1/admin/actions.php:234\nmsgid \"The schedule ID was not provided. Aborting.\"\nmsgstr \"\"\n\n#: admin/actions.php:289 tmp/3.7.1/admin/actions.php:289\nmsgid \"Backup type cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:291 tmp/3.7.1/admin/actions.php:291\nmsgid \"Invalid backup type\"\nmsgstr \"\"\n\n#: admin/actions.php:302 tmp/3.7.1/admin/actions.php:302\nmsgid \"Schedule cannot be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:304 tmp/3.7.1/admin/actions.php:304\nmsgid \"Invalid schedule\"\nmsgstr \"\"\n\n#: admin/actions.php:315 tmp/3.7.1/admin/actions.php:315\nmsgid \"Day of the week must be a valid, lowercase day name\"\nmsgstr \"\"\n\n#: admin/actions.php:331 tmp/3.7.1/admin/actions.php:331\nmsgid \"Day of month must be between 1 and 31\"\nmsgstr \"\"\n\n#: admin/actions.php:347 tmp/3.7.1/admin/actions.php:347\nmsgid \"Hours must be between 0 and 23\"\nmsgstr \"\"\n\n#: admin/actions.php:363 tmp/3.7.1/admin/actions.php:363\nmsgid \"Minutes must be between 0 and 59\"\nmsgstr \"\"\n\n#: admin/actions.php:374 tmp/3.7.1/admin/actions.php:374\nmsgid \"Max backups can't be empty\"\nmsgstr \"\"\n\n#: admin/actions.php:376 tmp/3.7.1/admin/actions.php:376\nmsgid \"Max backups must be a number\"\nmsgstr \"\"\n\n#: admin/actions.php:378 tmp/3.7.1/admin/actions.php:378\nmsgid \"Max backups must be greater than 0\"\nmsgstr \"\"\n\n#: admin/actions.php:380 tmp/3.7.1/admin/actions.php:380\nmsgid \"\"\n\"Storing %s backups would use %s of disk space but your server only has %s \"\n\"free.\"\nmsgstr \"\"\n\n#: admin/actions.php:682 admin/actions.php:688 tmp/3.7.1/admin/actions.php:682\n#: tmp/3.7.1/admin/actions.php:688\nmsgid \"BackUpWordPress has detected a problem.\"\nmsgstr \"\"\n\n#: admin/actions.php:682 tmp/3.7.1/admin/actions.php:682\nmsgid \"\"\n\"%1$s is returning a %2$s response which could mean cron jobs aren't getting \"\n\"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. \"\n\"See the %3$s for more details.\"\nmsgstr \"\"\n\n#: admin/actions.php:688 tmp/3.7.1/admin/actions.php:688\nmsgid \"\"\n\"%1$s is returning a %2$s response which could mean cron jobs aren't getting \"\n\"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups, \"\n\"and more generally relies on HTTP loopback connections not being blocked \"\n\"for manual backups. See the %3$s for more details.\"\nmsgstr \"\"\n\n#: admin/backups-table.php:14 tmp/3.7.1/admin/backups-table.php:14\nmsgid \"Size\"\nmsgstr \"\"\n\n#: admin/backups-table.php:15 admin/schedule-form-excludes.php:124\n#: tmp/3.7.1/admin/backups-table.php:15\n#: tmp/3.7.1/admin/schedule-form-excludes.php:124\nmsgid \"Type\"\nmsgstr \"\"\n\n#: admin/backups-table.php:16 tmp/3.7.1/admin/backups-table.php:16\nmsgid \"Actions\"\nmsgstr \"\"\n\n#: admin/backups-table.php:41 tmp/3.7.1/admin/backups-table.php:41\nmsgid \"This is where your backups will appear once you have some.\"\nmsgstr \"\"\n\n#: admin/backups.php:26 tmp/3.7.1/admin/backups.php:26\nmsgid \"add schedule\"\nmsgstr \"\"\n\n#: admin/constants.php:9 tmp/3.7.1/admin/constants.php:9\nmsgid \"\"\n\"You can %1$s any of the following %2$s in your %3$s to control advanced \"\n\"settings. %4$s. Defined %5$s will be highlighted.\"\nmsgstr \"\"\n\n#: admin/constants.php:9 admin/menu.php:114 tmp/3.7.1/admin/constants.php:9\n#: tmp/3.7.1/admin/menu.php:114\nmsgid \"Constants\"\nmsgstr \"\"\n\n#: admin/constants.php:9 tmp/3.7.1/admin/constants.php:9\nmsgid \"The Codex can help\"\nmsgstr \"\"\n\n#: admin/constants.php:20 admin/constants.php:36 admin/constants.php:52\n#: admin/constants.php:68 admin/constants.php:84 admin/constants.php:100\n#: admin/constants.php:116 classes/class-email-service.php:64\n#: tmp/3.7.1/admin/constants.php:20 tmp/3.7.1/admin/constants.php:36\n#: tmp/3.7.1/admin/constants.php:52 tmp/3.7.1/admin/constants.php:68\n#: tmp/3.7.1/admin/constants.php:84 tmp/3.7.1/admin/constants.php:100\n#: tmp/3.7.1/admin/constants.php:116\n#: tmp/3.7.1/classes/class-email-service.php:64\nmsgid \"You've set it to: %s\"\nmsgstr \"\"\n\n#: admin/constants.php:23 tmp/3.7.1/admin/constants.php:23\nmsgid \"\"\n\"The path to the folder you would like to store your backup files in, \"\n\"defaults to %s.\"\nmsgstr \"\"\n\n#: admin/constants.php:23 admin/constants.php:39 admin/constants.php:55\n#: admin/constants.php:71 admin/constants.php:87 admin/constants.php:103\n#: admin/constants.php:119 classes/class-email-service.php:67\n#: tmp/3.7.1/admin/constants.php:23 tmp/3.7.1/admin/constants.php:39\n#: tmp/3.7.1/admin/constants.php:55 tmp/3.7.1/admin/constants.php:71\n#: tmp/3.7.1/admin/constants.php:87 tmp/3.7.1/admin/constants.php:103\n#: tmp/3.7.1/admin/constants.php:119\n#: tmp/3.7.1/classes/class-email-service.php:67\nmsgid \"e.g.\"\nmsgstr \"\"\n\n#: admin/constants.php:39 tmp/3.7.1/admin/constants.php:39\nmsgid \"\"\n\"The path to your %1$s executable. Will be used for the %2$s part of the \"\n\"back up if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:39 admin/constants.php:55\n#: tmp/3.7.1/admin/constants.php:39 tmp/3.7.1/admin/constants.php:55\nmsgid \"database\"\nmsgstr \"\"\n\n#: admin/constants.php:55 tmp/3.7.1/admin/constants.php:55\nmsgid \"\"\n\"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s \"\n\"if available.\"\nmsgstr \"\"\n\n#: admin/constants.php:55 tmp/3.7.1/admin/constants.php:55\nmsgid \"files\"\nmsgstr \"\"\n\n#: admin/constants.php:71 tmp/3.7.1/admin/constants.php:71\nmsgid \"\"\n\"Comma separated list of files or directories to exclude, the backups \"\n\"directory is automatically excluded.\"\nmsgstr \"\"\n\n#: admin/constants.php:87 tmp/3.7.1/admin/constants.php:87\nmsgid \"The capability to use when calling %1$s. Defaults to %2$s.\"\nmsgstr \"\"\n\n#: admin/constants.php:103 tmp/3.7.1/admin/constants.php:103\nmsgid \"The root directory that is backed up. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/constants.php:119 tmp/3.7.1/admin/constants.php:119\nmsgid \"The time that your schedules should run. Defaults to %s.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:3 tmp/3.7.1/admin/enable-support.php:3\nmsgid \"Enable BackUpWordPress Support\"\nmsgstr \"\"\n\n#: admin/enable-support.php:5 tmp/3.7.1/admin/enable-support.php:5\nmsgid \"\"\n\"BackUpWordPress uses %s to provide support. In addition to allowing you to \"\n\"send and receive messages we also send the following server information \"\n\"along with your requests:\"\nmsgstr \"\"\n\n#: admin/enable-support.php:58 tmp/3.7.1/admin/enable-support.php:58\nmsgid \"You can disable support in the future by deactivating BackUpWordPress.\"\nmsgstr \"\"\n\n#: admin/enable-support.php:60 tmp/3.7.1/admin/enable-support.php:60\nmsgid \"No, thanks\"\nmsgstr \"\"\n\n#: admin/enable-support.php:61 tmp/3.7.1/admin/enable-support.php:61\nmsgid \"Yes, I want to enable support\"\nmsgstr \"\"\n\n#: admin/extensions.php:7 tmp/3.7.1/admin/extensions.php:7\nmsgid \"&larr; Backups\"\nmsgstr \"\"\n\n#: admin/extensions.php:8 admin/menu.php:17 tmp/3.7.1/admin/extensions.php:8\n#: tmp/3.7.1/admin/menu.php:17\nmsgid \"BackUpWordPress Extensions\"\nmsgstr \"\"\n\n#: admin/extensions.php:12 tmp/3.7.1/admin/extensions.php:12\nmsgid \"\"\n\"Extend BackUpWordPress by installing extensions. Extensions allow you to \"\n\"pick and choose the exact features you need whilst also supporting us, the \"\n\"developers, so we can continue working on BackUpWordPress.\"\nmsgstr \"\"\n\n#: admin/extensions.php:41 tmp/3.7.1/admin/extensions.php:41\nmsgid \"Remote Storage\"\nmsgstr \"\"\n\n#: admin/extensions.php:43 tmp/3.7.1/admin/extensions.php:43\nmsgid \"\"\n\"It's important to store your backups somewhere other than on your site. \"\n\"Using the extensions below you can easily push your backups to one or more \"\n\"Cloud providers.\"\nmsgstr \"\"\n\n#: admin/extensions.php:104 tmp/3.7.1/admin/extensions.php:104\nmsgid \"Update %s now\"\nmsgstr \"\"\n\n#: admin/extensions.php:106 tmp/3.7.1/admin/extensions.php:106\nmsgid \"Update Now\"\nmsgstr \"\"\n\n#: admin/extensions.php:136 tmp/3.7.1/admin/extensions.php:136\nmsgid \"Activate %s\"\nmsgstr \"\"\n\n#: admin/extensions.php:137 tmp/3.7.1/admin/extensions.php:137\nmsgid \"Activate\"\nmsgstr \"\"\n\n#: admin/extensions.php:148 tmp/3.7.1/admin/extensions.php:148\nmsgid \"Install %s now\"\nmsgstr \"\"\n\n#: admin/extensions.php:150 tmp/3.7.1/admin/extensions.php:150\nmsgid \"Buy Now &#36;%s\"\nmsgstr \"\"\n\n#: admin/extensions.php:162 tmp/3.7.1/admin/extensions.php:162\nmsgid \"More information about %s\"\nmsgstr \"\"\n\n#: admin/extensions.php:164 tmp/3.7.1/admin/extensions.php:164\nmsgid \"More Details\"\nmsgstr \"\"\n\n#: admin/extensions.php:187 tmp/3.7.1/admin/extensions.php:187\nmsgid \"<strong>Last Updated:</strong> %s ago\"\nmsgstr \"\"\n\n#: admin/faq.php:2 tmp/3.7.1/admin/faq.php:2\nmsgid \"Where does BackUpWordPress store the backup files?\"\nmsgstr \"\"\n\n#: admin/faq.php:4 tmp/3.7.1/admin/faq.php:4\nmsgid \"\"\n\"Backups are stored on your server in <code>/wp-content/backups</code>, you \"\n\"can change the directory.\"\nmsgstr \"\"\n\n#: admin/faq.php:6 tmp/3.7.1/admin/faq.php:6\nmsgid \"\"\n\"Important: By default BackUpWordPress backs up everything in your site root \"\n\"as well as your database, this includes any non WordPress folders that \"\n\"happen to be in your site root. This does mean that your backup directory \"\n\"can get quite large.\"\nmsgstr \"\"\n\n#: admin/faq.php:8 tmp/3.7.1/admin/faq.php:8\nmsgid \"What if I want to back up my site to another destination?\"\nmsgstr \"\"\n\n#: admin/faq.php:10 tmp/3.7.1/admin/faq.php:10\nmsgid \"\"\n\"We no longer sell or support the paid add-ons (e.g. for backups to Dropbox \"\n\"and Google Drive). It's certainly a good idea to backup to cloud storage to \"\n\"protect against server-wide risks. For this we recommend <a \"\n\"href=\\\"https://updraftplus.com/?afref=744\\\" title=\\\"UpdraftPlus WordPress \"\n\"Backups\\\" target=\\\"_blank\\\">UpdraftPlus WordPress Backups</a> which can do \"\n\"things for free BackupWordPress Premium could do on a paid basis. Click \"\n\"here for <a href=\\\"https://updraftplus.com/backupwordpress/?afref=744\\\" \"\n\"title=\\\"plugin comparison\\\" target=\\\"_blank\\\">full comparison</a>.\"\nmsgstr \"\"\n\n#: admin/faq.php:12 tmp/3.7.1/admin/faq.php:12\nmsgid \"How do I restore my site from a backup?\"\nmsgstr \"\"\n\n#: admin/faq.php:14 tmp/3.7.1/admin/faq.php:14\nmsgid \"\"\n\"You need to download the latest backup file either by clicking download on \"\n\"the backups page or via <code>FTP</code>. <code>Unzip</code> the files and \"\n\"upload all the files to your server overwriting your site. You can then \"\n\"import the database using your hosts database management tool (likely \"\n\"<code>phpMyAdmin</code>).\"\nmsgstr \"\"\n\n#: admin/faq.php:16 tmp/3.7.1/admin/faq.php:16\nmsgid \"\"\n\"See this guide for more details - <a \"\n\"href=\\\"https://bwp.hmn.md/support-center/restore-backup/\\\" title=\\\"Go to \"\n\"support center\\\" target=\\\"_blank\\\">How to restore from backup</a>.\"\nmsgstr \"\"\n\n#: admin/faq.php:18 tmp/3.7.1/admin/faq.php:18\nmsgid \"Does BackUpWordPress back up the backups directory?\"\nmsgstr \"\"\n\n#: admin/faq.php:20 tmp/3.7.1/admin/faq.php:20\nmsgid \"No.\"\nmsgstr \"\"\n\n#: admin/faq.php:22 tmp/3.7.1/admin/faq.php:22\nmsgid \"I'm not receiving my backups by email\"\nmsgstr \"\"\n\n#: admin/faq.php:24 tmp/3.7.1/admin/faq.php:24\nmsgid \"\"\n\"Most servers have a filesize limit on email attachments, it's generally \"\n\"about 10mb. If your backup file is over that limit, it won't be sent \"\n\"attached to the email. Instead, you should receive an email with a link to \"\n\"download the backup. If you aren't even receiving that, then you likely \"\n\"have a mail issue on your server that you'll need to contact your host \"\n\"about.\"\nmsgstr \"\"\n\n#: admin/faq.php:26 tmp/3.7.1/admin/faq.php:26\nmsgid \"How many backups are stored by default?\"\nmsgstr \"\"\n\n#: admin/faq.php:28 tmp/3.7.1/admin/faq.php:28\nmsgid \"BackUpWordPress stores the last 10 backups by default.\"\nmsgstr \"\"\n\n#: admin/faq.php:30 tmp/3.7.1/admin/faq.php:30\nmsgid \"How long should a backup take?\"\nmsgstr \"\"\n\n#: admin/faq.php:32 tmp/3.7.1/admin/faq.php:32\nmsgid \"\"\n\"Unless your site is very large (many gigabytes) it should only take a few \"\n\"minutes to perform a backup. If your back up has been running for longer \"\n\"than an hour, it's safe to assume that something has gone wrong. Try \"\n\"de-activating and re-activating the plugin. If it keeps happening, contact \"\n\"support.\"\nmsgstr \"\"\n\n#: admin/faq.php:34 tmp/3.7.1/admin/faq.php:34\nmsgid \"What do I do if I get the wp-cron error message?\"\nmsgstr \"\"\n\n#: admin/faq.php:36 tmp/3.7.1/admin/faq.php:36\nmsgid \"\"\n\"The issue is that your <code>wp-cron.php</code> is not returning a \"\n\"<code>200</code> response when hit with a HTTP request originating from \"\n\"your own server, it could be several things. In most cases, it's an issue \"\n\"with the server / site.\"\nmsgstr \"\"\n\n#: admin/faq.php:38 tmp/3.7.1/admin/faq.php:38\nmsgid \"There are some things you can test to confirm this is the issue.\"\nmsgstr \"\"\n\n#: admin/faq.php:40 tmp/3.7.1/admin/faq.php:40\nmsgid \"Are scheduled posts working? (They use wp-cron as well.)\"\nmsgstr \"\"\n\n#: admin/faq.php:42 tmp/3.7.1/admin/faq.php:42\nmsgid \"\"\n\"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart \"\n\"Internet, see below for work-around.)\"\nmsgstr \"\"\n\n#: admin/faq.php:44 tmp/3.7.1/admin/faq.php:44\nmsgid \"If you click manual backup, does it work?\"\nmsgstr \"\"\n\n#: admin/faq.php:46 tmp/3.7.1/admin/faq.php:46\nmsgid \"\"\n\"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your \"\n\"<code>wp-config.php</code>. Do automatic backups work?\"\nmsgstr \"\"\n\n#: admin/faq.php:48 tmp/3.7.1/admin/faq.php:48\nmsgid \"\"\n\"Is your site private (i.e. is it behind some kind of authentication, \"\n\"maintenance plugin, .htaccess)? If so, wp-cron won't work until you remove \"\n\"it. If you are and you temporarily remove the authentication, do backups \"\n\"start working?\"\nmsgstr \"\"\n\n#: admin/faq.php:50 tmp/3.7.1/admin/faq.php:50\nmsgid \"\"\n\"Report the results to our support team for further help. To do this, email \"\n\"support@xibomarketing.com\"\nmsgstr \"\"\n\n#: admin/faq.php:52 tmp/3.7.1/admin/faq.php:52\nmsgid \"How to get BackUpWordPress working in Heart Internet\"\nmsgstr \"\"\n\n#: admin/faq.php:54 tmp/3.7.1/admin/faq.php:54\nmsgid \"\"\n\"The script to be entered into the Heart Internet cPanel is: \"\n\"<code>/usr/bin/php5 \"\n\"/home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the space \"\n\"between php5 and the location of the file). The file \"\n\"<code>wp-cron.php</code> <code>chmod</code> must be set to <code>711</code>.\"\nmsgstr \"\"\n\n#: admin/faq.php:56 tmp/3.7.1/admin/faq.php:56\nmsgid \"My backups seem to be failing?\"\nmsgstr \"\"\n\n#: admin/faq.php:58 tmp/3.7.1/admin/faq.php:58\nmsgid \"\"\n\"If your backups are failing, it's commonly caused by a lack of available \"\n\"resources on your server. To establish this is the case, exclude the \"\n\"complete (or parts of the) uploads folder and run a backup. If that \"\n\"succeeds, you know it's probably a server issue. If it does not succeed, \"\n\"report the results to our support team for further help. You can contact \"\n\"support by emailing support@xibomarketing.com\"\nmsgstr \"\"\n\n#: admin/menu.php:12 tmp/3.7.1/admin/menu.php:12\nmsgid \"Manage Backups | BackUpWordPress\"\nmsgstr \"\"\n\n#: admin/menu.php:12 admin/menu.php:14 admin/menu.php:77\n#: tmp/3.7.1/admin/menu.php:12 tmp/3.7.1/admin/menu.php:14\n#: tmp/3.7.1/admin/menu.php:77\nmsgid \"Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:14 tmp/3.7.1/admin/menu.php:14\nmsgid \"Manage Backups\"\nmsgstr \"\"\n\n#: admin/menu.php:17 tmp/3.7.1/admin/menu.php:17\nmsgid \"Extensions\"\nmsgstr \"\"\n\n#: admin/menu.php:108 tmp/3.7.1/admin/menu.php:108\nmsgid \"FAQ\"\nmsgstr \"\"\n\n#: admin/menu.php:127 tmp/3.7.1/admin/menu.php:127\nmsgid \"Server Info\"\nmsgstr \"\"\n\n#: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134\nmsgid \"For more information:\"\nmsgstr \"\"\n\n#: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134\nmsgid \"Support Forums\"\nmsgstr \"\"\n\n#: admin/menu.php:134 tmp/3.7.1/admin/menu.php:134\nmsgid \"Help with translation\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:11\n#: tmp/3.7.1/admin/schedule-form-excludes.php:11\nmsgid \"Currently Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:15\n#: tmp/3.7.1/admin/schedule-form-excludes.php:15\nmsgid \"\"\n\"We automatically detect and ignore common Version Control Systems folders \"\n\"and other backup plugin folders.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:55\n#: tmp/3.7.1/admin/schedule-form-excludes.php:55\nmsgid \"Default rule\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:59\n#: tmp/3.7.1/admin/schedule-form-excludes.php:59\nmsgid \"Defined in %s\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:67\n#: tmp/3.7.1/admin/schedule-form-excludes.php:67\nmsgid \"Stop excluding\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:83\n#: tmp/3.7.1/admin/schedule-form-excludes.php:83\nmsgid \"Your Site\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:87\n#: tmp/3.7.1/admin/schedule-form-excludes.php:87\nmsgid \"\"\n\"Here's a directory listing of all files on your site, you can browse \"\n\"through and exclude files or folders that you don't want included in your \"\n\"backup.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:121\n#: tmp/3.7.1/admin/schedule-form-excludes.php:121\nmsgid \"Name\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:122\n#: tmp/3.7.1/admin/schedule-form-excludes.php:122\nmsgid \"Included Size\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:123\n#: tmp/3.7.1/admin/schedule-form-excludes.php:123\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:125\n#: tmp/3.7.1/admin/schedule-form-excludes.php:125\nmsgid \"Status\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:186 admin/schedule-form-excludes.php:316\n#: tmp/3.7.1/admin/schedule-form-excludes.php:186\n#: tmp/3.7.1/admin/schedule-form-excludes.php:316\n#. translators: 1: Excluded size 2: Overall site size\n#. translators: 1: Excluded size 2: Overall directory/file size\nmsgid \"%1$s of %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:193\n#: tmp/3.7.1/admin/schedule-form-excludes.php:193\nmsgid \"Refresh\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:208 admin/schedule-form-excludes.php:353\n#: tmp/3.7.1/admin/schedule-form-excludes.php:208\n#: tmp/3.7.1/admin/schedule-form-excludes.php:353\nmsgid \"Symlink\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:210 admin/schedule-form-excludes.php:356\n#: tmp/3.7.1/admin/schedule-form-excludes.php:210\n#: tmp/3.7.1/admin/schedule-form-excludes.php:356\nmsgid \"Folder\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:358\n#: tmp/3.7.1/admin/schedule-form-excludes.php:358\nmsgid \"File\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:367\n#: tmp/3.7.1/admin/schedule-form-excludes.php:367\nmsgid \"Unreadable files won't be backed up.\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:368\n#: tmp/3.7.1/admin/schedule-form-excludes.php:368\nmsgid \"Unreadable\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:373\n#: tmp/3.7.1/admin/schedule-form-excludes.php:373\nmsgid \"Excluded\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:395\n#: tmp/3.7.1/admin/schedule-form-excludes.php:395\nmsgid \"Exclude &rarr;\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:410\n#: tmp/3.7.1/admin/schedule-form-excludes.php:410\nmsgid \"This folder is empty\"\nmsgstr \"\"\n\n#: admin/schedule-form-excludes.php:422 admin/schedule-form.php:204\n#: admin/schedule-settings.php:89\n#: tmp/3.7.1/admin/schedule-form-excludes.php:422\n#: tmp/3.7.1/admin/schedule-form.php:204\n#: tmp/3.7.1/admin/schedule-settings.php:89\nmsgid \"Done\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:7 admin/schedule-settings.php:15\n#: tmp/3.7.1/admin/schedule-form.php:7 tmp/3.7.1/admin/schedule-settings.php:15\nmsgid \"Settings\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:42 tmp/3.7.1/admin/schedule-form.php:42\nmsgid \"Backup\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:49 tmp/3.7.1/admin/schedule-form.php:49\nmsgid \"Both Database &amp; files\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:51 tmp/3.7.1/admin/schedule-form.php:51\nmsgid \"Files only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:53 tmp/3.7.1/admin/schedule-form.php:53\nmsgid \"Database only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:64 tmp/3.7.1/admin/schedule-form.php:64\nmsgid \"Schedule\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:71 tmp/3.7.1/admin/schedule-form.php:71\nmsgid \"Manual Only\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:98 tmp/3.7.1/admin/schedule-form.php:98\nmsgid \"Start Day\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:106 tmp/3.7.1/admin/schedule-form.php:106\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:107 tmp/3.7.1/admin/schedule-form.php:107\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:108 tmp/3.7.1/admin/schedule-form.php:108\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:109 tmp/3.7.1/admin/schedule-form.php:109\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:110 tmp/3.7.1/admin/schedule-form.php:110\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:111 tmp/3.7.1/admin/schedule-form.php:111\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:112 tmp/3.7.1/admin/schedule-form.php:112\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:130 tmp/3.7.1/admin/schedule-form.php:130\nmsgid \"Start Day of Month\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:142 tmp/3.7.1/admin/schedule-form.php:142\nmsgid \"Start Time\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:151 tmp/3.7.1/admin/schedule-form.php:151\nmsgid \"Hours\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:155 tmp/3.7.1/admin/schedule-form.php:155\nmsgid \"Minutes\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:160 tmp/3.7.1/admin/schedule-form.php:160\nmsgid \"24-hour format.\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:161 tmp/3.7.1/admin/schedule-form.php:161\nmsgid \"The second backup will run 12 hours after the first.\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:171 tmp/3.7.1/admin/schedule-form.php:171\nmsgid \"Number of backups to store on this server\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:180 tmp/3.7.1/admin/schedule-form.php:180\nmsgid \"Past this limit older backups will be deleted automatically.\"\nmsgstr \"\"\n\n#: admin/schedule-form.php:187 tmp/3.7.1/admin/schedule-form.php:187\nmsgid \"This schedule will store a maximum of %s of backups.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:14 tmp/3.7.1/admin/schedule-sentence.php:14\nmsgid \"The next backup will be on %1$s at %2$s %3$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:24 tmp/3.7.1/admin/schedule-sentence.php:24\nmsgid \"hourly on the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:24 tmp/3.7.1/admin/schedule-sentence.php:24\nmsgid \"hourly at %s minutes past the hour\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:30 tmp/3.7.1/admin/schedule-sentence.php:30\nmsgid \"daily at %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:41 tmp/3.7.1/admin/schedule-sentence.php:41\nmsgid \"every 12 hours at %1$s &amp; %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:47 tmp/3.7.1/admin/schedule-sentence.php:47\nmsgid \"weekly on %1$s at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:53 tmp/3.7.1/admin/schedule-sentence.php:53\nmsgid \"every two weeks on %1$s at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:59 tmp/3.7.1/admin/schedule-sentence.php:59\nmsgid \"on the %1$s of each month at %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:65 admin/schedule-sentence.php:71\n#: tmp/3.7.1/admin/schedule-sentence.php:65\n#: tmp/3.7.1/admin/schedule-sentence.php:71\nmsgid \"manually\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:76 tmp/3.7.1/admin/schedule-sentence.php:76\nmsgid \"Check the help tab to learn how to change where your backups are stored.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:83 tmp/3.7.1/admin/schedule-sentence.php:83\nmsgid \"store the most recent backup in %s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:89 tmp/3.7.1/admin/schedule-sentence.php:89\nmsgid \"don't store any backups in on this server\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:95 tmp/3.7.1/admin/schedule-sentence.php:95\nmsgid \"store the last %1$s backups in %2$s\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:127 tmp/3.7.1/admin/schedule-sentence.php:127\nmsgid \"Send a copy of each backup to %s.\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:160 tmp/3.7.1/admin/schedule-sentence.php:160\nmsgid \"Backups will be compressed and should be smaller than this.\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:11 tmp/3.7.1/admin/schedule-settings.php:11\nmsgid \"Run now\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:21 tmp/3.7.1/admin/schedule-settings.php:21\nmsgid \"Excludes\"\nmsgstr \"\"\n\n#: admin/schedule-settings.php:34 functions/interface.php:47\n#: tmp/3.7.1/admin/schedule-settings.php:34\n#: tmp/3.7.1/functions/interface.php:47\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: admin/upsell.php:7 tmp/3.7.1/admin/upsell.php:7\nmsgid \"\"\n\"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin \"\n\"directory%2$s.\"\nmsgstr \"\"\n\n#: admin/upsell.php:16 classes/class-plugin.php:456\n#: tmp/3.7.1/admin/upsell.php:16 tmp/3.7.1/classes/class-plugin.php:456\nmsgid \"Dismiss this notice.\"\nmsgstr \"\"\n\n#: classes/backup/class-backup.php:57\n#: tmp/3.7.1/classes/backup/class-backup.php:57\nmsgid \"Backing up database...\"\nmsgstr \"\"\n\n#: classes/backup/class-backup.php:111\n#: tmp/3.7.1/classes/backup/class-backup.php:111\nmsgid \"Backing up files...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:46\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:46\nmsgid \"Backup: Dumping database...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:50\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:50\nmsgid \"Backup: Zipping everything up...\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:64\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:64\nmsgid \"Invalid backup path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:69\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:69\nmsgid \"Invalid root path\"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:96\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:96\nmsgid \"Backup Complete: \"\nmsgstr \"\"\n\n#: classes/class-backupwordpress-wp-cli-command.php:98\n#: tmp/3.7.1/classes/class-backupwordpress-wp-cli-command.php:98\nmsgid \"Backup Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:30\n#: tmp/3.7.1/classes/class-email-service.php:30\nmsgid \"Email notification\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:36\n#: tmp/3.7.1/classes/class-email-service.php:36\nmsgid \"\"\n\"Receive a notification email when a backup completes. If the backup is \"\n\"small enough (&lt; %s), then it will be attached to the email. Separate \"\n\"multiple email addresses with a comma.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:67\n#: tmp/3.7.1/classes/class-email-service.php:67\nmsgid \"\"\n\"The maximum filesize of your backup that will be attached to your \"\n\"notification emails . Defaults to %s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:86\n#: tmp/3.7.1/classes/class-email-service.php:86\nmsgid \"Send an email notification to %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:122\n#: tmp/3.7.1/classes/class-email-service.php:122\nmsgid \"%s isn't a valid email\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:177 classes/class-webhook-service.php:59\n#: tmp/3.7.1/classes/class-email-service.php:177\n#: tmp/3.7.1/classes/class-webhook-service.php:59\nmsgid \"Backup of %s Failed\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179\n#: tmp/3.7.1/classes/class-email-service.php:179\nmsgid \"BackUpWordPress was unable to backup your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179\n#: tmp/3.7.1/classes/class-email-service.php:179\nmsgid \"Here are the errors that we've encountered:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179\n#: tmp/3.7.1/classes/class-email-service.php:179\nmsgid \"\"\n\"If the errors above look like Martian, forward this email to %3$s and we'll \"\n\"take a look\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:179\n#: tmp/3.7.1/classes/class-email-service.php:179\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Apologetic BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:187\n#: tmp/3.7.1/classes/class-email-service.php:187\nmsgid \"Backup of %s\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:192 classes/class-email-service.php:201\n#: tmp/3.7.1/classes/class-email-service.php:192\n#: tmp/3.7.1/classes/class-email-service.php:201\nmsgid \"BackUpWordPress has completed a backup of your site %1$s.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:192\n#: tmp/3.7.1/classes/class-email-service.php:192\nmsgid \"The backup file should be attached to this email.\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:192 classes/class-email-service.php:201\n#: tmp/3.7.1/classes/class-email-service.php:192\n#: tmp/3.7.1/classes/class-email-service.php:201\nmsgid \"You can download the backup file by clicking the link below:\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:192 classes/class-email-service.php:201\n#: tmp/3.7.1/classes/class-email-service.php:192\n#: tmp/3.7.1/classes/class-email-service.php:201\nmsgid \"\"\n\"Kind Regards,\\n\"\n\"The Happy BackUpWordPress Backup Emailing Robot\"\nmsgstr \"\"\n\n#: classes/class-email-service.php:201\n#: tmp/3.7.1/classes/class-email-service.php:201\nmsgid \"Unfortunately, the backup file was too large to attach to this email.\"\nmsgstr \"\"\n\n#: classes/class-path.php:355 tmp/3.7.1/classes/class-path.php:355\nmsgid \"This %s file ensures that other people cannot download your backup files.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:242 tmp/3.7.1/classes/class-plugin.php:242\nmsgid \"Update\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:243 tmp/3.7.1/classes/class-plugin.php:243\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:244 tmp/3.7.1/classes/class-plugin.php:244\nmsgid \"\"\n\"Are you sure you want to delete this schedule? All of its backups will also \"\n\"be deleted.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:244 classes/class-plugin.php:245\n#: classes/class-plugin.php:246 classes/class-plugin.php:247\n#: tmp/3.7.1/classes/class-plugin.php:244\n#: tmp/3.7.1/classes/class-plugin.php:245\n#: tmp/3.7.1/classes/class-plugin.php:246\n#: tmp/3.7.1/classes/class-plugin.php:247\nmsgid \"'Cancel' to go back, 'OK' to delete.\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:245 tmp/3.7.1/classes/class-plugin.php:245\nmsgid \"Are you sure you want to delete this backup?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:246 tmp/3.7.1/classes/class-plugin.php:246\nmsgid \"Are you sure you want to remove this exclude rule?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:247 tmp/3.7.1/classes/class-plugin.php:247\nmsgid \"\"\n\"Reducing the number of backups that are stored on this server will cause \"\n\"some of your existing backups to be deleted. Are you sure that's what you \"\n\"want?\"\nmsgstr \"\"\n\n#: classes/class-plugin.php:444 tmp/3.7.1/classes/class-plugin.php:444\nmsgid \"\"\n\"BackupWordPress was created by our friends at HumanMade but is now owned by \"\n\"XIBO. We're committed to opensource and WordPress and will provide free \"\n\"support for the many BackupWordPress fans. However, we'll no longer be \"\n\"selling or supporting the paid add-ons (e.g. for backups to Dropbox and \"\n\"Google Drive).%1$sIt's a good idea to backup to cloud storage to protect \"\n\"against server-wide risks. For this we recommend %2$sUpdraftPlus WordPress \"\n\"Backups%3$s. Click here for %4$sfull comparison%3$s\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:321\n#: tmp/3.7.1/classes/class-scheduled-backup.php:321\nmsgid \"Argument 1 for %s must be a valid cron recurrence or \\\"manually\\\"\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:427 functions/interface.php:320\n#: tmp/3.7.1/classes/class-scheduled-backup.php:427\n#: tmp/3.7.1/functions/interface.php:320\nmsgid \"Starting backup...\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:429\n#: classes/class-scheduled-backup.php:444\n#: tmp/3.7.1/classes/class-scheduled-backup.php:429\n#: tmp/3.7.1/classes/class-scheduled-backup.php:444\nmsgid \"Deleting old backups...\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:544\n#: tmp/3.7.1/classes/class-scheduled-backup.php:544\n#. translators: min=minute\nmsgid \"%s min\"\nmsgid_plural \"%s mins\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-scheduled-backup.php:554\n#: tmp/3.7.1/classes/class-scheduled-backup.php:554\nmsgid \"%s hour\"\nmsgid_plural \"%s hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: classes/class-scheduled-backup.php:615\n#: tmp/3.7.1/classes/class-scheduled-backup.php:615\nmsgid \"Argument 1 for %s must be a non-empty string\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:620\n#: tmp/3.7.1/classes/class-scheduled-backup.php:620\nmsgid \"%s doesn't exist\"\nmsgstr \"\"\n\n#: classes/class-scheduled-backup.php:625\n#: tmp/3.7.1/classes/class-scheduled-backup.php:625\nmsgid \"That backup wasn't created by this schedule\"\nmsgstr \"\"\n\n#: classes/class-services.php:81 tmp/3.7.1/classes/class-services.php:81\nmsgid \"Argument 1 for %s must be a valid filepath\"\nmsgstr \"\"\n\n#: classes/class-services.php:97 tmp/3.7.1/classes/class-services.php:97\nmsgid \"Argument 1 for %s must be a registered service\"\nmsgstr \"\"\n\n#: classes/class-services.php:115 classes/deprecated.php:81\n#: tmp/3.7.1/classes/class-services.php:115 tmp/3.7.1/classes/deprecated.php:81\nmsgid \"Argument 1 for %s must be a valid class\"\nmsgstr \"\"\n\n#. Plugin Name of the plugin/theme\nmsgid \"BackUpWordPress\"\nmsgstr \"\"\n\n#: classes/class-setup.php:169 tmp/3.7.1/classes/class-setup.php:169\nmsgid \"\"\n\"BackUpWordPress requires PHP version %1$s or later and WordPress version \"\n\"%2$s or later to run. It has not been activated.\"\nmsgstr \"\"\n\n#: classes/class-webhook-service.php:103\n#: tmp/3.7.1/classes/class-webhook-service.php:103\nmsgid \"Error: %s\"\nmsgstr \"\"\n\n#: functions/core.php:331 tmp/3.7.1/functions/core.php:331\nmsgid \"BackUpWordPress has set up your default schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:331 tmp/3.7.1/functions/core.php:331\nmsgid \"\"\n\"By default BackUpWordPress performs a daily backup of your database and a \"\n\"weekly backup of your database &amp; files. You can modify these schedules.\"\nmsgstr \"\"\n\n#: functions/core.php:347 tmp/3.7.1/functions/core.php:347\nmsgid \"Once Hourly\"\nmsgstr \"\"\n\n#: functions/core.php:348 tmp/3.7.1/functions/core.php:348\nmsgid \"Twice Daily\"\nmsgstr \"\"\n\n#: functions/core.php:349 tmp/3.7.1/functions/core.php:349\nmsgid \"Once Daily\"\nmsgstr \"\"\n\n#: functions/core.php:350 tmp/3.7.1/functions/core.php:350\nmsgid \"Once Weekly\"\nmsgstr \"\"\n\n#: functions/core.php:351 tmp/3.7.1/functions/core.php:351\nmsgid \"Once Every Two Weeks\"\nmsgstr \"\"\n\n#: functions/core.php:352 tmp/3.7.1/functions/core.php:352\nmsgid \"Once Monthly\"\nmsgstr \"\"\n\n#: functions/core.php:371 tmp/3.7.1/functions/core.php:371\nmsgid \"You can only delete directories inside your WordPress installation\"\nmsgstr \"\"\n\n#: functions/interface.php:33 tmp/3.7.1/functions/interface.php:33\nmsgid \"Download\"\nmsgstr \"\"\n\n#: functions/interface.php:86 tmp/3.7.1/functions/interface.php:86\nmsgid \"BackUpWordPress detected issues with your last backup.\"\nmsgstr \"\"\n\n#: functions/interface.php:163 tmp/3.7.1/functions/interface.php:163\n#. translators: 1: The `PHP` abbreviation.\nmsgid \"\"\n\"%1$s is running in <a \"\n\"href=\\\"http://php.net/manual/en/features.safe-mode.php\\\">Safe Mode</a>, \"\n\"please contact your host and ask them to disable it. BackUpWordPress may \"\n\"not work correctly whilst <code>Safe Mode</code> is on.\"\nmsgstr \"\"\n\n#: functions/interface.php:174 tmp/3.7.1/functions/interface.php:174\nmsgid \"\"\n\"Your server has an %1$s restriction in effect and your custom backups \"\n\"directory (%2$s) is not within the allowed path(s): (%3$s).\"\nmsgstr \"\"\n\n#: functions/interface.php:183 tmp/3.7.1/functions/interface.php:183\nmsgid \"\"\n\"Your custom backups directory (%1$s) doesn&apos;t exist, your backups will \"\n\"be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:191 tmp/3.7.1/functions/interface.php:191\nmsgid \"\"\n\"Your custom backups directory (%1$s) isn&apos;t writable, new backups will \"\n\"be saved to %2$s instead.\"\nmsgstr \"\"\n\n#: functions/interface.php:202 tmp/3.7.1/functions/interface.php:202\nmsgid \"\"\n\"We connected to your server successfully but still weren&apos;t able to \"\n\"automatically create the directory. You&apos;ll need to manually specify a \"\n\"valid directory\"\nmsgstr \"\"\n\n#: functions/interface.php:208 tmp/3.7.1/functions/interface.php:208\n#. translators: 1: Path to backup directory.\nmsgid \"\"\n\"We couldn&apos;t create the backups directory (%1$s). You&apos;ll need to \"\n\"manually specify a valid directory or you can have WordPress do it \"\n\"automatically by entering your server details below. This is a one time \"\n\"thing.\"\nmsgstr \"\"\n\n#: functions/interface.php:217 tmp/3.7.1/functions/interface.php:217\nmsgid \"Your site&apos;s root path (%s) isn&apos;t readable. Please contact support.\"\nmsgstr \"\"\n\n#: functions/interface.php:226 functions/interface.php:236\n#: tmp/3.7.1/functions/interface.php:226 tmp/3.7.1/functions/interface.php:236\n#. translators: FYI: specified MySQL features.\n#. translators: FYI: specified zip archiving features.\nmsgid \"\"\n\"Your site cannot be backed up because your server doesn&apos;t support %1$s \"\n\"or %2$s. Please contact your host and ask them to enable them.\"\nmsgstr \"\"\n\n#: functions/interface.php:245 tmp/3.7.1/functions/interface.php:245\nmsgid \"\"\n\"Your server only has %s of disk space left which probably isn&apos;t enough \"\n\"to complete a backup. Try deleting some existing backups or other files to \"\n\"free up space.\"\nmsgstr \"\"\n\n#: functions/interface.php:287 tmp/3.7.1/functions/interface.php:287\nmsgid \"Database and Files\"\nmsgstr \"\"\n\n#: functions/interface.php:291 tmp/3.7.1/functions/interface.php:291\nmsgid \"Files\"\nmsgstr \"\"\n\n#: functions/interface.php:295 tmp/3.7.1/functions/interface.php:295\nmsgid \"Database\"\nmsgstr \"\"\n\n#: functions/interface.php:302 tmp/3.7.1/functions/interface.php:302\nmsgid \"Legacy\"\nmsgstr \"\"\n\n#: functions/interface.php:319 tmp/3.7.1/functions/interface.php:319\nmsgid \"Started %s ago\"\nmsgstr \"\"\n\n#: functions/interface.php:321 tmp/3.7.1/functions/interface.php:321\nmsgid \"cancel\"\nmsgstr \"\"\n\n#: functions/interface.php:339 tmp/3.7.1/functions/interface.php:339\nmsgid \"No backups completed\"\nmsgstr \"\"\n\n#: functions/interface.php:350 tmp/3.7.1/functions/interface.php:350\nmsgid \"Complete Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:351 tmp/3.7.1/functions/interface.php:351\nmsgid \"File Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:352 tmp/3.7.1/functions/interface.php:352\nmsgid \"Database Hourly\"\nmsgstr \"\"\n\n#: functions/interface.php:353 tmp/3.7.1/functions/interface.php:353\nmsgid \"Complete Twice Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:354 tmp/3.7.1/functions/interface.php:354\nmsgid \"File Twice Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:355 tmp/3.7.1/functions/interface.php:355\nmsgid \"Database Twice Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:356 tmp/3.7.1/functions/interface.php:356\nmsgid \"Complete Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:357 tmp/3.7.1/functions/interface.php:357\nmsgid \"File Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:358 tmp/3.7.1/functions/interface.php:358\nmsgid \"Database Daily\"\nmsgstr \"\"\n\n#: functions/interface.php:359 tmp/3.7.1/functions/interface.php:359\nmsgid \"Complete Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:360 tmp/3.7.1/functions/interface.php:360\nmsgid \"File Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:361 tmp/3.7.1/functions/interface.php:361\nmsgid \"Database Weekly\"\nmsgstr \"\"\n\n#: functions/interface.php:362 tmp/3.7.1/functions/interface.php:362\nmsgid \"Complete Every Two Weeks\"\nmsgstr \"\"\n\n#: functions/interface.php:363 tmp/3.7.1/functions/interface.php:363\nmsgid \"File Every Two Weeks\"\nmsgstr \"\"\n\n#: functions/interface.php:364 tmp/3.7.1/functions/interface.php:364\nmsgid \"Database Every Two Weeks\"\nmsgstr \"\"\n\n#: functions/interface.php:365 tmp/3.7.1/functions/interface.php:365\nmsgid \"Complete Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:366 tmp/3.7.1/functions/interface.php:366\nmsgid \"File Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:367 tmp/3.7.1/functions/interface.php:367\nmsgid \"Database Monthly\"\nmsgstr \"\"\n\n#: functions/interface.php:368 tmp/3.7.1/functions/interface.php:368\nmsgid \"Complete Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:369 tmp/3.7.1/functions/interface.php:369\nmsgid \"File Manually\"\nmsgstr \"\"\n\n#: functions/interface.php:370 tmp/3.7.1/functions/interface.php:370\nmsgid \"Database Manually\"\nmsgstr \"\"\n\n#: tmp/3.7.1/backdrop/server.php:6\nmsgid \"No key supplied\"\nmsgstr \"\"\n\n#: tmp/3.7.1/backdrop/server.php:11\nmsgid \"Supplied key was not valid\"\nmsgstr \"\"\n\n#: tmp/3.7.1/backdrop/task.php:22\nmsgid \"Task is already scheduled to run\"\nmsgstr \"\"\n\n#: tmp/3.7.1/backdrop/task.php:41\nmsgid \"Task is not scheduled to run\"\nmsgstr \"\"\n\n#. Plugin URI of the plugin/theme\nmsgid \"https://updraftplus.com/backupwordpress/?afref=744\"\nmsgstr \"\"\n\n#. Description of the plugin/theme\nmsgid \"\"\n\"Simple automated backups of your WordPress powered website. Once activated \"\n\"you'll find me under <strong>Tools &rarr; Backups</strong>. On multisite, \"\n\"you'll find me under the Network Settings menu.\"\nmsgstr \"\"\n\n#. Author of the plugin/theme\nmsgid \"XIBO Ltd\"\nmsgstr \"\"\n\n#. Author URI of the plugin/theme\nmsgid \"https://profiles.wordpress.org/xibodevelopment\"\nmsgstr \"\"\n\n#: admin/extensions.php:117 tmp/3.7.1/admin/extensions.php:117\nmsgctxt \"Plugin status\"\nmsgid \"Active\"\nmsgstr \"\"\n\n#: admin/schedule-sentence.php:120 tmp/3.7.1/admin/schedule-sentence.php:120\nmsgctxt \"\"\n\"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to \"\n\"store\"\nmsgid \"Backup my %1$s %2$s %3$s, %4$s.\"\nmsgstr \"\"\n\n#: functions/interface.php:341 tmp/3.7.1/functions/interface.php:341\nmsgctxt \"backups count\"\nmsgid \"One backup completed\"\nmsgid_plural \"%1$s backups completed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\""
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"BackUpWordPress\",\n  \"version\": \"3.9\",\n  \"description\": \"Simple automated backups of your WordPress powered website.\",\n  \"main\": \"backupwordpress.php\",\n  \"directories\": {\n    \"test\": \"tests\"\n  },\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/xibodevelopment/backupwordpress\"\n  },\n  \"keywords\": [\n    \"backups\"\n  ],\n  \"author\": \"xibodevelopment\",\n  \"license\": \"GPLv2\",\n  \"bugs\": {\n    \"url\": \"https://github.com/xibodevelopment/backupwordpress/issues\"\n  },\n  \"homepage\": \"https://github.com/xibodevelopment/backupwordpress\",\n  \"devDependencies\": {\n    \"grunt\": \"*\",\n    \"grunt-autoprefixer\": \"*\",\n    \"grunt-bumpup\": \"*\",\n    \"grunt-checktextdomain\": \"*\",\n    \"grunt-checkwpversion\": \"*\",\n    \"grunt-contrib-clean\": \"*\",\n    \"grunt-contrib-compress\": \"*\",\n    \"grunt-contrib-concat\": \"*\",\n    \"grunt-contrib-copy\": \"*\",\n    \"grunt-contrib-cssmin\": \"*\",\n    \"grunt-contrib-jshint\": \"*\",\n    \"grunt-contrib-uglify\": \"*\",\n    \"grunt-po2mo\": \"*\",\n    \"grunt-pot\": \"*\",\n    \"grunt-shell\": \"*\",\n    \"grunt-text-replace\": \"*\",\n    \"grunt-wp-deploy\": \"*\",\n    \"grunt-wp-i18n\": \"*\",\n    \"load-grunt-config\": \"*\",\n    \"load-grunt-tasks\": \"*\"\n  }\n}\n"
  },
  {
    "path": "phpunit.xml",
    "content": "<phpunit\n\tbootstrap=\"tests/bootstrap.php\"\n\tbackupGlobals=\"false\"\n\tcolors=\"true\"\n\tconvertErrorsToExceptions=\"true\"\n\tconvertNoticesToExceptions=\"true\"\n\tconvertWarningsToExceptions=\"true\"\n\t>\n\t<testsuites>\n\t\t<testsuite>\n\t\t\t<directory prefix=\"test\" suffix=\".php\">tests</directory>\n\t\t</testsuite>\n\t</testsuites>\n\t<groups>\n        <exclude>\n            <group>full-backup</group>\n        </exclude>\n    </groups>\n</phpunit>\n"
  },
  {
    "path": "readme/readme-footer.txt",
    "content": "**Further Support & Feedback**\n\nGeneral support questions should be posted in the <a href=\"http://wordpress.org/tags/backupwordpress?forum_id=10\">WordPress support forums, tagged with backupwordpress.</a>\n\nFor development issues, feature requests or anybody wishing to help out with development checkout <a href=\"https://github.com/xibodevelopment/backupwordpress/\">BackUpWordPress on GitHub.</a>\n\n== Screenshots ==\n\n1. Manage multiple schedules.\n2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email.\n3. Easily manage exclude rules and see exactly which files are included and excluded from your backup.\n\n== Upgrade Notice ==\n\n= 3.4 =\n\n* This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write\nunit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows\nusers should see major improvements to reliability.\n\n= 3.3.4 =\n\n* WordPress 4.4 compatibility.\n\n= 3.3.1 =\n\n* Fixes a bug that would prevent downloading backups since 3.3.0 - please update.\n\n= 3.2.5 =\n\n* Security fixes related to add_query_arg\n\n= 3.2.1 =\n\n* Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups.\n\n= 3.1.3 =\n\n* Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons.\n\n= 3.0.4 =\n\n* Fixes a few minor bugs. Immediate update is recommended.\n\n= 3.0.2 =\n\n* 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\n\n= 3.0.1 =\n\n* This is a critical update. Fixes a bug in the core backup library. Please update immediately.\n\n== Changelog ==\n\n### 3.10 / 2019-06-12\n\n* Fixed whitelist-html\n\n### 3.9 / 2019-06-10\n\n* Readme update\n\n### 3.8 / 2018-11-01\n\n* GNU Wording change\n\n### 3.7.2 / 2018-10-29\n\n* Check remove intercomm links\n\n### 3.7.1 / 2018-09-11\n\n* Fixed admin notices\n\n### 3.7 / 2018-08-30\n\n* Updated readme to reflect ownership changes\n* Stripped out support and premium links\n\n### 3.6.4 / 2016-06-02\n\n* Various improvements to exclusion handling.\n* i18n improvements.\n* Misc. UI improvements.\n\n### 3.6.3.1 / 2016-12-14\n\n* Fix issue where low disk space caused the admin interface to be unavailable\n* Fix issue where admin notices were causing databases and error logs to fill up\n* Improves file size calculations\n* Improves remaining disk space calculations\n* Improves file exclusion methods\n* Misc admin interface improvements\n* Misc code quality improvements and bug fixes\n\n### 3.6.2 / 2016-08-02\n\n* Improves admin performance.\n* Improves security in internationalised strings.\n\n### 3.6.1 / 2016-04-26\n\n* Bug fixes/improvements in disk space calculation\n* Misc bug fixes\n\n### 3.6.0 / 2016-03-31\n\n* Fix a bug caused by using a function incompatible with min PHP version requirements\n* Misc code quality improvements and bug fixes\n* Fix bugs in the code responsible for admin notices\n* Display disk space info\n* Uninstall cleanup\n* Introduce a dedicated extensions page\n\n### 3.5 / 2016-03-10\n\n* Reduce duplication and improve code readability when echoing filesizes\n* Improve how filesizes are handled in the Your Site list\n* Switch to storing site size data in a file, large sites could cause database errors when saving the option\n* Re-remove the PHP User and Group Requirements\n* Check that the backup file exists before attempting to check it's contents\n* Only call getPerms on readable files to ensure we avoid a fatal error\n* Ensure error are correctly check in verify_backup\n* Use Symfony Process instead of shell_exec for all our system calls\n* More unit tests\n* Update dependencies\n* Detect disabled functions defined in php.ini, now accounts for different separators.\n\n### 3.4.5 / 2016-02-23\n\n* Fix fatal error on upgrade\n\n### 3.4.4 / 2016-02-23\n\n* Ensure temporary files are correctly cleaned up before and after running a backup.\n* Avoid killing site if plugin is active on PHP 52\n* Allow custom secure key using filter\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.4-beta\n\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.3\n\n* Fix a bug where backups were not downloadable when WordPress installed in a subdirectory\n\n### 3.4.2\n\n* Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled.\n* Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling.\n* Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them.\n* 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.\n\n### 3.4.1\n\n* Fix a possible `PHP Warning` in the Schedule Sentence.\n\n### 3.4 / 2016/01/20\n\n* Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage.\n* Vastly improved Windows Server support.\n* We no longer write errors and warnings to files on disk.\n* Update to the latest version of `symfony/finder`.\n* Update to the latest version of `ifsnop/mysqldump-php`.\n\n### 3.3.4 / 2015-12-10\n\n* Fixes styling issues with WordPress 4.4\n\n### 3.3.3 / 2015-11-13\n\n* Fix broken Intercom support window\n* Fixes Typos in i18n strings\n* Backups finish faster\n* Fix an issue that caused the site size to report as twice as large as it should\n* Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`)\n\n### 3.3.2 / 2015-10-15\n\n* Misc improvements\n\n### 3.3.1 / 2015-10-12\n\n* Fix false positive error message.\n* Fix broken download links\n\n### 3.3.0 / 2015-10-09\n\n* Dropped support for PclZip\n* Fixed duplicate cron schedule interval names ( props ucavus )\n* Corrected some typos, grammar and punctuation ( props ucavus )\n* Fixed a bug in the WP CLI command ( props duritong )\n* Better message for wp-cron related errors\n* Replace 'bi-weekly' with less confusing wording\n* Fixed a few errors misc reported by code quality tool\n* Total site size display now subtracts excludes\n* Many general improvements and bug fixes\n\n#### 3.2.7 / 2015-07-27\n\n* Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful\n* Simply output arrays rather than trying to be too clever about it\n* Start tracking PDO availability through Intercom\n* Catch database and files shell_exec warnings\n* Test under PHP 5.6 in Travis\n* Use the new backupwordpress@hmn.md email address everywhere\n* Clarify how people request access to Slack and GlotPress\n* Rewrite our contributing guidelines to be more comprehensive\n* Add instructions to contributing.md\n* Revert plugin name as it doesn't make a diff in search results\n* Always return an integer\n\n#### 3.2.6 / 2015-06-09\n\n* Fixes admin page slug for multisite\n\n#### 3.2.5 / 2015-04-29\n\n* Fixes an issue when evaluating expression with empty\n* Fixes a fatal error on PHP 5.3\n* Displays other notices\n* Updates stable tag\n* Adds some escaping and sanitizing\n* Defines plugins dir for different environments\n* Adds tests for activation and deactivation hooks\n* Adds a debugging function for tests\n* Symlinks plugin into tests dir\n* Splits out deactivation code into separate functions\n* Fixes activation and deactivation hooks not being fired\n* Exclude backups folder from size calculation\n* Fixes a misplaced parenthesis\n* Fixes how error messages are bubbled up\n* get home path should return defined value\n* Removes redundant exclude statement as CVS folders are excluded by default\n* Adds a flag parameter to allow get_files to return all files including default excludes\n\n#### 3.2.4 / 2015-04-01\n\n* Fixes default exclude pattern that was too greedy.\n\n#### 3.2.3 / 2015-04-01\n\n* Fixes issue where files where 'cache' files were excluded by default.\n* Updates brazilian portuguese translations.\n* Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative.\n\n#### 3.2.2 / 2015-03-25\n\n* Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version.\n\n#### 3.2.1 / 2015-03-25\n\n* Check if shell_exec is available before running command\n* Only validate day of month if this is the schedule type\n* Make FS optional and fix the DB connect method\n* (issue-770) Exclude the folder, not the wildcard\n* (issue-751) Rename plugin\n\n#### 3.2 / 2015-03-16\n\n* (issue-698) skip mySql bug\n* Use shell_exec\n* Remove use statement\n* Revert to using shell_exec\n* Remove Process\n* (cool-runnings-757) Add back session_write_close\n* (issue-479) Hide hours and minutes for hourly backups\n* (backupception) Only load if main site on multisite\n* (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths\n* (socket-to-me-one-more-time) Fix paths\n* Use socket if available\n* Display errors\n* Put the db dump in the archive first - fixes issue with large archive\n* Dont wait for response\n* Run schedule as a Backdrop task\n* Pass array directly to function\n* (issue-759) Fix require paths\n* check PHP version before anything else\n* Move plugin class to own file\n* Skip mysql bug error\n* Delete all BWP options\n* Start the process\n* Return and check WP_Error\n* (what-time-is-backup) Extract hours and minutes from the date as an array for display\n* Change plugin description if multisite\n* Use wp_get_sites\n* Add a comment\n* We check for this on plugin instantiation\n* Revert to clearing schedule and rescheduling\n* Delete schedules and leftover options from subsites\n* Ensure plugin only runs on main site\n* Fix Too Many Schedules\n* Use Symfony Process\n* (fix-incorrect-type-error) File is an SPL object so get path\n* Set root as default param\n* Delete backdrop transient\n* Force directory sizes recalculation\n* Define VCS abbr\n* Hide exclude patterns from Excludes list.\n* Check if user can connect\n* Test that the mysqldump command works\n* Add a couple of mysql versions\n* Automatically exclude VCS folders\n* Calculate Root size correctly\n* Get default rules from backup object\n* Do not auto ignore dot files\n* Count excluded\n* Do not count excluded\n* If its the root then return its size directly\n* Fix typo in transient names\n* Set and return class property instead\n* List default excludes as such\n* Require symfony finder\n* Clear transients on deactivate\n* Get list of files with Finder\n* Load composer packages\n* These are alredy filtered\n* Add some default excludes\n* Use absolute path for excludes added via UI\n* Fix tests\n* Fix conditional\n* Fix syntax error in travis YML\n* Run codesniffer only on pull requests\n* Update tested WP versions\n* Change min WP version required to match travis CI\n* Fix readme changelog placement\n* Add condtion for Cron and Ajax\n* Fix deactivate logic\n* Fixes recursive exclusion of files\n\n\n#### 3.1.4 / 2015-02-24\n\n* (upgrade-options) Bump version\n* strtolower is redundant\n* Upgrade routine - renames service settings to avoid backslashes.\n* Use the Service name as the setting name\n* Clear settings for schedule settings\n* Fixes bug in displaying settings error notices\n* Update version number\n* Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons\n* Leave bare minimum to avoid fatal error\n* remove old main plugin class\n\n#### 3.1.3 / 2015-02-04\n\n* Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade.\n\n#### 3.1.2 / 2015-02-03\n\n* (simplify-bwp-file-timestamp) Simplify the file name timestamp\n* Fix class file name\n* (fixup-setup-class) Add missing transients to uninstall routine\n* switch Travis notifications to Slack instead of Hipchat\n* Do not delete backups on uninstall\n* wrap in parenthesis\n* Fix include paths after moving uninstall to own file herpderp\n* Update BackUp class include\n* Add all cases to switch\n* Pass scanned files sizes through conform_dir()\n* Fix some classes and requires\n* (origin/issue-684, issue-684) Fix namespaces\n* Remove unnecessary wildcard from regex\n* (crazy-refactor) Remove some duplication\n* Formatting\n* Fix Class name\n* Blank line\n* Uses a DirectoryIterator to delete files\n* Remove tests for now\n* Fix stable tag number\n* Revert to using uninstall.php\n* Add tests for uninstall and deactivate\n* Remove double lie break\n* Remove double line break\n* Remove phpdocumentor\n* We still need to require some scripts...\n* We dont need to check for this constant in the hook callback\n* Use get_col to directly have an array of schedule option names\n* Remove namespacing\n* Remove debugging\n* Make the uninstall, activation and deactivation hooks work\n* (change-singleton-implementation) Change the singleton implementation to not use the static() function\n* path argument interfers with wp-cli path argument.\n* Fix some scrutinizer issues, mostly major ones\n* Consistent default name for database dumps\n* Major 5.3 re-factoring fun\n* Minor code formatting\n* else if should be elseif\n* Update the WP_CLI command to fix some issues\n* Add support for copying and updating an existing backups\n\n#### 3.1.0 / 2015-01-13\n\n* Correct $response1 variable\n* (origin/issue-652, issue-652) Suppress warnings from filesystem functions\n* Remove debugging function\n* (origin/issue-475, issue-475) Fix a French string\n* Format the intercom data better\n* Load Intercom in the admin footer\n* Fix some HTML issues\n* Add a function that returns a given option value\n* Return Unknown if no average exists or invalid\n* Add a start parameter to function\n* Pass in the start time as a parameter\n* Make strings translatable\n* Escape values\n* Adds a function to track backup duration and another to display it\n* Adds Average Backup Duration Info\n* Improve display of arrays\n* Fixes open_basedir warnings\n* Replace spaces with tabs for indentation\n* (wp-cron-test-improvements) Improve the reliability of the wp-cron test\n* Pop in the directory sizes\n* Adapt heartbeat pulse\n* Update Javascript\n* Update constant name\n* Load the default translations so that activation error message is in user language\n* Fix a few translatable strings\n* Update French translations\n* Re-uglify Intercom js\n* Use provided callback argument to determine current screen\n* remove deprecated code\n* Only show notices on BWP admin page\n* Fix class name\n* Make function public for now\n* Get an instance of BWP to load functions\n* Fix conditional\n* Show admin notice if fails to meet requirements\n* Remove unneeded function\n* Fix references\n* Refactor main class after addition of the Setup class\n* Introduce a setup class\n* Determine if we need to run a cleanup routine\n* Introduce a custom hook for addons\n* Refactor main plugin file into a singleton class\n* Bring activation and deactivation into main plugin class\n* css changes to fix support button alignment\n* Fixes issue preventing backups from running without JS\n* Remove back compat memory limit define\n* Refactor HMBKP_Notices to support non-persistant notices\n* Minor refactor for PHP minimum requirements notice\n* Clear previous backup notices when running a new backup\n* Fix issues with custom paths\n* Improved singleton pattern\n* Display errors in network admin\n* Change to text input so multiple email address are supported\n* Removes HTML tag from string\n* Account for new schedule\n* Make upsell sentence translatable\n* fix return type\n* Return true if transient exists\n* Check if constant is defined\n* Request the site size via heartbeat send\n* Pass site size through heartbeat\n* Only calculate if necessary\n\n#### 3.0.4 / 2014-12-10\n\n  * Simplify the backup count display\n  * Enqueue scripts properly\n  * Change how we check directory_sizes\n  * Add BackUpWordPress test case class\n  * Move class to separate file\n  * Group help tab display functions\n  * Update POT file\n  * Make strings ready for translation\n\n#### 3.0.3 / 2014-12-06\n\n  * Add French translations\n  * Update textdomain\n  * Fix deleted function\n  * Use HM_Backup function to determine if shell_exec is enabled\n  * Check if file is readable first\n  * Fix how we kick off Task\n  * Remove unused var\n  * Call recursive filescanner on admin page load\n  * Update package.json\n  * Update the POT file task params\n  * Replace hmbkp with backupwordpress as textdomain\n  * Exclude folders\n  * Add Grunt task options\n  * Remove hard line returns\n  * Display placeholder if exec fails\n  * Add 30 second time diff allowance\n  * Use $TRAVIS_BUILD_DIR\n  * we do this in travis.yml\n  * Regenerate github account info\n  * Update command to reflect function rename\n  * Update tests to reflect function name change\n  * Rename function\n  * Filter tests to run\n  * Fix group flags\n  * Calculate site size on page load\n\n#### 3.0.2 / 2014-12-02\n\n  * Bump version\n  * Add parenthesis to require_once\n  * Remove disk space info\n  * Attempt to fix build\n  * define WP_TESTS_DIR\n  * Make sure current_action fnction is loaded\n  * Remove extra slashes and semicolons\n  * Remove the custom webhook service\n  * Better default WP_TESTS_DIR\n  * move trailingslash calls out of the loop for performance\n  * Minor code cleanup\n  * Correct path for hm-backup so it's tests are run\n  * add composer.lock\n  * Use scrutinizer code coverage\n  * add waffle.io badge\n  * Use up to date commands for coverage\n  * Add code rating\n  * Don't test 5.2\n  * Update readme.md\n  * excluded_dirs is deprecated\n  * Update scrutinizer config\n  * Add composer config and dev dependencies\n  * Make PHPUnit generate an XML for coveralls\n  * Add scrutinizer config\n  * Ignore vendor dir\n  * Add a link to Help page\n  * Move to activation hook\n  * Bump up required WP version\n  * Escape all the things\n  * Save errors to a notices option\n  * Reload page on errors\n  * Remove script\n  * Remove unneeded class\n  * Check PHP version on plugins loaded\n  * Check PHP version on activate\n  * Update readme\n  * Set required version to 5.3.2\n  * Update tests\n  * Allow for a 30 second delta in asserting schedule time\n  * Use the new build env on Travis\n  * Restrict plugin to be network only\n  * Fix admin URL logic\n  * Formatting\n  * Update readme changelog\n\n#### 3.0.1 / 2014-11-20\n\n  * remove uneeded images\n  * latest hm-backup / fixes a serious bug in backups.\n  * Typos in v 3.0 changelog\n  * Specify POT filename in grunt task\n  * Update POT file\n  * Markdown readme\n  * Regenerate readme\n  * Add plugin headers\n\n#### 3.0 / 2014-11-14\n\n  * Refactor the recursive filesize scanner\n  * correct text domain\n  * Remove unneede statements\n  * reload the excludes filelist in the correct place when someone excludes a file\n  * Latest backdrop\n  * Regenerate minified CSS\n  * Regenerate minified JS\n  * Fix cancel backup action\n  * WordPress Coding Standards\n  * Exit early if incompatible version of WordPress\n  * Update translations\n  * Update changelog\n\n#### 3.0.0-beta / 2014-09-08\n\n  * Load minified CSS\n  * Formatting\n  * Biweekly wording\n  * Add missing period\n  * use nonce_url instead of manually adding the nonce query param\n  * close the settings form when done\n  * Design changes as per ticket\n  * Start tracking langauge in server info\n  * Right align the primary button in the enable support modal\n  * Re-factor the directory filesize code to use a single array instead of thoussands of transients\n  * 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\n  * switch to using a single transient to store directory filesize data\n  * Add an anchor link\n  * Add error message\n  * Rename function\n  * Prefix GET params\n  * Update exclude rule action\n  * Adds function for building admin action urls\n  * fix vertical scroll\n  * Adds some functions to manage settings form submission errors\n  * Rename nonce and action\n  * fetch errors to display\n  * Form submission handling for BWP and add-ons settings\n  * Use a new function that persists form submission errors to  a transient\n  * None check\n  * Pass the nonce around in the ajax request\n  * Enable support action links\n  * Check nonces\n  * Modify action URLs to use the admin_post hook\n  * Remove unneeded code\n  * New line at end\n  * Use admin_post hook\n  * Display schedule start time in local timezone\n  * Add an action hook that gives access to consumers to the backup progress\n * Update translatable strings POT file\n * Bump version\n * Update min WP version and tested up to\n * accidently used dash instead of underscore\n * namespaced option and added option to uninstall.php\n * basic show/hide of premium upsell\n * Fix incorrect transient expiry\n * Show the spinner in the tab if a schedule other than the current is running\n * Snip snip\n * Bring back the some javascript enhancements\n * Switch to the PHP 5.2 compatible version of Backdrop\n * Finish up support\n * Brace up single line if's and foreach's\n * Only load minified scripts and styles if WP_DEBUG isn't on\n * Load the minified css and js files by default\n * Remove the combined css files as we only have one now. Stop loading colorbox.\n * Remove colorbox\n * Improvements\n * More improvements\n * Don't die when directly running a backup on page load\n * Re-factor the backup filesize calculation\n * make capability filterable\n * use core capabilities instead of custom\n * Switch to Backdrop\n * Fix typo in prefix\n * Hook function onto admin_post\n * Update delete link\n * Bookmark current admin page for redirect\n * Add custom capabilities and role\n * Exclude BackUpWP by default\n * Ignore the build folder\n * Add more build excludes\n * minify JS\n * generate markdown readme\n * minify css\n * combine css\n * regenerate readme\n * Make links consistent for the grunt task\n * Convert URLS to markdown\n * Update lang files\n * Add colorbox as bower dependency\n * remove colorbox folder\n * Remove colorbox submodule\n * Change how we include FAQ\n * Add readme partials\n * Add package.json\n * Add Gruntfile\n * Add bower.json\n * JSHint rules\n * remove from ignore\n * Update ignore list\n * Add bower config\n * Add FAQ strings\n * Return the cached directory size early if we have it\n * Re-factor the file browser scanner\n * correct sprintf usage\n * Handle saving service forms\n * Codeing standards\n * Move the error check outside of the foreach\n * Remove uneeded $is_tab_visible\n * Only show excludes for backups which include files\n * Show destinations in the list of schedule links\n * WordPress standard modal for enabling support\n * Remove extra slash in include path\n * Add a heading to the settings form\n * More work on excludes\n * Another todo\n * Add some todos\n * Don't include the parent directory in a browsable list\n * More work on Excludes\n * Switch to only storing 3 backups by default\n * More work on redesign\n * commented out enable support button till we figure out what to do with it\n * made tabs responsive below 639px\n * More work on redesign\n * Add more default excludes\n * Correctly highlight the tab for the first schedule\n * Switch to tabs instead of subsubsub\n * First bash at a redesign settings UX\n\n#### 2.6.2\n\n* 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.\n\n#### 2.6.1\n\n* Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch.\n* Fix an issues that could cause schedule times to fail to account for timezone differences.\n* Add a nonce check to the schedule settings.\n* Fix a possible JS warning when removing an exclude rule.\n* Our unit tests now run in PHP 5.2 again.\n\n#### 2.6\n\n* It's now possible to choose the time and day that your schedule will run on.\n* Introduces several new unit tests around schedule timings.\n* Fixes a bug that could cause the hourly schedule to run constantly.\n* Improved the layout of the Constants help panel.\n* If the backup root directory is unreadable then the plugin will no longer function.\n* Update the backups table match the standard WordPress table styles.\n* Improved styling for the settings dialogue.\n* Improved styling for the Server Info help tab.\n* /s/back ups/backups.\n* Remove Deprecated call to `screen_icon`.\n* Updated French translation.\n* Update the `WP CLI` command to use the new method for registering command.\n* Reload the schedules when re-setting up the default schedules so they show up straight away.\n* s/dpesnt't/doesn't.\n* Only show the estimated total schedule size when editing an existing schedule.\n* Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show.\n* Disable buttons whilst ajax requests are running.\n* Move spinners outside the buttons as they didn't look very good inside.\n* Improve the detection of the home path on multisite installs which have WordPress in a subdirectory.\n* Track the time that the running backup is started and display how long a backup has been running for.\n* Fix an issue that meant it wasn't possible to run multiple manual backups at the same time.\n* Many other minor improvements.\n\n#### 2.5\n\n* BackUpWordPress now requires WordPress 3.7.1 as a minimum.\n* Remove some old back-compat code that was required because we supported older WP versions.\n* It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter.\n* The spinner is now retina!\n* 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`.\n* Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests\n* Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations.\n* Improve the display of the server info in the enable support popup.\n* New screenshots\n* Use `wp_safe_redirect` for internal redirects.\n* Use `wp_is_writable` instead of `is_writable`.\n\n\n#### 2.4.2\n\n* In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.\n* Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout\n* Fixed 3 stray PHP warnings.\n* BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.\n* Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.\n\n#### 2.4.1\n\n* Add missing colorbox images\n\n#### 2.4\n\n* Support for new premium extensions for storing backups in a variety of online services.\n* Exclude the WP DB Manager backups and WP Super Cache cache directories by default.\n* We now use Intercom to offer support directly from within the plugin, opt-in of course.\n* More i18n fixes / improvements.\n* We no longer show download links if your backups directory isn't web accessible.\n* Fix a bug that caused the plugin activation and deactivation hooks from firing.\n* Correctly handle `MYSQL TIMESTAMP` columns in database dumps.\n* `mysqldump` and `zip` are now correctly recognised on SmartOS.\n* Schedule names are now translatable.\n* Avoid having to re-calculate the filesize when a schedules type is set.\n* Compatibility with WordPress 3.8\n\n\n#### 2.3.2\n\n* Correct version number.\n\n#### 2.3.1\n\n* Fix a PHP strict error.\n* Save and close as separate buttons.\n* Fix bug that caused multiple notification emails.\n* Fixes typo in database option name.\n* Updated translations.\n* Improve PHP docblocks.\n* Make schedules class a singleton.\n* Exclude popular backup plugin folders by default.\n* Exclude version control folders by default.\n* Fix broken localisation.\n* Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions\n*\n\n#### 2.3\n\n* Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible.\n* Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section.\n* Correct filename for some mis-named translation files.\n* Show the total estimated disk space a schedule could take up (max backups * estimated site size).\n* Fix a typo (your -> you're).\n* Use the new time Constants and define backwords compatible ones for > than 3.5.\n* Play nice with custom cron intervals.\n* Main plugin file is now `backupwordpress.php` for consistency.\n* Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul!\n* Don't remove non-backup files from custom backup paths.\n* Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups.\n* When moving paths only move backup files.\n* Make some untranslatable strings translatable.\n* 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.\n* Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value.\n* Remove help text for deprecated `HMBKP_EMAIL`.\n* 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`.\n* Silence a `PHP Warning` if `mysql_pconnect` has been disabled.\n* Ensure dot directories `.` & `..` are always skipped when looping the filesystem.\n* Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`.\n* Fix issues on IIS that could cause the root directory to be incorrectly calculated.\n* Fix an issue on IIS that could cause the download backup url to be incorrect.\n* Fix an issue on IIS that could mean your existing backups are lost when moving backup directory.\n* Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist.\n* All unit tests now pass under IIS on Windows.\n* Prefix the backup directory with `backupwordpress-` so that it's easier to identify.\n* Re-calculate the backup directory name on plugin update and move backups.\n* Fix some issues with how `HMBKP_SECURE_KEY` was generated.\n\n#### 2.2.4\n\n* Fix a fatal error on PHP 5.2, sorry! (again.)\n\n#### 2.2.3\n\n* Fix a parse error, sorry!\n\n#### 2.2.2\n\n* Fix a fatal error when uninstalling.\n* Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch.\n* Fix a possible notice when using the plugin on a server without internet access.\n* Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true.\n* Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant.\n* Nonce some ajax request.\n* Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled.\n* Handle situations where the mysql port is set to something wierd.\n* Fallback to `mysql_connect` on system that disable `mysql_pconnect`.\n* You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`.\n* Unit tests for `HM_Backup::is_safe_mode_available()`.\n* Silence possible PHP Warnings when unlinking files.\n\n#### 2.2.1\n\n* Stop storing a list of unreadable files in the backup warnings as it's too memory intensive.\n* Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers.\n* Show all errors and warnings in the popup shown when a manual backup completes.\n* Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process.\n* Fix a couple of `PHP E_STRICT` notices.\n* Catch more errors during the manual backup process and expose them to the user.\n\n#### 2.2\n\n* Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable.\n* Show the correct path in the warning message when the backups path can't be created.\n* Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY.\n* Stop relying on the built in WordPress schedules as other plugins can mess with them.\n* Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up.\n* Improve modals on small screens and mobile devices.\n* Use the retina spinner on retina screens.\n* Update buttons to the new 3.5 style.\n* Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction.\n* Fix an issue that could cause backups using PclZip with a custom backups path to fail.\n* Security hardening by improving escaping, sanitizitation and validation.\n* Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites.\n* Only clear the cached backup filesize if the backup type changes.\n* Add unit tests for all the schedule recurrences.\n* Fix an issue which could cause weekly and monthly schedules to fail.\n* Add an `uninstall.php` file which removes all BackUpWordPress data and options.\n* Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`.\n* Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file.\n\n#### 2.1.3\n\n* Fix a regression in `2.1.2` that broke previewing and adding new exclude rules.\n\n#### 2.1.2\n\n* Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests.\n* Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains.\n* The mysqldump fallback function will now be used if `mysqldump` produces an empty file.\n* Fix a possible PHP `NOTICE` on Apache servers.\n\n#### 2.1.1\n\n* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.\n* Don't use functions from misc.php as loading it too early can cause fatal errors.\n* Don't hardcode an English string in the JS, use the translated string instead.\n* Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.\n* Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.\n* Fix a possible double full stop at the end of the schedule sentence.\n* Minor code cleanup.\n\n#### 2.1\n\n* Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.\n* Fix possible fatal error when setting schedule to monthly.\n* Fix issues with download backup not working on some shared hosts.\n* Fix issuses with download backup not working on sites with strange characters in the site name.\n* Fix a bug could cause the update actions to fire on initial activation.\n* Improved reliability when changing backup paths, now with Unit Tests.\n* 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.\n* Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled.\n* Prepend a random string to the backups directory to make it harder to brute force guess.\n* Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable.\n* Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support.\n* Provide more granular status messages during the backup process.\n* Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing.\n* Improve the feedback when removing an exclude rule.\n* 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.\n* Add a line encouraging people to rate the plugin if they like it.\n* Change the support line to point to the FAQ before recommending they contact support.\n* Fix the link to the \"How to Restore\" post in the FAQ.\n* Some string changes for translators, 18 changed strings.\n\n#### 2.0.6\n\n* Fix possible warning on plugin activation if the sites cron option is empty.\n* Don't show the version warning in the help for Constants as that comes from the current version.\n\n#### 2.0.5\n\n* Re-setup the cron schedules if they get deleted somehow.\n* Delete all BackUpWordPress cron entries when the plugin is deactivated.\n* Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run.\n* Make sure the schedule times and times of previous backups are shown in local time.\n* 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.\n* Improve the usefulness of the `wp-cron.php` response code check.\n* Use the built in `site_format` function for human readable filesizes instead of defining our own function.\n\n#### 2.0.4\n\n* Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.\n\n#### 2.0.3\n\n* Fix issues with scheduled backups not firing in some cases.\n* Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.\n* Catch and display more WP Cron errors.\n* BackUpWordPress now fails to activate on WordPress 3.3.2 and below.\n* Other minor fixes and improvements.\n\n#### 2.0.2\n\n* Only send backup failed emails if the backup actually failed.\n* Turn off the generic \"memory limit probably hit\" message as it was showing for too many people.\n* Fix a possible notice when the backup running filename is blank.\n* Include the `wp_error` response in the cron check.\n\n#### 2.0.1\n\n* Fix fatal error on PHP 5.2.\n\n#### 2.0\n\n* Ability to have multiple schedules with separate settings & excludes per schedule.\n* Ability to manage exclude rules and see exactly which files are included and excluded.\n* Fix an issue with sites with an `open_basedir` restriction.\n* Backups should now be much more reliable in low memory environments.\n* Lots of other minor improvements and bug fixes.\n\n#### 1.6.9\n\n* Updated and improved translations across the board - props @elektronikLexikon.\n* German translation - props @elektronikLexikon.\n* New Basque translation - props Unai ZC.\n* New Dutch translation - Anno De Vries.\n* New Italian translation.\n* Better support for when WordPress is installed in a sub directory - props @mattheu\n\n\n#### 1.6.8\n\n* French translation props Christophe - http://catarina.fr.\n* Updated Spanish Translation props DD666 - https://github.com/radinamatic.\n* Serbian translation props StefanRistic - https://github.com/StefanRistic.\n* Lithuanian translation props Vincent G - http://www.Host1Free.com.\n* Romanian translation.\n* Fix conflict with WP Remote.\n* Fix a minor issue where invalid email address's were still stored.\n* The root path that is backed up can now be controlled by defining `HMBKP_ROOT`.\n\n#### 1.6.7\n\n* Fix issue with backups being listed in reverse chronological order.\n* Fix issue with newest backup being deleted when you hit your max backups limit.\n* It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.\n* Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`.\n* Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform.\n* Updated Spanish translation.\n* Fix a minor spelling mistake.\n* Speed up the manage backups page by caching the FAQ data for 24 hours.\n\n#### 1.6.6\n\n* Fix backup path issue with case sensitive filesystems.\n\n#### 1.6.5\n\n* Fix an issue with emailing backups that could cause the backup file to not be attached.\n* Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd.\n* Never show the running backup in the list of backups.\n* Show an error backup email failed to send.\n* Fix possible notice when deleting a backup file which doesn't exist.\n* Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`.\n* Make `HMBKP_SECURE_KEY` override-able.\n* BackUpWordPress should now work when `ABSPATH` is `/`.\n\n#### 1.6.4\n\n* Don't show warning message as they cause to much panic.\n* Move previous methods errors to warnings in fallback methods.\n* Wrap `.htaccess` rewrite rules in if `mod_rewrite` check.\n* Add link to new restore help article to FAQ.\n* Fix issue that could cause \"not using latest stable version\" message to show when you were in-fact using the latest version.\n* Bug fix in `zip command` check that could cause an incorrect `zip` path to be used.\n* Detect and pass `MySQL` port to `mysqldump`.\n\n#### 1.6.3\n\n* Don't fail archive verification for errors in previous archive methods.\n* Improved detection of the `zip` and `mysqldump` commands.\n* Fix issues when `ABSPATH` is `/`.\n* Remove reliance on `SECURE_AUTH_KEY` as it's often not defined.\n* Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`.\n* Fix download zip on Windows when `ABSPATH` contains a trailing forward slash.\n* Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.\n* Add missing / to `PCLZIP_TEMPORARY_DIR` define.\n* Catch and display errors during `mysqldump`.\n\n#### 1.6.2\n\n* Track `PHP` errors as backup warnings not errors.\n* Only show warning message for `PHP` errors in BackUpWordPress files.\n* Ability to dismiss the error / warning messages.\n* Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites.\n* Don't delete \"number of backups\" setting on update.\n* Better handling of multibyte characters in archive and database dump filenames.\n* Mark backup as running and increase callback timeout to `500` when firing backup via ajax.\n* Don't send backup email if backup failed.\n* Filter out duplicate exclude rules.\n\n#### 1.6.1\n\n* Fix fatal error on PHP =< 5.3\n\n#### 1.6\n\n* Fixes issue with backups dir being included in backups on some Windows Servers.\n* Consistent handling of symlinks across all archive methods (they are followed).\n* Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.\n* Track errors and warnings that happen during backup and expose them through admin.\n* Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed.\n* Ability to cancel a running backup.\n* Zip files are now integrity checked after every backup.\n* More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.\n* Use `mysql_query` instead of the depreciated `mysql_list_tables`.\n\n#### 1.5.2\n\n* Better handling of unreadable files in ZipArchive and the backup size calculation.\n* Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]`\n\n#### 1.5.1\n\n* Better detection of `zip` command.\n* Don't delete user settings on update / deactivate.\n* Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed.\n* Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.\n* Improved the speed of the backup size calculation.\n\n#### 1.5\n\n* Re-written core backup engine should be more robust especially in edge case scenarios.\n* 48 unit tests for the core backup engine, yay for unit tests.\n* Remove some extraneous status information from the admin interface.\n* Rename Advanced Options to Settings\n* New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed.\n* Suppress possible filemtime warnings in some edge cases.\n* 3.3 compatability.\n* Set proper charset of MySQL backup, props valericus.\n* Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.\n\n#### 1.4.1\n\n* 1.4 was incorrectly marked as beta.\n\n#### 1.4\n\n* Most options can now be set on the backups page, all options can still be set by defining them as `Constants`.\n* Russian translation, props valericus.\n* All dates are now translatable.\n* Fixed some strings which weren't translatable.\n* New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups.\n* Manual backups now work if `DISABLE_WP_CRON` is defined as `true`.\n\n#### 1.3.2\n\n* Spanish translation\n* Bump PHP version check to 5.2.4\n* Fallback to PHP mysqldump if shell_exec fails for any reason.\n* Silently ignore unreadable files / folders\n* Make sure binary data is properly exported when doing a mysqldump\n* Use 303 instead of 302 when redirecting in the admin.\n* Don't `set_time_limit` inside a loop\n* Use WordPress 3.2 style buttons\n* Don't pass an empty password to mysqldump\n\n#### 1.3.1\n\n* Check for PHP version. Deactivate plugin if running on PHP version 4.\n\n#### 1.3\n\n* Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.\n* 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.\n* Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.\n* Work around issues caused by low MySQL `wait_timeout` setting.\n* Add FAQ to readme.txt.\n* Pull FAQ into the contextual help tab on the backups page.\n* Block activation on old versions of WordPress.\n* Stop guessing compressed backup file size, instead just show size of site uncompressed.\n* Fix bug in `safe_mode` detection which could cause `Off` to act like `On`.\n* Better name for the database dump file.\n* Better name for the backup files.\n* Improve styling for advanced options.\n* Show examples for all advanced options.\n* Language improvements.\n* Layout tweaks.\n\n#### 1.2\n\n* Show live backup status in the back up now button when a back up is running.\n* Show free disk space after total used by backups.\n* Several langauge changes.\n* Work around the 1 cron every 60 seconds limit.\n* Store backup status in a 2 hour transient as a last ditch attempt to work around the \"stuck on backup running\" issue.\n* Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.\n* Highlight defined `Constants`.\n* Show defaults for all `Constants`.\n* Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time.\n* Make sure options added in 1.1.4 are cleared on de-activate.\n* Support `mysqldump on` Windows if it's available.\n* New option to have each backup emailed to you on completion. Props @matheu for the contribution.\n* Improved windows server support.\n\n#### 1.1.4\n\n* 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.\n* Don't suppress `mysql_connect` errors in the mysqldump PHP fallback.\n* One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.\n* Fix a spelling error in the `shell_exec` disabled message.\n* Store the BackUpWordPress version as a `Constant` rather than a `Variable`.\n* Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.\n* Minor PHPDoc improvements.\n\n#### 1.1.3\n\n* 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.\n* 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.\n\n#### 1.1.2\n\n* Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working.\n\n#### 1.1.1\n\n* Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`.\n* Clear the running backup status and reset the calculated filesize on update.\n* Show a link to the manage backups page in the plugin description.\n* Other general fixes.\n\n#### 1.1\n\n* Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.\n* Expose the various `Constants` that can be defined to change advanced settings.\n* Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`.\n* Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`.\n* Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );`\n* Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );`\n* Tweaks to the backups page layout.\n* General bug fixes and improvements.\n\n#### 1.0.5\n\n* Don't ajax load estimated backup size if it's already been calculated.\n* Fix time in backup complete log message.\n* Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.\n* Show number of backups saved message.\n* Add a link to the backups page to the plugin action links.\n\n#### 1.0.4\n\nDon't throw PHP Warnings when `shell_exec` is disabled\n\n#### 1.0.3\n\nMinor bug fix release.\n\n* Suppress `filesize()` warnings when calculating backup size.\n* Plugin should now work when symlinked.\n* Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.\n* Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.\n* Don't ajax ping running backup status quite so often.\n\n#### 1.0.1 & 1.0.2\n\nFix some silly 1.0 bugs\n\n#### 1.0\n\n1.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)\n\n#### Previous\n\nVersion 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/)\n"
  },
  {
    "path": "readme/readme-header.txt",
    "content": "=== BackUpWordPress ===\nContributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance\nTags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment\nRequires at least: 3.9\nTested up to: 5.1\nStable tag: 3.10\n\nSimple automated backups of your WordPress-powered website.\n\n== Description ==\n\nBackUpWordPress 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!\n\nThis plugin requires PHP version 5.3.2 or later\n\n= Features =\n\n* Super simple to use, no setup required.\n* Works in low memory, \"shared host\" environments.\n* Manage multiple schedules.\n* Option to have each backup file emailed to you.\n* Uses `zip` and `mysqldump` for faster backups if they are available.\n* Works on Linux & Windows Server.\n* Exclude files and folders from your backups.\n* Good support should you need help.\n* Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque.\n\n= Help develop this plugin =\n\nThe BackUpWordPress plugin is hosted on GitHub, if you want to help out with development or testing then head over to <a href=\"https://github.com/xibodevelopment/backupwordpress/\">BackUpWordPress on GitHub.</a>\n\n= Translations =\n\nWe'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.\n\n== Installation ==\n\n1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server.\n2. Activate the plugin.\n3. Sit back and relax safe in the knowledge that your whole site will be backed up every day.\n\nThe 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.\n\n== Frequently Asked Questions ==\n"
  },
  {
    "path": "readme.md",
    "content": "## BackUpWordPress\nSimple automated backups of your WordPress powered website.\n\nBackUpWordPress is a well tested, onsite backup plugin for WordPress. It's supports sending backups to cloud services through premium extensions\n\nStop using outdated practices, and start making sense.\n\n## Requirements\nBackUpWordPress requires WordPress 3.9 or newer and requires PHP 5.3+ due to the use of namespaced code.\n\n## Installation\nIn order to develop / add to this plugin, you will need to do the following in order to compile:\n\n== NPM ==\n\nRun `npm install`\n\n== Composer ==\n\nRun `composer install`\n\n== Grunt ==\nInstall `npm install -g grunt-cli`\nInstall `npm install grunt --save-dev`\nInstall `npm install -D load-grunt-config`\nRun `grunt build`\n\n## Contributing\nRead our [contributing.md](https://github.com/xibodevelopment/backupwordpress/blob/master/CONTRIBUTING.md) file\n\n\n## License\nBackUpWordPress is licensed under the GPLv2 or later.\n\n## Credits\nMaintained by [XIBO Ltd](https://github.com/xibodevelopment).\n\nCreated by Human Made for high volume and large-scale sites. BackUpWordPress is used on over 200,000 sites worldwide.\n\nWritten 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).\n\nBackUpWordPress was originally developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/) before being taken over by Human Made.\n\n---"
  },
  {
    "path": "readme.txt",
    "content": "=== BackUpWordPress ===\nContributors: xibodevelopment, willmot, dashaluna, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier, katmoody, sambulance, dnutbourne, snightingale\nTags: back up, backup, backups, database, zip, db, files, archive, wp-cli, xibodevelopment\nRequires at least: 3.9\nTested up to: 5.1\nStable tag: 3.10\n\nSimple automated backups of your WordPress-powered website.\n\n== Description ==\n\nBackupWordPress 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.\nWe'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/)\n\nHowever, 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.\nFor 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). \n\nBackUpWordPress 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!\n\nThis plugin requires PHP version 5.3.2 or later\n\n= Features =\n\n* Super simple to use, no setup required.\n* Works in low memory, \"shared host\" environments.\n* Manage multiple schedules.\n* Option to have each backup file emailed to you.\n* Uses `zip` and `mysqldump` for faster backups if they are available.\n* Works on Linux & Windows Server.\n* Exclude files and folders from your backups.\n* Good support should you need help.\n* Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque.\n\n= Help develop this plugin =\n\nThe 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/)\n= Translations =\n\nWe'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.\n\n== Installation ==\n\n1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server.\n2. Activate the plugin.\n3. Sit back and relax safe in the knowledge that your whole site will be backed up every day.\n\nThe 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.\n\n== Frequently Asked Questions ==\n\n\n**Where does BackUpWordPress store the backup files?**\n\nBackups are stored on your server in `/wp-content/backups`, you can change the directory.\n\nImportant: 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.\n\n**What if I want to back up my site to another destination?**\n\nWe 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).\n\n**How do I restore my site from a backup?**\n\nYou 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`).\n\n**Does BackUpWordPress back up the backups directory?**\n\nNo.\n\n**I'm not receiving my backups by email**\n\nMost 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.\n\n**How many backups are stored by default?**\n\nBackUpWordPress stores the last 10 backups by default.\n\n**How long should a backup take?**\n\nUnless 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.\n\n**What do I do if I get the wp-cron error message?**\n\nThe 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.\n\nThere are some things you can test to confirm this is the issue.\n\n\t * Are scheduled posts working? (They use wp-cron as well.)\n\n\t * Are you hosted on Heart Internet? (wp-cron may not be supported by Heart Internet, see below for work-around.)\n\n\t * If you click manual backup, does it work?\n\n\t * Try adding `define( 'ALTERNATE_WP_CRON', true );` to your `wp-config.php`. Do automatic backups work?\n\n\t * 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?\n\n**How to get BackUpWordPress working in Heart Internet**\n\nThe 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`.\n\n**My backups seem to be failing?**\n\nIf 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 <a href=\"http://wordpress.org/support/plugin/backupwordpress\" title=\"support forums\" target=\"_blank\">support forums</a>\n\n**Further Support & Feedback**\n\nGeneral support questions should be posted in the <a href=\"http://wordpress.org/tags/backupwordpress?forum_id=10\">WordPress support forums, tagged with backupwordpress.</a>\n\nFor development issues, feature requests or anybody wishing to help out with development checkout <a href=\"https://github.com/orgs/xibodevelopment/backupwordpress/\">BackUpWordPress on GitHub.</a>\n\n== Screenshots ==\n\n1. Manage multiple schedules.\n2. Choose your schedule, backup type, number of backups to keep and whether to receive a notification email.\n3. Easily manage exclude rules and see exactly which files are included and excluded from your backup.\n\n== Upgrade Notice ==\n\n= 3.4 =\n\n* This version introduces a major refactoring of the code responsible for the core backup engine. We made sure to write\nunit tests for the new code, and we have tested it on several user's sites. It fixes a lot of old bugs, and Windows\nusers should see major improvements to reliability.\n\n= 3.3.4 =\n\n* WordPress 4.4 compatibility.\n\n= 3.3.1 =\n\n* Fixes a bug that would prevent downloading backups since 3.3.0 - please update.\n\n= 3.2.5 =\n\n* Security fixes related to add_query_arg\n\n= 3.2.1 =\n\n* Important bug fixes. Please upgrade to this version to avoid incomplete or broken backups.\n\n= 3.1.3 =\n\n* Fixes backwards compatibility for add-ons and avoids a Fatal Error. Please upgrade straight to this version before upgrading your add-ons.\n\n= 3.0.4 =\n\n* Fixes a few minor bugs. Immediate update is recommended.\n\n= 3.0.2 =\n\n* 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\n\n= 3.0.1 =\n\n* This is a critical update. Fixes a bug in the core backup library. Please update immediately.\n\n== Changelog ==\n\n### 3.10 / 2019-06-12\n\n* Fixed whitelist-html\n\n### 3.9 / 2019-06-10\n\n* Readme update\n\n### 3.8 / 2018-11-01\n\n* GNU Wording change\n\n### 3.7.2 / 2018-10-29\n\n* Check remove intercomm links\n\n### 3.7.1 / 2018-09-11\n\n* Fixed admin notices\n\n### 3.7 / 2018-08-30\n\n* Updated readme to reflect ownership changes\n* Stripped out support and premium links\n\n### 3.6.4 / 2016-06-02\n\n* Various improvements to exclusion handling.\n* i18n improvements.\n* Misc. UI improvements.\n\n### 3.6.3.1 / 2016-12-14\n\n* Fix issue where low disk space caused the admin interface to be unavailable\n* Fix issue where admin notices were causing databases and error logs to fill up\n* Improves file size calculations\n* Improves remaining disk space calculations\n* Improves file exclusion methods\n* Misc admin interface improvements\n* Misc code quality improvements and bug fixes\n\n### 3.6.2 / 2016-08-02\n\n* Improves admin performance.\n* Improves security in internationalised strings.\n\n### 3.6.1 / 2016-04-26\n\n* Bug fixes/improvements in disk space calculation\n* Misc bug fixes\n\n### 3.6.0 / 2016-03-31\n\n* Fix a bug caused by using a function incompatible with min PHP version requirements\n* Misc code quality improvements and bug fixes\n* Fix bugs in the code responsible for admin notices\n* Display disk space info\n* Uninstall cleanup\n* Introduce a dedicated extensions page\n\n### 3.5 / 2016-03-10\n\n* Reduce duplication and improve code readability when echoing filesizes\n* Improve how filesizes are handled in the Your Site list\n* Switch to storing site size data in a file, large sites could cause database errors when saving the option\n* Re-remove the PHP User and Group Requirements\n* Check that the backup file exists before attempting to check it's contents\n* Only call getPerms on readable files to ensure we avoid a fatal error\n* Ensure error are correctly check in verify_backup\n* Use Symfony Process instead of shell_exec for all our system calls\n* More unit tests\n* Update dependencies\n* Detect disabled functions defined in php.ini, now accounts for different separators.\n\n### 3.4.5 / 2016-02-23\n\n* Fix fatal error on upgrade\n\n### 3.4.4 / 2016-02-23\n\n* Ensure temporary files are correctly cleaned up before and after running a backup.\n* Avoid killing site if plugin is active on PHP 52\n* Allow custom secure key using filter\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.4-beta\n\n* Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.\n\n### 3.4.3\n\n* Fix a bug where backups were not downloadable when WordPress installed in a subdirectory\n\n### 3.4.2\n\n* Remove the usage of `shell_exec` in two of our warning messages, fixes a PHP Warning on systems with it disabled.\n* Improve how we handle `open_basedir` restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover `open_basedir` handling.\n* Show an error message if neither `mysqldump` nor `PDO:mysql` are available. Database backups won't work without at least one of them.\n* 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.\n\n### 3.4.1\n\n* Fix a possible `PHP Warning` in the Schedule Sentence.\n\n### 3.4 / 2016/01/20\n\n* Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage.\n* Vastly improved Windows Server support.\n* We no longer write errors and warnings to files on disk.\n* Update to the latest version of `symfony/finder`.\n* Update to the latest version of `ifsnop/mysqldump-php`.\n\n### 3.3.4 / 2015-12-10\n\n* Fixes styling issues with WordPress 4.4\n\n### 3.3.3 / 2015-11-13\n\n* Fix broken Intercom support window\n* Fixes Typos in i18n strings\n* Backups finish faster\n* Fix an issue that caused the site size to report as twice as large as it should\n* Adds PHP mysqldump fallback lib (`ifsnop/mysqldump-php`)\n\n### 3.3.2 / 2015-10-15\n\n* Misc improvements\n\n### 3.3.1 / 2015-10-12\n\n* Fix false positive error message.\n* Fix broken download links\n\n### 3.3.0 / 2015-10-09\n\n* Dropped support for PclZip\n* Fixed duplicate cron schedule interval names ( props ucavus )\n* Corrected some typos, grammar and punctuation ( props ucavus )\n* Fixed a bug in the WP CLI command ( props duritong )\n* Better message for wp-cron related errors\n* Replace 'bi-weekly' with less confusing wording\n* Fixed a few errors misc reported by code quality tool\n* Total site size display now subtracts excludes\n* Many general improvements and bug fixes\n\n#### 3.2.7 / 2015-07-27\n\n* Pass schedule type instead of schedule id as context for the calculated sizes, it's more useful\n* Simply output arrays rather than trying to be too clever about it\n* Start tracking PDO availability through Intercom\n* Catch database and files shell_exec warnings\n* Test under PHP 5.6 in Travis\n* Use the new backupwordpress@hmn.md email address everywhere\n* Clarify how people request access to Slack and GlotPress\n* Rewrite our contributing guidelines to be more comprehensive\n* Add instructions to contributing.md\n* Revert plugin name as it doesn't make a diff in search results\n* Always return an integer\n\n#### 3.2.6 / 2015-06-09\n\n* Fixes admin page slug for multisite\n\n#### 3.2.5 / 2015-04-29\n\n* Fixes an issue when evaluating expression with empty\n* Fixes a fatal error on PHP 5.3\n* Displays other notices\n* Updates stable tag\n* Adds some escaping and sanitizing\n* Defines plugins dir for different environments\n* Adds tests for activation and deactivation hooks\n* Adds a debugging function for tests\n* Symlinks plugin into tests dir\n* Splits out deactivation code into separate functions\n* Fixes activation and deactivation hooks not being fired\n* Exclude backups folder from size calculation\n* Fixes a misplaced parenthesis\n* Fixes how error messages are bubbled up\n* get home path should return defined value\n* Removes redundant exclude statement as CVS folders are excluded by default\n* Adds a flag parameter to allow get_files to return all files including default excludes\n\n#### 3.2.4 / 2015-04-01\n\n* Fixes default exclude pattern that was too greedy.\n\n#### 3.2.3 / 2015-04-01\n\n* Fixes issue where files where 'cache' files were excluded by default.\n* Updates brazilian portuguese translations.\n* Fixes the issue with the 'no thanks' button in the Support modal and misc JS improvements. props SiamKreative.\n\n#### 3.2.2 / 2015-03-25\n\n* Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version.\n\n#### 3.2.1 / 2015-03-25\n\n* Check if shell_exec is available before running command\n* Only validate day of month if this is the schedule type\n* Make FS optional and fix the DB connect method\n* (issue-770) Exclude the folder, not the wildcard\n* (issue-751) Rename plugin\n\n#### 3.2 / 2015-03-16\n\n* (issue-698) skip mySql bug\n* Use shell_exec\n* Remove use statement\n* Revert to using shell_exec\n* Remove Process\n* (cool-runnings-757) Add back session_write_close\n* (issue-479) Hide hours and minutes for hourly backups\n* (backupception) Only load if main site on multisite\n* (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths\n* (socket-to-me-one-more-time) Fix paths\n* Use socket if available\n* Display errors\n* Put the db dump in the archive first - fixes issue with large archive\n* Dont wait for response\n* Run schedule as a Backdrop task\n* Pass array directly to function\n* (issue-759) Fix require paths\n* check PHP version before anything else\n* Move plugin class to own file\n* Skip mysql bug error\n* Delete all BWP options\n* Start the process\n* Return and check WP_Error\n* (what-time-is-backup) Extract hours and minutes from the date as an array for display\n* Change plugin description if multisite\n* Use wp_get_sites\n* Add a comment\n* We check for this on plugin instantiation\n* Revert to clearing schedule and rescheduling\n* Delete schedules and leftover options from subsites\n* Ensure plugin only runs on main site\n* Fix Too Many Schedules\n* Use Symfony Process\n* (fix-incorrect-type-error) File is an SPL object so get path\n* Set root as default param\n* Delete backdrop transient\n* Force directory sizes recalculation\n* Define VCS abbr\n* Hide exclude patterns from Excludes list.\n* Check if user can connect\n* Test that the mysqldump command works\n* Add a couple of mysql versions\n* Automatically exclude VCS folders\n* Calculate Root size correctly\n* Get default rules from backup object\n* Do not auto ignore dot files\n* Count excluded\n* Do not count excluded\n* If its the root then return its size directly\n* Fix typo in transient names\n* Set and return class property instead\n* List default excludes as such\n* Require symfony finder\n* Clear transients on deactivate\n* Get list of files with Finder\n* Load composer packages\n* These are alredy filtered\n* Add some default excludes\n* Use absolute path for excludes added via UI\n* Fix tests\n* Fix conditional\n* Fix syntax error in travis YML\n* Run codesniffer only on pull requests\n* Update tested WP versions\n* Change min WP version required to match travis CI\n* Fix readme changelog placement\n* Add condtion for Cron and Ajax\n* Fix deactivate logic\n* Fixes recursive exclusion of files\n\n\n#### 3.1.4 / 2015-02-24\n\n* (upgrade-options) Bump version\n* strtolower is redundant\n* Upgrade routine - renames service settings to avoid backslashes.\n* Use the Service name as the setting name\n* Clear settings for schedule settings\n* Fixes bug in displaying settings error notices\n* Update version number\n* Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons\n* Leave bare minimum to avoid fatal error\n* remove old main plugin class\n\n#### 3.1.3 / 2015-02-04\n\n* Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade.\n\n#### 3.1.2 / 2015-02-03\n\n* (simplify-bwp-file-timestamp) Simplify the file name timestamp\n* Fix class file name\n* (fixup-setup-class) Add missing transients to uninstall routine\n* switch Travis notifications to Slack instead of Hipchat\n* Do not delete backups on uninstall\n* wrap in parenthesis\n* Fix include paths after moving uninstall to own file herpderp\n* Update BackUp class include\n* Add all cases to switch\n* Pass scanned files sizes through conform_dir()\n* Fix some classes and requires\n* (origin/issue-684, issue-684) Fix namespaces\n* Remove unnecessary wildcard from regex\n* (crazy-refactor) Remove some duplication\n* Formatting\n* Fix Class name\n* Blank line\n* Uses a DirectoryIterator to delete files\n* Remove tests for now\n* Fix stable tag number\n* Revert to using uninstall.php\n* Add tests for uninstall and deactivate\n* Remove double lie break\n* Remove double line break\n* Remove phpdocumentor\n* We still need to require some scripts...\n* We dont need to check for this constant in the hook callback\n* Use get_col to directly have an array of schedule option names\n* Remove namespacing\n* Remove debugging\n* Make the uninstall, activation and deactivation hooks work\n* (change-singleton-implementation) Change the singleton implementation to not use the static() function\n* path argument interfers with wp-cli path argument.\n* Fix some scrutinizer issues, mostly major ones\n* Consistent default name for database dumps\n* Major 5.3 re-factoring fun\n* Minor code formatting\n* else if should be elseif\n* Update the WP_CLI command to fix some issues\n* Add support for copying and updating an existing backups\n\n#### 3.1.0 / 2015-01-13\n\n* Correct $response1 variable\n* (origin/issue-652, issue-652) Suppress warnings from filesystem functions\n* Remove debugging function\n* (origin/issue-475, issue-475) Fix a French string\n* Format the intercom data better\n* Load Intercom in the admin footer\n* Fix some HTML issues\n* Add a function that returns a given option value\n* Return Unknown if no average exists or invalid\n* Add a start parameter to function\n* Pass in the start time as a parameter\n* Make strings translatable\n* Escape values\n* Adds a function to track backup duration and another to display it\n* Adds Average Backup Duration Info\n* Improve display of arrays\n* Fixes open_basedir warnings\n* Replace spaces with tabs for indentation\n* (wp-cron-test-improvements) Improve the reliability of the wp-cron test\n* Pop in the directory sizes\n* Adapt heartbeat pulse\n* Update Javascript\n* Update constant name\n* Load the default translations so that activation error message is in user language\n* Fix a few translatable strings\n* Update French translations\n* Re-uglify Intercom js\n* Use provided callback argument to determine current screen\n* remove deprecated code\n* Only show notices on BWP admin page\n* Fix class name\n* Make function public for now\n* Get an instance of BWP to load functions\n* Fix conditional\n* Show admin notice if fails to meet requirements\n* Remove unneeded function\n* Fix references\n* Refactor main class after addition of the Setup class\n* Introduce a setup class\n* Determine if we need to run a cleanup routine\n* Introduce a custom hook for addons\n* Refactor main plugin file into a singleton class\n* Bring activation and deactivation into main plugin class\n* css changes to fix support button alignment\n* Fixes issue preventing backups from running without JS\n* Remove back compat memory limit define\n* Refactor HMBKP_Notices to support non-persistant notices\n* Minor refactor for PHP minimum requirements notice\n* Clear previous backup notices when running a new backup\n* Fix issues with custom paths\n* Improved singleton pattern\n* Display errors in network admin\n* Change to text input so multiple email address are supported\n* Removes HTML tag from string\n* Account for new schedule\n* Make upsell sentence translatable\n* fix return type\n* Return true if transient exists\n* Check if constant is defined\n* Request the site size via heartbeat send\n* Pass site size through heartbeat\n* Only calculate if necessary\n\n#### 3.0.4 / 2014-12-10\n\n  * Simplify the backup count display\n  * Enqueue scripts properly\n  * Change how we check directory_sizes\n  * Add BackUpWordPress test case class\n  * Move class to separate file\n  * Group help tab display functions\n  * Update POT file\n  * Make strings ready for translation\n\n#### 3.0.3 / 2014-12-06\n\n  * Add French translations\n  * Update textdomain\n  * Fix deleted function\n  * Use HM_Backup function to determine if shell_exec is enabled\n  * Check if file is readable first\n  * Fix how we kick off Task\n  * Remove unused var\n  * Call recursive filescanner on admin page load\n  * Update package.json\n  * Update the POT file task params\n  * Replace hmbkp with backupwordpress as textdomain\n  * Exclude folders\n  * Add Grunt task options\n  * Remove hard line returns\n  * Display placeholder if exec fails\n  * Add 30 second time diff allowance\n  * Use $TRAVIS_BUILD_DIR\n  * we do this in travis.yml\n  * Regenerate github account info\n  * Update command to reflect function rename\n  * Update tests to reflect function name change\n  * Rename function\n  * Filter tests to run\n  * Fix group flags\n  * Calculate site size on page load\n\n#### 3.0.2 / 2014-12-02\n\n  * Bump version\n  * Add parenthesis to require_once\n  * Remove disk space info\n  * Attempt to fix build\n  * define WP_TESTS_DIR\n  * Make sure current_action fnction is loaded\n  * Remove extra slashes and semicolons\n  * Remove the custom webhook service\n  * Better default WP_TESTS_DIR\n  * move trailingslash calls out of the loop for performance\n  * Minor code cleanup\n  * Correct path for hm-backup so it's tests are run\n  * add composer.lock\n  * Use scrutinizer code coverage\n  * add waffle.io badge\n  * Use up to date commands for coverage\n  * Add code rating\n  * Don't test 5.2\n  * Update readme.md\n  * excluded_dirs is deprecated\n  * Update scrutinizer config\n  * Add composer config and dev dependencies\n  * Make PHPUnit generate an XML for coveralls\n  * Add scrutinizer config\n  * Ignore vendor dir\n  * Add a link to Help page\n  * Move to activation hook\n  * Bump up required WP version\n  * Escape all the things\n  * Save errors to a notices option\n  * Reload page on errors\n  * Remove script\n  * Remove unneeded class\n  * Check PHP version on plugins loaded\n  * Check PHP version on activate\n  * Update readme\n  * Set required version to 5.3.2\n  * Update tests\n  * Allow for a 30 second delta in asserting schedule time\n  * Use the new build env on Travis\n  * Restrict plugin to be network only\n  * Fix admin URL logic\n  * Formatting\n  * Update readme changelog\n\n#### 3.0.1 / 2014-11-20\n\n  * remove uneeded images\n  * latest hm-backup / fixes a serious bug in backups.\n  * Typos in v 3.0 changelog\n  * Specify POT filename in grunt task\n  * Update POT file\n  * Markdown readme\n  * Regenerate readme\n  * Add plugin headers\n\n#### 3.0 / 2014-11-14\n\n  * Refactor the recursive filesize scanner\n  * correct text domain\n  * Remove unneede statements\n  * reload the excludes filelist in the correct place when someone excludes a file\n  * Latest backdrop\n  * Regenerate minified CSS\n  * Regenerate minified JS\n  * Fix cancel backup action\n  * WordPress Coding Standards\n  * Exit early if incompatible version of WordPress\n  * Update translations\n  * Update changelog\n\n#### 3.0.0-beta / 2014-09-08\n\n  * Load minified CSS\n  * Formatting\n  * Biweekly wording\n  * Add missing period\n  * use nonce_url instead of manually adding the nonce query param\n  * close the settings form when done\n  * Design changes as per ticket\n  * Start tracking langauge in server info\n  * Right align the primary button in the enable support modal\n  * Re-factor the directory filesize code to use a single array instead of thoussands of transients\n  * 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\n  * switch to using a single transient to store directory filesize data\n  * Add an anchor link\n  * Add error message\n  * Rename function\n  * Prefix GET params\n  * Update exclude rule action\n  * Adds function for building admin action urls\n  * fix vertical scroll\n  * Adds some functions to manage settings form submission errors\n  * Rename nonce and action\n  * fetch errors to display\n  * Form submission handling for BWP and add-ons settings\n  * Use a new function that persists form submission errors to  a transient\n  * None check\n  * Pass the nonce around in the ajax request\n  * Enable support action links\n  * Check nonces\n  * Modify action URLs to use the admin_post hook\n  * Remove unneeded code\n  * New line at end\n  * Use admin_post hook\n  * Display schedule start time in local timezone\n  * Add an action hook that gives access to consumers to the backup progress\n * Update translatable strings POT file\n * Bump version\n * Update min WP version and tested up to\n * accidently used dash instead of underscore\n * namespaced option and added option to uninstall.php\n * basic show/hide of premium upsell\n * Fix incorrect transient expiry\n * Show the spinner in the tab if a schedule other than the current is running\n * Snip snip\n * Bring back the some javascript enhancements\n * Switch to the PHP 5.2 compatible version of Backdrop\n * Finish up support\n * Brace up single line if's and foreach's\n * Only load minified scripts and styles if WP_DEBUG isn't on\n * Load the minified css and js files by default\n * Remove the combined css files as we only have one now. Stop loading colorbox.\n * Remove colorbox\n * Improvements\n * More improvements\n * Don't die when directly running a backup on page load\n * Re-factor the backup filesize calculation\n * make capability filterable\n * use core capabilities instead of custom\n * Switch to Backdrop\n * Fix typo in prefix\n * Hook function onto admin_post\n * Update delete link\n * Bookmark current admin page for redirect\n * Add custom capabilities and role\n * Exclude BackUpWP by default\n * Ignore the build folder\n * Add more build excludes\n * minify JS\n * generate markdown readme\n * minify css\n * combine css\n * regenerate readme\n * Make links consistent for the grunt task\n * Convert URLS to markdown\n * Update lang files\n * Add colorbox as bower dependency\n * remove colorbox folder\n * Remove colorbox submodule\n * Change how we include FAQ\n * Add readme partials\n * Add package.json\n * Add Gruntfile\n * Add bower.json\n * JSHint rules\n * remove from ignore\n * Update ignore list\n * Add bower config\n * Add FAQ strings\n * Return the cached directory size early if we have it\n * Re-factor the file browser scanner\n * correct sprintf usage\n * Handle saving service forms\n * Codeing standards\n * Move the error check outside of the foreach\n * Remove uneeded $is_tab_visible\n * Only show excludes for backups which include files\n * Show destinations in the list of schedule links\n * WordPress standard modal for enabling support\n * Remove extra slash in include path\n * Add a heading to the settings form\n * More work on excludes\n * Another todo\n * Add some todos\n * Don't include the parent directory in a browsable list\n * More work on Excludes\n * Switch to only storing 3 backups by default\n * More work on redesign\n * commented out enable support button till we figure out what to do with it\n * made tabs responsive below 639px\n * More work on redesign\n * Add more default excludes\n * Correctly highlight the tab for the first schedule\n * Switch to tabs instead of subsubsub\n * First bash at a redesign settings UX\n\n#### 2.6.2\n\n* 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.\n\n#### 2.6.1\n\n* Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch.\n* Fix an issues that could cause schedule times to fail to account for timezone differences.\n* Add a nonce check to the schedule settings.\n* Fix a possible JS warning when removing an exclude rule.\n* Our unit tests now run in PHP 5.2 again.\n\n#### 2.6\n\n* It's now possible to choose the time and day that your schedule will run on.\n* Introduces several new unit tests around schedule timings.\n* Fixes a bug that could cause the hourly schedule to run constantly.\n* Improved the layout of the Constants help panel.\n* If the backup root directory is unreadable then the plugin will no longer function.\n* Update the backups table match the standard WordPress table styles.\n* Improved styling for the settings dialogue.\n* Improved styling for the Server Info help tab.\n* /s/back ups/backups.\n* Remove Deprecated call to `screen_icon`.\n* Updated French translation.\n* Update the `WP CLI` command to use the new method for registering command.\n* Reload the schedules when re-setting up the default schedules so they show up straight away.\n* s/dpesnt't/doesn't.\n* Only show the estimated total schedule size when editing an existing schedule.\n* Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show.\n* Disable buttons whilst ajax requests are running.\n* Move spinners outside the buttons as they didn't look very good inside.\n* Improve the detection of the home path on multisite installs which have WordPress in a subdirectory.\n* Track the time that the running backup is started and display how long a backup has been running for.\n* Fix an issue that meant it wasn't possible to run multiple manual backups at the same time.\n* Many other minor improvements.\n\n#### 2.5\n\n* BackUpWordPress now requires WordPress 3.7.1 as a minimum.\n* Remove some old back-compat code that was required because we supported older WP versions.\n* It's now possible to change the email address that notification emails are sent from using the `hmbkp_from_email` filter.\n* The spinner is now retina!\n* 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`.\n* Pass `max_execution_time` and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests\n* Stop passing `$_SERVER` with support requests as it can contain things like `.htaccess` passwords on some server configurations.\n* Improve the display of the server info in the enable support popup.\n* New screenshots\n* Use `wp_safe_redirect` for internal redirects.\n* Use `wp_is_writable` instead of `is_writable`.\n\n\n#### 2.4.2\n\n* In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.\n* Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout\n* Fixed 3 stray PHP warnings.\n* BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.\n* Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.\n\n#### 2.4.1\n\n* Add missing colorbox images\n\n#### 2.4\n\n* Support for new premium extensions for storing backups in a variety of online services.\n* Exclude the WP DB Manager backups and WP Super Cache cache directories by default.\n* We now use Intercom to offer support directly from within the plugin, opt-in of course.\n* More i18n fixes / improvements.\n* We no longer show download links if your backups directory isn't web accessible.\n* Fix a bug that caused the plugin activation and deactivation hooks from firing.\n* Correctly handle `MYSQL TIMESTAMP` columns in database dumps.\n* `mysqldump` and `zip` are now correctly recognised on SmartOS.\n* Schedule names are now translatable.\n* Avoid having to re-calculate the filesize when a schedules type is set.\n* Compatibility with WordPress 3.8\n\n\n#### 2.3.2\n\n* Correct version number.\n\n#### 2.3.1\n\n* Fix a PHP strict error.\n* Save and close as separate buttons.\n* Fix bug that caused multiple notification emails.\n* Fixes typo in database option name.\n* Updated translations.\n* Improve PHP docblocks.\n* Make schedules class a singleton.\n* Exclude popular backup plugin folders by default.\n* Exclude version control folders by default.\n* Fix broken localisation.\n* Use `wp_safe_redirect` instead of `wp_redirect` for internal form submissions\n*\n\n#### 2.3\n\n* Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible.\n* Use the correct `HMBKP_ATTACHMENT_MAX_FILESIZE` constant consistently in the help section.\n* Correct filename for some mis-named translation files.\n* Show the total estimated disk space a schedule could take up (max backups * estimated site size).\n* Fix a typo (your -> you're).\n* Use the new time Constants and define backwords compatible ones for > than 3.5.\n* Play nice with custom cron intervals.\n* Main plugin file is now `backupwordpress.php` for consistency.\n* Add Paul De Wouters (`pauldewouters`) as a contributor, welcome Paul!\n* Don't remove non-backup files from custom backup paths.\n* Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups.\n* When moving paths only move backup files.\n* Make some untranslatable strings translatable.\n* 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.\n* Only highlight the `HMBKP_SCHEDULE_TIME` constant in help if it's not the default value.\n* Remove help text for deprecated `HMBKP_EMAIL`.\n* 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`.\n* Silence a `PHP Warning` if `mysql_pconnect` has been disabled.\n* Ensure dot directories `.` & `..` are always skipped when looping the filesystem.\n* Work around a warning in the latest version of MySQL when using the `-p` flag with `mysqldunmp`.\n* Fix issues on IIS that could cause the root directory to be incorrectly calculated.\n* Fix an issue on IIS that could cause the download backup url to be incorrect.\n* Fix an issue on IIS that could mean your existing backups are lost when moving backup directory.\n* Avoid a `PHP FATAL ERROR` if the `mysql_set_charset` doesn't exist.\n* All unit tests now pass under IIS on Windows.\n* Prefix the backup directory with `backupwordpress-` so that it's easier to identify.\n* Re-calculate the backup directory name on plugin update and move backups.\n* Fix some issues with how `HMBKP_SECURE_KEY` was generated.\n\n#### 2.2.4\n\n* Fix a fatal error on PHP 5.2, sorry! (again.)\n\n#### 2.2.3\n\n* Fix a parse error, sorry!\n\n#### 2.2.2\n\n* Fix a fatal error when uninstalling.\n* Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch.\n* Fix a possible notice when using the plugin on a server without internet access.\n* Don't show the wp-cron error message when `WP_USE_ALTERNATE_CRON` is defined as true.\n* Ability to override the max attachment size for email notifications using the new `HMBKP_ATTACHMENT_MAX_FILESIZE` constant.\n* Nonce some ajax request.\n* Silence warnings created if `is_executable`, `escapeshellcmd` or `escapeshellarg` are disabled.\n* Handle situations where the mysql port is set to something wierd.\n* Fallback to `mysql_connect` on system that disable `mysql_pconnect`.\n* You can now force the `--single-transaction` param when using `mysqldump` by defining `HMBKP_MYSQLDUMP_SINGLE_TRANSACTION`.\n* Unit tests for `HM_Backup::is_safe_mode_available()`.\n* Silence possible PHP Warnings when unlinking files.\n\n#### 2.2.1\n\n* Stop storing a list of unreadable files in the backup warnings as it's too memory intensive.\n* Revert the custom `RecursiveDirectoryIterator` as it caused an infinite loop on some servers.\n* Show all errors and warnings in the popup shown when a manual backup completes.\n* Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process.\n* Fix a couple of `PHP E_STRICT` notices.\n* Catch more errors during the manual backup process and expose them to the user.\n\n#### 2.2\n\n* Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable.\n* Show the correct path in the warning message when the backups path can't be created.\n* Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY.\n* Stop relying on the built in WordPress schedules as other plugins can mess with them.\n* Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up.\n* Improve modals on small screens and mobile devices.\n* Use the retina spinner on retina screens.\n* Update buttons to the new 3.5 style.\n* Fix a possible fatal error caused when a symlink points to a location that is outside an `open_basedir` restriction.\n* Fix an issue that could cause backups using PclZip with a custom backups path to fail.\n* Security hardening by improving escaping, sanitizitation and validation.\n* Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites.\n* Only clear the cached backup filesize if the backup type changes.\n* Add unit tests for all the schedule recurrences.\n* Fix an issue which could cause weekly and monthly schedules to fail.\n* Add an `uninstall.php` file which removes all BackUpWordPress data and options.\n* Catch a possible fatal error in `RecursiveDirectoryIterator::hasChildren`.\n* Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file.\n\n#### 2.1.3\n\n* Fix a regression in `2.1.2` that broke previewing and adding new exclude rules.\n\n#### 2.1.2\n\n* Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests.\n* Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains.\n* The mysqldump fallback function will now be used if `mysqldump` produces an empty file.\n* Fix a possible PHP `NOTICE` on Apache servers.\n\n#### 2.1.1\n\n* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.\n* Don't use functions from misc.php as loading it too early can cause fatal errors.\n* Don't hardcode an English string in the JS, use the translated string instead.\n* Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.\n* Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.\n* Fix a possible double full stop at the end of the schedule sentence.\n* Minor code cleanup.\n\n#### 2.1\n\n* Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.\n* Fix possible fatal error when setting schedule to monthly.\n* Fix issues with download backup not working on some shared hosts.\n* Fix issuses with download backup not working on sites with strange characters in the site name.\n* Fix a bug could cause the update actions to fire on initial activation.\n* Improved reliability when changing backup paths, now with Unit Tests.\n* 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.\n* Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled.\n* Prepend a random string to the backups directory to make it harder to brute force guess.\n* Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable.\n* Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support.\n* Provide more granular status messages during the backup process.\n* Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing.\n* Improve the feedback when removing an exclude rule.\n* 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.\n* Add a line encouraging people to rate the plugin if they like it.\n* Change the support line to point to the FAQ before recommending they contact support.\n* Fix the link to the \"How to Restore\" post in the FAQ.\n* Some string changes for translators, 18 changed strings.\n\n#### 2.0.6\n\n* Fix possible warning on plugin activation if the sites cron option is empty.\n* Don't show the version warning in the help for Constants as that comes from the current version.\n\n#### 2.0.5\n\n* Re-setup the cron schedules if they get deleted somehow.\n* Delete all BackUpWordPress cron entries when the plugin is deactivated.\n* Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run.\n* Make sure the schedule times and times of previous backups are shown in local time.\n* 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.\n* Improve the usefulness of the `wp-cron.php` response code check.\n* Use the built in `site_format` function for human readable filesizes instead of defining our own function.\n\n#### 2.0.4\n\n* Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.\n\n#### 2.0.3\n\n* Fix issues with scheduled backups not firing in some cases.\n* Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.\n* Catch and display more WP Cron errors.\n* BackUpWordPress now fails to activate on WordPress 3.3.2 and below.\n* Other minor fixes and improvements.\n\n#### 2.0.2\n\n* Only send backup failed emails if the backup actually failed.\n* Turn off the generic \"memory limit probably hit\" message as it was showing for too many people.\n* Fix a possible notice when the backup running filename is blank.\n* Include the `wp_error` response in the cron check.\n\n#### 2.0.1\n\n* Fix fatal error on PHP 5.2.\n\n#### 2.0\n\n* Ability to have multiple schedules with separate settings & excludes per schedule.\n* Ability to manage exclude rules and see exactly which files are included and excluded.\n* Fix an issue with sites with an `open_basedir` restriction.\n* Backups should now be much more reliable in low memory environments.\n* Lots of other minor improvements and bug fixes.\n\n#### 1.6.9\n\n* Updated and improved translations across the board - props @elektronikLexikon.\n* German translation - props @elektronikLexikon.\n* New Basque translation - props Unai ZC.\n* New Dutch translation - Anno De Vries.\n* New Italian translation.\n* Better support for when WordPress is installed in a sub directory - props @mattheu\n\n\n#### 1.6.8\n\n* French translation props Christophe - http://catarina.fr.\n* Updated Spanish Translation props DD666 - https://github.com/radinamatic.\n* Serbian translation props StefanRistic - https://github.com/StefanRistic.\n* Lithuanian translation props Vincent G - http://www.Host1Free.com.\n* Romanian translation.\n* Fix conflict with WP Remote.\n* Fix a minor issue where invalid email address's were still stored.\n* The root path that is backed up can now be controlled by defining `HMBKP_ROOT`.\n\n#### 1.6.7\n\n* Fix issue with backups being listed in reverse chronological order.\n* Fix issue with newest backup being deleted when you hit your max backups limit.\n* It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.\n* Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`.\n* Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform.\n* Updated Spanish translation.\n* Fix a minor spelling mistake.\n* Speed up the manage backups page by caching the FAQ data for 24 hours.\n\n#### 1.6.6\n\n* Fix backup path issue with case sensitive filesystems.\n\n#### 1.6.5\n\n* Fix an issue with emailing backups that could cause the backup file to not be attached.\n* Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd.\n* Never show the running backup in the list of backups.\n* Show an error backup email failed to send.\n* Fix possible notice when deleting a backup file which doesn't exist.\n* Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`.\n* Make `HMBKP_SECURE_KEY` override-able.\n* BackUpWordPress should now work when `ABSPATH` is `/`.\n\n#### 1.6.4\n\n* Don't show warning message as they cause to much panic.\n* Move previous methods errors to warnings in fallback methods.\n* Wrap `.htaccess` rewrite rules in if `mod_rewrite` check.\n* Add link to new restore help article to FAQ.\n* Fix issue that could cause \"not using latest stable version\" message to show when you were in-fact using the latest version.\n* Bug fix in `zip command` check that could cause an incorrect `zip` path to be used.\n* Detect and pass `MySQL` port to `mysqldump`.\n\n#### 1.6.3\n\n* Don't fail archive verification for errors in previous archive methods.\n* Improved detection of the `zip` and `mysqldump` commands.\n* Fix issues when `ABSPATH` is `/`.\n* Remove reliance on `SECURE_AUTH_KEY` as it's often not defined.\n* Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`.\n* Fix download zip on Windows when `ABSPATH` contains a trailing forward slash.\n* Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.\n* Add missing / to `PCLZIP_TEMPORARY_DIR` define.\n* Catch and display errors during `mysqldump`.\n\n#### 1.6.2\n\n* Track `PHP` errors as backup warnings not errors.\n* Only show warning message for `PHP` errors in BackUpWordPress files.\n* Ability to dismiss the error / warning messages.\n* Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites.\n* Don't delete \"number of backups\" setting on update.\n* Better handling of multibyte characters in archive and database dump filenames.\n* Mark backup as running and increase callback timeout to `500` when firing backup via ajax.\n* Don't send backup email if backup failed.\n* Filter out duplicate exclude rules.\n\n#### 1.6.1\n\n* Fix fatal error on PHP =< 5.3\n\n#### 1.6\n\n* Fixes issue with backups dir being included in backups on some Windows Servers.\n* Consistent handling of symlinks across all archive methods (they are followed).\n* Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.\n* Track errors and warnings that happen during backup and expose them through admin.\n* Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed.\n* Ability to cancel a running backup.\n* Zip files are now integrity checked after every backup.\n* More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.\n* Use `mysql_query` instead of the depreciated `mysql_list_tables`.\n\n#### 1.5.2\n\n* Better handling of unreadable files in ZipArchive and the backup size calculation.\n* Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]`\n\n#### 1.5.1\n\n* Better detection of `zip` command.\n* Don't delete user settings on update / deactivate.\n* Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed.\n* Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.\n* Improved the speed of the backup size calculation.\n\n#### 1.5\n\n* Re-written core backup engine should be more robust especially in edge case scenarios.\n* 48 unit tests for the core backup engine, yay for unit tests.\n* Remove some extraneous status information from the admin interface.\n* Rename Advanced Options to Settings\n* New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed.\n* Suppress possible filemtime warnings in some edge cases.\n* 3.3 compatability.\n* Set proper charset of MySQL backup, props valericus.\n* Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.\n\n#### 1.4.1\n\n* 1.4 was incorrectly marked as beta.\n\n#### 1.4\n\n* Most options can now be set on the backups page, all options can still be set by defining them as `Constants`.\n* Russian translation, props valericus.\n* All dates are now translatable.\n* Fixed some strings which weren't translatable.\n* New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups.\n* Manual backups now work if `DISABLE_WP_CRON` is defined as `true`.\n\n#### 1.3.2\n\n* Spanish translation\n* Bump PHP version check to 5.2.4\n* Fallback to PHP mysqldump if shell_exec fails for any reason.\n* Silently ignore unreadable files / folders\n* Make sure binary data is properly exported when doing a mysqldump\n* Use 303 instead of 302 when redirecting in the admin.\n* Don't `set_time_limit` inside a loop\n* Use WordPress 3.2 style buttons\n* Don't pass an empty password to mysqldump\n\n#### 1.3.1\n\n* Check for PHP version. Deactivate plugin if running on PHP version 4.\n\n#### 1.3\n\n* Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.\n* 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.\n* Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.\n* Work around issues caused by low MySQL `wait_timeout` setting.\n* Add FAQ to readme.txt.\n* Pull FAQ into the contextual help tab on the backups page.\n* Block activation on old versions of WordPress.\n* Stop guessing compressed backup file size, instead just show size of site uncompressed.\n* Fix bug in `safe_mode` detection which could cause `Off` to act like `On`.\n* Better name for the database dump file.\n* Better name for the backup files.\n* Improve styling for advanced options.\n* Show examples for all advanced options.\n* Language improvements.\n* Layout tweaks.\n\n#### 1.2\n\n* Show live backup status in the back up now button when a back up is running.\n* Show free disk space after total used by backups.\n* Several langauge changes.\n* Work around the 1 cron every 60 seconds limit.\n* Store backup status in a 2 hour transient as a last ditch attempt to work around the \"stuck on backup running\" issue.\n* Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.\n* Highlight defined `Constants`.\n* Show defaults for all `Constants`.\n* Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time.\n* Make sure options added in 1.1.4 are cleared on de-activate.\n* Support `mysqldump on` Windows if it's available.\n* New option to have each backup emailed to you on completion. Props @matheu for the contribution.\n* Improved windows server support.\n\n#### 1.1.4\n\n* 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.\n* Don't suppress `mysql_connect` errors in the mysqldump PHP fallback.\n* One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.\n* Fix a spelling error in the `shell_exec` disabled message.\n* Store the BackUpWordPress version as a `Constant` rather than a `Variable`.\n* Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.\n* Minor PHPDoc improvements.\n\n#### 1.1.3\n\n* 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.\n* 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.\n\n#### 1.1.2\n\n* Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working.\n\n#### 1.1.1\n\n* Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`.\n* Clear the running backup status and reset the calculated filesize on update.\n* Show a link to the manage backups page in the plugin description.\n* Other general fixes.\n\n#### 1.1\n\n* Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.\n* Expose the various `Constants` that can be defined to change advanced settings.\n* Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`.\n* Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`.\n* Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );`\n* Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );`\n* Tweaks to the backups page layout.\n* General bug fixes and improvements.\n\n#### 1.0.5\n\n* Don't ajax load estimated backup size if it's already been calculated.\n* Fix time in backup complete log message.\n* Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.\n* Show number of backups saved message.\n* Add a link to the backups page to the plugin action links.\n\n#### 1.0.4\n\nDon't throw PHP Warnings when `shell_exec` is disabled\n\n#### 1.0.3\n\nMinor bug fix release.\n\n* Suppress `filesize()` warnings when calculating backup size.\n* Plugin should now work when symlinked.\n* Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.\n* Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.\n* Don't ajax ping running backup status quite so often.\n\n#### 1.0.1 & 1.0.2\n\nFix some silly 1.0 bugs\n\n#### 1.0\n\n1.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)\n\n#### Previous\n\nVersion 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/)\n"
  },
  {
    "path": "tests/bootstrap.php",
    "content": "<?php\n\n/**\n * Bootstrap the plugin unit testing environment.\n *\n * @package BackUpWordPress\n * @subpackage tests\n */\n\n/**\n * Determine where the WP test suite lives.\n *\n * Support for:\n * 1. `WP_DEVELOP_DIR` environment variable, which points to a checkout\n *   of the develop.svn.wordpress.org repository (this is recommended)\n * 2. `WP_TESTS_DIR` environment variable, which points to a checkout\n * 3. `WP_ROOT_DIR` environment variable, which points to a checkout\n * 4. Plugin installed inside of WordPress.org developer checkout\n * 5. Tests checked out to /tmp\n */\nif ( false !== getenv( 'WP_DEVELOP_DIR' ) ) {\n\t$test_root = getenv( 'WP_DEVELOP_DIR' ) . '/tests/phpunit';\n} else if ( false !== getenv( 'WP_TESTS_DIR' ) ) {\n\t$test_root = getenv( 'WP_TESTS_DIR' );\n} else if ( false !== getenv( 'WP_ROOT_DIR' ) ) {\n\t$test_root = getenv( 'WP_ROOT_DIR' ) . '/tests/phpunit';\n} else if ( file_exists( '../../../../tests/phpunit/includes/bootstrap.php' ) ) {\n\t$test_root = '../../../../tests/phpunit';\n} else if ( file_exists( '/tmp/wordpress-tests-lib/includes/bootstrap.php' ) ) {\n\t$test_root = '/tmp/wordpress-tests-lib';\n}\n\nrequire $test_root . '/includes/functions.php';\n\nfunction _manually_load_plugin() {\n\n\trequire_once dirname( __DIR__ ) . '/backupwordpress.php';\n\n}\ntests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );\n\nrequire $test_root . '/includes/bootstrap.php';\n\nrequire_once dirname( __FILE__ ) . '/class-mock-backup-engines.php';\nrequire_once dirname( __FILE__ ) . '/class-wp-test-hm-backup-testcase.php';\nrequire_once dirname( __FILE__ ) . '/class-backup-engine/common-database-backup-engine-tests.php';\nrequire_once dirname( __FILE__ ) . '/class-backup-engine/common-file-backup-engine-tests.php';\n//require_once dirname( __FILE__ ) . '/backup-base-tests/class-file-backup-engine-excludes-base-tests.php';\n\n/**\n * Dumps the contents of param to the CLI\n *\n * @param $to_inspect\n */\nfunction hmbkp_var_dump( $to_inspect ) {\n\tob_start();\n\tvar_dump( $to_inspect );\n\t$display = ob_get_clean();\n\tfwrite( STDERR, $display );\n}\n"
  },
  {
    "path": "tests/class-backup-engine/common-database-backup-engine-tests.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nabstract class Common_Database_Backup_Engine_Tests extends \\HM_Backup_UnitTestCase {\n\n\t/**\n\t * Contains the current backup instance\n\t *\n\t * @var object\n\t * @access protected\n\t */\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t}\n\n\tpublic function tearDown() {\n\t\t$this->cleanup_test_data();\n\t}\n\n\tpublic function test_backup() {\n\n\t\t$this->assertTrue( $this->backup->backup() );\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t}\n\n\tpublic function test_backup_with_errors() {\n\n\t\t$this->assertTrue( $this->backup->backup() );\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->backup->error( get_class( $this->backup ), 'foobar' );\n\t\t$this->assertFalse( $this->backup->verify_backup() );\n\n\t}\n}\n"
  },
  {
    "path": "tests/class-backup-engine/common-file-backup-engine-tests.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nabstract class Common_File_Backup_Engine_Tests extends \\HM_Backup_UnitTestCase {\n\n\t/**\n\t * Contains the current backup instance\n\t *\n\t * @var object\n\t * @access protected\n\t */\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t}\n\n\tpublic function tearDown() {\n\n        if ( file_exists( Path::get_root() . '/exclude' ) ) {\n\t    \tchmod( Path::get_root() . '/exclude', 0755 );\n        }\n\n        if ( file_exists( Path::get_root() . '/test-data.txt' ) ) {\n\t    \tchmod( Path::get_root() . '/test-data.txt', 0644 );\n        }\n\n\t\tif ( file_exists( $this->hidden ) ) {\n\t\t\tunlink( $this->hidden );\n\t\t}\n\n\t\tif ( file_exists( $this->symlink ) || is_link( $this->symlink ) ) {\n\t\t\tunlink( $this->symlink );\n\t\t}\n\n\t\t$this->cleanup_test_data();\n\n\t}\n\n\tpublic function test_backup() {\n\n\t\t$this->assertTrue( $this->backup->backup() );\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'test-data.txt' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 );\n\n\t}\n\n\t/**\n\t * Test an unreadable file with the shell commands\n\t *\n\t */\n\tpublic function test_backup_with_hidden_file() {\n\n\t\t$this->hidden = $this->test_data . '/.hidden';\n\n\t\tif ( ! file_put_contents( $this->hidden, 'test' ) ) {\n\t\t\t$this->markTestSkipped( 'Couldn\\'t create hidden file to test with' );\n\t\t}\n\n\t\t$this->assertFileExists( $this->hidden );\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->hidden ) ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 );\n\n\t}\n\n\tpublic function test_backup_with_symlink_directory() {\n\n\t\tif ( ! function_exists( 'symlink' ) ) {\n\t\t\t$this->markTestSkipped( 'symlink function not defined' );\n\t\t}\n\n\t\t$this->symlink = $this->test_data . '/tests';\n\n\t\tif ( ! @symlink( trailingslashit( $this->test_data_symlink ), $this->symlink ) ) {\n\t\t\t$this->markTestSkipped( 'Couldn\\'t create symlink to test with' );\n\t\t}\n\n\t\t$this->assertFileExists( $this->symlink );\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 5 );\n\n\t\t$this->assertEmpty( $this->backup->get_errors() );\n\n\t}\n\n\tpublic function test_backup_with_symlink_file() {\n\n\t\tif ( ! function_exists( 'symlink' ) ) {\n\t\t\t$this->markTestSkipped( 'symlink function not defined' );\n\t\t}\n\n\t\t$this->symlink = trailingslashit( $this->test_data ) . basename( __FILE__ );\n\n\t\tif ( ! @symlink( __FILE__, $this->symlink ) ) {\n\t\t\t$this->markTestSkipped( 'Couldn\\'t create symlink to test with' );\n\t\t}\n\n\t\t$this->assertFileExists( $this->symlink );\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 );\n\n\t\t$this->assertEmpty( $this->backup->get_errors() );\n\n\t}\n\n\tpublic function test_backup_with_broken_symlink() {\n\n\t\tif ( ! function_exists( 'symlink' ) ) {\n\t\t\t$this->markTestSkipped( 'symlink function not defined' );\n\t\t}\n\n\t\t$this->symlink = trailingslashit( $this->test_data ) . basename( __FILE__ );\n\t\tfile_put_contents( $this->test_data . '/symlink', '' );\n\t\t$symlink_created = @symlink( $this->test_data . '/symlink', $this->symlink );\n\t\tunlink( $this->test_data . '/symlink' );\n\n\t\tif ( ! $symlink_created ) {\n\t\t\t$this->markTestSkipped( 'Couldn\\'t create symlink to test with' );\n\t\t}\n\n\t\t$this->assertFileNotExists( $this->symlink );\n\t\t$this->assertTrue( is_link( $this->symlink ) );\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( basename( $this->symlink ) ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 );\n\n\t\t$this->assertEmpty( $this->backup->get_errors() );\n\n\t}\n\n\tpublic function test_backup_with_unreadable_file() {\n\n\t\tchmod( Path::get_root() . '/test-data.txt', 0220 );\n\n\t\tif ( is_readable( Path::get_root() . '/test-data.txt' ) ) {\n\t\t\t$this->markTestSkipped( \"File was readable.\" );\n\t\t}\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'test-data.txt' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 2 );\n\n\t}\n\n\tpublic function test_backup_with_unreadable_directory() {\n\n\t\tchmod( Path::get_root() . '/exclude', 0220 );\n\n\t\tif ( is_readable( Path::get_root() . '/exclude' ) ) {\n\t\t\t$this->markTestSkipped( \"Directory was readable.\" );\n\t\t}\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'exclude' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 1 );\n\n\t}\n\n\tpublic function test_file_with_strange_characters() {\n\n\t\tfile_put_contents( PATH::get_root() . '/Groß.jpg', '' );\n\t\t$this->assertFileExists( PATH::get_root() . '/Groß.jpg' );\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'Groß.jpg' ) );\n\n\t\tunlink( PATH::get_root() . '/Groß.jpg' );\n\n\t}\n\n\t/**\n\t * Test a complete backup of the WordPress Site\n\t *\n\t * @group full-backup\n\t */\n\tpublic function test_complete_file_backup_with_excludes() {\n\n\t\t// Reset root back to defaults\n\t\tPath::get_instance()->set_root( false );\n\n\t\t$this->backup->set_excludes( new Excludes( array( 'wp-*' ) ) );\n\t\t$this->backup->backup();\n\n\t\t$finder = $this->backup->get_files();\n\n\t\tforeach( $finder as $file ) {\n\t\t\t$files[] = $file->getRelativePathname();\n\t\t}\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), iterator_count( $finder ) );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), $files );\n\n\t}\n\n\t/**\n\t * Test a complete backup of the WordPress Site\n\t *\n\t * @group full-backup\n\t */\n\tpublic function test_complete_file_backup() {\n\n\t\t// Reset root back to defaults\n\t\tPath::get_instance()->set_root( false );\n\n\t\t$this->backup->backup();\n\n\t\t$finder = $this->backup->get_files();\n\n\t\tforeach( $finder as $file ) {\n\t\t\t$files[] = $file->getRelativePathname();\n\t\t}\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), iterator_count( $finder ) );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), $files );\n\n\t}\n\n\tpublic function test_adding_files_to_existing_backup() {\n\n\t\t$this->backup->backup();\n\t\t$filepath = $this->backup->get_backup_filepath();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'test-data.txt', 'exclude', 'exclude/exclude.exclude' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 3 );\n\n\t\t// create a new file\n\t\tif ( ! file_put_contents( Path::get_root() . '/new.file', 'test' ) ) {\n\t\t\t$this->markTestSkipped( 'new.file couldn\\'t be created' );\n\t\t}\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertEquals( $filepath, $this->backup->get_backup_filepath() );\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( 'new.file' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 4 );\n\n\t}\n\n\tpublic function test_backup_with_errors() {\n\n\t\t$this->assertTrue( $this->backup->backup() );\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->backup->error( get_class( $this->backup ), 'foobar' );\n\t\t$this->assertFalse( $this->backup->verify_backup() );\n\n\t}\n}\n"
  },
  {
    "path": "tests/class-backup-engine/test-class-backup-engine-database-imysqldump.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass IMysqldump_Database_Backup_Engine_Tests extends Common_Database_Backup_Engine_Tests {\n\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->backup = new IMysqldump_Database_Backup_Engine;\n        parent::setUp();\n\t}\n\n}"
  },
  {
    "path": "tests/class-backup-engine/test-class-backup-engine-database-mysqldump.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Mysqldump_Database_Backup_Engine_Tests extends Common_Database_Backup_Engine_Tests {\n\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->backup = new Mysqldump_Database_Backup_Engine;\n        if ( ! $this->backup->get_mysqldump_executable_path() ) {\n            $this->markTestSkipped( 'mysqldump not available' );\n        }\n        parent::setUp();\n\t}\n\n\tpublic function test_default_command_path() {\n\t\t$this->assertEquals( 'mysqldump', $this->backup->get_mysqldump_executable_path() );\n\t}\n\n}\n"
  },
  {
    "path": "tests/class-backup-engine/test-class-backup-engine-database.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Database_Backup_Engine_Tests extends \\HM_Backup_UnitTestCase {\n\n\tfunction setUp() {\n\t\t$this->db = new Mock_Database_Backup_Engine;\n\t}\n\n\tfunction test_db_host_localhost() {\n\n\t\t$this->db->parse_db_host_constant( 'localhost' );\n\n\t\t$this->assertEquals( 'localhost', $this->db->get_host() );\n\t\t$this->assertEmpty( $this->db->get_port() );\n\t\t$this->assertEmpty( $this->db->get_socket() );\n\n\t}\n\n\tfunction test_db_host_localhost_port() {\n\n\t\t$this->db->parse_db_host_constant( 'localhost:3306' );\n\n\t\t$this->assertEquals( 'localhost', $this->db->get_host() );\n\t\t$this->assertEquals( 3306, $this->db->get_port() );\n\t\t$this->assertEmpty( $this->db->get_socket() );\n\n\t}\n\n\n\tfunction test_db_host_localhost_socket() {\n\n\t\t$this->db->parse_db_host_constant( 'localhost:/tmp/mysql5.sock' );\n\n\t\t$this->assertEquals( 'localhost', $this->db->get_host() );\n\t\t$this->assertEmpty( $this->db->get_port() );\n\t\t$this->assertEquals( '/tmp/mysql5.sock', $this->db->get_socket() );\n\n\t}\n\n\tfunction test_db_host_url() {\n\n\t\t$this->db->parse_db_host_constant( 'mysqlXY-AB.wcN.dfQ.stabletransit.com' );\n\n\t\t$this->assertEquals( 'mysqlXY-AB.wcN.dfQ.stabletransit.com', $this->db->get_host() );\n\t\t$this->assertEmpty( $this->db->get_port() );\n\t\t$this->assertEmpty( $this->db->get_socket() );\n\n\t}\n\n\tfunction test_db_host_ip() {\n\n\t\t$this->db->parse_db_host_constant( '127.0.0.1' );\n\n\t\t$this->assertEquals( '127.0.0.1', $this->db->get_host() );\n\t\t$this->assertEmpty( $this->db->get_port() );\n\t\t$this->assertEmpty( $this->db->get_socket() );\n\n\t}\n\n}"
  },
  {
    "path": "tests/class-backup-engine/test-class-backup-engine-file-zip-archive.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Zip_Archive_File_Backup_Engine_Tests extends Common_File_Backup_Engine_Tests {\n\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->backup = new Zip_Archive_File_Backup_Engine;\n\t\tparent::setUp();\n\t}\n\n\n}\n"
  },
  {
    "path": "tests/class-backup-engine/test-class-backup-engine-file-zip.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Zip_File_Backup_Engine_Tests extends Common_File_Backup_Engine_Tests {\n\n\tprotected $backup;\n\n\tpublic function setUp() {\n\t\t$this->backup = new Zip_File_Backup_Engine;\n        if ( ! $this->backup->get_zip_executable_path() ) {\n            $this->markTestSkipped( 'zip not available' );\n        }\n\t\tparent::setUp();\n\t}\n\n\t/**\n\t * Override the common version of this test as `zip` does include unreadable directories,\n\t * it just doesn't include any of the files in the unreadable directory\n\t */\n\tpublic function test_backup_with_unreadable_directory() {\n\n\t\tchmod( Path::get_root() . '/exclude', 0220 );\n\n\t\tif ( is_readable( Path::get_root() . '/exclude' ) ) {\n\t\t\t$this->markTestSkipped( \"Directory was readable.\" );\n\t\t}\n\n\t\t$this->backup->backup();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\n\t\t$this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'exclude' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 2 );\n\n\t}\n\n}"
  },
  {
    "path": "tests/class-backup-utilities/test-get-executable-path.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Backup_Engine_Get_Executable_Path_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\n\t\t$paths = array(\n\t\t\t'mysql',\n\t\t\t'/usr/bin/mysqlnope',\n\t\t\t'/usr/bin/mysqlwrong',\n\t\t\t'/usr/bin/mysqltryagain',\n\t\t);\n\n\t\t$this->paths = array_combine( $paths, $paths );\n\n\t\tif ( ! function_exists( 'proc_open' ) || ! function_exists( 'proc_close' ) ) {\n\t\t\t$this->markTestSkipped( 'proc_open is disabled' );\n\t\t}\n\n\t}\n\n\tpublic function test_can_pick_first_path() {\n\t\t$this->assertEquals( 'mysql', Backup_Utilities::get_executable_path( $this->paths ) );\n\t}\n\n\tpublic function test_can_pick_shuffled_command_path() {\n\n\t\t$paths = $this->paths;\n\t\tshuffle( $paths );\n\n\t\t$this->assertEquals( 'mysql', Backup_Utilities::get_executable_path( $paths ) );\n\n\t}\n\n\tpublic function test_remove_default_command_path() {\n\n\t\t$paths = $this->paths;\n\t\t$paths[] = $path = trim( shell_exec( 'which mysql ' . ignore_stderr() ) );\n\n        if ( ! $path ) {\n            $this->markTestSkipped( 'Couldn\\'t find mysql' );\n        }\n\n\t\tunset( $paths['mysql'] );\n\t\tshuffle( $paths );\n\n\t\t$this->assertEquals( $path, Backup_Utilities::get_executable_path( $paths ) );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/class-backup-utilities/test-get-home-path.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Home_Path_Tests extends \\HM_Backup_UnitTestCase {\n\n\tfunction setUp() {\n\t\t$this->setup_test_data();\n\t}\n\n\tfunction tearDown() {\n\t\trmdirtree( $this->test_data );\n\t\trmdirtree( $this->test_data_symlink );\n\t}\n\n\t/**\n\t * In this scenario WordPress is installed as normal with wp-config.php and index.php in the root directory.\n\t */\n\tfunction test_standard_install() {\n\n\t\t$this->assertEquals( wp_normalize_path( untrailingslashit( ABSPATH ) ), Path::get_home_path() );\n\n\t}\n\n\t/**\n\t * In this scenario, WordPress is installed in a subdirectory with index.php and wp-config both in root.\n\t */\n\tfunction test_standard_install_in_subdirectory() {\n\n\t\t$home = get_option( 'home' );\n\t\t$siteurl = get_option( 'siteurl' );\n\t\t$sfn = $_SERVER['SCRIPT_FILENAME'];\n\t\t$this->assertEquals( wp_normalize_path( untrailingslashit( ABSPATH ) ), Path::get_home_path() );\n\n\t\tupdate_option( 'home', 'http://localhost' );\n\t\tupdate_option( 'siteurl', 'http://localhost/wp' );\n\n\t\t$_SERVER['SCRIPT_FILENAME'] = 'D:\\root\\vhosts\\site\\httpdocs\\wp\\wp-admin\\options-permalink.php';\n\t\t$this->assertEquals( 'D:/root/vhosts/site/httpdocs/', trailingslashit( Path::get_home_path() ) );\n\n\t\t$_SERVER['SCRIPT_FILENAME'] = '/Users/foo/public_html/trunk/wp/wp-admin/options-permalink.php';\n\t\t$this->assertEquals( '/Users/foo/public_html/trunk/',  trailingslashit( Path::get_home_path() ) );\n\n\t\t$_SERVER['SCRIPT_FILENAME'] = 'S:/home/wordpress/trunk/wp/wp-admin/options-permalink.php';\n\t\t$this->assertEquals( 'S:/home/wordpress/trunk/',  trailingslashit( Path::get_home_path() ) );\n\n\t\tupdate_option( 'home', $home );\n\t\tupdate_option( 'siteurl', $siteurl );\n\t\t$_SERVER['SCRIPT_FILENAME'] = $sfn;\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/class-backup-utilities/test-safe-mode.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Safe_Mode_Tests extends \\HM_Backup_UnitTestCase {\n\n\tfunction ini_get_mock() {\n\n\t\treturn $this->safe_mode;\n\n\t}\n\n\tfunction testSafeModeEmpty() {\n\n\t\t$this->safe_mode = '';\n\n\t\t$this->assertEmpty( $this->ini_get_mock() );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeUpperCaseOff() {\n\n\t\t$this->safe_mode = 'Off';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'Off' );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeLowerCaseOff() {\n\n\t\t$this->safe_mode = 'off';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'off' );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeWierdCaseOff() {\n\n\t\t$this->safe_mode = 'oFf';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'oFf' );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeStringZero() {\n\n\t\t$this->safe_mode = '0';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), '0' );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeIntZero() {\n\n\t\t$this->safe_mode = 0;\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 0 );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeFalse() {\n\n\t\t$this->safe_mode = false;\n\n\t\t$this->assertFalse( $this->ini_get_mock() );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeNull() {\n\n\t\t$this->safe_mode = null;\n\n\t\t$this->assertNull( $this->ini_get_mock() );\n\n\t\t$this->assertFalse( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeIntOne() {\n\n\t\t$this->safe_mode = 1;\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 1 );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeStringOne() {\n\n\t\t$this->safe_mode = '1';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), '1' );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeUpperCaseOn() {\n\n\t\t$this->safe_mode = 'On';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'On' );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeLowerCaseOn() {\n\n\t\t$this->safe_mode = 'on';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'on' );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeWierdCaseOn() {\n\n\t\t$this->safe_mode = 'oN';\n\n\t\t$this->assertEquals( $this->ini_get_mock(), 'oN' );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n\tfunction testSafeModeTrue() {\n\n\t\t$this->safe_mode = true;\n\n\t\t$this->assertEquals( $this->ini_get_mock(), true );\n\n\t\t$this->assertTrue( Backup_Utilities::is_safe_mode_on( array( $this, 'ini_get_mock' ) ) );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/class-mock-backup-engines.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Mock_Database_Backup_Engine extends Database_Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\tpublic function backup() {\n\t\treturn true;\n\t}\n\n}\n\nclass Mock_File_Backup_Engine extends File_Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\tpublic function backup() {\n\t\treturn true;\n\t}\n\n}\n\nclass Mock_Backup_Engine extends Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\tpublic function backup() {\n\t\treturn true;\n\t}\n\n\tpublic function verify_backup() {\n\t\treturn true;\n\t}\n\n}\n\nclass Mock_Failing_Backup_Engine extends Backup_Engine {\n\n\tpublic function __construct() {\n\t\tparent::__construct();\n\t}\n\n\tpublic function backup() {\n\t\treturn false;\n\t}\n\n\tpublic function verify_backup() {\n\t\treturn false;\n\t}\n\n}"
  },
  {
    "path": "tests/class-site-backup/test-backup-director.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Backup_Director_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\n\t\t$this->good_backup_engine = new Mock_Backup_Engine;\n\t\t$this->bad_backup_engine = new Mock_Failing_Backup_Engine;\n\t\t$this->backup = new Backup( 'backup.zip' );\n\n\t}\n\n\tpublic function test_backup_director_good() {\n\t\t$backup_engine = $this->backup->perform_backup( array( $this->good_backup_engine ) );\n\t\t$this->assertEquals( $this->good_backup_engine, $backup_engine );\n\t}\n\n\tpublic function test_backup_director_good_first() {\n\t\t$backup_engine = $this->backup->perform_backup( array( $this->good_backup_engine, $this->bad_backup_engine ) );\n\t\t$this->assertEquals( $this->good_backup_engine, $backup_engine );\n\t}\n\n\tpublic function test_backup_director_good_last() {\n\t\t$backup_engine = $this->backup->perform_backup( array( $this->bad_backup_engine, $this->good_backup_engine ) );\n\t\t$this->assertEquals( $this->good_backup_engine, $backup_engine );\n\t}\n\n\tpublic function test_backup_director_bad() {\n\t\t$backup_engine = $this->backup->perform_backup( array( $this->bad_backup_engine ) );\n\t\t$this->assertFalse( $backup_engine );\n\t}\n\n\tpublic function test_backup_director_lots_of_bad() {\n\t\t$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 ) );\n\t\t$this->assertEquals( $this->good_backup_engine, $backup_engine );\n\t}\n\n}\n"
  },
  {
    "path": "tests/class-site-backup/test-class-site-backup.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Site_Backup_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\t\t$this->backup = new Backup( 'backup.zip' );\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t}\n\n\tpublic function tearDown() {\n\t\t$this->cleanup_test_data();\n\t}\n\n\tpublic function test_database_backup() {\n\n\t\t$this->backup->set_type( 'database' );\n\t\t$this->backup->run();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->backup->get_database_backup_filepath() ) ) );\n\n\t}\n\n\tpublic function test_only_database_zipped_up() {\n\n\t\t$this->backup->set_type( 'database' );\n\t\tPath::get_instance()->reset_path();\n\n\t\tfile_put_contents( PATH::get_path() . '/foo.zip.SmuhtP', 'bar' );\n\t\tfile_put_contents( PATH::get_path() . '/zicBotXQ', 'baz' );\n\n\t\t$this->backup->run();\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), array( basename( $this->backup->get_database_backup_filepath() ) ) );\n\t\t$this->assertArchiveNotContains( $this->backup->get_backup_filepath(), array( 'zicBotXQ', 'foo.zip.SmuhtP' ) );\n\t\t$this->assertArchiveFileCount( $this->backup->get_backup_filepath(), 1 );\n\n\t}\n\n\tpublic function test_files_backup() {\n\n\t\t$this->backup->set_type( 'files' );\n\t\t$this->backup->run();\n\n\t\t$finder = new Mock_File_Backup_Engine;\n\t\t$finder = $finder->get_files();\n\n\t\tforeach ( $finder as $file ) {\n\t\t\t$files[] = $file->getRelativePathname();\n\t\t}\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), $files );\n\n\t}\n\n\tpublic function test_complete_backup() {\n\n\t\t$this->backup->run();\n\n\t\t$finder = new Mock_File_Backup_Engine;\n\t\t$finder = $finder->get_files();\n\n\t\tforeach ( $finder as $file ) {\n\t\t\t$files[] = $file->getRelativePathname();\n\t\t}\n\n\t\t$files[] = basename( $this->backup->get_database_backup_filepath() );\n\n\t\t$this->assertFileExists( $this->backup->get_backup_filepath() );\n\t\t$this->assertArchiveContains( $this->backup->get_backup_filepath(), $files );\n\n\t}\n\n\tpublic function test_multiple_backups_exclude_backups() {\n\n\t\t$this->backup->set_backup_filename( 'backup1.zip' );\n\t\t$this->backup->run();\n\t\t$backup1 = $this->backup->get_backup_filepath();\n\n\t\t$this->backup->set_backup_filename( 'backup2.zip' );\n\t\t$this->backup->run();\n\t\t$backup2 = $this->backup->get_backup_filepath();\n\n\t\t// Allow the filesize to vary by 10 bytes to avoid minor changes causing failures\n\t\t$this->assertEquals( filesize( $backup1 ), filesize( $backup2 ), '', 10 );\n\t\t$this->assertArchiveNotContains( $backup2, array( 'backup1.zip' ) );\n\n\t}\n}\n"
  },
  {
    "path": "tests/class-wp-test-hm-backup-testcase.php",
    "content": "<?php\n\nclass HM_Backup_UnitTestCase extends WP_UnitTestCase {\n\n\tprotected $test_root = __DIR__;\n\n\t/**\n\t * Assert that a zip archive exactly matches the array\n\t * of filenames\n\t *\n\t * @param string path to zip file\n\t * @param array of filenames to check for\n\t * @return null\n\t */\n\tfunction assertArchiveEquals( $zip_file, $filepaths, $root = ABSPATH ) {\n\n\t\t$extracted = $this->pclzip_extract_as_string( $zip_file );\n\n\t\t$files = array();\n\n\t\tforeach( $filepaths as $filepath ) {\n\t\t\t$filenames[] = str_ireplace( trailingslashit( $root ), '', wp_normalize_path( (string) $filepath ) );\n\t\t}\n\n\t\tforeach( $extracted as $fileInfo ) {\n\t\t\t$files[] = untrailingslashit( $fileInfo['filename'] );\n\t\t}\n\n\t\t$this->assertEquals( $filenames, $files );\n\n\t}\n\n\t/**\n\t * Assert that a zip archive doesn't match the array of filenames\n\t *\n\t * @param string path to zip file\n\t * @param array of filenames to check for\n\t * @return null\n\t */\n\tfunction assertArchiveNotEquals( $zip_file, $filenames ) {\n\n\t\t$extracted = $this->pclzip_extract_as_string( $zip_file );\n\n\t\t$files = array();\n\n\t\tforeach( $extracted as $fileInfo ) {\n\t\t\t$files[] = $fileInfo['filename'];\n\t\t}\n\n\t\t$this->assertNotEquals( $filenames, $files );\n\n\t}\n\n\t/**\n\t * Assert that a zip archive contains the array\n\t * of filenames\n\t *\n\t * @param string path to zip file\n\t * @param array of filenames to check for\n\t * @return null\n\t */\n\tfunction assertArchiveContains( $zip_file, $filepaths, $root = ABSPATH ) {\n\n\t\t$extracted = $this->pclzip_extract_as_string( $zip_file );\n\n\t\t$files = array();\n\n\t\tforeach( $filepaths as $filepath ) {\n\t\t\t$filenames[] = str_ireplace( trailingslashit( $root ), '', wp_normalize_path( (string) $filepath ) );\n\t\t}\n\n\t\tforeach( $extracted as $fileInfo ) {\n\t\t\t$files[] = untrailingslashit( wp_normalize_path( $fileInfo['filename'] ) );\n\t\t}\n\n\t\tforeach( $filenames as $filename ) {\n\t\t\t$this->assertContains( $filename, $files );\n\t\t}\n\n\t}\n\n\t/**\n\t * Assert that a zip archive doesn't contain any of the files\n\t * in the array of filenames\n\t *\n\t * @param string path to zip file\n\t * @param array of filenames to check for\n\t * @return null\n\t */\n\tfunction assertArchiveNotContains( $zip_file, $filenames ) {\n\n\t\t$extracted = $this->pclzip_extract_as_string( $zip_file );\n\n\t\t$files = array();\n\n\t\tforeach( (array) $extracted as $fileInfo ) {\n\t\t\t$files[] = wp_normalize_path( $fileInfo['filename'] );\n\t\t}\n\n\t\tforeach( $filenames as $filename ) {\n\t\t\t$this->assertNotContains( $filename, $files );\n\t\t}\n\n\n\t}\n\n\t/**\n\t * Assert that a zip archive contains the\n\t * correct number of files\n\t *\n\t * @param string path to zip file\n\t * @param int the number of files the archive should contain\n\t * @return null\n\t */\n\tfunction assertArchiveFileCount( $zip_file, $file_count ) {\n\n\t\t$extracted = $this->pclzip_extract_as_string( $zip_file );\n\n\t\t$this->assertEquals( count( array_filter( (array) $extracted ) ), $file_count );\n\n\t}\n\n\tprivate function pclzip_extract_as_string( $zip_file ) {\n\n\t\trequire_once( ABSPATH . 'wp-admin/includes/class-pclzip.php' );\n\n\t\tif ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {\n\t\t\t$previous_encoding = mb_internal_encoding();\n\t\t\tmb_internal_encoding( 'ISO-8859-1' );\n\t\t}\n\n\t\t$archive = new PclZip( $zip_file );\n\n\t\t$extracted = $archive->extract( PCLZIP_OPT_EXTRACT_AS_STRING );\n\n\t\tif ( isset( $previous_encoding ) ) {\n\t\t\tmb_internal_encoding( $previous_encoding );\n\t\t}\n\n\t\treturn $extracted;\n\n\t}\n\n\tprotected function setup_test_data() {\n\n\t\t$this->test_data = wp_normalize_path( __DIR__ ) . '/test-data';\n\t\t$this->test_data_symlink = wp_normalize_path( __DIR__ ) . '/test-data-symlink';\n\n\t\t$this->cleanup_test_data();\n\n\t\tmkdir( $this->test_data );\n\t\tmkdir( $this->test_data . '/exclude' );\n\t\tfile_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.' );\n\t\tfile_put_contents( $this->test_data . '/exclude/exclude.exclude', '' );\n\n\t\tmkdir( $this->test_data_symlink );\n\t\tfile_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.' );\n\n\t}\n\n\tprotected function cleanup_test_data() {\n\t\tHM\\BackUpWordPress\\rmdirtree( $this->test_data );\n\t\tHM\\BackUpWordPress\\rmdirtree( $this->test_data_symlink );\n\t}\n\n\t/**\n\t * Provide a backwards compatible version of assertNotWPError for old versions of WordPress\n\t */\n\tpublic function assertNotWPError( $actual, $message = '' ) {\n\n\t\tif ( is_callable( 'parent::assertNotWPError' ) ) {\n\t\t\treturn parent::assertNotWPError( $actual, $message );\n\t\t}\n\n\t\tif ( is_wp_error( $actual ) && '' === $message ) {\n\t\t\t$message = $actual->get_error_message();\n\t\t}\n\t\t$this->assertNotInstanceOf( 'WP_Error', $actual, $message );\n\t}\n\n}\n"
  },
  {
    "path": "tests/data/response.json",
    "content": "[{\"id\":24261,\"date\":\"2016-03-01T15:40:08\",\"date_gmt\":\"2016-03-01T15:40:08\",\"guid\":{\"rendered\":\"https:\\/\\/bwp.hmn.md\\/?post_type=download&#038;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\":\"<p>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.<br \\/>\\n<strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>PHP 5.3<\\/li>\\n<li>Latest BackUpWordPress<\\/li>\\n<li>WordPress 4.4.2<\\/li>\\n<li>Mcrypt PHP extension<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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 [&hellip;]<\\/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&#038;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\":\"<p>You can now backup your website automatically to your Amazon S3 account automatically on a schedule.<\\/p>\\n<p>Amazon S3 is an immensely popular and inexpensive cloud storage service.<\\/p>\\n<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>PHP version 5.3.2<\\/li>\\n<li>Latest BackUpWordPress<\\/li>\\n<li>WordPress\\u00a04.4.2<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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&#038;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\":\"<p>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<p>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<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>Latest BackUpWordPress<\\/li>\\n<li>WordPress\\u00a04.4.2<\\/li>\\n<li>PHP\\u00a05.3.3<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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 [&hellip;]<\\/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&#038;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\":\"<p>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<p>After activating the BackUpWordPress to FTP extension, you&#8217;ll find a new destination in your backup schedule settings. Just fill out your FTP\\/ SFTP credentials and you&#8217;ll be all set to get automatic backups sent to a remote server.<\\/p>\\n<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>Latest BackUpWordPress<\\/li>\\n<li>WordPress 4.4.2<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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&#8217;ll find a new destination in your backup schedule settings. Just fill out your FTP\\/ SFTP credentials and you&#8217;ll be all set to get automatic [&hellip;]<\\/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&#038;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\":\"<p>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<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>PHP version 5.3.0<\\/li>\\n<li>BackUpWordPress 3.1<\\/li>\\n<li>WordPress\\u00a04.4.2<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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&#038;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\":\"<p>Windows Azure is a cloud\\u00a0storage service similar to Amazon S3.<\\/p>\\n<p>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<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>PHP version 5.3.3<\\/li>\\n<li>Latest BackUpWordPress<\\/li>\\n<li>WordPress\\u00a04.4.2<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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&#038;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\":\"<p>All our extensions for BackUpWordPress in a single bundle.<\\/p>\\n<p>Best value!<\\/p>\\n\"},\"excerpt\":{\"rendered\":\"<p>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&#038;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\":\"<p>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<p>BackUpWordPress to Dreamhost dreamobjects now allows you to do that, automatically, on a schedule!<\\/p>\\n<p><strong>Requirements:<\\/strong><\\/p>\\n<ul>\\n<li>PHP 5.3.3<\\/li>\\n<li>BackUpWordPress 3.1.4<\\/li>\\n<li>WordPress 4.4.2<\\/li>\\n<\\/ul>\\n\"},\"excerpt\":{\"rendered\":\"<p>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\"}]}}]\n"
  },
  {
    "path": "tests/ini/php.ini",
    "content": "[PHP]\n\n; Recommended that short tags - <? and ?> - are not used.\n; Default Value: On\n; Development Value: Off\n; Production Value: Off\n; http://php.net/short-open-tag\nshort_open_tag = Off\n\n; If you pass a value by reference at function call time...\n; Default Value: On (Suppress warnings)\n; Development Value: Off (Issue warnings)\n; Production Value: Off (Issue warnings)\n; http://php.net/allow-call-time-pass-reference\nallow_call_time_pass_reference = Off\n\n; Maximum execution time of each script, in seconds\n; http://php.net/max-execution-time\n; Note: This directive is hardcoded to 0 for the CLI SAPI\nmax_execution_time = 300\n\n; Maximum amount of memory a script may consume (128MB)\n; http://php.net/memory-limit\nmemory_limit = 128M\n\n; Common Values:\n;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)\n;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)\n;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)\n;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)\n; Default Value: E_ALL & ~E_NOTICE\n; Development Value: E_ALL | E_STRICT\n; Production Value: E_ALL & ~E_DEPRECATED\n; http://php.net/error-reporting\n\nerror_reporting = E_ALL | E_STRICT\n\n\n; Should PHP output errors. If so, where?\n; Possible Values:\n;   Off = Do not display any errors\n;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)\n;   On or stdout = Display errors to STDOUT\n; Default Value: On\n; Development Value: On\n; Production Value: Off\n; http://php.net/display-errors\n\ndisplay_errors = On\n\n\n; Besides displaying errors, PHP can also log errors to locations such as a\n; server-specific log, STDERR, or a location specified by the error_log\n; directive found below. While errors should not be displayed on productions\n; servers they should still be monitored and logging is a great way to do that.\n; Default Value: Off\n; Development Value: On\n; Production Value: On\n; http://php.net/log-errors\nlog_errors = On\n\n; Set maximum length of log_errors. In error_log information about the source is\n; added. The default is 1024 and 0 allows to not apply any maximum length at all.\n; http://php.net/log-errors-max-len\nlog_errors_max_len = 1024\n\n; Do not log repeated messages. Repeated errors must occur in same file on same\n; line unless ignore_repeated_source is set true.\n; http://php.net/ignore-repeated-errors\nignore_repeated_errors = Off\n\n; Ignore source of message when ignoring repeated messages. When this setting\n; is On you will not log errors with repeated messages from different files or\n; source lines.\n; http://php.net/ignore-repeated-source\nignore_repeated_source = Off\n\n; Store the last error/warning message in $php_errormsg (boolean). Setting this value\n; to On can assist in debugging and is appropriate for development servers. It should\n; however be disabled on production servers.\n; Default Value: Off\n; Development Value: On\n; Production Value: Off\n; http://php.net/track-errors\ntrack_errors = Off\n\n; Display HTML links to docs related to the error?\n; Default Value: On\n; Development Value: On\n; Production value: Off\n; http://php.net/html-errors\nhtml_errors = 1\n\n; String to output before an error message. PHP's default behavior is to leave\n; this setting blank.\n; http://php.net/error-prepend-string\n; Example:\n;error_prepend_string = \"<span style='color: #ff0000'>\"\n\n; String to output after an error message. PHP's default behavior is to leave\n; this setting blank.\n; http://php.net/error-append-string\n; Example:\n;error_append_string = \"</span>\"\n\n; Log errors to specified file. PHP's default behavior is to leave this value\n; empty.\n; http://php.net/error-log\n; Example:\nerror_log = /var/log/php.log\n\n; Maximum size of POST data that PHP will accept.\n; http://php.net/post-max-size\npost_max_size = 50M\n\n; Maximum allowed size for uploaded files.\n; http://php.net/upload-max-filesize\nupload_max_filesize = 50M\n\n; Maximum number of files that can be uploaded via a single request\nmax_file_uploads = 20\n\n; Default timeout for socket based streams (seconds)\n; http://php.net/default-socket-timeout\ndefault_socket_timeout = 60\n\n;disable_functions = shell_exec,exec\ndate.timezone = \"Europe/Paris\"\nextension=mcrypt.so\n\nopen_basedir=/srv/www"
  },
  {
    "path": "tests/misc/test-path-in-open-basedir.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass testPathInOpenBasedir extends \\HM_Backup_UnitTestCase {\n\n    function ini_get_mock() {\n      return $this->basedir;\n    }\n\n    public function test_empty_basedir() {\n\n      $this->basedir = '';\n      $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_not_in_basedir() {\n\n      $this->basedir = 'foobarbaz';\n      $this->assertFalse( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_is_basedir() {\n\n      $this->basedir = __DIR__;\n      $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_in_basedir() {\n\n      $this->basedir = dirname( __DIR__ );\n      $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_deep_in_basedir() {\n\n      $this->basedir = dirname( dirname( dirname( __DIR__ ) ) );\n      $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_multiple_basedir() {\n\n      $this->basedir = 'foobarbaz' . PATH_SEPARATOR . __DIR__;\n      $this->assertTrue( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n    public function test_preceding_basedir() {\n\n      $this->basedir = 'foobarbaz' . dirname( __DIR__ );\n      $this->assertFalse( path_in_php_open_basedir( __DIR__, array( $this, 'ini_get_mock' ) ) );\n\n    }\n\n\n}\n"
  },
  {
    "path": "tests/misc/testDetermineStartTime.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Unit tests for the determine_start_time function\n *\n * @see determine_start_time()\n * @extends WP_UnitTestCase\n */\nclass testDetermineStartTimeTestCase extends \\HM_Backup_UnitTestCase {\n\n\t/**\n     * @var int $now Timestamp that will be returned by $this->time()\n     * @see $this->time()\n     * @static\n     * @access public\n     */\n    public static $now;\n\n\tpublic $plugin;\n\n\tpublic $schedule_intervals;\n\n    public function setUp() {\n\n\t\t$this->plugin = Plugin::get_instance();\n\n\t\t$this->schedule_intervals = cron_schedules();\n\n\t}\n\n\tpublic function time() {\n\t\treturn self::$now ? self::$now : time();\n\t}\n\n\t/**\n     * Reset custom time after test\n     */\n    public function tearDown() {\n        self::$now = null;\n    }\n\n\t/**\n\t * Test that the default time args are respected for hourly schedule\n\t *\n\t */\n\tpublic function testDefaultArgs() {\n\n\t\tforeach ( $this->schedule_intervals as $interval_name => $schedule_interval ) {\n\n\t\t\t// Test with current time\n\t\t\t$timestamp = determine_start_time( $interval_name );\n\n\t\t\t// Should be the beginning of the current minute + 10 minutes\n\t\t\t$this->assertEquals( $this->time() + 600 - date( 's', $this->time() ), $timestamp, $interval_name, 30 );\n\n\t\t\t// 12:00\n\t\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\t\t\t$timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) );\n\t\t\t$this->assertEquals( strtotime( '2014-03-05T12:10:00+00:00' ), $timestamp, $interval_name, 30 );\n\n\t\t\t// 23:59\n\t\t\tself::$now = strtotime( '2014-03-05T23:59:00+00:00' );\n\t\t\t$timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) );\n\t\t\t$this->assertEquals( strtotime( '2014-03-06T00:09:00+00:00' ), $timestamp, '', 30 ); // The next day at 9 minutes past midnight\n\n\t\t\t// 23:59 on the Dec 31\n\t\t\tself::$now = strtotime( '2013-12-31T23:59:00+00:00' );\n\t\t\t$timestamp = determine_start_time( $interval_name, array( 'now' => $this->time() ) );\n\t\t\t$this->assertEquals( strtotime( '2014-01-01T00:09:00+00:00' ), $timestamp, '', 30 ); // 1st of Jan of the next year at 9 minutes past midnight\n\n\t\t\tself::$now = null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Test that setting the hourly schedule to various future times works as expected\n\t *\n\t */\n\tpublic function testFutureStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\tforeach ( array( 'hourly', 'twicedaily', 'fortnightly' ) as $interval_name ) {\n\n\t\t\t// 13:01\n\t\t\t$timestamp = determine_start_time( $interval_name, array( 'hours' => 12, 'minutes' => 1, 'now' => $this->time() ) );\n\t\t\t$this->assertEquals( strtotime( '2014-03-05T12:01:00+00:00' ), $timestamp, '', 30 );\n\n\t\t\t// 23:59\n\t\t\t$timestamp = determine_start_time( $interval_name, array( 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t\t$this->assertEquals( strtotime( '2014-03-05T23:59:00+00:00' ), $timestamp, '', 30 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Test that setting the hourly schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testHourlyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t// 12:00\n\t\t$timestamp = determine_start_time( 'hourly', array( 'hours' => 12, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // An hour after current time\n\n\t\t// 11:59\n\t\t$timestamp = determine_start_time( 'hourly', array( 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-05T12:59:00+00:00' ), $timestamp, '', 30 ); // 59 minutes past the next hour\n\n\t\t// 01:00\n\t\t$timestamp = determine_start_time( 'hourly', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // An hour after the current time\n\n\t}\n\n\t/**\n\t * Test that setting the twice daily schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testTwiceDailyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t// 01:00\n\t\t$timestamp = determine_start_time( 'twicedaily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-05T13:00:00+00:00' ), $timestamp, '', 30 ); // 12 hours after the start time\n\n\t\tself::$now = strtotime( '2014-03-05T13:00:00+00:00' );\n\n\t\t// 01:00\n\t\t$timestamp = determine_start_time( 'twicedaily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-06T01:00:00+00:00' ), $timestamp, '', 30 ); // Tomorrow at 1am as we've already missed both schedules today\n\n\t\t// 12:59\n\t\tself::$now = strtotime( '2014-03-05T12:59:00+00:00' );\n\t\t$timestamp = determine_start_time( 'twicedaily', array( 'hours' => 12, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-06T00:59:00+00:00' ), $timestamp, '', 30 ); // Tomorrow at 59 minutes past midnight\n\n\t}\n\n\t/**\n\t * Test that setting the daily schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testDailyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t// 01:00\n\t\t$timestamp = determine_start_time( 'daily', array( 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-06T01:00:00+00:00' ), $timestamp, '', 30 ); // 24 hours after the start time\n\n\t\t// 12:59\n\t\tself::$now = strtotime( '2014-03-05T12:59:00+00:00' );\n\t\t$timestamp = determine_start_time( 'daily', array( 'hours' => 12, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-06T12:59:00+00:00' ), $timestamp, '', 30 );\n\n\t}\n\n\t/**\n\t * Test that setting the daily schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testWeeklyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:59:00+00:00');\n\n\t\t$timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'monday', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-10T01:00:00+00:00', $this->time() ), $timestamp, '', 30 );\n\n\t\t// 11:59\n\t\t$timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'wednesday', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-12T11:59:00+00:00', $this->time() ), $timestamp, '', 30 ); // Next week\n\n\t}\n\n\t/**\n\t * Test that setting the weekly schedule to various future times works as expected\n\t *\n\t */\n\tpublic function testWeeklyFutureStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t// 23:59 on Friday\n\t\t$timestamp = determine_start_time( 'weekly', array( 'day_of_week' => 'friday', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-07T23:59:00+00:00' ), $timestamp, '', 30 );\n\n\t}\n\n\t/**\n\t * Test that setting the fortnightly schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testFortnightlyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t$timestamp = determine_start_time( 'fortnightly', array( 'day_of_week' => 'monday', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-10T01:00:00+00:00' ), $timestamp, '', 30 );\n\n\t\t// 11:59\n\t\t// @todo feels like this should actually be wednesday the 12th not the 19th\n\t\t$timestamp = determine_start_time( 'fortnightly', array( 'day_of_week' => 'wednesday', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-19T11:59:00+00:00' ), $timestamp, '', 30 ); // Next week\n\n\t}\n\n\t/**\n\t * Test that setting the monthly schedule to various past times works as expected\n\t *\n\t */\n\tpublic function testMonthlyPastStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t$timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '1', 'hours' => 1, 'minutes' => 0, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-04-01T01:00:00+00:00' ), $timestamp, '', 30 );\n\n\t\t$timestamp = determine_start_time( 'monthly', array( 'day_of_week' => '5', 'hours' => 11, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-04-05T11:59:00+00:00' ), $timestamp, '', 30 ); // Next week\n\n\t}\n\n\t/**\n\t * Test that setting the monthly schedule to various future times works as expected\n\t *\n\t */\n\tpublic function testMonthlyFutureStart() {\n\n\t\tself::$now = strtotime( '2014-03-05T12:00:00+00:00' );\n\n\t\t// 23:59 on the 25th\n\t\t$timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '25', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-03-25T23:59:00+00:00' ), $timestamp, '', 30 );\n\n\t\t// 23:59 on the Dec 31\n\t\tself::$now = strtotime( '2013-12-31T23:59:00+00:00' );\n\t\t$timestamp = determine_start_time( 'monthly', array( 'day_of_month' => '31', 'hours' => 23, 'minutes' => 59, 'now' => $this->time() ) );\n\t\t$this->assertEquals( strtotime( '2014-01-31T23:59:00+00:00' ), $timestamp, '', 30 );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/misc/testUninstallActivateDeactivate.php",
    "content": "<?php\n\n/**\n * Unit tests for the HMBKP_Path class\n *\n * @see HMBKP_Path\n * @extends HM_Backup_UnitTestCase\n */\nclass testUninstallActivateDeactivateTestCase extends HM_Backup_UnitTestCase {\n\n\n\tprotected $plugin = null;\n\n\tpublic function setUp() {\n\t\tparent::setUp();\n\t}\n\n\tpublic function tearDown() {\n\t\tparent::tearDown();\n\t}\n\n\tpublic function test_uninstall() {\n\n\t\t//BackUpWordPress_Setup::uninstall();\n\n\t\t$transients = array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesize_running' );\n\n\t\t$options = array( 'hmbkp_enable_support', 'hmbkp_plugin_version', 'hmbkp_path', 'hmbkp_default_path', 'hmbkp_upsell' );\n\n\t\tforeach ( $transients as $transient ) {\n\t\t\t$this->assertFalse( get_transient( $transient ) );\n\t\t}\n\n\t\tforeach ( $options as $option ) {\n\t\t\t$this->assertFalse( get_option( $option ) );\n\t\t}\n\n\t}\n\n\tpublic function test_deactivate() {\n\n\t\t// Just make sure the transients have been deleted, which means plugin wa deactivated.\n\t\t$transients = array( 'hmbkp_plugin_data', 'hmbkp_directory_filesizes', 'hmbkp_directory_filesize_running' );\n\n\t\tforeach ( $transients as $transient ) {\n\t\t\t$this->assertFalse( get_transient( $transient ) );\n\t\t}\n\t}\n\n\tpublic function test_activate() {\n\n\t\t$this->plugin = HM\\BackUpWordPress\\Plugin::get_instance();\n\t\t$this->assertInstanceOf( 'HM\\BackUpWordPress\\Plugin', $this->plugin );\n\n\t}\n}\n"
  },
  {
    "path": "tests/schedule/testScheduleTest.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Tests for methods dealing with scheduling backups\n *\n * @extends WP_UnitTestCase\n */\nclass testScheduleTestCase extends \\HM_Backup_UnitTestCase {\n\n\t/**\n\t * Contains the current backup schedule instance\n\t *\n\t * @var object\n\t * @access protected\n\t */\n\tprotected $schedule;\n\n\t/**\n\t * Setup the schedule\n\t *\n\t */\n\tpublic function setUp() {\n\n\t\t$this->schedule = new Scheduled_Backup( 'unit-test' );\n\n\t\t$this->recurrences = get_cron_schedules();\n\n\t}\n\n\t/**\n\t * Teardown the schedule and cleanup\n\t *\n\t */\n\tpublic function tearDown() {\n\n\t\t$this->schedule->cancel();\n\n\t\tunset( $this->schedule );\n\n\t\tunset( $this->recurrences );\n\n\t}\n\n\t/**\n\t * Test that the default schedule is manual\n\t *\n\t */\n\tpublic function testDefaultSchedule() {\n\n\t\t// The default recurrence should be manual\n\t\t$this->assertEquals( 'manually', $this->schedule->get_reoccurrence() );\n\n\t\t// There shouldn't be a next occurence\n\t\t$this->assertEmpty( $this->schedule->get_next_occurrence() );\n\n\t\t// There shoudldn't be a start time\n\t\t$this->assertEmpty( $this->schedule->get_schedule_start_time() );\n\n\t\t// There shouldn't be an interval\n\t\t$this->assertEmpty( $this->schedule->get_interval() );\n\n\t}\n\n\t/**\n\t * Test that setting a start time in the past causes a wp_error and default to now instead\n\t *\n\t */\n\tpublic function set_past_start_time() {\n\n\t\t$this->assertTrue( is_wp_error( $this->schedule->set_schedule_start_time( time() - 7200 ) ) );\n\t\t$this->assertEquals( $this->schedule->get_schedule_start_time(), time(), '', 30 );\n\n\t}\n\n\t/**\n\t * Test that we can set the each schedule without a start time\n\t *\n\t */\n\tpublic function testSetrecurrences() {\n\n\t\tforeach ( $this->recurrences as $reoccurrence => $settings ) {\n\n\t\t\t$this->schedule->set_reoccurrence( $reoccurrence );\n\t\t\t$this->assertEquals( $reoccurrence, $this->schedule->get_reoccurrence() );\n\n\t\t\t// The default start time should be now\n\t\t\t$this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 );\n\n\t\t\t// Check that the start time is the same as the next occurance\n\t\t\t$this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Test that the cron even is re-setup if the cron option in the database is lost\n\t *\n\t */\n\tpublic function testReSetupAfterDeleteCron() {\n\n\t\t$this->schedule->set_reoccurrence( 'hourly' );\n\t\t$this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() );\n\n\t\t// The default start time should be now\n\t\t$this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 );\n\n\t\t// Check that the start time is the same as the next occurance\n\t\t$this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 );\n\n\t\t$this->schedule->save();\n\n\t\t// delete the cron_array\n\t\tdelete_option( 'cron' );\n\n\t\t$this->schedule->__construct( 'unit-test' );\n\n\t\t// The default start time should be now\n\t\t$this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 );\n\n\t\t// Check that the start time is the same as the next occurance\n\t\t$this->assertEquals( $this->schedule->get_next_occurrence(), time(), '', 30 );\n\n\t}\n\n\t/**\n\t * Test that we can set the each schedule with a start time\n\t *\n\t */\n\tpublic function testSetFutureSchedule() {\n\n\t\tforeach ( $this->recurrences as $reoccurrence => $settings ) {\n\n\t\t\t$this->schedule->set_reoccurrence( 'hourly' );\n\t\t\t$this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() );\n\n\t\t\t$this->assertFalse( is_wp_error( $this->schedule->set_schedule_start_time( time() + 7200 ) ) );\n\t\t\t$this->assertEquals( $this->schedule->get_schedule_start_time(), time() + 7200, '', 30 );\n\n\t\t\t$this->assertEquals( $this->schedule->get_next_occurrence(), time() + 7200, '', 30 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Test that we everything is properly removed when we unschedule\n\t *\n\t */\n\tpublic function testUnschedule() {\n\n\t\t$this->schedule->set_reoccurrence( 'hourly' );\n\t\t$this->assertEquals( 'hourly', $this->schedule->get_reoccurrence() );\n\n\t\t// The default start time should be now\n\t\t$this->assertEquals( time(), $this->schedule->get_schedule_start_time(), '', 30 );\n\n\t\t// Check that the start time is the same as the next occurance\n\t\t$this->assertEquals( time(), $this->schedule->get_next_occurrence(), '', 30 );\n\n\t\t$this->schedule->unschedule();\n\n\t\t// Check that the start time is the same as the next occurance\n\t\t$this->assertEmpty( $this->schedule->get_next_occurrence() );\n\n\t}\n\n\tpublic function testAverageBackupDurationCorrectValuesMinutes() {\n\n\t\t$test_values = array(\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() + ( 10 * MINUTE_IN_SECONDS ),\n\t\t\t),\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() + ( 5 * MINUTE_IN_SECONDS ),\n\t\t\t),\n\t\t);\n\n\t\t$this->add_mock_backup_data( $test_values );\n\n\t\t// We round the average so 7.5 becomes 8\n\t\t$this->assertEquals( '8 mins', $this->schedule->get_schedule_average_duration() );\n\t}\n\n\tpublic function testAverageBackupDurationCorrectValuesHours() {\n\n\t\t$test_values = array(\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() + ( 10 * HOUR_IN_SECONDS ),\n\t\t\t),\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() + ( 5 * HOUR_IN_SECONDS ),\n\t\t\t),\n\t\t);\n\n\t\t$this->add_mock_backup_data( $test_values );\n\n\t\t// We round the average so 7.5 becomes 8\n\t\t$this->assertEquals( '8 hours', $this->schedule->get_schedule_average_duration() );\n\t}\n\n\tpublic function testAverageBackupDurationIncorrectValues() {\n\n\t\t// Add an initial fake run\n\t\t$this->add_mock_backup_data( array(\n\t\t\t'start' => time(),\n\t\t\t'end' => time() + ( 7 * MINUTE_IN_SECONDS ),\n\t\t) );\n\n\t\t$current_average = $this->schedule->get_schedule_average_duration();\n\n\t\t$test_values = array(\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() - ( 10 * MINUTE_IN_SECONDS ),\n\t\t\t),\n\t\t\tarray(\n\t\t\t\t'start' => time(),\n\t\t\t\t'end' => time() - ( 5 * MINUTE_IN_SECONDS ),\n\t\t\t),\n\t\t);\n\n\t\t$this->add_mock_backup_data( $test_values );\n\n\t\t// Value should not have changed\n\t\t$this->assertEquals( $current_average, $this->schedule->get_schedule_average_duration() );\n\t}\n\n\tpublic function testAverageBackupDurationZeroValues() {\n\n\t\t// Add an initial fake run\n\t\t$this->add_mock_backup_data( array(\n\t\t\t'start' => time(),\n\t\t\t'end' => time() + ( 7 * MINUTE_IN_SECONDS ),\n\t\t) );\n\n\t\t$current_average = $this->schedule->get_schedule_average_duration();\n\n\t\t$test_values = array(\n\t\t\tarray(\n\t\t\t\t'start' => 0,\n\t\t\t\t'end' => 0,\n\t\t\t),\n\t\t\tarray(\n\t\t\t\t'start' => 0,\n\t\t\t\t'end' => 0,\n\t\t\t),\n\t\t);\n\n\t\t$this->add_mock_backup_data( $test_values );\n\n\t\t// Value should not have changed\n\t\t$this->assertEquals( $current_average, $this->schedule->get_schedule_average_duration() );\n\t}\n\n\tprotected function add_mock_backup_data( $data = array() ) {\n\n\t\tforeach ( $data as $run ) {\n\t\t\t$this->schedule->update_average_schedule_run_time( $run['start'], $run['end'] );\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/test-backup-path.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Unit tests for the Path class\n *\n * @see Path\n * @extends HM_Backup_UnitTestCase\n */\nclass Test_Backup_Path extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\n\t\t// We need to mess with the $is_apache global so let's back it up now\n\t\tglobal $is_apache;\n\t\t$this->is_apache = $is_apache;\n\n\t\t$this->path = Path::get_instance();\n\t\t$this->custom_path = wp_normalize_path( WP_CONTENT_DIR . '/custom' );\n\n\t\t// Cleanup before we kickoff in-case theirs cruft around from previous failures\n\t\t$this->tearDown();\n\n\t}\n\n\tpublic function tearDown() {\n\n\t\t// Restore the is_apache global in-case it was messed with in the test\n\t\tglobal $is_apache;\n\n\t\tif ( isset( $this->is_apache ) ) {\n\t\t\t$is_apache = $this->is_apache;\n\t\t}\n\n\t\tif ( file_exists( $this->path->get_default_path() ) ) {\n\t\t\tchmod( $this->path->get_default_path(), 0755 );\n\t\t}\n\n\t\tchmod( dirname( $this->path->get_default_path() ), 0755 );\n\n\t\t// Remove all backup paths that exist\n\t\tforeach( $this->path->get_existing_paths() as $path ) {\n\t\t\trmdirtree( $path );\n\t\t}\n\n\t\t// Remove our custom path\n\t\trmdirtree( $this->custom_path );\n\n    \t// Reset the path internally\n\t\t$this->path->reset_path();\n\n\t}\n\n\t/**\n\t * By default the path should be the default path\n\t */\n\tpublic function testDefaultPath() {\n\n\t\t$this->assertEquals( $this->path->get_default_path(), $this->path->get_path() );\n\n\t\t$this->assertFileExists( $this->path->get_default_path() );\n\n\t}\n\n\t/**\n\t * If the default path is unwritable then it should fallback to the fallback path\n\t */\n\tpublic function testFallbackPath() {\n\n\t\t$this->assertEquals( $this->path->get_default_path(), Path::get_path() );\n\n\t\t$path = $this->path->get_default_path();\n\n\t\tchmod( $path, 0555 );\n\n\t\t$this->path->calculate_path();\n\n\t\t// wp_mkdir_p fixes permissions which invalidates this test\n\t\tif ( wp_is_writable( $path ) ) {\n\t\t\t$this->markTestSkipped( 'The default path was still writable' );\n\t\t}\n\n\t\t$this->assertEquals( Path::get_path(), $this->path->get_fallback_path() );\n\n\t\t$this->assertFileExists( $this->path->get_fallback_path() );\n\n\t}\n\n\t/**\n\t * If there are 1 or more existing paths then the first one of those should be used\n\t */\n\tpublic function testExistingPath() {\n\n\t\t$paths = $this->generate_additional_paths();\n\n\t\t$this->assertEquals( $this->path->get_existing_path(), $paths[0] );\n\n\t\t$this->path->set_path( '' );\n\n\t\t$this->path->calculate_path();\n\n\t\t$this->assertEquals( Path::get_path(), $this->path->get_existing_path() );\n\n\t\t$this->assertFileExists( $this->path->get_existing_path() );\n\n\t}\n\n\t/**\n\t * If there are several existing paths this should find all of them\n\t */\n\tpublic function testExistingPaths() {\n\n\t\t$generated_paths = $this->generate_additional_paths();\n        $paths = $this->path->get_existing_paths();\n\n        sort( $generated_paths );\n        sort( $paths );\n\n\t\t$this->assertEquals( $paths, $paths );\n\n\t}\n\n\t/**\n\t * Setting a writable custom path should override everything\n\t */\n\tpublic function testCustomPath() {\n\n\t\t$this->path->set_path( $this->custom_path );\n\n\t\t$this->assertEquals( $this->path->get_custom_path(), $this->custom_path );\n\n\t\t$this->assertEquals( Path::get_path(), wp_normalize_path( $this->custom_path ) );\n\n\t\t$this->assertFileExists( $this->path->get_custom_path() );\n\n\t}\n\n\t/**\n\t * Unwritable or otherwide broken custom paths should be ignored\n\t */\n\tpublic function testUnwritableCustomPath() {\n\n\t\t$this->path->set_path( '/' . rand() );\n\n\t\tif ( wp_is_writable( $this->custom_path ) ) {\n\t\t\t$this->markTestSkipped( 'The custom path was still writable' );\n\t\t}\n\n\t\t$this->assertEquals( Path::get_path(), $this->path->get_default_path() );\n\n\t\t$this->assertFileExists( $this->path->get_default_path() );\n\n\t}\n\n\t/**\n\t * Test that backups are correctly merged from multiple existing backup paths\n\t */\n\tpublic function testMergeExistingPath() {\n\n\t\t$paths = $this->generate_additional_paths();\n\n\t\t// Create a dummy database backup in each path\n\t\tforeach ( $paths as $path ) {\n\n\t\t\t\t$backups[] = $backup = microtime() . '.zip';\n\n\t\t\t\tfile_put_contents( trailingslashit( $path ) . $backup, 'Just keep swimming, just keep swimming...' );\n\n\t\t}\n\n\t\t$this->path->merge_existing_paths();\n\n\t\tforeach ( $backups as $backup ) {\n\t\t\t$this->assertFileExists( Path::get_path() . '/' . $backup );\n\t\t}\n\n\t}\n\n\t/**\n\t * Test that the backup path is correctly protected\n\t */\n\tpublic function testIsPathProtected() {\n\n\t\t// Fake that we're on Apache so we can also test .htaccess\n\t\tglobal $is_apache;\n\t\t$is_apache = true;\n\n\t\t// Test the default backup path\n\t\t$this->assertFileExists( Path::get_path() . '/index.html' );\n\t\t$this->assertFileExists( Path::get_path() . '/.htaccess' );\n\n\t\t// Test a custom backup path\n\t\t$this->path->set_path( $this->custom_path );\n\n\t\t$this->path->calculate_path();\n\n\t\t$this->assertFileExists( Path::get_path() . '/index.html' );\n\t\t$this->assertFileExists( Path::get_path() . '/.htaccess' );\n\n\t}\n\n\t/**\n\t * Create multiple backup paths for testing purposes\n\t */\n\tprivate function generate_additional_paths() {\n\n\t\tfor ( $i = 0; $i < 3; $i++ ) {\n\t\t\t$paths[] = $path = wp_normalize_path( WP_CONTENT_DIR ) . '/backupwordpress-' . str_pad( $i, 10, $i ) . '-backups';\n\t\t\t$this->path->set_path( $path );\n\t\t}\n\n\t\t$uploads = wp_upload_dir();\n\n\t\tfor ( $i = 0; $i < 3; $i++ ) {\n\t\t\t$paths[] = $path = wp_normalize_path( $uploads['basedir'] ) . '/backupwordpress-' . str_pad( $i, 10, $i ) . '-backups';\n\t\t\t$this->path->set_path( $path );\n\t\t}\n\n\t\treturn $paths;\n\n\t}\n\n\tpublic function test_cleanup() {\n\n\t\t// Should be cleaned up\n\t\tfile_put_contents( PATH::get_path() . '/foo.zip.SmuhtP', 'bar' );\n\t\tfile_put_contents( PATH::get_path() . '/foo.sql', 'bar' );\n\t\tfile_put_contents( PATH::get_path() . '/zicBotXQ', 'baz' );\n\n\t\t// Existing backups shouldn't be cleaned up\n\t\tfile_put_contents( PATH::get_path() . '/backup.zip', 'baz' );\n\n\t\tPath::get_instance()->cleanup();\n\n\t\t$this->assertFileNotExists( PATH::get_path() . '/foo.zip.SmuhtP' );\n\t\t$this->assertFileNotExists( PATH::get_path() . '/foo.sql' );\n\t\t$this->assertFileNotExists( PATH::get_path() . '/zicBotXQ' );\n\n\t\t$this->assertFileExists( PATH::get_path() . '/index.html' );\n\t\t$this->assertFileExists( PATH::get_path() . '/backup.zip' );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/test-backup-status.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\n/**\n * Unit tests for the Backup_Status class\n *\n * @extends HM_Backup_UnitTestCase\n */\nclass Test_Backup_Status extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t\t$this->status = new Backup_Status( 'status1' );\n\t}\n\n\tpublic function tearDown() {\n\t\t$this->cleanup_test_data();\n\t}\n\n\tpublic function test_not_started() {\n\t\t$this->assertFalse( $this->status->is_started() );\n\t}\n\n\tpublic function test_not_started_status_filepath() {\n\t\t$this->assertFileNotExists( $this->status->get_status_filepath() );\n\t}\n\n\tpublic function test_not_started_filename() {\n\t\t$this->assertEmpty( $this->status->get_backup_filename() );\n\t}\n\n\tpublic function test_not_started_status() {\n\t\t$this->assertEmpty( $this->status->get_status() );\n\t}\n\n\tpublic function test_not_started_start_time() {\n\t\t$this->assertEquals( 0, $this->status->get_start_time() );\n\t}\n\n\tpublic function test_not_started_set_status() {\n\t\t$this->status->set_status( 'running' );\n\t\t$this->assertEmpty( $this->status->get_status() );\n\t}\n\n\tpublic function test_started() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->assertTrue( $this->status->is_started() );\n\t}\n\n\tpublic function test_started_status_filepath() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->assertFileExists( $this->status->get_status_filepath() );\n\t}\n\n\tpublic function test_started_filename() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->assertEquals( 'pri', $this->status->get_backup_filename() );\n\t}\n\n\tpublic function test_started_status() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->assertEquals( 'sm', $this->status->get_status() );\n\t}\n\n\tpublic function test_started_start_time() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->assertNotEquals( 0, $this->status->get_start_time() );\n\t}\n\n\tpublic function test_started_set_status() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->status->set_status( 'running' );\n\t\t$this->assertEquals( 'running', $this->status->get_status() );\n\t}\n\n\tpublic function test_finish() {\n\t\t$this->status->start( 'pri', 'sm' );\n\t\t$this->status->finish();\n\t\t$this->assertFileNotExists( $this->status->get_status_filepath() );\n\t}\n\n\tpublic function test_multiple_status_dont_clash() {\n\n\t\t$status1 = $this->status;\n\t\t$status2 = new Backup_Status( 'status2' );\n\n\t\t$status1->start( 'darth', 'vadar' );\n\t\t$status2->start( 'master', 'yoda' );\n\n\t\t$this->assertNotEquals( $status1->get_status_filepath(), $status2->get_status_filepath() );\n\t\t$this->assertEquals( 'darth', $status1->get_backup_filename() );\n\t\t$this->assertEquals( 'vadar', $status1->get_status() );\n\t\t$this->assertEquals( 'master', $status2->get_backup_filename() );\n\t\t$this->assertEquals( 'yoda', $status2->get_status() );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/test-excludes.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Backup_Engine_Excludes extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t\t$this->root = new \\SplFileInfo( Path::get_root() );\n\n\t\t$this->backup = new Mock_File_Backup_Engine;\n\t}\n\n\tpublic function tearDown() {\n\t\t$this->cleanup_test_data();\n\t}\n\n\tpublic function testBackUpDirIsExcludedWhenBackUpDirIsInRoot() {\n\n\t\t$excludes = new Excludes;\n\n\t\t$this->assertContains( Path::get_root(), Path::get_path() );\n\t\t$this->assertContains( str_replace( trailingslashit( Path::get_root() ), '', Path::get_path() ), $excludes->get_excludes() );\n\n\t}\n\n\tpublic function testNoExcludesExceptDefaults() {\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertContains( 'exclude/exclude.exclude', $files );\n\t\t$this->assertContains( 'test-data.txt', $files );\n\n\t\t$this->assertCount( 3, $files );\n\n\t}\n\n\tpublic function testExcludeAbsoluteDirPath() {\n\n\t\t$this->backup->set_excludes( new Excludes( '/exclude/' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertCount( 1, $files );\n\n\n\t}\n\n\tpublic function testExcludeAbsoluteRootDirPath() {\n\n\t\t$this->backup->set_excludes( new Excludes( $this->test_data . '/exclude/' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertCount( 1, $files );\n\n\t}\n\n\tpublic function testExcludeDirPathFragment() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude/' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertCount( 1, $files );\n\n\t}\n\n\tpublic function testExcludeAmbiguousAbsoluteDirPath() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertCount( 1, $files );\n\n\t}\n\n\tpublic function testExcludeAbsoluteFilePath() {\n\n\t\t$this->backup->set_excludes( new Excludes( '/exclude/exclude.exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAmbiguousAbsoluteFilePath() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude/exclude.exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAbsolutePathWithWildcardFile() {\n\n\t\t$this->backup->set_excludes( new Excludes( '/exclude/*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAmbiguousAbsolutePathWithWildcardFile() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude/*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeWildcardFileName() {\n\n\t\t$this->backup->set_excludes( new Excludes( '*.exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAbsolutePathWithWildcardFileName() {\n\n\t\t$this->backup->set_excludes( new Excludes( '/exclude/*.exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAmbiguousAbsolutePathWithWildcardFileName() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude/*.exclude' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeWildcardFileExtension() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude.*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAbsolutePathWithWildcardFileExtension() {\n\n\t\t$this->backup->set_excludes( new Excludes( '/exclude/exclude.*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludeAmbiguousAbsolutePathWithWildcardFileExtension() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'exclude/exclude.*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludePartialFilename() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'test-*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertNotContains( 'test-data.txt', $files );\n\t\t$this->assertContains( 'exclude', $files );\n\t\t$this->assertContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 2, $files );\n\n\t}\n\n\tpublic function testExcludePartialDirectory() {\n\n\t\t$this->backup->set_excludes( new Excludes( 'excl*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertContains( 'test-data.txt', $files );\n\t\t$this->assertNotContains( 'exclude', $files );\n\t\t$this->assertNotContains( 'exclude/exclude.exclude', $files );\n\n\t\t$this->assertCount( 1, $files );\n\n\t}\n\n\tpublic function testWildCard() {\n\n\t\t$this->backup->set_excludes( new Excludes( '*' ) );\n\n\t\t$files = $this->get_and_prepare_files();\n\n\t\t$this->assertEmpty( $files );\n\n\t}\n\n\t/**\n\t * File is excluded directly (either in the root or any non-excluded sub-directory).\n\t *\n\t * Main test: Excludes->is_file_excluded( $file )\n\t * Expected:  true.\n\t */\n\tpublic function test_excluded_file_directly_is_excluded() {\n\n\t\t$file_path =  $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Exclude file directly.\n\t\t$excluded_file = new Excludes( $file_path );\n\n\t\t// Check the file is excluded - true.\n\t\t$this->assertContains( basename( $file->getPathname() ), $excluded_file->get_user_excludes() );\n\t\t$this->assertTrue( $excluded_file->is_file_excluded( $file ) );\n\t}\n\n\t/**\n\t * File is excluded as a result of being in an excluded directory.\n\t *\n\t * Main test: Excludes->is_file_excluded( $file )\n\t * Expected:  true.\n\t */\n\tpublic function test_excluded_file_via_parent_directory_is_excluded() {\n\n\t\t$file_path = $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Exclude the parent directory, so the file in it is excluded by \"inheritance\".\n\t\t$excluded_dir_name = basename( $file->getPath() ); // test-data directory, the parent dir of the file.\n\t\t$excluded_dir      = new Excludes( $excluded_dir_name );\n\n\t\t// Check the directory is excluded. File in that directory should be excluded too.\n\t\t$this->assertContains( $excluded_dir_name, $excluded_dir->get_user_excludes() );\n\t\t$this->assertTrue( $excluded_dir->is_file_excluded( $file ) );\n\t}\n\n\t/**\n\t * File is NOT excluded directly (either in the root or any non-excluded sub-directory).\n\t *\n\t * Main test: Excludes->is_file_excluded( $file )\n\t * Expected:  false.\n\t */\n\tpublic function test_non_excluded_file_is_excluded() {\n\n\t\t$file_path =  $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Do NOT exclude the parent directory, so the file in it is also non excluded by \"inheritance\".\n\t\t$non_excluded_dir_name = basename( $file->getPath() ); // test-data directory, the parent dir of the file.\n\t\t$non_excluded_dir      = new Excludes();\n\n\t\t// Check the directory is NOT excluded. File in that directory should be NOT excluded too.\n\t\t$this->assertNotContains( $non_excluded_dir_name, $non_excluded_dir->get_user_excludes() );\n\t\t$this->assertFalse( $non_excluded_dir->is_file_excluded( $file ) );\n\t}\n\n\tprivate function get_and_prepare_files() {\n\n\t\t$finder = $this->backup->get_files();\n\t\t$files = array();\n\n\t\tforeach ( $finder as $file ) {\n\t\t\t$files[] = wp_normalize_path( $file->getRelativePathname() );\n\t\t}\n\n\t\treturn $files;\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/test-extensions.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Extensions_Tests extends \\HM_Backup_UnitTestCase {\n\n\tprivate $extensions;\n\n\tpublic function setUp() {\n\t\tparent::setUp();\n\t\t$this->extensions = Extensions::get_instance();\n\t}\n\n\tpublic function tearDown() {\n\n\t}\n\n\tpublic function test_instance() {\n\t\t$instance = Extensions::get_instance();\n\n\t\t$this->assertInstanceOf( 'HM\\BackUpWordPress\\Extensions', $instance );\n\t}\n\n\tpublic function test_fetch_api_data() {\n\t\tadd_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' )\n\t\t), 10, 3 );\n\n\t\t$extensions_data = $this->extensions->get_edd_data();\n\n\t\t$this->assertNotFalse( $extensions_data );\n\n\t\t$this->assertInternalType( 'array', $extensions_data );\n\t\t$this->assertGreaterThan( 0, count( $extensions_data ) );\n\t}\n\n\tprivate function get_http_request_overide( $matched_url, $response_body ) {\n\n\t\t$func = null;\n\n\t\treturn $func = function( $return, $request, $url ) use ( $matched_url, $response_body, &$func ) {\n\n\t\t\tremove_filter( 'pre_http_request', $func );\n\n\t\t\tif ( $url !== $matched_url ) {\n\t\t\t\treturn $return;\n\t\t\t}\n\n\t\t\t$response = array(\n\t\t\t\t'headers'  => array(),\n\t\t\t\t'body'     => $response_body,\n\t\t\t\t'response' => array( 'code' => 200 ),\n\t\t\t);\n\n\t\t\treturn $response;\n\t\t};\n\n\t}\n}\n"
  },
  {
    "path": "tests/test-get-files.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Backup_Engine_Get_Files extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\n\t\t$this->backup = new Mock_File_Backup_Engine;\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\n\t}\n\n\tpublic function tearDown() {\n\t\tchmod( Path::get_root() . '/exclude', 0755 );\n\t\t$this->cleanup_test_data();\n\t}\n\n\tpublic function test_get_files() {\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 3 );\n\n\t}\n\n\tpublic function test_get_files_includes_hidden_files() {\n\n\t\tfile_put_contents( $this->test_data . '/.hidden', '' );\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 4 );\n\n\t}\n\n\tpublic function test_unreadable_files_ignored() {\n\n\t\tchmod( Path::get_root() . '/test-data.txt', 0220 );\n\n\t\tif ( is_readable( Path::get_root() . '/test-data.txt' ) ) {\n\t\t\t$this->markTestSkipped( \"File was readable.\" );\n\t\t}\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 2 );\n\n\t}\n\n\tpublic function test_unreadable_directory_ignored() {\n\n\t\tchmod( Path::get_root() . '/exclude', 0220 );\n\n\t\tif ( is_readable( Path::get_root() . '/exclude' ) ) {\n\t\t\t$this->markTestSkipped( \"directory was readable.\" );\n\t\t}\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 1 );\n\n\t}\n\n\tpublic function test_vcs_ignored() {\n\n\t\tmkdir( $this->test_data . '/.git' );\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 3 );\n\n\t}\n\n\tpublic function test_default_excludes_ignored() {\n\n\t\t$excludes = new Excludes;\n\t\t$default_excludes = $excludes->get_default_excludes();\n\n\t\tforeach ( $default_excludes as $default_exclude ) {\n\t\t\t$default_exclude = str_replace( '*', rand(), $default_exclude );\n\t\t\tmkdir( trailingslashit( $this->test_data ) . $default_exclude );\n\t\t}\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 3 );\n\n\t}\n\n\t/**\n\t * The .gitignore file should be ignored because .git is a default exclude\n\t */\n\tpublic function test_excluded_git_in_filename_is_ignored() {\n\n\t\tfile_put_contents( $this->test_data . '/.gitignore', '' );\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 3 );\n\n\t}\n\n\t/**\n\t * These folders shouln't be excluded just because `updraft` is an excluded directory\n\t */\n\tpublic function test_excluded_dir_in_name_isnt_ignored() {\n\n\t\t$this->markTestSkipped( 'This fails because our default excludes are too generic' );\n\n\t\tmkdir( $this->test_data . '/updraft-plus' );\n\t\tfile_put_contents( $this->test_data . '/updraft-plus/file.txt', 'The cake is a lie.' );\n\t\tmkdir( $this->test_data . '/plus-updraft' );\n\t\tfile_put_contents( $this->test_data . '/plus-updraft/file.txt', 'The cake is a lie.' );\n\n\t\t$files = $this->backup->get_files();\n\t\t$this->assertEquals( count( $files ), 7 );\n\n\t}\n\n}\n"
  },
  {
    "path": "tests/test-is-same-size-format.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Is_Same_Size_Format_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function test_both_same_size() {\n\t\t$this->assertTrue( is_same_size_format( 22000000, 22000000 ) );\n\t}\n\n\tpublic function test_not_both_same_size() {\n\t\t$this->assertFalse( is_same_size_format( 22000, 22000000 ) );\n\t}\n\n\tpublic function test_both_strings() {\n\t\t$this->assertFalse( is_same_size_format( '22', '22' ) );\n\t}\n}\n"
  },
  {
    "path": "tests/test-notices.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Notice_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\t\t$this->notices = Notices::get_instance();\n\t}\n\n\tpublic function tearDown() {\n\t\t$this->notices->clear_all_notices();\n\t\t$this->reset_notices();\n\t}\n\n\tpublic function test_no_notices_no_context() {\n\t\t$this->assertEquals( array(), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_no_notices_context() {\n\t\t$this->assertEquals( array(), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_set_single_notice_with_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_get_notices_with_wrong_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->assertEquals( array(), $this->notices->get_notices( 'bar' ) );\n\t}\n\n\tpublic function test_empty_context() {\n\t\t$this->notices->set_notices( '', array( 'bar' ), false );\n\t\t$this->assertEquals( array(), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_empty_message() {\n\t\t$this->notices->set_notices( 'foo', array( '' ), false );\n\t\t$this->assertEquals( array(), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_set_multiple_notice_with_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->notices->set_notices( 'fizz', array( 'buzz' ), false );\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\t\t$this->assertEquals( array( 'buzz' ), $this->notices->get_notices( 'fizz' ) );\n\t\t$this->assertEquals( array( 'foo' => array( 'bar' ), 'fizz' => array( 'buzz' ) ), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_set_multiple_notices_in_same_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->notices->set_notices( 'foo', array( 'baz' ), false );\n\t\t$this->assertEquals( array( 'bar', 'baz' ), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_set_multiple_persistant_notices_in_same_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), true );\n\t\t$this->notices->set_notices( 'foo', array( 'baz' ), true );\n\t\t$this->reset_notices();\n\t\t$this->assertEquals( array( 'bar', 'baz' ), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_set_duplicate_notice() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_set_duplicate_notices_different_contexts() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->notices->set_notices( 'baz', array( 'bar' ), false );\n\t\t$this->assertEquals( array( 'foo' => array( 'bar' ), 'baz' => array( 'bar' ) ), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_clear_notices() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), false );\n\t\t$this->notices->clear_all_notices();\n\t\t$this->assertEquals( array(), $this->notices->get_notices( 'bar' ) );\n\t\t$this->assertEquals( array(), $this->notices->get_notices() );\n\t}\n\n\tpublic function test_persistant_notice() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), true );\n\t\t$this->reset_notices();\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\n\t}\n\n\tpublic function test_set_persistant_single_notice_with_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), true );\n\t\t$this->reset_notices();\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\t}\n\n\tpublic function test_get_persistant_notices_with_wrong_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), true );\n\t\t$this->reset_notices();\n\t\t$this->assertEquals( array(), $this->notices->get_notices( 'bar' ) );\n\t}\n\n\tpublic function test_set_persistant_multiple_notice_with_context() {\n\t\t$this->notices->set_notices( 'foo', array( 'bar' ), true );\n\t\t$this->notices->set_notices( 'fizz', array( 'buzz' ), true );\n\t\t$this->reset_notices();\n\t\t$this->assertEquals( array( 'bar' ), $this->notices->get_notices( 'foo' ) );\n\t\t$this->assertEquals( array( 'buzz' ), $this->notices->get_notices( 'fizz' ) );\n\t\t$this->assertEquals( array( 'foo' => array( 'bar' ), 'fizz' => array( 'buzz' ) ), $this->notices->get_notices() );\n\t}\n\n\tprivate function reset_notices() {\n\t\t$reflection = new \\ReflectionClass( Notices::get_instance() );\n\t\t$instance = $reflection->getProperty( 'instance' );\n\t\t$instance->setAccessible( true );\n\t\t$instance->setValue( null, null );\n\t\t$instance->setAccessible( false );\n\t\t$this->notices = Notices::get_instance();\n\t}\n}\n"
  },
  {
    "path": "tests/test-site-size.php",
    "content": "<?php\n\nnamespace HM\\BackUpWordPress;\n\nclass Site_Size_Tests extends \\HM_Backup_UnitTestCase {\n\n\tpublic function setUp() {\n\t\t$this->size = new Site_Size;\n\t\t$this->setup_test_data();\n\t\tPath::get_instance()->set_path( $this->test_data . '/tmp' );\n\t\tPath::get_instance()->set_root( $this->test_data );\n\t\t$this->root = new \\SplFileInfo( Path::get_root() );\n\t}\n\n\tpublic function tearDown() {\n\t\tif ( file_exists( Path::get_path() . '/.files' ) ) {\n\t\t\tunlink( Path::get_path() . '/.files' );\n\t\t}\n\t\t$this->cleanup_test_data();\n\t\tdelete_transient( 'hmbkp_directory_filesizes_running' );\n\t}\n\n\tpublic function test_rebuild_directory_filesizes() {\n\n\t\t$this->assertNull( $this->size->filesize( $this->root ) );\n\t\t$this->size->recursive_filesize_scanner();\n\t\t$this->assertNotEmpty( $this->size->filesize( $this->root ), '', 40 );\n\n\t}\n\n\tpublic function test_filesize_excludes() {\n\t\t$this->size = new Site_Size( 'file', new Excludes( 'exclude' ) );\n\t\t$this->size->recursive_filesize_scanner();\n\t\t$this->assertNotEmpty( $this->size->get_site_size() );\n\t}\n\n\n\tpublic function test_lock() {\n\n\t\t$this->assertFalse( $this->size->is_site_size_being_calculated() );\n\t\t$this->size->rebuild_directory_filesizes();\n\t\t$this->assertTrue( $this->size->is_site_size_being_calculated() );\n\t\t$this->assertFalse( $this->size->rebuild_directory_filesizes() );\n\n\t}\n\n\tpublic function test_is_site_cached() {\n\t\t$this->assertFalse( $this->size->is_site_size_cached() );\n\t\t$this->size->rebuild_directory_filesizes();\n\t\t$this->assertTrue( $this->size->is_site_size_being_calculated() );\n\t}\n\n\tpublic function test_old_cache_is_cleared() {\n\n\t\t$this->assertFalse( $this->size->is_site_size_cached() );\n\t\t$this->size = new Site_Size( 'file' );\n\t\t$this->size->recursive_filesize_scanner();\n\t\t$this->assertTrue( $this->size->is_site_size_cached() );\n\n\t\t// Set the filemtime to over a week ago\n\t\ttouch( PATH::get_path() . '/.files', time() - WEEK_IN_SECONDS - 10 );\n\t\tclearstatcache();\n\n\t\t$this->assertFalse( $this->size->is_site_size_cached() );\n\n\t}\n\n\tpublic function test_site_size_file() {\n\t\t$this->size = new Site_Size( 'file' );\n\t\t$this->size->recursive_filesize_scanner();\n\t\t$this->assertNotEmpty( $this->size->get_site_size() );\n\t}\n\n\tpublic function test_site_size_formatted() {\n\t\t$this->size = new Site_Size( 'file' );\n\t\t$this->size->recursive_filesize_scanner();\n\t\t$this->assertNotEmpty( $this->size->get_formatted_site_size() );\n\t}\n\n\tpublic function test_site_size_database() {\n\t\t$size_database = new Site_Size( 'database' );\n\t\t$this->assertNotEmpty( $size_database->get_site_size() );\n\t}\n\n\tpublic function test_site_size_without_filescanner_complete_equals_database() {\n\n\t\t$size_complete = $this->size;\n\t\t$size_database = new Site_Size( 'database' );\n\n\t\t$this->assertEquals( $size_complete->get_site_size(), $size_database->get_site_size() );\n\n\t}\n\n\tpublic function test_site_size_with_filescanner_complete_equals_database_plus_files() {\n\n\t\t$this->size->recursive_filesize_scanner();\n\n\t\t$size_complete = $this->size;\n\t\t$size_database = new Site_Size( 'database' );\n\t\t$size_file = new Site_Size( 'file' );\n\n\t\t$this->assertNotEmpty( $size_database->get_site_size() );\n\t\t$this->assertNotEmpty( $size_file->get_site_size() );\n\n\t\t$this->assertEquals( $size_complete->get_site_size(), $size_database->get_site_size() + $size_file->get_site_size() );\n\n\t}\n\n\t/**\n\t * File is excluded directly (either in the root or any non-excluded sub-directory).\n\t *\n\t * Main test: Site_Size->filesize( $file )\n\t * Expected:  file size should be 0.\n\t */\n\tpublic function test_file_size_excluded_directly() {\n\n\t\t$file_path =  $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Exclude file directly - file size should be 0.\n\t\t$excluded_file_site_size = new Site_Size( 'file', new Excludes( $file_path ) );\n\t\t$this->assertSame( $excluded_file_site_size->filesize( $file ), 0 );\n\t}\n\n\t/**\n\t * File is excluded as a result of being in an excluded directory.\n\t *\n\t * Main test: Site_Size->filesize( $file )\n\t * Expected:  file size should be 0.\n\t */\n\tpublic function test_file_size_excluded_via_parent_directory() {\n\n\t\t$file_path = $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Exclude the parent directory, so the file in it is excluded by \"inheritance\" - file size should be 0.\n\t\t$excluded_dir_name      = basename( $file->getPath() ); // test-data directory, the parent dir of the file.\n\t\t$excluded_dir           = new Excludes( $excluded_dir_name );\n\t\t$excluded_dir_site_size = new Site_Size( 'file', $excluded_dir );\n\n\t\t// Check the directory is excluded. File size in that directory should return 0.\n\t\t$this->assertContains( $excluded_dir_name, $excluded_dir->get_user_excludes() );\n\t\t$this->assertSame( $excluded_dir_site_size->filesize( $file ), 0 );\n\t}\n\n\t/**\n\t * File is NOT excluded directly (either in the root or any non-excluded sub-directory).\n\t *\n\t * Main test: Site_Size->filesize( $file )\n\t * Expected:  file size should be what it is.\n\t */\n\tpublic function test_file_size_not_excluded_directly() {\n\n\t\t$file_path =  $this->test_data . '/test-data.txt';\n\t\t$file      = new \\SplFileInfo( $file_path );\n\n\t\t// Check the file is created and its size is NOT 0.\n\t\t$this->assertContains( $this->root->getPath(), $file->getPath() );\n\t\t$this->assertNotSame( $file->getSize(), 0 );\n\n\t\t// Check file size via BWP function. It should NOT be 0, should be the same size as via getSize().\n\t\t$site_size = new Site_Size( 'file' );\n\t\t$this->assertNotSame( $site_size->filesize( $file ), 0 );\n\t\t$this->assertSame( $site_size->filesize( $file ), $file->getSize() );\n\t}\n\n}\n"
  },
  {
    "path": "uninstall.php",
    "content": "<?php\n\nif ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {\n\texit;\n}\n\nif ( ! current_user_can( 'activate_plugins' ) ) {\n\texit;\n}\n\nglobal $wpdb;\n\nrequire_once dirname( __FILE__ ) . '/classes/class-path.php';\n\n$path = HM\\BackUpWordPress\\PATH::get_instance()->get_existing_path();\n\n// Delete the file manifest if it exists\nif ( file_exists( $path . '/.files' ) ) {\n\tunlink( $path . '/.files' );\n}\n\n// Get all schedule options with a SELECT query and delete them.\n$schedules = $wpdb->get_col( $wpdb->prepare( \"SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s\", 'hmbkp_schedule_%' ) );\n\narray_map( 'delete_option', $schedules );\n\n// Remove all the options\narray_map( 'delete_option', array( 'hmbkp_enable_support', 'hmbkp_plugin_version', 'hmbkp_path', 'hmbkp_default_path', 'hmbkp_upsell', 'hmbkp_notices' ) );\n\n// Delete all transients\narray_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' ) );\n"
  },
  {
    "path": "whitelist-html/README.md",
    "content": "# Whitelist HTML\n\nIntroduces an `esc_*()`-like function for when you need to allow *some* HTML.\n\n## Rationale\n### Background\n\nBest practices when working with any sort of data is to escape your output, and\ndo it as late as possible. Values can't usually know about where they're going\nto be used, so you need to escape based on whatever context you're\noutputting into. These are things like `esc_attr()` for HTML attribute values,\n`esc_html()` for text in HTML, and so on.\n\nEven if values could know about their output context, it's still possible for\nusers to craft malicious output if you're not escaping properly. For this\nreason, you need to do sanitization on input (to ensure your value is correct),\nas well as escaping on output (to ensure the value is output into the context\ncorrectly).\n\nRight now across every WordPress site, there's a glaring hole in escaping, and\nhence in security.\n\nWhen translating strings in WordPress, the most common functions to use are\n`__()` (translate and return) or `_e()` (translate and output). Where possible,\nthese need to be escaped too, to ensure that translations don't accidentally\nbreak your output. For this reason, `esc_html_e()`, `esc_attr_e()`, etc are\noffered as convenience functions.\n\nHowever, this falls down when you need to have HTML in the translation.\nTranslation best practices say to include as much information as possible for\ntranslators when you translate a string. This means including HTML tags in the\nstring so translators can understand how the sentence is formed.\n\nIt's possible to do \"clever\" hacks to get around this with placeholders,\nfor example:\n\n```php\n$text = sprintf(\n\tesc_html__( 'This is some text %1$swith a link%2$s'),\n\t'<a href=\"http://example.com/\">',\n\t'</a>'\n);\n```\n\nNote though that this is much harder for translators to understand, since they\ncan't intuitively tell what's going on without checking the code. Even with\ntranslator comments, it's still harder to understand. There's also no guarantee\nthat this is secure. You could swap the placeholders, or leave out pieces. Best\npractice states that we should instead have the following:\n\n```php\n$text = sprintf(\n\tesc_html__( 'This is some text <a href=\"%1$s\">with a link</a>'),\n\t'http://example.com/'\n);\n```\n\nRight now, the policy is essentially to treat translated strings with HTML as\ntrusted. Not only does this push the burden off to translation validators in\nGlotPress, but it means you're no longer in control of your output. This is an\nattack vector waiting to be exploited.\n\n\n### How do we solve this?\n\nWordPress contains functions specifically designed to help with this problem.\nAfter all, people can submit comments or posts with HTML in them, but WP can\nhandle this fine. WordPress handles this through a library called kses, which\nsanitizes HTML down to a small, whitelisted subset of HTML. Posts can have more\nHTML tags than comments can, since they're usually semi-trusted users.\n\nkses is great, but is not typically used outside of large HTML blocks like post\nor comment content. The reason for this is often stated as performance. It's\nwell-known that kses is pretty slow, since it has to essentially disassemble the\nHTML, then reconstruct it with the allowed tags.\n\nHowever, Zack Tollman wrote a [fantastic post][tollmanz-kses] that calls into\nquestion this accepted knowledge of kses performance. Zack's findings show that\nwhile kses is worse with performance on longer pieces of content (like post\ncontent), it's actually closer to being on-par with other escaping for short\nstrings. This is even more evident when reducing the whitelist of elements down\nfrom the default to just the elements you need.\n\n[tollmanz-kses]: https://www.tollmanz.com/wp-kses-performance/\n\n### `whitelist_html`\n\nThis library provides a nice, easy, performant way to perform sanitization on\ntranslated strings. Rather than requiring you to work with the internals of\nkses, it's much closer to functions like `esc_html`.\n\nSecurity is only useful if it's also usable. For the most part, `whitelist_html`\ncan be used in exactly the same way developers are used to using other escaping\nfunctions.\n\nA quick example to demonstrate how easy it is:\n```html\n<!-- Previously -->\n<p><?php _e( 'This is a terrific use of <code>WP_Error</code>.' ) ?></p>\n\n<!-- Secure version -->\n<p><?php print_whitelist_html( __( 'This is a terrific use of <code>WP_Error</code>.' ), 'code' ) ?></p>\n```\n\nEven if a malicious translator changed this to include a link to a spam site (or\nworse), this would be caught and stripped by `whitelist_html`.\n\nTaking our original example from above, we can modify it to only allow `a` tags:\n\n```php\n$text = whitelist_html(\n\tsprintf(\n\t\t__( 'This is some text <a href=\"%1$s\">with a link</a>'),\n\t\t'http://example.com/'\n\t),\n\t'a'\n);\n```\n\nIt's that easy. You can do this with multiple elements as well, using a\ncomma-separated string or list of elements:\n\n```php\n$text = whitelist_html(\n\tsprintf(\n\t\t__( 'This is <code>some</code> text <a href=\"%1$s\">with a link</a>'),\n\t\t'http://example.com/'\n\t),\n\t'a, code' // or array( 'a', 'code' )\n);\n```\n\nIf you need custom attributes, you can use kses-style attribute specifiers.\nThese can be mixed too:\n\n```php\n$text = whitelist_html(\n\tsprintf(\n\t\t__( 'This is <span class=\"x\">some</span> text <a href=\"%1$s\">with a link</a>'),\n\t\t'http://example.com/'\n\t),\n\tarray(\n\t\t'a',\n\t\t'span' => array(\n\t\t\t'class' => true,\n\t\t),\n\t)\n);\n```\n\n\n### Performance Test\n\nIn a quick test, the string\n`'hello with a <a href=\"wak://example.com\">malicious extra link!<///q><o>b'` was\nrun through both `whitelist_html` (with only `a`) and `esc_html` with 10,000\niterations. While the two functions don't perform the same task, they're both\nescaping functions, so it's useful to compare performance to understand whether\nthis approach can be used in production code.\n\nIn an unscientific trial, this gave figures of 0.96s for `whitelist_html` and\n1.07s for `esc_html` for 10,000 trials each. This indicates that\n`whitelist_html` is at least on the order of other escaping functions.\n\n\n## Using this Library\n\nTwo steps to using this library:\n\n1. Add this library in as a git submodule.\n2. Load `whitelist-html.php` before you need to use it. We recommend in\n   `mu-plugins`, but you can also load it in via `wp-config.php` if you want it\n   earlier.\n\nDone. Start using the function.\n"
  },
  {
    "path": "whitelist-html/whitelist-html.php",
    "content": "<?php\n\n/**\n * Escapes text for HTML output, allowing certain tags\n *\n * Takes an arbitrary string and ensures it's safe for output into HTML. Unlike\n * `esc_html`, this allows a certain subset of tags, allowing it to be used for\n * strings which need to have some HTML in them (such as translated text).\n *\n * Allowed tags can be passed in one of two formats. The verbose form is the\n * traditional kses form of\n * `[ 'element' => array( 'attr' => true, 'otherattr' => true ) ]` which\n * specifies tags and their attributes.\n *\n * The concise form, useful for inline usage on output, is in the form of\n * `[ 'element', 'otherelement' ]` - This concise form takes the attribute list\n * from WP core's attribute whitelist for a good-enough list for most usages.\n * This can also be passed as a comma separated string.\n *\n * (You can also mix these forms, so something like\n * `[ 'a', 'code', 'x-panel' => array( 'src' => true ) ] )` is perfectly valid.)\n *\n * For example:\n *\n *     whitelist_html( __( 'Hello <a href=\"http://example.com\">World!</a>' ), 'a' );\n *\n * This example would strip any tag except `a`, but would allow the default\n * attributes on it (`href` and `title`).\n *\n * The default attributes and tags are based on {@see wp_kses_allowed_html} with\n * the blank (default) \"context\". These are the tags in {@see $allowedtags}. To\n * get all allowed post tags, pass `'post'` as the `$context` parameter, or pass\n * the tags you need in the `$allowedtags` array. If a specified tag is not in\n * the list, no attributes will be allowed.\n *\n * @link https://www.tollmanz.com/wp-kses-performance/\n *\n * @param string $text Content to escape\n * @param array $allowedtags Allowed tags, see description.\n * @param string $context kses context to use, {@see wp_kses_allowed_html}.\n * @return string Escaped string for output into HTML context.\n */\nfunction whitelist_html( $text, $allowedtags = array(), $context = '' ) {\n\t$actually_allowed = array();\n\t$default_list = wp_kses_allowed_html( $context );\n\n\t// Split comma-separated string\n\tif ( is_string( $allowedtags ) ) {\n\t\t$allowedtags = array_map( 'trim', explode( ',', $allowedtags ) );\n\t}\n\n\tforeach ( $allowedtags as $key => $tag ) {\n\t\tif ( is_array( $tag ) && is_string( $key ) ) {\n\t\t\t// kses-formatted of `'element' => [ 'attr' => true ]\n\t\t\t// `$tag` is actually the attrs, and `$key` is the tag name\n\t\t\t$actually_allowed[ $key ] = $tag;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( ! is_string( $tag ) ) {\n\t\t\t// Not concise form, what even is this?\n\t\t\t_doing_it_wrong( 'whitelist_html', '$allowedtags must consist of strings or kses-style arrays' );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Grab default attributes for the tag\n\t\t$attrs = array();\n\t\tif ( isset( $default_list[ $tag ] ) ) {\n\t\t\t$attrs = $default_list[ $tag ];\n\t\t}\n\n\t\t// Add to allowed list\n\t\t$actually_allowed[ $tag ] = $attrs;\n\t}\n\n\t// Do the sanitization dance\n\t$sanitized = wp_kses( $text, $actually_allowed );\n\n\t/**\n\t * Filter a string to be output into HTML, allowing some tags\n\t *\n\t * @param string $sanitized The text after it has been escaped.\n\t * @param string $text The text before it has been escaped.\n\t * @param string $allowedtags Tags requested to whitelist.\n\t * @param string\n\t */\n\treturn apply_filters( 'whitelist_html', $sanitized, $text, $allowedtags, $context );\n}\n\n/**\n * Escapes text for HTML output, allowing certain tags, then outputs.\n *\n * @see whitelist_html\n *\n * @param string $text Content to escape\n * @param array $allowedtags Allowed tags, {@see whitelist_html}.\n * @param string $context kses context to use, {@see wp_kses_allowed_html}.\n * @return string Escaped string for output into HTML context.\n */\nfunction print_whitelist_html( $text, $allowedtags = array(), $context = '' ) {\n\techo whitelist_html( $text, $allowedtags, $context );\n}\n"
  }
]