├── LICENSE ├── README.md ├── all-in-one-wp-migration.php ├── changelog.txt ├── constants.php ├── deprecated.php ├── exceptions.php ├── functions.php ├── lib ├── controller │ ├── class-ai1wm-backups-controller.php │ ├── class-ai1wm-export-controller.php │ ├── class-ai1wm-feedback-controller.php │ ├── class-ai1wm-import-controller.php │ ├── class-ai1wm-main-controller.php │ ├── class-ai1wm-report-controller.php │ ├── class-ai1wm-resolve-controller.php │ ├── class-ai1wm-status-controller.php │ └── class-ai1wm-updater-controller.php ├── model │ ├── class-ai1wm-backups.php │ ├── class-ai1wm-compatibility.php │ ├── class-ai1wm-deprecated.php │ ├── class-ai1wm-extensions.php │ ├── class-ai1wm-feedback.php │ ├── class-ai1wm-handler.php │ ├── class-ai1wm-http.php │ ├── class-ai1wm-log.php │ ├── class-ai1wm-message.php │ ├── class-ai1wm-notification.php │ ├── class-ai1wm-report.php │ ├── class-ai1wm-status.php │ ├── class-ai1wm-template.php │ ├── class-ai1wm-updater.php │ ├── export │ │ ├── class-ai1wm-export-archive.php │ │ ├── class-ai1wm-export-clean.php │ │ ├── class-ai1wm-export-compatibility.php │ │ ├── class-ai1wm-export-config-file.php │ │ ├── class-ai1wm-export-config.php │ │ ├── class-ai1wm-export-content.php │ │ ├── class-ai1wm-export-database-file.php │ │ ├── class-ai1wm-export-database.php │ │ ├── class-ai1wm-export-download.php │ │ ├── class-ai1wm-export-enumerate.php │ │ ├── class-ai1wm-export-init.php │ │ └── class-ai1wm-export-resolve.php │ ├── http │ │ ├── class-ai1wm-http-abstract.php │ │ ├── class-ai1wm-http-curl.php │ │ ├── class-ai1wm-http-factory.php │ │ └── class-ai1wm-http-stream.php │ └── import │ │ ├── class-ai1wm-import-blogs.php │ │ ├── class-ai1wm-import-clean.php │ │ ├── class-ai1wm-import-compatibility.php │ │ ├── class-ai1wm-import-confirm.php │ │ ├── class-ai1wm-import-content.php │ │ ├── class-ai1wm-import-database.php │ │ ├── class-ai1wm-import-done.php │ │ ├── class-ai1wm-import-enumerate.php │ │ ├── class-ai1wm-import-mu-plugins.php │ │ ├── class-ai1wm-import-resolve.php │ │ ├── class-ai1wm-import-upload.php │ │ └── class-ai1wm-import-validate.php ├── vendor │ ├── bandar │ │ └── bandar │ │ │ ├── LICENSE │ │ │ └── lib │ │ │ ├── Bandar.php │ │ │ └── Exceptions │ │ │ └── TemplateDoesNotExistException.php │ ├── math │ │ └── BigInteger.php │ └── servmask │ │ ├── archiver │ │ ├── class-ai1wm-archiver.php │ │ ├── class-ai1wm-compressor.php │ │ └── class-ai1wm-extractor.php │ │ ├── command │ │ └── class-ai1wm-wp-cli-command.php │ │ ├── cron │ │ └── class-ai1wm-cron.php │ │ ├── database │ │ ├── class-ai1wm-database-mysql.php │ │ ├── class-ai1wm-database-mysqli.php │ │ ├── class-ai1wm-database-utility.php │ │ └── class-ai1wm-database.php │ │ ├── filesystem │ │ ├── class-ai1wm-directory.php │ │ ├── class-ai1wm-file-htaccess.php │ │ ├── class-ai1wm-file-index.php │ │ ├── class-ai1wm-file-webconfig.php │ │ └── class-ai1wm-file.php │ │ ├── filter │ │ ├── class-ai1wm-extension-filter.php │ │ ├── class-ai1wm-recursive-exclude-filter.php │ │ ├── class-ai1wm-recursive-extension-filter.php │ │ └── class-ai1wm-recursive-newline-filter.php │ │ └── iterator │ │ ├── class-ai1wm-recursive-directory-iterator.php │ │ └── class-ai1wm-recursive-iterator-iterator.php └── view │ ├── assets │ ├── css │ │ ├── backups.min.css │ │ ├── backups.min.rtl.css │ │ ├── common.min.css │ │ ├── export.min.css │ │ ├── export.min.rtl.css │ │ ├── import.min.css │ │ ├── import.min.rtl.css │ │ ├── servmask.min.css │ │ ├── servmask.min.rtl.css │ │ ├── updater.min.css │ │ └── updater.min.rtl.css │ ├── font │ │ ├── servmask.eot │ │ ├── servmask.svg │ │ ├── servmask.ttf │ │ └── servmask.woff │ ├── img │ │ ├── ajax-loader.gif │ │ ├── logo-128x128.png │ │ ├── logo-20x20.png │ │ ├── logo-32x32.png │ │ └── logo.svg │ └── javascript │ │ ├── backups.min.js │ │ ├── export.min.js │ │ ├── feedback.min.js │ │ ├── import.min.js │ │ ├── report.min.js │ │ ├── updater.min.js │ │ └── util.min.js │ ├── backups │ └── index.php │ ├── common │ ├── http-authentication.php │ ├── leave-feedback.php │ ├── maintenance-mode.php │ ├── report-problem.php │ └── share-buttons.php │ ├── export │ ├── advanced-settings.php │ ├── button-azure-storage.php │ ├── button-b2.php │ ├── button-box.php │ ├── button-digitalocean.php │ ├── button-dropbox.php │ ├── button-file.php │ ├── button-ftp.php │ ├── button-gcloud-storage.php │ ├── button-gdrive.php │ ├── button-glacier.php │ ├── button-mega.php │ ├── button-onedrive.php │ ├── button-pcloud.php │ ├── button-s3.php │ ├── export-buttons.php │ ├── find-replace.php │ ├── help-section.php │ └── index.php │ ├── import │ ├── button-azure-storage.php │ ├── button-b2.php │ ├── button-box.php │ ├── button-digitalocean.php │ ├── button-dropbox.php │ ├── button-file.php │ ├── button-ftp.php │ ├── button-gcloud-storage.php │ ├── button-gdrive.php │ ├── button-glacier.php │ ├── button-mega.php │ ├── button-onedrive.php │ ├── button-pcloud.php │ ├── button-s3.php │ ├── button-url.php │ ├── import-buttons.php │ └── index.php │ ├── main │ ├── admin-head.php │ ├── backups-htaccess-notice.php │ ├── backups-index-notice.php │ ├── backups-notice.php │ ├── backups-path-notice.php │ ├── backups-webconfig-notice.php │ ├── get-support.php │ ├── index-notice.php │ ├── multisite-notice.php │ ├── storage-index-notice.php │ ├── storage-notice.php │ ├── storage-path-notice.php │ └── wordpress-htaccess-notice.php │ └── updater │ ├── check.php │ └── modal.php ├── loader.php └── uninstall.php /README.md: -------------------------------------------------------------------------------- 1 | # All-in-One WP Migration (v6.77) (Unlimited Import Size) 2 | 3 | Welcome to the modified version of All-in-One WP Migration! In this version, we've removed the size restriction on importing or restoring backups, allowing you to seamlessly transfer websites of any size. 4 | 5 | ## Features: 6 | 7 | - **Unlimited Import Size:** Unlike the original version, this modified edition of All-in-One WP Migration enables you to import or restore backups without any size limitations, providing you with the flexibility to migrate websites of any scale. 8 | - **Seamless Migration:** Export your WordPress site, including the database, media files, plugins, and themes, and import it into any location within WordPress with ease. 9 | - **Drag-and-Drop Functionality:** Utilize WordPress's intuitive drag-and-drop interface to effortlessly upload and import your site backup, simplifying the migration process. 10 | - **Enhanced Flexibility:** With the removal of size restrictions, you have the freedom to transfer large-scale websites, ensuring that your migration process is smooth and hassle-free. 11 | 12 | ## Getting Started: 13 | 14 | To begin using this modified version of All-in-One WP Migration, simply download the plugin files from [this repository](https://github.com/devHardik71/All-in-One-WP-Migration-Unlimited). Once installed, you'll have access to the unrestricted import functionality, allowing you to import backups of any size without encountering limitations. 15 | 16 | If you want to download the latest version of the original All-in-One WP Migration plugin, please visit the [official website](https://wordpress.org/plugins/all-in-one-wp-migration/). 17 | 18 | ## Compatibility: 19 | 20 | This modified version of All-in-One WP Migration is designed to maintain compatibility with the original plugin's features while removing the size restriction on imports. It's suitable for websites of all sizes, from small blogs to enterprise-level platforms. 21 | 22 | ## Important Note: 23 | 24 | Please note that this version of All-in-One WP Migration has been modified to remove the import size limitation. While efforts have been made to ensure compatibility and reliability, we recommend testing the plugin thoroughly in your environment before using it in a production setting. 25 | 26 | Thank you for choosing this modified edition of All-in-One WP Migration. We hope you find the unlimited import size feature to be a valuable addition to your WordPress migration toolkit. If you have any questions or feedback, please don't hesitate to reach out to our support team. 27 | 28 | Happy migrating! 29 | -------------------------------------------------------------------------------- /all-in-one-wp-migration.php: -------------------------------------------------------------------------------- 1 | . 27 | * 28 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 29 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 30 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 31 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 32 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 33 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 34 | */ 35 | 36 | // Check SSL Mode 37 | if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && ( $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) ) { 38 | $_SERVER['HTTPS'] = 'on'; 39 | } 40 | 41 | // Plugin Basename 42 | define( 'AI1WM_PLUGIN_BASENAME', basename( dirname( __FILE__ ) ) . '/' . basename( __FILE__ ) ); 43 | 44 | // Plugin Path 45 | define( 'AI1WM_PATH', dirname( __FILE__ ) ); 46 | 47 | // Plugin Url 48 | define( 'AI1WM_URL', plugins_url( '', AI1WM_PLUGIN_BASENAME ) ); 49 | 50 | // Plugin Storage Url 51 | define( 'AI1WM_STORAGE_URL', plugins_url( 'storage', AI1WM_PLUGIN_BASENAME ) ); 52 | 53 | // Plugin Backups Url 54 | define( 'AI1WM_BACKUPS_URL', content_url( 'ai1wm-backups', AI1WM_PLUGIN_BASENAME ) ); 55 | 56 | // Themes Absolute Path 57 | define( 'AI1WM_THEMES_PATH', get_theme_root() ); 58 | 59 | // Include constants 60 | require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'constants.php'; 61 | 62 | // Include deprecated 63 | require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'deprecated.php'; 64 | 65 | // Include functions 66 | require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'functions.php'; 67 | 68 | // Include exceptions 69 | require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'exceptions.php'; 70 | 71 | // Include loader 72 | require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'loader.php'; 73 | 74 | // ========================================================================= 75 | // = All app initialization is done in Ai1wm_Main_Controller __constructor = 76 | // ========================================================================= 77 | $main_controller = new Ai1wm_Main_Controller(); 78 | -------------------------------------------------------------------------------- /deprecated.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | function ai1wm_progress_path( $params ) {} 27 | -------------------------------------------------------------------------------- /exceptions.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Archive_Exception extends Exception {} 27 | class Ai1wm_Backups_Exception extends Exception {} 28 | class Ai1wm_Export_Exception extends Exception {} 29 | class Ai1wm_Http_Exception extends Exception {} 30 | class Ai1wm_Import_Exception extends Exception {} 31 | class Ai1wm_Import_Retry_Exception extends Exception {} 32 | class Ai1wm_Not_Accessible_Exception extends Exception {} 33 | class Ai1wm_Not_Seekable_Exception extends Exception {} 34 | class Ai1wm_Not_Tellable_Exception extends Exception {} 35 | class Ai1wm_Not_Readable_Exception extends Exception {} 36 | class Ai1wm_Not_Writable_Exception extends Exception {} 37 | class Ai1wm_Not_Truncatable_Exception extends Exception {} 38 | class Ai1wm_Not_Closable_Exception extends Exception {} 39 | class Ai1wm_Not_Found_Exception extends Exception {} 40 | class Ai1wm_Not_Directory_Exception extends Exception {} 41 | class Ai1wm_Not_Valid_Secret_Key_Exception extends Exception {} 42 | class Ai1wm_Quota_Exceeded_Exception extends Exception {} 43 | class Ai1wm_Storage_Exception extends Exception {} 44 | class Ai1wm_Compatibility_Exception extends Exception {} 45 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-backups-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Backups_Controller { 27 | 28 | public static function index() { 29 | $model = new Ai1wm_Backups; 30 | 31 | Ai1wm_Template::render( 32 | 'backups/index', 33 | array( 34 | 'backups' => $model->get_files(), 35 | 'username' => get_option( AI1WM_AUTH_USER ), 36 | 'password' => get_option( AI1WM_AUTH_PASSWORD ), 37 | ) 38 | ); 39 | } 40 | 41 | public static function delete( $params = array() ) { 42 | $errors = array(); 43 | 44 | // Set params 45 | if ( empty( $params ) ) { 46 | $params = stripslashes_deep( $_POST ); 47 | } 48 | 49 | // Set secret key 50 | $secret_key = null; 51 | if ( isset( $params['secret_key'] ) ) { 52 | $secret_key = trim( $params['secret_key'] ); 53 | } 54 | 55 | // Set archive 56 | $archive = null; 57 | if ( isset( $params['archive'] ) ) { 58 | $archive = trim( $params['archive'] ); 59 | } 60 | 61 | try { 62 | // Ensure that unauthorized people cannot access delete action 63 | ai1wm_verify_secret_key( $secret_key ); 64 | } catch ( Ai1wm_Not_Valid_Secret_Key_Exception $e ) { 65 | exit; 66 | } 67 | 68 | $model = new Ai1wm_Backups; 69 | 70 | try { 71 | // Delete file 72 | $model->delete_file( $archive ); 73 | } catch ( Exception $e ) { 74 | $errors[] = $e->getMessage(); 75 | } 76 | 77 | echo json_encode( array( 'errors' => $errors ) ); 78 | exit; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-feedback-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Feedback_Controller { 27 | 28 | public static function feedback( $params = array() ) { 29 | 30 | // Set params 31 | if ( empty( $params ) ) { 32 | $params = stripslashes_deep( $_POST ); 33 | } 34 | 35 | // Set secret key 36 | $secret_key = null; 37 | if ( isset( $params['secret_key'] ) ) { 38 | $secret_key = trim( $params['secret_key'] ); 39 | } 40 | 41 | // Set type 42 | $type = null; 43 | if ( isset( $params['ai1wm_type'] ) ) { 44 | $type = trim( $params['ai1wm_type'] ); 45 | } 46 | 47 | // Set e-mail 48 | $email = null; 49 | if ( isset( $params['ai1wm_email'] ) ) { 50 | $email = trim( $params['ai1wm_email'] ); 51 | } 52 | 53 | // Set message 54 | $message = null; 55 | if ( isset( $params['ai1wm_message'] ) ) { 56 | $message = trim( $params['ai1wm_message'] ); 57 | } 58 | 59 | // Set terms 60 | $terms = false; 61 | if ( isset( $params['ai1wm_terms'] ) ) { 62 | $terms = (bool) $params['ai1wm_terms']; 63 | } 64 | 65 | try { 66 | // Ensure that unauthorized people cannot access feedback action 67 | ai1wm_verify_secret_key( $secret_key ); 68 | } catch ( Ai1wm_Not_Valid_Secret_Key_Exception $e ) { 69 | exit; 70 | } 71 | 72 | $model = new Ai1wm_Feedback; 73 | 74 | // Send feedback 75 | $errors = $model->add( $type, $email, $message, $terms ); 76 | 77 | echo json_encode( array( 'errors' => $errors ) ); 78 | exit; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-report-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Report_Controller { 27 | 28 | public static function report( $params = array() ) { 29 | 30 | // Set params 31 | if ( empty( $params ) ) { 32 | $params = stripslashes_deep( $_POST ); 33 | } 34 | 35 | // Set secret key 36 | $secret_key = null; 37 | if ( isset( $params['secret_key'] ) ) { 38 | $secret_key = trim( $params['secret_key'] ); 39 | } 40 | 41 | // Set e-mail 42 | $email = null; 43 | if ( isset( $params['ai1wm_email'] ) ) { 44 | $email = trim( $params['ai1wm_email'] ); 45 | } 46 | 47 | // Set message 48 | $message = null; 49 | if ( isset( $params['ai1wm_message'] ) ) { 50 | $message = trim( $params['ai1wm_message'] ); 51 | } 52 | 53 | // Set terms 54 | $terms = false; 55 | if ( isset( $params['ai1wm_terms'] ) ) { 56 | $terms = (bool) $params['ai1wm_terms']; 57 | } 58 | 59 | try { 60 | // Ensure that unauthorized people cannot access report action 61 | ai1wm_verify_secret_key( $secret_key ); 62 | } catch ( Ai1wm_Not_Valid_Secret_Key_Exception $e ) { 63 | exit; 64 | } 65 | 66 | $model = new Ai1wm_Report; 67 | 68 | // Send report 69 | $errors = $model->add( $email, $message, $terms ); 70 | 71 | echo json_encode( array( 'errors' => $errors ) ); 72 | exit; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-resolve-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Resolve_Controller { 27 | 28 | public static function resolve( $params = array() ) { 29 | 30 | // Set params 31 | if ( empty( $params ) ) { 32 | $params = stripslashes_deep( $_GET ); 33 | } 34 | 35 | // Set secret key 36 | $secret_key = null; 37 | if ( isset( $params['secret_key'] ) ) { 38 | $secret_key = trim( $params['secret_key'] ); 39 | } 40 | 41 | try { 42 | // Ensure that unauthorized people cannot access resolve action 43 | ai1wm_verify_secret_key( $secret_key ); 44 | } catch ( Ai1wm_Not_Valid_Secret_Key_Exception $e ) { 45 | exit; 46 | } 47 | 48 | // Set IP address 49 | if ( isset( $params['url_ip'] ) && ( $ip = $params['url_ip'] ) ) { 50 | update_option( AI1WM_URL_IP, $ip ); 51 | } 52 | 53 | // Set adapter 54 | if ( isset( $params['url_adapter'] ) && ( $adapter = $params['url_adapter'] ) ) { 55 | if ( $adapter === 'curl' ) { 56 | update_option( AI1WM_URL_ADAPTER, 'curl' ); 57 | } else { 58 | update_option( AI1WM_URL_ADAPTER, 'stream' ); 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-status-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Status_Controller { 27 | 28 | public static function status( $params = array() ) { 29 | 30 | // Set params 31 | if ( empty( $params ) ) { 32 | $params = stripslashes_deep( $_GET ); 33 | } 34 | 35 | // Set secret key 36 | $secret_key = null; 37 | if ( isset( $params['secret_key'] ) ) { 38 | $secret_key = trim( $params['secret_key'] ); 39 | } 40 | 41 | try { 42 | // Ensure that unauthorized people cannot access status action 43 | ai1wm_verify_secret_key( $secret_key ); 44 | } catch ( Ai1wm_Not_Valid_Secret_Key_Exception $e ) { 45 | exit; 46 | } 47 | 48 | echo json_encode( get_option( AI1WM_STATUS, array() ) ); 49 | exit; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/controller/class-ai1wm-updater-controller.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Updater_Controller { 27 | 28 | public static function plugins_api( $result, $action = null, $args = null ) { 29 | return Ai1wm_Updater::plugins_api( $result, $action, $args ); 30 | } 31 | 32 | public static function pre_update_plugins( $transient ) { 33 | if ( empty( $transient->checked ) ) { 34 | return $transient; 35 | } 36 | 37 | // Check for updates 38 | Ai1wm_Updater::check_for_updates(); 39 | 40 | return $transient; 41 | } 42 | 43 | public static function update_plugins( $transient ) { 44 | return Ai1wm_Updater::update_plugins( $transient ); 45 | } 46 | 47 | public static function check_for_updates() { 48 | return Ai1wm_Updater::check_for_updates(); 49 | } 50 | 51 | public static function plugin_row_meta( $links, $file ) { 52 | return Ai1wm_Updater::plugin_row_meta( $links, $file ); 53 | } 54 | 55 | public static function updater( $params = array() ) { 56 | ai1wm_setup_environment(); 57 | 58 | // Set params 59 | if ( empty( $params ) ) { 60 | $params = stripslashes_deep( $_POST ); 61 | } 62 | 63 | // Set uuid 64 | $uuid = null; 65 | if ( isset( $params['ai1wm_uuid'] ) ) { 66 | $uuid = trim( $params['ai1wm_uuid'] ); 67 | } 68 | 69 | // Set extension 70 | $extension = null; 71 | if ( isset( $params['ai1wm_extension'] ) ) { 72 | $extension = trim( $params['ai1wm_extension'] ); 73 | } 74 | 75 | $extensions = Ai1wm_Extensions::get(); 76 | 77 | // Verify whether extension exists 78 | if ( isset( $extensions[ $extension ] ) ) { 79 | update_option( $extensions[ $extension ]['key'], $uuid ); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-backups.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Backups { 27 | 28 | /** 29 | * Get all backup files 30 | * 31 | * @return array 32 | */ 33 | public function get_files() { 34 | $backups = array(); 35 | 36 | // Iterate over directory 37 | $iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_BACKUPS_PATH ); 38 | 39 | // Filter by extensions 40 | $iterator = new Ai1wm_Recursive_Extension_Filter( $iterator, array( 'wpress' ) ); 41 | 42 | // Recursively iterate over directory 43 | $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD ); 44 | 45 | // Get backup files 46 | foreach ( $iterator as $item ) { 47 | try { 48 | if ( ai1wm_is_filesize_supported( $item->getPathname() ) ) { 49 | $backups[] = array( 50 | 'path' => $iterator->getSubPath(), 51 | 'filename' => $iterator->getSubPathname(), 52 | 'mtime' => $iterator->getMTime(), 53 | 'size' => $iterator->getSize(), 54 | ); 55 | } else { 56 | $backups[] = array( 57 | 'path' => $iterator->getSubPath(), 58 | 'filename' => $iterator->getSubPathname(), 59 | 'mtime' => $iterator->getMTime(), 60 | 'size' => null, 61 | ); 62 | } 63 | } catch ( Exception $e ) { 64 | $backups[] = array( 65 | 'path' => $iterator->getSubPath(), 66 | 'filename' => $iterator->getSubPathname(), 67 | 'mtime' => null, 68 | 'size' => null, 69 | ); 70 | } 71 | } 72 | 73 | // Sort backups modified date 74 | usort( $backups, array( $this, 'compare' ) ); 75 | 76 | return $backups; 77 | } 78 | 79 | /** 80 | * Delete file 81 | * 82 | * @param string $file File name 83 | * @return boolean 84 | */ 85 | public function delete_file( $file ) { 86 | if ( validate_file( $file ) === 0 ) { 87 | return @unlink( ai1wm_backup_path( array( 'archive' => $file ) ) ); 88 | } 89 | } 90 | 91 | /** 92 | * Compare backup files by modified time 93 | * 94 | * @param array $a File item A 95 | * @param array $b File item B 96 | * @return integer 97 | */ 98 | public function compare( $a, $b ) { 99 | if ( $a['mtime'] === $b['mtime'] ) { 100 | return 0; 101 | } 102 | 103 | return ( $a['mtime'] > $b['mtime'] ) ? - 1 : 1; 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-compatibility.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Compatibility { 27 | 28 | public static function get( $params ) { 29 | $extensions = Ai1wm_Extensions::get(); 30 | 31 | foreach ( $extensions as $extension_name => $extension_data ) { 32 | if ( ! isset( $params[ $extension_data['short'] ] ) ) { 33 | unset( $extensions[ $extension_name ] ); 34 | } 35 | } 36 | 37 | // Get updater URL 38 | $updater_url = add_query_arg( array( 'ai1wm_updater' => 1 ), network_admin_url( 'plugins.php' ) ); 39 | 40 | // If no extension is used, update everything that is available 41 | if ( empty( $extensions ) ) { 42 | $extensions = Ai1wm_Extensions::get(); 43 | } 44 | 45 | $messages = array(); 46 | foreach ( $extensions as $extension_name => $extension_data ) { 47 | if ( ! Ai1wm_Compatibility::check( $extension_data ) ) { 48 | $messages[] = sprintf( 49 | __( 50 | '%s is not the latest version. ' . 51 | 'You must update the plugin before you can use it.
', 52 | AI1WM_PLUGIN_NAME 53 | ), 54 | $extension_data['title'], 55 | $updater_url 56 | ); 57 | } 58 | } 59 | 60 | return $messages; 61 | } 62 | 63 | public static function check( $extension ) { 64 | if ( $extension['version'] !== 'develop' ) { 65 | if ( version_compare( $extension['version'], $extension['requires'], '<' ) ) { 66 | return false; 67 | } 68 | } 69 | 70 | return true; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-deprecated.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Abstract {} 27 | class Ai1wm_Import_Abstract {} 28 | class Ai1wm_Config {} 29 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-feedback.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Feedback { 27 | 28 | /** 29 | * Submit customer feedback to servmask.com 30 | * 31 | * @param string $type Feedback type 32 | * @param string $email User e-mail 33 | * @param string $message User message 34 | * @param integer $terms User accept terms 35 | * 36 | * @return array 37 | */ 38 | public function add( $type, $email, $message, $terms ) { 39 | $errors = array(); 40 | 41 | // Submit feedback to ServMask 42 | if ( empty( $type ) ) { 43 | $errors[] = __( 'Feedback type is not valid.', AI1WM_PLUGIN_NAME ); 44 | } elseif ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { 45 | $errors[] = __( 'Your email is not valid.', AI1WM_PLUGIN_NAME ); 46 | } elseif ( empty( $message ) ) { 47 | $errors[] = __( 'Please enter comments in the text area.', AI1WM_PLUGIN_NAME ); 48 | } elseif ( empty( $terms ) ) { 49 | $errors[] = __( 'Please accept feedback term conditions.', AI1WM_PLUGIN_NAME ); 50 | } else { 51 | $response = wp_remote_post( 52 | AI1WM_FEEDBACK_URL, 53 | array( 54 | 'timeout' => 15, 55 | 'body' => array( 56 | 'type' => $type, 57 | 'email' => $email, 58 | 'message' => $message, 59 | ), 60 | ) 61 | ); 62 | 63 | if ( is_wp_error( $response ) ) { 64 | $errors[] = sprintf( __( 'Something went wrong: %s', AI1WM_PLUGIN_NAME ), $response->get_error_message() ); 65 | } 66 | } 67 | 68 | return $errors; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-handler.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Handler { 27 | 28 | /** 29 | * Error handler 30 | * 31 | * @param integer $errno Error level 32 | * @param string $errstr Error message 33 | * @param string $errfile Error file 34 | * @param integer $errline Error line 35 | * @return void 36 | */ 37 | public static function error( $errno, $errstr, $errfile, $errline ) { 38 | Ai1wm_Log::error( array( 39 | 'Number' => $errno, 40 | 'Message' => $errstr, 41 | 'File' => $errfile, 42 | 'Line' => $errline, 43 | ) ); 44 | } 45 | 46 | /** 47 | * Shutdown handler 48 | * 49 | * @return void 50 | */ 51 | public static function shutdown() { 52 | if ( ( $error = error_get_last() ) ) { 53 | Ai1wm_Log::error( $error ); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-log.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Log { 27 | 28 | public static function export( $params ) { 29 | $data = array(); 30 | 31 | // Add date 32 | $data[] = date( 'M d Y H:i:s' ); 33 | 34 | // Add params 35 | $data[] = json_encode( $params ); 36 | 37 | // Add empty line 38 | $data[] = PHP_EOL; 39 | 40 | // Write log data 41 | if ( $handle = ai1wm_open( ai1wm_export_path( $params ), 'a' ) ) { 42 | ai1wm_write( $handle, implode( PHP_EOL, $data ) ); 43 | ai1wm_close( $handle ); 44 | } 45 | } 46 | 47 | public static function import( $params ) { 48 | $data = array(); 49 | 50 | // Add date 51 | $data[] = date( 'M d Y H:i:s' ); 52 | 53 | // Add params 54 | $data[] = json_encode( $params ); 55 | 56 | // Add empty line 57 | $data[] = PHP_EOL; 58 | 59 | // Write log data 60 | if ( $handle = ai1wm_open( ai1wm_import_path( $params ), 'a' ) ) { 61 | ai1wm_write( $handle, implode( PHP_EOL, $data ) ); 62 | ai1wm_close( $handle ); 63 | } 64 | } 65 | 66 | public static function error( $params ) { 67 | $data = array(); 68 | 69 | // Add date 70 | $data[] = date( 'M d Y H:i:s' ); 71 | 72 | // Add params 73 | $data[] = json_encode( $params ); 74 | 75 | // Add empty line 76 | $data[] = PHP_EOL; 77 | 78 | // Write log data 79 | if ( $handle = ai1wm_open( ai1wm_error_path(), 'a' ) ) { 80 | ai1wm_write( $handle, implode( PHP_EOL, $data ) ); 81 | ai1wm_close( $handle ); 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-message.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Message { 27 | 28 | public static function flash( $type, $message ) { 29 | if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) !== false ) { 30 | return update_option( AI1WM_MESSAGES, array_merge( $messages, array( $type => $message ) ) ); 31 | } 32 | 33 | return false; 34 | } 35 | 36 | public static function has( $type ) { 37 | if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) ) { 38 | if ( isset( $messages[ $type ] ) ) { 39 | return true; 40 | } 41 | } 42 | 43 | return false; 44 | } 45 | 46 | public static function get( $type ) { 47 | $message = null; 48 | if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) ) { 49 | if ( isset( $messages[ $type ] ) && ( $message = $messages[ $type ] ) ) { 50 | unset( $messages[ $type ] ); 51 | } 52 | 53 | // Set messages 54 | update_option( AI1WM_MESSAGES, $messages ); 55 | } 56 | 57 | return $message; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-notification.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Notification { 27 | 28 | public static function ok( $subject, $message ) { 29 | // Enable notifications 30 | if ( ! apply_filters( 'ai1wm_notification_ok_toggle', false ) ) { 31 | return; 32 | } 33 | 34 | // Set email 35 | if ( ! ( $email = apply_filters( 'ai1wm_notification_ok_email', get_option( 'admin_email', false ) ) ) ) { 36 | return; 37 | } 38 | 39 | // Set subject 40 | if ( ! ( $subject = apply_filters( 'ai1wm_notification_ok_subject', $subject ) ) ) { 41 | return; 42 | } 43 | 44 | // Set message 45 | if ( ! ( $message = apply_filters( 'ai1wm_notification_ok_message', $message ) ) ) { 46 | return; 47 | } 48 | 49 | // Send email 50 | if ( ai1wm_is_scheduled_backup() ) { 51 | wp_mail( $email, $subject, $message, array( 'Content-Type: text/html; charset=UTF-8' ) ); 52 | } 53 | } 54 | 55 | public static function error( $subject, $message ) { 56 | // Enable notifications 57 | if ( ! apply_filters( 'ai1wm_notification_error_toggle', false ) ) { 58 | return; 59 | } 60 | 61 | // Set email 62 | if ( ! ( $email = apply_filters( 'ai1wm_notification_error_email', get_option( 'admin_email', false ) ) ) ) { 63 | return; 64 | } 65 | 66 | // Set subject 67 | if ( ! ( $subject = apply_filters( 'ai1wm_notification_error_subject', $subject ) ) ) { 68 | return; 69 | } 70 | 71 | // Set message 72 | if ( ! ( $message = apply_filters( 'ai1wm_notification_error_message', $message ) ) ) { 73 | return; 74 | } 75 | 76 | // Send email 77 | if ( ai1wm_is_scheduled_backup() ) { 78 | wp_mail( $email, $subject, $message, array( 'Content-Type: text/html; charset=UTF-8' ) ); 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-report.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Report { 27 | 28 | /** 29 | * Submit customer report to servmask.com 30 | * 31 | * @param string $email User e-mail 32 | * @param string $message User message 33 | * @param integer $terms User accept terms 34 | * 35 | * @return array 36 | */ 37 | public function add( $email, $message, $terms ) { 38 | $errors = array(); 39 | 40 | // Submit report to ServMask 41 | if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { 42 | $errors[] = __( 'Your email is not valid.', AI1WM_PLUGIN_NAME ); 43 | } elseif ( empty( $message ) ) { 44 | $errors[] = __( 'Please enter comments in the text area.', AI1WM_PLUGIN_NAME ); 45 | } elseif ( empty( $terms ) ) { 46 | $errors[] = __( 'Please accept report term conditions.', AI1WM_PLUGIN_NAME ); 47 | } else { 48 | $response = wp_remote_post( 49 | AI1WM_REPORT_URL, 50 | array( 51 | 'timeout' => 15, 52 | 'body' => array( 53 | 'email' => $email, 54 | 'message' => $message, 55 | ), 56 | ) 57 | ); 58 | 59 | if ( is_wp_error( $response ) ) { 60 | $errors[] = sprintf( __( 'Something went wrong: %s', AI1WM_PLUGIN_NAME ), $response->get_error_message() ); 61 | } 62 | } 63 | 64 | return $errors; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-status.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Status { 27 | 28 | public static function error( $title, $message ) { 29 | self::log( array( 'type' => 'error', 'title' => $title, 'message' => $message ) ); 30 | } 31 | 32 | public static function info( $message ) { 33 | self::log( array( 'type' => 'info', 'message' => $message ) ); 34 | } 35 | 36 | public static function download( $message ) { 37 | self::log( array( 'type' => 'download', 'message' => $message ) ); 38 | } 39 | 40 | public static function confirm( $message ) { 41 | self::log( array( 'type' => 'confirm', 'message' => $message ) ); 42 | } 43 | 44 | public static function done( $title, $message ) { 45 | self::log( array( 'type' => 'done', 'title' => $title, 'message' => $message ) ); 46 | } 47 | 48 | public static function blogs( $title, $message ) { 49 | self::log( array( 'type' => 'blogs', 'title' => $title, 'message' => $message ) ); 50 | } 51 | 52 | public static function progress( $percent ) { 53 | self::log( array( 'type' => 'progress', 'percent' => $percent ) ); 54 | } 55 | 56 | public static function log( $data ) { 57 | if ( ! ai1wm_is_scheduled_backup() ) { 58 | update_option( AI1WM_STATUS, $data ); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /lib/model/class-ai1wm-template.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Template extends Bandar { 27 | 28 | /** 29 | * Renders a file and returns its contents 30 | * 31 | * @param string $file View to render 32 | * @param array $args Set of arguments 33 | * 34 | * @return string Rendered view 35 | */ 36 | public static function render( $view, $args = array(), $path = false ) { 37 | parent::render( $view, $args, $path ); 38 | } 39 | 40 | /** 41 | * Returns link to an asset file 42 | * 43 | * @param string $asset Asset file 44 | * 45 | * @return string Asset URL 46 | */ 47 | public static function asset_link( $asset, $prefix = 'AI1WM' ) { 48 | return constant( $prefix . '_URL' ) . '/lib/view/assets/' . $asset . '?v=' . constant( $prefix . '_VERSION' ); 49 | } 50 | 51 | public static function get_content( $template, $args = array(), $path = false ) { 52 | return parent::getTemplateContent( $template, $args, $path ); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-archive.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Archive { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Creating an empty archive...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // Create empty archive file 34 | $archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) ); 35 | $archive->close(); 36 | 37 | // Set progress 38 | Ai1wm_Status::info( __( 'Done creating an empty archive.', AI1WM_PLUGIN_NAME ) ); 39 | 40 | return $params; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-clean.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Clean { 27 | 28 | public static function execute( $params ) { 29 | Ai1wm_Directory::delete( ai1wm_storage_path( $params ) ); 30 | exit; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-compatibility.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Compatibility { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Checking extensions compatibility...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // Get messages 34 | $messages = Ai1wm_Compatibility::get( $params ); 35 | 36 | // Set messages 37 | if ( empty( $messages ) ) { 38 | return $params; 39 | } 40 | 41 | // Enable notifications 42 | add_filter( 'ai1wm_notification_error_toggle', '__return_true', 20 ); 43 | 44 | // Error message 45 | throw new Ai1wm_Compatibility_Exception( implode( $messages ) ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-config-file.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Config_File { 27 | 28 | public static function execute( $params ) { 29 | 30 | $package_bytes_written = 0; 31 | 32 | // Set archive bytes offset 33 | if ( isset( $params['archive_bytes_offset'] ) ) { 34 | $archive_bytes_offset = (int) $params['archive_bytes_offset']; 35 | } else { 36 | $archive_bytes_offset = ai1wm_archive_bytes( $params ); 37 | } 38 | 39 | // Set package bytes offset 40 | if ( isset( $params['package_bytes_offset'] ) ) { 41 | $package_bytes_offset = (int) $params['package_bytes_offset']; 42 | } else { 43 | $package_bytes_offset = 0; 44 | } 45 | 46 | // Get total package size 47 | if ( isset( $params['total_package_size'] ) ) { 48 | $total_package_size = (int) $params['total_package_size']; 49 | } else { 50 | $total_package_size = ai1wm_package_bytes( $params ); 51 | } 52 | 53 | // What percent of package have we processed? 54 | $progress = (int) min( ( $package_bytes_offset / $total_package_size ) * 100, 100 ); 55 | 56 | // Set progress 57 | Ai1wm_Status::info( sprintf( __( 'Archiving configuration file...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) ); 58 | 59 | // Open the archive file for writing 60 | $archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) ); 61 | 62 | // Set the file pointer to the one that we have saved 63 | $archive->set_file_pointer( $archive_bytes_offset ); 64 | 65 | // Add package.json to archive 66 | if ( $archive->add_file( ai1wm_package_path( $params ), AI1WM_PACKAGE_NAME, $package_bytes_written, $package_bytes_offset ) ) { 67 | 68 | // Set progress 69 | Ai1wm_Status::info( __( 'Done archiving configuration file.', AI1WM_PLUGIN_NAME ) ); 70 | 71 | // Unset archive bytes offset 72 | unset( $params['archive_bytes_offset'] ); 73 | 74 | // Unset package bytes offset 75 | unset( $params['package_bytes_offset'] ); 76 | 77 | // Unset total package size 78 | unset( $params['total_package_size'] ); 79 | 80 | // Unset completed flag 81 | unset( $params['completed'] ); 82 | 83 | } else { 84 | 85 | // Get archive bytes offset 86 | $archive_bytes_offset = $archive->get_file_pointer(); 87 | 88 | // What percent of package have we processed? 89 | $progress = (int) min( ( $package_bytes_offset / $total_package_size ) * 100, 100 ); 90 | 91 | // Set progress 92 | Ai1wm_Status::info( sprintf( __( 'Archiving configuration file...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) ); 93 | 94 | // Set archive bytes offset 95 | $params['archive_bytes_offset'] = $archive_bytes_offset; 96 | 97 | // Set package bytes offset 98 | $params['package_bytes_offset'] = $package_bytes_offset; 99 | 100 | // Set total package size 101 | $params['total_package_size'] = $total_package_size; 102 | 103 | // Set completed flag 104 | $params['completed'] = false; 105 | } 106 | 107 | // Truncate the archive file 108 | $archive->truncate(); 109 | 110 | // Close the archive file 111 | $archive->close(); 112 | 113 | return $params; 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-download.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Download { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Renaming exported file...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // Open the archive file for writing 34 | $archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) ); 35 | 36 | // Append EOF block 37 | $archive->close( true ); 38 | 39 | // Rename archive file 40 | if ( rename( ai1wm_archive_path( $params ), ai1wm_backup_path( $params ) ) ) { 41 | 42 | $blog_id = null; 43 | 44 | // Get subsite Blog ID 45 | if ( isset( $params['options']['sites'] ) && ( $sites = $params['options']['sites'] ) ) { 46 | if ( count( $sites ) === 1 ) { 47 | $blog_id = array_shift( $sites ); 48 | } 49 | } 50 | 51 | // Set archive details 52 | $link = ai1wm_backup_url( $params ); 53 | $size = ai1wm_backup_size( $params ); 54 | $name = ai1wm_site_name( $blog_id ); 55 | 56 | // Set progress 57 | Ai1wm_Status::download( 58 | sprintf( 59 | __( 60 | '' . 61 | 'Download %s' . 62 | 'Size: %s' . 63 | '', 64 | AI1WM_PLUGIN_NAME 65 | ), 66 | $link, 67 | $name, 68 | $size 69 | ) 70 | ); 71 | } 72 | 73 | return $params; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-init.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Init { 27 | 28 | public static function execute( $params ) { 29 | 30 | $blog_id = null; 31 | 32 | // Get subsite Blog ID 33 | if ( isset( $params['options']['sites'] ) && ( $sites = $params['options']['sites'] ) ) { 34 | if ( count( $sites ) === 1 ) { 35 | $blog_id = array_shift( $sites ); 36 | } 37 | } 38 | 39 | // Set archive 40 | if ( empty( $params['archive'] ) ) { 41 | $params['archive'] = ai1wm_archive_file( $blog_id ); 42 | } 43 | 44 | // Set storage 45 | if ( empty( $params['storage'] ) ) { 46 | $params['storage'] = ai1wm_storage_folder(); 47 | } 48 | 49 | return $params; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/model/export/class-ai1wm-export-resolve.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Export_Resolve { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Resolving URL address...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // HTTP resolve 34 | Ai1wm_Http::resolve( admin_url( 'admin-ajax.php?action=ai1wm_resolve' ) ); 35 | 36 | // Set progress 37 | Ai1wm_Status::info( __( 'Done resolving URL address.', AI1WM_PLUGIN_NAME ) ); 38 | 39 | return $params; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /lib/model/http/class-ai1wm-http-abstract.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | abstract class Ai1wm_Http_Abstract { 27 | 28 | protected $headers = array( 29 | 'Accept' => '*/*', 30 | 'Accept-Encoding' => '*', 31 | 'Accept-Charset' => '*', 32 | 'Accept-Language' => '*', 33 | 'User-Agent' => 'Mozilla/5.0', 34 | ); 35 | 36 | public function __construct() { 37 | // Set user agent 38 | if ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) { 39 | $this->headers['User-Agent'] = $_SERVER['HTTP_USER_AGENT']; 40 | } 41 | } 42 | 43 | public function set_header( $key, $value ) { 44 | $this->headers[ $key ] = $value; 45 | 46 | return $this; 47 | } 48 | 49 | public function get_header( $key ) { 50 | return $this->headers[ $key ]; 51 | } 52 | 53 | abstract public function get( $url, $blocking = false ); 54 | } 55 | -------------------------------------------------------------------------------- /lib/model/http/class-ai1wm-http-curl.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Http_Curl extends Ai1wm_Http_Abstract { 27 | 28 | public function get( $url, $blocking = false ) { 29 | 30 | $headers = array(); 31 | 32 | // Set headers 33 | foreach ( $this->headers as $key => $value ) { 34 | $headers[] = "{$key}: {$value}"; 35 | } 36 | 37 | // Set scheme 38 | $scheme = parse_url( $url, PHP_URL_SCHEME ); 39 | 40 | // Set host 41 | $host = parse_url( $url, PHP_URL_HOST ); 42 | 43 | // Set port 44 | $port = parse_url( $url, PHP_URL_PORT ); 45 | 46 | // Set cURL client 47 | $handle = curl_init(); 48 | 49 | // Set cURL options 50 | curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, 5 ); 51 | curl_setopt( $handle, CURLOPT_TIMEOUT, 5 ); 52 | curl_setopt( $handle, CURLOPT_URL, $url ); 53 | curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true ); 54 | curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true ); 55 | curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, false ); 56 | curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, false ); 57 | curl_setopt( $handle, CURLOPT_HEADER, false ); 58 | curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers ); 59 | 60 | // Send data to server 61 | if ( ! curl_exec( $handle ) ) { 62 | if ( $scheme === 'https' ) { 63 | if ( empty( $port ) ) { 64 | curl_setopt( $handle, CURLOPT_URL, str_replace( "https://{$host}", "http://{$host}:443", $url ) ); 65 | } else { 66 | curl_setopt( $handle, CURLOPT_URL, str_replace( "https://{$host}:{$port}", "http://{$host}:{$port}", $url ) ); 67 | } 68 | 69 | // Re-send data to server 70 | curl_exec( $handle ); 71 | } 72 | } 73 | 74 | // Close cURL handle 75 | curl_close( $handle ); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /lib/model/http/class-ai1wm-http-factory.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Http_Factory { 27 | 28 | public static function create( $type ) { 29 | if ( $type === 'curl' ) { 30 | return new Ai1wm_Http_Curl; 31 | } 32 | 33 | return new Ai1wm_Http_Stream; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /lib/model/http/class-ai1wm-http-stream.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Http_Stream extends Ai1wm_Http_Abstract { 27 | 28 | public function get( $url, $blocking = false ) { 29 | 30 | $headers = array(); 31 | 32 | // Set headers 33 | foreach ( $this->headers as $key => $value ) { 34 | $headers[] = "{$key}: {$value}"; 35 | } 36 | 37 | // Set scheme 38 | $scheme = parse_url( $url, PHP_URL_SCHEME ); 39 | 40 | // Set host 41 | $host = parse_url( $url, PHP_URL_HOST ); 42 | 43 | // Set port 44 | $port = parse_url( $url, PHP_URL_PORT ); 45 | 46 | // Set path 47 | $path = parse_url( $url, PHP_URL_PATH ); 48 | 49 | // Set query 50 | $query = parse_url( $url, PHP_URL_QUERY ); 51 | 52 | // Set port 53 | if ( empty( $port ) ) { 54 | if ( $scheme === 'https' ) { 55 | $port = 443; 56 | } else { 57 | $port = 80; 58 | } 59 | } 60 | 61 | // Set stream context 62 | $context = stream_context_create( array( 63 | 'ssl' => array( 64 | 'verify_peer' => false, 65 | 'verify_peer_name' => false, 66 | 'capture_peer_cert' => false, 67 | 'allow_self_signed' => true, 68 | ), 69 | ) ); 70 | 71 | // Set stream client 72 | if ( $scheme === 'https' ) { 73 | if ( ! ( $handle = stream_socket_client( "ssl://{$host}:{$port}", $errno, $errstr, 5, STREAM_CLIENT_CONNECT, $context ) ) ) { 74 | $handle = stream_socket_client( "tcp://{$host}:{$port}", $errno, $errstr, 5, STREAM_CLIENT_CONNECT, $context ); 75 | } 76 | } else { 77 | $handle = stream_socket_client( "tcp://{$host}:{$port}", $errno, $errstr, 5, STREAM_CLIENT_CONNECT, $context ); 78 | } 79 | 80 | // Ensure the stream is ready to write to 81 | $no_streams = array(); 82 | $write_streams = array( $handle ); 83 | stream_select( $no_streams, $write_streams, $no_streams, 0, 200000 ); 84 | 85 | // Prepare headers 86 | $headers = implode( "\r\n", $headers ); 87 | 88 | // Prepare request 89 | $request = "GET {$path}?{$query} HTTP/1.0\r\n{$headers}\r\n\r\n"; 90 | 91 | // Send data to server 92 | if ( ( $length = fwrite( $handle, $request ) ) !== strlen( $request ) ) { 93 | trigger_error( sprintf( 'fwrite wrote only %d instead of %d', $length, strlen( $request ) ) ); 94 | } 95 | 96 | // Set blocking/non-blocking mode on a stream 97 | if ( $blocking ) { 98 | fread( $handle, 1024 ); 99 | } else { 100 | stream_set_blocking( $handle, 0 ); 101 | // What we observed is that when the stream is non-blocking, it takes time for the webserver to start a new php thread. 102 | // By sleeping for 3s, we give some time for the webserver to start a new php process to process the request. 103 | // This is a temporary solution and a new one will be addressed in WM-651 104 | sleep( 3 ); 105 | } 106 | 107 | // Close stream handle 108 | fclose( $handle ); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-clean.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Clean { 27 | 28 | public static function execute( $params ) { 29 | Ai1wm_Directory::delete( ai1wm_storage_path( $params ) ); 30 | exit; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-compatibility.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Compatibility { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Checking extensions compatibility...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // Get messages 34 | $messages = Ai1wm_Compatibility::get( $params ); 35 | 36 | // Set messages 37 | if ( empty( $messages ) ) { 38 | return $params; 39 | } 40 | 41 | // Enable notifications 42 | add_filter( 'ai1wm_notification_error_toggle', '__return_true', 20 ); 43 | 44 | // Error message 45 | throw new Ai1wm_Compatibility_Exception( implode( $messages ) ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-confirm.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Confirm { 27 | 28 | public static function execute( $params ) { 29 | 30 | $messages = array(); 31 | 32 | // Read package.json file 33 | $handle = ai1wm_open( ai1wm_package_path( $params ), 'r' ); 34 | 35 | // Parse package.json file 36 | $package = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) ); 37 | $package = json_decode( $package, true ); 38 | 39 | // Close handle 40 | ai1wm_close( $handle ); 41 | 42 | // Set message 43 | $messages[] = __( 44 | 'The import process will overwrite your website including the database, media, plugins, and themes. ' . 45 | 'Please ensure that you have a backup of your data before proceeding to the next step.', 46 | AI1WM_PLUGIN_NAME 47 | ); 48 | 49 | // Check compatibility of PHP versions 50 | if ( isset( $package['PHP']['Version'] ) ) { 51 | if ( version_compare( $package['PHP']['Version'], '7.0.0', '<' ) && version_compare( PHP_VERSION, '7.0.0', '>=' ) ) { 52 | $messages[] = __( 53 | 'Your backup is from a PHP 5 but the site that you are importing to is PHP 7. ' . 54 | 'This could cause the import to fail. Technical details', 55 | AI1WM_PLUGIN_NAME 56 | ); 57 | } 58 | } 59 | 60 | // Set progress 61 | Ai1wm_Status::confirm( implode( $messages ) ); 62 | exit; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-enumerate.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Enumerate { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Retrieving a list of all WordPress files...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // Open the archive file for reading 34 | $archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) ); 35 | 36 | // Get total files count 37 | $params['total_files_count'] = $archive->get_total_files_count(); 38 | 39 | // Get total files size 40 | $params['total_files_size'] = $archive->get_total_files_size(); 41 | 42 | // Close the archive file 43 | $archive->close(); 44 | 45 | // Set progress 46 | Ai1wm_Status::info( __( 'Done retrieving a list of all WordPress files.', AI1WM_PLUGIN_NAME ) ); 47 | 48 | return $params; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-mu-plugins.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Mu_Plugins { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Activating mu-plugins...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | $exclude_files = array( 34 | AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_PAGE_CACHE_NAME, 35 | AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_PHP_EDGE_NAME, 36 | AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_BROWSER_CACHE_NAME, 37 | AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_GD_SYSTEM_PLUGIN_NAME, 38 | ); 39 | 40 | // Open the archive file for reading 41 | $archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) ); 42 | 43 | // Unpack mu-plugins files 44 | $archive->extract_by_files_array( WP_CONTENT_DIR, array( AI1WM_MUPLUGINS_NAME ), $exclude_files ); 45 | 46 | // Close the archive file 47 | $archive->close(); 48 | 49 | // Set progress 50 | Ai1wm_Status::info( __( 'Done activating mu-plugins.', AI1WM_PLUGIN_NAME ) ); 51 | 52 | return $params; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-resolve.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Resolve { 27 | 28 | public static function execute( $params ) { 29 | 30 | // Set progress 31 | Ai1wm_Status::info( __( 'Resolving URL address...', AI1WM_PLUGIN_NAME ) ); 32 | 33 | // HTTP resolve 34 | Ai1wm_Http::resolve( admin_url( 'admin-ajax.php?action=ai1wm_resolve' ) ); 35 | 36 | // Set progress 37 | Ai1wm_Status::info( __( 'Done resolving URL address.', AI1WM_PLUGIN_NAME ) ); 38 | 39 | return $params; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /lib/model/import/class-ai1wm-import-upload.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Import_Upload { 27 | 28 | private static function validate() { 29 | if ( ! array_key_exists( 'upload-file', $_FILES ) || ! is_array( $_FILES['upload-file'] ) ) { 30 | throw new Ai1wm_Import_Retry_Exception( 31 | __( 'Missing upload file.', AI1WM_PLUGIN_NAME ), 32 | 400 33 | ); 34 | } 35 | 36 | if ( ! array_key_exists( 'error', $_FILES['upload-file'] ) ) { 37 | throw new Ai1wm_Import_Retry_Exception( 38 | __( 'Missing error key in upload file.', AI1WM_PLUGIN_NAME ), 39 | 400 40 | ); 41 | } 42 | 43 | if ( ! array_key_exists( 'tmp_name', $_FILES['upload-file'] ) ) { 44 | throw new Ai1wm_Import_Retry_Exception( 45 | __( 'Missing tmp_name in upload file.', AI1WM_PLUGIN_NAME ), 46 | 400 47 | ); 48 | } 49 | } 50 | 51 | public static function execute( $params ) { 52 | self::validate(); 53 | 54 | $error = $_FILES['upload-file']['error']; 55 | $upload = $_FILES['upload-file']['tmp_name']; 56 | $archive = ai1wm_archive_path( $params ); 57 | 58 | switch ( $error ) { 59 | case UPLOAD_ERR_OK: 60 | try { 61 | ai1wm_copy( $upload, $archive ); 62 | ai1wm_unlink( $upload ); 63 | } catch ( Exception $e ) { 64 | throw new Ai1wm_Import_Retry_Exception( 65 | sprintf( 66 | __( 'Unable to upload the file because %s', AI1WM_PLUGIN_NAME ), 67 | $e->getMessage() 68 | ), 69 | 400 70 | ); 71 | } 72 | break; 73 | case UPLOAD_ERR_INI_SIZE: 74 | case UPLOAD_ERR_FORM_SIZE: 75 | case UPLOAD_ERR_PARTIAL: 76 | case UPLOAD_ERR_NO_FILE: 77 | // File is too large, reduce the size and try again 78 | throw new Ai1wm_Import_Retry_Exception( 79 | __( 'The file is too large, retrying with smaller size.', AI1WM_PLUGIN_NAME ), 80 | 413 81 | ); 82 | case UPLOAD_ERR_NO_TMP_DIR: 83 | throw new Ai1wm_Import_Retry_Exception( 84 | __( 'Missing a temporary folder.', AI1WM_PLUGIN_NAME ), 85 | 400 86 | ); 87 | case UPLOAD_ERR_CANT_WRITE: 88 | throw new Ai1wm_Import_Retry_Exception( 89 | __( 'Failed to write file to disk.', AI1WM_PLUGIN_NAME ), 90 | 400 91 | ); 92 | case UPLOAD_ERR_EXTENSION: 93 | throw new Ai1wm_Import_Retry_Exception( 94 | __( 'A PHP extension stopped the file upload.', AI1WM_PLUGIN_NAME ), 95 | 400 96 | ); 97 | default: 98 | throw new Ai1wm_Import_Retry_Exception( 99 | sprintf( 100 | __( 'Unrecognized error %s during upload.', AI1WM_PLUGIN_NAME ), 101 | $error 102 | ), 103 | 400 104 | ); 105 | } 106 | 107 | echo json_encode( array( 'errors' => array() ) ); 108 | exit; 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /lib/vendor/bandar/bandar/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Yani Iliev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /lib/vendor/bandar/bandar/lib/Exceptions/TemplateDoesNotExistException.php: -------------------------------------------------------------------------------- 1 | 30 | * @copyright 2013 Yani Iliev 31 | * @license https://raw.github.com/yani-/bandar/master/LICENSE The MIT License (MIT) 32 | * @version GIT: 3.0.0 33 | * @link https://github.com/yani-/bandar/ 34 | */ 35 | 36 | /** 37 | * TemplateDoesNotExistException 38 | * 39 | * @category Exceptions 40 | * @package Bandar 41 | * @author Yani Iliev 42 | * @copyright 2013 Yani Iliev 43 | * @license https://raw.github.com/yani-/bandar/master/LICENSE The MIT License (MIT) 44 | * @version Release: 2.0.1 45 | * @link https://github.com/yani-/bandar/ 46 | */ 47 | class TemplateDoesNotExistException extends Exception 48 | { 49 | 50 | } 51 | -------------------------------------------------------------------------------- /lib/vendor/servmask/cron/class-ai1wm-cron.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Cron { 27 | 28 | /** 29 | * Schedules a hook which will be executed by the WordPress 30 | * actions core on a specific interval 31 | * 32 | * @param string $hook Event hook 33 | * @param string $recurrence How often the event should reoccur 34 | * @param array $args Arguments to pass to the hook function(s) 35 | * @return mixed 36 | */ 37 | public static function add( $hook, $recurrence, $args = array() ) { 38 | $args = array_slice( func_get_args(), 2 ); 39 | $schedules = wp_get_schedules(); 40 | 41 | if ( isset( $schedules[ $recurrence ] ) && ( $current = $schedules[ $recurrence ] ) ) { 42 | return wp_schedule_event( time() + $current['interval'], $recurrence, $hook, $args ); 43 | } 44 | } 45 | 46 | /** 47 | * Un-schedules all previously-scheduled cron jobs using a particular 48 | * hook name or a specific combination of hook name and arguments. 49 | * 50 | * @param string $hook Event hook 51 | * @return boolean 52 | */ 53 | public static function clear( $hook ) { 54 | $cron = get_option( AI1WM_CRON, array() ); 55 | if ( empty( $cron ) ) { 56 | return false; 57 | } 58 | 59 | foreach ( $cron as $timestamp => $hooks ) { 60 | if ( isset( $hooks[ $hook ] ) ) { 61 | unset( $cron[ $timestamp ][ $hook ] ); 62 | 63 | // Unset empty timestamps 64 | if ( empty( $cron[ $timestamp ] ) ) { 65 | unset( $cron[ $timestamp ] ); 66 | } 67 | } 68 | } 69 | 70 | return update_option( AI1WM_CRON, $cron ); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /lib/vendor/servmask/database/class-ai1wm-database-mysql.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Database_Mysql extends Ai1wm_Database { 27 | 28 | /** 29 | * Run MySQL query 30 | * 31 | * @param string $input SQL query 32 | * @return resource 33 | */ 34 | public function query( $input ) { 35 | return mysql_query( $input, $this->wpdb->dbh ); 36 | } 37 | 38 | /** 39 | * Escape string input for mysql query 40 | * 41 | * @param string $input String to escape 42 | * @return string 43 | */ 44 | public function escape( $input ) { 45 | return mysql_real_escape_string( $input, $this->wpdb->dbh ); 46 | } 47 | 48 | /** 49 | * Return the error code for the most recent function call 50 | * 51 | * @return integer 52 | */ 53 | public function errno() { 54 | return mysql_errno( $this->wpdb->dbh ); 55 | } 56 | 57 | /** 58 | * Return a string description of the last error 59 | * 60 | * @return string 61 | */ 62 | public function error() { 63 | return mysql_error( $this->wpdb->dbh ); 64 | } 65 | 66 | /** 67 | * Return server version 68 | * 69 | * @return string 70 | */ 71 | public function version() { 72 | return mysql_get_server_info( $this->wpdb->dbh ); 73 | } 74 | 75 | /** 76 | * Return the result from MySQL query as associative array 77 | * 78 | * @param resource $result MySQL resource 79 | * @return array 80 | */ 81 | public function fetch_assoc( $result ) { 82 | return mysql_fetch_assoc( $result ); 83 | } 84 | 85 | /** 86 | * Return the result from MySQL query as row 87 | * 88 | * @param resource $result MySQL resource 89 | * @return array 90 | */ 91 | public function fetch_row( $result ) { 92 | return mysql_fetch_row( $result ); 93 | } 94 | 95 | /** 96 | * Return the number for rows from MySQL results 97 | * 98 | * @param resource $result MySQL resource 99 | * @return integer 100 | */ 101 | public function num_rows( $result ) { 102 | return mysql_num_rows( $result ); 103 | } 104 | 105 | /** 106 | * Free MySQL result memory 107 | * 108 | * @param resource $result MySQL resource 109 | * @return boolean 110 | */ 111 | public function free_result( $result ) { 112 | return mysql_free_result( $result ); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /lib/vendor/servmask/database/class-ai1wm-database-mysqli.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Database_Mysqli extends Ai1wm_Database { 27 | 28 | /** 29 | * Run MySQL query 30 | * 31 | * @param string $input SQL query 32 | * @return resource 33 | */ 34 | public function query( $input ) { 35 | return mysqli_query( $this->wpdb->dbh, $input, MYSQLI_STORE_RESULT ); 36 | } 37 | 38 | /** 39 | * Escape string input for mysql query 40 | * 41 | * @param string $input String to escape 42 | * @return string 43 | */ 44 | public function escape( $input ) { 45 | return mysqli_real_escape_string( $this->wpdb->dbh, $input ); 46 | } 47 | 48 | /** 49 | * Return the error code for the most recent function call 50 | * 51 | * @return integer 52 | */ 53 | public function errno() { 54 | return mysqli_errno( $this->wpdb->dbh ); 55 | } 56 | 57 | /** 58 | * Return a string description of the last error 59 | * 60 | * @return string 61 | */ 62 | public function error() { 63 | return mysqli_error( $this->wpdb->dbh ); 64 | } 65 | 66 | /** 67 | * Return server version 68 | * 69 | * @return string 70 | */ 71 | public function version() { 72 | return mysqli_get_server_info( $this->wpdb->dbh ); 73 | } 74 | 75 | /** 76 | * Return the result from MySQL query as associative array 77 | * 78 | * @param resource $result MySQL resource 79 | * @return array 80 | */ 81 | public function fetch_assoc( $result ) { 82 | return mysqli_fetch_assoc( $result ); 83 | } 84 | 85 | /** 86 | * Return the result from MySQL query as row 87 | * 88 | * @param resource $result MySQL resource 89 | * @return array 90 | */ 91 | public function fetch_row( $result ) { 92 | return mysqli_fetch_row( $result ); 93 | } 94 | 95 | /** 96 | * Return the number for rows from MySQL results 97 | * 98 | * @param resource $result MySQL resource 99 | * @return integer 100 | */ 101 | public function num_rows( $result ) { 102 | return mysqli_num_rows( $result ); 103 | } 104 | 105 | /** 106 | * Free MySQL result memory 107 | * 108 | * @param resource $result MySQL resource 109 | * @return boolean 110 | */ 111 | public function free_result( $result ) { 112 | return mysqli_free_result( $result ); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filesystem/class-ai1wm-directory.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Directory { 27 | 28 | /** 29 | * Create directory (recursively) 30 | * 31 | * @param string $path Path to the directory 32 | * @return boolean 33 | */ 34 | public static function create( $path ) { 35 | return @mkdir( $path, 0777, true ); 36 | } 37 | 38 | /** 39 | * Delete directory (recursively) 40 | * 41 | * @param string $path Path to the directory 42 | * @return boolean 43 | */ 44 | public static function delete( $path ) { 45 | // Iterate over directory 46 | $iterator = new Ai1wm_Recursive_Directory_Iterator( $path ); 47 | 48 | // Recursively iterate over directory 49 | $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD ); 50 | 51 | // Remove files and directories 52 | foreach ( $iterator as $item ) { 53 | if ( $item->isDir() ) { 54 | @rmdir( $item->getPathname() ); 55 | } else { 56 | @unlink( $item->getPathname() ); 57 | } 58 | } 59 | 60 | return @rmdir( $path ); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filesystem/class-ai1wm-file-htaccess.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_File_Htaccess { 27 | 28 | /** 29 | * Create .htaccess file (ServMask) 30 | * 31 | * @param string $path Path to file 32 | * @return boolean 33 | */ 34 | public static function create( $path ) { 35 | return Ai1wm_File::create( $path, implode( PHP_EOL, array( 36 | '', 37 | 'AddType application/octet-stream .wpress', 38 | '', 39 | '', 40 | 'DirectoryIndex index.php', 41 | '', 42 | '', 43 | 'Options -Indexes', 44 | '', 45 | ) ) ); 46 | } 47 | 48 | /** 49 | * Create .htaccess file (LiteSpeed) 50 | * 51 | * @param string $path Path to file 52 | * @return boolean 53 | */ 54 | public static function litespeed( $path ) { 55 | return Ai1wm_File::create_with_markers( $path, 'LiteSpeed', array( 56 | '', 57 | 'SetEnv noabort 1', 58 | '', 59 | ) ); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filesystem/class-ai1wm-file-index.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_File_Index { 27 | 28 | /** 29 | * Create index.php file 30 | * 31 | * @param string $path Path to file 32 | * @return boolean 33 | */ 34 | public static function create( $path ) { 35 | return Ai1wm_File::create( $path, '. 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_File_Webconfig { 27 | 28 | /** 29 | * Create web.config file 30 | * 31 | * @param string $path Path to file 32 | * @return boolean 33 | */ 34 | public static function create( $path ) { 35 | return Ai1wm_File::create( $path, implode( PHP_EOL, array( 36 | '', 37 | '', 38 | '', 39 | '', 40 | '', 41 | '', 42 | '', 43 | '', 44 | '', 45 | '', 46 | '', 47 | '', 48 | '', 49 | ) ) ); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filesystem/class-ai1wm-file.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_File { 27 | 28 | /** 29 | * Create a file with content 30 | * 31 | * @param string $path Path to the file 32 | * @param string $content Content of the file 33 | * @return boolean 34 | */ 35 | public static function create( $path, $content ) { 36 | if ( ! @file_exists( $path ) ) { 37 | if ( ! @is_writable( dirname( $path ) ) ) { 38 | return false; 39 | } 40 | 41 | if ( ! @touch( $path ) ) { 42 | return false; 43 | } 44 | } elseif ( ! @is_writable( $path ) ) { 45 | return false; 46 | } 47 | 48 | $is_written = false; 49 | if ( ( $handle = @fopen( $path, 'w' ) ) !== false ) { 50 | if ( @fwrite( $handle, $content ) !== false ) { 51 | $is_written = true; 52 | } 53 | 54 | @fclose( $handle ); 55 | } 56 | 57 | return $is_written; 58 | } 59 | 60 | /** 61 | * Create a file with marker and content 62 | * 63 | * @param string $path Path to the file 64 | * @param string $marker Name of the marker 65 | * @param string $content Content of the file 66 | * @return boolean 67 | */ 68 | public static function create_with_markers( $path, $marker, $content ) { 69 | return @insert_with_markers( $path, $marker, $content ); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filter/class-ai1wm-extension-filter.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Extension_Filter extends FilterIterator { 27 | 28 | protected $include = array(); 29 | 30 | public function __construct( Iterator $iterator, $include = array() ) { 31 | parent::__construct( $iterator ); 32 | 33 | // Set include filter 34 | $this->include = $include; 35 | } 36 | 37 | public function accept() { 38 | if ( in_array( pathinfo( $this->getInnerIterator()->getFilename(), PATHINFO_EXTENSION ), $this->include ) ) { 39 | return true; 40 | } 41 | 42 | return false; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filter/class-ai1wm-recursive-exclude-filter.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Recursive_Exclude_Filter extends RecursiveFilterIterator { 27 | 28 | protected $exclude = array(); 29 | 30 | public function __construct( RecursiveIterator $iterator, $exclude = array() ) { 31 | parent::__construct( $iterator ); 32 | 33 | // Set exclude filter 34 | $this->exclude = $exclude; 35 | } 36 | 37 | public function accept() { 38 | return ! in_array( $this->getInnerIterator()->getSubPathname(), $this->exclude ); 39 | } 40 | 41 | public function getChildren() { 42 | return new self( $this->getInnerIterator()->getChildren(), $this->exclude ); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filter/class-ai1wm-recursive-extension-filter.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Recursive_Extension_Filter extends RecursiveFilterIterator { 27 | 28 | protected $include = array(); 29 | 30 | public function __construct( RecursiveIterator $iterator, $include = array() ) { 31 | parent::__construct( $iterator ); 32 | 33 | // Set include filter 34 | $this->include = $include; 35 | } 36 | 37 | public function accept() { 38 | if ( $this->getInnerIterator()->isFile() ) { 39 | if ( ! in_array( pathinfo( $this->getInnerIterator()->getFilename(), PATHINFO_EXTENSION ), $this->include ) ) { 40 | return false; 41 | } 42 | } 43 | 44 | return true; 45 | } 46 | 47 | public function getChildren() { 48 | return new self( $this->getInnerIterator()->getChildren(), $this->include ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /lib/vendor/servmask/filter/class-ai1wm-recursive-newline-filter.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Recursive_Newline_Filter extends RecursiveFilterIterator { 27 | 28 | public function accept() { 29 | return strpos( $this->getInnerIterator()->getSubPathname(), "\n" ) === false && 30 | strpos( $this->getInnerIterator()->getSubPathname(), "\r" ) === false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/vendor/servmask/iterator/class-ai1wm-recursive-directory-iterator.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Recursive_Directory_Iterator extends RecursiveDirectoryIterator { 27 | 28 | public function __construct( $path ) { 29 | parent::__construct( $path ); 30 | 31 | // Skip current and parent directory 32 | $this->skipdots(); 33 | } 34 | 35 | public function rewind() { 36 | parent::rewind(); 37 | 38 | // Skip current and parent directory 39 | $this->skipdots(); 40 | } 41 | 42 | public function next() { 43 | parent::next(); 44 | 45 | // Skip current and parent directory 46 | $this->skipdots(); 47 | } 48 | 49 | /** 50 | * Returns whether current entry is a directory and not '.' or '..' 51 | * 52 | * Explicitly set allow links flag, because RecursiveDirectoryIterator::FOLLOW_SYMLINKS 53 | * is not supported by <= PHP 5.3.0 54 | * 55 | * @return bool 56 | */ 57 | public function hasChildren( $allow_links = true ) { 58 | return parent::hasChildren( $allow_links ); 59 | } 60 | 61 | protected function skipdots() { 62 | while ( $this->isDot() ) { 63 | parent::next(); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /lib/vendor/servmask/iterator/class-ai1wm-recursive-iterator-iterator.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | class Ai1wm_Recursive_Iterator_Iterator extends RecursiveIteratorIterator { 27 | 28 | } 29 | -------------------------------------------------------------------------------- /lib/view/assets/font/servmask.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/font/servmask.eot -------------------------------------------------------------------------------- /lib/view/assets/font/servmask.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/font/servmask.ttf -------------------------------------------------------------------------------- /lib/view/assets/font/servmask.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/font/servmask.woff -------------------------------------------------------------------------------- /lib/view/assets/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/img/ajax-loader.gif -------------------------------------------------------------------------------- /lib/view/assets/img/logo-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/img/logo-128x128.png -------------------------------------------------------------------------------- /lib/view/assets/img/logo-20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/img/logo-20x20.png -------------------------------------------------------------------------------- /lib/view/assets/img/logo-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dev071/all-in-one-wp-migration-unlimited/2919b1b1c3e5bc7ee9ba61d8effcea2498859d22/lib/view/assets/img/logo-32x32.png -------------------------------------------------------------------------------- /lib/view/assets/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /lib/view/common/http-authentication.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | -------------------------------------------------------------------------------- /lib/view/common/leave-feedback.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 | 51 | 52 | 77 |
78 | -------------------------------------------------------------------------------- /lib/view/common/maintenance-mode.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | -------------------------------------------------------------------------------- /lib/view/common/report-problem.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 | 32 |
33 |
34 | 35 |
36 |
37 | 38 |
39 |
40 | 44 |
45 |
46 |
47 | 48 | 52 | 53 |
54 |
55 |
56 |
57 |
58 | -------------------------------------------------------------------------------- /lib/view/common/share-buttons.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 | 37 | 51 | 52 |
53 | 54 | 65 | 66 | 67 |
75 |
76 |
77 | -------------------------------------------------------------------------------- /lib/view/export/button-azure-storage.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Azure Storage 28 | -------------------------------------------------------------------------------- /lib/view/export/button-b2.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Backblaze B2 28 | -------------------------------------------------------------------------------- /lib/view/export/button-box.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Box 28 | -------------------------------------------------------------------------------- /lib/view/export/button-digitalocean.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | DigitalOcean 28 | -------------------------------------------------------------------------------- /lib/view/export/button-dropbox.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Dropbox 28 | -------------------------------------------------------------------------------- /lib/view/export/button-file.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 28 | -------------------------------------------------------------------------------- /lib/view/export/button-ftp.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | FTP 28 | -------------------------------------------------------------------------------- /lib/view/export/button-gcloud-storage.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Google Cloud 28 | -------------------------------------------------------------------------------- /lib/view/export/button-gdrive.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Google Drive 28 | -------------------------------------------------------------------------------- /lib/view/export/button-glacier.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Amazon Glacier 28 | -------------------------------------------------------------------------------- /lib/view/export/button-mega.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Mega 28 | -------------------------------------------------------------------------------- /lib/view/export/button-onedrive.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | OneDrive 28 | -------------------------------------------------------------------------------- /lib/view/export/button-pcloud.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | pCloud 28 | -------------------------------------------------------------------------------- /lib/view/export/button-s3.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Amazon S3 28 | -------------------------------------------------------------------------------- /lib/view/export/export-buttons.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |
29 |
30 |
31 | 32 | 33 | 34 | 35 | 36 | 37 |
38 |
    39 | 40 |
  • 41 | 42 |
  • 43 | 44 |
45 |
46 |
47 |
48 | -------------------------------------------------------------------------------- /lib/view/export/find-replace.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 45 | 46 | 50 | -------------------------------------------------------------------------------- /lib/view/export/help-section.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |

28 |
29 | 30 |

31 | 32 |

33 | 34 |

35 | 36 | 50 | -------------------------------------------------------------------------------- /lib/view/export/index.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |
29 |
30 |
31 |

32 | 33 | 34 |

35 | 36 | 37 | 38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 53 | 54 |
55 |
56 |
57 |
58 |
59 | 60 | 61 | 62 | 63 | 64 |

65 | 66 | 67 | 68 |
69 |
70 |
71 |
72 |
73 | -------------------------------------------------------------------------------- /lib/view/import/button-azure-storage.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Azure Storage 28 | -------------------------------------------------------------------------------- /lib/view/import/button-b2.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Backblaze B2 28 | -------------------------------------------------------------------------------- /lib/view/import/button-box.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Box 28 | -------------------------------------------------------------------------------- /lib/view/import/button-digitalocean.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | DigitalOcean 28 | -------------------------------------------------------------------------------- /lib/view/import/button-dropbox.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Dropbox 28 | -------------------------------------------------------------------------------- /lib/view/import/button-file.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /lib/view/import/button-ftp.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | FTP 28 | -------------------------------------------------------------------------------- /lib/view/import/button-gcloud-storage.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Google Cloud 28 | -------------------------------------------------------------------------------- /lib/view/import/button-gdrive.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Google Drive 28 | -------------------------------------------------------------------------------- /lib/view/import/button-glacier.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Amazon Glacier 28 | -------------------------------------------------------------------------------- /lib/view/import/button-mega.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Mega 28 | -------------------------------------------------------------------------------- /lib/view/import/button-onedrive.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | OneDrive 28 | -------------------------------------------------------------------------------- /lib/view/import/button-pcloud.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | pCloud 28 | -------------------------------------------------------------------------------- /lib/view/import/button-s3.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | Amazon S3 28 | -------------------------------------------------------------------------------- /lib/view/import/button-url.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | URL 28 | -------------------------------------------------------------------------------- /lib/view/import/import-buttons.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 28 |
29 | 30 |
31 |
32 |
33 |
34 |

35 |
36 | 37 |

38 |
39 |
40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 |
    48 | 49 |
  • 50 | 51 |
  • 52 | 53 |
54 |
55 |
56 |
57 |
58 |
59 | 60 |

61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |

74 | 75 |
76 | Site could not be imported!' . 80 | '

Please make sure that storage directory %s has read and write permissions.

', 81 | AI1WM_PLUGIN_NAME 82 | ), 83 | AI1WM_STORAGE_PATH 84 | ); 85 | ?> 86 |
87 | 88 | -------------------------------------------------------------------------------- /lib/view/import/index.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |
29 |
30 |
31 |

32 | 33 | 34 |

35 | 36 | 37 | 38 |
39 | 40 |

41 |
42 |

43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 53 | 54 |
55 |
56 |
57 |
58 |
59 | 60 | 61 | 62 | 63 |

64 | 65 | 66 |
67 |
68 |
69 |
70 |
71 | -------------------------------------------------------------------------------- /lib/view/main/backups-htaccess-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s file. ' . 33 | 'Try to change permissions of the parent folder or send us an email at ' . 34 | 'support@servmask.com for assistance.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_BACKUPS_HTACCESS 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/backups-index-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s file. ' . 33 | 'Try to change permissions of the parent folder or send us an email at ' . 34 | 'support@servmask.com for assistance.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_BACKUPS_INDEX 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/backups-notice.php: -------------------------------------------------------------------------------- 1 |
2 |

3 | %s folder. ' . 7 | 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 8 | 'for the All in One WP Migration plugin to function properly.', 9 | AI1WM_PLUGIN_NAME 10 | ), 11 | AI1WM_BACKUPS_PATH 12 | ) 13 | ?> 14 |

15 |
16 | -------------------------------------------------------------------------------- /lib/view/main/backups-path-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s folder. ' . 33 | 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 34 | 'for the All in One WP Migration plugin to function properly.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_BACKUPS_PATH 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/backups-webconfig-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s file. ' . 33 | 'Try to change permissions of the parent folder or send us an email at ' . 34 | 'support@servmask.com for assistance.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_BACKUPS_WEBCONFIG 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/get-support.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 28 | -------------------------------------------------------------------------------- /lib/view/main/index-notice.php: -------------------------------------------------------------------------------- 1 |
2 |

3 | %s file. ' . 7 | 'Try to change permissions of the parent folder or send us an email at ' . 8 | 'support@servmask.com for assistance.', 9 | AI1WM_PLUGIN_NAME 10 | ), 11 | AI1WM_DIRECTORY_INDEX 12 | ) 13 | ?> 14 |

15 |
16 | -------------------------------------------------------------------------------- /lib/view/main/multisite-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | 36 | 37 | 38 | 39 | 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/storage-index-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s file. ' . 33 | 'Try to change permissions of the parent folder or send us an email at ' . 34 | 'support@servmask.com for assistance.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_STORAGE_INDEX 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/storage-notice.php: -------------------------------------------------------------------------------- 1 |
2 |

3 | %s folder. ' . 7 | 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 8 | 'for the All in One WP Migration plugin to function properly.', 9 | AI1WM_PLUGIN_NAME 10 | ), 11 | AI1WM_STORAGE_PATH 12 | ) 13 | ?> 14 |

15 |
16 | -------------------------------------------------------------------------------- /lib/view/main/storage-path-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s folder. ' . 33 | 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 34 | 'for the All in One WP Migration plugin to function properly.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_STORAGE_PATH 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/main/wordpress-htaccess-notice.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |

29 | %s file. ' . 33 | 'Try to change permissions of the parent folder or send us an email at ' . 34 | 'support@servmask.com for assistance.', 35 | AI1WM_PLUGIN_NAME 36 | ), 37 | AI1WM_WORDPRESS_HTACCESS 38 | ) 39 | ?> 40 |

41 |
42 | -------------------------------------------------------------------------------- /lib/view/updater/check.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 | 28 | -------------------------------------------------------------------------------- /lib/view/updater/modal.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | ?> 26 | 27 |
28 |
29 |

30 |

31 |

32 |

33 | 34 | 35 |

36 |

37 | 38 | 39 |

40 |

41 | 44 | 45 |

46 |
47 |
48 | 49 | 50 | 51 | 52 | . 53 | 54 | -------------------------------------------------------------------------------- /uninstall.php: -------------------------------------------------------------------------------- 1 | . 17 | * 18 | * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ 19 | * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ 20 | * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ 21 | * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ 22 | * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ 23 | * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ 24 | */ 25 | 26 | // Include plugin bootstrap file 27 | require_once dirname( __FILE__ ) . 28 | DIRECTORY_SEPARATOR . 29 | 'all-in-one-wp-migration.php'; 30 | 31 | /** 32 | * Trigger Uninstall process only if WP_UNINSTALL_PLUGIN is defined 33 | */ 34 | if ( defined( 'WP_UNINSTALL_PLUGIN' ) ) { 35 | global $wpdb, $wp_filesystem; 36 | 37 | // Delete any options or other data stored in the database here 38 | delete_option( AI1WM_STATUS ); 39 | delete_option( AI1WM_SECRET_KEY ); 40 | delete_option( AI1WM_AUTH_USER ); 41 | delete_option( AI1WM_AUTH_PASSWORD ); 42 | } 43 | --------------------------------------------------------------------------------