InfiniteWP Client - Version 1.9.4.4

Version Description

  • Dec 17th 2019 =
  • Improvement: Implemented a new method to fetch database details for the following operations. Restore, same server staging and existing site cloning.
  • Improvement: Support for V3 PPL addon.
  • Improvement: Now, the WPTC plugin gets a higher priority than the IWP client plugin.
  • Fix: File uploader throws a fatal error if the selected folder doesn't have permission to upload.
  • Fix: Error: "Failed to upload to Amazon S3. Please check your details and set Managed Policies on your users to AmazonS3FullAccess" while backing up the site to s3 bucket using the single call method.
  • Fix: With the Phoenix method, Backups are shown as completed if the backup folder does not have write permission.
  • Fix: iwp-restore-log.txt file excluded in the multicall and single call method backups.
Download this release

Release Info

Developer infinitewp
Plugin Icon 128x128 InfiniteWP Client
Version 1.9.4.4
Comparing to
See all releases

Code changes from version 1.9.4.1 to 1.9.4.4

addons/file_editor/file_editor.class.php CHANGED
@@ -275,6 +275,12 @@ function iwp_mmb_direct_to_any_copy($source, $destination, $overwrite = false, $
275
  if ( is_wp_error($copy_result) ){
276
  $wp_temp_direct2 = new WP_Filesystem_Direct('');
277
  $wp_temp_direct2->delete($new_temp_folder, true);
 
 
 
 
 
 
278
  return $copy_result;
279
  }
280
 
275
  if ( is_wp_error($copy_result) ){
276
  $wp_temp_direct2 = new WP_Filesystem_Direct('');
277
  $wp_temp_direct2->delete($new_temp_folder, true);
278
+
279
+ if(is_wp_error($copy_result)){
280
+ $result['error_code'] = $copy_result->get_error_code();
281
+ $result['error'] = $copy_result->get_error_message();
282
+ return $result;
283
+ }
284
  return $copy_result;
285
  }
286
 
addons/post_links/link.class.php CHANGED
@@ -93,8 +93,13 @@ class IWP_MMB_Link extends IWP_MMB_Core
93
 
94
  if(!empty($filter_links))
95
  {
96
- $cus_sql= " OR link_id IN(SELECT link_id FROM ".$wpdb->prefix."links_extrainfo WHERE 1=1 AND (link_reciprocal LIKE '%".esc_sql($filter_links)."%' OR link_submitter_email LIKE '%".esc_sql($filter_links)."%'))";
97
- $where.=" AND (link_name LIKE '%".esc_sql($filter_links)."%' OR link_url LIKE '%".esc_sql($filter_links)."%'".$cus_sql.")";
 
 
 
 
 
98
  }
99
 
100
  $linkcats = $this->getLinkCats();
93
 
94
  if(!empty($filter_links))
95
  {
96
+ $table_name = $wpdb->prefix."links_extrainfo";
97
+ $cus_sql = '';
98
+ if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
99
+ $cus_sql= " OR link_id IN(SELECT link_id FROM ".$wpdb->prefix."links_extrainfo WHERE 1=1 AND (link_reciprocal LIKE '%".esc_sql($filter_links)."%' OR link_submitter_email LIKE '%".esc_sql($filter_links)."%'))";
100
+ }
101
+
102
+ $where.=" AND (link_name LIKE '%".esc_sql($filter_links)."%' OR link_url LIKE '%".esc_sql($filter_links)."%'".$cus_sql.")";
103
  }
104
 
105
  $linkcats = $this->getLinkCats();
addons/post_links/post.class.php CHANGED
@@ -320,7 +320,7 @@ class IWP_MMB_Post extends IWP_MMB_Core
320
  $match_by = "post_name = '".$post_data['post_name']."'";
321
  }
322
 
323
- $query = "SELECT ID FROM $wpdb->posts WHERE $match_by AND post_status NOT IN('inherit','auto-draft','draft') LIMIT 1";
324
 
325
  $post_result = $wpdb->get_var($query);
326
 
320
  $match_by = "post_name = '".$post_data['post_name']."'";
321
  }
322
 
323
+ $query = "SELECT ID FROM $wpdb->posts WHERE $match_by AND post_status NOT IN('inherit','auto-draft') LIMIT 1";
324
 
325
  $post_result = $wpdb->get_var($query);
326
 
backup.class.multicall.php CHANGED
@@ -1347,6 +1347,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
1347
  "wp-snapshots",
1348
  "site_map.xml",
1349
  "iwp-clone-log.txt",
 
1350
  );
1351
  manual_debug('', 'beforeExclude', 0);
1352
  if((!empty($exclude_file_size))||(!empty($exclude_extensions)))
1347
  "wp-snapshots",
1348
  "site_map.xml",
1349
  "iwp-clone-log.txt",
1350
+ "iwp-restore-log.txt"
1351
  );
1352
  manual_debug('', 'beforeExclude', 0);
1353
  if((!empty($exclude_file_size))||(!empty($exclude_extensions)))
backup.class.singlecall.php CHANGED
@@ -634,6 +634,7 @@ function delete_task_now($task_name){
634
  "wp-snapshots",
635
  "site_map.xml",
636
  "iwp-clone-log.txt",
 
637
  );
638
 
639
  //removing files which are larger than the specified size
634
  "wp-snapshots",
635
  "site_map.xml",
636
  "iwp-clone-log.txt",
637
+ "iwp-restore-log.txt"
638
  );
639
 
640
  //removing files which are larger than the specified size
backup/backup.core.class.php CHANGED
@@ -3174,6 +3174,11 @@ class IWP_MMB_Backup_Core {
3174
  if(is_writable(IWP_BACKUP_DIR)){
3175
  @file_put_contents(IWP_BACKUP_DIR . '/index.php', ''); //safe
3176
 
 
 
 
 
 
3177
  }
3178
 
3179
  $this->backup_dir = IWP_BACKUP_DIR;
3174
  if(is_writable(IWP_BACKUP_DIR)){
3175
  @file_put_contents(IWP_BACKUP_DIR . '/index.php', ''); //safe
3176
 
3177
+ }else{
3178
+ $chmod = chmod(IWP_BACKUP_DIR, 777);
3179
+ if(!is_writable(IWP_BACKUP_DIR)){
3180
+ return array('error' => IWP_BACKUP_DIR.' directory is not writable. Please set 755 or 777 file permission and try again.', 'error_code' => 'backup_dir_is_not_writable');
3181
+ }
3182
  }
3183
 
3184
  $this->backup_dir = IWP_BACKUP_DIR;
core.class.php CHANGED
@@ -208,7 +208,8 @@ class IWP_MMB_Core extends IWP_MMB_Helper
208
  'sucuri_change_alert' => 'iwp_mmb_sucuri_change_alert',
209
  'backup_downlaod' => 'iwp_mmb_backup_downlaod',
210
  'cronDoAction' => 'iwp_pheonix_backup_cron_do_action',
211
- 'get_additional_stats' => 'iwp_get_additional_stats'
 
212
  );
213
 
214
  add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
@@ -1442,6 +1443,19 @@ EOF;
1442
  wp_enqueue_style('wp-jquery-ui-dialog');
1443
  }
1444
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1445
 
1446
  }
1447
  ?>
208
  'sucuri_change_alert' => 'iwp_mmb_sucuri_change_alert',
209
  'backup_downlaod' => 'iwp_mmb_backup_downlaod',
210
  'cronDoAction' => 'iwp_pheonix_backup_cron_do_action',
211
+ 'get_additional_stats' => 'iwp_get_additional_stats',
212
+ 'get_db_details' => 'iwp_get_db_details'
213
  );
214
 
215
  add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
1443
  wp_enqueue_style('wp-jquery-ui-dialog');
1444
  }
1445
 
1446
+ function get_db_details($params){
1447
+ global $wpdb;
1448
+ $result = array();
1449
+ if (defined('DB_HOST')) {
1450
+ $result['dbHost'] = DB_HOST;
1451
+ $result['dbName'] = DB_NAME;
1452
+ $result['dbUser'] = DB_USER;
1453
+ $result['dbPassword'] = DB_PASSWORD;
1454
+ $result['db_table_prefix'] = $wpdb->base_prefix;
1455
+ }
1456
+
1457
+ return $result;
1458
+ }
1459
 
1460
  }
1461
  ?>
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.4.1
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.4.1');
33
 
34
 
35
 
@@ -751,6 +751,27 @@ if( !function_exists ( 'iwp_get_additional_stats' )) {
751
  if (is_array($return) && !array_key_exists('error', $return))
752
  $response['wordfence_load'] = $return;
753
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
 
755
  if (is_array($response) && array_key_exists('error', $response))
756
  iwp_mmb_response($response, false);
@@ -778,6 +799,10 @@ if( !function_exists ( 'iwp_mmb_new_scheduled_backup' )) {
778
  'success' => 'Backup started',
779
  'wp_content_url' => content_url(),
780
  );
 
 
 
 
781
  // Close browser connection not working for some servers so we suggest IWP_PHOENIX_BACKUP_CRON
782
  // iwp_closeBrowserConnection( $msg );
783
  if ((!defined('DISABLE_IWP_CLOUD_VERIFICATION')) && (empty($params['args']['disable_iwp_cloud_verification']))) {
@@ -888,6 +913,15 @@ if( !function_exists ( 'iwp_mmb_scheduled_backup' )) {
888
  }
889
  }
890
 
 
 
 
 
 
 
 
 
 
891
  if( !function_exists ( 'iwp_mmb_new_run_task_now' )) {
892
  function iwp_mmb_new_run_task_now($params)
893
  {
@@ -906,6 +940,10 @@ if( !function_exists ( 'iwp_mmb_new_run_task_now' )) {
906
  'success' => 'Backup started',
907
  'wp_content_url' => content_url(),
908
  );
 
 
 
 
909
  // Close browser connection not working for some servers so we suggest IWP_PHOENIX_BACKUP_CRON
910
  // iwp_closeBrowserConnection( $msg );
911
  if ((!defined('DISABLE_IWP_CLOUD_VERIFICATION')) && (empty($params['args']['disable_iwp_cloud_verification']))) {
@@ -1298,16 +1336,35 @@ if( !function_exists ( 'iwp_mmb_post_create' )) {
1298
  {
1299
  global $iwp_mmb_core;
1300
  $iwp_mmb_core->get_post_instance();
1301
- $return = $iwp_mmb_core->post_instance->create($params);
1302
- if (is_int($return))
 
 
 
 
1303
  iwp_mmb_response($return, true);
1304
  else{
1305
- if(isset($return['error'])){
1306
- iwp_mmb_response($return, false);
1307
  } else {
1308
- iwp_mmb_response($return, false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1309
  }
1310
  }
 
1311
  }
1312
  }
1313
 
@@ -1342,8 +1399,12 @@ if( !function_exists ('iwp_mmb_delete_post')) {
1342
  {
1343
  global $iwp_mmb_core;
1344
  $iwp_mmb_core->get_post_instance();
1345
-
 
 
 
1346
  $return = $iwp_mmb_core->post_instance->delete_post($params);
 
1347
  if (is_array($return) && array_key_exists('error', $return))
1348
  iwp_mmb_response($return, false);
1349
  else {
@@ -1357,8 +1418,13 @@ if( !function_exists ('iwp_mmb_delete_posts')) {
1357
  {
1358
  global $iwp_mmb_core;
1359
  $iwp_mmb_core->get_post_instance();
1360
-
 
 
 
 
1361
  $return = $iwp_mmb_core->post_instance->delete_posts($params);
 
1362
  if (is_array($return) && array_key_exists('error', $return))
1363
  iwp_mmb_response($return, false);
1364
  else {
@@ -1397,8 +1463,12 @@ if( !function_exists ('iwp_mmb_delete_page')) {
1397
  {
1398
  global $iwp_mmb_core;
1399
  $iwp_mmb_core->get_post_instance();
1400
-
 
 
 
1401
  $return = $iwp_mmb_core->post_instance->delete_page($params);
 
1402
  if (is_array($return) && array_key_exists('error', $return))
1403
  iwp_mmb_response($return, false);
1404
  else {
@@ -1428,7 +1498,12 @@ if( !function_exists ( 'iwp_mmb_add_link' )) {
1428
  {
1429
  global $iwp_mmb_core;
1430
  $iwp_mmb_core->get_link_instance();
 
 
 
 
1431
  $return = $iwp_mmb_core->link_instance->add_link($params);
 
1432
  if (is_array($return) && array_key_exists('error', $return)){
1433
  iwp_mmb_response($return, false);
1434
  }
@@ -1444,8 +1519,12 @@ if( !function_exists ('iwp_mmb_delete_link')) {
1444
  {
1445
  global $iwp_mmb_core;
1446
  $iwp_mmb_core->get_link_instance();
1447
-
 
 
 
1448
  $return = $iwp_mmb_core->link_instance->delete_link($params);
 
1449
  if (is_array($return) && array_key_exists('error', $return)){
1450
  iwp_mmb_response($return, false);
1451
  }
@@ -1460,8 +1539,12 @@ if( !function_exists ('iwp_mmb_delete_links')) {
1460
  {
1461
  global $iwp_mmb_core;
1462
  $iwp_mmb_core->get_link_instance();
1463
-
 
 
 
1464
  $return = $iwp_mmb_core->link_instance->delete_links($params);
 
1465
  if (is_array($return) && array_key_exists('error', $return)){
1466
  iwp_mmb_response($return, false);
1467
  }
@@ -3087,21 +3170,31 @@ function iwp_mmb_get_hosting_disk_quota_free() {
3087
 
3088
  function iwp_mmb_set_plugin_priority()
3089
  {
 
3090
  $pluginBasename = 'iwp-client/init.php';
3091
- $activePlugins = get_option('active_plugins');
3092
-
3093
- if (reset($activePlugins) === $pluginBasename) {
3094
  return;
3095
  }
3096
 
3097
  $iwpKey = array_search($pluginBasename, $activePlugins);
3098
-
3099
- if ($iwpKey === false) {
3100
  return;
 
 
 
 
 
 
 
3101
  }
3102
-
3103
  unset($activePlugins[$iwpKey]);
 
3104
  array_unshift($activePlugins, $pluginBasename);
 
 
3105
  update_option('active_plugins', array_values($activePlugins));
3106
  }
3107
 
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.4.4
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.4.4');
33
 
34
 
35
 
751
  if (is_array($return) && !array_key_exists('error', $return))
752
  $response['wordfence_load'] = $return;
753
  }
754
+ // bulk publish
755
+ if (!empty($params['requiredActions']) && isset($params['requiredActions']['get_bulkposts'])) {
756
+ $iwp_mmb_core->get_post_instance();
757
+ $return = $iwp_mmb_core->post_instance->get_posts($params['requiredActions']['get_bulkposts']);
758
+ if (is_array($return) && !array_key_exists('error', $return))
759
+ $response['get_bulkposts'] = $return;
760
+ }
761
+
762
+ if (!empty($params['requiredActions']) && isset($params['requiredActions']['get_bulkpages'])) {
763
+ $iwp_mmb_core->get_post_instance();
764
+ $return = $iwp_mmb_core->post_instance->get_pages($params['requiredActions']['get_bulkpages']);
765
+ if (is_array($return) && !array_key_exists('error', $return))
766
+ $response['get_bulkpages'] = $return;
767
+ }
768
+
769
+ if (!empty($params['requiredActions']) && isset($params['requiredActions']['get_bulklinks'])) {
770
+ $iwp_mmb_core->get_link_instance();
771
+ $return = $iwp_mmb_core->link_instance->get_links($params['requiredActions']['get_bulklinks']);
772
+ if (is_array($return) && !array_key_exists('error', $return))
773
+ $response['get_bulklinks'] = $return;
774
+ }
775
 
776
  if (is_array($response) && array_key_exists('error', $response))
777
  iwp_mmb_response($response, false);
799
  'success' => 'Backup started',
800
  'wp_content_url' => content_url(),
801
  );
802
+ $iwp_backup_dir = $iwp_backup_core->backups_dir_location();
803
+ if (is_array($iwp_backup_dir) && array_key_exists('error', $iwp_backup_dir)){
804
+ iwp_closeBrowserConnection($iwp_backup_dir, false);
805
+ }
806
  // Close browser connection not working for some servers so we suggest IWP_PHOENIX_BACKUP_CRON
807
  // iwp_closeBrowserConnection( $msg );
808
  if ((!defined('DISABLE_IWP_CLOUD_VERIFICATION')) && (empty($params['args']['disable_iwp_cloud_verification']))) {
913
  }
914
  }
915
 
916
+ if( !function_exists ( 'iwp_get_db_details' )) {
917
+ function iwp_get_db_details($params)
918
+ {
919
+ global $iwp_mmb_core;
920
+ $return = $iwp_mmb_core->get_db_details($params);
921
+ iwp_mmb_response($return, $return);
922
+ }
923
+ }
924
+
925
  if( !function_exists ( 'iwp_mmb_new_run_task_now' )) {
926
  function iwp_mmb_new_run_task_now($params)
927
  {
940
  'success' => 'Backup started',
941
  'wp_content_url' => content_url(),
942
  );
943
+ $iwp_backup_dir = $iwp_backup_core->backups_dir_location();
944
+ if (is_array($iwp_backup_dir) && array_key_exists('error', $iwp_backup_dir)){
945
+ iwp_closeBrowserConnection($iwp_backup_dir, false);
946
+ }
947
  // Close browser connection not working for some servers so we suggest IWP_PHOENIX_BACKUP_CRON
948
  // iwp_closeBrowserConnection( $msg );
949
  if ((!defined('DISABLE_IWP_CLOUD_VERIFICATION')) && (empty($params['args']['disable_iwp_cloud_verification']))) {
1336
  {
1337
  global $iwp_mmb_core;
1338
  $iwp_mmb_core->get_post_instance();
1339
+ if(!empty($params['action_params'])){
1340
+ // v3
1341
+ $return['action_response'] = $iwp_mmb_core->post_instance->create($params['action_params']);
1342
+ $return['additional_response']['additional_posts'] = $iwp_mmb_core->post_instance->get_posts($params['additional_params']);
1343
+ $return['additional_response']['additional_pages'] = $iwp_mmb_core->post_instance->get_pages($params['additional_params']);
1344
+ if (is_int($return['action_response']))
1345
  iwp_mmb_response($return, true);
1346
  else{
1347
+ if(isset($return['action_response']['error'])){
1348
+ iwp_mmb_response($return['action_response'], false);
1349
  } else {
1350
+ iwp_mmb_response($return['action_response'], false);
1351
+ }
1352
+ }
1353
+
1354
+ }else{
1355
+ // V2
1356
+ $return = $iwp_mmb_core->post_instance->create($params);
1357
+ if (is_int($return))
1358
+ iwp_mmb_response($return, true);
1359
+ else{
1360
+ if(isset($return['error'])){
1361
+ iwp_mmb_response($return, false);
1362
+ } else {
1363
+ iwp_mmb_response($return, false);
1364
+ }
1365
  }
1366
  }
1367
+
1368
  }
1369
  }
1370
 
1399
  {
1400
  global $iwp_mmb_core;
1401
  $iwp_mmb_core->get_post_instance();
1402
+ if(!empty($params['additional_params'])){
1403
+ $return['action_response'] = $iwp_mmb_core->post_instance->delete_post($params['action_params']);
1404
+ $return['additional_response'] = $iwp_mmb_core->post_instance->get_posts($params['additional_params']);
1405
+ }else{
1406
  $return = $iwp_mmb_core->post_instance->delete_post($params);
1407
+ }
1408
  if (is_array($return) && array_key_exists('error', $return))
1409
  iwp_mmb_response($return, false);
1410
  else {
1418
  {
1419
  global $iwp_mmb_core;
1420
  $iwp_mmb_core->get_post_instance();
1421
+ if(!empty($params['action_params'])){
1422
+ $return['action_response'] = $iwp_mmb_core->post_instance->delete_posts($params['action_params']);
1423
+ $return['additional_response']['additional_posts'] = $iwp_mmb_core->post_instance->get_posts($params['additional_params']);
1424
+ $return['additional_response']['additional_pages'] = $iwp_mmb_core->post_instance->get_pages($params['additional_params']);
1425
+ }else{
1426
  $return = $iwp_mmb_core->post_instance->delete_posts($params);
1427
+ }
1428
  if (is_array($return) && array_key_exists('error', $return))
1429
  iwp_mmb_response($return, false);
1430
  else {
1463
  {
1464
  global $iwp_mmb_core;
1465
  $iwp_mmb_core->get_post_instance();
1466
+ if(!empty($params['action_params'])){
1467
+ $return['action_response'] = $iwp_mmb_core->post_instance->delete_page($params['action_params']);
1468
+ $return['additional_response'] = $iwp_mmb_core->post_instance->get_pages($params['additional_params']);
1469
+ }else{
1470
  $return = $iwp_mmb_core->post_instance->delete_page($params);
1471
+ }
1472
  if (is_array($return) && array_key_exists('error', $return))
1473
  iwp_mmb_response($return, false);
1474
  else {
1498
  {
1499
  global $iwp_mmb_core;
1500
  $iwp_mmb_core->get_link_instance();
1501
+ if(!empty($params['action_params'])){
1502
+ $return['action_response'] = $iwp_mmb_core->link_instance->add_link($params['action_params']);
1503
+ $return['additional_response'] = $iwp_mmb_core->link_instance->get_links($params['additional_params']);
1504
+ }else{
1505
  $return = $iwp_mmb_core->link_instance->add_link($params);
1506
+ }
1507
  if (is_array($return) && array_key_exists('error', $return)){
1508
  iwp_mmb_response($return, false);
1509
  }
1519
  {
1520
  global $iwp_mmb_core;
1521
  $iwp_mmb_core->get_link_instance();
1522
+ if(!empty($params['action_params'])){
1523
+ $return['action_response'] = $iwp_mmb_core->link_instance->delete_link($params['action_params']);
1524
+ $return['additional_response'] = $iwp_mmb_core->link_instance->get_links($params['additional_params']);
1525
+ }else{
1526
  $return = $iwp_mmb_core->link_instance->delete_link($params);
1527
+ }
1528
  if (is_array($return) && array_key_exists('error', $return)){
1529
  iwp_mmb_response($return, false);
1530
  }
1539
  {
1540
  global $iwp_mmb_core;
1541
  $iwp_mmb_core->get_link_instance();
1542
+ if(!empty($params['action_params'])){
1543
+ $return['action_response'] = $iwp_mmb_core->link_instance->delete_links($params['action_params']);
1544
+ $return['additional_response'] = $iwp_mmb_core->link_instance->get_links($params['additional_params']);
1545
+ }else{
1546
  $return = $iwp_mmb_core->link_instance->delete_links($params);
1547
+ }
1548
  if (is_array($return) && array_key_exists('error', $return)){
1549
  iwp_mmb_response($return, false);
1550
  }
3170
 
3171
  function iwp_mmb_set_plugin_priority()
3172
  {
3173
+ $activePlugins = get_option('active_plugins');
3174
  $pluginBasename = 'iwp-client/init.php';
3175
+ $wptcPluginBasename = 'wp-time-capsule/wp-time-capsule.php';
3176
+ $array_slice = array_slice($activePlugins, 1, true);
3177
+ if (!is_array($activePlugins) || (reset($activePlugins) == $wptcPluginBasename && (reset($array_slice) == $pluginBasename))) {
3178
  return;
3179
  }
3180
 
3181
  $iwpKey = array_search($pluginBasename, $activePlugins);
3182
+ $wptcKey = array_search($wptcPluginBasename, $activePlugins);
3183
+ if ($iwpKey == false && $wptcKey == false) {
3184
  return;
3185
+ }elseif ($iwpKey == false) {
3186
+ return;
3187
+ }elseif ($iwpKey == true && $wptcKey == false) {
3188
+ unset($activePlugins[$iwpKey]);
3189
+ array_unshift($activePlugins, $pluginBasename);
3190
+ update_option('active_plugins', array_values($activePlugins));
3191
+ return;
3192
  }
 
3193
  unset($activePlugins[$iwpKey]);
3194
+ unset($activePlugins[$wptcKey]);
3195
  array_unshift($activePlugins, $pluginBasename);
3196
+ array_unshift($activePlugins, $wptcPluginBasename);
3197
+
3198
  update_option('active_plugins', array_values($activePlugins));
3199
  }
3200
 
lib/amazon/s3IWPBackup.php CHANGED
@@ -661,6 +661,12 @@ class IWP_MMB_S3_SINGLECALL extends IWP_MMB_Backup_Multicall
661
  $as3_file = $as3_directory . '/' . basename($backup_file);
662
  }
663
  try{
 
 
 
 
 
 
664
  if (empty($as3_bucket_region)) {
665
  $s3 = S3Client::factory(array(
666
  'key' => trim($as3_access_key),
661
  $as3_file = $as3_directory . '/' . basename($backup_file);
662
  }
663
  try{
664
+ if (empty($as3_bucket_region)) {
665
+ require_once($GLOBALS['iwp_mmb_plugin_dir']."/lib/S3.php");
666
+ $s3 = new IWP_MMB_S3(trim($as3_access_key), trim(str_replace(' ', '+', $as3_secure_key)), false, 's3.amazonaws.com');
667
+ $as3_bucket_region = $s3->getBucketLocationNew($as3_bucket);
668
+ if (empty($as3_bucket_region) && false !== $as3_bucket_region) $as3_bucket_region = null;
669
+ }
670
  if (empty($as3_bucket_region)) {
671
  $s3 = S3Client::factory(array(
672
  'key' => trim($as3_access_key),
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: infinitewp
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.2.2
6
  Stable tag: trunk
7
 
8
  Install this plugin on unlimited sites and manage them all from a central dashboard.
@@ -47,6 +47,15 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
47
  5. One-click updates
48
 
49
  == Changelog ==
 
 
 
 
 
 
 
 
 
50
  = 1.9.4.1 - July 25th 2019 =
51
  * Feature: Full Support for Multisite Installations.
52
  * Feature: SSH support - You can use your SSH keys to backup your WordPress sites.
2
  Contributors: infinitewp
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.3.1
6
  Stable tag: trunk
7
 
8
  Install this plugin on unlimited sites and manage them all from a central dashboard.
47
  5. One-click updates
48
 
49
  == Changelog ==
50
+ = 1.9.4.4 - Dec 17th 2019 =
51
+ * Improvement: Implemented a new method to fetch database details for the following operations. Restore, same server staging and existing site cloning.
52
+ * Improvement: Support for V3 PPL addon.
53
+ * Improvement: Now, the WPTC plugin gets a higher priority than the IWP client plugin.
54
+ * Fix: File uploader throws a fatal error if the selected folder doesn't have permission to upload.
55
+ * Fix: Error: "Failed to upload to Amazon S3. Please check your details and set Managed Policies on your users to AmazonS3FullAccess" while backing up the site to s3 bucket using the single call method.
56
+ * Fix: With the Phoenix method, Backups are shown as completed if the backup folder does not have write permission.
57
+ * Fix: iwp-restore-log.txt file excluded in the multicall and single call method backups.
58
+
59
  = 1.9.4.1 - July 25th 2019 =
60
  * Feature: Full Support for Multisite Installations.
61
  * Feature: SSH support - You can use your SSH keys to backup your WordPress sites.