deprecated.php 0000644 00000003660 14720661726 0007375 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
function ai1wm_progress_path( $params ) {}
loader.php 0000644 00000025563 14720661726 0006551 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
// Include all the files that you want to load in here
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'bandar' .
DIRECTORY_SEPARATOR .
'bandar' .
DIRECTORY_SEPARATOR .
'lib' .
DIRECTORY_SEPARATOR .
'Bandar.php';
if ( defined( 'WP_CLI' ) ) {
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'command' .
DIRECTORY_SEPARATOR .
'class-ai1wm-wp-cli-command.php';
}
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-directory.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-file.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-file-index.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-file-htaccess.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-file-webconfig.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filesystem' .
DIRECTORY_SEPARATOR .
'class-ai1wm-file-robots.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'cron' .
DIRECTORY_SEPARATOR .
'class-ai1wm-cron.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'iterator' .
DIRECTORY_SEPARATOR .
'class-ai1wm-recursive-directory-iterator.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'iterator' .
DIRECTORY_SEPARATOR .
'class-ai1wm-recursive-iterator-iterator.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filter' .
DIRECTORY_SEPARATOR .
'class-ai1wm-recursive-extension-filter.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'filter' .
DIRECTORY_SEPARATOR .
'class-ai1wm-recursive-exclude-filter.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'archiver' .
DIRECTORY_SEPARATOR .
'class-ai1wm-archiver.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'archiver' .
DIRECTORY_SEPARATOR .
'class-ai1wm-compressor.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'archiver' .
DIRECTORY_SEPARATOR .
'class-ai1wm-extractor.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'database' .
DIRECTORY_SEPARATOR .
'class-ai1wm-database.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'database' .
DIRECTORY_SEPARATOR .
'class-ai1wm-database-mysql.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'database' .
DIRECTORY_SEPARATOR .
'class-ai1wm-database-mysqli.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'database' .
DIRECTORY_SEPARATOR .
'class-ai1wm-database-sqlite.php';
require_once AI1WM_VENDOR_PATH .
DIRECTORY_SEPARATOR .
'servmask' .
DIRECTORY_SEPARATOR .
'database' .
DIRECTORY_SEPARATOR .
'class-ai1wm-database-utility.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-main-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-status-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-backups-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-updater-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-feedback-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-schedules-controller.php';
require_once AI1WM_CONTROLLER_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-reset-controller.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-init.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-compatibility.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-archive.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-config.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-config-file.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-enumerate-content.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-enumerate-media.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-enumerate-plugins.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-enumerate-tables.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-enumerate-themes.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-content.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-media.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-plugins.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-themes.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-database.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-database-file.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-download.php';
require_once AI1WM_EXPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-export-clean.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-upload.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-users.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-compatibility.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-validate.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-confirm.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-check-encryption.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-check-decryption-password.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-blogs.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-options.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-permalinks.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-enumerate.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-content.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-mu-plugins.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-database.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-done.php';
require_once AI1WM_IMPORT_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-import-clean.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-deprecated.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-extensions.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-compatibility.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-backups.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-updater.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-feedback.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-template.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-status.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-log.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-message.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-notification.php';
require_once AI1WM_MODEL_PATH .
DIRECTORY_SEPARATOR .
'class-ai1wm-handler.php';
all-in-one-wp-migration.php 0000644 00000006733 14720661726 0011647 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
// Check SSL Mode
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && ( $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) ) {
$_SERVER['HTTPS'] = 'on';
}
// Plugin Basename
define( 'AI1WM_PLUGIN_BASENAME', basename( dirname( __FILE__ ) ) . '/' . basename( __FILE__ ) );
// Plugin Path
define( 'AI1WM_PATH', dirname( __FILE__ ) );
// Plugin URL
define( 'AI1WM_URL', plugins_url( '', AI1WM_PLUGIN_BASENAME ) );
// Plugin Storage URL
define( 'AI1WM_STORAGE_URL', plugins_url( 'storage', AI1WM_PLUGIN_BASENAME ) );
// Include constants
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'constants.php';
// Include deprecated
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'deprecated.php';
// Include functions
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'functions.php';
// Include exceptions
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'exceptions.php';
// Include loader
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'loader.php';
// =========================================================================
// = All app initialization is done in Ai1wm_Main_Controller __constructor =
// =========================================================================
$main_controller = new Ai1wm_Main_Controller();
storage/index.php 0000644 00000000032 14720661726 0010036 0 ustar 00 Kangaroos cannot jump here storage/index.html 0000644 00000000032 14720661726 0010213 0 ustar 00 Kangaroos cannot jump here exceptions.php 0000644 00000006166 14720661726 0007462 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Archive_Exception extends Exception {}
class Ai1wm_Backups_Exception extends Exception {}
class Ai1wm_Export_Exception extends Exception {}
class Ai1wm_Http_Exception extends Exception {}
class Ai1wm_Import_Exception extends Exception {}
class Ai1wm_Import_Retry_Exception extends Exception {}
class Ai1wm_Not_Accessible_Exception extends Exception {}
class Ai1wm_Not_Seekable_Exception extends Exception {}
class Ai1wm_Not_Tellable_Exception extends Exception {}
class Ai1wm_Not_Readable_Exception extends Exception {}
class Ai1wm_Not_Writable_Exception extends Exception {}
class Ai1wm_Not_Truncatable_Exception extends Exception {}
class Ai1wm_Not_Closable_Exception extends Exception {}
class Ai1wm_Not_Found_Exception extends Exception {}
class Ai1wm_Not_Directory_Exception extends Exception {}
class Ai1wm_Not_Valid_Secret_Key_Exception extends Exception {}
class Ai1wm_Quota_Exceeded_Exception extends Exception {}
class Ai1wm_Storage_Exception extends Exception {}
class Ai1wm_Compatibility_Exception extends Exception {}
class Ai1wm_Feedback_Exception extends Exception {}
class Ai1wm_Database_Exception extends Exception {}
class Ai1wm_Not_Encryptable_Exception extends Exception {}
class Ai1wm_Not_Decryptable_Exception extends Exception {}
readme.txt 0000644 00000017336 14720661726 0006567 0 ustar 00 === All-in-One WP Migration and Backup ===
Contributors: yani.iliev, bangelov, pimjitsawang
Tags: backup, transfer, copy, move, clone
Requires at least: 3.3
Tested up to: 6.6
Requires PHP: 5.3
Stable tag: 7.86
License: GPLv2 or later
Backup, transfer, copy, and move a site with 1-click. Quick, easy, and reliable.
== Description ==
Introduced in 2013 and used by over 60 million websites, All-in-One WP Migration is verifiably one of WordPress' most trusted and utilized plugins for moving websites with absolute ease.
Intently built with the non-technical user in mind, All-in-One WP Migration comes loaded with newbie-friendly functions that allow you to migrate your WordPress website with little to no technical knowledge or experience.
Ready to migrate your website? It's fast and easy as 1, 2, 3:
1. Install All-in-One WP Migration plugin.
2. Hit the export button to bundle your database, media files, plugins, and themes into one tidy file.
3. Unpack the file at the new location with an easy-to-use "drag and drop" feature in the WordPress dashboard of your new website.
Follow these three simple steps, and your site will be live at its new location with minimal stress and **zero downtime**!
One feature that makes All-in-One WP Migration widely loved (to the tune of over 6,000 5-star user reviews) is that the technical requirements for installing the plugin are simple.
If you have WordPress version between 3.3 and 6.6.1 and PHP version between 5.3 and 8.4, you are good to go. All-in-One WP Migration also supports all versions of MySQL, MariaDB and SQLite.
**Features Spotlight:**
* Supports custom uploads, plugins, theme folders, and more.
* Available in over 50 language translations - including Japanese.
* Accessible for individuals with disabilities (WCAG 2.1 AA Level compliant)
* No limitations on host or operating system.
* Supports a vast range of hosting providers -- [click here for a full list of supported providers.](https://help.servmask.com/knowledgebase/supported-hosting-providers/)
* A long list of [premium extensions](https://servmask.com/products) that gives you the power to do more.
* Mobile device compatible.
* Intelligent and flawless auto-replacement of website url during import.
* Full product support.
* Browse WPRESS files online with [Traktor Web](https://traktor.servmask.com)
* Extract WPRESS files on your computer with [Traktor Desktop](https://traktor.wp-migration.com)
* New in v7.82: Integration with WordPress Playground, enabling easy migration between SQLite and MySQL.
* And lots more!
Here are other reasons to use All-in-One WP Migration ...
**Trusted by the Government and Big Corporations:**
Many enterprise customers, government organizations, and universities use, love, and trust All-in-One WP Migration. Here are some: Boeing, NASA, VW, IBM, Harvard University, Stanford University, Lego, P&G, Automattic, State of California, State of Hawaii.
This broad adoption and usage of All-in-One WP Migration demonstrate how **safe, reliable and adaptable** the plugin is for just about any website migration need.
**Update Frequency:**
Our team is dedicated to keeping All-in-One WP Migration up-to-date and secure. We release updates every two weeks or at least once a month, ensuring compatibility with the latest WordPress versions, including beta releases. Our proactive testing and feedback to the WordPress core team help in preemptively addressing any potential issues, providing our users with a reliable and forward-compatible migration and backup solution.
**Full Compatibility and Support:**
All-in-One WP Migration has been extensively tested and confirmed to be compatible with most WordPress plugins and themes.
This means you don't get to experience cross-plugin compatibility issues that can slow down, bug, or break down your WordPress website when you install and use All-in-One WP Migration.
As a matter of fact, All-in-One WP Migration has partnered with multiple theme/plugin vendors to distribute their themes/plugins with us as a single, easy to use, easy to install package.
These vendors trust us and our plugin to provide their customers with reliable product delivery, support, migrations, and backups.
**Cloud Storage Supported:**
All-in-One WP Migration supports and syncs seamlessly with top cloud storage services.
The plugin comes preinstalled on all Bitnami WordPress sites running on AWS, Google Compute Cloud, and Microsoft Azure.
**Case Studies:**
* Small Business Growth: A small online retailer was able to seamlessly migrate to a more robust hosting solution to handle increasing traffic during peak shopping seasons, ensuring smooth customer experiences without downtime.
* Educational Institutions: A prominent university utilized All-in-One WP Migration to consolidate multiple departmental sites into a single, unified WordPress network, simplifying management and enhancing site security.
* Government Reliability: Following a directive to improve digital accessibility, a government agency used our plugin to migrate their content to a new, compliant platform without impacting public access to critical information.
= Contact us =
* [Get free help from us here](https://servmask.com/help)
* [Report a bug or request a feature](https://servmask.com/help)
* [Find out more about us](https://servmask.com)
[youtube http://www.youtube.com/watch?v=BpWxCeUWBOk]
[youtube http://www.youtube.com/watch?v=mRp7qTFYKgs]
== Installation ==
1. All-in-One WP Migration can be installed directly through your WordPress Plugins dashboard.
1. Click "Add New" and Search for "All-in-One WP Migration"
1. Install and Activate
Alternatively, you can download the plugin using the download button on this page and then upload the all-in-one-wp-migration folder to the /wp-content/plugins/ directory then activate throught the Plugins dashboard in WordPress
== Screenshots ==
1. Mobile Export page
2. Mobile Import page
3. Plugin Menu
== Privacy Policy ==
All-in-One WP Migration is designed to fully respect and protect the personal information of its users. It asks for your consent to collect the user's email address when filling the plugin's contact form.
All-in-One WP Migration is in full compliance with General Data Protection Regulation (GDPR).
See our [GDPR Compliant Privacy Policy here](https://www.iubenda.com/privacy-policy/946881).
== Changelog ==
= 7.86 =
**Fixed**
* Resolved an issue with PHP 8.4 compatibility and restoring backup files via WP-CLI
= 7.85 =
**Added**
* PHP 8.4 compatibility
= 7.84 =
**Added**
* New hooks during the export and import processes to allow for custom actions and integrations
= 7.83 =
**Fixed**
* Resolved an issue where downloading backup files was failing on WordPress Playground environments
= 7.82 =
**Added**
* SQLite support
* WordPress Playground support
= 7.81 =
**Added**
* Reset Hub Page: Introducing a new reset hub page, providing users with powerful reset tools for efficient site management. This feature allows for easier resets of WordPress environments, facilitating smoother development and testing workflows.
**Improved**
* Better W3TC Support
* PHP Compatibility Checks: Display a warning notification, when you move/restore your site to a different PHP version.
= 7.80 =
**Added**
* Support for update-services plugin
* Domain name conversion to dashes from dots in the backup name for improved hosting providers compatibility
**Improved**
* Better support for Multisite to Standalone and Standalone to Multisite exports and imports, streamlining the migration process
= 7.79 =
**Added**
* Support for WordPress v6.4
= 7.78 =
**Added**
* Implemented a new Schedules page within the plugin, displaying various advanced features exclusive to premium extensions
= 7.77 =
**Added**
* Tested the new version of WordPress 6.3
= 7.76 =
**Fixed**
* Removed the [beta] label from advanced settings
changelog.txt 0000644 00000033513 14720661726 0007254 0 ustar 00 = 7.75 =
* Custom backups path on database import step
= 7.74 =
* Resolved an ongoing issue with the compatibility of the plugin with servers running Imunify360. The file "wp-content/plugins/all-in-one-wp-migration/functions.php" was being falsely flagged and deleted due to a detection error. This update includes small changes to the "functions.php" file to modify its checksum and prevent the false flag by Imunify360
* Imunify360 has updated its signatures, which should prevent this issue from occurring on servers running the updated version. However, this plugin update serves as an additional measure to ensure that the issue is resolved for all users
= 7.73 =
* Better support for PHP 8.1
= 7.72 =
* Backups time based on selected WordPress time zone
= 7.71 =
* Removed the AI1WM_MAX_FILE_SIZE constant. This constant is no longer necessary
= 7.70 =
* Hooks that allow excluding specific database tables on export
= 7.69 =
* Improved support for custom backups location
= 7.68 =
* Better support for PHP 8.1
= 7.67 =
* Backups with a modified wp-content path cannot be downloaded
= 7.66 =
* Better support for WordPress v6.0.2
= 7.65 =
* Improved support for single-letter prefixed databases
= 7.64 =
* Better support for database binary fields
= 7.63 =
* CSRF and XSS issue in the plugin. Thank you, WPScan, for reporting it
= 7.62 =
* Password-protect and encrypt backups
= 7.61 =
* Issue with 7.60 release
= 7.60 =
* What's new page - easy way to get up to speed with the newest features
* List of all the items in a backup file, then select and download archived files
* Support for WordPress v6
= 7.59 =
* Fix a flaw in which the admin user has the ability to remove files other than backups
= 7.58 =
* Hide the backups count if there are no backups
= 7.57 =
* Improved UX on backups page
= 7.56 =
* Better support for PHP 8.1
= 7.55 =
* When importing or restoring across various PHP versions, the notice has been improved
= 7.54 =
* Improved YouTube and Twitter buttons
= 7.53 =
* Total number of backups in the plugin menu
= 7.52 =
* Out of disk space when exporting database.sql
= 7.51 =
* Link to YouTube Channel
= 7.50 =
* Improved reliability for scheduling events
= 7.49 =
* Better error handling when making HTTP requests
* Store a list of site files as CSV
* Filter to change the request method
= 7.48 =
* Support for BuddyPress plugin
= 7.47 =
* Improved database migration
= 7.46 =
* Support custom themes directory
= 7.45 =
* Support custom plugins directory
= 7.44 =
* Better support for MySQL <= 5.5
* Support for BuddyBoss plugin
* Report issue button
= 7.43 =
* Improved reliability
= 7.42 =
* Better support for WooCommerce plugin
= 7.41 =
* Improved free disk space checking
* Improved backup validation
* Improved path replacement on import
* Horizontal scrollbar on MacOS (Backups Page)
= 7.40 =
* Better support for WP Cerber plugin
* Backup page style issues on narrow screens
= 7.39 =
* Remove deprecated jQuery methods
= 5.56 =
* Fix an issue with WP_Hook class introcuded in WP 4.7
= 5.55 =
* Fix an issue with resolving URL on export/import when using non-blocking streams client
= 5.54 =
* Fix an issue with resolving URL on export/import
= 5.53 =
* Send HTTP basic authorization header on upload (fetch method)
* Add Accept-Encoding, Accept-Charset and Accept-Language on export/import
* Do not replace already replaced values on database import/export
* Set silent mode when activating sidewide plugins
* Replace old media style URLs with the new media style URLs on database import
* Replace user_level and capabilities user meta keys if tables have empty prefix on export
* Create separate action for extracting must-use plugins
* Add option "Do not export must-use plugins" in advanced settings
* Fix an issue with SSL that produces "Unable to resolve URL..."
= 5.52 =
* Simplify the text on import page
* Fix an issue with special characters on export and import
* Fix an issue with export and import of large files
= 5.51 =
* Add support for utf8mb4_unicode_520_ci database collation
= 5.50 =
* Improve database export process
* Simplify export and import cron
* Fix an issue with export and import progress status
= 5.49 =
* Test plugin up to WordPress 4.6
= 5.48 =
* Improve support for large databases on export
* Add support for Box cloud storage
* Fix an issue with status on export/import
* Fix an issue with asynchronous requests on export/import
= 5.47 =
* Fix an issue with incorrect file size on export
= 5.46 =
* Add "Restore from Backups" video in readme file
* Display message if backups are inaccessible
= 5.45 =
* Fix an issue with blogs.dir path replacement
= 5.44 =
* Add "Do not replace email domain" option in advanced settings
* Add "ai1wm_exclude_content_from_export" WordPress hook on export
* Add HTML5 uploader
= 5.43 =
* Fix an issue when archiving dynamic files on export
* Support custom upload path for multisites
* Add support for various cache plugins
= 5.42 =
* Catch E_PARSE error on mu-plugins import
* Fix an issue with stop export that doesn't clean up the storage directory
* Initialize new cache instead of flushing the existing one on import/export
= 5.41 =
* Fix an issue when replacing serialized values on import
* List files in chunks
* Convert svg images to png
* Check if backups are readable before displaying them on "Backups" page
* Display version incompatibility notification on export/import/restore screen
* Fix double port issue on Bitnami
* Fix an issue on multisite export with cloud extensions
= 5.40 =
* Test plugin up to WordPress 4.5
= 5.39 =
* Fix a bug in uploads path replacement
= 5.38 =
* Deactivate mu-plugins if fatal error appears on import
= 5.37 =
* Validate the archive before import
= 5.36 =
* Add OneDrive to readme.txt
* Fix a typo on import
= 5.35 =
* Add OneDrive to export/import pages
* Fix a bug when WordPress was used without a db prefix
* Fix a problem when downloading wpress files
* Improve the log system
= 4.19 =
* Fixed an issue with options cache
= 4.18 =
* Fixed an issue with large media files
* Fixed an issue with status file being cached
= 4.17 =
* Set "Tested up to" WordPress 4.4
= 4.16 =
* Fix an issue with the transport layer on export/import
= 4.15 =
* Fix an issue with resovling mechanism on export/import
= 4.14 =
* Fix an issue with database import
= 4.13 =
* Add new mechanism for resolving HTTP requests
= 4.12 =
* Fix an issue with Google Drive extension
= 4.11 =
* Fix content filters on export
= 4.10 =
* Add HTTPS URL replacement
* Fix an issue when PDO is not available
= 4.6 =
* Fix an issue when the plugin was getting stuck on "Done creating an empty archive"
* Fix an issue when the plugin was getting stuck during import
= 4.3 =
* Add URL extension support
* Filter "mu-plugins" directory if "Do not export plugins (files)" is checked
* Fix utf8mb4 issue
* Fix translation issue
= 4.2 =
* Fix .wpress.bin format
= 4.1 =
* Add port to the host header on export/import
* Rename .wpress file to .wpress.bin file
= 4.0 =
* Fix file permission checks
= 3.9 =
* Fix could not resolve domain name on export/import
= 3.8 =
* Fix undefined method on Backups page if PHP version is < 5.3.6
= 3.7 =
* Add IPv6 support on export/import
= 3.6 =
* Fixed undefined constant warnings
= 3.5 =
* Exclude core plugin and extensions on export if they have custom names
= 3.4 =
* Made export/import processes more reliable
* Allow the plugin to work with non-default name
* Preserve backups during plugin updates
* Improved find & replace functionality on the serialized data
* Removed backup file name restrictions
= 3.3 =
* Fixed a bug when retrieving export/import status progress
* Fixed a bug when database encoding utf8mb4_unicode_ci is not available
= 3.2.2 =
* Fixed plugin incompatibility during export/import that was reporting that the process could not be started
= 3.2.1 =
* Added username/password settings for WordPress sites behind HTTP basic authentication
* Fixed a bug when exporting/importing without public DNS record
* Fixed a bug when exporting/importing media files
= 3.2.0 =
* Added advanced settings on export page
= 3.1.1 =
* Fixed secret key issue on upgrade of the plugin
= 3.0.0 =
* Added export to File, [Dropbox](https://servmask.com/products/dropbox-extension), [Amazon S3](https://servmask.com/products/amazon-s3-extension), [Google Drive](https://servmask.com/products/google-drive-extension)
* Added import from File, [Dropbox](https://servmask.com/products/dropbox-extension), [Amazon S3](https://servmask.com/products/amazon-s3-extension), [Google Drive](https://servmask.com/products/google-drive-extension)
* Implemented our own archiving format that reduces export and import by a factor of 10
* One-click export with the new simplified export page
* Improved upload functionality with auto-recognizing chunk size on import
* New **Backups** page for storing all WordPress site exports
* Easy restore WordPress site from **Backups** page
* Monitoring availability of the disk space on the server
* Both export and import happen in time chunks of 3 seconds
* Plugin works behind HTTP basic authentication
= 2.0.4 =
* Updated readme to reflect that the plugin is not multisite compatible
= 2.0.3 =
* Fixed a security issue while importing site using regular users
= 2.0.2 =
* Added support for WordPress v4.0
= 2.0.1 =
* Fixed a bug when all user permissions are lost on import
= 2.0.0 =
* Added support for migration of WordPress in Network Mode (Multi Site)
* New improved UI and UX
* New improved language translations on the menu items and help texts
* Better error handling and notifications
* Fixed a bug while exporting comments and associated comments meta data
* Fixed a bug while using find/replace functionality
* Fixed a bug with storage directory permissions and search indexation
= 1.9.2 =
* Added PHP <= v5.2.7 compatibility
= 1.9.1 =
* Fixed an issue with earlier versions of PHP
= 1.9.0 =
* New improved design on the export/import page
* Added an option for gathering user experience statistics
* Added a message box with important notifications about the plugin
* Fixed a bug while exporting database with multiple WordPress sites
* Fixed a bug while exporting database with table constraints
* Fixed a bug with auto recognizing zip archiver
= 1.8.1 =
* Added "Get Support" link in the plugin list page
* Removed "All-in-One WP Migration Beta" link from the readme file
= 1.8.0 =
* Added support for dynamically recognizing Site URL and Home URL on the import page
* Fixed a bug when maximum uploaded size is exceeded
* Fixed a bug while exporting big database tables
= 1.7.2 =
* Added support for automatically switching database adapters for better performance and optimization
* Fixed a bug while using host:port syntax with MySQL PDO
* Fixed a bug while using find/replace functionality
= 1.7.1 =
* Fixed a bug while exporting WordPress plugins directory
= 1.7.0 =
* Added storage layer to avoid permission issues with OS's directory used for temporary storage
* Added additional checks to verify the consistency of the imported archive
* Fixed a bug that caused the database to be exported without data
* Removed unused variables from package.json file
= 1.6.0 =
* Added additional check for directory's permissions
* Added additional check for output buffering when exporting a file
* Fixed a bug when the archive was exported or imported with old version of Zlib library
* Fixed a bug with permalinks and flushing the rules
= 1.5.0 =
* Added support for additional errors and exceptions handling
* Added support for reporting a problem in better and easier way
* Improved support process in ZenDesk system for faster response time
* Fixed typos on the import page. Thanks to Terry Heenan
= 1.4.0 =
* Added a Twitter and Facebook share buttons to the sidebar on import and export pages
= 1.3.1 =
* Fixed a bug when the user was unable to import site archive
* Optimized and speeded up import process
= 1.3.0 =
* Added support for mysql connection to happen over sockets or TCP
* Added support for Windows OS and fully tested the plugin on IIS
* Added support for limited memory_limit - 1MB - The plugin now requires only 1MB to operate properly
* Added support for multisite
* Used mysql_unbuffered_query instead of mysql_query to overcome any memory problems
* Fixed a deprecated warning for mysql_pconnect when php 5.5 and above is used
* Fixed memory_limit problem with PCLZIP library
* Fixed a bug when the archive is exported with zero size when using PCLZIP
* Fixed a bug when the archive was exported broken on some servers
* Fixed a deprecated usage of preg_replace \e in php v5.5 and above
= 1.2.1 =
* Fixed an issue when HTTP Error was shown on some hosts after import, credit to Michael Simon
* Fixed an issue when exporting databases with different prefix than wp_, credit to najtrox
* Fixed an issue when PDO is avalable but mysql driver for PDO is not, credit to Jaydesain69
* Deleted a plugin specific option when uninstalling the plugin (clean after itself)
* Support is done via Zendesk
* Included WP Version and Plugin version in the feedback form
= 1.2.0 =
* Increased upload limit of files from 128MB to 512MB
* Used ZipArchive with fallback to PclZip (a few users notified us that they don't have ZipArchive enabled on their servers)
* Used PDO with fallback to mysql (a few users notified us that they dont have PDO enabled on their servers, mysql is deprecated as of PHP v5.5 but we are supporting PHP v5.2.17)
* Supported PHP v5.2.17 and WordPress v3.3 and above
* Fixed a bug during export that causes plugins to not be exported on some hosts (the problem that you are experiencing)
= 1.1.0 =
* Importing files using chunks to overcome any webserver upload size restriction
* Fixed a bug where HTTP code error was shown to some users
= 1.0.0 =
* Export database as SQL file
* Export media files
* Export themes files
* Export installed plugins
* Unlimited find/replace actions
* Option to exclude spam comments
* Option to apply find/replace to GUIDs
* Option to exclude post revisions
* Option to exclude tables data
lib/model/import/class-ai1wm-import-database.php 0000644 00000132621 14720661726 0015650 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Database {
public static function execute( $params ) {
global $wpdb;
// Skip database import
if ( ! is_file( ai1wm_database_path( $params ) ) ) {
return $params;
}
// Set query offset
if ( isset( $params['query_offset'] ) ) {
$query_offset = (int) $params['query_offset'];
} else {
$query_offset = 0;
}
// Set total queries size
if ( isset( $params['total_queries_size'] ) ) {
$total_queries_size = (int) $params['total_queries_size'];
} else {
$total_queries_size = 1;
}
// Read blogs.json file
$handle = ai1wm_open( ai1wm_blogs_path( $params ), 'r' );
// Parse blogs.json file
$blogs = ai1wm_read( $handle, filesize( ai1wm_blogs_path( $params ) ) );
$blogs = json_decode( $blogs, true );
// Close handle
ai1wm_close( $handle );
// Read package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'r' );
// Parse package.json file
$config = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) );
$config = json_decode( $config, true );
// Close handle
ai1wm_close( $handle );
// What percent of queries have we processed?
$progress = (int) ( ( $query_offset / $total_queries_size ) * 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Restoring database...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
$old_replace_values = $old_replace_raw_values = array();
$new_replace_values = $new_replace_raw_values = array();
// Get Blog URLs
foreach ( $blogs as $blog ) {
// Handle old and new sites dir style
if ( defined( 'UPLOADBLOGSDIR' ) ) {
// Get plain Files Path
if ( ! in_array( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_blog_files_url( $blog['Old']['BlogID'] );
$new_replace_values[] = ai1wm_blog_files_url( $blog['New']['BlogID'] );
}
// Get URL encoded Files Path
if ( ! in_array( urlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = urlencode( ai1wm_blog_files_url( $blog['New']['BlogID'] ) );
}
// Get URL raw encoded Files Path
if ( ! in_array( rawurlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = rawurlencode( ai1wm_blog_files_url( $blog['New']['BlogID'] ) );
}
// Get JSON escaped Files Path
if ( ! in_array( addcslashes( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_blog_files_url( $blog['New']['BlogID'] ), '/' );
}
// Get plain Sites Path
if ( ! in_array( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_blog_sites_url( $blog['Old']['BlogID'] );
$new_replace_values[] = ai1wm_blog_files_url( $blog['New']['BlogID'] );
}
// Get URL encoded Sites Path
if ( ! in_array( urlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = urlencode( ai1wm_blog_files_url( $blog['New']['BlogID'] ) );
}
// Get URL raw encoded Sites Path
if ( ! in_array( rawurlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = rawurlencode( ai1wm_blog_files_url( $blog['New']['BlogID'] ) );
}
// Get JSON escaped Sites Path
if ( ! in_array( addcslashes( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_blog_files_url( $blog['New']['BlogID'] ), '/' );
}
} else {
// Get plain Files Path
if ( ! in_array( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_blog_files_url( $blog['Old']['BlogID'] );
$new_replace_values[] = ai1wm_blog_uploads_url( $blog['New']['BlogID'] );
}
// Get URL encoded Files Path
if ( ! in_array( urlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = urlencode( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ) );
}
// Get URL raw encoded Files Path
if ( ! in_array( rawurlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_blog_files_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = rawurlencode( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ) );
}
// Get JSON escaped Files Path
if ( ! in_array( addcslashes( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_blog_files_url( $blog['Old']['BlogID'] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ), '/' );
}
// Get plain Sites Path
if ( ! in_array( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_blog_sites_url( $blog['Old']['BlogID'] );
$new_replace_values[] = ai1wm_blog_uploads_url( $blog['New']['BlogID'] );
}
// Get URL encoded Sites Path
if ( ! in_array( urlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = urlencode( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ) );
}
// Get URL raw encoded Sites Path
if ( ! in_array( rawurlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ) );
$new_replace_values[] = rawurlencode( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ) );
}
// Get JSON escaped Sites Path
if ( ! in_array( addcslashes( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_blog_sites_url( $blog['Old']['BlogID'] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_blog_uploads_url( $blog['New']['BlogID'] ), '/' );
}
}
$site_urls = array();
// Add Site URL
if ( ! empty( $blog['Old']['SiteURL'] ) ) {
$site_urls[] = $blog['Old']['SiteURL'];
}
// Add Internal Site URL
if ( ! empty( $blog['Old']['InternalSiteURL'] ) ) {
if ( parse_url( $blog['Old']['InternalSiteURL'], PHP_URL_SCHEME ) && parse_url( $blog['Old']['InternalSiteURL'], PHP_URL_HOST ) ) {
$site_urls[] = $blog['Old']['InternalSiteURL'];
}
}
// Get Site URL
foreach ( $site_urls as $site_url ) {
// Get www URL
if ( stripos( $site_url, '//www.' ) !== false ) {
$site_url_www_inversion = str_ireplace( '//www.', '//', $site_url );
} else {
$site_url_www_inversion = str_ireplace( '//', '//www.', $site_url );
}
// Replace Site URL
foreach ( array( $site_url, $site_url_www_inversion ) as $url ) {
// Get domain
$old_domain = parse_url( $url, PHP_URL_HOST );
$new_domain = parse_url( $blog['New']['SiteURL'], PHP_URL_HOST );
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( $blog['New']['SiteURL'], PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( $blog['New']['SiteURL'], PHP_URL_SCHEME );
// Add domain and path
if ( ! in_array( sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) ), $old_replace_raw_values ) ) {
$old_replace_raw_values[] = sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) );
$new_replace_raw_values[] = sprintf( "'%s','%s'", $new_domain, trailingslashit( $new_path ) );
}
// Add domain and path with single quote
if ( ! in_array( sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s%s", $new_domain, untrailingslashit( $new_path ) );
}
// Add domain and path with double quote
if ( ! in_array( sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s%s', $new_domain, untrailingslashit( $new_path ) );
}
// Add Site URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Site URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Handle old and new sites dir style
if ( ! defined( 'UPLOADBLOGSDIR' ) ) {
// Add plain Uploads URL
if ( ! in_array( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] );
}
// Add URL encoded Uploads URL
if ( ! in_array( urlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add URL raw encoded Uploads URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add JSON escaped Uploads URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ), '/' );
}
}
// Add plain Site URL
if ( ! in_array( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( untrailingslashit( $blog['New']['SiteURL'] ), $new_schemes[ $i ] );
}
// Add URL encoded Site URL
if ( ! in_array( urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $blog['New']['SiteURL'] ), $new_schemes[ $i ] ) );
}
// Add URL raw encoded Site URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $blog['New']['SiteURL'] ), $new_schemes[ $i ] ) );
}
// Add JSON escaped Site URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $blog['New']['SiteURL'] ), $new_schemes[ $i ] ), '/' );
}
}
// Add email
if ( ! isset( $config['NoEmailReplace'] ) ) {
if ( ! in_array( sprintf( '@%s', $old_domain ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '@%s', $old_domain );
$new_replace_values[] = str_ireplace( '@www.', '@', sprintf( '@%s', $new_domain ) );
}
}
}
}
$home_urls = array();
// Add Home URL
if ( ! empty( $blog['Old']['HomeURL'] ) ) {
$home_urls[] = $blog['Old']['HomeURL'];
}
// Add Internal Home URL
if ( ! empty( $blog['Old']['InternalHomeURL'] ) ) {
if ( parse_url( $blog['Old']['InternalHomeURL'], PHP_URL_SCHEME ) && parse_url( $blog['Old']['InternalHomeURL'], PHP_URL_HOST ) ) {
$home_urls[] = $blog['Old']['InternalHomeURL'];
}
}
// Get Home URL
foreach ( $home_urls as $home_url ) {
// Get www URL
if ( stripos( $home_url, '//www.' ) !== false ) {
$home_url_www_inversion = str_ireplace( '//www.', '//', $home_url );
} else {
$home_url_www_inversion = str_ireplace( '//', '//www.', $home_url );
}
// Replace Home URL
foreach ( array( $home_url, $home_url_www_inversion ) as $url ) {
// Get domain
$old_domain = parse_url( $url, PHP_URL_HOST );
$new_domain = parse_url( $blog['New']['HomeURL'], PHP_URL_HOST );
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( $blog['New']['HomeURL'], PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( $blog['New']['HomeURL'], PHP_URL_SCHEME );
// Add domain and path
if ( ! in_array( sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) ), $old_replace_raw_values ) ) {
$old_replace_raw_values[] = sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) );
$new_replace_raw_values[] = sprintf( "'%s','%s'", $new_domain, trailingslashit( $new_path ) );
}
// Add domain and path with single quote
if ( ! in_array( sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s%s", $new_domain, untrailingslashit( $new_path ) );
}
// Add domain and path with double quote
if ( ! in_array( sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s%s', $new_domain, untrailingslashit( $new_path ) );
}
// Set Home URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Home URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Handle old and new sites dir style
if ( ! defined( 'UPLOADBLOGSDIR' ) ) {
// Add plain Uploads URL
if ( ! in_array( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] );
}
// Add URL encoded Uploads URL
if ( ! in_array( urlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add URL raw encoded Uploads URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add JSON escaped Uploads URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( sprintf( '%s/files/', untrailingslashit( $url ) ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ), '/' );
}
}
// Add plain Home URL
if ( ! in_array( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( untrailingslashit( $blog['New']['HomeURL'] ), $new_schemes[ $i ] );
}
// Add URL encoded Home URL
if ( ! in_array( urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $blog['New']['HomeURL'] ), $new_schemes[ $i ] ) );
}
// Add URL raw encoded Home URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $blog['New']['HomeURL'] ), $new_schemes[ $i ] ) );
}
// Add JSON escaped Home URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $blog['New']['HomeURL'] ), $new_schemes[ $i ] ), '/' );
}
}
// Add email
if ( ! isset( $config['NoEmailReplace'] ) ) {
if ( ! in_array( sprintf( '@%s', $old_domain ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '@%s', $old_domain );
$new_replace_values[] = str_ireplace( '@www.', '@', sprintf( '@%s', $new_domain ) );
}
}
}
}
$uploads_urls = array();
// Add Uploads URL
if ( ! empty( $blog['Old']['WordPress']['UploadsURL'] ) ) {
$uploads_urls[] = $blog['Old']['WordPress']['UploadsURL'];
}
// Get Uploads URL
foreach ( $uploads_urls as $uploads_url ) {
// Get www URL
if ( stripos( $uploads_url, '//www.' ) !== false ) {
$uploads_url_www_inversion = str_ireplace( '//www.', '//', $uploads_url );
} else {
$uploads_url_www_inversion = str_ireplace( '//', '//www.', $uploads_url );
}
// Replace Uploads URL
foreach ( array( $uploads_url, $uploads_url_www_inversion ) as $url ) {
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( $blog['New']['WordPress']['UploadsURL'], PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( $blog['New']['WordPress']['UploadsURL'], PHP_URL_SCHEME );
// Replace Uploads URL Path
if ( basename( $old_path ) ) {
// Add path with single quote
if ( ! in_array( sprintf( "='%s", trailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s", trailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s", trailingslashit( $new_path ) );
}
// Add path with double quote
if ( ! in_array( sprintf( '="%s', trailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s', trailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s', trailingslashit( $new_path ) );
}
}
// Set Uploads URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Uploads URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Add plain Uploads URL
if ( ! in_array( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( $url, $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] );
}
// Add URL encoded Uploads URL
if ( ! in_array( urlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add URL raw encoded Uploads URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ) );
}
// Add JSON escaped Uploads URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( $blog['New']['WordPress']['UploadsURL'], $new_schemes[ $i ] ), '/' );
}
}
}
}
}
// Get plain Sites Path
if ( ! in_array( ai1wm_blog_sites_url(), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_blog_sites_url();
$new_replace_values[] = ai1wm_blog_uploads_url();
}
// Get URL encoded Sites Path
if ( ! in_array( urlencode( ai1wm_blog_sites_url() ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_blog_sites_url() );
$new_replace_values[] = urlencode( ai1wm_blog_uploads_url() );
}
// Get URL raw encoded Sites Path
if ( ! in_array( rawurlencode( ai1wm_blog_sites_url() ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_blog_sites_url() );
$new_replace_values[] = rawurlencode( ai1wm_blog_uploads_url() );
}
// Get JSON escaped Sites Path
if ( ! in_array( addcslashes( ai1wm_blog_sites_url(), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_blog_sites_url(), '/' );
$new_replace_values[] = addcslashes( ai1wm_blog_uploads_url(), '/' );
}
$site_urls = array();
// Add Site URL
if ( ! empty( $config['SiteURL'] ) ) {
$site_urls[] = $config['SiteURL'];
}
// Add Internal Site URL
if ( ! empty( $config['InternalSiteURL'] ) ) {
if ( parse_url( $config['InternalSiteURL'], PHP_URL_SCHEME ) && parse_url( $config['InternalSiteURL'], PHP_URL_HOST ) ) {
$site_urls[] = $config['InternalSiteURL'];
}
}
// Get Site URL
foreach ( $site_urls as $site_url ) {
// Get www URL
if ( stripos( $site_url, '//www.' ) !== false ) {
$site_url_www_inversion = str_ireplace( '//www.', '//', $site_url );
} else {
$site_url_www_inversion = str_ireplace( '//', '//www.', $site_url );
}
// Replace Site URL
foreach ( array( $site_url, $site_url_www_inversion ) as $url ) {
// Get domain
$old_domain = parse_url( $url, PHP_URL_HOST );
$new_domain = parse_url( site_url(), PHP_URL_HOST );
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( site_url(), PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( site_url(), PHP_URL_SCHEME );
// Add domain and path
if ( ! in_array( sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) ), $old_replace_raw_values ) ) {
$old_replace_raw_values[] = sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) );
$new_replace_raw_values[] = sprintf( "'%s','%s'", $new_domain, trailingslashit( $new_path ) );
}
// Add domain and path with single quote
if ( ! in_array( sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s%s", $new_domain, untrailingslashit( $new_path ) );
}
// Add domain and path with double quote
if ( ! in_array( sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s%s', $new_domain, untrailingslashit( $new_path ) );
}
// Set Site URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Site URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Add plain Site URL
if ( ! in_array( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( untrailingslashit( site_url() ), $new_schemes[ $i ] );
}
// Add URL encoded Site URL
if ( ! in_array( urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( site_url() ), $new_schemes[ $i ] ) );
}
// Add URL raw encoded Site URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( site_url() ), $new_schemes[ $i ] ) );
}
// Add JSON escaped Site URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( site_url() ), $new_schemes[ $i ] ), '/' );
}
}
// Add email
if ( ! isset( $config['NoEmailReplace'] ) ) {
if ( ! in_array( sprintf( '@%s', $old_domain ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '@%s', $old_domain );
$new_replace_values[] = str_ireplace( '@www.', '@', sprintf( '@%s', $new_domain ) );
}
}
}
}
$home_urls = array();
// Add Home URL
if ( ! empty( $config['HomeURL'] ) ) {
$home_urls[] = $config['HomeURL'];
}
// Add Internal Home URL
if ( ! empty( $config['InternalHomeURL'] ) ) {
if ( parse_url( $config['InternalHomeURL'], PHP_URL_SCHEME ) && parse_url( $config['InternalHomeURL'], PHP_URL_HOST ) ) {
$home_urls[] = $config['InternalHomeURL'];
}
}
// Get Home URL
foreach ( $home_urls as $home_url ) {
// Get www URL
if ( stripos( $home_url, '//www.' ) !== false ) {
$home_url_www_inversion = str_ireplace( '//www.', '//', $home_url );
} else {
$home_url_www_inversion = str_ireplace( '//', '//www.', $home_url );
}
// Replace Home URL
foreach ( array( $home_url, $home_url_www_inversion ) as $url ) {
// Get domain
$old_domain = parse_url( $url, PHP_URL_HOST );
$new_domain = parse_url( home_url(), PHP_URL_HOST );
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( home_url(), PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( home_url(), PHP_URL_SCHEME );
// Add domain and path
if ( ! in_array( sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) ), $old_replace_raw_values ) ) {
$old_replace_raw_values[] = sprintf( "'%s','%s'", $old_domain, trailingslashit( $old_path ) );
$new_replace_raw_values[] = sprintf( "'%s','%s'", $new_domain, trailingslashit( $new_path ) );
}
// Add domain and path with single quote
if ( ! in_array( sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s%s", $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s%s", $new_domain, untrailingslashit( $new_path ) );
}
// Add domain and path with double quote
if ( ! in_array( sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s%s', $old_domain, untrailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s%s', $new_domain, untrailingslashit( $new_path ) );
}
// Add Home URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Home URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Add plain Home URL
if ( ! in_array( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( untrailingslashit( home_url() ), $new_schemes[ $i ] );
}
// Add URL encoded Home URL
if ( ! in_array( urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( untrailingslashit( home_url() ), $new_schemes[ $i ] ) );
}
// Add URL raw encoded Home URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( untrailingslashit( home_url() ), $new_schemes[ $i ] ) );
}
// Add JSON escaped Home URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( $url ), $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( untrailingslashit( home_url() ), $new_schemes[ $i ] ), '/' );
}
}
// Add email
if ( ! isset( $config['NoEmailReplace'] ) ) {
if ( ! in_array( sprintf( '@%s', $old_domain ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '@%s', $old_domain );
$new_replace_values[] = str_ireplace( '@www.', '@', sprintf( '@%s', $new_domain ) );
}
}
}
}
$uploads_urls = array();
// Add Uploads URL
if ( ! empty( $config['WordPress']['UploadsURL'] ) ) {
$uploads_urls[] = $config['WordPress']['UploadsURL'];
}
// Get Uploads URL
foreach ( $uploads_urls as $uploads_url ) {
// Get www URL
if ( stripos( $uploads_url, '//www.' ) !== false ) {
$uploads_url_www_inversion = str_ireplace( '//www.', '//', $uploads_url );
} else {
$uploads_url_www_inversion = str_ireplace( '//', '//www.', $uploads_url );
}
// Replace Uploads URL
foreach ( array( $uploads_url, $uploads_url_www_inversion ) as $url ) {
// Get path
$old_path = (string) parse_url( $url, PHP_URL_PATH );
$new_path = (string) parse_url( ai1wm_get_uploads_url(), PHP_URL_PATH );
// Get scheme
$new_scheme = parse_url( ai1wm_get_uploads_url(), PHP_URL_SCHEME );
// Replace Uploads URL Path
if ( basename( $old_path ) ) {
// Add path with single quote
if ( ! in_array( sprintf( "='%s", trailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( "='%s", trailingslashit( $old_path ) );
$new_replace_values[] = sprintf( "='%s", trailingslashit( $new_path ) );
}
// Add path with double quote
if ( ! in_array( sprintf( '="%s', trailingslashit( $old_path ) ), $old_replace_values ) ) {
$old_replace_values[] = sprintf( '="%s', trailingslashit( $old_path ) );
$new_replace_values[] = sprintf( '="%s', trailingslashit( $new_path ) );
}
}
// Add Uploads URL scheme
$old_schemes = array( 'http', 'https', '' );
$new_schemes = array( $new_scheme, $new_scheme, '' );
// Replace Uploads URL scheme
for ( $i = 0; $i < count( $old_schemes ); $i++ ) {
// Add plain Uploads URL
if ( ! in_array( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = ai1wm_url_scheme( $url, $old_schemes[ $i ] );
$new_replace_values[] = ai1wm_url_scheme( ai1wm_get_uploads_url(), $new_schemes[ $i ] );
}
// Add URL encoded Uploads URL
if ( ! in_array( urlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) );
$new_replace_values[] = urlencode( ai1wm_url_scheme( ai1wm_get_uploads_url(), $new_schemes[ $i ] ) );
}
// Add URL raw encoded Uploads URL
if ( ! in_array( rawurlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( ai1wm_url_scheme( $url, $old_schemes[ $i ] ) );
$new_replace_values[] = rawurlencode( ai1wm_url_scheme( ai1wm_get_uploads_url(), $new_schemes[ $i ] ) );
}
// Add JSON escaped Uploads URL
if ( ! in_array( addcslashes( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( ai1wm_url_scheme( $url, $old_schemes[ $i ] ), '/' );
$new_replace_values[] = addcslashes( ai1wm_url_scheme( ai1wm_get_uploads_url(), $new_schemes[ $i ] ), '/' );
}
}
}
}
// Get WordPress Content Dir
if ( isset( $config['WordPress']['Content'] ) && ( $content_dir = $config['WordPress']['Content'] ) ) {
// Add plain WordPress Content
if ( ! in_array( $content_dir, $old_replace_values ) ) {
$old_replace_values[] = $content_dir;
$new_replace_values[] = WP_CONTENT_DIR;
}
// Add URL encoded WordPress Content
if ( ! in_array( urlencode( $content_dir ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( $content_dir );
$new_replace_values[] = urlencode( WP_CONTENT_DIR );
}
// Add URL raw encoded WordPress Content
if ( ! in_array( rawurlencode( $content_dir ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( $content_dir );
$new_replace_values[] = rawurlencode( WP_CONTENT_DIR );
}
// Add JSON escaped WordPress Content
if ( ! in_array( addcslashes( $content_dir, '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( $content_dir, '/' );
$new_replace_values[] = addcslashes( WP_CONTENT_DIR, '/' );
}
}
// Get replace old and new values
if ( isset( $config['Replace'] ) && ( $replace = $config['Replace'] ) ) {
for ( $i = 0; $i < count( $replace['OldValues'] ); $i++ ) {
if ( ! empty( $replace['OldValues'][ $i ] ) && ! empty( $replace['NewValues'][ $i ] ) ) {
// Add plain replace values
if ( ! in_array( $replace['OldValues'][ $i ], $old_replace_values ) ) {
$old_replace_values[] = $replace['OldValues'][ $i ];
$new_replace_values[] = $replace['NewValues'][ $i ];
}
// Add URL encoded replace values
if ( ! in_array( urlencode( $replace['OldValues'][ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = urlencode( $replace['OldValues'][ $i ] );
$new_replace_values[] = urlencode( $replace['NewValues'][ $i ] );
}
// Add URL raw encoded replace values
if ( ! in_array( rawurlencode( $replace['OldValues'][ $i ] ), $old_replace_values ) ) {
$old_replace_values[] = rawurlencode( $replace['OldValues'][ $i ] );
$new_replace_values[] = rawurlencode( $replace['NewValues'][ $i ] );
}
// Add JSON Escaped replace values
if ( ! in_array( addcslashes( $replace['OldValues'][ $i ], '/' ), $old_replace_values ) ) {
$old_replace_values[] = addcslashes( $replace['OldValues'][ $i ], '/' );
$new_replace_values[] = addcslashes( $replace['NewValues'][ $i ], '/' );
}
}
}
}
// Get site URL
$site_url = get_option( AI1WM_SITE_URL );
// Get home URL
$home_url = get_option( AI1WM_HOME_URL );
// Get secret key
$secret_key = get_option( AI1WM_SECRET_KEY );
// Get HTTP user
$auth_user = get_option( AI1WM_AUTH_USER );
// Get HTTP password
$auth_password = get_option( AI1WM_AUTH_PASSWORD );
// Get auth header
$auth_header = get_option( AI1WM_AUTH_HEADER );
// Get Uploads Path
$uploads_path = get_option( AI1WM_UPLOADS_PATH );
// Get Uploads URL Path
$uploads_url_path = get_option( AI1WM_UPLOADS_URL_PATH );
// Get backups labels
$backups_labels = get_option( AI1WM_BACKUPS_LABELS, array() );
// Get sites links
$sites_links = get_option( AI1WM_SITES_LINKS, array() );
$old_table_prefixes = array();
$new_table_prefixes = array();
// Set site table prefixes
foreach ( $blogs as $blog ) {
if ( ai1wm_is_mainsite( $blog['Old']['BlogID'] ) === false ) {
$old_table_prefixes[] = ai1wm_servmask_prefix( $blog['Old']['BlogID'] );
$new_table_prefixes[] = ai1wm_table_prefix( $blog['New']['BlogID'] );
}
}
// Set global table prefixes
foreach ( $wpdb->global_tables as $table_name ) {
$old_table_prefixes[] = ai1wm_servmask_prefix( 'mainsite' ) . $table_name;
$new_table_prefixes[] = ai1wm_table_prefix() . $table_name;
}
// Set BuddyPress table prefixes
if ( ai1wm_validate_plugin_basename( 'buddyboss-platform/bp-loader.php' ) || ai1wm_validate_plugin_basename( 'buddypress/bp-loader.php' ) ) {
foreach ( array( 'signups', 'bp_activity', 'bp_activity_meta', 'bp_friends', 'bp_groups', 'bp_groups_groupmeta', 'bp_groups_members', 'bp_invitations', 'bp_messages_messages', 'bp_messages_meta', 'bp_messages_notices', 'bp_messages_recipients', 'bp_notifications', 'bp_notifications_meta', 'bp_optouts', 'bp_user_blogs', 'bp_user_blogs_blogmeta', 'bp_xprofile_data', 'bp_xprofile_fields', 'bp_xprofile_groups', 'bp_xprofile_meta' ) as $table_name ) {
$old_table_prefixes[] = ai1wm_servmask_prefix( 'mainsite' ) . $table_name;
$new_table_prefixes[] = ai1wm_table_prefix() . $table_name;
}
}
// Set base table prefixes
foreach ( $blogs as $blog ) {
if ( ai1wm_is_mainsite( $blog['Old']['BlogID'] ) === true ) {
$old_table_prefixes[] = ai1wm_servmask_prefix( 'basesite' );
$new_table_prefixes[] = ai1wm_table_prefix( $blog['New']['BlogID'] );
}
}
// Set main table prefixes
foreach ( $blogs as $blog ) {
if ( ai1wm_is_mainsite( $blog['Old']['BlogID'] ) === true ) {
$old_table_prefixes[] = ai1wm_servmask_prefix( $blog['Old']['BlogID'] );
$new_table_prefixes[] = ai1wm_table_prefix( $blog['New']['BlogID'] );
}
}
// Set table prefixes
$old_table_prefixes[] = ai1wm_servmask_prefix();
$new_table_prefixes[] = ai1wm_table_prefix();
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
// Set database options
$db_client->set_old_table_prefixes( $old_table_prefixes )
->set_new_table_prefixes( $new_table_prefixes )
->set_old_replace_values( $old_replace_values )
->set_new_replace_values( $new_replace_values )
->set_old_replace_raw_values( $old_replace_raw_values )
->set_new_replace_raw_values( $new_replace_raw_values );
// Set atomic tables (do not stop current request for all listed tables if timeout has been exceeded)
$db_client->set_atomic_tables( array( ai1wm_table_prefix() . 'options' ) );
// Set empty tables (do not populate current data for all listed tables)
$db_client->set_empty_tables( array( ai1wm_table_prefix() . 'eum_logs' ) );
// Set Visual Composer
$db_client->set_visual_composer( ai1wm_validate_plugin_basename( 'js_composer/js_composer.php' ) );
// Set Oxygen Builder
$db_client->set_oxygen_builder( ai1wm_validate_plugin_basename( 'oxygen/functions.php' ) );
// Set Optimize Press
$db_client->set_optimize_press( ai1wm_validate_plugin_basename( 'optimizePressPlugin/optimizepress.php' ) );
// Set Avada Fusion Builder
$db_client->set_avada_fusion_builder( ai1wm_validate_plugin_basename( 'fusion-builder/fusion-builder.php' ) );
// Set BeTheme Responsive
$db_client->set_betheme_responsive( ai1wm_validate_theme_basename( 'betheme/style.css' ) );
// Import database
if ( $db_client->import( ai1wm_database_path( $params ), $query_offset ) ) {
// Set progress
Ai1wm_Status::info( __( 'Done restoring database.', AI1WM_PLUGIN_NAME ) );
// Unset query offset
unset( $params['query_offset'] );
// Unset total queries size
unset( $params['total_queries_size'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Get total queries size
$total_queries_size = ai1wm_database_bytes( $params );
// What percent of queries have we processed?
$progress = (int) ( ( $query_offset / $total_queries_size ) * 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Restoring database...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Set query offset
$params['query_offset'] = $query_offset;
// Set total queries size
$params['total_queries_size'] = $total_queries_size;
// Set completed flag
$params['completed'] = false;
}
// Flush WP cache
ai1wm_cache_flush();
// Reset active plugins
update_option( AI1WM_ACTIVE_PLUGINS, array() );
// Activate plugins
ai1wm_activate_plugins( ai1wm_active_servmask_plugins() );
// Set the new site URL
update_option( AI1WM_SITE_URL, $site_url );
// Set the new home URL
update_option( AI1WM_HOME_URL, $home_url );
// Set the new secret key value
update_option( AI1WM_SECRET_KEY, $secret_key );
// Set the new HTTP user
update_option( AI1WM_AUTH_USER, $auth_user );
// Set the new HTTP password
update_option( AI1WM_AUTH_PASSWORD, $auth_password );
// Set the new auth header
update_option( AI1WM_AUTH_HEADER, $auth_header );
// Set the new Uploads Path
update_option( AI1WM_UPLOADS_PATH, $uploads_path );
// Set the new Uploads URL Path
update_option( AI1WM_UPLOADS_URL_PATH, $uploads_url_path );
// Set the new backups labels
update_option( AI1WM_BACKUPS_LABELS, $backups_labels );
// Set the new sites links
update_option( AI1WM_SITES_LINKS, $sites_links );
// Set new backups path
update_option( AI1WM_BACKUPS_PATH_OPTION, AI1WM_BACKUPS_PATH );
return $params;
}
}
lib/model/import/class-ai1wm-import-validate.php 0000644 00000014431 14720661726 0015673 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Validate {
public static function execute( $params ) {
// Verify file if size > 2GB and PHP = 32-bit
if ( ! ai1wm_is_filesize_supported( ai1wm_archive_path( $params ) ) ) {
throw new Ai1wm_Import_Exception(
__(
'Your PHP is 32-bit. In order to import your file, please change your PHP version to 64-bit and try again. ' .
'Technical details',
AI1WM_PLUGIN_NAME
)
);
}
// Verify file name extension
if ( ! ai1wm_is_filename_supported( ai1wm_archive_path( $params ) ) ) {
throw new Ai1wm_Import_Exception(
__(
'The file type that you have tried to import is not compatible with this plugin. ' .
'Please ensure that your file is a .wpress file that was created with the All-in-One WP migration plugin. ' .
'Technical details',
AI1WM_PLUGIN_NAME
)
);
}
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = 0;
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Get total archive size
if ( isset( $params['total_archive_size'] ) ) {
$total_archive_size = (int) $params['total_archive_size'];
} else {
$total_archive_size = ai1wm_archive_bytes( $params );
}
// What percent of archive have we processed?
$progress = (int) min( ( $archive_bytes_offset / $total_archive_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Unpacking archive...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Open the archive file for reading
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Validate the archive file consistency
if ( ! $archive->is_valid() ) {
throw new Ai1wm_Import_Exception( __( 'The archive file is corrupted. Follow this article to resolve the problem.', AI1WM_PLUGIN_NAME ) );
}
// Flag to hold if file data has been processed
$completed = true;
if ( $archive->has_not_reached_eof() ) {
$file_bytes_written = 0;
// Unpack package.json, multisite.json and database.sql files
if ( ( $completed = $archive->extract_by_files_array( ai1wm_storage_path( $params ), array( AI1WM_PACKAGE_NAME, AI1WM_MULTISITE_NAME, AI1WM_DATABASE_NAME ), array(), array(), $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
}
// End of the archive?
if ( $archive->has_reached_eof() ) {
// Check package.json file
if ( false === is_file( ai1wm_package_path( $params ) ) ) {
throw new Ai1wm_Import_Exception( __( 'Please make sure that your file was exported using All-in-One WP Migration plugin. Technical details', AI1WM_PLUGIN_NAME ) );
}
// Set progress
Ai1wm_Status::info( __( 'Done unpacking archive.', AI1WM_PLUGIN_NAME ) );
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset total archive size
unset( $params['total_archive_size'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// What percent of archive have we processed?
$progress = (int) min( ( $archive_bytes_offset / $total_archive_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Unpacking archive...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set total archive size
$params['total_archive_size'] = $total_archive_size;
// Set completed flag
$params['completed'] = $completed;
}
// Close the archive file
$archive->close();
return $params;
}
}
lib/model/import/class-ai1wm-import-done.php 0000644 00000051530 14720661726 0015030 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Done {
public static function execute( $params ) {
global $wp_rewrite;
// Check multisite.json file
if ( is_file( ai1wm_multisite_path( $params ) ) ) {
// Read multisite.json file
$handle = ai1wm_open( ai1wm_multisite_path( $params ), 'r' );
// Parse multisite.json file
$multisite = ai1wm_read( $handle, filesize( ai1wm_multisite_path( $params ) ) );
$multisite = json_decode( $multisite, true );
// Close handle
ai1wm_close( $handle );
// Activate WordPress plugins
if ( isset( $multisite['Plugins'] ) && ( $plugins = $multisite['Plugins'] ) ) {
ai1wm_activate_plugins( $plugins );
}
// Deactivate WordPress SSL plugins
if ( ! is_ssl() ) {
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'really-simple-ssl/rlrsssl-really-simple-ssl.php' ),
ai1wm_discover_plugin_basename( 'wordpress-https/wordpress-https.php' ),
ai1wm_discover_plugin_basename( 'wp-force-ssl/wp-force-ssl.php' ),
ai1wm_discover_plugin_basename( 'force-https-littlebizzy/force-https.php' ),
)
);
ai1wm_woocommerce_force_ssl( false );
}
// Deactivate WordPress plugins
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'invisible-recaptcha/invisible-recaptcha.php' ),
ai1wm_discover_plugin_basename( 'wps-hide-login/wps-hide-login.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wp/index.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wordpress/index.php' ),
ai1wm_discover_plugin_basename( 'mycustomwidget/my_custom_widget.php' ),
ai1wm_discover_plugin_basename( 'lockdown-wp-admin/lockdown-wp-admin.php' ),
ai1wm_discover_plugin_basename( 'rename-wp-login/rename-wp-login.php' ),
ai1wm_discover_plugin_basename( 'wp-simple-firewall/icwp-wpsf.php' ),
ai1wm_discover_plugin_basename( 'join-my-multisite/joinmymultisite.php' ),
ai1wm_discover_plugin_basename( 'multisite-clone-duplicator/multisite-clone-duplicator.php' ),
ai1wm_discover_plugin_basename( 'wordpress-mu-domain-mapping/domain_mapping.php' ),
ai1wm_discover_plugin_basename( 'wordpress-starter/siteground-wizard.php' ),
ai1wm_discover_plugin_basename( 'pro-sites/pro-sites.php' ),
ai1wm_discover_plugin_basename( 'wpide/WPide.php' ),
ai1wm_discover_plugin_basename( 'page-optimize/page-optimize.php' ),
ai1wm_discover_plugin_basename( 'update-services/update-services.php' ),
)
);
// Deactivate Swift Optimizer rules
ai1wm_deactivate_swift_optimizer_rules(
array(
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration/all-in-one-wp-migration.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-azure-storage-extension/all-in-one-wp-migration-azure-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-b2-extension/all-in-one-wp-migration-b2-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-backup/all-in-one-wp-migration-backup.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-box-extension/all-in-one-wp-migration-box-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-digitalocean-extension/all-in-one-wp-migration-digitalocean-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-direct-extension/all-in-one-wp-migration-direct-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-dropbox-extension/all-in-one-wp-migration-dropbox-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-file-extension/all-in-one-wp-migration-file-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-ftp-extension/all-in-one-wp-migration-ftp-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gcloud-storage-extension/all-in-one-wp-migration-gcloud-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gdrive-extension/all-in-one-wp-migration-gdrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-glacier-extension/all-in-one-wp-migration-glacier-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-mega-extension/all-in-one-wp-migration-mega-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-multisite-extension/all-in-one-wp-migration-multisite-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-onedrive-extension/all-in-one-wp-migration-onedrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pcloud-extension/all-in-one-wp-migration-pcloud-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pro/all-in-one-wp-migration-pro.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-client-extension/all-in-one-wp-migration-s3-client-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-extension/all-in-one-wp-migration-s3-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-unlimited-extension/all-in-one-wp-migration-unlimited-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-url-extension/all-in-one-wp-migration-url-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-webdav-extension/all-in-one-wp-migration-webdav-extension.php' ),
)
);
// Deactivate Revolution Slider
ai1wm_deactivate_revolution_slider( ai1wm_discover_plugin_basename( 'revslider/revslider.php' ) );
// Deactivate Jetpack modules
ai1wm_deactivate_jetpack_modules( array( 'photon', 'sso' ) );
// Flush Elementor cache
ai1wm_elementor_cache_flush();
// Initial DB version
ai1wm_initial_db_version();
} else {
// Check package.json file
if ( is_file( ai1wm_package_path( $params ) ) ) {
// Read package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'r' );
// Parse package.json file
$package = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) );
$package = json_decode( $package, true );
// Close handle
ai1wm_close( $handle );
// Activate WordPress plugins
if ( isset( $package['Plugins'] ) && ( $plugins = $package['Plugins'] ) ) {
ai1wm_activate_plugins( $plugins );
}
// Activate WordPress template
if ( isset( $package['Template'] ) && ( $template = $package['Template'] ) ) {
ai1wm_activate_template( $template );
}
// Activate WordPress stylesheet
if ( isset( $package['Stylesheet'] ) && ( $stylesheet = $package['Stylesheet'] ) ) {
ai1wm_activate_stylesheet( $stylesheet );
}
// Deactivate WordPress SSL plugins
if ( ! is_ssl() ) {
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'really-simple-ssl/rlrsssl-really-simple-ssl.php' ),
ai1wm_discover_plugin_basename( 'wordpress-https/wordpress-https.php' ),
ai1wm_discover_plugin_basename( 'wp-force-ssl/wp-force-ssl.php' ),
ai1wm_discover_plugin_basename( 'force-https-littlebizzy/force-https.php' ),
)
);
ai1wm_woocommerce_force_ssl( false );
}
// Deactivate WordPress plugins
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'invisible-recaptcha/invisible-recaptcha.php' ),
ai1wm_discover_plugin_basename( 'wps-hide-login/wps-hide-login.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wp/index.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wordpress/index.php' ),
ai1wm_discover_plugin_basename( 'mycustomwidget/my_custom_widget.php' ),
ai1wm_discover_plugin_basename( 'lockdown-wp-admin/lockdown-wp-admin.php' ),
ai1wm_discover_plugin_basename( 'rename-wp-login/rename-wp-login.php' ),
ai1wm_discover_plugin_basename( 'wp-simple-firewall/icwp-wpsf.php' ),
ai1wm_discover_plugin_basename( 'join-my-multisite/joinmymultisite.php' ),
ai1wm_discover_plugin_basename( 'multisite-clone-duplicator/multisite-clone-duplicator.php' ),
ai1wm_discover_plugin_basename( 'wordpress-mu-domain-mapping/domain_mapping.php' ),
ai1wm_discover_plugin_basename( 'wordpress-starter/siteground-wizard.php' ),
ai1wm_discover_plugin_basename( 'pro-sites/pro-sites.php' ),
ai1wm_discover_plugin_basename( 'wpide/WPide.php' ),
ai1wm_discover_plugin_basename( 'page-optimize/page-optimize.php' ),
ai1wm_discover_plugin_basename( 'update-services/update-services.php' ),
)
);
// Deactivate Swift Optimizer rules
ai1wm_deactivate_swift_optimizer_rules(
array(
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration/all-in-one-wp-migration.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-azure-storage-extension/all-in-one-wp-migration-azure-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-b2-extension/all-in-one-wp-migration-b2-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-backup/all-in-one-wp-migration-backup.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-box-extension/all-in-one-wp-migration-box-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-digitalocean-extension/all-in-one-wp-migration-digitalocean-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-direct-extension/all-in-one-wp-migration-direct-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-dropbox-extension/all-in-one-wp-migration-dropbox-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-file-extension/all-in-one-wp-migration-file-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-ftp-extension/all-in-one-wp-migration-ftp-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gcloud-storage-extension/all-in-one-wp-migration-gcloud-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gdrive-extension/all-in-one-wp-migration-gdrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-glacier-extension/all-in-one-wp-migration-glacier-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-mega-extension/all-in-one-wp-migration-mega-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-multisite-extension/all-in-one-wp-migration-multisite-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-onedrive-extension/all-in-one-wp-migration-onedrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pcloud-extension/all-in-one-wp-migration-pcloud-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pro/all-in-one-wp-migration-pro.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-client-extension/all-in-one-wp-migration-s3-client-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-extension/all-in-one-wp-migration-s3-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-unlimited-extension/all-in-one-wp-migration-unlimited-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-url-extension/all-in-one-wp-migration-url-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-webdav-extension/all-in-one-wp-migration-webdav-extension.php' ),
)
);
// Deactivate Revolution Slider
ai1wm_deactivate_revolution_slider( ai1wm_discover_plugin_basename( 'revslider/revslider.php' ) );
// Deactivate Jetpack modules
ai1wm_deactivate_jetpack_modules( array( 'photon', 'sso' ) );
// Flush Elementor cache
ai1wm_elementor_cache_flush();
// Initial DB version
ai1wm_initial_db_version();
}
}
// Check blogs.json file
if ( is_file( ai1wm_blogs_path( $params ) ) ) {
// Read blogs.json file
$handle = ai1wm_open( ai1wm_blogs_path( $params ), 'r' );
// Parse blogs.json file
$blogs = ai1wm_read( $handle, filesize( ai1wm_blogs_path( $params ) ) );
$blogs = json_decode( $blogs, true );
// Close handle
ai1wm_close( $handle );
// Loop over blogs
foreach ( $blogs as $blog ) {
// Activate WordPress plugins
if ( isset( $blog['New']['Plugins'] ) && ( $plugins = $blog['New']['Plugins'] ) ) {
ai1wm_activate_plugins( $plugins );
}
// Activate WordPress template
if ( isset( $blog['New']['Template'] ) && ( $template = $blog['New']['Template'] ) ) {
ai1wm_activate_template( $template );
}
// Activate WordPress stylesheet
if ( isset( $blog['New']['Stylesheet'] ) && ( $stylesheet = $blog['New']['Stylesheet'] ) ) {
ai1wm_activate_stylesheet( $stylesheet );
}
// Deactivate WordPress SSL plugins
if ( ! is_ssl() ) {
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'really-simple-ssl/rlrsssl-really-simple-ssl.php' ),
ai1wm_discover_plugin_basename( 'wordpress-https/wordpress-https.php' ),
ai1wm_discover_plugin_basename( 'wp-force-ssl/wp-force-ssl.php' ),
ai1wm_discover_plugin_basename( 'force-https-littlebizzy/force-https.php' ),
)
);
ai1wm_woocommerce_force_ssl( false );
}
// Deactivate WordPress plugins
ai1wm_deactivate_plugins(
array(
ai1wm_discover_plugin_basename( 'invisible-recaptcha/invisible-recaptcha.php' ),
ai1wm_discover_plugin_basename( 'wps-hide-login/wps-hide-login.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wp/index.php' ),
ai1wm_discover_plugin_basename( 'hide-my-wordpress/index.php' ),
ai1wm_discover_plugin_basename( 'mycustomwidget/my_custom_widget.php' ),
ai1wm_discover_plugin_basename( 'lockdown-wp-admin/lockdown-wp-admin.php' ),
ai1wm_discover_plugin_basename( 'rename-wp-login/rename-wp-login.php' ),
ai1wm_discover_plugin_basename( 'wp-simple-firewall/icwp-wpsf.php' ),
ai1wm_discover_plugin_basename( 'join-my-multisite/joinmymultisite.php' ),
ai1wm_discover_plugin_basename( 'multisite-clone-duplicator/multisite-clone-duplicator.php' ),
ai1wm_discover_plugin_basename( 'wordpress-mu-domain-mapping/domain_mapping.php' ),
ai1wm_discover_plugin_basename( 'wordpress-starter/siteground-wizard.php' ),
ai1wm_discover_plugin_basename( 'pro-sites/pro-sites.php' ),
ai1wm_discover_plugin_basename( 'wpide/WPide.php' ),
ai1wm_discover_plugin_basename( 'page-optimize/page-optimize.php' ),
ai1wm_discover_plugin_basename( 'update-services/update-services.php' ),
)
);
// Deactivate Swift Optimizer rules
ai1wm_deactivate_swift_optimizer_rules(
array(
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration/all-in-one-wp-migration.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-azure-storage-extension/all-in-one-wp-migration-azure-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-b2-extension/all-in-one-wp-migration-b2-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-backup/all-in-one-wp-migration-backup.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-box-extension/all-in-one-wp-migration-box-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-digitalocean-extension/all-in-one-wp-migration-digitalocean-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-direct-extension/all-in-one-wp-migration-direct-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-dropbox-extension/all-in-one-wp-migration-dropbox-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-file-extension/all-in-one-wp-migration-file-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-ftp-extension/all-in-one-wp-migration-ftp-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gcloud-storage-extension/all-in-one-wp-migration-gcloud-storage-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-gdrive-extension/all-in-one-wp-migration-gdrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-glacier-extension/all-in-one-wp-migration-glacier-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-mega-extension/all-in-one-wp-migration-mega-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-multisite-extension/all-in-one-wp-migration-multisite-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-onedrive-extension/all-in-one-wp-migration-onedrive-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pcloud-extension/all-in-one-wp-migration-pcloud-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-pro/all-in-one-wp-migration-pro.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-client-extension/all-in-one-wp-migration-s3-client-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-s3-extension/all-in-one-wp-migration-s3-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-unlimited-extension/all-in-one-wp-migration-unlimited-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-url-extension/all-in-one-wp-migration-url-extension.php' ),
ai1wm_discover_plugin_basename( 'all-in-one-wp-migration-webdav-extension/all-in-one-wp-migration-webdav-extension.php' ),
)
);
// Deactivate Revolution Slider
ai1wm_deactivate_revolution_slider( ai1wm_discover_plugin_basename( 'revslider/revslider.php' ) );
// Deactivate Jetpack modules
ai1wm_deactivate_jetpack_modules( array( 'photon', 'sso' ) );
// Flush Elementor cache
ai1wm_elementor_cache_flush();
// Initial DB version
ai1wm_initial_db_version();
}
}
// Clear auth cookie (WP Cerber)
if ( ai1wm_validate_plugin_basename( 'wp-cerber/wp-cerber.php' ) ) {
wp_clear_auth_cookie();
}
$should_reset_permalinks = false;
// Switch to default permalink structure
if ( ( $should_reset_permalinks = ai1wm_should_reset_permalinks( $params ) ) ) {
$wp_rewrite->set_permalink_structure( '' );
}
// Set progress
if ( ai1wm_validate_plugin_basename( 'fusion-builder/fusion-builder.php' ) ) {
Ai1wm_Status::done( __( 'Your site has been imported successfully!', AI1WM_PLUGIN_NAME ), Ai1wm_Template::get_content( 'import/avada', array( 'should_reset_permalinks' => $should_reset_permalinks ) ) );
} elseif ( ai1wm_validate_plugin_basename( 'oxygen/functions.php' ) ) {
Ai1wm_Status::done( __( 'Your site has been imported successfully!', AI1WM_PLUGIN_NAME ), Ai1wm_Template::get_content( 'import/oxygen', array( 'should_reset_permalinks' => $should_reset_permalinks ) ) );
} else {
Ai1wm_Status::done( __( 'Your site has been imported successfully!', AI1WM_PLUGIN_NAME ), Ai1wm_Template::get_content( 'import/done', array( 'should_reset_permalinks' => $should_reset_permalinks ) ) );
}
do_action( 'ai1wm_status_import_done', $params );
return $params;
}
}
lib/model/import/class-ai1wm-import-content.php 0000644 00000022172 14720661726 0015555 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Content {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = 0;
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total files size
if ( isset( $params['total_files_size'] ) ) {
$total_files_size = (int) $params['total_files_size'];
} else {
$total_files_size = 1;
}
// Get total files count
if ( isset( $params['total_files_count'] ) ) {
$total_files_count = (int) $params['total_files_count'];
} else {
$total_files_count = 1;
}
// Read blogs.json file
$handle = ai1wm_open( ai1wm_blogs_path( $params ), 'r' );
// Parse blogs.json file
$blogs = ai1wm_read( $handle, filesize( ai1wm_blogs_path( $params ) ) );
$blogs = json_decode( $blogs, true );
// Close handle
ai1wm_close( $handle );
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Restoring %d files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Open the archive file for reading
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
$old_paths = array( 'plugins', 'themes' );
$new_paths = array( ai1wm_get_plugins_dir(), get_theme_root() );
// Set extract paths
foreach ( $blogs as $blog ) {
if ( ai1wm_is_mainsite( $blog['Old']['BlogID'] ) === false ) {
if ( defined( 'UPLOADBLOGSDIR' ) ) {
// Old files dir style
$old_paths[] = ai1wm_blog_files_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_files_abspath( $blog['New']['BlogID'] );
// Old blogs.dir style
$old_paths[] = ai1wm_blog_blogsdir_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_blogsdir_abspath( $blog['New']['BlogID'] );
// New sites dir style
$old_paths[] = ai1wm_blog_sites_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_files_abspath( $blog['New']['BlogID'] );
} else {
// Old files dir style
$old_paths[] = ai1wm_blog_files_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
// Old blogs.dir style
$old_paths[] = ai1wm_blog_blogsdir_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
// New sites dir style
$old_paths[] = ai1wm_blog_sites_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
}
}
}
// Set base site extract paths (should be added at the end of arrays)
foreach ( $blogs as $blog ) {
if ( ai1wm_is_mainsite( $blog['Old']['BlogID'] ) === true ) {
if ( defined( 'UPLOADBLOGSDIR' ) ) {
// Old files dir style
$old_paths[] = ai1wm_blog_files_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_files_abspath( $blog['New']['BlogID'] );
// Old blogs.dir style
$old_paths[] = ai1wm_blog_blogsdir_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_blogsdir_abspath( $blog['New']['BlogID'] );
// New sites dir style
$old_paths[] = ai1wm_blog_sites_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_files_abspath( $blog['New']['BlogID'] );
} else {
// Old files dir style
$old_paths[] = ai1wm_blog_files_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
// Old blogs.dir style
$old_paths[] = ai1wm_blog_blogsdir_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
// New sites dir style
$old_paths[] = ai1wm_blog_sites_relpath( $blog['Old']['BlogID'] );
$new_paths[] = ai1wm_blog_sites_abspath( $blog['New']['BlogID'] );
}
}
}
$old_paths[] = ai1wm_blog_sites_relpath();
$new_paths[] = ai1wm_blog_sites_abspath();
while ( $archive->has_not_reached_eof() ) {
$file_bytes_written = 0;
// Exclude WordPress files
$exclude_files = array_keys( _get_dropins() );
// Exclude plugin files
$exclude_files = array_merge(
$exclude_files,
array(
AI1WM_PACKAGE_NAME,
AI1WM_MULTISITE_NAME,
AI1WM_DATABASE_NAME,
AI1WM_MUPLUGINS_NAME,
)
);
// Exclude theme files
$exclude_files = array_merge( $exclude_files, array( AI1WM_THEMES_FUNCTIONS_NAME ) );
// Exclude Elementor files
$exclude_files = array_merge( $exclude_files, array( AI1WM_ELEMENTOR_CSS_NAME ) );
// Exclude content extensions
$exclude_extensions = array( AI1WM_LESS_CACHE_EXTENSION, AI1WM_SQLITE_DATABASE_EXTENSION );
// Extract a file from archive to WP_CONTENT_DIR
if ( ( $completed = $archive->extract_one_file_to( WP_CONTENT_DIR, $exclude_files, $exclude_extensions, $old_paths, $new_paths, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Restoring %d files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// End of the archive?
if ( $archive->has_reached_eof() ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total files size
unset( $params['total_files_size'] );
// Unset total files count
unset( $params['total_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total files size
$params['total_files_size'] = $total_files_size;
// Set total files count
$params['total_files_count'] = $total_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the archive file
$archive->close();
return $params;
}
}
lib/model/import/class-ai1wm-import-compatibility.php 0000644 00000004541 14720661726 0016754 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Compatibility {
public static function execute( $params ) {
do_action( 'ai1wm_status_import_start', $params );
// Set progress
Ai1wm_Status::info( __( 'Checking extensions compatibility...', AI1WM_PLUGIN_NAME ) );
// Get messages
$messages = Ai1wm_Compatibility::get( $params );
// Set messages
if ( empty( $messages ) ) {
return $params;
}
// Error message
throw new Ai1wm_Compatibility_Exception( implode( $messages ) );
}
}
lib/model/import/class-ai1wm-import-users.php 0000644 00000005606 14720661726 0015247 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Users {
public static function execute( $params ) {
// Check multisite.json file
if ( is_file( ai1wm_multisite_path( $params ) ) ) {
// Set progress
Ai1wm_Status::info( __( 'Preparing users...', AI1WM_PLUGIN_NAME ) );
// Read multisite.json file
$handle = ai1wm_open( ai1wm_multisite_path( $params ), 'r' );
// Parse multisite.json file
$multisite = ai1wm_read( $handle, filesize( ai1wm_multisite_path( $params ) ) );
$multisite = json_decode( $multisite, true );
// Close handle
ai1wm_close( $handle );
ai1wm_populate_roles();
// Set WordPress super admins
if ( isset( $multisite['Admins'] ) && ( $admins = $multisite['Admins'] ) ) {
foreach ( $admins as $username ) {
if ( ( $user = get_user_by( 'login', $username ) ) ) {
if ( $user->exists() ) {
$user->set_role( 'administrator' );
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done preparing users.', AI1WM_PLUGIN_NAME ) );
}
return $params;
}
}
lib/model/import/class-ai1wm-import-check-decryption-password.php 0000644 00000006262 14720661726 0021200 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Check_Decryption_Password {
public static function execute( $params ) {
global $ai1wm_params;
// Read package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'r' );
// Parse package.json file
$package = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) );
$package = json_decode( $package, true );
// Close handle
ai1wm_close( $handle );
if ( ! empty( $params['decryption_password'] ) ) {
if ( ai1wm_is_decryption_password_valid( $package['EncryptedSignature'], $params['decryption_password'] ) ) {
$params['is_decryption_password_valid'] = true;
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ), $params['decryption_password'] );
$archive->extract_by_files_array( ai1wm_storage_path( $params ), array( AI1WM_MULTISITE_NAME, AI1WM_DATABASE_NAME ), array(), array() );
Ai1wm_Status::info( __( 'Done validating the decryption password.', AI1WM_PLUGIN_NAME ) );
$ai1wm_params = $params;
return $params;
}
$decryption_password_error = __( 'The decryption password is not valid.', AI1WM_PLUGIN_NAME );
if ( defined( 'WP_CLI' ) ) {
WP_CLI::error( $decryption_password_error );
} else {
Ai1wm_Status::backup_is_encrypted( $decryption_password_error );
exit;
}
}
return $params;
}
}
lib/model/import/class-ai1wm-import-check-encryption.php 0000644 00000006127 14720661726 0017352 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Check_Encryption {
public static function execute( $params ) {
// Read package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'r' );
// Parse package.json file
$package = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) );
$package = json_decode( $package, true );
// Close handle
ai1wm_close( $handle );
if ( empty( $package['Encrypted'] ) || empty( $package['EncryptedSignature'] ) || ! empty( $params['is_decryption_password_valid'] ) ) {
return $params;
}
if ( ! ai1wm_can_decrypt() ) {
$message = __( 'Importing an encrypted backup is not supported on this server. Technical details', AI1WM_PLUGIN_NAME );
if ( defined( 'WP_CLI' ) ) {
WP_CLI::error( $message );
} else {
Ai1wm_Status::server_cannot_decrypt( $message );
exit;
}
}
if ( defined( 'WP_CLI' ) ) {
$message = __(
'Backup is encrypted. Please provide decryption password: ',
AI1WM_PLUGIN_NAME
);
$params['decryption_password'] = readline( $message );
return $params;
}
Ai1wm_Status::backup_is_encrypted( null );
exit;
}
}
lib/model/import/class-ai1wm-import-mu-plugins.php 0000644 00000007004 14720661726 0016200 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Mu_Plugins {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Activating mu-plugins...', AI1WM_PLUGIN_NAME ) );
$exclude_files = array(
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_PAGE_CACHE_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_PHP_EDGE_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_ENDURANCE_BROWSER_CACHE_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_GD_SYSTEM_PLUGIN_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_STACK_CACHE_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_COMSH_LOADER_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_COMSH_HELPER_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_ENGINE_SYSTEM_PLUGIN_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WPE_SIGN_ON_PLUGIN_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_ENGINE_SECURITY_AUDITOR_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_WP_CERBER_SECURITY_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_SQLITE_DATABASE_INTEGRATION_NAME,
AI1WM_MUPLUGINS_NAME . DIRECTORY_SEPARATOR . AI1WM_SQLITE_DATABASE_ZERO_NAME,
);
// Open the archive file for reading
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
// Unpack mu-plugins files
$archive->extract_by_files_array( WP_CONTENT_DIR, array( AI1WM_MUPLUGINS_NAME ), $exclude_files );
// Close the archive file
$archive->close();
// Set progress
Ai1wm_Status::info( __( 'Done activating mu-plugins.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/import/class-ai1wm-import-upload.php 0000644 00000010624 14720661726 0015366 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Upload {
private static function validate() {
if ( ! array_key_exists( 'upload-file', $_FILES ) || ! is_array( $_FILES['upload-file'] ) ) {
throw new Ai1wm_Import_Retry_Exception( __( 'Missing upload file.', AI1WM_PLUGIN_NAME ), 400 );
}
if ( ! array_key_exists( 'error', $_FILES['upload-file'] ) ) {
throw new Ai1wm_Import_Retry_Exception( __( 'Missing error key in upload file.', AI1WM_PLUGIN_NAME ), 400 );
}
if ( ! array_key_exists( 'tmp_name', $_FILES['upload-file'] ) ) {
throw new Ai1wm_Import_Retry_Exception( __( 'Missing tmp_name in upload file.', AI1WM_PLUGIN_NAME ), 400 );
}
}
public static function execute( $params ) {
self::validate();
$error = $_FILES['upload-file']['error'];
$upload = $_FILES['upload-file']['tmp_name'];
// Verify file name extension
if ( ! ai1wm_is_filename_supported( ai1wm_archive_path( $params ) ) ) {
throw new Ai1wm_Import_Exception(
__(
'The file type that you have tried to upload is not compatible with this plugin. ' .
'Please ensure that your file is a .wpress file that was created with the All-in-One WP migration plugin. ' .
'Technical details',
AI1WM_PLUGIN_NAME
)
);
}
switch ( $error ) {
case UPLOAD_ERR_OK:
try {
ai1wm_copy( $upload, ai1wm_archive_path( $params ) );
ai1wm_unlink( $upload );
} catch ( Exception $e ) {
throw new Ai1wm_Import_Retry_Exception( sprintf( __( 'Unable to upload the file because %s', AI1WM_PLUGIN_NAME ), $e->getMessage() ), 400 );
}
break;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
// File is too large
throw new Ai1wm_Import_Retry_Exception( __( 'The file is too large for this server.', AI1WM_PLUGIN_NAME ), 413 );
case UPLOAD_ERR_NO_TMP_DIR:
throw new Ai1wm_Import_Retry_Exception( __( 'Missing a temporary folder.', AI1WM_PLUGIN_NAME ), 400 );
case UPLOAD_ERR_CANT_WRITE:
throw new Ai1wm_Import_Retry_Exception( __( 'Failed to write file to disk.', AI1WM_PLUGIN_NAME ), 400 );
case UPLOAD_ERR_EXTENSION:
throw new Ai1wm_Import_Retry_Exception( __( 'A PHP extension stopped the file upload.', AI1WM_PLUGIN_NAME ), 400 );
default:
throw new Ai1wm_Import_Retry_Exception( sprintf( __( 'Unrecognized error %s during upload.', AI1WM_PLUGIN_NAME ), $error ), 400 );
}
ai1wm_json_response( array( 'errors' => array() ) );
exit;
}
}
lib/model/import/class-ai1wm-import-clean.php 0000644 00000004777 14720661726 0015200 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Clean {
public static function execute( $params ) {
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
// Flush mainsite tables
$db_client->add_table_prefix_filter( ai1wm_table_prefix( 'mainsite' ) );
$db_client->flush();
if ( isset( $params['ai1wm_import_cancel'] ) ) {
do_action( 'ai1wm_status_import_canceled', $params );
} else {
do_action( 'ai1wm_status_import_done', $params );
}
// Delete storage files
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
// Exit in console
if ( defined( 'WP_CLI' ) ) {
return $params;
}
exit;
}
}
lib/model/import/class-ai1wm-import-options.php 0000644 00000006557 14720661726 0015607 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Options {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Preparing options...', AI1WM_PLUGIN_NAME ) );
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
$tables = $db_client->get_tables();
// Get base prefix
$base_prefix = ai1wm_table_prefix();
// Get mainsite prefix
$mainsite_prefix = ai1wm_table_prefix( 'mainsite' );
// Check WP sitemeta table exists
if ( in_array( "{$mainsite_prefix}sitemeta", $tables ) ) {
// Get fs_accounts option value (Freemius)
$result = $db_client->query( "SELECT meta_value FROM `{$mainsite_prefix}sitemeta` WHERE meta_key = 'fs_accounts'" );
if ( ( $row = $db_client->fetch_assoc( $result ) ) ) {
$fs_accounts = get_option( 'fs_accounts', array() );
$meta_value = maybe_unserialize( $row['meta_value'] );
// Update fs_accounts option value (Freemius)
if ( ( $fs_accounts = array_merge( $fs_accounts, $meta_value ) ) ) {
if ( isset( $fs_accounts['users'], $fs_accounts['sites'] ) ) {
update_option( 'fs_accounts', $fs_accounts );
} else {
delete_option( 'fs_accounts' );
delete_option( 'fs_dbg_accounts' );
delete_option( 'fs_active_plugins' );
delete_option( 'fs_api_cache' );
delete_option( 'fs_dbg_api_cache' );
delete_option( 'fs_debug_mode' );
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done preparing options.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/import/class-ai1wm-import-enumerate.php 0000644 00000005055 14720661726 0016071 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Enumerate {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of all WordPress files...', AI1WM_PLUGIN_NAME ) );
// Open the archive file for reading
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
// Get total files count
$params['total_files_count'] = $archive->get_total_files_count();
// Get total files size
$params['total_files_size'] = $archive->get_total_files_size();
// Close the archive file
$archive->close();
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of all WordPress files.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/import/class-ai1wm-import-confirm.php 0000644 00000011375 14720661726 0015543 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Confirm {
public static function execute( $params ) {
$messages = array();
// Read package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'r' );
// Parse package.json file
$package = ai1wm_read( $handle, filesize( ai1wm_package_path( $params ) ) );
$package = json_decode( $package, true );
// Close handle
ai1wm_close( $handle );
// Confirm message
if ( defined( 'WP_CLI' ) ) {
$messages[] = __(
'The import process will overwrite your website including the database, media, plugins, and themes. ' .
'Are you sure to proceed?',
AI1WM_PLUGIN_NAME
);
} else {
$messages[] = __(
'The import process will overwrite your website including the database, media, plugins, and themes. ' .
'Please ensure that you have a backup of your data before proceeding to the next step.',
AI1WM_PLUGIN_NAME
);
}
// Check compatibility of PHP versions
if ( isset( $package['PHP']['Version'] ) ) {
// Extract major and minor version numbers
$source_versions = explode( '.', $package['PHP']['Version'] );
$target_versions = explode( '.', PHP_VERSION );
$source_major_version = intval( $source_versions[0] );
$source_minor_version = intval( isset( $source_versions[1] ) ? $source_versions[1] : 0 );
$target_major_version = intval( $target_versions[0] );
$target_minor_version = intval( isset( $target_versions[1] ) ? $target_versions[1] : 0 );
if ( $source_major_version !== $target_major_version ) {
$from_php = $source_major_version;
$to_php = $target_major_version;
} elseif ( $source_minor_version !== $target_minor_version ) {
$from_php = sprintf( '%s.%s', $source_major_version, $source_minor_version );
$to_php = sprintf( '%s.%s', $target_major_version, $target_minor_version );
}
if ( isset( $from_php, $to_php ) ) {
if ( defined( 'WP_CLI' ) ) {
$message = __(
'Your backup is from a PHP %s but the site that you are importing to is PHP %s. ' .
'This could cause the import to fail. Technical details: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/',
AI1WM_PLUGIN_NAME
);
} else {
$message = __(
'Your backup is from a PHP %s but the site that you are importing to is PHP %s. ' .
'This could cause the import to fail. Technical details',
AI1WM_PLUGIN_NAME
);
}
$messages[] = sprintf( $message, $from_php, $to_php );
}
}
if ( defined( 'WP_CLI' ) ) {
$assoc_args = array();
if ( isset( $params['cli_args'] ) ) {
$assoc_args = $params['cli_args'];
}
WP_CLI::confirm( implode( PHP_EOL, $messages ), $assoc_args );
return $params;
}
// Set progress
Ai1wm_Status::confirm( implode( $messages ) );
exit;
}
}
lib/model/import/class-ai1wm-import-blogs.php 0000644 00000014077 14720661726 0015216 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Blogs {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Preparing blogs...', AI1WM_PLUGIN_NAME ) );
$blogs = array();
// Check multisite.json file
if ( true === is_file( ai1wm_multisite_path( $params ) ) ) {
// Read multisite.json file
$handle = ai1wm_open( ai1wm_multisite_path( $params ), 'r' );
// Parse multisite.json file
$multisite = ai1wm_read( $handle, filesize( ai1wm_multisite_path( $params ) ) );
$multisite = json_decode( $multisite, true );
// Close handle
ai1wm_close( $handle );
// Validate
if ( empty( $multisite['Network'] ) ) {
if ( isset( $multisite['Sites'] ) && ( $sites = $multisite['Sites'] ) ) {
if ( count( $sites ) === 1 && ( $subsite = current( $sites ) ) ) {
// Set internal Site URL (backward compatibility)
if ( empty( $subsite['InternalSiteURL'] ) ) {
$subsite['InternalSiteURL'] = null;
}
// Set internal Home URL (backward compatibility)
if ( empty( $subsite['InternalHomeURL'] ) ) {
$subsite['InternalHomeURL'] = null;
}
// Set active plugins (backward compatibility)
if ( empty( $subsite['Plugins'] ) ) {
$subsite['Plugins'] = array();
}
// Set active template (backward compatibility)
if ( empty( $subsite['Template'] ) ) {
$subsite['Template'] = null;
}
// Set active stylesheet (backward compatibility)
if ( empty( $subsite['Stylesheet'] ) ) {
$subsite['Stylesheet'] = null;
}
// Set uploads path (backward compatibility)
if ( empty( $subsite['Uploads'] ) ) {
$subsite['Uploads'] = null;
}
// Set uploads URL path (backward compatibility)
if ( empty( $subsite['UploadsURL'] ) ) {
$subsite['UploadsURL'] = null;
}
// Set uploads path (backward compatibility)
if ( empty( $subsite['WordPress']['Uploads'] ) ) {
$subsite['WordPress']['Uploads'] = null;
}
// Set uploads URL path (backward compatibility)
if ( empty( $subsite['WordPress']['UploadsURL'] ) ) {
$subsite['WordPress']['UploadsURL'] = null;
}
// Set blog items
$blogs[] = array(
'Old' => array(
'BlogID' => $subsite['BlogID'],
'SiteURL' => $subsite['SiteURL'],
'HomeURL' => $subsite['HomeURL'],
'InternalSiteURL' => $subsite['InternalSiteURL'],
'InternalHomeURL' => $subsite['InternalHomeURL'],
'Plugins' => $subsite['Plugins'],
'Template' => $subsite['Template'],
'Stylesheet' => $subsite['Stylesheet'],
'Uploads' => $subsite['Uploads'],
'UploadsURL' => $subsite['UploadsURL'],
'WordPress' => $subsite['WordPress'],
),
'New' => array(
'BlogID' => null,
'SiteURL' => site_url(),
'HomeURL' => home_url(),
'InternalSiteURL' => site_url(),
'InternalHomeURL' => home_url(),
'Plugins' => $subsite['Plugins'],
'Template' => $subsite['Template'],
'Stylesheet' => $subsite['Stylesheet'],
'Uploads' => get_option( 'upload_path' ),
'UploadsURL' => get_option( 'upload_url_path' ),
'WordPress' => array(
'UploadsURL' => ai1wm_get_uploads_url(),
),
),
);
} else {
throw new Ai1wm_Import_Exception( __( 'The archive should contain Single WordPress site! Please revisit your export settings.', AI1WM_PLUGIN_NAME ) );
}
} else {
throw new Ai1wm_Import_Exception( __( 'At least one WordPress site should be presented in the archive.', AI1WM_PLUGIN_NAME ) );
}
} else {
throw new Ai1wm_Import_Exception( __( 'Unable to import WordPress Network into WordPress Single site.', AI1WM_PLUGIN_NAME ) );
}
}
// Write blogs.json file
$handle = ai1wm_open( ai1wm_blogs_path( $params ), 'w' );
ai1wm_write( $handle, json_encode( $blogs ) );
ai1wm_close( $handle );
// Set progress
Ai1wm_Status::info( __( 'Done preparing blogs.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/import/class-ai1wm-import-permalinks.php 0000644 00000004506 14720661726 0016251 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Import_Permalinks {
public static function execute( $params ) {
global $wp_rewrite;
// Set progress
Ai1wm_Status::info( __( 'Getting WordPress permalinks settings...', AI1WM_PLUGIN_NAME ) );
// Get using permalinks
$params['using_permalinks'] = (int) $wp_rewrite->using_permalinks();
// Set progress
Ai1wm_Status::info( __( 'Done getting WordPress permalinks settings.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/class-ai1wm-log.php 0000644 00000004421 14720661726 0012037 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Log {
public static function error( $params ) {
$data = array();
// Add date
$data[] = date( 'M d Y H:i:s' );
// Add params
$data[] = json_encode( $params );
// Add empty line
$data[] = PHP_EOL;
// Write log data
if ( $handle = ai1wm_open( ai1wm_error_path(), 'a' ) ) {
ai1wm_write( $handle, implode( PHP_EOL, $data ) );
ai1wm_close( $handle );
}
}
}
lib/model/class-ai1wm-compatibility.php 0000644 00000006232 14720661726 0014131 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Compatibility {
public static function get( $params ) {
$extensions = Ai1wm_Extensions::get();
foreach ( $extensions as $extension_name => $extension_data ) {
if ( ! isset( $params[ $extension_data['short'] ] ) ) {
unset( $extensions[ $extension_name ] );
}
}
// If no extension is used, update everything that is available
if ( empty( $extensions ) ) {
$extensions = Ai1wm_Extensions::get();
}
$messages = array();
foreach ( $extensions as $extension_name => $extension_data ) {
if ( ! Ai1wm_Compatibility::check( $extension_data ) ) {
if ( defined( 'WP_CLI' ) ) {
$messages[] = sprintf( __( '%s is not the latest version. You must update the plugin before you can use it. ', AI1WM_PLUGIN_NAME ), $extension_data['title'] );
} else {
$messages[] = sprintf( __( '%s is not the latest version. You must update the plugin before you can use it.
', AI1WM_PLUGIN_NAME ), $extension_data['title'], network_admin_url( 'plugins.php' ) );
}
}
}
return $messages;
}
public static function check( $extension ) {
if ( $extension['version'] !== 'develop' ) {
if ( version_compare( $extension['version'], $extension['requires'], '<' ) ) {
return false;
}
}
return true;
}
}
lib/model/class-ai1wm-status.php 0000644 00000006505 14720661726 0012606 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Status {
public static function error( $title, $message ) {
self::log( array( 'type' => 'error', 'title' => $title, 'message' => $message ) );
}
public static function info( $message ) {
self::log( array( 'type' => 'info', 'message' => $message ) );
}
public static function download( $message ) {
self::log( array( 'type' => 'download', 'message' => $message ) );
}
public static function disk_space_confirm( $message ) {
self::log( array( 'type' => 'disk_space_confirm', 'message' => $message ) );
}
public static function confirm( $message ) {
self::log( array( 'type' => 'confirm', 'message' => $message ) );
}
public static function done( $title, $message = null ) {
self::log( array( 'type' => 'done', 'title' => $title, 'message' => $message ) );
}
public static function blogs( $title, $message ) {
self::log( array( 'type' => 'blogs', 'title' => $title, 'message' => $message ) );
}
public static function progress( $percent ) {
self::log( array( 'type' => 'progress', 'percent' => $percent ) );
}
public static function backup_is_encrypted( $error ) {
self::log( array( 'type' => 'backup_is_encrypted', 'error' => $error ) );
}
public static function server_cannot_decrypt( $message ) {
self::log( array( 'type' => 'server_cannot_decrypt', 'message' => $message ) );
}
public static function log( $data ) {
if ( ! ai1wm_is_scheduled_backup() ) {
update_option( AI1WM_STATUS, $data );
}
}
}
lib/model/class-ai1wm-feedback.php 0000644 00000006554 14720661726 0013013 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Feedback {
/**
* Submit customer feedback to servmask.com
*
* @param string $type Feedback type
* @param string $email User e-mail
* @param string $message User message
* @param integer $terms User accept terms
* @param string $purchases Purchases IDs
*
* @return array
*/
public static function add( $type, $email, $message, $terms, $purchases ) {
// Validate email
if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === false ) {
throw new Ai1wm_Feedback_Exception( __( 'Your email is not valid.', AI1WM_PLUGIN_NAME ) );
}
// Validate type
if ( empty( $type ) ) {
throw new Ai1wm_Feedback_Exception( __( 'Feedback type is not valid.', AI1WM_PLUGIN_NAME ) );
}
// Validate message
if ( empty( $message ) ) {
throw new Ai1wm_Feedback_Exception( __( 'Please enter comments in the text area.', AI1WM_PLUGIN_NAME ) );
}
// Validate terms
if ( empty( $terms ) ) {
throw new Ai1wm_Feedback_Exception( __( 'Please accept feedback term conditions.', AI1WM_PLUGIN_NAME ) );
}
$response = wp_remote_post(
AI1WM_FEEDBACK_URL,
array(
'timeout' => 15,
'body' => array(
'type' => $type,
'email' => $email,
'message' => $message,
'purchases' => $purchases,
),
)
);
if ( is_wp_error( $response ) ) {
throw new Ai1wm_Feedback_Exception( sprintf( __( 'Something went wrong: %s', AI1WM_PLUGIN_NAME ), $response->get_error_message() ) );
}
return $response;
}
}
lib/model/class-ai1wm-notification.php 0000644 00000006443 14720661726 0013752 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Notification {
public static function ok( $subject, $message ) {
// Enable notifications
if ( ! apply_filters( 'ai1wm_notification_ok_toggle', false ) ) {
return;
}
// Set email
if ( ! ( $email = apply_filters( 'ai1wm_notification_ok_email', get_option( 'admin_email', false ) ) ) ) {
return;
}
// Set subject
if ( ! ( $subject = apply_filters( 'ai1wm_notification_ok_subject', $subject ) ) ) {
return;
}
// Set message
if ( ! ( $message = apply_filters( 'ai1wm_notification_ok_message', $message ) ) ) {
return;
}
// Send email
if ( ai1wm_is_scheduled_backup() ) {
wp_mail( $email, $subject, $message, array( 'Content-Type: text/html; charset=UTF-8' ) );
}
}
public static function error( $subject, $message ) {
// Enable notifications
if ( ! apply_filters( 'ai1wm_notification_error_toggle', false ) ) {
return;
}
// Set email
if ( ! ( $email = apply_filters( 'ai1wm_notification_error_email', get_option( 'admin_email', false ) ) ) ) {
return;
}
// Set subject
if ( ! ( $subject = apply_filters( 'ai1wm_notification_error_subject', $subject ) ) ) {
return;
}
// Set message
if ( ! ( $message = apply_filters( 'ai1wm_notification_error_message', $message ) ) ) {
return;
}
// Send email
if ( ai1wm_is_scheduled_backup() ) {
wp_mail( $email, $subject, $message, array( 'Content-Type: text/html; charset=UTF-8' ) );
}
}
}
lib/model/class-ai1wm-extensions.php 0000644 00000026520 14720661726 0013461 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Extensions {
/**
* Get active extensions
*
* @return array
*/
public static function get() {
$extensions = array();
// Add Microsoft Azure Extension
if ( defined( 'AI1WMZE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMZE_PLUGIN_NAME ] = array(
'key' => AI1WMZE_PLUGIN_KEY,
'title' => AI1WMZE_PLUGIN_TITLE,
'about' => AI1WMZE_PLUGIN_ABOUT,
'check' => AI1WMZE_PLUGIN_CHECK,
'basename' => AI1WMZE_PLUGIN_BASENAME,
'version' => AI1WMZE_VERSION,
'requires' => '1.45',
'short' => AI1WMZE_PLUGIN_SHORT,
);
}
// Add Backblaze B2 Extension
if ( defined( 'AI1WMAE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMAE_PLUGIN_NAME ] = array(
'key' => AI1WMAE_PLUGIN_KEY,
'title' => AI1WMAE_PLUGIN_TITLE,
'about' => AI1WMAE_PLUGIN_ABOUT,
'check' => AI1WMAE_PLUGIN_CHECK,
'basename' => AI1WMAE_PLUGIN_BASENAME,
'version' => AI1WMAE_VERSION,
'requires' => '1.50',
'short' => AI1WMAE_PLUGIN_SHORT,
);
}
// Add Backup Plugin
if ( defined( 'AI1WMVE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMVE_PLUGIN_NAME ] = array(
'key' => AI1WMVE_PLUGIN_KEY,
'title' => AI1WMVE_PLUGIN_TITLE,
'about' => AI1WMVE_PLUGIN_ABOUT,
'check' => AI1WMVE_PLUGIN_CHECK,
'basename' => AI1WMVE_PLUGIN_BASENAME,
'version' => AI1WMVE_VERSION,
'requires' => '1.0',
'short' => AI1WMVE_PLUGIN_SHORT,
);
}
// Add Box Extension
if ( defined( 'AI1WMBE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMBE_PLUGIN_NAME ] = array(
'key' => AI1WMBE_PLUGIN_KEY,
'title' => AI1WMBE_PLUGIN_TITLE,
'about' => AI1WMBE_PLUGIN_ABOUT,
'check' => AI1WMBE_PLUGIN_CHECK,
'basename' => AI1WMBE_PLUGIN_BASENAME,
'version' => AI1WMBE_VERSION,
'requires' => '1.61',
'short' => AI1WMBE_PLUGIN_SHORT,
);
}
// Add DigitalOcean Spaces Extension
if ( defined( 'AI1WMIE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMIE_PLUGIN_NAME ] = array(
'key' => AI1WMIE_PLUGIN_KEY,
'title' => AI1WMIE_PLUGIN_TITLE,
'about' => AI1WMIE_PLUGIN_ABOUT,
'check' => AI1WMIE_PLUGIN_CHECK,
'basename' => AI1WMIE_PLUGIN_BASENAME,
'version' => AI1WMIE_VERSION,
'requires' => '1.61',
'short' => AI1WMIE_PLUGIN_SHORT,
);
}
// Add Direct Extension
if ( defined( 'AI1WMXE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMXE_PLUGIN_NAME ] = array(
'key' => AI1WMXE_PLUGIN_KEY,
'title' => AI1WMXE_PLUGIN_TITLE,
'about' => AI1WMXE_PLUGIN_ABOUT,
'check' => AI1WMXE_PLUGIN_CHECK,
'basename' => AI1WMXE_PLUGIN_BASENAME,
'version' => AI1WMXE_VERSION,
'requires' => '1.30',
'short' => AI1WMXE_PLUGIN_SHORT,
);
}
// Add Dropbox Extension
if ( defined( 'AI1WMDE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMDE_PLUGIN_NAME ] = array(
'key' => AI1WMDE_PLUGIN_KEY,
'title' => AI1WMDE_PLUGIN_TITLE,
'about' => AI1WMDE_PLUGIN_ABOUT,
'check' => AI1WMDE_PLUGIN_CHECK,
'basename' => AI1WMDE_PLUGIN_BASENAME,
'version' => AI1WMDE_VERSION,
'requires' => '3.85',
'short' => AI1WMDE_PLUGIN_SHORT,
);
}
// Add File Extension
if ( defined( 'AI1WMTE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMTE_PLUGIN_NAME ] = array(
'key' => AI1WMTE_PLUGIN_KEY,
'title' => AI1WMTE_PLUGIN_TITLE,
'about' => AI1WMTE_PLUGIN_ABOUT,
'check' => AI1WMTE_PLUGIN_CHECK,
'basename' => AI1WMTE_PLUGIN_BASENAME,
'version' => AI1WMTE_VERSION,
'requires' => '1.5',
'short' => AI1WMTE_PLUGIN_SHORT,
);
}
// Add FTP Extension
if ( defined( 'AI1WMFE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMFE_PLUGIN_NAME ] = array(
'key' => AI1WMFE_PLUGIN_KEY,
'title' => AI1WMFE_PLUGIN_TITLE,
'about' => AI1WMFE_PLUGIN_ABOUT,
'check' => AI1WMFE_PLUGIN_CHECK,
'basename' => AI1WMFE_PLUGIN_BASENAME,
'version' => AI1WMFE_VERSION,
'requires' => '2.84',
'short' => AI1WMFE_PLUGIN_SHORT,
);
}
// Add Google Cloud Storage Extension
if ( defined( 'AI1WMCE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMCE_PLUGIN_NAME ] = array(
'key' => AI1WMCE_PLUGIN_KEY,
'title' => AI1WMCE_PLUGIN_TITLE,
'about' => AI1WMCE_PLUGIN_ABOUT,
'check' => AI1WMCE_PLUGIN_CHECK,
'basename' => AI1WMCE_PLUGIN_BASENAME,
'version' => AI1WMCE_VERSION,
'requires' => '1.53',
'short' => AI1WMCE_PLUGIN_SHORT,
);
}
// Add Google Drive Extension
if ( defined( 'AI1WMGE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMGE_PLUGIN_NAME ] = array(
'key' => AI1WMGE_PLUGIN_KEY,
'title' => AI1WMGE_PLUGIN_TITLE,
'about' => AI1WMGE_PLUGIN_ABOUT,
'check' => AI1WMGE_PLUGIN_CHECK,
'basename' => AI1WMGE_PLUGIN_BASENAME,
'version' => AI1WMGE_VERSION,
'requires' => '2.89',
'short' => AI1WMGE_PLUGIN_SHORT,
);
}
// Add Amazon Glacier Extension
if ( defined( 'AI1WMRE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMRE_PLUGIN_NAME ] = array(
'key' => AI1WMRE_PLUGIN_KEY,
'title' => AI1WMRE_PLUGIN_TITLE,
'about' => AI1WMRE_PLUGIN_ABOUT,
'check' => AI1WMRE_PLUGIN_CHECK,
'basename' => AI1WMRE_PLUGIN_BASENAME,
'version' => AI1WMRE_VERSION,
'requires' => '1.47',
'short' => AI1WMRE_PLUGIN_SHORT,
);
}
// Add Mega Extension
if ( defined( 'AI1WMEE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMEE_PLUGIN_NAME ] = array(
'key' => AI1WMEE_PLUGIN_KEY,
'title' => AI1WMEE_PLUGIN_TITLE,
'about' => AI1WMEE_PLUGIN_ABOUT,
'check' => AI1WMEE_PLUGIN_CHECK,
'basename' => AI1WMEE_PLUGIN_BASENAME,
'version' => AI1WMEE_VERSION,
'requires' => '1.54',
'short' => AI1WMEE_PLUGIN_SHORT,
);
}
// Add Multisite Extension
if ( defined( 'AI1WMME_PLUGIN_NAME' ) ) {
$extensions[ AI1WMME_PLUGIN_NAME ] = array(
'key' => AI1WMME_PLUGIN_KEY,
'title' => AI1WMME_PLUGIN_TITLE,
'about' => AI1WMME_PLUGIN_ABOUT,
'check' => AI1WMME_PLUGIN_CHECK,
'basename' => AI1WMME_PLUGIN_BASENAME,
'version' => AI1WMME_VERSION,
'requires' => '4.37',
'short' => AI1WMME_PLUGIN_SHORT,
);
}
// Add OneDrive Extension
if ( defined( 'AI1WMOE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMOE_PLUGIN_NAME ] = array(
'key' => AI1WMOE_PLUGIN_KEY,
'title' => AI1WMOE_PLUGIN_TITLE,
'about' => AI1WMOE_PLUGIN_ABOUT,
'check' => AI1WMOE_PLUGIN_CHECK,
'basename' => AI1WMOE_PLUGIN_BASENAME,
'version' => AI1WMOE_VERSION,
'requires' => '1.74',
'short' => AI1WMOE_PLUGIN_SHORT,
);
}
// Add pCloud Extension
if ( defined( 'AI1WMPE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMPE_PLUGIN_NAME ] = array(
'key' => AI1WMPE_PLUGIN_KEY,
'title' => AI1WMPE_PLUGIN_TITLE,
'about' => AI1WMPE_PLUGIN_ABOUT,
'check' => AI1WMPE_PLUGIN_CHECK,
'basename' => AI1WMPE_PLUGIN_BASENAME,
'version' => AI1WMPE_VERSION,
'requires' => '1.48',
'short' => AI1WMPE_PLUGIN_SHORT,
);
}
// Add Pro Plugin
if ( defined( 'AI1WMKE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMKE_PLUGIN_NAME ] = array(
'key' => AI1WMKE_PLUGIN_KEY,
'title' => AI1WMKE_PLUGIN_TITLE,
'about' => AI1WMKE_PLUGIN_ABOUT,
'check' => AI1WMKE_PLUGIN_CHECK,
'basename' => AI1WMKE_PLUGIN_BASENAME,
'version' => AI1WMKE_VERSION,
'requires' => '1.0',
'short' => AI1WMKE_PLUGIN_SHORT,
);
}
// Add S3 Client Extension
if ( defined( 'AI1WMNE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMNE_PLUGIN_NAME ] = array(
'key' => AI1WMNE_PLUGIN_KEY,
'title' => AI1WMNE_PLUGIN_TITLE,
'about' => AI1WMNE_PLUGIN_ABOUT,
'check' => AI1WMNE_PLUGIN_CHECK,
'basename' => AI1WMNE_PLUGIN_BASENAME,
'version' => AI1WMNE_VERSION,
'requires' => '1.45',
'short' => AI1WMNE_PLUGIN_SHORT,
);
}
// Add Amazon S3 Extension
if ( defined( 'AI1WMSE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMSE_PLUGIN_NAME ] = array(
'key' => AI1WMSE_PLUGIN_KEY,
'title' => AI1WMSE_PLUGIN_TITLE,
'about' => AI1WMSE_PLUGIN_ABOUT,
'check' => AI1WMSE_PLUGIN_CHECK,
'basename' => AI1WMSE_PLUGIN_BASENAME,
'version' => AI1WMSE_VERSION,
'requires' => '3.85',
'short' => AI1WMSE_PLUGIN_SHORT,
);
}
// Add Unlimited Extension
if ( defined( 'AI1WMUE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMUE_PLUGIN_NAME ] = array(
'key' => AI1WMUE_PLUGIN_KEY,
'title' => AI1WMUE_PLUGIN_TITLE,
'about' => AI1WMUE_PLUGIN_ABOUT,
'check' => AI1WMUE_PLUGIN_CHECK,
'basename' => AI1WMUE_PLUGIN_BASENAME,
'version' => AI1WMUE_VERSION,
'requires' => '2.59',
'short' => AI1WMUE_PLUGIN_SHORT,
);
}
// Add URL Extension
if ( defined( 'AI1WMLE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMLE_PLUGIN_NAME ] = array(
'key' => AI1WMLE_PLUGIN_KEY,
'title' => AI1WMLE_PLUGIN_TITLE,
'about' => AI1WMLE_PLUGIN_ABOUT,
'check' => AI1WMLE_PLUGIN_CHECK,
'basename' => AI1WMLE_PLUGIN_BASENAME,
'version' => AI1WMLE_VERSION,
'requires' => '2.71',
'short' => AI1WMLE_PLUGIN_SHORT,
);
}
// Add WebDAV Extension
if ( defined( 'AI1WMWE_PLUGIN_NAME' ) ) {
$extensions[ AI1WMWE_PLUGIN_NAME ] = array(
'key' => AI1WMWE_PLUGIN_KEY,
'title' => AI1WMWE_PLUGIN_TITLE,
'about' => AI1WMWE_PLUGIN_ABOUT,
'check' => AI1WMWE_PLUGIN_CHECK,
'basename' => AI1WMWE_PLUGIN_BASENAME,
'version' => AI1WMWE_VERSION,
'requires' => '1.42',
'short' => AI1WMWE_PLUGIN_SHORT,
);
}
return $extensions;
}
}
lib/model/class-ai1wm-handler.php 0000644 00000004767 14720661726 0012710 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Handler {
/**
* Error handler
*
* @param integer $errno Error level
* @param string $errstr Error message
* @param string $errfile Error file
* @param integer $errline Error line
* @return void
*/
public static function error( $errno, $errstr, $errfile, $errline ) {
Ai1wm_Log::error(
array(
'Number' => $errno,
'Message' => $errstr,
'File' => $errfile,
'Line' => $errline,
)
);
}
/**
* Shutdown handler
*
* @return void
*/
public static function shutdown() {
if ( ( $error = error_get_last() ) ) {
Ai1wm_Log::error( $error );
}
}
}
lib/model/class-ai1wm-message.php 0000644 00000005241 14720661726 0012703 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Message {
public static function flash( $type, $message ) {
if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) !== false ) {
return update_option( AI1WM_MESSAGES, array_merge( $messages, array( $type => $message ) ) );
}
return false;
}
public static function has( $type ) {
if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) ) {
if ( isset( $messages[ $type ] ) ) {
return true;
}
}
return false;
}
public static function get( $type ) {
$message = null;
if ( ( $messages = get_option( AI1WM_MESSAGES, array() ) ) ) {
if ( isset( $messages[ $type ] ) && ( $message = $messages[ $type ] ) ) {
unset( $messages[ $type ] );
}
// Set messages
update_option( AI1WM_MESSAGES, $messages );
}
return $message;
}
}
lib/model/class-ai1wm-updater.php 0000644 00000016706 14720661726 0012733 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Updater {
/**
* Retrieve plugin installer pages from WordPress Plugins API.
*
* @param mixed $result
* @param string $action
* @param array|object $args
* @return mixed
*/
public static function plugins_api( $result, $action = null, $args = null ) {
if ( empty( $args->slug ) ) {
return $result;
}
// Get extensions
$extensions = Ai1wm_Extensions::get();
// View details page
if ( isset( $extensions[ $args->slug ] ) && $action === 'plugin_information' ) {
$updater = get_option( AI1WM_UPDATER, array() );
// Plugin details
if ( isset( $updater[ $args->slug ] ) ) {
return (object) $updater[ $args->slug ];
}
}
return $result;
}
/**
* Update WordPress plugin list page.
*
* @param object $transient
* @return object
*/
public static function update_plugins( $transient ) {
global $wp_version;
// Creating default object from empty value
if ( ! is_object( $transient ) ) {
$transient = (object) array();
}
// Get extensions
$extensions = Ai1wm_Extensions::get();
// Get current updates
$updater = get_option( AI1WM_UPDATER, array() );
// Get extension updates
foreach ( $updater as $slug => $update ) {
if ( isset( $extensions[ $slug ], $update['version'], $update['homepage'], $update['download_link'], $update['icons'] ) ) {
if ( ( $purchase_id = get_option( $extensions[ $slug ]['key'] ) ) ) {
// Get download URL
if ( $slug === 'all-in-one-wp-migration-file-extension' ) {
$download_url = add_query_arg( array( 'siteurl' => get_site_url() ), sprintf( '%s', $update['download_link'] ) );
} else {
$download_url = add_query_arg( array( 'siteurl' => get_site_url() ), sprintf( '%s/%s', $update['download_link'], $purchase_id ) );
}
// Set plugin details
$plugin_details = (object) array(
'slug' => $slug,
'new_version' => $update['version'],
'url' => $update['homepage'],
'plugin' => $extensions[ $slug ]['basename'],
'package' => $download_url,
'tested' => $wp_version,
'icons' => $update['icons'],
);
// Enable auto updates
if ( version_compare( $extensions[ $slug ]['version'], $update['version'], '<' ) ) {
$transient->response[ $extensions[ $slug ]['basename'] ] = $plugin_details;
} else {
$transient->no_update[ $extensions[ $slug ]['basename'] ] = $plugin_details;
}
}
}
}
return $transient;
}
/**
* Check for extension updates
*
* @return boolean
*/
public static function check_for_updates() {
$updater = get_option( AI1WM_UPDATER, array() );
// Get extension updates
foreach ( Ai1wm_Extensions::get() as $slug => $extension ) {
$about = wp_remote_get(
$extension['about'],
array(
'timeout' => 15,
'headers' => array( 'Accept' => 'application/json' ),
)
);
// Add plugin updates
if ( is_wp_error( $about ) ) {
$updater[ $slug ]['error_message'] = $about->get_error_message();
} else {
$body = wp_remote_retrieve_body( $about );
if ( ( $data = json_decode( $body, true ) ) ) {
if ( isset( $data['slug'], $data['version'], $data['homepage'], $data['download_link'], $data['icons'] ) ) {
$updater[ $slug ] = $data;
}
}
// Add plugin messages
if ( $slug !== 'all-in-one-wp-migration-file-extension' ) {
if ( ( $purchase_id = get_option( $extension['key'] ) ) ) {
$check = wp_remote_get(
add_query_arg( array( 'site_url' => get_site_url(), 'admin_email' => get_option( 'admin_email' ) ), sprintf( '%s/%s', $extension['check'], $purchase_id ) ),
array(
'timeout' => 15,
'headers' => array( 'Accept' => 'application/json' ),
)
);
// Add plugin checks
if ( is_wp_error( $check ) ) {
$updater[ $slug ]['error_message'] = $check->get_error_message();
} else {
$body = wp_remote_retrieve_body( $check );
if ( ( $data = json_decode( $body, true ) ) ) {
if ( isset( $updater[ $slug ], $data['message'] ) ) {
$updater[ $slug ]['update_message'] = $data['message'];
}
}
}
}
}
}
}
return update_option( AI1WM_UPDATER, $updater );
}
/**
* Add "Check for updates" link
*
* @param array $plugin_meta An array of the plugin's metadata, including the version, author, author URI, and plugin URI
* @param string $plugin_file Path to the plugin file relative to the plugins directory
* @return array
*/
public static function plugin_row_meta( $plugin_meta, $plugin_file ) {
$modal_index = 0;
// Get current updates
$updater = get_option( AI1WM_UPDATER, array() );
// Add link for each extension
foreach ( Ai1wm_Extensions::get() as $slug => $extension ) {
$modal_index++;
// Get plugin details
if ( $plugin_file === $extension['basename'] ) {
// Get updater URL
$updater_url = add_query_arg( array( 'ai1wm_check_for_updates' => 1, 'ai1wm_nonce' => wp_create_nonce( 'ai1wm_check_for_updates' ) ), network_admin_url( 'plugins.php' ) );
// Check purchase ID
if ( get_option( $extension['key'] ) ) {
$plugin_meta[] = Ai1wm_Template::get_content( 'updater/check', array( 'url' => $updater_url ) );
} else {
$plugin_meta[] = Ai1wm_Template::get_content( 'updater/modal', array( 'url' => $updater_url, 'modal' => $modal_index ) );
}
// Check error message
if ( isset( $updater[ $slug ]['error_message'] ) ) {
$plugin_meta[] = Ai1wm_Template::get_content( 'updater/error', array( 'message' => $updater[ $slug ]['error_message'] ) );
}
}
}
return $plugin_meta;
}
}
lib/model/class-ai1wm-backups.php 0000644 00000013025 14720661726 0012706 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Backups {
/**
* Get all backup files
*
* @return array
*/
public static function get_files() {
$backups = array();
try {
// Iterate over directory
$iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_BACKUPS_PATH );
// Filter by extensions
$iterator = new Ai1wm_Recursive_Extension_Filter( $iterator, array( 'wpress' ) );
// Recursively iterate over directory
$iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
// Get backup files
foreach ( $iterator as $item ) {
try {
if ( ai1wm_is_filesize_supported( $item->getPathname() ) ) {
$backups[] = array(
'path' => $iterator->getSubPath(),
'filename' => $iterator->getSubPathname(),
'mtime' => $iterator->getMTime(),
'size' => $iterator->getSize(),
);
} else {
$backups[] = array(
'path' => $iterator->getSubPath(),
'filename' => $iterator->getSubPathname(),
'mtime' => $iterator->getMTime(),
'size' => null,
);
}
} catch ( Exception $e ) {
$backups[] = array(
'path' => $iterator->getSubPath(),
'filename' => $iterator->getSubPathname(),
'mtime' => null,
'size' => null,
);
}
}
// Sort backups modified date
usort( $backups, 'Ai1wm_Backups::compare' );
} catch ( Exception $e ) {
}
return $backups;
}
/**
* Count all backup files
*
* @return integer
*/
public static function count_files() {
return count( Ai1wm_Backups::get_files() );
}
/**
* Delete backup file
*
* @param string $file File name
* @return boolean
*/
public static function delete_file( $file ) {
if ( ai1wm_is_filename_supported( $file ) ) {
if ( $deleted = @unlink( ai1wm_backup_path( array( 'archive' => $file ) ) ) ) {
do_action( 'ai1wm_status_backup_deleted', $file );
}
return $deleted;
}
return false;
}
/**
* Get all backup labels
*
* @return array
*/
public static function get_labels() {
return get_option( AI1WM_BACKUPS_LABELS, array() );
}
/**
* Set backup label
*
* @param string $file File name
* @param string $label File label
* @return boolean
*/
public static function set_label( $file, $label ) {
if ( ( $labels = get_option( AI1WM_BACKUPS_LABELS, array() ) ) !== false ) {
$labels[ $file ] = $label;
}
return update_option( AI1WM_BACKUPS_LABELS, $labels );
}
/**
* Delete backup label
*
* @param string $file File name
* @return boolean
*/
public static function delete_label( $file ) {
if ( ( $labels = get_option( AI1WM_BACKUPS_LABELS, array() ) ) !== false ) {
unset( $labels[ $file ] );
}
return update_option( AI1WM_BACKUPS_LABELS, $labels );
}
/**
* Compare backup files by modified time
*
* @param array $a File item A
* @param array $b File item B
* @return integer
*/
public static function compare( $a, $b ) {
if ( $a['mtime'] === $b['mtime'] ) {
return 0;
}
return ( $a['mtime'] > $b['mtime'] ) ? - 1 : 1;
}
/**
* Check if backups are downloadable
*/
public static function are_downloadable() {
static $downloadable = null;
if ( is_null( $downloadable ) ) {
$downloadable = Ai1wm_Backups::are_in_wp_content_folder() || strpos( AI1WM_BACKUPS_PATH, untrailingslashit( ABSPATH ) ) === 0;
}
return $downloadable;
}
public static function are_in_wp_content_folder() {
static $in_wp_content = null;
if ( is_null( $in_wp_content ) ) {
$in_wp_content = strpos( AI1WM_BACKUPS_PATH, untrailingslashit( WP_CONTENT_DIR ) ) === 0;
}
return $in_wp_content;
}
}
lib/model/class-ai1wm-deprecated.php 0000644 00000003731 14720661726 0013361 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Abstract {}
class Ai1wm_Import_Abstract {}
class Ai1wm_Config {}
lib/model/class-ai1wm-template.php 0000644 00000005754 14720661726 0013103 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Template extends Bandar {
/**
* Renders a file and returns its contents
*
* @param string $view View to render
* @param array $args Set of arguments
* @param string|bool $path Path to template
* @return string Rendered view
*/
public static function render( $view, $args = array(), $path = false ) {
parent::render( $view, $args, $path );
}
/**
* Returns link to an asset file
*
* @param string $asset Asset file
* @param string $prefix Asset prefix
* @return string Asset URL
*/
public static function asset_link( $asset, $prefix = 'AI1WM' ) {
return constant( $prefix . '_URL' ) . '/lib/view/assets/' . $asset . '?v=' . constant( $prefix . '_VERSION' );
}
/**
* Renders a file and gets its contents
*
* @param string $view View to render
* @param array $args Set of arguments
* @param string|bool $path Path to template
* @return string Rendered view
*/
public static function get_content( $view, $args = array(), $path = false ) {
return parent::getTemplateContent( $view, $args, $path );
}
}
lib/model/export/class-ai1wm-export-enumerate-themes.php 0000644 00000011544 14720661726 0017372 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Enumerate_Themes {
public static function execute( $params ) {
$exclude_filters = array();
// Get total themes files count
if ( isset( $params['total_themes_files_count'] ) ) {
$total_themes_files_count = (int) $params['total_themes_files_count'];
} else {
$total_themes_files_count = 1;
}
// Get total themes files size
if ( isset( $params['total_themes_files_size'] ) ) {
$total_themes_files_size = (int) $params['total_themes_files_size'];
} else {
$total_themes_files_size = 1;
}
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of WordPress theme files...', AI1WM_PLUGIN_NAME ) );
// Exclude inactive themes
if ( isset( $params['options']['no_inactive_themes'] ) ) {
foreach ( search_theme_directories() as $theme_name => $theme_info ) {
if ( ! in_array( $theme_name, array( get_template(), get_stylesheet() ) ) ) {
if ( isset( $theme_info['theme_root'] ) ) {
$exclude_filters[] = $theme_info['theme_root'] . DIRECTORY_SEPARATOR . $theme_name;
}
}
}
}
// Exclude selected files
if ( isset( $params['options']['exclude_files'], $params['excluded_files'] ) ) {
if ( ( $excluded_files = explode( ',', $params['excluded_files'] ) ) ) {
foreach ( $excluded_files as $excluded_path ) {
$exclude_filters[] = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . untrailingslashit( $excluded_path );
}
}
}
// Create themes list file
$themes_list = ai1wm_open( ai1wm_themes_list_path( $params ), 'w' );
// Enumerate over themes directory
if ( isset( $params['options']['no_themes'] ) === false ) {
foreach ( ai1wm_get_themes_dirs() as $theme_dir ) {
if ( is_dir( $theme_dir ) ) {
// Iterate over themes directory
$iterator = new Ai1wm_Recursive_Directory_Iterator( $theme_dir );
// Exclude themes files
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_themes_from_export', ai1wm_theme_filters( $exclude_filters ) ) );
// Recursively iterate over themes directory
$iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
// Write path line
foreach ( $iterator as $item ) {
if ( $item->isFile() ) {
if ( ai1wm_putcsv( $themes_list, array( $iterator->getPathname(), $iterator->getSubPathname(), $iterator->getSize(), $iterator->getMTime() ) ) ) {
$total_themes_files_count++;
// Add current file size
$total_themes_files_size += $iterator->getSize();
}
}
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of WordPress theme files.', AI1WM_PLUGIN_NAME ) );
// Set total themes files count
$params['total_themes_files_count'] = $total_themes_files_count;
// Set total themes files size
$params['total_themes_files_size'] = $total_themes_files_size;
// Close the themes list file
ai1wm_close( $themes_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-archive.php 0000644 00000004542 14720661726 0015543 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Archive {
public static function execute( $params ) {
do_action( 'ai1wm_status_export_start', $params );
// Set progress
Ai1wm_Status::info( __( 'Creating an empty archive...', AI1WM_PLUGIN_NAME ) );
// Create empty archive file
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
$archive->close();
// Set progress
Ai1wm_Status::info( __( 'Done creating an empty archive.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/export/class-ai1wm-export-plugins.php 0000644 00000015162 14720661726 0015603 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Plugins {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Set plugins bytes offset
if ( isset( $params['plugins_bytes_offset'] ) ) {
$plugins_bytes_offset = (int) $params['plugins_bytes_offset'];
} else {
$plugins_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total plugins files size
if ( isset( $params['total_plugins_files_size'] ) ) {
$total_plugins_files_size = (int) $params['total_plugins_files_size'];
} else {
$total_plugins_files_size = 1;
}
// Get total plugins files count
if ( isset( $params['total_plugins_files_count'] ) ) {
$total_plugins_files_count = (int) $params['total_plugins_files_count'];
} else {
$total_plugins_files_count = 1;
}
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_plugins_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d plugin files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_plugins_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Get plugins list file
$plugins_list = ai1wm_open( ai1wm_plugins_list_path( $params ), 'r' );
// Set the file pointer at the current index
if ( fseek( $plugins_list, $plugins_bytes_offset ) !== -1 ) {
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Loop over files
while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = fgetcsv( $plugins_list ) ) {
$file_bytes_written = 0;
// Add file to archive
if ( ( $completed = $archive->add_file( $file_abspath, 'plugins' . DIRECTORY_SEPARATOR . $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
// Get plugins bytes offset
$plugins_bytes_offset = ftell( $plugins_list );
}
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_plugins_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d plugin files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_plugins_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
}
// End of the plugins list?
if ( feof( $plugins_list ) ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset plugins bytes offset
unset( $params['plugins_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total plugins files size
unset( $params['total_plugins_files_size'] );
// Unset total plugins files count
unset( $params['total_plugins_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set plugins bytes offset
$params['plugins_bytes_offset'] = $plugins_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total plugins files size
$params['total_plugins_files_size'] = $total_plugins_files_size;
// Set total plugins files count
$params['total_plugins_files_count'] = $total_plugins_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the plugins list file
ai1wm_close( $plugins_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-database-file.php 0000644 00000011120 14720661726 0016571 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Database_File {
public static function execute( $params ) {
// Set exclude database
if ( isset( $params['options']['no_database'] ) ) {
return $params;
}
$database_bytes_written = 0;
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set database bytes offset
if ( isset( $params['database_bytes_offset'] ) ) {
$database_bytes_offset = (int) $params['database_bytes_offset'];
} else {
$database_bytes_offset = 0;
}
// Get total database size
if ( isset( $params['total_database_size'] ) ) {
$total_database_size = (int) $params['total_database_size'];
} else {
$total_database_size = ai1wm_database_bytes( $params );
}
// What percent of database have we processed?
$progress = (int) min( ( $database_bytes_offset / $total_database_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving database...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Add database.sql to archive
if ( $archive->add_file( ai1wm_database_path( $params ), AI1WM_DATABASE_NAME, $database_bytes_written, $database_bytes_offset ) ) {
// Set progress
Ai1wm_Status::info( __( 'Done archiving database.', AI1WM_PLUGIN_NAME ) );
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset database bytes offset
unset( $params['database_bytes_offset'] );
// Unset total database size
unset( $params['total_database_size'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// What percent of database have we processed?
$progress = (int) min( ( $database_bytes_offset / $total_database_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving database...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set database bytes offset
$params['database_bytes_offset'] = $database_bytes_offset;
// Set total database size
$params['total_database_size'] = $total_database_size;
// Set completed flag
$params['completed'] = false;
}
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
return $params;
}
}
lib/model/export/class-ai1wm-export-themes.php 0000644 00000015077 14720661726 0015414 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Themes {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Set themes bytes offset
if ( isset( $params['themes_bytes_offset'] ) ) {
$themes_bytes_offset = (int) $params['themes_bytes_offset'];
} else {
$themes_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total themes files size
if ( isset( $params['total_themes_files_size'] ) ) {
$total_themes_files_size = (int) $params['total_themes_files_size'];
} else {
$total_themes_files_size = 1;
}
// Get total themes files count
if ( isset( $params['total_themes_files_count'] ) ) {
$total_themes_files_count = (int) $params['total_themes_files_count'];
} else {
$total_themes_files_count = 1;
}
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_themes_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d theme files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_themes_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Get themes list file
$themes_list = ai1wm_open( ai1wm_themes_list_path( $params ), 'r' );
// Set the file pointer at the current index
if ( fseek( $themes_list, $themes_bytes_offset ) !== -1 ) {
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Loop over files
while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = fgetcsv( $themes_list ) ) {
$file_bytes_written = 0;
// Add file to archive
if ( ( $completed = $archive->add_file( $file_abspath, 'themes' . DIRECTORY_SEPARATOR . $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
// Get themes bytes offset
$themes_bytes_offset = ftell( $themes_list );
}
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_themes_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d theme files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_themes_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
}
// End of the themes list?
if ( feof( $themes_list ) ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset themes bytes offset
unset( $params['themes_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total themes files size
unset( $params['total_themes_files_size'] );
// Unset total themes files count
unset( $params['total_themes_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set themes bytes offset
$params['themes_bytes_offset'] = $themes_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total themes files size
$params['total_themes_files_size'] = $total_themes_files_size;
// Set total themes files count
$params['total_themes_files_count'] = $total_themes_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the themes list file
ai1wm_close( $themes_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-content.php 0000644 00000015122 14720661726 0015570 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Content {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Set content bytes offset
if ( isset( $params['content_bytes_offset'] ) ) {
$content_bytes_offset = (int) $params['content_bytes_offset'];
} else {
$content_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total content files size
if ( isset( $params['total_content_files_size'] ) ) {
$total_content_files_size = (int) $params['total_content_files_size'];
} else {
$total_content_files_size = 1;
}
// Get total content files count
if ( isset( $params['total_content_files_count'] ) ) {
$total_content_files_count = (int) $params['total_content_files_count'];
} else {
$total_content_files_count = 1;
}
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d content files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_content_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Get content list file
$content_list = ai1wm_open( ai1wm_content_list_path( $params ), 'r' );
// Set the file pointer at the current index
if ( fseek( $content_list, $content_bytes_offset ) !== -1 ) {
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Loop over files
while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = fgetcsv( $content_list ) ) {
$file_bytes_written = 0;
// Add file to archive
if ( ( $completed = $archive->add_file( $file_abspath, $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
// Get content bytes offset
$content_bytes_offset = ftell( $content_list );
}
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d content files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_content_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
}
// End of the content list?
if ( feof( $content_list ) ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset content bytes offset
unset( $params['content_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total content files size
unset( $params['total_content_files_size'] );
// Unset total content files count
unset( $params['total_content_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set content bytes offset
$params['content_bytes_offset'] = $content_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total content files size
$params['total_content_files_size'] = $total_content_files_size;
// Set total content files count
$params['total_content_files_count'] = $total_content_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the content list file
ai1wm_close( $content_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-enumerate-content.php 0000644 00000011705 14720661726 0017556 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Enumerate_Content {
public static function execute( $params ) {
$exclude_filters = array_merge( array( ai1wm_get_uploads_dir(), ai1wm_get_plugins_dir() ), ai1wm_get_themes_dirs() );
// Get total content files count
if ( isset( $params['total_content_files_count'] ) ) {
$total_content_files_count = (int) $params['total_content_files_count'];
} else {
$total_content_files_count = 1;
}
// Get total content files size
if ( isset( $params['total_content_files_size'] ) ) {
$total_content_files_size = (int) $params['total_content_files_size'];
} else {
$total_content_files_size = 1;
}
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of WordPress content files...', AI1WM_PLUGIN_NAME ) );
// Exclude cache
if ( isset( $params['options']['no_cache'] ) ) {
$exclude_filters[] = 'cache';
}
// Exclude must-use plugins
if ( isset( $params['options']['no_muplugins'] ) ) {
$exclude_filters[] = 'mu-plugins';
}
// Exclude media
if ( isset( $params['options']['no_media'] ) ) {
$exclude_filters[] = 'blogs.dir';
}
// Exclude SQLite file
if ( defined( 'FQDB' ) ) {
$exclude_filters[] = FQDB;
}
// Exclude selected files
if ( isset( $params['options']['exclude_files'], $params['excluded_files'] ) ) {
if ( ( $excluded_files = explode( ',', $params['excluded_files'] ) ) ) {
foreach ( $excluded_files as $excluded_path ) {
$exclude_filters[] = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . untrailingslashit( $excluded_path );
}
}
}
// Create content list file
$content_list = ai1wm_open( ai1wm_content_list_path( $params ), 'w' );
// Enumerate over content directory
if ( isset( $params['options']['no_themes'], $params['options']['no_muplugins'], $params['options']['no_plugins'] ) === false ) {
// Iterate over content directory
$iterator = new Ai1wm_Recursive_Directory_Iterator( WP_CONTENT_DIR );
// Exclude content files
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_content_from_export', ai1wm_content_filters( $exclude_filters ) ) );
// Recursively iterate over content directory
$iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
// Write path line
foreach ( $iterator as $item ) {
if ( $item->isFile() ) {
if ( ai1wm_putcsv( $content_list, array( $iterator->getPathname(), $iterator->getSubPathname(), $iterator->getSize(), $iterator->getMTime() ) ) ) {
$total_content_files_count++;
// Add current file size
$total_content_files_size += $iterator->getSize();
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of WordPress content files.', AI1WM_PLUGIN_NAME ) );
// Set total content files count
$params['total_content_files_count'] = $total_content_files_count;
// Set total content files size
$params['total_content_files_size'] = $total_content_files_size;
// Close the content list file
ai1wm_close( $content_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-config.php 0000644 00000014716 14720661726 0015373 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Config {
public static function execute( $params ) {
global $table_prefix, $wp_version;
// Set progress
Ai1wm_Status::info( __( 'Preparing configuration file...', AI1WM_PLUGIN_NAME ) );
// Get options
$options = wp_load_alloptions();
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
$config = array();
// Set site URL
$config['SiteURL'] = site_url();
// Set home URL
$config['HomeURL'] = home_url();
// Set internal site URL
if ( isset( $options['siteurl'] ) ) {
$config['InternalSiteURL'] = $options['siteurl'];
}
// Set internal home URL
if ( isset( $options['home'] ) ) {
$config['InternalHomeURL'] = $options['home'];
}
// Set replace old and new values
if ( isset( $params['options']['replace'] ) && ( $replace = $params['options']['replace'] ) ) {
for ( $i = 0; $i < count( $replace['old_value'] ); $i++ ) {
if ( ! empty( $replace['old_value'][ $i ] ) && ! empty( $replace['new_value'][ $i ] ) ) {
$config['Replace']['OldValues'][] = $replace['old_value'][ $i ];
$config['Replace']['NewValues'][] = $replace['new_value'][ $i ];
}
}
}
// Set no spam comments
if ( isset( $params['options']['no_spam_comments'] ) ) {
$config['NoSpamComments'] = true;
}
// Set no post revisions
if ( isset( $params['options']['no_post_revisions'] ) ) {
$config['NoPostRevisions'] = true;
}
// Set no media
if ( isset( $params['options']['no_media'] ) ) {
$config['NoMedia'] = true;
}
// Set no themes
if ( isset( $params['options']['no_themes'] ) ) {
$config['NoThemes'] = true;
}
// Set no inactive themes
if ( isset( $params['options']['no_inactive_themes'] ) ) {
$config['NoInactiveThemes'] = true;
}
// Set no must-use plugins
if ( isset( $params['options']['no_muplugins'] ) ) {
$config['NoMustUsePlugins'] = true;
}
// Set no plugins
if ( isset( $params['options']['no_plugins'] ) ) {
$config['NoPlugins'] = true;
}
// Set no inactive plugins
if ( isset( $params['options']['no_inactive_plugins'] ) ) {
$config['NoInactivePlugins'] = true;
}
// Set no cache
if ( isset( $params['options']['no_cache'] ) ) {
$config['NoCache'] = true;
}
// Set no database
if ( isset( $params['options']['no_database'] ) ) {
$config['NoDatabase'] = true;
}
// Set no email replace
if ( isset( $params['options']['no_email_replace'] ) ) {
$config['NoEmailReplace'] = true;
}
// Set plugin version
$config['Plugin'] = array( 'Version' => AI1WM_VERSION );
// Set WordPress version and content
$config['WordPress'] = array( 'Version' => $wp_version, 'Content' => WP_CONTENT_DIR, 'Plugins' => ai1wm_get_plugins_dir(), 'Themes' => ai1wm_get_themes_dirs(), 'Uploads' => ai1wm_get_uploads_dir(), 'UploadsURL' => ai1wm_get_uploads_url() );
// Set database version
$config['Database'] = array(
'Version' => $db_client->server_info(),
'Charset' => defined( 'DB_CHARSET' ) ? DB_CHARSET : 'undefined',
'Collate' => defined( 'DB_COLLATE' ) ? DB_COLLATE : 'undefined',
'Prefix' => $table_prefix,
);
// Exclude selected db tables
if ( isset( $params['options']['exclude_db_tables'], $params['excluded_db_tables'] ) ) {
if ( ( $excluded_db_tables = explode( ',', $params['excluded_db_tables'] ) ) ) {
$config['Database']['ExcludedTables'] = $excluded_db_tables;
}
}
// Set PHP version
$config['PHP'] = array( 'Version' => PHP_VERSION, 'System' => PHP_OS, 'Integer' => PHP_INT_SIZE );
// Set active plugins
$config['Plugins'] = array_values( array_diff( ai1wm_active_plugins(), ai1wm_active_servmask_plugins() ) );
// Set active template
$config['Template'] = ai1wm_active_template();
// Set active stylesheet
$config['Stylesheet'] = ai1wm_active_stylesheet();
// Set upload path
$config['Uploads'] = get_option( 'upload_path' );
// Set upload URL path
$config['UploadsURL'] = get_option( 'upload_url_path' );
// Set server info
$config['Server'] = array( '.htaccess' => base64_encode( ai1wm_get_htaccess() ), 'web.config' => base64_encode( ai1wm_get_webconfig() ) );
if ( isset( $params['options']['encrypt_backups'] ) ) {
$config['Encrypted'] = true;
$config['EncryptedSignature'] = base64_encode( ai1wm_encrypt_string( AI1WM_SIGN_TEXT, $params['options']['encrypt_password'] ) );
}
// Save package.json file
$handle = ai1wm_open( ai1wm_package_path( $params ), 'w' );
ai1wm_write( $handle, json_encode( $config ) );
ai1wm_close( $handle );
// Set progress
Ai1wm_Status::info( __( 'Done preparing configuration file.', AI1WM_PLUGIN_NAME ) );
return $params;
}
}
lib/model/export/class-ai1wm-export-media.php 0000644 00000015020 14720661726 0015172 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Media {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Set media bytes offset
if ( isset( $params['media_bytes_offset'] ) ) {
$media_bytes_offset = (int) $params['media_bytes_offset'];
} else {
$media_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total media files size
if ( isset( $params['total_media_files_size'] ) ) {
$total_media_files_size = (int) $params['total_media_files_size'];
} else {
$total_media_files_size = 1;
}
// Get total media files count
if ( isset( $params['total_media_files_count'] ) ) {
$total_media_files_count = (int) $params['total_media_files_count'];
} else {
$total_media_files_count = 1;
}
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_media_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d media files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_media_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Get media list file
$media_list = ai1wm_open( ai1wm_media_list_path( $params ), 'r' );
// Set the file pointer at the current index
if ( fseek( $media_list, $media_bytes_offset ) !== -1 ) {
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Loop over files
while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = fgetcsv( $media_list ) ) {
$file_bytes_written = 0;
// Add file to archive
if ( ( $completed = $archive->add_file( $file_abspath, 'uploads' . DIRECTORY_SEPARATOR . $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
// Get media bytes offset
$media_bytes_offset = ftell( $media_list );
}
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_media_files_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving %d media files...
%d%% complete', AI1WM_PLUGIN_NAME ), $total_media_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
}
// End of the media list?
if ( feof( $media_list ) ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset media bytes offset
unset( $params['media_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total media files size
unset( $params['total_media_files_size'] );
// Unset total media files count
unset( $params['total_media_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set media bytes offset
$params['media_bytes_offset'] = $media_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total media files size
$params['total_media_files_size'] = $total_media_files_size;
// Set total media files count
$params['total_media_files_count'] = $total_media_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the media list file
ai1wm_close( $media_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-enumerate-plugins.php 0000644 00000011356 14720661726 0017567 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Enumerate_Plugins {
public static function execute( $params ) {
$exclude_filters = array( AI1WM_SQLITE_DATABASE_INTEGRATION_NAME );
// Get total plugins files count
if ( isset( $params['total_plugins_files_count'] ) ) {
$total_plugins_files_count = (int) $params['total_plugins_files_count'];
} else {
$total_plugins_files_count = 1;
}
// Get total plugins files size
if ( isset( $params['total_plugins_files_size'] ) ) {
$total_plugins_files_size = (int) $params['total_plugins_files_size'];
} else {
$total_plugins_files_size = 1;
}
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of WordPress plugin files...', AI1WM_PLUGIN_NAME ) );
// Exclude inactive plugins
if ( isset( $params['options']['no_inactive_plugins'] ) ) {
foreach ( get_plugins() as $plugin_name => $plugin_info ) {
if ( is_plugin_inactive( $plugin_name ) ) {
$exclude_filters[] = ( dirname( $plugin_name ) === '.' ? basename( $plugin_name ) : dirname( $plugin_name ) );
}
}
}
// Exclude selected files
if ( isset( $params['options']['exclude_files'], $params['excluded_files'] ) ) {
if ( ( $excluded_files = explode( ',', $params['excluded_files'] ) ) ) {
foreach ( $excluded_files as $excluded_path ) {
$exclude_filters[] = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . untrailingslashit( $excluded_path );
}
}
}
// Create plugins list file
$plugins_list = ai1wm_open( ai1wm_plugins_list_path( $params ), 'w' );
// Enumerate over plugins directory
if ( isset( $params['options']['no_plugins'] ) === false ) {
// Iterate over plugins directory
$iterator = new Ai1wm_Recursive_Directory_Iterator( ai1wm_get_plugins_dir() );
// Exclude plugins files
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_plugins_from_export', ai1wm_plugin_filters( $exclude_filters ) ) );
// Recursively iterate over plugins directory
$iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
// Write path line
foreach ( $iterator as $item ) {
if ( $item->isFile() ) {
if ( ai1wm_putcsv( $plugins_list, array( $iterator->getPathname(), $iterator->getSubPathname(), $iterator->getSize(), $iterator->getMTime() ) ) ) {
$total_plugins_files_count++;
// Add current file size
$total_plugins_files_size += $iterator->getSize();
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of WordPress plugin files.', AI1WM_PLUGIN_NAME ) );
// Set total plugins files count
$params['total_plugins_files_count'] = $total_plugins_files_count;
// Set total plugins files size
$params['total_plugins_files_size'] = $total_plugins_files_size;
// Close the plugins list file
ai1wm_close( $plugins_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-clean.php 0000644 00000004360 14720661726 0015202 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Clean {
public static function execute( $params ) {
// Delete storage files
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
if ( isset( $params['ai1wm_export_cancel'] ) ) {
do_action( 'ai1wm_status_export_canceled', $params );
}
// Exit in console
if ( defined( 'WP_CLI' ) ) {
return $params;
}
exit;
}
}
lib/model/export/class-ai1wm-export-download.php 0000644 00000007257 14720661726 0015737 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Download {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Renaming exported file...', AI1WM_PLUGIN_NAME ) );
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Append EOF block
$archive->close( true );
// Rename archive file
if ( rename( ai1wm_archive_path( $params ), ai1wm_backup_path( $params ) ) ) {
$blog_id = null;
// Get subsite Blog ID
if ( isset( $params['options']['sites'] ) && ( $sites = $params['options']['sites'] ) ) {
if ( count( $sites ) === 1 ) {
$blog_id = array_shift( $sites );
}
}
// Set archive details
$file = ai1wm_archive_name( $params );
$link = ai1wm_backup_url( $params );
$size = ai1wm_backup_size( $params );
$name = ai1wm_site_name( $blog_id );
// Set progress
if ( ai1wm_direct_download_supported() ) {
Ai1wm_Status::download(
sprintf(
__(
'' .
'Download %s' .
'Size: %s' .
'',
AI1WM_PLUGIN_NAME
),
$link,
$name,
$file,
$name,
$size
)
);
} else {
Ai1wm_Status::download(
sprintf(
__(
'' .
'Download %s' .
'Size: %s' .
'',
AI1WM_PLUGIN_NAME
),
$name,
$file,
$name,
$size
)
);
}
}
do_action( 'ai1wm_status_export_done', $params );
if ( isset( $params['ai1wm_manual_backup'] ) ) {
do_action( 'ai1wm_status_backup_created', $params );
}
return $params;
}
}
lib/model/export/class-ai1wm-export-config-file.php 0000644 00000010744 14720661726 0016305 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Config_File {
public static function execute( $params ) {
$package_bytes_written = 0;
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set package bytes offset
if ( isset( $params['package_bytes_offset'] ) ) {
$package_bytes_offset = (int) $params['package_bytes_offset'];
} else {
$package_bytes_offset = 0;
}
// Get total package size
if ( isset( $params['total_package_size'] ) ) {
$total_package_size = (int) $params['total_package_size'];
} else {
$total_package_size = ai1wm_package_bytes( $params );
}
// What percent of package have we processed?
$progress = (int) min( ( $package_bytes_offset / $total_package_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving configuration file...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Add package.json to archive
if ( $archive->add_file( ai1wm_package_path( $params ), AI1WM_PACKAGE_NAME, $package_bytes_written, $package_bytes_offset ) ) {
// Set progress
Ai1wm_Status::info( __( 'Done archiving configuration file.', AI1WM_PLUGIN_NAME ) );
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset package bytes offset
unset( $params['package_bytes_offset'] );
// Unset total package size
unset( $params['total_package_size'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// What percent of package have we processed?
$progress = (int) min( ( $package_bytes_offset / $total_package_size ) * 100, 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Archiving configuration file...
%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set package bytes offset
$params['package_bytes_offset'] = $package_bytes_offset;
// Set total package size
$params['total_package_size'] = $total_package_size;
// Set completed flag
$params['completed'] = false;
}
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
return $params;
}
}
lib/model/export/class-ai1wm-export-database.php 0000644 00000017457 14720661726 0015677 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Database {
public static function execute( $params ) {
// Set exclude database
if ( isset( $params['options']['no_database'] ) ) {
return $params;
}
// Set query offset
if ( isset( $params['query_offset'] ) ) {
$query_offset = (int) $params['query_offset'];
} else {
$query_offset = 0;
}
// Set table index
if ( isset( $params['table_index'] ) ) {
$table_index = (int) $params['table_index'];
} else {
$table_index = 0;
}
// Set table offset
if ( isset( $params['table_offset'] ) ) {
$table_offset = (int) $params['table_offset'];
} else {
$table_offset = 0;
}
// Set table rows
if ( isset( $params['table_rows'] ) ) {
$table_rows = (int) $params['table_rows'];
} else {
$table_rows = 0;
}
// Set total tables count
if ( isset( $params['total_tables_count'] ) ) {
$total_tables_count = (int) $params['total_tables_count'];
} else {
$total_tables_count = 1;
}
// What percent of tables have we processed?
$progress = (int) ( ( $table_index / $total_tables_count ) * 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Exporting database...
%d%% complete
%s records saved', AI1WM_PLUGIN_NAME ), $progress, number_format_i18n( $table_rows ) ) );
// Get tables list file
$tables_list = ai1wm_open( ai1wm_tables_list_path( $params ), 'r' );
// Loop over tables
$tables = array();
while ( list( $table_name ) = fgetcsv( $tables_list ) ) {
$tables[] = $table_name;
}
// Close the tables list file
ai1wm_close( $tables_list );
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
// Exclude spam comments
if ( isset( $params['options']['no_spam_comments'] ) ) {
$db_client->set_table_where_query( ai1wm_table_prefix() . 'comments', "`comment_approved` != 'spam'" )
->set_table_where_query( ai1wm_table_prefix() . 'commentmeta', sprintf( "`comment_ID` IN ( SELECT `comment_ID` FROM `%s` WHERE `comment_approved` != 'spam' )", ai1wm_table_prefix() . 'comments' ) );
}
// Exclude post revisions
if ( isset( $params['options']['no_post_revisions'] ) ) {
$db_client->set_table_where_query( ai1wm_table_prefix() . 'posts', "`post_type` != 'revision'" );
}
$old_table_prefixes = $old_column_prefixes = array();
$new_table_prefixes = $new_column_prefixes = array();
// Set table prefixes
if ( ai1wm_table_prefix() ) {
$old_table_prefixes[] = ai1wm_table_prefix();
$new_table_prefixes[] = ai1wm_servmask_prefix();
} else {
foreach ( $tables as $table_name ) {
$old_table_prefixes[] = $table_name;
$new_table_prefixes[] = ai1wm_servmask_prefix() . $table_name;
}
}
// Set column prefixes
if ( strlen( ai1wm_table_prefix() ) > 1 ) {
$old_column_prefixes[] = ai1wm_table_prefix();
$new_column_prefixes[] = ai1wm_servmask_prefix();
} else {
foreach ( array( 'user_roles', 'capabilities', 'user_level', 'dashboard_quick_press_last_post_id', 'user-settings', 'user-settings-time' ) as $column_prefix ) {
$old_column_prefixes[] = ai1wm_table_prefix() . $column_prefix;
$new_column_prefixes[] = ai1wm_servmask_prefix() . $column_prefix;
}
}
$db_client->set_tables( $tables )
->set_old_table_prefixes( $old_table_prefixes )
->set_new_table_prefixes( $new_table_prefixes )
->set_old_column_prefixes( $old_column_prefixes )
->set_new_column_prefixes( $new_column_prefixes );
// Exclude column prefixes
$db_client->set_reserved_column_prefixes( array( 'wp_force_deactivated_plugins', 'wp_page_for_privacy_policy' ) );
// Exclude site options
$db_client->set_table_where_query( ai1wm_table_prefix() . 'options', sprintf( "`option_name` NOT IN ('%s', '%s', '%s', '%s', '%s', '%s', '%s')", AI1WM_STATUS, AI1WM_SECRET_KEY, AI1WM_AUTH_USER, AI1WM_AUTH_PASSWORD, AI1WM_AUTH_HEADER, AI1WM_BACKUPS_LABELS, AI1WM_SITES_LINKS ) );
// Set table select columns
if ( ( $column_names = $db_client->get_column_names( ai1wm_table_prefix() . 'options' ) ) ) {
if ( isset( $column_names['option_name'], $column_names['option_value'] ) ) {
$column_names['option_value'] = sprintf( "(CASE WHEN option_name = '%s' THEN 'a:0:{}' WHEN (option_name = '%s' OR option_name = '%s') THEN '' ELSE option_value END) AS option_value", AI1WM_ACTIVE_PLUGINS, AI1WM_ACTIVE_TEMPLATE, AI1WM_ACTIVE_STYLESHEET );
}
$db_client->set_table_select_columns( ai1wm_table_prefix() . 'options', $column_names );
}
// Set table prefix columns
$db_client->set_table_prefix_columns( ai1wm_table_prefix() . 'options', array( 'option_name' ) )
->set_table_prefix_columns( ai1wm_table_prefix() . 'usermeta', array( 'meta_key' ) );
// Export database
if ( $db_client->export( ai1wm_database_path( $params ), $query_offset, $table_index, $table_offset, $table_rows ) ) {
// Set progress
Ai1wm_Status::info( __( 'Done exporting database.', AI1WM_PLUGIN_NAME ) );
// Unset query offset
unset( $params['query_offset'] );
// Unset table index
unset( $params['table_index'] );
// Unset table offset
unset( $params['table_offset'] );
// Unset table rows
unset( $params['table_rows'] );
// Unset total tables count
unset( $params['total_tables_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// What percent of tables have we processed?
$progress = (int) ( ( $table_index / $total_tables_count ) * 100 );
// Set progress
Ai1wm_Status::info( sprintf( __( 'Exporting database...
%d%% complete
%s records saved', AI1WM_PLUGIN_NAME ), $progress, number_format_i18n( $table_rows ) ) );
// Set query offset
$params['query_offset'] = $query_offset;
// Set table index
$params['table_index'] = $table_index;
// Set table offset
$params['table_offset'] = $table_offset;
// Set table rows
$params['table_rows'] = $table_rows;
// Set total tables count
$params['total_tables_count'] = $total_tables_count;
// Set completed flag
$params['completed'] = false;
}
return $params;
}
}
lib/model/export/class-ai1wm-export-init.php 0000644 00000004777 14720661726 0015077 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Init {
public static function execute( $params ) {
$blog_id = null;
// Get subsite Blog ID
if ( isset( $params['options']['sites'] ) && ( $sites = $params['options']['sites'] ) ) {
if ( count( $sites ) === 1 ) {
$blog_id = array_shift( $sites );
}
}
// Set progress
Ai1wm_Status::info( __( 'Preparing to export...', AI1WM_PLUGIN_NAME ) );
// Set archive
if ( empty( $params['archive'] ) ) {
$params['archive'] = ai1wm_archive_file( $blog_id );
}
// Set storage
if ( empty( $params['storage'] ) ) {
$params['storage'] = ai1wm_storage_folder();
}
return $params;
}
}
lib/model/export/class-ai1wm-export-enumerate-tables.php 0000644 00000007363 14720661726 0017363 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Enumerate_Tables {
public static function execute( $params ) {
// Set exclude database
if ( isset( $params['options']['no_database'] ) ) {
return $params;
}
// Get total tables count
if ( isset( $params['total_tables_count'] ) ) {
$total_tables_count = (int) $params['total_tables_count'];
} else {
$total_tables_count = 1;
}
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of WordPress database tables...', AI1WM_PLUGIN_NAME ) );
// Get database client
$db_client = Ai1wm_Database_Utility::create_client();
// Include table prefixes
if ( ai1wm_table_prefix() ) {
$db_client->add_table_prefix_filter( ai1wm_table_prefix() );
// Include table prefixes (Webba Booking)
foreach ( array( 'wbk_services', 'wbk_days_on_off', 'wbk_locked_time_slots', 'wbk_appointments', 'wbk_cancelled_appointments', 'wbk_email_templates', 'wbk_service_categories', 'wbk_gg_calendars', 'wbk_coupons' ) as $table_name ) {
$db_client->add_table_prefix_filter( $table_name );
}
}
// Create tables list file
$tables_list = ai1wm_open( ai1wm_tables_list_path( $params ), 'w' );
// Exclude selected db tables
$excluded_db_tables = array();
if ( isset( $params['options']['exclude_db_tables'], $params['excluded_db_tables'] ) ) {
$excluded_db_tables = explode( ',', $params['excluded_db_tables'] );
}
// Write table line
foreach ( $db_client->get_tables() as $table_name ) {
if ( ! in_array( $table_name, $excluded_db_tables ) && ai1wm_putcsv( $tables_list, array( $table_name ) ) ) {
$total_tables_count++;
}
}
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of WordPress database tables.', AI1WM_PLUGIN_NAME ) );
// Set total tables count
$params['total_tables_count'] = $total_tables_count;
// Close the tables list file
ai1wm_close( $tables_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-enumerate-media.php 0000644 00000010573 14720661726 0017165 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Enumerate_Media {
public static function execute( $params ) {
$exclude_filters = array();
// Get total media files count
if ( isset( $params['total_media_files_count'] ) ) {
$total_media_files_count = (int) $params['total_media_files_count'];
} else {
$total_media_files_count = 1;
}
// Get total media files size
if ( isset( $params['total_media_files_size'] ) ) {
$total_media_files_size = (int) $params['total_media_files_size'];
} else {
$total_media_files_size = 1;
}
// Set progress
Ai1wm_Status::info( __( 'Retrieving a list of WordPress media files...', AI1WM_PLUGIN_NAME ) );
// Exclude selected files
if ( isset( $params['options']['exclude_files'], $params['excluded_files'] ) ) {
if ( ( $excluded_files = explode( ',', $params['excluded_files'] ) ) ) {
foreach ( $excluded_files as $excluded_path ) {
$exclude_filters[] = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . untrailingslashit( $excluded_path );
}
}
}
// Create media list file
$media_list = ai1wm_open( ai1wm_media_list_path( $params ), 'w' );
// Enumerate over media directory
if ( isset( $params['options']['no_media'] ) === false ) {
if ( is_dir( ai1wm_get_uploads_dir() ) ) {
// Iterate over media directory
$iterator = new Ai1wm_Recursive_Directory_Iterator( ai1wm_get_uploads_dir() );
// Exclude media files
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_media_from_export', ai1wm_media_filters( $exclude_filters ) ) );
// Recursively iterate over content directory
$iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
// Write path line
foreach ( $iterator as $item ) {
if ( $item->isFile() ) {
if ( ai1wm_putcsv( $media_list, array( $iterator->getPathname(), $iterator->getSubPathname(), $iterator->getSize(), $iterator->getMTime() ) ) ) {
$total_media_files_count++;
// Add current file size
$total_media_files_size += $iterator->getSize();
}
}
}
}
}
// Set progress
Ai1wm_Status::info( __( 'Done retrieving a list of WordPress media files.', AI1WM_PLUGIN_NAME ) );
// Set total media files count
$params['total_media_files_count'] = $total_media_files_count;
// Set total media files size
$params['total_media_files_size'] = $total_media_files_size;
// Close the media list file
ai1wm_close( $media_list );
return $params;
}
}
lib/model/export/class-ai1wm-export-compatibility.php 0000644 00000004454 14720661726 0016775 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Compatibility {
public static function execute( $params ) {
// Set progress
Ai1wm_Status::info( __( 'Checking extensions compatibility...', AI1WM_PLUGIN_NAME ) );
// Get messages
$messages = Ai1wm_Compatibility::get( $params );
// Set messages
if ( empty( $messages ) ) {
return $params;
}
// Error message
throw new Ai1wm_Compatibility_Exception( implode( $messages ) );
}
}
lib/view/backups/index.php 0000644 00000006775 14720661726 0011566 0 ustar 00 .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
?>
%s.', AI1WM_PLUGIN_NAME ), esc_html( ai1wm_size_format( wp_max_upload_size() ) ) ); ?>
lib/view/import/import-buttons.php 0000644 00000006057 14720661726 0013340 0 ustar 00 . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ if ( ! defined( 'ABSPATH' ) ) { die( 'Kangaroos cannot jump here' ); } ?>%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_STORAGE_INDEX_PHP ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_ROBOTS_TXT ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_STORAGE_INDEX_HTML ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_INDEX_HTML ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_WORDPRESS_HTACCESS ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_INDEX_PHP ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_WEBCONFIG ) ?>
Technical details', AI1WM_PLUGIN_NAME ); ?>
%s folder. ' . 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 'for the All-in-One WP Migration plugin to function properly.', AI1WM_PLUGIN_NAME ), AI1WM_STORAGE_PATH ) ?>
%s folder. ' . 'You will need to create this folder and grant it read/write/execute permissions (0777) ' . 'for the All-in-One WP Migration plugin to function properly.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_PATH ) ?>
%s file. ' . 'Try to change permissions of the parent folder or send us an email at ' . 'support@servmask.com for assistance.', AI1WM_PLUGIN_NAME ), AI1WM_BACKUPS_HTACCESS ) ?>