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 =