mirror of
https://github.com/mainwp/mainwp-child.git
synced 2025-09-06 09:20:28 +08:00
merge with branch01
This commit is contained in:
parent
ded863d160
commit
23bc358959
8 changed files with 719 additions and 128 deletions
|
@ -92,72 +92,54 @@ class MainWP_Child_Back_Up_Buddy {
|
||||||
require_once( pb_backupbuddy::plugin_path() . '/classes/core.php' );
|
require_once( pb_backupbuddy::plugin_path() . '/classes/core.php' );
|
||||||
}
|
}
|
||||||
|
|
||||||
$backups = array();
|
// Backup type.
|
||||||
$backup_sort_dates = array();
|
$pretty_type = array(
|
||||||
|
'full' => 'Full',
|
||||||
|
'db' => 'Database',
|
||||||
|
'files' => 'Files',
|
||||||
|
);
|
||||||
|
|
||||||
$files = glob( backupbuddy_core::getBackupDirectory() . 'backup*.zip' );
|
$recentBackups_list = glob( backupbuddy_core::getLogDirectory() . 'fileoptions/*.txt' );
|
||||||
if ( ! is_array( $files ) ) {
|
|
||||||
$files = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$files2 = glob( backupbuddy_core::getBackupDirectory() . 'snapshot*.zip' );
|
foreach( $recentBackups_list as $backup_fileoptions ) {
|
||||||
if ( ! is_array( $files2 ) ) {
|
|
||||||
$files2 = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$files = array_merge( $files, $files2 );
|
require_once( pb_backupbuddy::plugin_path() . '/classes/fileoptions.php' );
|
||||||
|
pb_backupbuddy::status( 'details', 'Fileoptions instance #1.' );
|
||||||
|
$backup = new pb_backupbuddy_fileoptions( $backup_fileoptions, $read_only = true );
|
||||||
|
if ( true !== ( $result = $backup->is_ok() ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( is_array( $files ) && !empty( $files ) ) { // For robustness. Without open_basedir the glob() function returns an empty array for no match. With open_basedir in effect the glob() function returns a boolean false for no match.
|
$backup = &$backup->options;
|
||||||
foreach( $files as $file_id => $file ) {
|
|
||||||
$serial = backupbuddy_core::get_serial_from_file( $file );
|
|
||||||
$options = array();
|
|
||||||
if ( file_exists( backupbuddy_core::getLogDirectory() . 'fileoptions/' . $serial . '.txt' ) ) {
|
|
||||||
require_once( pb_backupbuddy::plugin_path() . '/classes/fileoptions.php' );
|
|
||||||
//pb_backupbuddy::status( 'details', 'Fileoptions instance #33.' );
|
|
||||||
$backup_options = new pb_backupbuddy_fileoptions( backupbuddy_core::getLogDirectory() . 'fileoptions/' . $serial . '.txt', $read_only = false, $ignore_lock = false, $create_file = true ); // Will create file to hold integrity data if nothing exists.
|
|
||||||
} else {
|
|
||||||
$backup_options = '';
|
|
||||||
}
|
|
||||||
$backup_integrity = backupbuddy_core::backup_integrity_check( $file, $backup_options, $options );
|
|
||||||
|
|
||||||
// Backup type.
|
if ( !isset( $backup['serial'] ) || ( $backup['serial'] == '' ) ) {
|
||||||
$pretty_type = array(
|
continue;
|
||||||
'full' => 'Full',
|
|
||||||
'db' => 'Database',
|
|
||||||
'files' => 'Files',
|
|
||||||
'themes' => 'Themes',
|
|
||||||
'plugins' => 'Plugins',
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Defaults...
|
|
||||||
$detected_type = '';
|
|
||||||
$modified_time = 0;
|
|
||||||
|
|
||||||
if ( is_array( $backup_integrity ) ) {
|
|
||||||
// Calculate time ago.
|
|
||||||
$time_ago = '';
|
|
||||||
if ( isset( $backup_integrity['modified'] ) ) {
|
|
||||||
$time_ago = pb_backupbuddy::$format->time_ago( $backup_integrity['modified'] ) . ' ago';
|
|
||||||
}
|
|
||||||
|
|
||||||
$detected_type = pb_backupbuddy::$format->prettify( $backup_integrity['detected_type'], $pretty_type );
|
|
||||||
if ( $detected_type == '' ) {
|
|
||||||
$detected_type = backupbuddy_core::pretty_backup_type( backupbuddy_core::getBackupTypeFromFile( $file ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
$modified_time = $backup_integrity['modified'];
|
|
||||||
$message = 'BackupBuddy ' . $detected_type . ' finished';
|
|
||||||
$backup_type = $detected_type;
|
|
||||||
if (!empty($modified_time)) {
|
|
||||||
do_action( 'mainwp_reports_backupbuddy_backup', $message, $backup_type, $modified_time);
|
|
||||||
MainWP_Helper::update_lasttime_backup('backupbuddy', $modified_time); // to support backup before update feature
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
if ( ( $backup['finish_time'] >= $backup['start_time'] ) && ( 0 != $backup['start_time'] ) ) {
|
||||||
|
// it is ok
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $backup['profile'] ) && isset( $backup['profile']['type'] ) ) {
|
||||||
|
$backupType = pb_backupbuddy::$format->prettify( $backup['profile']['type'], $pretty_type );
|
||||||
|
} else {
|
||||||
|
$backupType = backupbuddy_core::pretty_backup_type( backupbuddy_core::getBackupTypeFromFile( $backup['archive_file'] ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( '' == $backupType ) {
|
||||||
|
$backupType = 'Unknown';
|
||||||
|
}
|
||||||
|
|
||||||
|
$finish_time = $backup['finish_time'];
|
||||||
|
$message = 'BackupBuddy ' . $backupType . ' finished';
|
||||||
|
if (!empty($finish_time)) {
|
||||||
|
do_action( 'mainwp_reports_backupbuddy_backup', $message, $backupType, $finish_time);
|
||||||
|
MainWP_Helper::update_lasttime_backup('backupbuddy', $finish_time); // to support backup before update feature
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function action() {
|
public function action() {
|
||||||
$information = array();
|
$information = array();
|
||||||
|
@ -692,6 +674,16 @@ class MainWP_Child_Back_Up_Buddy {
|
||||||
|
|
||||||
|
|
||||||
public function get_sync_data() {
|
public function get_sync_data() {
|
||||||
|
if ( ! class_exists( 'backupbuddy_core' ) ) {
|
||||||
|
if (class_exists( 'pb_backupbuddy' ) && file_exists(pb_backupbuddy::plugin_path() . '/classes/core.php'))
|
||||||
|
require_once( pb_backupbuddy::plugin_path() . '/classes/core.php' );
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('backupbuddy_core::get_plugins_root'))
|
||||||
|
return false;
|
||||||
|
|
||||||
$information = array();
|
$information = array();
|
||||||
$information['plugins_root'] = backupbuddy_core::get_plugins_root();
|
$information['plugins_root'] = backupbuddy_core::get_plugins_root();
|
||||||
$information['themes_root'] = backupbuddy_core::get_themes_root();
|
$information['themes_root'] = backupbuddy_core::get_themes_root();
|
||||||
|
@ -1821,6 +1813,29 @@ class MainWP_Child_Back_Up_Buddy {
|
||||||
function remote_save() {
|
function remote_save() {
|
||||||
$data = isset($_POST['data']) ? $_POST['data'] : false;
|
$data = isset($_POST['data']) ? $_POST['data'] : false;
|
||||||
$destination_id = isset($_POST['destination_id']) ? $_POST['destination_id'] : 0;
|
$destination_id = isset($_POST['destination_id']) ? $_POST['destination_id'] : 0;
|
||||||
|
|
||||||
|
if (is_array($data) && isset($data['do_not_override'])) {
|
||||||
|
|
||||||
|
if (true == $data['do_not_override']) {
|
||||||
|
if (($data['type'] == 's32' || $data['type'] == 's33')) {
|
||||||
|
$not_override = array(
|
||||||
|
'accesskey',
|
||||||
|
'secretkey',
|
||||||
|
'bucket',
|
||||||
|
'region'
|
||||||
|
);
|
||||||
|
foreach($not_override as $opt) {
|
||||||
|
if (isset($data[$opt])) {
|
||||||
|
unset($data[$opt]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($data['do_not_override']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (is_array($data)) {
|
if (is_array($data)) {
|
||||||
if (isset(pb_backupbuddy::$options['remote_destinations'][$destination_id])) { // update
|
if (isset(pb_backupbuddy::$options['remote_destinations'][$destination_id])) { // update
|
||||||
pb_backupbuddy::$options['remote_destinations'][$destination_id] = array_merge( pb_backupbuddy::$options['remote_destinations'][$destination_id], $data );
|
pb_backupbuddy::$options['remote_destinations'][$destination_id] = array_merge( pb_backupbuddy::$options['remote_destinations'][$destination_id], $data );
|
||||||
|
|
|
@ -1246,6 +1246,9 @@ class MainWP_Child_Back_WP_Up {
|
||||||
$url = BackWPup_Job::get_jobrun_url( 'runnowlink', $job_id );
|
$url = BackWPup_Job::get_jobrun_url( 'runnowlink', $job_id );
|
||||||
BackWPup_Admin::message( sprintf( __( 'Changes for job <i>%s</i> saved.', 'backwpup' ), BackWPup_Option::get( $job_id, 'name' ) ) . ' <a href="' . network_admin_url( 'admin.php' ) . '?page=backwpupjobs">' . __( 'Jobs overview', 'backwpup' ) . '</a> | <a href="' . $url['url'] . '">' . __( 'Run now', 'backwpup' ) . '</a>' );
|
BackWPup_Admin::message( sprintf( __( 'Changes for job <i>%s</i> saved.', 'backwpup' ), BackWPup_Option::get( $job_id, 'name' ) ) . ' <a href="' . network_admin_url( 'admin.php' ) . '?page=backwpupjobs">' . __( 'Jobs overview', 'backwpup' ) . '</a> | <a href="' . $url['url'] . '">' . __( 'Run now', 'backwpup' ) . '</a>' );
|
||||||
}
|
}
|
||||||
|
} else if ($settings['tab'] == 'dest-DROPBOX') {
|
||||||
|
unset($settings['value']); // do not save dropbox settings
|
||||||
|
BackWPup_Page_Editjob::save_post_form( $settings['tab'], $job_id );
|
||||||
} else {
|
} else {
|
||||||
BackWPup_Page_Editjob::save_post_form( $settings['tab'], $job_id );
|
BackWPup_Page_Editjob::save_post_form( $settings['tab'], $job_id );
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
class MainWP_Child_iThemes_Security {
|
class MainWP_Child_iThemes_Security {
|
||||||
public static $instance = null;
|
public static $instance = null;
|
||||||
|
public $is_plugin_installed = false;
|
||||||
|
|
||||||
static function Instance() {
|
static function Instance() {
|
||||||
if ( null === MainWP_Child_iThemes_Security::$instance ) {
|
if ( null === MainWP_Child_iThemes_Security::$instance ) {
|
||||||
MainWP_Child_iThemes_Security::$instance = new MainWP_Child_iThemes_Security();
|
MainWP_Child_iThemes_Security::$instance = new MainWP_Child_iThemes_Security();
|
||||||
|
@ -11,15 +12,28 @@ class MainWP_Child_iThemes_Security {
|
||||||
return MainWP_Child_iThemes_Security::$instance;
|
return MainWP_Child_iThemes_Security::$instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
|
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
||||||
|
if ( is_plugin_active( 'better-wp-security/better-wp-security.php') || is_plugin_active( 'ithemes-security-pro/ithemes-security-pro.php' ) ) {
|
||||||
|
$this->is_plugin_installed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->is_plugin_installed)
|
||||||
|
return;
|
||||||
|
|
||||||
add_filter( 'mainwp-site-sync-others-data', array( $this, 'syncOthersData' ), 10, 2 );
|
add_filter( 'mainwp-site-sync-others-data', array( $this, 'syncOthersData' ), 10, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncOthersData( $information, $data = array() ) {
|
function syncOthersData( $information, $data = array() ) {
|
||||||
if ( is_array( $data ) && isset( $data['ithemeExtActivated'] ) && ( 'yes' === $data['ithemeExtActivated'] ) ) {
|
if ( is_array( $data ) && isset( $data['ithemeExtActivated'] ) && ( 'yes' === $data['ithemeExtActivated'] ) ) {
|
||||||
MainWP_Helper::update_option( 'mainwp_ithemes_ext_activated', 'Y' );
|
$information['syncIThemeData'] = array(
|
||||||
|
'users_and_roles' => $this->get_available_admin_users_and_roles()
|
||||||
|
);
|
||||||
|
//MainWP_Helper::update_option( 'mainwp_ithemes_ext_activated', 'Y' );
|
||||||
|
return $information;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
MainWP_Helper::update_option( 'mainwp_ithemes_ext_activated', '' );
|
//MainWP_Helper::update_option( 'mainwp_ithemes_ext_activated', '' );
|
||||||
}
|
}
|
||||||
return $information;
|
return $information;
|
||||||
}
|
}
|
||||||
|
@ -96,8 +110,8 @@ class MainWP_Child_iThemes_Security {
|
||||||
$information = $this->security_site();
|
$information = $this->security_site();
|
||||||
break;
|
break;
|
||||||
case 'activate_network_brute_force':
|
case 'activate_network_brute_force':
|
||||||
$information = $this->activate_network_brute_force();
|
$information = $this->activate_network_brute_force();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MainWP_Helper::write( $information );
|
MainWP_Helper::write( $information );
|
||||||
|
@ -163,7 +177,8 @@ class MainWP_Child_iThemes_Security {
|
||||||
'strong-passwords',
|
'strong-passwords',
|
||||||
'system-tweaks',
|
'system-tweaks',
|
||||||
'wordpress-tweaks',
|
'wordpress-tweaks',
|
||||||
'multisite-tweaks',
|
'multisite-tweaks',
|
||||||
|
'notification-center'
|
||||||
//'salts',
|
//'salts',
|
||||||
//'content-directory',
|
//'content-directory',
|
||||||
);
|
);
|
||||||
|
@ -174,7 +189,7 @@ class MainWP_Child_iThemes_Security {
|
||||||
$nbf_settings = array();
|
$nbf_settings = array();
|
||||||
|
|
||||||
$update_settings = maybe_unserialize( base64_decode( $_POST['settings'] ) );
|
$update_settings = maybe_unserialize( base64_decode( $_POST['settings'] ) );
|
||||||
|
|
||||||
foreach($update_settings as $module => $settings) {
|
foreach($update_settings as $module => $settings) {
|
||||||
$do_not_save = false;
|
$do_not_save = false;
|
||||||
if (in_array($module, $_itsec_modules)) {
|
if (in_array($module, $_itsec_modules)) {
|
||||||
|
@ -240,7 +255,26 @@ class MainWP_Child_iThemes_Security {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$settings = $nbf_settings;
|
$settings = $nbf_settings;
|
||||||
}
|
} else if ($module == 'notification-center') {
|
||||||
|
$current_settings = ITSEC_Modules::get_settings( $module );
|
||||||
|
if (isset($settings['notifications'])) {
|
||||||
|
$update_fields = array( 'schedule', 'enabled', 'subject');
|
||||||
|
if (isset($_POST['is_individual']) && $_POST['is_individual']) {
|
||||||
|
$update_fields = array_merge($update_fields, array('user_list', 'email_list'));
|
||||||
|
}
|
||||||
|
foreach ($settings['notifications'] as $key => $val) {
|
||||||
|
foreach ($update_fields as $field) {
|
||||||
|
if(isset($val[$field])) {
|
||||||
|
$current_settings['notifications'][$key][$field] = $val[$field];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$updated = true;
|
||||||
|
ITSEC_Modules::set_settings( $module, $current_settings );
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !$do_not_save ) {
|
if ( !$do_not_save ) {
|
||||||
ITSEC_Modules::set_settings( $module, $settings );
|
ITSEC_Modules::set_settings( $module, $settings );
|
||||||
$updated = true;
|
$updated = true;
|
||||||
|
@ -249,7 +283,11 @@ class MainWP_Child_iThemes_Security {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset( $update_settings['itsec_active_modules'] ) ) {
|
if ( isset( $update_settings['itsec_active_modules'] ) ) {
|
||||||
update_site_option( 'itsec_active_modules', $update_settings['itsec_active_modules'] );
|
$current_val = get_site_option( 'itsec_active_modules', array() );
|
||||||
|
foreach ($update_settings['itsec_active_modules'] as $mod => $val) {
|
||||||
|
$current_val[$mod] = $val;
|
||||||
|
}
|
||||||
|
update_site_option( 'itsec_active_modules', $current_val );
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once( ITSEC_Core::get_core_dir() . '/lib/class-itsec-lib-config-file.php' );
|
require_once( ITSEC_Core::get_core_dir() . '/lib/class-itsec-lib-config-file.php' );
|
||||||
|
@ -259,9 +297,8 @@ class MainWP_Child_iThemes_Security {
|
||||||
'is_multisite' => is_multisite() ? 1 : 0,
|
'is_multisite' => is_multisite() ? 1 : 0,
|
||||||
'users_can_register' => get_site_option( 'users_can_register' ) ? 1 : 0,
|
'users_can_register' => get_site_option( 'users_can_register' ) ? 1 : 0,
|
||||||
'server_nginx' => ( ITSEC_Lib::get_server() === 'nginx' ) ? 1 : 0,
|
'server_nginx' => ( ITSEC_Lib::get_server() === 'nginx' ) ? 1 : 0,
|
||||||
'has_ssl' => ITSEC_Lib::get_ssl() ? 1 : 0,
|
'has_ssl' => ITSEC_Lib::get_ssl_support_probability(),
|
||||||
'jquery_version' => ITSEC_Modules::get_setting( 'wordpress-tweaks', 'jquery_version' ),
|
'jquery_version' => ITSEC_Modules::get_setting( 'wordpress-tweaks', 'jquery_version' ),
|
||||||
'is_jquery_version_safe'=> ITSEC_Lib::is_jquery_version_safe(),
|
|
||||||
'server_rules' => ITSEC_Lib_Config_File::get_server_config(),
|
'server_rules' => ITSEC_Lib_Config_File::get_server_config(),
|
||||||
'config_rules' => ITSEC_Lib_Config_File::get_wp_config(),
|
'config_rules' => ITSEC_Lib_Config_File::get_wp_config(),
|
||||||
'lockouts_host' => $this->get_lockouts( 'host', true ),
|
'lockouts_host' => $this->get_lockouts( 'host', true ),
|
||||||
|
@ -270,6 +307,7 @@ class MainWP_Child_iThemes_Security {
|
||||||
'default_log_location' => ITSEC_Modules::get_default( 'global', 'log_location' ),
|
'default_log_location' => ITSEC_Modules::get_default( 'global', 'log_location' ),
|
||||||
'default_location' => ITSEC_Modules::get_default( 'backup', 'location' ),
|
'default_location' => ITSEC_Modules::get_default( 'backup', 'location' ),
|
||||||
'excludable_tables' => $this->get_excludable_tables(),
|
'excludable_tables' => $this->get_excludable_tables(),
|
||||||
|
'users_and_roles' => $this->get_available_admin_users_and_roles()
|
||||||
);
|
);
|
||||||
|
|
||||||
$return = array(
|
$return = array(
|
||||||
|
@ -647,10 +685,17 @@ class MainWP_Child_iThemes_Security {
|
||||||
|
|
||||||
$username_exists = username_exists( 'admin' );
|
$username_exists = username_exists( 'admin' );
|
||||||
$user_id_exists = ITSEC_Lib::user_id_exists( 1 );
|
$user_id_exists = ITSEC_Lib::user_id_exists( 1 );
|
||||||
$msg = '';
|
$msg = '';
|
||||||
if ( strlen( $new_username ) >= 1 && ! $username_exists ) {
|
if ( strlen( $new_username ) >= 1) {
|
||||||
$msg = __( 'Admin user already changes.', 'mainwp-child' );
|
global $current_user;
|
||||||
}
|
if ( ! $username_exists ) {
|
||||||
|
$msg = __( 'Admin user already changes.', 'mainwp-child' );
|
||||||
|
} else if ($current_user->user_login == 'admin') {
|
||||||
|
$return['result'] = 'CHILD_ADMIN';
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( true === $change_id && ! $user_id_exists ) {
|
if ( true === $change_id && ! $user_id_exists ) {
|
||||||
if ( ! empty( $msg ) ) {
|
if ( ! empty( $msg ) ) {
|
||||||
|
@ -659,13 +704,13 @@ class MainWP_Child_iThemes_Security {
|
||||||
$msg .= __( 'Admin user ID already changes.', 'mainwp-child' );
|
$msg .= __( 'Admin user ID already changes.', 'mainwp-child' );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $change_id ) {
|
// if ( $change_id ) {
|
||||||
$user = get_user_by( 'login', $new_username );
|
// $user = get_user_by( 'login', $new_username );
|
||||||
if ( $user && 1 === (int) $user->ID ) {
|
// if ( $user && 1 === (int) $user->ID ) {
|
||||||
$return['result'] = 'CHILD_ADMIN';
|
// $return['result'] = 'CHILD_ADMIN';
|
||||||
return $return;
|
// return $return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
$admin_success = true;
|
$admin_success = true;
|
||||||
$return = array();
|
$return = array();
|
||||||
|
@ -690,7 +735,8 @@ class MainWP_Child_iThemes_Security {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$itsec_files = ITSEC_Core::get_itsec_files();
|
$itsec_files = ITSEC_Core::get_itsec_files();
|
||||||
|
|
||||||
if ( $itsec_files->get_file_lock( 'admin_user' ) ) { //make sure it isn't already running
|
// do not need to check this
|
||||||
|
//if ( $itsec_files->get_file_lock( 'admin_user' ) ) { //make sure it isn't already running
|
||||||
|
|
||||||
//sanitize the username
|
//sanitize the username
|
||||||
$new_user = sanitize_text_field( $username );
|
$new_user = sanitize_text_field( $username );
|
||||||
|
@ -771,7 +817,7 @@ class MainWP_Child_iThemes_Security {
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -1047,7 +1093,12 @@ class MainWP_Child_iThemes_Security {
|
||||||
if (!is_array($active_modules))
|
if (!is_array($active_modules))
|
||||||
$active_modules = array();
|
$active_modules = array();
|
||||||
|
|
||||||
update_site_option( 'itsec_active_modules', $active_modules );
|
$current_val = get_site_option( 'itsec_active_modules', array() );
|
||||||
|
foreach ($active_modules as $mod => $val) {
|
||||||
|
$current_val[$mod] = $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_site_option( 'itsec_active_modules', $current_val );
|
||||||
return array('result' => 'success');
|
return array('result' => 'success');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1099,12 +1150,50 @@ class MainWP_Child_iThemes_Security {
|
||||||
return $excludes ;
|
return $excludes ;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function security_site() {
|
private function security_site() {
|
||||||
global $mainwp_itsec_modules_path;
|
global $mainwp_itsec_modules_path;
|
||||||
require_once( $mainwp_itsec_modules_path . 'security-check/scanner.php' );
|
require_once( $mainwp_itsec_modules_path . 'security-check/scanner.php' );
|
||||||
ITSEC_Security_Check_Scanner::run();
|
require_once( $mainwp_itsec_modules_path . 'security-check/feedback-renderer.php' );
|
||||||
$response = ITSEC_Response::get_response();
|
// ITSEC_Security_Check_Scanner::run();
|
||||||
|
// $response = ITSEC_Response::get_response();
|
||||||
|
$results = ITSEC_Security_Check_Scanner::get_results();
|
||||||
|
ob_start();
|
||||||
|
ITSEC_Security_Check_Feedback_Renderer::render( $results );
|
||||||
|
$response = ob_get_clean();
|
||||||
return array('result' => 'success' , 'response' => $response);
|
return array('result' => 'success' , 'response' => $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// source from itheme plugin
|
||||||
|
public function get_available_admin_users_and_roles() {
|
||||||
|
if ( is_callable( 'wp_roles' ) ) {
|
||||||
|
$roles = wp_roles();
|
||||||
|
} else {
|
||||||
|
$roles = new WP_Roles();
|
||||||
|
}
|
||||||
|
|
||||||
|
$available_roles = array();
|
||||||
|
$available_users = array();
|
||||||
|
|
||||||
|
foreach ( $roles->roles as $role => $details ) {
|
||||||
|
if ( isset( $details['capabilities']['manage_options'] ) && ( true === $details['capabilities']['manage_options'] ) ) {
|
||||||
|
$available_roles["role:$role"] = translate_user_role( $details['name'] );
|
||||||
|
|
||||||
|
$users = get_users( array( 'role' => $role ) );
|
||||||
|
|
||||||
|
foreach ( $users as $user ) {
|
||||||
|
/* translators: 1: user display name, 2: user login */
|
||||||
|
$available_users[ $user->ID ] = sprintf( __( '%1$s (%2$s)', 'better-wp-security' ), $user->display_name, $user->user_login );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
natcasesort( $available_users );
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'users' => $available_users,
|
||||||
|
'roles' => $available_roles,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
367
class/class-mainwp-child-staging.php
Normal file
367
class/class-mainwp-child-staging.php
Normal file
|
@ -0,0 +1,367 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class MainWP_Child_Staging {
|
||||||
|
|
||||||
|
public static $instance = null;
|
||||||
|
public $is_plugin_installed = false;
|
||||||
|
|
||||||
|
static function Instance() {
|
||||||
|
if ( null === MainWP_Child_Staging::$instance ) {
|
||||||
|
MainWP_Child_Staging::$instance = new MainWP_Child_Staging();
|
||||||
|
}
|
||||||
|
return MainWP_Child_Staging::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
||||||
|
if ( is_plugin_active( 'wp-staging/wp-staging.php' ) && defined('WPSTG_PLUGIN_DIR')) {
|
||||||
|
$this->is_plugin_installed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->is_plugin_installed)
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function init() {
|
||||||
|
if ( get_option( 'mainwp_wp_staging_ext_enabled' ) !== 'Y' )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!$this->is_plugin_installed)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//add_action( 'mainwp_child_site_stats', array( $this, 'do_site_stats' ) );
|
||||||
|
|
||||||
|
if ( get_option( 'mainwp_wp_staging_hide_plugin' ) === 'hide' ) {
|
||||||
|
add_filter( 'all_plugins', array( $this, 'all_plugins' ) );
|
||||||
|
add_action( 'admin_menu', array( $this, 'remove_menu' ) );
|
||||||
|
add_filter( 'site_transient_update_plugins', array( &$this, 'remove_update_nag' ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get_sync_data() {
|
||||||
|
return $this->get_overview();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function action() {
|
||||||
|
if (!$this->is_plugin_installed) {
|
||||||
|
MainWP_Helper::write( array('error' => 'Please install WP Staging plugin on child website') );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!class_exists( 'WPStaging\WPStaging' )){
|
||||||
|
require_once WPSTG_PLUGIN_DIR . "apps/Core/WPStaging.php";
|
||||||
|
}
|
||||||
|
\WPStaging\WPStaging::getInstance();
|
||||||
|
|
||||||
|
$information = array();
|
||||||
|
if (get_option( 'mainwp_wp_staging_ext_enabled' ) !== 'Y') {
|
||||||
|
MainWP_Helper::update_option( 'mainwp_wp_staging_ext_enabled', 'Y', 'yes' );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $_POST['mwp_action'] ) ) {
|
||||||
|
switch ( $_POST['mwp_action'] ) {
|
||||||
|
case 'set_showhide':
|
||||||
|
$information = $this->set_showhide();
|
||||||
|
break;
|
||||||
|
case 'save_settings':
|
||||||
|
$information = $this->save_settings();
|
||||||
|
break;
|
||||||
|
case 'get_overview':
|
||||||
|
$information = $this->get_overview();
|
||||||
|
break;
|
||||||
|
case 'get_scan':
|
||||||
|
$information = $this->get_scan();
|
||||||
|
break;
|
||||||
|
case 'check_disk_space':
|
||||||
|
$information = $this->ajaxCheckFreeSpace();
|
||||||
|
break;
|
||||||
|
case 'check_clone':
|
||||||
|
$information = $this->ajaxCheckCloneName();
|
||||||
|
break;
|
||||||
|
case 'start_clone':
|
||||||
|
$information = $this->ajaxStartClone();
|
||||||
|
break;
|
||||||
|
case 'clone_database':
|
||||||
|
$information = $this->ajaxCloneDatabase();
|
||||||
|
break;
|
||||||
|
case 'prepare_directories':
|
||||||
|
$information = $this->ajaxPrepareDirectories();
|
||||||
|
break;
|
||||||
|
case 'copy_files':
|
||||||
|
$information = $this->ajaxCopyFiles();
|
||||||
|
break;
|
||||||
|
case 'replace_data':
|
||||||
|
$information = $this->ajaxReplaceData();
|
||||||
|
break;
|
||||||
|
case 'clone_finish':
|
||||||
|
$information = $this->ajaxFinish();
|
||||||
|
break;
|
||||||
|
case 'delete_confirmation':
|
||||||
|
$information = $this->ajaxDeleteConfirmation();
|
||||||
|
break;
|
||||||
|
case 'delete_clone':
|
||||||
|
$information = $this->ajaxDeleteClone();
|
||||||
|
break;
|
||||||
|
case 'cancel_clone':
|
||||||
|
$information = $this->ajaxCancelClone();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MainWP_Helper::write( $information );
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_showhide() {
|
||||||
|
$hide = isset( $_POST['showhide'] ) && ( 'hide' === $_POST['showhide'] ) ? 'hide' : '';
|
||||||
|
MainWP_Helper::update_option( 'mainwp_wp_staging_hide_plugin', $hide, 'yes' );
|
||||||
|
$information['result'] = 'SUCCESS';
|
||||||
|
return $information;
|
||||||
|
}
|
||||||
|
|
||||||
|
function save_settings() {
|
||||||
|
$settings = $_POST['settings'];
|
||||||
|
$filters = array(
|
||||||
|
'queryLimit',
|
||||||
|
'fileLimit',
|
||||||
|
'batchSize',
|
||||||
|
'cpuLoad',
|
||||||
|
'disableAdminLogin',
|
||||||
|
'wpSubDirectory',
|
||||||
|
'debugMode',
|
||||||
|
'unInstallOnDelete',
|
||||||
|
'checkDirectorySize'
|
||||||
|
);
|
||||||
|
|
||||||
|
$save_fields = array();
|
||||||
|
foreach($filters as $field) {
|
||||||
|
if (isset($settings[$field])) {
|
||||||
|
$save_fields[$field] = $settings[$field];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update_option('wpstg_settings', $save_fields );
|
||||||
|
return array('result' => 'success');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get_overview() {
|
||||||
|
$return = array(
|
||||||
|
'availableClones' => get_option( "wpstg_existing_clones_beta", array())
|
||||||
|
);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get_scan() {
|
||||||
|
// Scan
|
||||||
|
$scan = new WPStaging\Backend\Modules\Jobs\Scan();
|
||||||
|
$scan->start();
|
||||||
|
|
||||||
|
// Get Options
|
||||||
|
$options = $scan->getOptions();
|
||||||
|
|
||||||
|
$return = array(
|
||||||
|
'options' => serialize($options),
|
||||||
|
'directoryListing' => $scan->directoryListing(),
|
||||||
|
'prefix' => WPStaging\WPStaging::getTablePrefix()
|
||||||
|
);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function ajaxCheckCloneName() {
|
||||||
|
$cloneName = sanitize_key( $_POST["cloneID"] );
|
||||||
|
$cloneNameLength = strlen( $cloneName );
|
||||||
|
$clones = get_option( "wpstg_existing_clones_beta", array() );
|
||||||
|
|
||||||
|
// Check clone name length
|
||||||
|
if( $cloneNameLength < 1 || $cloneNameLength > 16 ) {
|
||||||
|
echo array(
|
||||||
|
"status" => "failed",
|
||||||
|
"message" => "Clone name must be between 1 - 16 characters"
|
||||||
|
);
|
||||||
|
} elseif( array_key_exists( $cloneName, $clones ) ) {
|
||||||
|
return array(
|
||||||
|
"status" => "failed",
|
||||||
|
"message" => "Clone name is already in use, please choose an another clone name"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array("status" => "success");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ajaxStartClone() {
|
||||||
|
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
|
||||||
|
if( !$cloning->save() ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
require_once WPSTG_PLUGIN_DIR . "apps/Backend/views/clone/ajax/start.php";
|
||||||
|
$result = ob_get_clean();
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ajaxCloneDatabase() {
|
||||||
|
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
|
||||||
|
return $cloning->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajax Prepare Directories (get listing of files)
|
||||||
|
*/
|
||||||
|
public function ajaxPrepareDirectories() {
|
||||||
|
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
|
||||||
|
return $cloning->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajax Clone Files
|
||||||
|
*/
|
||||||
|
public function ajaxCopyFiles() {
|
||||||
|
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
|
||||||
|
return $cloning->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajax Replace Data
|
||||||
|
*/
|
||||||
|
public function ajaxReplaceData() {
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
return $cloning->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajax Finish
|
||||||
|
*/
|
||||||
|
public function ajaxFinish() {
|
||||||
|
|
||||||
|
$cloning = new WPStaging\Backend\Modules\Jobs\Cloning();
|
||||||
|
$this->url = ''; // to fix warning
|
||||||
|
$return = $cloning->start();
|
||||||
|
$return->blogInfoName = get_bloginfo("name");
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajax Delete Confirmation
|
||||||
|
*/
|
||||||
|
public function ajaxDeleteConfirmation() {
|
||||||
|
|
||||||
|
$delete = new WPStaging\Backend\Modules\Jobs\Delete();
|
||||||
|
$delete->setData();
|
||||||
|
$clone = $delete->getClone();
|
||||||
|
$result = array(
|
||||||
|
'clone' => $clone,
|
||||||
|
'deleteTables' => $delete->getTables()
|
||||||
|
);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete clone
|
||||||
|
*/
|
||||||
|
public function ajaxDeleteClone() {
|
||||||
|
|
||||||
|
$delete = new WPStaging\Backend\Modules\Jobs\Delete();
|
||||||
|
return $delete->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete clone
|
||||||
|
*/
|
||||||
|
public function ajaxCancelClone() {
|
||||||
|
$cancel = new WPStaging\Backend\Modules\Jobs\Cancel();
|
||||||
|
return $cancel->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function ajaxCheckFreeSpace() {
|
||||||
|
return $this->hasFreeDiskSpace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// from wp-staging plugin
|
||||||
|
public function hasFreeDiskSpace() {
|
||||||
|
if( !function_exists( "disk_free_space" ) ) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$freeSpace = @disk_free_space( ABSPATH );
|
||||||
|
if( false === $freeSpace ) {
|
||||||
|
$data = array(
|
||||||
|
'freespace' => false,
|
||||||
|
'usedspace' => $this->formatSize($this->getDirectorySizeInclSubdirs(ABSPATH))
|
||||||
|
);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
$data = array(
|
||||||
|
'freespace' => $this->formatSize($freeSpace),
|
||||||
|
'usedspace' => $this->formatSize($this->getDirectorySizeInclSubdirs(ABSPATH))
|
||||||
|
);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// from wp-staging plugin
|
||||||
|
function getDirectorySizeInclSubdirs( $dir ) {
|
||||||
|
$size = 0;
|
||||||
|
foreach ( glob( rtrim( $dir, '/' ) . '/*', GLOB_NOSORT ) as $each ) {
|
||||||
|
$size += is_file( $each ) ? filesize( $each ) : $this->getDirectorySizeInclSubdirs( $each );
|
||||||
|
}
|
||||||
|
return $size;
|
||||||
|
}
|
||||||
|
|
||||||
|
// from wp-staging plugin
|
||||||
|
public function formatSize($bytes, $precision = 2)
|
||||||
|
{
|
||||||
|
if ((double) $bytes < 1)
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$units = array('B', "KB", "MB", "GB", "TB");
|
||||||
|
|
||||||
|
$bytes = (double) $bytes;
|
||||||
|
$base = log($bytes) / log(1000); // 1024 would be for MiB KiB etc
|
||||||
|
$pow = pow(1000, $base - floor($base)); // Same rule for 1000
|
||||||
|
|
||||||
|
return round($pow, $precision) . ' ' . $units[(int) floor($base)];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function all_plugins( $plugins ) {
|
||||||
|
foreach ( $plugins as $key => $value ) {
|
||||||
|
$plugin_slug = basename( $key, '.php' );
|
||||||
|
if ( 'wp-staging' === $plugin_slug ) {
|
||||||
|
unset( $plugins[ $key ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $plugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function remove_menu() {
|
||||||
|
remove_menu_page( 'wpstg_clone' );
|
||||||
|
$pos = stripos( $_SERVER['REQUEST_URI'], 'admin.php?page=wpstg_clone' );
|
||||||
|
if ( false !== $pos ) {
|
||||||
|
wp_redirect( get_option( 'siteurl' ) . '/wp-admin/index.php' );
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove_update_nag( $value ) {
|
||||||
|
if ( isset( $_POST['mainwpsignature'] ) ) {
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
if ( isset( $value->response['wp-staging/wp-staging.php'] ) ) {
|
||||||
|
unset( $value->response['wp-staging/wp-staging.php'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -168,7 +168,7 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
'updraft_retain',
|
'updraft_retain',
|
||||||
'updraft_retain_db',
|
'updraft_retain_db',
|
||||||
'updraft_encryptionphrase',
|
'updraft_encryptionphrase',
|
||||||
'updraft_service',
|
//'updraft_service', // will check override to save
|
||||||
'updraft_dir',
|
'updraft_dir',
|
||||||
'updraft_email',
|
'updraft_email',
|
||||||
'updraft_delete_local',
|
'updraft_delete_local',
|
||||||
|
@ -462,8 +462,8 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
$opts = UpdraftPlus_Options::get_updraft_option( 'updraft_s3' );
|
$opts = UpdraftPlus_Options::get_updraft_option( 'updraft_s3' );
|
||||||
if(is_array($opts) && isset($opts['settings'])) {
|
if(is_array($opts) && isset($opts['settings'])) {
|
||||||
$settings_key = key($opts['settings']);
|
$settings_key = key($opts['settings']);
|
||||||
// $opts['settings'][$settings_key]['accesskey'] = $settings[ $key ]['accesskey'];
|
$opts['settings'][$settings_key]['accesskey'] = $settings[ $key ]['accesskey'];
|
||||||
// $opts['settings'][$settings_key]['secretkey'] = $settings[ $key ]['secretkey'];
|
$opts['settings'][$settings_key]['secretkey'] = $settings[ $key ]['secretkey'];
|
||||||
$opts['settings'][$settings_key]['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
$opts['settings'][$settings_key]['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
||||||
if (!empty($opts['settings'][$settings_key]['path']) && '/' == substr($opts['settings'][$settings_key]['path'], 0, 1)) {
|
if (!empty($opts['settings'][$settings_key]['path']) && '/' == substr($opts['settings'][$settings_key]['path'], 0, 1)) {
|
||||||
$opts['settings'][$settings_key]['path'] = substr($opts['settings'][$settings_key]['path'], 1);
|
$opts['settings'][$settings_key]['path'] = substr($opts['settings'][$settings_key]['path'], 1);
|
||||||
|
@ -473,8 +473,8 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
$opts['settings'][$settings_key]['server_side_encryption'] = $settings[ $key ]['server_side_encryption'];
|
$opts['settings'][$settings_key]['server_side_encryption'] = $settings[ $key ]['server_side_encryption'];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// $opts['accesskey'] = $settings[ $key ]['accesskey'];
|
$opts['accesskey'] = $settings[ $key ]['accesskey'];
|
||||||
// $opts['secretkey'] = $settings[ $key ]['secretkey'];
|
$opts['secretkey'] = $settings[ $key ]['secretkey'];
|
||||||
$opts['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
$opts['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
||||||
if (!empty($opts['path']) && '/' == substr($opts['path'], 0, 1)) {
|
if (!empty($opts['path']) && '/' == substr($opts['path'], 0, 1)) {
|
||||||
$opts['path'] = substr($opts['path'], 1);
|
$opts['path'] = substr($opts['path'], 1);
|
||||||
|
@ -490,14 +490,14 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
$opts = UpdraftPlus_Options::get_updraft_option( 'updraft_s3generic' );
|
$opts = UpdraftPlus_Options::get_updraft_option( 'updraft_s3generic' );
|
||||||
if(is_array($opts) && isset($opts['settings'])) {
|
if(is_array($opts) && isset($opts['settings'])) {
|
||||||
$settings_key = key($opts['settings']);
|
$settings_key = key($opts['settings']);
|
||||||
// $opts['settings'][$settings_key]['endpoint'] = $settings[ $key ]['endpoint'];
|
$opts['settings'][$settings_key]['endpoint'] = $settings[ $key ]['endpoint'];
|
||||||
// $opts['settings'][$settings_key]['accesskey'] = $settings[ $key ]['accesskey'];
|
$opts['settings'][$settings_key]['accesskey'] = $settings[ $key ]['accesskey'];
|
||||||
// $opts['settings'][$settings_key]['secretkey'] = $settings[ $key ]['secretkey'];
|
$opts['settings'][$settings_key]['secretkey'] = $settings[ $key ]['secretkey'];
|
||||||
$opts['settings'][$settings_key]['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
$opts['settings'][$settings_key]['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
||||||
} else {
|
} else {
|
||||||
// $opts['endpoint'] = $settings[ $key ]['endpoint'];
|
$opts['endpoint'] = $settings[ $key ]['endpoint'];
|
||||||
// $opts['accesskey'] = $settings[ $key ]['accesskey'];
|
$opts['accesskey'] = $settings[ $key ]['accesskey'];
|
||||||
// $opts['secretkey'] = $settings[ $key ]['secretkey'];
|
$opts['secretkey'] = $settings[ $key ]['secretkey'];
|
||||||
$opts['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
$opts['path'] = $this->replace_tokens($settings[ $key ]['path']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -564,6 +564,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
$updated = true;
|
$updated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!isset($settings['do_not_save_remote_settings']) || empty($settings['do_not_save_remote_settings'])) {
|
||||||
|
UpdraftPlus_Options::update_updraft_option( 'updraft_service', $settings['updraft_service'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
global $updraftplus;
|
global $updraftplus;
|
||||||
if ( isset( $settings['updraft_interval'] ) ) {
|
if ( isset( $settings['updraft_interval'] ) ) {
|
||||||
// fix for premium version
|
// fix for premium version
|
||||||
|
@ -1097,8 +1104,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
|
|
||||||
private function deleteset() {
|
private function deleteset() {
|
||||||
global $updraftplus;
|
global $updraftplus;
|
||||||
|
|
||||||
$backups = $updraftplus->get_backup_history();
|
if (method_exists($updraftplus, 'get_backup_history')) {
|
||||||
|
$backups = $updraftplus->get_backup_history();
|
||||||
|
} else if (class_exists('UpdraftPlus_Backup_History')) {
|
||||||
|
$backups = UpdraftPlus_Backup_History::get_history();
|
||||||
|
}
|
||||||
$timestamp = $_POST['backup_timestamp'];
|
$timestamp = $_POST['backup_timestamp'];
|
||||||
if ( ! isset( $backups[ $timestamp ] ) ) {
|
if ( ! isset( $backups[ $timestamp ] ) ) {
|
||||||
$bh = $this->build_historystatus();
|
$bh = $this->build_historystatus();
|
||||||
|
@ -1315,8 +1326,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
$updraftplus->jobdata_set( 'job_type', 'download' );
|
$updraftplus->jobdata_set( 'job_type', 'download' );
|
||||||
$updraftplus->jobdata_set( 'job_time_ms', $updraftplus->job_time_ms );
|
$updraftplus->jobdata_set( 'job_time_ms', $updraftplus->job_time_ms );
|
||||||
|
|
||||||
// Retrieve the information from our backup history
|
// Retrieve the information from our backup history
|
||||||
$backup_history = $updraftplus->get_backup_history();
|
if (method_exists($updraftplus, 'get_backup_history')) {
|
||||||
|
$backup_history = $updraftplus->get_backup_history();
|
||||||
|
} else if (class_exists('UpdraftPlus_Backup_History')) {
|
||||||
|
$backup_history = UpdraftPlus_Backup_History::get_history();
|
||||||
|
}
|
||||||
|
|
||||||
// Base name
|
// Base name
|
||||||
$file = $backup_history[ $timestamp ][ $type ];
|
$file = $backup_history[ $timestamp ][ $type ];
|
||||||
|
|
||||||
|
@ -1472,7 +1488,13 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
|
|
||||||
public function restore_alldownloaded() {
|
public function restore_alldownloaded() {
|
||||||
global $updraftplus;
|
global $updraftplus;
|
||||||
$backups = $updraftplus->get_backup_history();
|
|
||||||
|
if (method_exists($updraftplus, 'get_backup_history')) {
|
||||||
|
$backups = $updraftplus->get_backup_history();
|
||||||
|
} else if (class_exists('UpdraftPlus_Backup_History')) {
|
||||||
|
$backups = UpdraftPlus_Backup_History::get_history();
|
||||||
|
}
|
||||||
|
|
||||||
$updraft_dir = $updraftplus->backups_dir_location();
|
$updraft_dir = $updraftplus->backups_dir_location();
|
||||||
|
|
||||||
$timestamp = (int) $_POST['timestamp'];
|
$timestamp = (int) $_POST['timestamp'];
|
||||||
|
@ -2174,7 +2196,12 @@ class MainWP_Child_Updraft_Plus_Backups {
|
||||||
# This attempts to raise the maximum packet size. This can't be done within the session, only globally. Therefore, it has to be done before the session starts; in our case, during the pre-analysis.
|
# This attempts to raise the maximum packet size. This can't be done within the session, only globally. Therefore, it has to be done before the session starts; in our case, during the pre-analysis.
|
||||||
$updraftplus->get_max_packet_size();
|
$updraftplus->get_max_packet_size();
|
||||||
|
|
||||||
$backup = $updraftplus->get_backup_history( $timestamp );
|
if (method_exists($updraftplus, 'get_backup_history')) {
|
||||||
|
$backup = $updraftplus->get_backup_history($timestamp);
|
||||||
|
} else if (class_exists('UpdraftPlus_Backup_History')) {
|
||||||
|
$backup = UpdraftPlus_Backup_History::get_history($timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! isset( $backup['nonce'] ) || ! isset( $backup['db'] ) ) {
|
if ( ! isset( $backup['nonce'] ) || ! isset( $backup['db'] ) ) {
|
||||||
return array( $mess, $warn, $err, $info );
|
return array( $mess, $warn, $err, $info );
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,11 @@ class MainWP_Child_WooCommerce_Status {
|
||||||
|
|
||||||
public function action() {
|
public function action() {
|
||||||
$information = array();
|
$information = array();
|
||||||
if ( ! class_exists( 'WooCommerce' ) ) {
|
if ( ! class_exists( 'WooCommerce' ) || !defined('WC_VERSION')) {
|
||||||
$information['error'] = 'NO_WOOCOMMERCE';
|
$information['error'] = 'NO_WOOCOMMERCE';
|
||||||
MainWP_Helper::write( $information );
|
MainWP_Helper::write( $information );
|
||||||
}
|
}
|
||||||
|
|
||||||
$is_ver220 = $this->is_version_220();
|
$is_ver220 = $this->is_version_220();
|
||||||
if ( isset( $_POST['mwp_action'] ) ) {
|
if ( isset( $_POST['mwp_action'] ) ) {
|
||||||
switch ( $_POST['mwp_action'] ) {
|
switch ( $_POST['mwp_action'] ) {
|
||||||
|
@ -35,6 +35,9 @@ class MainWP_Child_WooCommerce_Status {
|
||||||
break;
|
break;
|
||||||
case 'report_data':
|
case 'report_data':
|
||||||
$information = ! $is_ver220 ? $this->report_data() : $this->report_data_two();
|
$information = ! $is_ver220 ? $this->report_data() : $this->report_data_two();
|
||||||
|
break;
|
||||||
|
case 'update_wc_db':
|
||||||
|
$information = $this->update_wc_db();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -281,6 +284,7 @@ class MainWP_Child_WooCommerce_Status {
|
||||||
}
|
}
|
||||||
|
|
||||||
function sync_data_two() {
|
function sync_data_two() {
|
||||||
|
// sync data at current time
|
||||||
$start_date = current_time( 'timestamp' );
|
$start_date = current_time( 'timestamp' );
|
||||||
$end_date = current_time( 'timestamp' );
|
$end_date = current_time( 'timestamp' );
|
||||||
|
|
||||||
|
@ -293,7 +297,14 @@ class MainWP_Child_WooCommerce_Status {
|
||||||
|
|
||||||
return $this->get_woocom_data( $start_date, $end_date );
|
return $this->get_woocom_data( $start_date, $end_date );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_db_update() {
|
||||||
|
if ( version_compare( get_option( 'woocommerce_db_version' ), WC_VERSION, '<' ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function get_woocom_data( $start_date, $end_date ) {
|
function get_woocom_data( $start_date, $end_date ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$file = WP_PLUGIN_DIR . '/woocommerce/includes/admin/reports/class-wc-admin-report.php';
|
$file = WP_PLUGIN_DIR . '/woocommerce/includes/admin/reports/class-wc-admin-report.php';
|
||||||
|
@ -402,11 +413,40 @@ class MainWP_Child_WooCommerce_Status {
|
||||||
'stock' => $stock,
|
'stock' => $stock,
|
||||||
'nostock' => $nostock,
|
'nostock' => $nostock,
|
||||||
'lowstock' => $lowinstock_count,
|
'lowstock' => $lowinstock_count,
|
||||||
'outstock' => $outofstock_count,
|
'outstock' => $outofstock_count
|
||||||
);
|
);
|
||||||
$information['data'] = $data;
|
$information['data'] = $data;
|
||||||
|
$information['need_db_update'] = $this->check_db_update();
|
||||||
return $information;
|
return $information;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function update_wc_db() {
|
||||||
|
include_once( WC()->plugin_path() . '/includes/class-wc-background-updater.php' );
|
||||||
|
$background_updater = new WC_Background_Updater();
|
||||||
|
|
||||||
|
$current_db_version = get_option( 'woocommerce_db_version' );
|
||||||
|
$logger = wc_get_logger();
|
||||||
|
$update_queued = false;
|
||||||
|
|
||||||
|
foreach ( WC_Install::get_db_update_callbacks() as $version => $update_callbacks ) {
|
||||||
|
if ( version_compare( $current_db_version, $version, '<' ) ) {
|
||||||
|
foreach ( $update_callbacks as $update_callback ) {
|
||||||
|
$logger->info(
|
||||||
|
sprintf( 'Queuing %s - %s', $version, $update_callback ),
|
||||||
|
array( 'source' => 'wc_db_updates' )
|
||||||
|
);
|
||||||
|
$background_updater->push_to_queue( $update_callback );
|
||||||
|
$update_queued = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $update_queued ) {
|
||||||
|
$background_updater->save()->dispatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
return array('result' => 'success');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ if ( isset( $_GET['skeleton_keyuse_nonce_key'] ) && isset( $_GET['skeleton_keyus
|
||||||
}
|
}
|
||||||
|
|
||||||
class MainWP_Child {
|
class MainWP_Child {
|
||||||
public static $version = '3.4.3';
|
public static $version = '3.4.4';
|
||||||
private $update_version = '1.3';
|
private $update_version = '1.3';
|
||||||
|
|
||||||
private $callableFunctions = array(
|
private $callableFunctions = array(
|
||||||
|
@ -149,7 +149,8 @@ class MainWP_Child {
|
||||||
'custom_post_type' => 'custom_post_type',
|
'custom_post_type' => 'custom_post_type',
|
||||||
'backup_buddy' => 'backup_buddy',
|
'backup_buddy' => 'backup_buddy',
|
||||||
'get_site_icon' => 'get_site_icon',
|
'get_site_icon' => 'get_site_icon',
|
||||||
'vulner_checker' => 'vulner_checker'
|
'vulner_checker' => 'vulner_checker',
|
||||||
|
'wp_staging' => 'wp_staging'
|
||||||
);
|
);
|
||||||
|
|
||||||
private $FTP_ERROR = 'Failed! Please, add FTP details for automatic updates.';
|
private $FTP_ERROR = 'Failed! Please, add FTP details for automatic updates.';
|
||||||
|
@ -496,7 +497,7 @@ class MainWP_Child {
|
||||||
$fix_update_plugins = array();
|
$fix_update_plugins = array();
|
||||||
if ( is_array( $plugin_updates ) ) {
|
if ( is_array( $plugin_updates ) ) {
|
||||||
foreach ( $plugin_updates as $slug => $plugin_update ) {
|
foreach ( $plugin_updates as $slug => $plugin_update ) {
|
||||||
if ( in_array( $slug, array( 'ithemes-security-pro/ithemes-security-pro.php', 'monarch/monarch.php', 'cornerstone/cornerstone.php', 'updraftplus/updraftplus.php') ) ) {
|
if ( in_array( $slug, array( 'ithemes-security-pro/ithemes-security-pro.php', 'monarch/monarch.php', 'cornerstone/cornerstone.php', 'updraftplus/updraftplus.php', 'wp-all-import-pro/wp-all-import-pro.php') ) ) {
|
||||||
$fix_update_plugins[ $slug ] = $plugin_update;
|
$fix_update_plugins[ $slug ] = $plugin_update;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1389,7 +1390,8 @@ class MainWP_Child {
|
||||||
MainWP_Child_Back_WP_Up::Instance()->init();
|
MainWP_Child_Back_WP_Up::Instance()->init();
|
||||||
|
|
||||||
new MainWP_Child_Back_Up_Buddy();
|
new MainWP_Child_Back_Up_Buddy();
|
||||||
MainWP_Child_Wordfence::Instance()->wordfence_init();
|
MainWP_Child_Wordfence::Instance()->wordfence_init();
|
||||||
|
MainWP_Child_Staging::Instance()->init();
|
||||||
|
|
||||||
global $_wp_submenu_nopriv;
|
global $_wp_submenu_nopriv;
|
||||||
if ($_wp_submenu_nopriv === null)
|
if ($_wp_submenu_nopriv === null)
|
||||||
|
@ -1609,7 +1611,12 @@ class MainWP_Child {
|
||||||
if ( ! empty( $fileName ) ) {
|
if ( ! empty( $fileName ) ) {
|
||||||
do_action( 'mainwp_child_installPluginTheme', $args );
|
do_action( 'mainwp_child_installPluginTheme', $args );
|
||||||
if ( isset( $_POST['activatePlugin'] ) && 'yes' === $_POST['activatePlugin'] ) {
|
if ( isset( $_POST['activatePlugin'] ) && 'yes' === $_POST['activatePlugin'] ) {
|
||||||
activate_plugin( $path . $fileName, '' /* false, true */ );
|
// to fix activate issue
|
||||||
|
if ('quotes-collection/quotes-collection.php' == $args['slug']) {
|
||||||
|
activate_plugin( $path . $fileName, '', false, true );
|
||||||
|
} else {
|
||||||
|
activate_plugin( $path . $fileName, '' /* false, true */ );
|
||||||
|
}
|
||||||
do_action( 'activate_plugin', $args['slug'], null );
|
do_action( 'activate_plugin', $args['slug'], null );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3610,7 +3617,10 @@ class MainWP_Child {
|
||||||
$categories[] = $cat->name;
|
$categories[] = $cat->name;
|
||||||
}
|
}
|
||||||
$information['categories'] = $categories;
|
$information['categories'] = $categories;
|
||||||
$information['totalsize'] = $this->getTotalFileSize();
|
$get_file_size = apply_filters('mainwp-child-get-total-size', true);
|
||||||
|
if ($get_file_size) {
|
||||||
|
$information['totalsize'] = $this->getTotalFileSize();
|
||||||
|
}
|
||||||
$information['dbsize'] = MainWP_Child_DB::get_size();
|
$information['dbsize'] = MainWP_Child_DB::get_size();
|
||||||
|
|
||||||
$auths = get_option( 'mainwp_child_auth' );
|
$auths = get_option( 'mainwp_child_auth' );
|
||||||
|
@ -3640,7 +3650,15 @@ class MainWP_Child {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ( isset( $othersData['syncWPStaging'] ) && !empty( $othersData['syncWPStaging'] ) ) {
|
||||||
|
if ( MainWP_Child_Staging::Instance()->is_plugin_installed ) {
|
||||||
|
$information['syncWPStaging'] = MainWP_Child_Staging::Instance()->get_sync_data();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( isset( $othersData['syncBackupBuddy'] ) && !empty( $othersData['syncBackupBuddy'] ) ) {
|
if ( isset( $othersData['syncBackupBuddy'] ) && !empty( $othersData['syncBackupBuddy'] ) ) {
|
||||||
if ( MainWP_Child_Back_Up_Buddy::Instance()->is_backupbuddy_installed ) {
|
if ( MainWP_Child_Back_Up_Buddy::Instance()->is_backupbuddy_installed ) {
|
||||||
$information['syncBackupBuddy'] = MainWP_Child_Back_Up_Buddy::Instance()->get_sync_data();
|
$information['syncBackupBuddy'] = MainWP_Child_Back_Up_Buddy::Instance()->get_sync_data();
|
||||||
|
@ -3883,7 +3901,7 @@ class MainWP_Child {
|
||||||
|
|
||||||
$wp_seo_enabled = false;
|
$wp_seo_enabled = false;
|
||||||
if ( isset( $_POST['WPSEOEnabled'] ) && $_POST['WPSEOEnabled']) {
|
if ( isset( $_POST['WPSEOEnabled'] ) && $_POST['WPSEOEnabled']) {
|
||||||
if (is_plugin_active('wordpress-seo/wp-seo.php') && class_exists('WPSEO_Link_Column_Count')) {
|
if (is_plugin_active('wordpress-seo/wp-seo.php') && class_exists('WPSEO_Link_Column_Count') && class_exists('WPSEO_Meta')) {
|
||||||
$wp_seo_enabled = true;
|
$wp_seo_enabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3898,7 +3916,7 @@ class MainWP_Child {
|
||||||
$link_count = new WPSEO_Link_Column_Count();
|
$link_count = new WPSEO_Link_Column_Count();
|
||||||
$link_count->set( $post_ids );
|
$link_count->set( $post_ids );
|
||||||
}
|
}
|
||||||
foreach ( $posts as $post ) {
|
foreach ( $posts as $post ) {
|
||||||
$outPost = array();
|
$outPost = array();
|
||||||
$outPost['id'] = $post->ID;
|
$outPost['id'] = $post->ID;
|
||||||
$outPost['post_type'] = $post->post_type;
|
$outPost['post_type'] = $post->post_type;
|
||||||
|
@ -3906,11 +3924,17 @@ class MainWP_Child {
|
||||||
$outPost['title'] = $post->post_title;
|
$outPost['title'] = $post->post_title;
|
||||||
$outPost['content'] = $post->post_content;
|
$outPost['content'] = $post->post_content;
|
||||||
$outPost['comment_count'] = $post->comment_count;
|
$outPost['comment_count'] = $post->comment_count;
|
||||||
|
// to support extract urls extension
|
||||||
if ( isset( $extra['where_post_date'] ) && !empty( $extra['where_post_date'] ) ) {
|
if ( isset( $extra['where_post_date'] ) && !empty( $extra['where_post_date'] ) ) {
|
||||||
$outPost['dts'] = strtotime( $post->post_date_gmt );
|
$outPost['dts'] = strtotime( $post->post_date_gmt );
|
||||||
} else {
|
} else {
|
||||||
$outPost['dts'] = strtotime( $post->post_modified_gmt );
|
$outPost['dts'] = strtotime( $post->post_modified_gmt );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($post->post_status == 'future') {
|
||||||
|
$outPost['dts'] = strtotime( $post->post_date_gmt );
|
||||||
|
}
|
||||||
|
|
||||||
$usr = get_user_by( 'id', $post->post_author );
|
$usr = get_user_by( 'id', $post->post_author );
|
||||||
$outPost['author'] = ! empty( $usr ) ? $usr->user_nicename : 'removed';
|
$outPost['author'] = ! empty( $usr ) ? $usr->user_nicename : 'removed';
|
||||||
$categoryObjects = get_the_category( $post->ID );
|
$categoryObjects = get_the_category( $post->ID );
|
||||||
|
@ -4150,15 +4174,21 @@ class MainWP_Child {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
add_filter( 'posts_where', array( &$this, 'posts_where' ) );
|
add_filter( 'posts_where', array( &$this, 'posts_where' ) );
|
||||||
$where_post_date = isset($_POST['where_post_date']) && !empty($_POST['where_post_date']) ? true : false;
|
$where_post_date = isset($_POST['where_post_date']) && !empty($_POST['where_post_date']) ? true : false;
|
||||||
|
|
||||||
if ( isset( $_POST['postId'] ) ) {
|
if ( isset( $_POST['postId'] ) ) {
|
||||||
$this->posts_where_suffix .= " AND $wpdb->posts.ID = " . $_POST['postId'];
|
$this->posts_where_suffix .= " AND $wpdb->posts.ID = " . $_POST['postId'];
|
||||||
} else if ( isset( $_POST['userId'] ) ) {
|
} else if ( isset( $_POST['userId'] ) ) {
|
||||||
$this->posts_where_suffix .= " AND $wpdb->posts.post_author = " . $_POST['userId'];
|
$this->posts_where_suffix .= " AND $wpdb->posts.post_author = " . $_POST['userId'];
|
||||||
} else {
|
} else {
|
||||||
if ( isset( $_POST['keyword'] ) ) {
|
if ( isset( $_POST['keyword'] ) ) {
|
||||||
$this->posts_where_suffix .= " AND ($wpdb->posts.post_content LIKE '%" . $_POST['keyword'] . "%' OR $wpdb->posts.post_title LIKE '%" . $_POST['keyword'] . "%' )";
|
$search_on = isset($_POST['search_on']) ? $_POST['search_on'] : '';
|
||||||
|
if ($search_on == 'title') {
|
||||||
|
$this->posts_where_suffix .= " AND ( $wpdb->posts.post_title LIKE '%" . $_POST['keyword'] . "%' )";
|
||||||
|
} else if ($search_on == 'content') {
|
||||||
|
$this->posts_where_suffix .= " AND ($wpdb->posts.post_content LIKE '%" . $_POST['keyword'] . "%' )";
|
||||||
|
} else {
|
||||||
|
$this->posts_where_suffix .= " AND ($wpdb->posts.post_content LIKE '%" . $_POST['keyword'] . "%' OR $wpdb->posts.post_title LIKE '%" . $_POST['keyword'] . "%' )";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ( isset( $_POST['dtsstart'] ) && '' !== $_POST['dtsstart'] ) {
|
if ( isset( $_POST['dtsstart'] ) && '' !== $_POST['dtsstart'] ) {
|
||||||
if ($where_post_date) {
|
if ($where_post_date) {
|
||||||
|
@ -4398,7 +4428,13 @@ class MainWP_Child {
|
||||||
if ( $plugin !== $this->plugin_slug ) {
|
if ( $plugin !== $this->plugin_slug ) {
|
||||||
$thePlugin = get_plugin_data( $plugin );
|
$thePlugin = get_plugin_data( $plugin );
|
||||||
if ( null !== $thePlugin && '' !== $thePlugin ) {
|
if ( null !== $thePlugin && '' !== $thePlugin ) {
|
||||||
activate_plugin( $plugin );
|
// to fix activate issue
|
||||||
|
if ('quotes-collection/quotes-collection.php' == $plugin) {
|
||||||
|
activate_plugin( $plugin, '', false, true );
|
||||||
|
do_action( 'activate_plugin', $plugin, null );
|
||||||
|
} else {
|
||||||
|
activate_plugin( $plugin );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4779,7 +4815,7 @@ class MainWP_Child {
|
||||||
$size = @fread( $popenHandle, 1024 );
|
$size = @fread( $popenHandle, 1024 );
|
||||||
@pclose( $popenHandle );
|
@pclose( $popenHandle );
|
||||||
$size = substr( $size, 0, strpos( $size, "\t" ) );
|
$size = substr( $size, 0, strpos( $size, "\t" ) );
|
||||||
if ( MainWP_Helper::ctype_digit( $size ) ) {
|
if ( $size && MainWP_Helper::ctype_digit( $size ) ) {
|
||||||
return $size / 1024;
|
return $size / 1024;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4791,7 +4827,7 @@ class MainWP_Child {
|
||||||
$size = @shell_exec( 'du -s ' . $directory . ' --exclude "' . str_replace( ABSPATH, '', $uploadDir ) . '"' );
|
$size = @shell_exec( 'du -s ' . $directory . ' --exclude "' . str_replace( ABSPATH, '', $uploadDir ) . '"' );
|
||||||
if ( null !== $size ) {
|
if ( null !== $size ) {
|
||||||
$size = substr( $size, 0, strpos( $size, "\t" ) );
|
$size = substr( $size, 0, strpos( $size, "\t" ) );
|
||||||
if ( MainWP_Helper::ctype_digit( $size ) ) {
|
if ( $size && MainWP_Helper::ctype_digit( $size ) ) {
|
||||||
return $size / 1024;
|
return $size / 1024;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4810,6 +4846,16 @@ class MainWP_Child {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// to fix for window host, performance not good?
|
||||||
|
if ( class_exists( 'RecursiveIteratorIterator' ) ) {
|
||||||
|
$size = 0;
|
||||||
|
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
|
||||||
|
$size+=$file->getSize();
|
||||||
|
}
|
||||||
|
if ( $size && MainWP_Helper::ctype_digit( $size ) ) {
|
||||||
|
return $size / 1024 / 1024;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// function dirsize( $dir ) {
|
// function dirsize( $dir ) {
|
||||||
// $dirs = array( $dir );
|
// $dirs = array( $dir );
|
||||||
|
@ -5403,7 +5449,11 @@ class MainWP_Child {
|
||||||
function vulner_checker() {
|
function vulner_checker() {
|
||||||
MainWP_Child_Vulnerability_Checker::Instance()->action();
|
MainWP_Child_Vulnerability_Checker::Instance()->action();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function wp_staging() {
|
||||||
|
MainWP_Child_Staging::Instance()->action();
|
||||||
|
}
|
||||||
|
|
||||||
static function fix_for_custom_themes() {
|
static function fix_for_custom_themes() {
|
||||||
if ( file_exists( ABSPATH . '/wp-admin/includes/screen.php' ) ) {
|
if ( file_exists( ABSPATH . '/wp-admin/includes/screen.php' ) ) {
|
||||||
include_once( ABSPATH . '/wp-admin/includes/screen.php' );
|
include_once( ABSPATH . '/wp-admin/includes/screen.php' );
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
Author: MainWP
|
Author: MainWP
|
||||||
Author URI: https://mainwp.com
|
Author URI: https://mainwp.com
|
||||||
Text Domain: mainwp-child
|
Text Domain: mainwp-child
|
||||||
Version: 3.4.3
|
Version: 3.4.4
|
||||||
*/
|
*/
|
||||||
if ( ( isset( $_REQUEST['heatmap'] ) && '1' === $_REQUEST['heatmap'] ) || ( isset( $_REQUEST['mainwpsignature'] ) && ( ! empty( $_REQUEST['mainwpsignature'] ) ) ) ) {
|
if ( ( isset( $_REQUEST['heatmap'] ) && '1' === $_REQUEST['heatmap'] ) || ( isset( $_REQUEST['mainwpsignature'] ) && ( ! empty( $_REQUEST['mainwpsignature'] ) ) ) ) {
|
||||||
header( 'X-Frame-Options: ALLOWALL' );
|
header( 'X-Frame-Options: ALLOWALL' );
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue