diff --git a/class/class-mainwp-child-posts.php b/class/class-mainwp-child-posts.php
index 93c58f60..3ac69878 100644
--- a/class/class-mainwp-child-posts.php
+++ b/class/class-mainwp-child-posts.php
@@ -630,7 +630,7 @@ private function get_post_edit( $id ) { //phpcs:ignore -- NOSONAR - complex.
'post_password' => $post->post_password,
);
- if ( empty( $post_featured_image ) ) { // Featured image is set, retrieve URL.
+ if ( ! empty( $post_featured_image ) ) { // Featured image is set, retrieve URL.
$img = wp_get_attachment_image_src( $post_featured_image, 'full' );
$post_featured_image = $img[0];
}
@@ -693,7 +693,7 @@ private function get_page_edit( $id ) { //phpcs:ignore -- NOSONAR - complex.
'post_password' => $post->post_password,
);
- if ( empty( $post_featured_image ) ) {
+ if ( ! empty( $post_featured_image ) ) {
$img = wp_get_attachment_image_src( $post_featured_image, 'full' );
$post_featured_image = $img[0];
}
diff --git a/class/class-mainwp-child-server-information-base.php b/class/class-mainwp-child-server-information-base.php
index 042d8dfd..1d1550dc 100644
--- a/class/class-mainwp-child-server-information-base.php
+++ b/class/class-mainwp-child-server-information-base.php
@@ -29,44 +29,6 @@ public static function get_class_name() {
return __CLASS__;
}
- /**
- * Initiate check on important System Variables and compare them to required defaults.
- *
- * @uses \MainWP\Child\MainWP_Child_Server_Information_Base::check()
- * @uses \MainWP\Child\MainWP_Child_Server_Information_Base::check_mainwp_directory()
- *
- * @return int $i Number of detected issues.
- */
- protected static function get_warnings() {
- $i = 0;
- if ( ! static::check( '>=', '3.4', 'get_wordpress_version' ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '5.2.4', 'get_php_version' ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '5.0', 'get_my_sql_version' ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '30', 'get_max_execution_time', '=', '0' ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '2M', 'get_upload_max_filesize', null, null, true ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '2M', 'get_post_max_size', null, null, true ) ) {
- ++$i;
- }
- if ( ! static::check( '>=', '10000', 'get_output_buffer_size' ) ) {
- ++$i;
- }
- if ( ! static::check_mainwp_directory() ) {
- ++$i;
- }
-
- return $i;
- }
-
/**
* Check if MainWP Directory is writeable.
*
diff --git a/class/class-mainwp-child-server-information.php b/class/class-mainwp-child-server-information.php
index b80a0243..64135d43 100644
--- a/class/class-mainwp-child-server-information.php
+++ b/class/class-mainwp-child-server-information.php
@@ -31,169 +31,6 @@ public static function get_class_name() {
return __CLASS__;
}
- /**
- * Add hooks after WordPress has finished loading but before any headers are sent.
- *
- * @uses MainWP_Child_Server_Information::dismiss_warnings() Dismiss warnings.
- */
- public static function init() {
- add_action(
- 'wp_ajax_mainwp-child_dismiss_warnings',
- array(
- static::get_class_name(),
- 'dismiss_warnings',
- )
- );
- }
-
- /**
- * Dismiss warnings.
- *
- * @uses \MainWP\Child\MainWP_Helper::update_option() Update option by option name.
- * @uses \MainWP\Child\MainWP_Child_Server_Information_Base::get_warnings() Initiate check on important System Variables and compare them to required defaults.
- * @uses get_option() Retrieves an option value based on an option name.
- * @see https://developer.wordpress.org/reference/functions/get_option/
- *
- * @used-by MainWP_Child_Server_Information::init() Add hooks after WordPress has finished loading but before any headers are sent.
- */
- public static function dismiss_warnings() {
- // phpcs:disable WordPress.Security.NonceVerification
- if ( isset( $_POST['what'] ) ) {
- $dismissWarnings = get_option( 'mainwp_child_dismiss_warnings' );
- if ( ! is_array( $dismissWarnings ) ) {
- $dismissWarnings = array();
- }
- if ( 'warning' === $_POST['what'] ) {
- if ( isset( $_POST['warnings'] ) ) {
- $warnings = intval( $_POST['warnings'] );
- } else {
- $warnings = static::get_warnings();
- }
- $dismissWarnings['warnings'] = $warnings;
- }
- MainWP_Helper::update_option( 'mainwp_child_dismiss_warnings', $dismissWarnings );
- }
- // phpcs:enable
- }
-
- /**
- * Render warnings.
- *
- * @uses \MainWP\Child\MainWP_Helper::update_option() Update option by option name.
- * @uses \MainWP\Child\MainWP_Child_Server_Information_Base::get_warnings() Initiate check on important System Variables and compare them to required defaults.
- * @uses get_option() Retrieves an option value based on an option name.
- * @see https://developer.wordpress.org/reference/functions/get_option/
- *
- * @used-by MainWP_Child_Server_Information::init() Add hooks after WordPress has finished loading but before any headers are sent.
- */
- public static function render_warnings() {
- $request_uri = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : '';
- if ( isset( $_SERVER['REQUEST_URI'] ) && ( stristr( $request_uri, 'mainwp_child_tab' ) || stristr( $request_uri, 'mainwp-reports-page' ) || stristr( $request_uri, 'mainwp-reports-settings' ) ) ) {
- return;
- }
-
- // improved query.
- if ( static::is_mainwp_pages() ) {
- return;
- }
-
- $warnings = static::get_warnings();
-
- $dismissWarnings = get_option( 'mainwp_child_dismiss_warnings' );
- if ( ! is_array( $dismissWarnings ) ) {
- $dismissWarnings = array();
- }
-
- if ( isset( $dismissWarnings['warnings'] ) && $dismissWarnings['warnings'] >= $warnings ) {
- $warnings = 0;
- }
-
- if ( 0 === $warnings ) {
- return;
- }
-
- if ( $warnings > 0 ) {
- $dismissWarnings['warnings'] = 0;
- }
-
- MainWP_Helper::update_option( 'mainwp_child_dismiss_warnings', $dismissWarnings );
- ?>
-
-
-
-
-
-
- 0 ) {
- $warning .= 'This site may not connect to your dashboard or may have other issues. Check your MainWP server information page. | Dismiss |
';
- }
- echo $warning; // phpcs:ignore WordPress.Security.EscapeOutput
- ?>
-
-
-
- check_other_auth();
MainWP_Clone::instance()->init();
- MainWP_Child_Server_Information::init();
MainWP_Client_Report::instance()->init();
MainWP_Child_Plugins_Check::instance();
MainWP_Child_Themes_Check::instance();
diff --git a/class/class-mainwp-clone-page.php b/class/class-mainwp-clone-page.php
index 81c12ee6..c6db1a30 100644
--- a/class/class-mainwp-clone-page.php
+++ b/class/class-mainwp-clone-page.php
@@ -575,6 +575,11 @@ public static function render_java_script() {
var pollingDownloading = undefined;
var backupDownloadFinished = false;
+ var pollingBackupInfo = {
+ 'poll_check': 0,
+ 'size_check': 0,
+ };
+
handleCloneError = function ( resp ) {
updateClonePopup( resp.error, true, 'red' );
};
@@ -627,48 +632,49 @@ public static function render_java_script() {
jQuery.post( ajaxurl, data, function ( pSiteId, pSiteName ) {
return function ( resp ) {
- backupCreationFinished = true;
- clearTimeout( pollingCreation );
-
- var progressBar = jQuery( '#mainwp-child-clone-create-progress' );
- progressBar.progressbar( 'value', parseFloat( progressBar.progressbar( 'option', 'max' ) ) );
-
- if ( resp.error ) {
- handleCloneError( resp );
- return;
- }
- updateClonePopup( mwp_sprintf( translations['backup_created'], pSiteName, (resp.size / 1024).toFixed( 2 ) ) );
- cloneInitiateBackupDownload( pSiteId, resp.url, resp.size );
+ cloneBackupFinishied(resp, pSiteId, pSiteName );
}
}( siteId, siteName ), 'json' );
- pollingCreation = setTimeout( function () {
- cloneBackupCreationPolling( siteId, rand );
- }, 1000 );
+ pollingCreation = setTimeout( function (psiteName) {
+ cloneBackupCreationPolling( siteId, rand, psiteName );
+ }(siteName), 1000 );
};
- cloneBackupCreationPolling = function ( siteId, rand ) {
+ cloneBackupCreationPolling = function ( siteId, rand, psiteName ) {
if ( backupCreationFinished ) return;
var data = mainwpchild_secure_data({
action: 'mainwp-child_clone_backupcreatepoll',
siteId: siteId,
- rand: rand
+ rand: rand,
+ backupInfo: pollingBackupInfo
});
- jQuery.post( ajaxurl, data, function ( pSiteId, pRand ) {
- return function ( resp ) {
+ jQuery.post( ajaxurl, data, function ( pSiteId, pRand, psiteName ) {
+ return function ( resp, psiteName ) {
+ if(resp.backupFinishedResult){
+ cloneBackupFinishied(resp.backupFinishedResult, pSiteId, psiteName );
+ }
if ( backupCreationFinished ) return;
if ( resp.size ) {
var progressBar = jQuery( '#mainwp-child-clone-create-progress' );
if ( progressBar.progressbar( 'option', 'value' ) < progressBar.progressbar( 'option', 'max' ) ) {
progressBar.progressbar( 'value', resp.size );
}
+ if ( resp.size_byte ) {
+ if(resp.size_byte === pollingBackupInfo.size_check ){
+ pollingBackupInfo.poll_check++;
+ } else {
+ pollingBackupInfo.poll_check = 0;
+ }
+ pollingBackupInfo.size_check = resp.size_byte;
+ }
}
pollingCreation = setTimeout( function () {
cloneBackupCreationPolling( pSiteId, pRand );
}, 1000 );
}
- }( siteId, rand ), 'json' );
+ }( siteId, rand, psiteName ), 'json' );
};
cloneInitiateBackupDownload = function ( pSiteId, pFile, pSize ) {
@@ -716,7 +722,7 @@ public static function render_java_script() {
file: pFile
});
- jQuery.post( ajaxurl, data, function ( pSiteId ) {
+ jQuery.post( ajaxurl, data, function ( pSiteId, pFile ) {
return function ( resp ) {
if ( backupDownloadFinished ) return;
if ( resp.size ) {
@@ -727,10 +733,25 @@ public static function render_java_script() {
}
pollingDownloading = setTimeout( function () {
- cloneBackupDownloadPolling( pSiteId );
+ cloneBackupDownloadPolling( pSiteId, pFile );
}, 1000 );
}
- }( siteId ), 'json' );
+ }( siteId, pFile ), 'json' );
+ };
+
+ cloneBackupFinishied = function ( resp, pSiteId, pSiteName ) {
+ backupCreationFinished = true;
+ clearTimeout( pollingCreation );
+
+ var progressBar = jQuery( '#mainwp-child-clone-create-progress' );
+ progressBar.progressbar( 'value', parseFloat( progressBar.progressbar( 'option', 'max' ) ) );
+
+ if ( resp.error ) {
+ handleCloneError( resp );
+ return;
+ }
+ updateClonePopup( mwp_sprintf( translations['backup_created'], pSiteName, (resp.size / 1024).toFixed( 2 ) ) );
+ cloneInitiateBackupDownload( pSiteId, resp.url, resp.size );
};
cloneInitiateExtractBackup = function ( file ) {
diff --git a/class/class-mainwp-clone.php b/class/class-mainwp-clone.php
index 47e292c5..9387e2fb 100644
--- a/class/class-mainwp-clone.php
+++ b/class/class-mainwp-clone.php
@@ -148,7 +148,7 @@ public function secure_request( $action = '', $query_arg = 'security' ) {
$ajaxPosts[ $action ] = isset( $_POST['dts'] ) ? sanitize_text_field( wp_unslash( $_POST['dts'] ) ) : '';
MainWP_Helper::update_option( 'mainwp_ajaxposts', $ajaxPosts );
}
- // phpcs:enable
+ // phpcs:enable WordPress.Security.NonceVerification
}
/**
@@ -217,7 +217,7 @@ public static function upload_mimes( $mime_types = array() ) {
* @uses \MainWP\Child\MainWP_Helper::write()
*/
public function request_clone_funct() { // phpcs:ignore -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
- // phpcs:disable WordPress.Security.NonceVerification
+ // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( ! isset( $_REQUEST['key'] ) ) {
return;
}
@@ -257,23 +257,61 @@ public function request_clone_funct() { // phpcs:ignore -- Current complexity is
$f = isset( $_POST['f'] ) ? sanitize_text_field( wp_unslash( $_POST['f'] ) ) : '';
$archiveFile = false;
if ( ! empty( $f ) ) {
- $result = glob( $backupdir . 'backup-' . $f . '-*' ); // NOSONAR .
+ $result = glob( $backupdir . 'backup-' . $f . '-*' ); // NOSONAR .
+ $found_files = array(); // to bad fix multi full backup files created with same rand value.
foreach ( $result as $file ) {
if ( self::is_archive( $file, 'backup-' . $f . '-' ) ) {
- $archiveFile = $file;
- break;
+ $found_files[] = $file;
+ }
+ }
+ if ( $found_files ) {
+ $the_size = 0;
+ $the_file = false;
+ foreach ( $found_files as $_file ) {
+ $file_size = filesize( $_file );
+ if ( $file_size > $the_size ) {
+ $the_size = $file_size;
+ $the_file = $_file;
+ }
}
+ $archiveFile = $the_file;
}
}
if ( false === $archiveFile ) {
return;
}
- MainWP_Helper::write( array( 'size' => filesize( $archiveFile ) ) );
+ $fsize = filesize( $archiveFile );
+
+ $check_info = ! empty( $_POST['cloneCheckInfo'] ) ? json_decode( wp_unslash( $_POST['cloneCheckInfo'] ), true ) : array();
+
+ if ( ! is_array( $check_info ) ) {
+ $check_info = array();
+ }
+
+ $poll_check = isset( $check_info['poll_check'] ) ? intval( $check_info['poll_check'] ) : 0;
+ $size_check = isset( $check_info['size_check'] ) ? intval( $check_info['size_check'] ) : 0;
+
+ if ( $poll_check > 5 && $size_check === $fsize ) {
+ // smart check backup done.
+ $backup_result = get_transient( 'clone-full-backup-' . wp_unslash( $_POST['f'] ) );
+ if ( ! empty( $backup_result ) && is_array( $backup_result ) ) {
+ MainWP_Helper::write(
+ array(
+ 'size' => $fsize,
+ 'backupFinishedResult' => array(
+ 'url' => $backup_result['backup'],
+ 'size' => round( $backup_result['size'] / 1024, 0 ),
+ ),
+ )
+ );
+ }
+ }
+ MainWP_Helper::write( array( 'size' => $fsize ) );
} elseif ( 'createCloneBackup' === $cloneFunc ) {
$this->create_clone_backup();
}
- // phpcs:enable
+ // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
return true;
}
@@ -302,7 +340,7 @@ private function create_clone_backup() { // phpcs:ignore -- Current complexity i
if ( MainWP_Helper::is_dir_empty( ABSPATH . 'clone' ) ) {
MainWP_Helper::rmdir( ABSPATH . 'clone' );
}
- // phpcs:disable WordPress.Security.NonceVerification
+ //phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$wpversion = isset( $_POST['wpversion'] ) ? sanitize_text_field( wp_unslash( $_POST['wpversion'] ) ) : '';
global $wp_version;
$includeCoreFiles = ( $wpversion !== $wp_version );
@@ -332,7 +370,7 @@ private function create_clone_backup() { // phpcs:ignore -- Current complexity i
} elseif ( isset( $_POST['file'] ) ) {
$file = ! empty( $_POST['file'] ) ? sanitize_text_field( wp_unslash( $_POST['file'] ) ) : false;
}
- // phpcs:enable
+
$res = MainWP_Backup::get()->create_full_backup( $newExcludes, $file, true, $includeCoreFiles, 0, false, false, false, false, $method );
if ( ! $res ) {
$information['backup'] = false;
@@ -370,7 +408,10 @@ private function create_clone_backup() { // phpcs:ignore -- Current complexity i
}
closedir( $fh );
$information['themes'] = $themes;
+ update_option( '', $information );
+ set_transient( 'clone-full-backup-' . wp_unslash( $_POST['f'] ), $information, HOUR_IN_SECONDS ); // to support to fix issue timeout of create clone backup request.
MainWP_Helper::write( $information );
+ //phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
/**
@@ -447,7 +488,7 @@ public function clone_backup_create() {
} catch ( \Exception $e ) {
$output = array( 'error' => $e->getMessage() );
}
- // phpcs:enable
+ // phpcs:enable WordPress.Security.NonceVerification
die( wp_json_encode( $output ) );
}
@@ -464,7 +505,7 @@ public function clone_backup_create() {
public function clone_backup_create_poll() {
try {
$this->secure_request( 'mainwp-child_clone_backupcreatepoll' );
- // phpcs:disable WordPress.Security.NonceVerification
+ // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( ! isset( $_POST['siteId'] ) ) {
throw new \Exception( esc_html__( 'No site given', 'mainwp-child' ) );
}
@@ -475,7 +516,6 @@ public function clone_backup_create_poll() {
if ( ! is_array( $sitesToClone ) || ! isset( $sitesToClone[ $siteId ] ) ) {
throw new \Exception( esc_html__( 'Site not found', 'mainwp-child' ) );
}
- // phpcs:enable
$siteToClone = $sitesToClone[ $siteId ];
$url = $siteToClone['url'];
@@ -487,9 +527,10 @@ public function clone_backup_create_poll() {
$result = MainWP_Utility::fetch_url(
$url,
array(
- 'cloneFunc' => 'createCloneBackupPoll',
- 'key' => $key,
- 'f' => $rand,
+ 'cloneFunc' => 'createCloneBackupPoll',
+ 'key' => $key,
+ 'f' => $rand,
+ 'cloneCheckInfo' => isset( $_POST['backupInfo'] ) && is_array( $_POST['backupInfo'] ) ? wp_json_encode( wp_unslash( $_POST['backupInfo'] ) ) : '',
)
);
@@ -497,7 +538,15 @@ public function clone_backup_create_poll() {
throw new \Exception( esc_html__( 'Invalid response', 'mainwp-child' ) );
}
- $output = array( 'size' => round( $result['size'] / 1024, 0 ) );
+ $output = array(
+ 'size' => round( $result['size'] / 1024, 0 ),
+ 'size_byte' => $result['size'],
+ );
+
+ if ( isset( $result['backupFinishedResult'] ) ) {
+ $output['backupFinishedResult'] = $result['backupFinishedResult'];
+ }
+ // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
} catch ( \Exception $e ) {
$output = array( 'error' => $e->getMessage() );
}
@@ -611,7 +660,7 @@ public function clone_backup_download() { // phpcs:ignore -- Current complexity
} catch ( \Exception $e ) {
$output = array( 'error' => $e->getMessage() );
}
- // phpcs:enable
+ // phpcs:enable WordPress.Security.NonceVerification
die( wp_json_encode( $output ) );
}
@@ -674,7 +723,7 @@ public function clone_backup_extract() {
} elseif ( isset( $_POST['file'] ) ) {
$file = ! empty( $_POST['file'] ) ? sanitize_text_field( wp_unslash( $_POST['file'] ) ) : false;
}
- // phpcs:enable
+ // phpcs:enable WordPress.Security.NonceVerification
$testFull = false;
$file = $this->clone_backup_get_file( $file, $testFull );
$cloneInstall = new MainWP_Clone_Install( $file );
diff --git a/class/class-mainwp-pages.php b/class/class-mainwp-pages.php
index b4a5fe74..c4b14c99 100644
--- a/class/class-mainwp-pages.php
+++ b/class/class-mainwp-pages.php
@@ -96,7 +96,6 @@ public function init() {
*
* @uses \MainWP\Child\MainWP_Child_Branding::get_branding_options()
* @uses \MainWP\Child\MainWP_Child_Branding::is_branding()
- * @uses \MainWP\Child\MainWP_Child_Server_Information::render_warnings()
*/
public function admin_notice() {
// Admin Notice...
@@ -116,7 +115,6 @@ public function admin_notice() {
$msg .= '';
echo wp_kses_post( $msg );
}
- MainWP_Child_Server_Information::render_warnings();
}
/**
diff --git a/class/class-mainwp-utility.php b/class/class-mainwp-utility.php
index 030b9b54..becac1b8 100644
--- a/class/class-mainwp-utility.php
+++ b/class/class-mainwp-utility.php
@@ -327,7 +327,16 @@ public static function upload_image( $img_url, $img_data = array(), $check_file_
if ( is_wp_error( $temporary_file ) ) {
throw new MainWP_Exception( 'Error: ' . esc_html( $temporary_file->get_error_message() ) );
} else {
- $filename = basename( $img_url );
+ $filename = basename( $img_url );
+
+ $file_ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
+ if ( empty( $file_ext ) && ! empty( $img_data['image_url'] ) ) { // to fix for gallery issue.
+ $_filename = basename( $img_data['image_url'] );
+ $_file_ext = strtolower( pathinfo( $_filename, PATHINFO_EXTENSION ) );
+ $filename .= '.' . $_file_ext;
+ $img_url = $img_data['image_url']; // to fix issue create attachment media.
+ }
+
$local_img_path = $upload_dir['path'] . DIRECTORY_SEPARATOR . $filename;
$local_img_url = $upload_dir['url'] . '/' . basename( $local_img_path );
@@ -374,7 +383,7 @@ public function check_image_file_name( $filename ) {
return false;
}
- $allowed_files = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp', 'tif', 'tiff', 'ico', 'avif' );
+ $allowed_files = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp', 'tif', 'tiff', 'ico', 'avif', 'webp', 'heic' );
$names = explode( '.', $filename );
$file_ext = strtolower( end( $names ) );
if ( ! in_array( $file_ext, $allowed_files ) ) {
diff --git a/mainwp-child.php b/mainwp-child.php
index afbfe857..331bae16 100644
--- a/mainwp-child.php
+++ b/mainwp-child.php
@@ -12,7 +12,7 @@
* Author: MainWP
* Author URI: https://mainwp.com
* Text Domain: mainwp-child
- * Version: 5.1.1
+ * Version: 5.2
* Requires at least: 5.4
* Requires PHP: 7.4
*/
diff --git a/readme.txt b/readme.txt
index c0de4640..52b43322 100644
--- a/readme.txt
+++ b/readme.txt
@@ -5,9 +5,9 @@ Author: mainwp
Author URI: https://mainwp.com
Plugin URI: https://mainwp.com
Requires at least: 6.2
-Tested up to: 6.5.5
+Tested up to: 6.6.1
Requires PHP: 7.4
-Stable tag: 5.1.1
+Stable tag: 5.2
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
@@ -111,31 +111,14 @@ We have an extensive FAQ with more questions and answers [here](https://mainwp.c
== Changelog ==
-= 5.1.1 - 7-9-2024 =
+= 5.2 - 8-28-2024 =
-* Fixed: An issue with applying custom CSS for the White Label extension option
-* Fixed: Synchronization problem caused by older PHP version
+* Fixed: Issue with inserting multiple galleries in a post.
+* Fixed: Problem with cloning sites on specific hosting environments.
+* Fixed: Issue causing the post featured image to be removed after editing.
+* Updated: System requirements checks to ensure they are current and relevant.
+* Removed: Irrelevant system requirements checks for a streamlined setup process.
-= 5.1 - 6-18-2024 =
-
-* Fixed: An issue with submitting Time Capsule settings.
-* Added: Integrated a Rollback feature to revert plugins to the last stable version in case of update errors.
-* Updated: Addressed coding standard issues found by SonarCloud.
-
-[See Video Changelog](https://youtu.be/OtqrgU8q5RA)
-
-= 5.0.1.1 - 4-23-2024 =
-* Added: Support for the RunCloud Hub plugin in the Cache Control.
-
-= 5.0.1 - 4-9-2024 =
-* Fixed: Post subcategories sharing the same name but belonging to different main categories are now correctly displayed.
-* Fixed: Addressed a scenario where the MainWP Child plugin inadvertently triggered Core updates.
-* Fixed: The detection of WP Optimize caching plugin in the Cache Control extension
-* Fixed: Last purged time not being refreshed when clearing the Cache Control cache
-* Fixed: Resolved a problem with invalid URL encountered when navigating back after submitting a White Label Support Form.
-* Added: Introduced support for the AVIF image format in post and page creation processes.
-* Added: We’ve expanded support for Cache Control extension to include Pressable Cache Management.
-
-[See Video Changelog](https://www.youtube.com/watch?v=5idFDPrgFf8)
+[See Video Changelog](https://www.youtube.com/watch?v=)
[See changelog for all versions.](https://mainwp.com/mainwp-child-changelog.txt)