Version Description
- Mar 18th 2022 =
- Feature: Added customer role to the Manage user addon if Woocommerce plugin is activated on the WordPress site.
- Fix: iThemes 404 logs removed from client reports as the iThemes plugin do not detect 404 errors.
- Fix: Error in query (1064): Syntax error near offset ) values issue fixed it happen some random server.
- Fix: Backing up a WordPress site with wp_ prefix includes other site database tables in the single and multicall method backups.
- Fix: mu-plugin version not shown on the plugin page.
- Fix: Unable to read InfiniteWP must use plugin
Download this release
Release Info
Developer | infinitewp |
Plugin | InfiniteWP Client |
Version | 1.9.8 |
Comparing to | |
See all releases |
Code changes from version 1.9.6 to 1.9.8
- addons/itheme_security/class-iwp-client-ithemes-security-class.php +0 -9
- addons/manage_users/user.class.php +62 -38
- backup.class.multicall.php +5 -4
- backup.class.singlecall.php +6 -3
- core.class.php +2 -2
- init.php +38 -17
- iwp-file-iterator.php +2 -2
- readme.txt +9 -1
addons/itheme_security/class-iwp-client-ithemes-security-class.php
CHANGED
@@ -22,7 +22,6 @@ final class IWP_MMB_IThemes_Security extends IWP_MMB_Core {
|
|
22 |
$from = date('Y-m-d h:i:s', $from);
|
23 |
$to = date('Y-m-d H:i:s', $to);
|
24 |
$return['itheme_file_change'] = self::getFileChangeHistory($from, $to);
|
25 |
-
$return['itheme_four_oh_four'] = self::getFourOhFourHistory($from, $to);
|
26 |
$return['itheme_brute_force'] = self::getBruteForceHistory($from, $to);
|
27 |
return $return;
|
28 |
}
|
@@ -85,14 +84,6 @@ final class IWP_MMB_IThemes_Security extends IWP_MMB_Core {
|
|
85 |
return sizeof($logs);
|
86 |
}
|
87 |
|
88 |
-
/**
|
89 |
-
* @return json
|
90 |
-
*/
|
91 |
-
private static function getFourOhFourHistory($from = null, $to = null) {
|
92 |
-
$logs = self::get_logs('four_oh_four', array(), null, null, null, null, $from, $to);
|
93 |
-
return sizeof($logs);
|
94 |
-
}
|
95 |
-
|
96 |
/**
|
97 |
* @return json
|
98 |
*/
|
22 |
$from = date('Y-m-d h:i:s', $from);
|
23 |
$to = date('Y-m-d H:i:s', $to);
|
24 |
$return['itheme_file_change'] = self::getFileChangeHistory($from, $to);
|
|
|
25 |
$return['itheme_brute_force'] = self::getBruteForceHistory($from, $to);
|
26 |
return $return;
|
27 |
}
|
84 |
return sizeof($logs);
|
85 |
}
|
86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
/**
|
88 |
* @return json
|
89 |
*/
|
addons/manage_users/user.class.php
CHANGED
@@ -38,6 +38,10 @@ class IWP_MMB_User extends IWP_MMB_Core
|
|
38 |
$userlevels[] = 0;
|
39 |
$level_strings[] = $user_role;
|
40 |
break;
|
|
|
|
|
|
|
|
|
41 |
case 'contributor' :
|
42 |
$userlevels[] = 1;
|
43 |
$level_strings[] = $user_role;
|
@@ -118,6 +122,11 @@ class IWP_MMB_User extends IWP_MMB_Core
|
|
118 |
if (email_exists($args['user_email']))
|
119 |
return array('error' => 'Email already exists', 'error_code' => 'email_already_exists');
|
120 |
|
|
|
|
|
|
|
|
|
|
|
121 |
if(!function_exists('wp_insert_user'))
|
122 |
include_once (ABSPATH . 'wp-admin/includes/user.php');
|
123 |
|
@@ -156,49 +165,55 @@ class IWP_MMB_User extends IWP_MMB_Core
|
|
156 |
if($user_obj != false){
|
157 |
switch($user_edit_action){
|
158 |
case 'change-password':
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
case 'change-role':
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
$result = array('error' => 'No role provided.', 'error_code' => 'no_role_provided');
|
184 |
}
|
185 |
-
|
186 |
case 'delete-user':
|
187 |
if($user != $username){
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
} else {
|
203 |
$result = array('error' => 'Cannot delete user assigned for InfiniteWP.', 'error_code' => 'cannot_delete_user_assigned_for_InfiniteWP');
|
204 |
}
|
@@ -243,6 +258,15 @@ class IWP_MMB_User extends IWP_MMB_Core
|
|
243 |
}
|
244 |
return false;
|
245 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
|
247 |
}
|
248 |
?>
|
38 |
$userlevels[] = 0;
|
39 |
$level_strings[] = $user_role;
|
40 |
break;
|
41 |
+
case 'customer' :
|
42 |
+
$userlevels[] = 0;
|
43 |
+
$level_strings[] = $user_role;
|
44 |
+
break;
|
45 |
case 'contributor' :
|
46 |
$userlevels[] = 1;
|
47 |
$level_strings[] = $user_role;
|
122 |
if (email_exists($args['user_email']))
|
123 |
return array('error' => 'Email already exists', 'error_code' => 'email_already_exists');
|
124 |
|
125 |
+
if(!empty($args['role']) && $args['role'] =='customer'){
|
126 |
+
if(!$this->woocommerceCompatibility()){
|
127 |
+
return array('error' => 'Could not create customer role woocommerce plugin not available', 'error_code' => 'woocommerce_plugin_not_active_state');
|
128 |
+
}
|
129 |
+
}
|
130 |
if(!function_exists('wp_insert_user'))
|
131 |
include_once (ABSPATH . 'wp-admin/includes/user.php');
|
132 |
|
165 |
if($user_obj != false){
|
166 |
switch($user_edit_action){
|
167 |
case 'change-password':
|
168 |
+
if($new_password){
|
169 |
+
$user_data = array();
|
170 |
+
$userdata['user_pass'] = $new_password;
|
171 |
+
$userdata['ID'] = $user_obj->ID;
|
172 |
+
$result = wp_update_user($userdata);
|
173 |
+
} else {
|
174 |
+
$result = array('error' => 'No password provided.', 'error_code' => 'no_password_provided');
|
175 |
+
}
|
176 |
+
break;
|
177 |
case 'change-role':
|
178 |
+
if($new_role){
|
179 |
+
if($user != $username){
|
180 |
+
if(!$this->last_admin($user_obj)){
|
181 |
+
if($new_role =='customer'){
|
182 |
+
if(!$this->woocommerceCompatibility()){
|
183 |
+
$result = array('error' => 'Could not change customer role woocommerce plugin not available', 'error_code' => 'woocommerce_plugin_not_active_state');
|
184 |
+
break;
|
185 |
+
}
|
186 |
+
}
|
187 |
+
$user_data = array();
|
188 |
+
$userdata['ID'] = $user_obj->ID;
|
189 |
+
$userdata['role'] = strtolower($new_role);
|
190 |
+
$result = wp_update_user($userdata);
|
191 |
+
} else {
|
192 |
+
$result = array('error' => 'Cannot change role to the only one left admin user.', 'error_code' => 'cannot_change_role_to_the_only_one_left_admin_user');
|
193 |
+
}
|
194 |
+
} else {
|
195 |
+
$result = array('error' => 'Cannot change role to user assigned for InfiniteWP.', 'error_code' => 'cannot_change_role_to_user_assigned_to_InfiniteWP');
|
196 |
+
}
|
197 |
+
} else {
|
198 |
$result = array('error' => 'No role provided.', 'error_code' => 'no_role_provided');
|
199 |
}
|
200 |
+
break;
|
201 |
case 'delete-user':
|
202 |
if($user != $username){
|
203 |
+
if(!$this->last_admin($user_obj)){
|
204 |
+
if($reassign_user){
|
205 |
+
$to_user = $this->iwp_mmb_get_user_info( $reassign_user );
|
206 |
+
if($to_user != false){
|
207 |
+
$result = wp_delete_user($user_obj->ID, $to_user->ID);
|
208 |
+
} else {
|
209 |
+
$result = array('error' => 'User not deleted. User to reassign posts doesn\'t exist.', 'error_code' => 'user_not_deleted_user_to_reassign_posts_doesnt_exist');
|
210 |
+
}
|
211 |
+
} else {
|
212 |
+
$result = wp_delete_user($user_obj->ID);
|
213 |
+
}
|
214 |
+
} else {
|
215 |
+
$result = array('error' => 'Cannot delete the only one left admin user.', 'error_code' => 'cannot_delete_the_only_one_left_admin_user');
|
216 |
+
}
|
217 |
} else {
|
218 |
$result = array('error' => 'Cannot delete user assigned for InfiniteWP.', 'error_code' => 'cannot_delete_user_assigned_for_InfiniteWP');
|
219 |
}
|
258 |
}
|
259 |
return false;
|
260 |
}
|
261 |
+
function woocommerceCompatibility(){
|
262 |
+
if(!function_exists('is_plugin_active')){
|
263 |
+
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
264 |
+
}
|
265 |
+
if (is_plugin_active('woocommerce/woocommerce.php')) {
|
266 |
+
return true;
|
267 |
+
}
|
268 |
+
return false;
|
269 |
+
}
|
270 |
|
271 |
}
|
272 |
?>
|
backup.class.multicall.php
CHANGED
@@ -443,9 +443,10 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
443 |
//$command = $brace . $paths['mysqldump'] . $brace . ' --force --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" --add-drop-table --skip-lock-tables "' . DB_NAME . '" > ' . $brace . $file . $brace;
|
444 |
if(empty($responseParams['full_table'])){
|
445 |
// Avoid getting exclude_table on mysqlDump retry call
|
446 |
-
|
447 |
-
|
448 |
-
|
|
|
449 |
if (!empty($exclude_tables)) {
|
450 |
foreach ($command0 as $tk => $table) {
|
451 |
foreach ($exclude_tables as $ke => $exclude_table) {
|
@@ -1001,7 +1002,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
1001 |
file_put_contents($file, '');//safe to reset any old data
|
1002 |
} */
|
1003 |
//$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
|
1004 |
-
$this_prefix = $wpdb->base_prefix;
|
1005 |
$tables = $wpdb->get_results('SHOW TABLES LIKE "'.$this_prefix.'%"', ARRAY_N);
|
1006 |
|
1007 |
$max_row_limit = 100;
|
443 |
//$command = $brace . $paths['mysqldump'] . $brace . ' --force --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" --add-drop-table --skip-lock-tables "' . DB_NAME . '" > ' . $brace . $file . $brace;
|
444 |
if(empty($responseParams['full_table'])){
|
445 |
// Avoid getting exclude_table on mysqlDump retry call
|
446 |
+
$this_prefix = $wpdb->esc_like($wpdb->base_prefix);
|
447 |
+
$command0 = $wpdb->get_col('SHOW TABLES LIKE "'.$this_prefix.'%"');
|
448 |
+
$full_table = array();
|
449 |
+
$structure_only_table = array();
|
450 |
if (!empty($exclude_tables)) {
|
451 |
foreach ($command0 as $tk => $table) {
|
452 |
foreach ($exclude_tables as $ke => $exclude_table) {
|
1002 |
file_put_contents($file, '');//safe to reset any old data
|
1003 |
} */
|
1004 |
//$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
|
1005 |
+
$this_prefix = $wpdb->esc_like($wpdb->base_prefix);
|
1006 |
$tables = $wpdb->get_results('SHOW TABLES LIKE "'.$this_prefix.'%"', ARRAY_N);
|
1007 |
|
1008 |
$max_row_limit = 100;
|
backup.class.singlecall.php
CHANGED
@@ -1121,7 +1121,8 @@ function delete_task_now($task_name){
|
|
1121 |
$brace = (substr(PHP_OS, 0, 3) == 'WIN') ? '"' : '';
|
1122 |
$exclude_tables = $this->tasks['args']['exclude_tables'];
|
1123 |
//$command = $brace . $paths['mysqldump'] . $brace . ' --force --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" --add-drop-table --skip-lock-tables "' . DB_NAME . '" > ' . $brace . $file . $brace;
|
1124 |
-
$
|
|
|
1125 |
$full_table = array();
|
1126 |
$structure_only_table = array();
|
1127 |
if (!empty($exclude_tables)) {
|
@@ -1196,7 +1197,8 @@ function delete_task_now($task_name){
|
|
1196 |
$fp = fopen( $file, 'w' );
|
1197 |
$_count = 0;
|
1198 |
$insert_sql = '';
|
1199 |
-
$
|
|
|
1200 |
if(!$result)
|
1201 |
{
|
1202 |
return array(
|
@@ -1285,7 +1287,8 @@ function delete_task_now($task_name){
|
|
1285 |
iwp_mmb_print_flush('DB DUMP PHP Fail-safe: Start');
|
1286 |
file_put_contents($file, '');//safe to reset any old data
|
1287 |
//$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
|
1288 |
-
$
|
|
|
1289 |
foreach ($tables as $table) {
|
1290 |
|
1291 |
//drop existing table
|
1121 |
$brace = (substr(PHP_OS, 0, 3) == 'WIN') ? '"' : '';
|
1122 |
$exclude_tables = $this->tasks['args']['exclude_tables'];
|
1123 |
//$command = $brace . $paths['mysqldump'] . $brace . ' --force --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" --add-drop-table --skip-lock-tables "' . DB_NAME . '" > ' . $brace . $file . $brace;
|
1124 |
+
$this_prefix = $wpdb->esc_like($wpdb->base_prefix);
|
1125 |
+
$command0 = $wpdb->get_col('SHOW TABLES LIKE "'.$this_prefix.'%"');
|
1126 |
$full_table = array();
|
1127 |
$structure_only_table = array();
|
1128 |
if (!empty($exclude_tables)) {
|
1197 |
$fp = fopen( $file, 'w' );
|
1198 |
$_count = 0;
|
1199 |
$insert_sql = '';
|
1200 |
+
$this_prefix = $wpdb->esc_like($wpdb->base_prefix);
|
1201 |
+
$result = $wpdb->get_results( 'SHOW TABLES LIKE "'.$this_prefix.'%"');
|
1202 |
if(!$result)
|
1203 |
{
|
1204 |
return array(
|
1287 |
iwp_mmb_print_flush('DB DUMP PHP Fail-safe: Start');
|
1288 |
file_put_contents($file, '');//safe to reset any old data
|
1289 |
//$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
|
1290 |
+
$this_prefix = $wpdb->esc_like($wpdb->base_prefix);
|
1291 |
+
$tables = $wpdb->get_results('SHOW TABLES LIKE "'.$this_prefix.'%"', ARRAY_N);
|
1292 |
foreach ($tables as $table) {
|
1293 |
|
1294 |
//drop existing table
|
core.class.php
CHANGED
@@ -793,7 +793,7 @@ Plugin Name: InfiniteWP - Client Loader
|
|
793 |
Plugin URI: https://infinitewp.com/
|
794 |
Description: This plugin will be created automatically when you activate your InfiniteWP Client plugin to improve the performance. And it will be deleted when you deactivate the client plugin.
|
795 |
Author: Revmakx
|
796 |
-
Version: 1.0.
|
797 |
Author URI: https://infinitewp.com/
|
798 |
*/
|
799 |
|
@@ -844,7 +844,7 @@ EOF;
|
|
844 |
$error = error_get_last();
|
845 |
throw new Exception(sprintf('Unable to write loader: %s', $error['message']));
|
846 |
}
|
847 |
-
update_option('iwp_mu_plugin_version','1.0.
|
848 |
}
|
849 |
|
850 |
function error_notices()
|
793 |
Plugin URI: https://infinitewp.com/
|
794 |
Description: This plugin will be created automatically when you activate your InfiniteWP Client plugin to improve the performance. And it will be deleted when you deactivate the client plugin.
|
795 |
Author: Revmakx
|
796 |
+
Version: 1.0.1
|
797 |
Author URI: https://infinitewp.com/
|
798 |
*/
|
799 |
|
844 |
$error = error_get_last();
|
845 |
throw new Exception(sprintf('Unable to write loader: %s', $error['message']));
|
846 |
}
|
847 |
+
update_option('iwp_mu_plugin_version','1.0.1');
|
848 |
}
|
849 |
|
850 |
function error_notices()
|
init.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: InfiniteWP - Client
|
|
4 |
Plugin URI: http://infinitewp.com/
|
5 |
Description: This is the client plugin of InfiniteWP that communicates with the InfiniteWP Admin panel.
|
6 |
Author: Revmakx
|
7 |
-
Version: 1.9.
|
8 |
Author URI: http://www.revmakx.com
|
9 |
Network: true
|
10 |
*/
|
@@ -29,7 +29,7 @@ if(basename($_SERVER['SCRIPT_FILENAME']) == "init.php"):
|
|
29 |
exit;
|
30 |
endif;
|
31 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
32 |
-
define('IWP_MMB_CLIENT_VERSION', '1.9.
|
33 |
|
34 |
|
35 |
|
@@ -1216,17 +1216,19 @@ if( !function_exists ( 'iwp_mmb_add_user' )) {
|
|
1216 |
if(!empty($params['additional_params'])){
|
1217 |
$return['action_response'] = $iwp_mmb_core->user_instance->add_user($params['action_params']);
|
1218 |
$return['additional_response'] = $iwp_mmb_core->user_instance->get_users($params['additional_params']);
|
|
|
|
|
|
|
|
|
|
|
1219 |
}else{
|
1220 |
$return = $iwp_mmb_core->user_instance->add_user($params);
|
|
|
|
|
|
|
|
|
|
|
1221 |
}
|
1222 |
-
|
1223 |
-
if (is_array($return) && array_key_exists('error', $return)){
|
1224 |
-
iwp_mmb_response($return, false);
|
1225 |
-
}
|
1226 |
-
else {
|
1227 |
-
iwp_mmb_response($return, true);
|
1228 |
-
}
|
1229 |
-
|
1230 |
}
|
1231 |
}
|
1232 |
|
@@ -3289,12 +3291,17 @@ function iwp_mu_plugin_loader(){
|
|
3289 |
$loaderName = 'mu-iwp-client.php';
|
3290 |
$mustUsePluginDir = rtrim(WPMU_PLUGIN_DIR, '/');
|
3291 |
$loaderPath = $mustUsePluginDir.'/'.$loaderName;
|
3292 |
-
|
|
|
|
|
|
|
|
|
|
|
3293 |
if (file_exists($loaderPath)) {
|
3294 |
-
$
|
3295 |
-
|
3296 |
-
|
3297 |
-
$data = build_mu_plugin_version($loaderPath,$
|
3298 |
if(!$data){
|
3299 |
iwp_mmb_response(array('error' => 'Unable to read InfiniteWP must use plugin', 'error_code' => 'iwp_mu_plugin_read_failed'), false);
|
3300 |
return;
|
@@ -3312,11 +3319,25 @@ function iwp_mu_plugin_loader(){
|
|
3312 |
}
|
3313 |
}
|
3314 |
|
3315 |
-
function build_mu_plugin_version($loaderPath,$
|
3316 |
$res = false;
|
3317 |
$loaderWritten = @file_get_contents($loaderPath);
|
3318 |
if($loaderWritten){
|
3319 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3320 |
}
|
3321 |
return $res;
|
3322 |
}
|
4 |
Plugin URI: http://infinitewp.com/
|
5 |
Description: This is the client plugin of InfiniteWP that communicates with the InfiniteWP Admin panel.
|
6 |
Author: Revmakx
|
7 |
+
Version: 1.9.8
|
8 |
Author URI: http://www.revmakx.com
|
9 |
Network: true
|
10 |
*/
|
29 |
exit;
|
30 |
endif;
|
31 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
32 |
+
define('IWP_MMB_CLIENT_VERSION', '1.9.8');
|
33 |
|
34 |
|
35 |
|
1216 |
if(!empty($params['additional_params'])){
|
1217 |
$return['action_response'] = $iwp_mmb_core->user_instance->add_user($params['action_params']);
|
1218 |
$return['additional_response'] = $iwp_mmb_core->user_instance->get_users($params['additional_params']);
|
1219 |
+
if(isset($return['action_response']['error'])){
|
1220 |
+
iwp_mmb_response($return['action_response'], false);
|
1221 |
+
} else {
|
1222 |
+
iwp_mmb_response($return, true);
|
1223 |
+
}
|
1224 |
}else{
|
1225 |
$return = $iwp_mmb_core->user_instance->add_user($params);
|
1226 |
+
if (is_array($return) && array_key_exists('error', $return)){
|
1227 |
+
iwp_mmb_response($return, false);
|
1228 |
+
}else {
|
1229 |
+
iwp_mmb_response($return, true);
|
1230 |
+
}
|
1231 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1232 |
}
|
1233 |
}
|
1234 |
|
3291 |
$loaderName = 'mu-iwp-client.php';
|
3292 |
$mustUsePluginDir = rtrim(WPMU_PLUGIN_DIR, '/');
|
3293 |
$loaderPath = $mustUsePluginDir.'/'.$loaderName;
|
3294 |
+
if(is_multisite()){
|
3295 |
+
$blog_id = get_current_blog_id();
|
3296 |
+
if($blog_id !='1'){ // $blog_id = 1 network parent id
|
3297 |
+
return ;
|
3298 |
+
}
|
3299 |
+
}
|
3300 |
if (file_exists($loaderPath)) {
|
3301 |
+
$iwp_mu_plugin_db_version = get_option('iwp_mu_plugin_version');
|
3302 |
+
$iwp_new_mu_plugin_version = '1.0.1';
|
3303 |
+
if(empty($iwp_mu_plugin_db_version) || version_compare($iwp_mu_plugin_db_version, $iwp_new_mu_plugin_version,'<')){
|
3304 |
+
$data = build_mu_plugin_version($loaderPath,$iwp_new_mu_plugin_version,$iwp_mu_plugin_db_version);
|
3305 |
if(!$data){
|
3306 |
iwp_mmb_response(array('error' => 'Unable to read InfiniteWP must use plugin', 'error_code' => 'iwp_mu_plugin_read_failed'), false);
|
3307 |
return;
|
3319 |
}
|
3320 |
}
|
3321 |
|
3322 |
+
function build_mu_plugin_version($loaderPath,$iwp_new_mu_plugin_version,$iwp_mu_plugin_db_version){
|
3323 |
$res = false;
|
3324 |
$loaderWritten = @file_get_contents($loaderPath);
|
3325 |
if($loaderWritten){
|
3326 |
+
if (strpos($loaderWritten, 'Version') === false) {
|
3327 |
+
$res = preg_replace('/Author: Revmakx/', "Author: Revmakx ".PHP_EOL."Version:" .$iwp_new_mu_plugin_version." ", $loaderWritten);
|
3328 |
+
}elseif(!empty($iwp_mu_plugin_db_version) && version_compare($iwp_mu_plugin_db_version, '1.0.0','==')){
|
3329 |
+
if (strpos($loaderWritten, 'Version :1.0.0') !== false) { //
|
3330 |
+
$res = str_replace('Version :1.0.0', 'Version:'.' '.$iwp_new_mu_plugin_version, $loaderWritten);
|
3331 |
+
}elseif(strpos($loaderWritten, 'Version: 1.0.0') !== false){
|
3332 |
+
$res = str_replace('Version: 1.0.0', 'Version:'.' '.$iwp_new_mu_plugin_version, $loaderWritten);
|
3333 |
+
}else{
|
3334 |
+
return ;
|
3335 |
+
}
|
3336 |
+
}else{
|
3337 |
+
// May be customer manually uploaded the file.
|
3338 |
+
update_option('iwp_mu_plugin_version',$iwp_new_mu_plugin_version);
|
3339 |
+
return ;
|
3340 |
+
}
|
3341 |
}
|
3342 |
return $res;
|
3343 |
}
|
iwp-file-iterator.php
CHANGED
@@ -270,7 +270,7 @@ function save_deep_dir_list($deep_dirs){
|
|
270 |
function insert_into_iterator_process($qry){
|
271 |
global $wpdb;
|
272 |
|
273 |
-
$sql = "insert into ".$wpdb->base_prefix."iwp_processed_iterator (
|
274 |
$response = $wpdb->get_results($sql);
|
275 |
}
|
276 |
|
@@ -380,7 +380,7 @@ function iwp_iterate_file($live_file, $update_status = false){
|
|
380 |
|
381 |
function get_unfnished_folder() {
|
382 |
global $wpdb;
|
383 |
-
$sql = "SELECT * FROM ".$wpdb->base_prefix."iwp_processed_iterator WHERE offset != -1 LIMIT 1";
|
384 |
$response = $wpdb->get_results($sql, ARRAY_A);
|
385 |
// IWP_log($response, '--------$response--------');
|
386 |
|
270 |
function insert_into_iterator_process($qry){
|
271 |
global $wpdb;
|
272 |
|
273 |
+
$sql = "insert into ".$wpdb->base_prefix."iwp_processed_iterator (`name`,`offset`) values $qry";
|
274 |
$response = $wpdb->get_results($sql);
|
275 |
}
|
276 |
|
380 |
|
381 |
function get_unfnished_folder() {
|
382 |
global $wpdb;
|
383 |
+
$sql = "SELECT * FROM ".$wpdb->base_prefix."iwp_processed_iterator WHERE `offset` != -1 LIMIT 1";
|
384 |
$response = $wpdb->get_results($sql, ARRAY_A);
|
385 |
// IWP_log($response, '--------$response--------');
|
386 |
|
readme.txt
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
Contributors: infinitewp, amritanandh, rajkuppus
|
3 |
Tags: admin, administration, amazon, api, authentication, automatic, dashboard, dropbox, events, integration, manage, multisite, multiple, notification, performance, s3, security, seo, stats, tracking, infinitewp, updates, backup, restore, iwp, infinite
|
4 |
Requires at least: 3.1
|
5 |
-
Tested up to: 5.9
|
6 |
Stable tag: trunk
|
7 |
|
8 |
Install this plugin on unlimited sites and manage them all from a central dashboard.
|
@@ -48,6 +48,14 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
= 1.9.6 - Feb 14th 2022 =
|
52 |
* Feature: Added support for Litespeed Cache.
|
53 |
* Improvement: Ensure phpseclib Crypt_Blowfish is loaded over PEAR’s version.
|
2 |
Contributors: infinitewp, amritanandh, rajkuppus
|
3 |
Tags: admin, administration, amazon, api, authentication, automatic, dashboard, dropbox, events, integration, manage, multisite, multiple, notification, performance, s3, security, seo, stats, tracking, infinitewp, updates, backup, restore, iwp, infinite
|
4 |
Requires at least: 3.1
|
5 |
+
Tested up to: 5.9.3
|
6 |
Stable tag: trunk
|
7 |
|
8 |
Install this plugin on unlimited sites and manage them all from a central dashboard.
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 1.9.8 - Mar 18th 2022 =
|
52 |
+
* Feature: Added customer role to the Manage user addon if Woocommerce plugin is activated on the WordPress site.
|
53 |
+
* Fix: iThemes 404 logs removed from client reports as the iThemes plugin do not detect 404 errors.
|
54 |
+
* Fix: Error in query (1064): Syntax error near offset ) values issue fixed it happen some random server.
|
55 |
+
* Fix: Backing up a WordPress site with wp_ prefix includes other site database tables in the single and multicall method backups.
|
56 |
+
* Fix: mu-plugin version not shown on the plugin page.
|
57 |
+
* Fix: Unable to read InfiniteWP must use plugin
|
58 |
+
|
59 |
= 1.9.6 - Feb 14th 2022 =
|
60 |
* Feature: Added support for Litespeed Cache.
|
61 |
* Improvement: Ensure phpseclib Crypt_Blowfish is loaded over PEAR’s version.
|