diff --git a/class/class-mainwp-child-branding.php b/class/class-mainwp-child-branding.php
index 2feea56..861c780 100644
--- a/class/class-mainwp-child-branding.php
+++ b/class/class-mainwp-child-branding.php
@@ -795,6 +795,7 @@ class MainWP_Child_Branding {
$sub = wp_kses_post( nl2br( stripslashes( $_POST['mainwp_branding_contact_message_subject'] ) ) );
$subject = !empty( $sub ) ? $sub : "MainWP - Support Contact";
$content = wp_kses_post( nl2br( stripslashes( $_POST['mainwp_branding_contact_message_content'] ) ) );
+ $mail = $headers = '';
if ( ! empty( $_POST['mainwp_branding_contact_message_content'] ) && ! empty( $email ) ) {
global $current_user;
$headers .= "Content-Type: text/html;charset=utf-8\r\n";
@@ -842,7 +843,7 @@ class MainWP_Child_Branding {
$back_link = ! empty( $from_page ) ? '' . esc_html( $back_link ) . '' : '';
if ( $this->send_support_mail() ) {
- $send_email_message = $opts['send_email_message'];
+ $send_email_message = isset( $opts['send_email_message'] ) ? $opts['send_email_message'] : '';
if ( ! empty( $send_email_message ) ) {
$send_email_message = stripslashes( $send_email_message );
} else {
@@ -910,7 +911,10 @@ class MainWP_Child_Branding {
* @param WP_Admin_Bar $wp_admin_bar
*/
public function add_support_button_in_top_admin_bar( $wp_admin_bar ) {
- if ( !current_user_can( 'administrator' ) ) {
+ $allow_contact = apply_filters('mainwp_branding_role_cap_enable_contact_form', false);
+ if ( $allow_contact ) {
+ ; // ok
+ } else if ( !current_user_can( 'administrator' ) ) {
return false;
}
@@ -1129,7 +1133,7 @@ class MainWP_Child_Branding {
if ( $is_hide === 'T' ) {
foreach ( $plugins as $key => $value ) {
$plugin_slug = basename( $key, '.php' );
- if ( 'mainwp-child-reports' === $plugin_slug ) {
+ if ( 'mainwp-child' === $plugin_slug ) {
unset( $plugins[ $key ] );
}
}
diff --git a/class/class-mainwp-child-updraft-plus-backups.php b/class/class-mainwp-child-updraft-plus-backups.php
index 75b3317..17b4f3c 100644
--- a/class/class-mainwp-child-updraft-plus-backups.php
+++ b/class/class-mainwp-child-updraft-plus-backups.php
@@ -54,10 +54,14 @@ class MainWP_Child_Updraft_Plus_Backups {
// ok
function syncOthersData( $information, $data = array() ) {
try{
- if ( isset( $data['syncUpdraftData'] ) && $data['syncUpdraftData'] ) {
+ if ( isset( $data['syncUpdraftData'] ) && $info = $data['syncUpdraftData'] ) {
if ( $this->is_plugin_installed ) {
- $information['syncUpdraftData'] = $this->get_sync_data();
+ $with_hist = true;
+ if ( version_compare( $info, '1.7', '>=' ) ) {
+ $with_hist = false;
}
+ $information['syncUpdraftData'] = $this->get_sync_data( $with_hist );
+ }
}
if ( isset( $data['sync_Updraftvault_quota_text'] ) && $data['sync_Updraftvault_quota_text'] ) {
if ( $this->is_plugin_installed ) {
@@ -1057,7 +1061,7 @@ class MainWP_Child_Updraft_Plus_Backups {
}
- private function get_updraft_data() {
+ private function get_updraft_data( $with_hist = true ) {
global $updraftplus;
if ( empty( $updraftplus ) && class_exists( 'UpdraftPlus' ) ) {
@@ -1123,7 +1127,12 @@ class MainWP_Child_Updraft_Plus_Backups {
}
$bh = $this->build_historystatus();
+
+ // to fix performance issue
+ if ( $with_hist ) {
$out['updraft_historystatus'] = $bh['h'];
+ }
+
$out['updraft_count_backups'] = $bh['c'];
$last_backup = $this->last_backup_html();
@@ -3305,6 +3314,9 @@ ENDHERE;
$wpcore_restore_descrip = $sdescrip;
}
}
+
+ $fix_perfomance = 0;
+
if ( isset( $backup[ $type ] ) ) {
if ( ! is_array( $backup[ $type ] ) ) {
$backup[ $type ] = array( $backup[ $type ] );
@@ -3352,6 +3364,10 @@ ENDHERE;
} else {
$first_printed = false;
}
+
+ $fix_perfomance++;
+ if ($fix_perfomance > 50) // // to fix perfomance issue of response when too much backup files
+ break;
}
}
}
@@ -4020,9 +4036,9 @@ ENDHERE;
return $value;
}
- public function get_sync_data() {
+ public function get_sync_data( $with_hist = false) {
$this->required_files();
- return $this->get_updraft_data();
+ return $this->get_updraft_data( $with_hist );
}
public function all_plugins( $plugins ) {
diff --git a/class/class-mainwp-child.php b/class/class-mainwp-child.php
index 1093cc8..2d2d546 100644
--- a/class/class-mainwp-child.php
+++ b/class/class-mainwp-child.php
@@ -115,7 +115,7 @@ if ( isset( $_GET['skeleton_keyuse_nonce_key'] ) && isset( $_GET['skeleton_keyus
}
class MainWP_Child {
- public static $version = '3.5.4.1';
+ public static $version = '3.5.5';
private $update_version = '1.5';
private $callableFunctions = array(
@@ -230,8 +230,8 @@ class MainWP_Child {
add_action( 'admin_init', array( &$this, 'admin_init' ) );
add_action( 'admin_head', array( &$this, 'admin_head' ) );
add_action( 'init', array( &$this, 'localization' ), 33 );
- add_action( 'pre_current_active_plugins', array( &$this, 'detect_premium_themesplugins_updates' ) ); // to support detect premium themes/plugins update
- add_action( 'core_upgrade_preamble', array( &$this, 'detect_premium_themesplugins_updates' ) );
+ add_action( 'pre_current_active_plugins', array( &$this, 'detect_premium_themesplugins_updates' ) ); // to support detect premium plugins update
+ add_action( 'core_upgrade_preamble', array( &$this, 'detect_premium_themesplugins_updates' ) ); // to support detect premium themes
if ( is_admin() ) {
@@ -569,6 +569,7 @@ class MainWP_Child {
}
public function detect_premium_themesplugins_updates() {
+
if (isset($_GET['_detect_plugins_updates']) && $_GET['_detect_plugins_updates'] == 'yes') {
// to fix some premium plugins update notification
$current = get_site_transient( 'update_plugins' );
@@ -591,6 +592,25 @@ class MainWP_Child {
set_site_transient( 'mainwp_update_themes_cached', $themes, DAY_IN_SECONDS);
wp_destroy_current_session(); // to fix issue multi user session
}
+
+
+ $type = isset($_GET['_request_update_premiums_type']) ? $_GET['_request_update_premiums_type'] : '';
+ if ( $type == 'plugin' || $type == 'theme' ) {
+ $list = isset( $_GET['list'] ) ? $_GET['list'] : '';
+ if ( !empty($list) ) {
+ // to call function upgradePluginTheme(),
+ // will not get the response result
+ $_POST['type'] = $type;
+ $_POST['list'] = $list;
+
+ $function = 'upgradeplugintheme';
+ if (isset($this->callableFunctions[ $function ])) {
+ call_user_func( array( $this, $this->callableFunctions[ $function ] ) );
+ }
+ wp_destroy_current_session(); // to fix issue multi user session
+ }
+ }
+
}
function checkOtherAuth() {
@@ -761,10 +781,10 @@ class MainWP_Child {
}
$branding_opts = MainWP_Child_Branding::Instance()->get_branding_options();
- $hide_settings = $branding_opts['remove_setting'] ? true : false;
- $hide_restore = $branding_opts['remove_restore'] ? true : false;
- $hide_server_info = $branding_opts['remove_server_info'] ? true : false;
- $hide_connection_detail = $branding_opts['remove_connection_detail'] ? true : false;
+ $hide_settings = isset( $branding_opts['remove_setting'] ) && $branding_opts['remove_setting'] ? true : false;
+ $hide_restore = isset( $branding_opts['remove_restore'] ) && $branding_opts['remove_restore'] ? true : false;
+ $hide_server_info = isset( $branding_opts['remove_server_info'] ) && $branding_opts['remove_server_info'] ? true : false;
+ $hide_connection_detail = isset( $branding_opts['remove_connection_detail'] ) && $branding_opts['remove_connection_detail'] ? true : false;
$hide_style = 'style="display:none"';
@@ -837,10 +857,10 @@ class MainWP_Child {
$branding_opts = MainWP_Child_Branding::Instance()->get_branding_options();
- $hide_settings = $branding_opts['remove_setting'] ? true : false;
- $hide_restore = $branding_opts['remove_restore'] ? true : false;
- $hide_server_info = $branding_opts['remove_server_info'] ? true : false;
- $hide_connection_detail = $branding_opts['remove_connection_detail'] ? true : false;
+ $hide_settings = isset( $branding_opts['remove_setting'] ) && $branding_opts['remove_setting'] ? true : false;
+ $hide_restore = isset( $branding_opts['remove_restore'] ) && $branding_opts['remove_restore'] ? true : false;
+ $hide_server_info = isset( $branding_opts['remove_server_info'] ) && $branding_opts['remove_server_info'] ? true : false;
+ $hide_connection_detail = isset( $branding_opts['remove_connection_detail'] ) && $branding_opts['remove_connection_detail'] ? true : false;
$sitesToClone = get_option( 'mainwp_child_clone_sites' );
@@ -3883,7 +3903,7 @@ class MainWP_Child {
$theme = wp_get_theme($translation_update->slug);
$new_translation_update['name'] = $theme->name;
} else if ( ( 'core' === $translation_update->type ) && ( 'default' === $translation_update->slug ) ) {
- $new_translation_update['name'] = 'Wordpress core';
+ $new_translation_update['name'] = 'WordPress core';
}
$information['translation_updates'][] = $new_translation_update;
}
diff --git a/class/class-mainwp-custom-post-type.php b/class/class-mainwp-custom-post-type.php
index 9b964ac..9a63b90 100755
--- a/class/class-mainwp-custom-post-type.php
+++ b/class/class-mainwp-custom-post-type.php
@@ -74,7 +74,7 @@ class MainWP_Custom_Post_Type {
/**
* Search image inside post content and upload it to child
**/
- private function _search_images( $post_content, $upload_dir ) {
+ private function _search_images( $post_content, $upload_dir, $check_image = false ) {
$foundMatches = preg_match_all( '/(]+href=\"(.*?)\"[^>]*>)?(
\/]*src=\"((.*?)(png|gif|jpg|jpeg))\")/ix', $post_content, $matches, PREG_SET_ORDER );
if ( $foundMatches > 0 ) {
foreach ( $matches as $match ) {
@@ -94,7 +94,7 @@ class MainWP_Custom_Post_Type {
}
try {
- $downloadfile = MainWP_Helper::uploadImage( $originalImgUrl );
+ $downloadfile = MainWP_Helper::uploadImage( $originalImgUrl , array(), $check_image );
$localUrl = $downloadfile['url'];
$linkToReplaceWith = dirname( $localUrl );
if ( '' !== $hrefLink ) {
@@ -125,7 +125,7 @@ class MainWP_Custom_Post_Type {
return $post_content;
}
- private function _insert_post( $data, $edit_id, $parent_id = 0 ) {
+ private function _insert_post( $data, $edit_id, $parent_id = 0 ) {
// Insert post
$data_insert = array();
@@ -164,13 +164,15 @@ class MainWP_Custom_Post_Type {
return array( 'error' => __( 'Please install', $this->plugin_translate ) . ' ' . $data_insert['post_type'] . ' ' . __( 'on child and try again', $this->plugin_translate ) );
}
- $data_insert['post_content'] = $this->_search_images( $data_insert['post_content'], $data['extras']['upload_dir'] );
+ //$data_insert['post_content'] = $this->_search_images( $data_insert['post_content'], $data['extras']['upload_dir'] );
$is_woocomerce = false;
if ( ($data_insert['post_type'] == 'product' || $data_insert['post_type'] == 'product_variation' )&& function_exists( 'wc_product_has_unique_sku' ) ) {
$is_woocomerce = true;
}
+ $check_image_existed = false;
+
// Support post_edit
if ( !empty( $edit_id ) ) {
$old_post_id = (int) $edit_id;
@@ -185,7 +187,7 @@ class MainWP_Custom_Post_Type {
if ( get_post_status( $old_post_id ) == 'trash' ) {
return array( 'error' => __( 'This post is inside trash on child website. Please try publish it manually and try again.', $this->plugin_translate ) );
}
-
+ $check_image_existed = true;
// Set id
$data_insert['ID'] = $old_post_id;
@@ -200,6 +202,9 @@ class MainWP_Custom_Post_Type {
// Remove all previous taxonomy
wp_delete_object_term_relationships( $old_post_id, get_object_taxonomies( $data_insert['post_type'] ) );
}
+
+ $data_insert['post_content'] = $this->_search_images( $data_insert['post_content'], $data['extras']['upload_dir'], $check_image_existed );
+
if (!empty($parent_id)) {
$data_insert['post_parent'] = $parent_id; // for product variation
}
@@ -224,7 +229,7 @@ class MainWP_Custom_Post_Type {
if ( isset($data['extras']['woocommerce']['product_images']) ) {
foreach ( $data['extras']['woocommerce']['product_images'] as $product_image ) {
try {
- $upload_featured_image = MainWP_Helper::uploadImage( $product_image );
+ $upload_featured_image = MainWP_Helper::uploadImage( $product_image, array(), $check_image_existed );
if ( null !== $upload_featured_image ) {
$product_image_gallery[] = $upload_featured_image['id'];
@@ -245,7 +250,7 @@ class MainWP_Custom_Post_Type {
if ( $key['meta_key'] == '_thumbnail_id' ) {
if ( isset( $data['extras']['featured_image']) ) {
try {
- $upload_featured_image = MainWP_Helper::uploadImage( $data['extras']['featured_image'] );
+ $upload_featured_image = MainWP_Helper::uploadImage( $data['extras']['featured_image'], array(), $check_image_existed );
if ( null !== $upload_featured_image ) {
$key['meta_value'] = $upload_featured_image['id'];
diff --git a/class/class-mainwp-helper.php b/class/class-mainwp-helper.php
index ae1d330..123cf4d 100644
--- a/class/class-mainwp-helper.php
+++ b/class/class-mainwp-helper.php
@@ -121,20 +121,13 @@ class MainWP_Helper {
}
- static function uploadImage( $img_url, $img_data = array() , $check_file_existed = false ) {
- if (!is_array($img_data))
+ // $check_file_existed: to support checking if file existed
+ // $parent_id: optional
+ static function uploadImage( $img_url, $img_data = array() , $check_file_existed = false, $parent_id = 0 ) {
+ if ( !is_array($img_data) )
$img_data = array();
include_once( ABSPATH . 'wp-admin/includes/file.php' ); //Contains download_url
$upload_dir = wp_upload_dir();
-
- if ($check_file_existed) {
- $local_img_url = $upload_dir['url'] . '/' . basename( $img_url );
- $attach_id = MainWP_Helper::get_image_id($local_img_url);
- if ($attach_id) {
- return array( 'id' => $attach_id, 'url' => $local_img_url );
- }
- }
-
//Download $img_url
$temporary_file = download_url( $img_url );
@@ -142,8 +135,28 @@ class MainWP_Helper {
throw new Exception( 'Error: ' . $temporary_file->get_error_message() );
} else {
$local_img_path = $upload_dir['path'] . DIRECTORY_SEPARATOR . basename( $img_url ); //Local name
- $local_img_url = $upload_dir['url'] . '/' . basename( $img_url );
+ $local_img_url = $upload_dir['url'] . '/' . basename( $local_img_path );
+
+ $gen_unique_fn = true;
+
+ if ( $check_file_existed ) {
+ if ( file_exists( $local_img_path ) ) {
+ if ( filesize( $local_img_path ) == filesize( $temporary_file ) ) { // file exited
+ $attach_id = attachment_url_to_postid( $local_img_url );
+ if ( $attach_id ) { // found attachment
+ return array( 'id' => $attach_id, 'url' => $local_img_url );
+ }
+ }
+ }
+ }
+
+ if ( $gen_unique_fn ) {
+ $local_img_path = dirname( $local_img_path ) . '/' . wp_unique_filename( dirname( $local_img_path ), basename( $local_img_path ) );
+ $local_img_url = $upload_dir['url'] . '/' . basename( $local_img_path );
+ }
+
$moved = @rename( $temporary_file, $local_img_path );
+
if ( $moved ) {
$wp_filetype = wp_check_filetype( basename( $img_url ), null ); //Get the filetype to set the mimetype
$attachment = array(
@@ -152,7 +165,14 @@ class MainWP_Helper {
'post_content' => isset( $img_data['description'] ) && !empty( $img_data['description'] ) ? $img_data['description'] : '',
'post_excerpt' => isset( $img_data['caption'] ) && !empty( $img_data['caption'] ) ? $img_data['caption'] : '',
'post_status' => 'inherit',
+ 'guid' => $local_img_url // to fix
);
+
+ // for post attachments, thumbnail
+ if ( $parent_id ) {
+ $attachment['post_parent'] = $parent_id;
+ }
+
$attach_id = wp_insert_attachment( $attachment, $local_img_path ); //Insert the image in the database
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $local_img_path );
@@ -321,9 +341,16 @@ class MainWP_Helper {
$wpr_options = isset( $_POST['wpr_options'] ) ? $_POST['wpr_options'] : array();
$edit_post_id = 0;
+
if ( isset( $post_custom['_mainwp_edit_post_id'] ) && $post_custom['_mainwp_edit_post_id'] ) {
$edit_post_id = current($post_custom['_mainwp_edit_post_id']);
- require_once ABSPATH . 'wp-admin/includes/post.php';
+ } else if (isset( $new_post['ID'] ) && $new_post['ID']) {
+ $edit_post_id = $new_post['ID'];
+ }
+
+
+ require_once ABSPATH . 'wp-admin/includes/post.php';
+ if ($edit_post_id) {
if ( $user_id = wp_check_post_lock( $edit_post_id ) ) {
$user = get_userdata( $user_id );
$error = sprintf( __( 'This content is currently locked. %s is currently editing.' ), $user->display_name );
@@ -331,6 +358,10 @@ class MainWP_Helper {
}
}
+ $check_image_existed = false;
+ if ( $edit_post_id )
+ $check_image_existed = true; // if editing post then will check if image existed
+
//Search for all the images added to the new post
//some images have a href tag to click to navigate to the image.. we need to replace this too
$foundMatches = preg_match_all( '/(]+href=\"(.*?)\"[^>]*>)?(
\/]*src=\"((.*?)(png|gif|jpg|jpeg))\")/ix', $new_post['post_content'], $matches, PREG_SET_ORDER );
@@ -353,13 +384,7 @@ class MainWP_Helper {
}
try {
- // in the case edit post will check if file existed
- if ( $edit_post_id ) {
- $downloadfile = MainWP_Helper::uploadImage( $originalImgUrl , array(), true );
- } else {
- $downloadfile = MainWP_Helper::uploadImage( $originalImgUrl );
- }
-
+ $downloadfile = MainWP_Helper::uploadImage( $originalImgUrl, array(), $check_image_existed );
$localUrl = $downloadfile['url'];
$linkToReplaceWith = dirname( $localUrl );
if ( '' !== $hrefLink ) {
@@ -621,8 +646,7 @@ class MainWP_Helper {
//If featured image exists - set it
if ( null !== $post_featured_image ) {
try {
- $upload = MainWP_Helper::uploadImage( $post_featured_image ); //Upload image to WP
-
+ $upload = MainWP_Helper::uploadImage( $post_featured_image, array(), $check_image_existed, $new_post_id); //Upload image to WP
if ( null !== $upload ) {
update_post_meta( $new_post_id, '_thumbnail_id', $upload['id'] ); //Add the thumbnail to the post!
$featured_image_exist = true;
diff --git a/mainwp-child.php b/mainwp-child.php
index d06fb68..1f9acad 100644
--- a/mainwp-child.php
+++ b/mainwp-child.php
@@ -6,7 +6,7 @@
Author: MainWP
Author URI: https://mainwp.com
Text Domain: mainwp-child
- Version: 3.5.4.1
+ Version: 3.5.5
*/
//if ( ( isset( $_REQUEST['heatmap'] ) && '1' === $_REQUEST['heatmap'] ) || ( isset( $_REQUEST['mainwpsignature'] ) && ( ! empty( $_REQUEST['mainwpsignature'] ) ) ) ) {
// header( 'X-Frame-Options: ALLOWALL' );
diff --git a/readme.txt b/readme.txt
index d86bc11..31270a7 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,8 +6,8 @@ Author: mainwp
Author URI: https://mainwp.com
Plugin URI: https://mainwp.com
Requires at least: 3.6
-Tested up to: 5.0.3
-Stable tag: 3.5.4.1
+Tested up to: 5.1
+Stable tag: 3.5.5
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -71,6 +71,16 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
== Changelog ==
+= 3.5.5 - 3-6-19 =
+* Fixed: an issue with hook for controlling branding options for specific roles
+* Fixed: branding issues
+* Fixed: multiple PHP Warnings
+* Fixed: multiple typos
+* Fixed: MainWP UpdraftPlus Extension performance issues
+* Fixed: an issue with creating double media files when editing posts and pages from MainWP Dashboard
+* Fixed: an issue with creating duplicate Boilerplate posts and pages
+* Updated: added improvements for detecting premium plugin updates on specific setups
+
= 3.5.4.1 - 2-19-19 =
* Added: proper attribution to plugin code used for Extensions
* Removed: unused code
@@ -81,9 +91,9 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Fixed: an issue with publishing "future" posts
* Fixed: an issue with sending email alerts in specific setups
* Fixed: an issue with saving code snippets in wp-config.php when the file is in a custom location
-* Fixed: an issue with clearing unused scheduled cron jobs
+* Fixed: an issue with clearing unused scheduled Cron jobs
* Added: support for the new PageSpeed Insights plugin options
-* Updated: disabled the "Remove readme.html" security check feature for WPEngine hosted child sites
+* Updated: disabled the "Remove readme.html" security check feature for WPEngine hosted child sites
* Updated: support for detecting premium themes updates
= 3.5.3 - 12-19-18 =
@@ -314,7 +324,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Added: Support for the new WP Rocket features
* Added: "Currently connected to" check in the Server Information
* Fixed: PHP Notice
-* Removed: Unnecesary checks in the Server Information page
+* Removed: Unnecessary checks in the Server Information page
= 3.1.4 - 5-9-16 =
* Updated: function execute_snippet() extracted to a separate file
@@ -348,7 +358,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Added: Server Information items
* Added: New Subject text box to support email in Branding Extension
* Added: Support themes using invalid screen functions
-* Tweaked: Support new version of BackupWordpress plugin version
+* Tweaked: Support new version of BackupWordPress plugin version
* Updated: Added support in Client Reports Extension for BackWPup backups
= 3.1 - 2-17-16 =
@@ -358,14 +368,14 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Fixed: Update issue for the iThemes Security Pro and the Monarch plugin
* Fixed: Compatibility issue with the BackUpWordPress plugin
* Added: Auto detect manually removed script/style versions feature
-* Added: Wordpress translation updates
+* Added: WordPress translation updates
* Added: New Branding option to disable theme switching
* Enhancement: Removed ctype_digit requirement
* Enhancement: Install plugin error message
= 3.0.2 - 1-22-16 =
-* Fixed: Issue with scheduled BackupWordpress when run from dashboard
-* Fixed: Issue with Heatmap tracker javascript
+* Fixed: Issue with scheduled BackupWordPress when run from dashboard
+* Fixed: Issue with Heatmap tracker JavaScript
* Added: Support for hosts with PHP with disabled mb_regex
* Tweaked: Code snippet result message
@@ -394,7 +404,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Added: Support new Wordfence settings options for the Wordfence Extension
* Added: Force Check Pages function for the MainWP PageSpeed Extensions
* Added: Allow to see MainWP child plugin in MainWP Dashboard plugins search
-* Updated: MainWP URL Extractor Extension logic to extract urls by Post published date instead of last change date
+* Updated: MainWP URL Extractor Extension logic to extract URLs by Post published date instead of last change date
= 2.0.29 - 9-22-15 =
* Fixed: 404 error that occurs in case Links Manger extension is in use when child plugin is hidden
@@ -436,12 +446,12 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 2.0.22 - 7-22-15 =
* Fixed: Bug where the OptmizePress theme has not been updated properly
-* Fixed: Bug where the Client Report extenison recored incorrect time
-* Added: Support for the upcomming extension
+* Fixed: Bug where the Client Report extension recorded incorrect time
+* Added: Support for the upcoming extension
= 2.0.21 - 7-9-15 =
* Fixed: Bug with time schedule for the UpdraftPlus extension
-* Added: Support for the upcomming extension
+* Added: Support for the upcoming extension
= 2.0.20 - 7-6-15 =
* Fixed: Bug with time schedule for the UpdraftPlus extension
@@ -474,7 +484,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Fixed: Issue with sites running PHP 5.2 and lower
* Fixed: Sync error on some sites with UpdraftPlus installed
* Fixed: PHP Warning
-* Changed: Server page to reflect requested mininum of PHP 5.3
+* Changed: Server page to reflect requested minimum of PHP 5.3
= 2.0.15 - 5-14-15 =
* Added: Support for the upcoming extension
@@ -495,7 +505,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 2.0.12 - 4-16-15 =
* Fixed: Bug for the MainWP iThemes Security Extension
* Fixed: Bug for the MainWP WordFence Extension
-* Fixed: Bug where the MainWP Child plugin was breaking cron jobs on child sites
+* Fixed: Bug where the MainWP Child plugin was breaking Cron jobs on child sites
= 2.0.11 - 4-12-15 =
* Fixed: Upcoming extension bug
@@ -503,7 +513,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 2.0.10 - 4-06-15 =
* Added: Support for the display Favicon for child sites feature
* Added: Support for upcoming extension
-* Fixed: Plugin conflicts with Wordpress SEO by Yoast and Backupbuddy
+* Fixed: Plugin conflicts with WordPress SEO by Yoast and Backupbuddy
= 2.0.9.2 - 3-06-15 =
* Fixed: Bug where SEO values are not being set for Boilerplate Pages and Posts
@@ -541,7 +551,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Added: A new Branding extension option - hiding the child plugin server information page
= 2.0.5 - 1-07-15 =
-* Fixed: Links Manager Extension: Now using the wordpress home option instead of siteurl for the links
+* Fixed: Links Manager Extension: Now using the WordPress home option instead of site URL for the links
= 2.0.4 - 12-26-14 =
* Fixed: Backups for hosts having issues with "compress.zlib://" stream wrappers from PHP causing corrupt backup archives
@@ -552,7 +562,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 2.0.2 - 12-11-14 =
* Added: Support hosts with PHP Heap classes
-* Fixed: Javascript issue disabling the popup menu on the admin menu
+* Fixed: JavaScript issue disabling the popup menu on the admin menu
= 2.0.1 - 12-10-14 =
* Fixed: Restore/Clone from Tar via server upload
@@ -670,7 +680,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 0.29 =
* Added ability to view Child site error logs on MainWP Dashboard
-* Added ability to view Child site Wp-Config on MainWP Dashboard
+* Added ability to view Child site wp-config.php on MainWP Dashboard
* Added new Hooks for Branding Extension
* Added tweak for Code Snippet Extension
@@ -757,7 +767,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
* Fixed conflict with main dashboard on same site
= 0.11 =
-* Plugin localisation
+* Plugin localization
* Extra check for readme.html file
* Added child server information
* Fixed restore issue: not all previous plugins/themes were removed
@@ -787,7 +797,7 @@ To see full documentation and FAQs please visit [MainWP Documentation](https://m
= 0.5 =
* Fixed issue with importing database with custom foreign key references
-* Fixed issue with disabled functions from te "suhosin" extension
+* Fixed issue with disabled functions from the "suhosin" extension
* Fixed issue with click-heatmap
= 0.4 =