Version Description
- June 27th 2016 =
- Feature: Activity log for updates and backups to be used in new version of client reporting beta will be saved and retrieved from the WP Admin instead of the IWP Admin Panel, provided the client reporting addon is active.
- Improvement: The code in the backup_status_table has been refactored.
- Fix: Failed backups with date 01 Jan 1970 were not cleared from the database.
Download this release
Release Info
Developer | infinitewp |
Plugin | InfiniteWP Client |
Version | 1.6.0 |
Comparing to | |
See all releases |
Code changes from version 1.5.1.3 to 1.6.0
- activities_log.class.php +713 -0
- backup.class.multicall.php +46 -16
- backup.class.singlecall.php +36 -12
- core.class.php +14 -46
- init.php +107 -69
- installer.class.php +170 -79
- readme.txt +13 -8
activities_log.class.php
ADDED
@@ -0,0 +1,713 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/************************************************************
|
3 |
+
* This plugin was modified by Revmakx *
|
4 |
+
* Copyright (c) 2012 Revmakx *
|
5 |
+
* www.revmakx.com *
|
6 |
+
* *
|
7 |
+
************************************************************/
|
8 |
+
/*************************************************************
|
9 |
+
*
|
10 |
+
* activities_log.class.php
|
11 |
+
*
|
12 |
+
* Utility functions
|
13 |
+
*
|
14 |
+
*
|
15 |
+
* Copyright (c) 2011 Prelovac Media
|
16 |
+
* www.prelovac.com
|
17 |
+
**************************************************************/
|
18 |
+
if(basename($_SERVER['SCRIPT_FILENAME']) == "activities_log.class.php"):
|
19 |
+
exit;
|
20 |
+
endif;
|
21 |
+
class IWP_MMB_Activities_log {
|
22 |
+
|
23 |
+
function __construct() {
|
24 |
+
if(function_exists('add_action')) {
|
25 |
+
add_action('core_upgrade_preamble',array( &$this, 'iwp_mmb_core_upgrade_preamble'));
|
26 |
+
add_action('_core_updated_successfully',array( &$this, 'iwp_mmb_core_updated_successfully'), 1, 1); // It will call after "wordpress core updates via wp-admin or wp-cron" completed. It is available from wordpress 3.3.
|
27 |
+
add_action('upgrader_process_complete', array( &$this, 'iwp_mmb_upgrader_process_complete'), 1, 2); // It is available from wordpress 3.7. It is for plugins upgrade, themes upgrade, plugins install and themes install.
|
28 |
+
add_action('automatic_updates_complete', array( &$this, 'iwp_mmb_automatic_updates_complete'), 10, 1); // It is available since wordpress 3.8. It is for automatic translation updates.
|
29 |
+
add_action('updated_option', array( &$this, 'iwp_mmb_check_and_update_all_plugins_themes_history'), 10, 3);
|
30 |
+
}
|
31 |
+
|
32 |
+
if(function_exists('add_filter')) {
|
33 |
+
|
34 |
+
add_filter('update_theme_complete_actions', array( &$this, 'iwp_mmb_update_theme_complete_actions'), 1, 2); // It is available from wordpress 2.7 to 3.6.
|
35 |
+
add_filter('update_bulk_theme_complete_actions', array( &$this, 'iwp_mmb_update_bulk_theme_complete_actions'), 1, 2); // It is available from wordpress 2.7 to 3.6.
|
36 |
+
|
37 |
+
add_filter('async_update_translation', array( &$this, 'iwp_mmb_async_update_translation'), 1, 2); // why we added this hook? Because, whenever we tried to update the core, plugins and themes, translation updates automatically trigger. To prevent it, we added this line. It is available since wordpress 4.0.
|
38 |
+
|
39 |
+
add_filter('update_translations_complete_actions', array( &$this, 'iwp_mmb_update_translations_complete_actions'), 10, 1); // It is available since wordpress 3.7.
|
40 |
+
add_filter('upgrader_post_install', array( &$this, 'iwp_mmb_upgrader_post_install'), 10, 3);
|
41 |
+
// We couldn't get the error for failure translations updates (in wordpress 3.7 DE) when individual plugin updates happened. But the above line solved it.
|
42 |
+
// Activities log for automatic translation updates wont work in wordpress 3.7. Because, wordpress 3.7 hasnt given any option to achieve it. But the above line solved it.
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
// whenever iwp client plugin updated also, it will call the following function for creating options like iwp_client_all_plugins_history, iwp_client_all_themes_history and iwp_client_wp_version_old.
|
47 |
+
function iwp_mmb_save_options_for_activity_log($activity = '') {
|
48 |
+
global $wp_version;
|
49 |
+
|
50 |
+
// The following three lines are used for Client Reporting (Beta) - activities log.
|
51 |
+
if(!get_option('iwp_client_all_plugins_history') || in_array($activity, array('update_client_plugin', 'install'))) {
|
52 |
+
$this->iwp_mmb_update_all_plugins_history();
|
53 |
+
}
|
54 |
+
if(!get_option('iwp_client_all_themes_history') || in_array($activity, array('update_client_plugin', 'install'))) {
|
55 |
+
$this->iwp_mmb_update_all_themes_history();
|
56 |
+
}
|
57 |
+
|
58 |
+
if(!get_option('iwp_client_wp_version_old') || in_array($activity, array('update_client_plugin', 'install'))) {
|
59 |
+
update_option('iwp_client_wp_version_old',$wp_version); // It is mainly used when wp core auto updates happened.
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
function iwp_mmb_collect_backup_details($params) {
|
64 |
+
global $iwp_activities_log_post_type;
|
65 |
+
|
66 |
+
$user = get_user_by( 'login', $params['username'] );
|
67 |
+
$userid = $user->data->ID;
|
68 |
+
|
69 |
+
$details = array();
|
70 |
+
$details['backup_name'] = isset($params['args']['backup_name']) ? $params['args']['backup_name'] : '';
|
71 |
+
$details['limit'] = isset($params['args']['limit']) ? $params['args']['limit'] : '';
|
72 |
+
$details['disable_comp'] = isset($params['args']['disable_comp']) ? $params['args']['disable_comp'] : '';
|
73 |
+
$details['optimize_tables'] = isset($params['args']['optimize_tables']) ? $params['args']['optimize_tables'] : '';
|
74 |
+
$details['what'] = isset($params['args']['what']) ? $params['args']['what'] : '';
|
75 |
+
$details['exclude'] = isset($params['args']['exclude']) ? $params['args']['exclude'] : '';
|
76 |
+
$details['exclude_extensions'] = isset($params['args']['exclude_extensions']) ? $params['args']['exclude_extensions'] : '';
|
77 |
+
$details['exclude_file_size'] = isset($params['args']['exclude_file_size']) ? $params['args']['exclude_file_size'] : '';
|
78 |
+
$details['include'] = isset($params['args']['include']) ? $params['args']['include'] : '';
|
79 |
+
$details['mechanism'] = isset($params['mechanism']) ? $params['mechanism'] : '';
|
80 |
+
$details['fail_safe_files'] = isset($params['args']['fail_safe_files']) ? $params['args']['fail_safe_files'] : '';
|
81 |
+
$details['fail_safe_db'] = isset($params['args']['fail_safe_db']) ? $params['args']['fail_safe_db'] : '';
|
82 |
+
$details['del_host_file'] = isset($params['args']['del_host_file']) ? $params['args']['del_host_file'] : '';
|
83 |
+
$details['backup_repo_type'] = isset($params['args']['backup_repo_type']) ? $params['args']['backup_repo_type'] : '';
|
84 |
+
$details['when'] = isset($params['args']['when']) ? $params['args']['when'] : '';
|
85 |
+
$details['at'] = isset($params['args']['at']) ? $params['args']['at'] : '';
|
86 |
+
|
87 |
+
$this->iwp_mmb_save_iwp_activities(isset($params['args']['type'])?$params['args']['type']:'backup', isset($params['args']['action'])?$params['args']['action']:'now', $iwp_activities_log_post_type, (object)$details, $userid);
|
88 |
+
|
89 |
+
unset($details);
|
90 |
+
}
|
91 |
+
|
92 |
+
function iwp_mmb_save_iwp_activities($iwp_type, $iwp_action, $activities_type, $params, $userid) {
|
93 |
+
global $wpdb,$iwp_activities_log_post_type;
|
94 |
+
|
95 |
+
if(!$this->iwp_mmb_get_is_save_activity_log()) {
|
96 |
+
return false;
|
97 |
+
}
|
98 |
+
|
99 |
+
$iwp_activities = array(
|
100 |
+
'post_title' => uniqid( $iwp_activities_log_post_type.'_' ),
|
101 |
+
'post_author' => $userid,
|
102 |
+
'post_status' => 'publish',
|
103 |
+
'post_type' => $iwp_activities_log_post_type
|
104 |
+
);
|
105 |
+
|
106 |
+
if(!empty($GLOBALS['activities_log_datetime'])) {
|
107 |
+
$iwp_activities['post_date'] = $iwp_activities[' post_date_gmt'] = $iwp_activities[' post_modified'] = $iwp_activities['post_modified_gmt'] = $GLOBALS['activities_log_datetime'];
|
108 |
+
}
|
109 |
+
|
110 |
+
$post_id = wp_insert_post( $iwp_activities );
|
111 |
+
|
112 |
+
unset($iwp_activities);
|
113 |
+
/*
|
114 |
+
meta keys
|
115 |
+
==========
|
116 |
+
iwp_log_type
|
117 |
+
iwp_log_action
|
118 |
+
iwp_log_activities_type - i. iwp_activities_log ii. direct iii. automatic
|
119 |
+
iwp_log_details
|
120 |
+
iwp_log_actions - i. core-updated ii. plugins-updated iii. themes-updated iv. translations-updated
|
121 |
+
*/
|
122 |
+
$details = array();
|
123 |
+
$actions = '';
|
124 |
+
switch($iwp_action) {
|
125 |
+
case 'update':
|
126 |
+
switch($iwp_type) {
|
127 |
+
case 'core':
|
128 |
+
$details['old_version'] = $params->current_version;
|
129 |
+
$details['updated_version'] = $params->current;
|
130 |
+
update_option('iwp_client_wp_version_old',$params->current);
|
131 |
+
break;
|
132 |
+
case 'plugins':
|
133 |
+
case 'themes':
|
134 |
+
$details['name'] = $params->name;
|
135 |
+
$details['slug'] = $params->slug;
|
136 |
+
$details['old_version'] = $params->old_version;
|
137 |
+
$details['updated_version'] = $params->updated_version;
|
138 |
+
break;
|
139 |
+
case 'translations':
|
140 |
+
break;
|
141 |
+
}
|
142 |
+
$actions = $iwp_type.'-updated';
|
143 |
+
break;
|
144 |
+
case 'now':
|
145 |
+
case 'schedule':
|
146 |
+
switch($iwp_type) {
|
147 |
+
case 'backup':
|
148 |
+
case 'scheduleBackup':
|
149 |
+
$details = (array) $params;
|
150 |
+
break;
|
151 |
+
}
|
152 |
+
$actions = 'backups';
|
153 |
+
break;
|
154 |
+
}
|
155 |
+
|
156 |
+
if(!function_exists('update_post_meta')) {
|
157 |
+
require_once(ABSPATH.'wp-includes/post.php');
|
158 |
+
}
|
159 |
+
|
160 |
+
update_post_meta($post_id,$iwp_activities_log_post_type.'_type',$iwp_type);
|
161 |
+
update_post_meta($post_id,$iwp_activities_log_post_type.'_action',$iwp_action);
|
162 |
+
update_post_meta($post_id,$iwp_activities_log_post_type.'_activities_type',$activities_type);
|
163 |
+
update_post_meta($post_id,$iwp_activities_log_post_type.'_actions',$actions);
|
164 |
+
update_post_meta($post_id,$iwp_activities_log_post_type.'_details',$details);
|
165 |
+
unset($details);
|
166 |
+
}
|
167 |
+
|
168 |
+
function iwp_mmb_get_is_save_activity_log() {
|
169 |
+
return get_option('is_save_activity_log');
|
170 |
+
}
|
171 |
+
|
172 |
+
function iwp_mmb_core_upgrade_preamble() {
|
173 |
+
|
174 |
+
}
|
175 |
+
|
176 |
+
function iwp_mmb_core_updated_successfully($new_version) {
|
177 |
+
global $pagenow;
|
178 |
+
|
179 |
+
$current = array();
|
180 |
+
$current['current_version'] = get_option('iwp_client_wp_version_old');
|
181 |
+
$current['current'] = $new_version;
|
182 |
+
$activities_type = ('update-core.php' !== $pagenow)?'automatic':'direct';
|
183 |
+
|
184 |
+
$userid = $this->iwp_mmb_get_current_user_id();
|
185 |
+
|
186 |
+
$this->iwp_mmb_save_iwp_activities('core', 'update', $activities_type, (object)$current, $userid);
|
187 |
+
}
|
188 |
+
|
189 |
+
function iwp_mmb_get_current_user_id() {
|
190 |
+
if(!function_exists('get_current_user_id')) {
|
191 |
+
include_once (ABSPATH . 'wp-admin/includes/user.php');
|
192 |
+
}
|
193 |
+
return get_current_user_id();
|
194 |
+
}
|
195 |
+
|
196 |
+
function iwp_mmb_upgrader_process_complete($upgrader, $extra) {
|
197 |
+
global $pagenow,$wp_version;
|
198 |
+
|
199 |
+
if(version_compare($wp_version,'3.6','<=')) {
|
200 |
+
return false;
|
201 |
+
}
|
202 |
+
|
203 |
+
$success = ! is_wp_error( $upgrader->skin->result );
|
204 |
+
$error = null;
|
205 |
+
|
206 |
+
if ( ! $success ) {
|
207 |
+
$errors = $upgrader->skin->result->errors;
|
208 |
+
|
209 |
+
list( $error ) = reset( $errors );
|
210 |
+
}
|
211 |
+
|
212 |
+
// This would have failed down the road anyway
|
213 |
+
if ( ! isset( $extra['type'] ) ) {
|
214 |
+
return false;
|
215 |
+
}
|
216 |
+
|
217 |
+
$type = $extra['type'];
|
218 |
+
$action = $extra['action'];
|
219 |
+
|
220 |
+
if ( ! in_array( $type, array( 'plugin', 'theme' ) ) ) {
|
221 |
+
return false;
|
222 |
+
}
|
223 |
+
|
224 |
+
if ( 'install' === $action ) {
|
225 |
+
if ( 'plugin' === $type ) {
|
226 |
+
} else { // theme
|
227 |
+
}
|
228 |
+
} elseif ( 'update' === $action ) {
|
229 |
+
if(
|
230 |
+
(
|
231 |
+
'theme' === $type
|
232 |
+
)
|
233 |
+
|| (
|
234 |
+
'plugin' === $type
|
235 |
+
&& version_compare($wp_version,'3.7','>=')
|
236 |
+
&& version_compare($wp_version,'3.8','<')
|
237 |
+
&& isset( $extra['bulk'] )
|
238 |
+
&& true === $extra['bulk']
|
239 |
+
&& isset($extra['themes'])
|
240 |
+
&& is_array($extra['themes'])
|
241 |
+
&& count($extra['themes'])
|
242 |
+
) // In wordpress 3.7, it is behaving differently. Thats why, we have written this "or" condition.
|
243 |
+
) { // theme
|
244 |
+
if(isset($extra['theme']) && $extra['theme']) { // It is mainly used when wp cron themes updates happened.
|
245 |
+
$slugs = array( $extra['theme'] );
|
246 |
+
} else if ( isset( $extra['bulk'] ) && true === $extra['bulk'] ) {
|
247 |
+
$slugs = $extra['themes'];
|
248 |
+
} else {
|
249 |
+
$slugs = array( $upgrader->skin->theme );
|
250 |
+
}
|
251 |
+
|
252 |
+
foreach ( $slugs as $slug ) {
|
253 |
+
$this->iwp_mmb_collect_theme_details($slug);
|
254 |
+
}
|
255 |
+
} else if ( 'plugin' === $type ) {
|
256 |
+
if(isset($extra['plugin']) && $extra['plugin']) { // It is mainly used when wp cron plugins updates happened.
|
257 |
+
$slugs = array( $extra['plugin'] );
|
258 |
+
} else if ( isset( $extra['bulk'] ) && true === $extra['bulk'] ) {
|
259 |
+
$slugs = $extra['plugins'];
|
260 |
+
} else {
|
261 |
+
$slugs = array( $upgrader->skin->plugin );
|
262 |
+
}
|
263 |
+
|
264 |
+
foreach ( $slugs as $slug ) {
|
265 |
+
if($slug!='iwp-client/init.php') {
|
266 |
+
$this->iwp_mmb_collect_plugin_details($slug);
|
267 |
+
}
|
268 |
+
}
|
269 |
+
}
|
270 |
+
unset($current);
|
271 |
+
} else {
|
272 |
+
return false;
|
273 |
+
}
|
274 |
+
}
|
275 |
+
|
276 |
+
function iwp_mmb_collect_theme_details($theme_slug) {
|
277 |
+
global $pagenow;
|
278 |
+
|
279 |
+
$activities_type = (!in_array($pagenow,array('update.php','admin-ajax.php')))?'automatic':'direct';
|
280 |
+
|
281 |
+
$theme = $this->iwp_mmb_get_theme_details($theme_slug);
|
282 |
+
|
283 |
+
if(!count($theme)) {
|
284 |
+
return false;
|
285 |
+
}
|
286 |
+
|
287 |
+
$userid = $this->iwp_mmb_get_current_user_id();
|
288 |
+
|
289 |
+
$current = array();
|
290 |
+
|
291 |
+
$stylesheet = $theme['Stylesheet Dir'] . '/style.css';
|
292 |
+
|
293 |
+
if(!function_exists('get_file_data')) {
|
294 |
+
require_once(ABSPATH.'wp-includes/functions.php');
|
295 |
+
}
|
296 |
+
|
297 |
+
$theme_data = get_file_data( $stylesheet, array( 'Version' => 'Version' ) );
|
298 |
+
$current['name'] = $current['slug'] = $theme['Name']; // slug is used to get short description. Here theme name as slug.
|
299 |
+
$current['updated_version'] = $theme_data['Version'];
|
300 |
+
$current['old_version'] = $theme['Version'];
|
301 |
+
|
302 |
+
$all_themes_history = get_option('iwp_client_all_themes_history');
|
303 |
+
|
304 |
+
if(empty($current['name'])) {
|
305 |
+
return false;
|
306 |
+
}
|
307 |
+
|
308 |
+
if(!empty($current['updated_version']) && !empty($current['old_version']) && version_compare($current['updated_version'],$current['old_version'],'==') && isset($all_themes_history) && isset($all_themes_history[$theme_slug]) && $all_themes_history[$theme_slug]) {
|
309 |
+
$current['old_version'] = $all_themes_history[$theme_slug];
|
310 |
+
$all_themes_history[$theme_slug] = $current['updated_version'];
|
311 |
+
update_option('iwp_client_all_themes_history',$all_themes_history);
|
312 |
+
}
|
313 |
+
|
314 |
+
if(!empty($current['updated_version']) && !empty($current['old_version']) && version_compare($current['updated_version'],$current['old_version'],'==')) {
|
315 |
+
return false;
|
316 |
+
} // From wordpress 3.6 to lower versions, even though we got errors when we tried to update the themes, wordpress wont inform us about error via hooks. Thats why we have written this "if".
|
317 |
+
|
318 |
+
$this->iwp_mmb_save_iwp_activities('themes','update',$activities_type,(object)$current,$userid);
|
319 |
+
unset($current);
|
320 |
+
return true;
|
321 |
+
}
|
322 |
+
|
323 |
+
function iwp_mmb_get_theme_details($theme_slug) {
|
324 |
+
if(!function_exists('wp_get_theme')) {
|
325 |
+
require_once(ABSPATH.'wp-includes/theme.php');
|
326 |
+
}
|
327 |
+
if(function_exists('wp_get_theme')) {
|
328 |
+
$theme = wp_get_theme( $theme_slug );
|
329 |
+
} else if(function_exists('get_theme_data') && file_exists(ABSPATH . 'wp-content/themes/'. $theme_slug . '/style.css')) {
|
330 |
+
$theme = get_theme_data( ABSPATH . 'wp-content/themes/'. $theme_slug . '/style.css');
|
331 |
+
} else {
|
332 |
+
$theme = array();
|
333 |
+
}
|
334 |
+
|
335 |
+
return $theme;
|
336 |
+
}
|
337 |
+
|
338 |
+
function iwp_mmb_collect_plugin_details($plugin_file) {
|
339 |
+
global $pagenow;
|
340 |
+
|
341 |
+
$activities_type = (!in_array($pagenow,array('update.php','admin-ajax.php')))?'automatic':'direct';
|
342 |
+
|
343 |
+
$userid = $this->iwp_mmb_get_current_user_id();
|
344 |
+
|
345 |
+
$current = array();
|
346 |
+
|
347 |
+
$_plugins = $this->iwp_mmb_get_all_plugin_details();
|
348 |
+
|
349 |
+
if(!count($_plugins)) {
|
350 |
+
return false;
|
351 |
+
}
|
352 |
+
|
353 |
+
$plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_file );
|
354 |
+
$current['name'] = isset($plugin_data['Name'])?$plugin_data['Name']:'';
|
355 |
+
$current['slug'] = $plugin_file;
|
356 |
+
$current['updated_version'] = isset($plugin_data['Version'])?$plugin_data['Version']:'';
|
357 |
+
$current['old_version'] = isset($_plugins[ $plugin_file ]['Version'])?$_plugins[ $plugin_file ]['Version']:'';
|
358 |
+
|
359 |
+
$all_plugins_history = get_option('iwp_client_all_plugins_history');
|
360 |
+
|
361 |
+
if(!empty($current['updated_version']) && !empty($current['old_version']) && version_compare($current['updated_version'],$current['old_version'],'==') && isset($all_plugins_history) && isset($all_plugins_history[$plugin_file]) && $all_plugins_history[$plugin_file]) {
|
362 |
+
$current['old_version'] = $all_plugins_history[$plugin_file];
|
363 |
+
$all_plugins_history[$plugin_file] = $current['updated_version'];
|
364 |
+
update_option('iwp_client_all_plugins_history',$all_plugins_history);
|
365 |
+
}
|
366 |
+
|
367 |
+
if(!empty($current['updated_version']) && !empty($current['old_version']) && version_compare($current['updated_version'],$current['old_version'],'==')) {
|
368 |
+
return false;
|
369 |
+
} // From wordpress 3.6 to lower versions, even though we got errors when we tried to update the plugins, wordpress wont inform us about error via hooks. Thats why we have written this "if".
|
370 |
+
|
371 |
+
$this->iwp_mmb_save_iwp_activities('plugins','update',$activities_type,(object)$current,$userid);
|
372 |
+
unset($current);
|
373 |
+
return true;
|
374 |
+
}
|
375 |
+
|
376 |
+
function iwp_mmb_get_all_plugin_details() {
|
377 |
+
|
378 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
379 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
380 |
+
}
|
381 |
+
$_plugins = get_plugins();
|
382 |
+
if (empty($_plugins) || !is_array($_plugins)) {
|
383 |
+
return array();
|
384 |
+
}
|
385 |
+
return $_plugins;
|
386 |
+
}
|
387 |
+
|
388 |
+
function iwp_mmb_automatic_updates_complete($update_results) {
|
389 |
+
if(empty($update_results['translation'])) {
|
390 |
+
return false;
|
391 |
+
}
|
392 |
+
return $this->iwp_mmb_post_update_translations_complete_actions(array());
|
393 |
+
}
|
394 |
+
|
395 |
+
function iwp_mmb_post_update_translations_complete_actions($update_actions) {
|
396 |
+
global $pagenow,$iwp_client_plugin_translations,$iwp_client_plugin_ptc_updates,$wp_version,$iwp_activities_log_post_type;
|
397 |
+
|
398 |
+
$activities_type = (!in_array($pagenow,array('update.php','update-core.php')))?'automatic':'direct';
|
399 |
+
|
400 |
+
if(
|
401 |
+
isset($iwp_client_plugin_ptc_updates)
|
402 |
+
&& $iwp_client_plugin_ptc_updates==1
|
403 |
+
) {
|
404 |
+
$activities_type = $iwp_activities_log_post_type;
|
405 |
+
}
|
406 |
+
|
407 |
+
$userid = $this->iwp_mmb_get_current_user_id();
|
408 |
+
|
409 |
+
$details = array();
|
410 |
+
$this->iwp_mmb_save_iwp_activities('translations', 'update', $activities_type, (object)$details, $userid);
|
411 |
+
return $update_actions;
|
412 |
+
}
|
413 |
+
|
414 |
+
function iwp_mmb_check_and_update_all_plugins_themes_history($option, $old_value, $value) {
|
415 |
+
if(in_array($option,array('_site_transient_update_plugins','_site_transient_update_themes'))) {
|
416 |
+
|
417 |
+
$this->iwp_mmb_update_all_plugins_history();
|
418 |
+
$this->iwp_mmb_update_all_themes_history();
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
function iwp_mmb_update_all_plugins_history() {
|
423 |
+
$all_plugins = $this->get_all_plugins();
|
424 |
+
unset($all_plugins['iwp-client/init.php']);
|
425 |
+
$all_plugins_history = array();
|
426 |
+
foreach($all_plugins as $key=>$plugin) {
|
427 |
+
$all_plugins_history[$key] = $plugin['Version'];
|
428 |
+
}
|
429 |
+
|
430 |
+
update_option('iwp_client_all_plugins_history',$all_plugins_history);
|
431 |
+
unset($all_plugins,$all_plugins_history);
|
432 |
+
}
|
433 |
+
|
434 |
+
function iwp_mmb_update_all_themes_history() {
|
435 |
+
$all_themes = $this->get_all_themes();
|
436 |
+
$all_themes_history = array();
|
437 |
+
$theme_details = array();
|
438 |
+
foreach($all_themes as $key=>$theme) {
|
439 |
+
$theme_details = $this->iwp_mmb_get_theme_details($key);
|
440 |
+
$all_themes_history[$key] = $theme_details->Version;
|
441 |
+
}
|
442 |
+
|
443 |
+
update_option('iwp_client_all_themes_history',$all_themes_history);
|
444 |
+
unset($all_themes,$all_themes_history,$theme_details);
|
445 |
+
}
|
446 |
+
|
447 |
+
function get_all_plugins() {
|
448 |
+
if (!function_exists('get_plugins')) {
|
449 |
+
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
450 |
+
}
|
451 |
+
$all_plugins = get_plugins();
|
452 |
+
return $all_plugins;
|
453 |
+
}
|
454 |
+
|
455 |
+
function get_all_themes() {
|
456 |
+
if (!function_exists('wp_get_themes')) {
|
457 |
+
include_once(ABSPATH . WPINC . '/theme.php');
|
458 |
+
}
|
459 |
+
if(function_exists('wp_get_themes')){
|
460 |
+
$all_themes = wp_get_themes();
|
461 |
+
}else{
|
462 |
+
$all_themes = get_themes();
|
463 |
+
}
|
464 |
+
return $all_themes;
|
465 |
+
}
|
466 |
+
|
467 |
+
function iwp_mmb_update_theme_complete_actions($update_actions, $theme_slug) {
|
468 |
+
global $wp_version;
|
469 |
+
|
470 |
+
if(version_compare($wp_version,'3.7','>=') or empty($theme_slug)) {
|
471 |
+
return $update_actions;
|
472 |
+
}
|
473 |
+
|
474 |
+
$this->iwp_mmb_collect_theme_details($theme_slug);
|
475 |
+
|
476 |
+
return $update_actions;
|
477 |
+
}
|
478 |
+
|
479 |
+
function iwp_mmb_update_bulk_theme_complete_actions($update_actions, $theme_info) {
|
480 |
+
global $wp_version,$iwp_client_plugin_ptc_updates;
|
481 |
+
|
482 |
+
if(
|
483 |
+
(
|
484 |
+
version_compare($wp_version,'3.7','>=')
|
485 |
+
)
|
486 |
+
or (
|
487 |
+
isset($iwp_client_plugin_ptc_updates)
|
488 |
+
&& $iwp_client_plugin_ptc_updates==1
|
489 |
+
)
|
490 |
+
) {
|
491 |
+
return $update_actions;
|
492 |
+
}
|
493 |
+
|
494 |
+
$theme_info = (array) $theme_info;
|
495 |
+
$theme_slug = '';
|
496 |
+
|
497 |
+
foreach($theme_info as $key=>$value) {
|
498 |
+
if(isset($value['TextDomain']) && $value['TextDomain']) {
|
499 |
+
$theme_slug = $value['TextDomain'];
|
500 |
+
break;
|
501 |
+
} else if(strstr($key,'stylesheet') || strstr($key,'template')) {
|
502 |
+
$theme_slug = $value;
|
503 |
+
break;
|
504 |
+
} else if($key=='Name') {
|
505 |
+
$theme_slug = str_replace(array(' '),array(''),strtolower($value));
|
506 |
+
break;
|
507 |
+
}
|
508 |
+
}
|
509 |
+
|
510 |
+
if($theme_slug=='') {
|
511 |
+
return $update_actions;
|
512 |
+
}
|
513 |
+
|
514 |
+
$this->iwp_mmb_collect_theme_details($theme_slug);
|
515 |
+
|
516 |
+
return $update_actions;
|
517 |
+
}
|
518 |
+
|
519 |
+
function iwp_mmb_async_update_translation($update, $language_update) {
|
520 |
+
return false;
|
521 |
+
}
|
522 |
+
|
523 |
+
function iwp_mmb_update_translations_complete_actions($update_actions) {
|
524 |
+
global $pagenow,$iwp_client_plugin_translations,$iwp_client_plugin_ptc_updates,$wp_version;
|
525 |
+
|
526 |
+
if(
|
527 |
+
(
|
528 |
+
isset($iwp_client_plugin_translations)
|
529 |
+
&& $iwp_client_plugin_translations==1
|
530 |
+
)
|
531 |
+
or (
|
532 |
+
version_compare($wp_version,'4.0','<')
|
533 |
+
)
|
534 |
+
) {
|
535 |
+
return $update_actions;
|
536 |
+
}
|
537 |
+
|
538 |
+
return $this->iwp_mmb_post_update_translations_complete_actions($update_actions);
|
539 |
+
}
|
540 |
+
|
541 |
+
function iwp_mmb_upgrader_post_install($flag, $hook_extra, $result) {
|
542 |
+
global $wp_version;
|
543 |
+
|
544 |
+
if(
|
545 |
+
isset($hook_extra['language_update_type'])
|
546 |
+
&& isset($hook_extra['language_update'])
|
547 |
+
&& is_object($hook_extra['language_update'])
|
548 |
+
) {
|
549 |
+
remove_filter('update_translations_complete_actions', array(&$this,'iwp_mmb_update_translations_complete_actions'));
|
550 |
+
return $this->iwp_mmb_post_update_translations_complete_actions(array());
|
551 |
+
}
|
552 |
+
|
553 |
+
if(
|
554 |
+
version_compare($wp_version,'3.6','<=')
|
555 |
+
&& isset($hook_extra['plugin'])
|
556 |
+
&& $hook_extra['plugin']
|
557 |
+
&& strstr($hook_extra['plugin'],'.zip')===false
|
558 |
+
) {
|
559 |
+
$this->iwp_mmb_collect_plugin_details($hook_extra['plugin']);
|
560 |
+
}
|
561 |
+
|
562 |
+
return $result;
|
563 |
+
}
|
564 |
+
|
565 |
+
function iwp_mmb_update_is_save_activity_log($is_save_activity_log) {
|
566 |
+
if(isset($is_save_activity_log)) {
|
567 |
+
update_option('is_save_activity_log', $is_save_activity_log);
|
568 |
+
}
|
569 |
+
}
|
570 |
+
|
571 |
+
function iwp_mmb_process_and_fetch_activities_log($params) {
|
572 |
+
global $wpdb,$iwp_activities_log_post_type;
|
573 |
+
|
574 |
+
$updated_key = 'updated';
|
575 |
+
$backups_key = 'backups';
|
576 |
+
$count_key = 'count';
|
577 |
+
$name_key = 'name';
|
578 |
+
$date_key = 'date';
|
579 |
+
$time_key = 'time';
|
580 |
+
$type_key = 'type';
|
581 |
+
$from_key = 'from';
|
582 |
+
$to_key = 'to';
|
583 |
+
$translations_updated = 'translations-updated';
|
584 |
+
|
585 |
+
if(
|
586 |
+
!is_array($params['originalActions'])
|
587 |
+
|| !is_array($params['actions'])
|
588 |
+
|| !count($params['originalActions'])
|
589 |
+
|| !count($params['actions'])
|
590 |
+
|| empty($params['fromDate'])
|
591 |
+
|| empty($params['toDate'])
|
592 |
+
) {
|
593 |
+
iwp_mmb_response(array('error' => 'Invalid request', 'error_code' => 'invalid_request'), false);
|
594 |
+
}
|
595 |
+
|
596 |
+
$iwp_action = implode("','",$params['actions']);
|
597 |
+
|
598 |
+
$query = "
|
599 |
+
select
|
600 |
+
p.ID as post_id,
|
601 |
+
p.post_date as date,
|
602 |
+
pm.meta_value as actions
|
603 |
+
from
|
604 |
+
{$wpdb->prefix}posts as p
|
605 |
+
left join {$wpdb->prefix}postmeta as pm on pm.post_id = p.ID
|
606 |
+
where
|
607 |
+
p.post_type = '".$iwp_activities_log_post_type."'
|
608 |
+
and unix_timestamp(p.post_date)>='".$params['fromDate']."'
|
609 |
+
and unix_timestamp(p.post_date)<='".$params['toDate']."'
|
610 |
+
and pm.meta_key in ('".$iwp_activities_log_post_type."_actions')
|
611 |
+
and pm.meta_value in ('".$iwp_action."')
|
612 |
+
order by p.post_date asc
|
613 |
+
";
|
614 |
+
|
615 |
+
$activities_log_result = $wpdb->get_results($query,ARRAY_A);
|
616 |
+
$return = array();
|
617 |
+
$return['detailed'] = $params['detailed'];
|
618 |
+
$return[$count_key] = array_map('iwp_make_values_as_zero',array_flip($params['actions']));
|
619 |
+
|
620 |
+
foreach($activities_log_result as $key=>$activities_log) {
|
621 |
+
|
622 |
+
$date = date('M d, y',strtotime($activities_log['date']));
|
623 |
+
$time = date('g',strtotime($activities_log['date'])).':'.date('i',strtotime($activities_log['date'])).' '.date('a',strtotime($activities_log['date']));
|
624 |
+
|
625 |
+
$detailed_array = array(
|
626 |
+
$date_key => $date,
|
627 |
+
$time_key => $time
|
628 |
+
);
|
629 |
+
|
630 |
+
$activities_log_details = get_post_meta($activities_log['post_id'],$iwp_activities_log_post_type.'_details',true);
|
631 |
+
|
632 |
+
// The following lines are for CR New
|
633 |
+
if($activities_log['actions']==$backups_key) {
|
634 |
+
$return['detailed'][$activities_log['actions']]['details'][$return['detailed'][$activities_log['actions']][$count_key]] = $detailed_array;
|
635 |
+
if($activities_log_details['what']=='full') {
|
636 |
+
$backup_what_type = 'Files & DB';
|
637 |
+
} else if($activities_log_details['what']=='files') {
|
638 |
+
$backup_what_type = 'Files';
|
639 |
+
} else {
|
640 |
+
$backup_what_type = 'DB';
|
641 |
+
}
|
642 |
+
$return['detailed'][$activities_log['actions']]['details'][$return['detailed'][$activities_log['actions']][$count_key]][$type_key] = $backup_what_type;
|
643 |
+
$return['detailed'][$activities_log['actions']][$count_key]++;
|
644 |
+
} else {
|
645 |
+
|
646 |
+
$return['detailed'][$updated_key][$count_key]++;
|
647 |
+
|
648 |
+
$return['detailed'][$updated_key][$activities_log['actions']]['details'][$return['detailed'][$updated_key][$activities_log['actions']][$count_key]] = $detailed_array;
|
649 |
+
|
650 |
+
if($activities_log['actions']!=$translations_updated) {
|
651 |
+
|
652 |
+
$name = str_replace(array($translations_updated,'s-updated','core-updated'),array(''),$activities_log['actions']);
|
653 |
+
$what_updated = isset($activities_log_details['name'])?$activities_log_details['name']:'Wordpress Core Updates';
|
654 |
+
|
655 |
+
$return['detailed'][$updated_key][$activities_log['actions']]['details'][$return['detailed'][$updated_key][$activities_log['actions']][$count_key]][$name.$name_key] = $what_updated;
|
656 |
+
$return['detailed'][$updated_key][$activities_log['actions']]['details'][$return['detailed'][$updated_key][$activities_log['actions']][$count_key]][$from_key] = $activities_log_details['old_version'];
|
657 |
+
$return['detailed'][$updated_key][$activities_log['actions']]['details'][$return['detailed'][$updated_key][$activities_log['actions']][$count_key]][$to_key] = $activities_log_details['updated_version'];
|
658 |
+
}
|
659 |
+
$return['detailed'][$updated_key][$activities_log['actions']][$count_key]++;
|
660 |
+
}
|
661 |
+
// The above lines are for CR New
|
662 |
+
$return[$count_key][$activities_log['actions']]++; // This line is for CR Old
|
663 |
+
}
|
664 |
+
foreach($return[$count_key] as $key => &$value) {
|
665 |
+
if($value==0) {
|
666 |
+
unset($return[$count_key][$key]);
|
667 |
+
}
|
668 |
+
}
|
669 |
+
foreach($return['detailed'] as $key => &$mainActionArray) {
|
670 |
+
if(!$mainActionArray[$count_key]) {
|
671 |
+
unset($return['detailed'][$key]);
|
672 |
+
} else if(!array_key_exists('details',$mainActionArray)) {
|
673 |
+
foreach($mainActionArray as $key_inner => &$subActionsArray) {
|
674 |
+
if(!$subActionsArray[$count_key] && $key_inner!=$count_key) {
|
675 |
+
unset($mainActionArray[$key_inner]);
|
676 |
+
}
|
677 |
+
}
|
678 |
+
}
|
679 |
+
}
|
680 |
+
|
681 |
+
iwp_mmb_response($return, true);
|
682 |
+
}
|
683 |
+
|
684 |
+
function iwp_mmb_do_remove_upgrader_process_complete_action() {
|
685 |
+
remove_action('upgrader_process_complete', array( &$this, 'iwp_mmb_upgrader_process_complete'), 1);
|
686 |
+
}
|
687 |
+
|
688 |
+
function iwp_mmb_do_remove_theme_filters() {
|
689 |
+
remove_filter('update_theme_complete_actions', array( &$this, 'iwp_mmb_update_theme_complete_actions')); // It is available from wordpress 2.7 to 3.6.
|
690 |
+
remove_filter('update_bulk_theme_complete_actions', array( &$this, 'iwp_mmb_update_bulk_theme_complete_actions')); // It is available from wordpress 2.7 to 3.6.
|
691 |
+
}
|
692 |
+
|
693 |
+
function iwp_mmb_do_remove_upgrader_post_install_filter() {
|
694 |
+
remove_filter('upgrader_post_install', array( &$this, 'iwp_mmb_upgrader_post_install'));
|
695 |
+
}
|
696 |
+
|
697 |
+
function iwp_mmb_do_remove_core_updated_successfully() {
|
698 |
+
remove_action('_core_updated_successfully', array( &$this, 'iwp_mmb_core_updated_successfully'),1);
|
699 |
+
}
|
700 |
+
}
|
701 |
+
|
702 |
+
if(!function_exists('iwp_make_values_as_zero')) {
|
703 |
+
function iwp_make_values_as_zero($value) {
|
704 |
+
return 0;
|
705 |
+
}
|
706 |
+
}
|
707 |
+
if( !function_exists ( 'iwp_mmb_fetch_activities_log' )) {
|
708 |
+
function iwp_mmb_fetch_activities_log($params) {
|
709 |
+
global $iwp_mmb_activities_log;
|
710 |
+
|
711 |
+
$iwp_mmb_activities_log->iwp_mmb_process_and_fetch_activities_log($params);
|
712 |
+
}
|
713 |
+
}
|
backup.class.multicall.php
CHANGED
@@ -186,6 +186,8 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
186 |
|
187 |
function set_backup_task($params)
|
188 |
{
|
|
|
|
|
189 |
if(!empty($params))
|
190 |
{
|
191 |
initialize_manual_debug();
|
@@ -314,6 +316,9 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
314 |
$responseParams = array();
|
315 |
$responseParams['nextFunc'] = 'backup';
|
316 |
$responseParams['mechanism'] = 'multiCall';
|
|
|
|
|
|
|
317 |
return $this->statusLog($historyID, array('stage' => 'verification', 'status' => 'completed', 'statusMsg' => 'verified', 'nextFunc' => 'backup', 'responseParams' => $responseParams));
|
318 |
}
|
319 |
}
|
@@ -2298,8 +2303,8 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
2298 |
$stats = array();
|
2299 |
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2300 |
|
2301 |
-
$rows = $wpdb->get_results("SELECT taskName,taskResults FROM ".$table_name, ARRAY_A);
|
2302 |
-
|
2303 |
$task_res = array();
|
2304 |
foreach($rows as $key => $value){
|
2305 |
$task_results = unserialize($value['taskResults']);
|
@@ -2314,7 +2319,31 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
2314 |
return $task_res;
|
2315 |
}
|
2316 |
|
2317 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2318 |
function get_this_tasks(){
|
2319 |
$this->wpdb_reconnect();
|
2320 |
|
@@ -2380,7 +2409,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
2380 |
$this->wpdb_reconnect();
|
2381 |
if(empty($historyID))
|
2382 |
{
|
2383 |
-
$insert = $wpdb->insert($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'], 'action' => $params['args']['action'], 'type' => $params['args']['type'],'category' => $params['args']['what'],'historyID' => $params['args']['parentHID'],'finalStatus' => 'pending','startTime' => microtime(true),'endTime' => '','statusMsg' => $statusArray['statusMsg'],'requestParams' => serialize($params),'taskName' => $params['task_name']), array( '%s', '%s','%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s', '%s', '%s' ) );
|
2384 |
if($insert)
|
2385 |
{
|
2386 |
$insertID = $wpdb->insert_id;
|
@@ -2388,12 +2417,12 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
2388 |
}
|
2389 |
else if((isset($statusArray['responseParams']))||(isset($statusArray['task_result'])))
|
2390 |
{
|
2391 |
-
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'responseParams' => $this->maybe_serialize_compress($statusArray['responseParams']),'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'],'taskResults' => isset($statusArray['task_result']) ? serialize($statusArray['task_result']) : serialize(array()) ),array( 'historyID' => $historyID),array('%s','%s', '%s', '%s','%s'),array('%d'));
|
2392 |
}
|
2393 |
else
|
2394 |
{
|
2395 |
//$responseParams = $this -> getRequiredData($historyID,"responseParams");
|
2396 |
-
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array('stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'] ),array( 'historyID' => $historyID),array( '%s', '%s', '%s'),array('%d'));
|
2397 |
}
|
2398 |
if( (isset($update)&&($update === false)) || (isset($insert)&&($insert === false)) )
|
2399 |
{
|
@@ -3182,7 +3211,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
|
|
3182 |
$delete = $wpdb->query("DROP TABLE '".$table."' ");
|
3183 |
}
|
3184 |
|
3185 |
-
|
3186 |
|
3187 |
if(!empty($clone_restore_options['iwp_client_backup_tasks'])){
|
3188 |
$this->insertBackupStatusContens($clone_restore_options['iwp_client_backup_tasks']);
|
@@ -6032,7 +6061,7 @@ function ftp_backup($historyID,$args = '')
|
|
6032 |
global $wpdb;
|
6033 |
$this_table_name = $wpdb->base_prefix . 'iwp_file_list'; //in case, if we are changing table name.
|
6034 |
$result = true;
|
6035 |
-
|
6036 |
$IWP_FILE_LIST_TABLE_VERSION = iwp_mmb_get_site_option('iwp_file_list_table_version');
|
6037 |
|
6038 |
//write in db and refresh for_every_count, all_files_detail;
|
@@ -6302,14 +6331,14 @@ function ftp_backup($historyID,$args = '')
|
|
6302 |
$sql = array();
|
6303 |
|
6304 |
$columnData = $wpdb->get_var("SHOW COLUMNS FROM $table_name WHERE Field = 'thisFileNameHash'");
|
6305 |
-
|
6306 |
-
|
6307 |
-
|
6308 |
-
|
6309 |
-
|
6310 |
-
|
6311 |
-
|
6312 |
-
|
6313 |
|
6314 |
//Running the alter queries to the table
|
6315 |
foreach($sql as $v){
|
@@ -6325,6 +6354,7 @@ function ftp_backup($historyID,$args = '')
|
|
6325 |
}
|
6326 |
}
|
6327 |
}
|
|
|
6328 |
/*if( function_exists('add_filter') ){
|
6329 |
add_filter( 'iwp_website_add', 'IWP_MMB_Backup::readd_tasks' );
|
6330 |
}*/
|
186 |
|
187 |
function set_backup_task($params)
|
188 |
{
|
189 |
+
global $iwp_mmb_activities_log;
|
190 |
+
|
191 |
if(!empty($params))
|
192 |
{
|
193 |
initialize_manual_debug();
|
316 |
$responseParams = array();
|
317 |
$responseParams['nextFunc'] = 'backup';
|
318 |
$responseParams['mechanism'] = 'multiCall';
|
319 |
+
|
320 |
+
$iwp_mmb_activities_log->iwp_mmb_collect_backup_details($params);
|
321 |
+
|
322 |
return $this->statusLog($historyID, array('stage' => 'verification', 'status' => 'completed', 'statusMsg' => 'verified', 'nextFunc' => 'backup', 'responseParams' => $responseParams));
|
323 |
}
|
324 |
}
|
2303 |
$stats = array();
|
2304 |
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2305 |
|
2306 |
+
$rows = $wpdb->get_results("SELECT ID, taskName, taskResults FROM ".$table_name." ORDER BY ID DESC", ARRAY_A);
|
2307 |
+
$this->cleanup_failed_backups($rows);
|
2308 |
$task_res = array();
|
2309 |
foreach($rows as $key => $value){
|
2310 |
$task_results = unserialize($value['taskResults']);
|
2319 |
return $task_res;
|
2320 |
}
|
2321 |
|
2322 |
+
function cleanup_failed_backups($rows){
|
2323 |
+
$rowCount = 0;
|
2324 |
+
if (empty($rows) || !is_array($rows)) {
|
2325 |
+
return false;
|
2326 |
+
}
|
2327 |
+
foreach($rows as $key => $value){
|
2328 |
+
$task_results = unserialize($value['taskResults']);
|
2329 |
+
if(empty($task_results['task_results'])){
|
2330 |
+
if ($rowCount > 0) {
|
2331 |
+
$this->remove_failed_backups($value['ID']);
|
2332 |
+
}
|
2333 |
+
$rowCount++;
|
2334 |
+
continue;
|
2335 |
+
}
|
2336 |
+
$rowCount++;
|
2337 |
+
}
|
2338 |
+
}
|
2339 |
+
|
2340 |
+
function remove_failed_backups($ID){
|
2341 |
+
global $wpdb;
|
2342 |
+
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2343 |
+
$delete_query = "DELETE FROM ".$table_name." WHERE ID = '".$ID."' ";
|
2344 |
+
$deleteRes = $wpdb->query($delete_query);
|
2345 |
+
}
|
2346 |
+
|
2347 |
function get_this_tasks(){
|
2348 |
$this->wpdb_reconnect();
|
2349 |
|
2409 |
$this->wpdb_reconnect();
|
2410 |
if(empty($historyID))
|
2411 |
{
|
2412 |
+
$insert = $wpdb->insert($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'], 'action' => $params['args']['action'], 'type' => $params['args']['type'],'category' => $params['args']['what'],'historyID' => $params['args']['parentHID'],'finalStatus' => 'pending','startTime' => microtime(true), 'lastUpdateTime' => microtime(true), 'endTime' => '','statusMsg' => $statusArray['statusMsg'],'requestParams' => serialize($params),'taskName' => $params['task_name']), array( '%s', '%s','%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s', '%s', '%s' ) );
|
2413 |
if($insert)
|
2414 |
{
|
2415 |
$insertID = $wpdb->insert_id;
|
2417 |
}
|
2418 |
else if((isset($statusArray['responseParams']))||(isset($statusArray['task_result'])))
|
2419 |
{
|
2420 |
+
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'responseParams' => $this->maybe_serialize_compress($statusArray['responseParams']),'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'],'taskResults' => isset($statusArray['task_result']) ? serialize($statusArray['task_result']) : serialize(array()), 'lastUpdateTime' => microtime(true)),array( 'historyID' => $historyID),array('%s','%s', '%s', '%s','%s'),array('%d'));
|
2421 |
}
|
2422 |
else
|
2423 |
{
|
2424 |
//$responseParams = $this -> getRequiredData($historyID,"responseParams");
|
2425 |
+
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array('stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'], 'lastUpdateTime' => microtime(true)),array( 'historyID' => $historyID),array( '%s', '%s', '%s'),array('%d'));
|
2426 |
}
|
2427 |
if( (isset($update)&&($update === false)) || (isset($insert)&&($insert === false)) )
|
2428 |
{
|
3211 |
$delete = $wpdb->query("DROP TABLE '".$table."' ");
|
3212 |
}
|
3213 |
|
3214 |
+
iwp_mmb_backup_db_changes();
|
3215 |
|
3216 |
if(!empty($clone_restore_options['iwp_client_backup_tasks'])){
|
3217 |
$this->insertBackupStatusContens($clone_restore_options['iwp_client_backup_tasks']);
|
6061 |
global $wpdb;
|
6062 |
$this_table_name = $wpdb->base_prefix . 'iwp_file_list'; //in case, if we are changing table name.
|
6063 |
$result = true;
|
6064 |
+
|
6065 |
$IWP_FILE_LIST_TABLE_VERSION = iwp_mmb_get_site_option('iwp_file_list_table_version');
|
6066 |
|
6067 |
//write in db and refresh for_every_count, all_files_detail;
|
6331 |
$sql = array();
|
6332 |
|
6333 |
$columnData = $wpdb->get_var("SHOW COLUMNS FROM $table_name WHERE Field = 'thisFileNameHash'");
|
6334 |
+
if(empty($columnData)) {
|
6335 |
+
$sql[] = "ALTER TABLE $table_name ADD `thisFileNameHash` VARCHAR(32) $cachecollation NULL DEFAULT NULL AFTER `thisFileName`";
|
6336 |
+
$sql[] = "ALTER IGNORE TABLE $table_name ADD UNIQUE `thisFileNameHash` (`thisFileNameHash`(32))";
|
6337 |
+
}
|
6338 |
+
$indexData = $wpdb->get_var("SHOW KEYS FROM $table_name WHERE Key_name = 'thisFileName'");
|
6339 |
+
if(!empty($indexData)){
|
6340 |
+
$sql[] = "ALTER TABLE $table_name DROP INDEX thisFileName;";
|
6341 |
+
}
|
6342 |
|
6343 |
//Running the alter queries to the table
|
6344 |
foreach($sql as $v){
|
6354 |
}
|
6355 |
}
|
6356 |
}
|
6357 |
+
|
6358 |
/*if( function_exists('add_filter') ){
|
6359 |
add_filter( 'iwp_website_add', 'IWP_MMB_Backup::readd_tasks' );
|
6360 |
}*/
|
backup.class.singlecall.php
CHANGED
@@ -146,7 +146,9 @@ class IWP_MMB_Backup_Singlecall extends IWP_MMB_Core
|
|
146 |
}*/
|
147 |
|
148 |
function set_backup_task($params){
|
149 |
-
|
|
|
|
|
150 |
|
151 |
$this->statusLog($historyID, array('stage' => 'verification', 'status' => 'processing', 'statusMsg' => 'verificationInitiated'), $params);
|
152 |
|
@@ -165,6 +167,8 @@ class IWP_MMB_Backup_Singlecall extends IWP_MMB_Core
|
|
165 |
if (is_array($result) && array_key_exists('error', $result)) {
|
166 |
$return = $result;
|
167 |
} else {
|
|
|
|
|
168 |
$return = unserialize($backup_settings['taskResults']);
|
169 |
}
|
170 |
//}
|
@@ -2514,15 +2518,13 @@ function ftp_backup($args)
|
|
2514 |
$stats = array();
|
2515 |
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2516 |
|
2517 |
-
$rows = $wpdb->get_results("SELECT taskName,taskResults FROM ".$table_name, ARRAY_A);
|
2518 |
-
|
2519 |
$task_res = array();
|
2520 |
foreach($rows as $key => $value){
|
2521 |
$task_results = unserialize($value['taskResults']);
|
2522 |
-
|
2523 |
-
if(!empty($task_results['task_results']))
|
2524 |
foreach($task_results['task_results'] as $key => $data){
|
2525 |
-
|
2526 |
$task_res[$value['taskName']]['task_results'][$key] = $data;
|
2527 |
}
|
2528 |
}
|
@@ -2530,6 +2532,31 @@ function ftp_backup($args)
|
|
2530 |
return $task_res;
|
2531 |
}
|
2532 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2533 |
function get_this_tasks($requestParams = ''){
|
2534 |
$this->wpdb_reconnect();
|
2535 |
|
@@ -2796,7 +2823,6 @@ function ftp_backup($args)
|
|
2796 |
function cleanup()
|
2797 |
{
|
2798 |
$tasks = $this->get_all_tasks(); //all backups task results array.
|
2799 |
-
|
2800 |
$backup_folder = WP_CONTENT_DIR . '/' . md5('iwp_mmb-client') . '/iwp_backups/';
|
2801 |
$backup_folder_new = IWP_BACKUP_DIR . '/';
|
2802 |
$backup_temp_folder = IWP_PCLZIP_TEMPORARY_DIR;
|
@@ -2921,8 +2947,7 @@ function ftp_backup($args)
|
|
2921 |
|
2922 |
if(empty($historyID))
|
2923 |
{
|
2924 |
-
|
2925 |
-
$insert = $wpdb->insert($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'], 'action' => $params['args']['action'], 'type' => $params['args']['type'],'category' => $params['args']['what'],'historyID' => $GLOBALS['IWP_CLIENT_HISTORY_ID'],'finalStatus' => 'pending','startTime' => microtime(true),'endTime' => '','statusMsg' => $statusArray['statusMsg'],'requestParams' => serialize($params),'taskName' => $params['task_name']), array( '%s', '%s','%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s', '%s', '%s' ) );
|
2926 |
if($insert)
|
2927 |
{
|
2928 |
$insertID = $wpdb->insert_id;
|
@@ -2931,16 +2956,15 @@ function ftp_backup($args)
|
|
2931 |
else if(isset($statusArray['responseParams']))
|
2932 |
{
|
2933 |
|
2934 |
-
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'responseParams' => serialize($statusArray['responseParams']),'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'], 'taskResults' => serialize($statusArray['task_result'])),array( 'historyID' => $historyID),array('%s','%s', '%s', '%s', '%s'),array('%d'));
|
2935 |
|
2936 |
|
2937 |
}
|
2938 |
else
|
2939 |
{
|
2940 |
-
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'], 'taskResults' => serialize($statusArray['task_result']) ),array( 'historyID' => $historyID),array('%s', '%s', '%s', '%s'),array('%d'));
|
2941 |
|
2942 |
}
|
2943 |
-
|
2944 |
if( (isset($update)&&(!$update)) || (isset($insert)&&(!$insert)) )
|
2945 |
{
|
2946 |
//return array('error'=> $statusArray['statusMsg']);
|
146 |
}*/
|
147 |
|
148 |
function set_backup_task($params){
|
149 |
+
global $iwp_mmb_activities_log;
|
150 |
+
|
151 |
+
if (!empty($params)) {
|
152 |
|
153 |
$this->statusLog($historyID, array('stage' => 'verification', 'status' => 'processing', 'statusMsg' => 'verificationInitiated'), $params);
|
154 |
|
167 |
if (is_array($result) && array_key_exists('error', $result)) {
|
168 |
$return = $result;
|
169 |
} else {
|
170 |
+
$iwp_mmb_activities_log->iwp_mmb_collect_backup_details($params);
|
171 |
+
|
172 |
$return = unserialize($backup_settings['taskResults']);
|
173 |
}
|
174 |
//}
|
2518 |
$stats = array();
|
2519 |
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2520 |
|
2521 |
+
$rows = $wpdb->get_results("SELECT ID, taskName, taskResults FROM ".$table_name." ORDER BY ID DESC", ARRAY_A);
|
2522 |
+
$this->cleanup_failed_backups($rows);
|
2523 |
$task_res = array();
|
2524 |
foreach($rows as $key => $value){
|
2525 |
$task_results = unserialize($value['taskResults']);
|
2526 |
+
if (!empty($task_results['task_results']))
|
|
|
2527 |
foreach($task_results['task_results'] as $key => $data){
|
|
|
2528 |
$task_res[$value['taskName']]['task_results'][$key] = $data;
|
2529 |
}
|
2530 |
}
|
2532 |
return $task_res;
|
2533 |
}
|
2534 |
|
2535 |
+
function cleanup_failed_backups($rows){
|
2536 |
+
$rowCount = 0;
|
2537 |
+
if (empty($rows) || !is_array($rows)) {
|
2538 |
+
return false;
|
2539 |
+
}
|
2540 |
+
foreach($rows as $key => $value){
|
2541 |
+
$task_results = unserialize($value['taskResults']);
|
2542 |
+
if(empty($task_results['task_results'])){
|
2543 |
+
if ($rowCount > 0) {
|
2544 |
+
$this->remove_failed_backups($value['ID']);
|
2545 |
+
}
|
2546 |
+
$rowCount++;
|
2547 |
+
continue;
|
2548 |
+
}
|
2549 |
+
$rowCount++;
|
2550 |
+
}
|
2551 |
+
}
|
2552 |
+
|
2553 |
+
function remove_failed_backups($ID){
|
2554 |
+
global $wpdb;
|
2555 |
+
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
2556 |
+
$delete_query = "DELETE FROM ".$table_name." WHERE ID = '".$ID."' ";
|
2557 |
+
$deleteRes = $wpdb->query($delete_query);
|
2558 |
+
}
|
2559 |
+
|
2560 |
function get_this_tasks($requestParams = ''){
|
2561 |
$this->wpdb_reconnect();
|
2562 |
|
2823 |
function cleanup()
|
2824 |
{
|
2825 |
$tasks = $this->get_all_tasks(); //all backups task results array.
|
|
|
2826 |
$backup_folder = WP_CONTENT_DIR . '/' . md5('iwp_mmb-client') . '/iwp_backups/';
|
2827 |
$backup_folder_new = IWP_BACKUP_DIR . '/';
|
2828 |
$backup_temp_folder = IWP_PCLZIP_TEMPORARY_DIR;
|
2947 |
|
2948 |
if(empty($historyID))
|
2949 |
{
|
2950 |
+
$insert = $wpdb->insert($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'], 'action' => $params['args']['action'], 'type' => $params['args']['type'],'category' => $params['args']['what'],'historyID' => $GLOBALS['IWP_CLIENT_HISTORY_ID'],'finalStatus' => 'pending','startTime' => microtime(true),'lastUpdateTime' => microtime(true), 'endTime' => '','statusMsg' => $statusArray['statusMsg'],'requestParams' => serialize($params),'taskName' => $params['task_name']), array( '%s', '%s','%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s', '%s', '%s' ) );
|
|
|
2951 |
if($insert)
|
2952 |
{
|
2953 |
$insertID = $wpdb->insert_id;
|
2956 |
else if(isset($statusArray['responseParams']))
|
2957 |
{
|
2958 |
|
2959 |
+
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'responseParams' => serialize($statusArray['responseParams']),'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'], 'taskResults' => serialize($statusArray['task_result']), 'lastUpdateTime' => microtime(true)),array( 'historyID' => $historyID),array('%s','%s', '%s', '%s', '%s'),array('%d'));
|
2960 |
|
2961 |
|
2962 |
}
|
2963 |
else
|
2964 |
{
|
2965 |
+
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array( 'stage' => $statusArray['stage'], 'status' => $statusArray['status'],'statusMsg' => $statusArray['statusMsg'], 'taskResults' => serialize($statusArray['task_result']), 'lastUpdateTime' => microtime(true)),array( 'historyID' => $historyID),array('%s', '%s', '%s', '%s'),array('%d'));
|
2966 |
|
2967 |
}
|
|
|
2968 |
if( (isset($update)&&(!$update)) || (isset($insert)&&(!$insert)) )
|
2969 |
{
|
2970 |
//return array('error'=> $statusArray['statusMsg']);
|
core.class.php
CHANGED
@@ -184,7 +184,8 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
184 |
'backup_test_site' => 'iwp_mmb_backup_test_site',
|
185 |
'ithemes_security_load' => 'iwp_mmb_ithemes_security_load',
|
186 |
'get_seo_info' => 'iwp_mmb_yoast_get_seo_info',
|
187 |
-
'save_seo_info' => 'iwp_mmb_yoast_save_seo_info'
|
|
|
188 |
);
|
189 |
|
190 |
add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
|
@@ -628,7 +629,7 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
628 |
*/
|
629 |
function install() {
|
630 |
|
631 |
-
global $wpdb, $_wp_using_ext_object_cache, $current_user;
|
632 |
$_wp_using_ext_object_cache = false;
|
633 |
|
634 |
//delete plugin options, just in case
|
@@ -666,7 +667,8 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
666 |
delete_option('iwp_client_pageview_alerts');
|
667 |
|
668 |
add_option('iwp_client_activate_key', sha1( rand(1, 99999). uniqid('', true) . get_option('siteurl') ) );
|
669 |
-
|
|
|
670 |
}
|
671 |
|
672 |
/**
|
@@ -730,6 +732,10 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
730 |
delete_option('iwp_client_pageview_alerts');
|
731 |
|
732 |
delete_option('iwp_client_activate_key');
|
|
|
|
|
|
|
|
|
733 |
}
|
734 |
|
735 |
|
@@ -754,7 +760,7 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
754 |
*/
|
755 |
function update_client_plugin($params)
|
756 |
{
|
757 |
-
|
758 |
extract($params);
|
759 |
if ($download_url) {
|
760 |
@include_once ABSPATH . 'wp-admin/includes/file.php';
|
@@ -785,52 +791,14 @@ class IWP_MMB_Core extends IWP_MMB_Helper
|
|
785 |
ob_end_clean();
|
786 |
@wp_update_plugins();
|
787 |
|
788 |
-
//iwp_mmb_create_backup_table();
|
789 |
-
|
790 |
-
//add_action( 'plugins_loaded', 'iwp_mmb_create_backup_table' );
|
791 |
-
|
792 |
-
/*global $wpdb;
|
793 |
-
|
794 |
-
|
795 |
-
$IWP_MMB_BACKUP_TABLE_VERSION = '1.0';
|
796 |
-
if (get_site_option( 'iwp_backup_table_version' ) != $IWP_MMB_BACKUP_TABLE_VERSION) {
|
797 |
-
|
798 |
-
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
799 |
-
|
800 |
-
$sql = "
|
801 |
-
CREATE TABLE IF NOT EXISTS $table_name (
|
802 |
-
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
803 |
-
`historyID` int(11) NOT NULL,
|
804 |
-
`taskName` varchar(255) NOT NULL,
|
805 |
-
`action` varchar(50) NOT NULL,
|
806 |
-
`type` varchar(50) NOT NULL,
|
807 |
-
`category` varchar(50) NOT NULL,
|
808 |
-
`stage` varchar(255) NOT NULL,
|
809 |
-
`status` varchar(255) NOT NULL,
|
810 |
-
`finalStatus` varchar(50) DEFAULT NULL,
|
811 |
-
`statusMsg` varchar(255) NOT NULL,
|
812 |
-
`requestParams` text NOT NULL,
|
813 |
-
`responseParams` longtext,
|
814 |
-
`taskResults` text,
|
815 |
-
`startTime` int(11) DEFAULT NULL,
|
816 |
-
`endTime` int(11) NOT NULL,
|
817 |
-
PRIMARY KEY (`ID`)
|
818 |
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
819 |
-
";
|
820 |
-
|
821 |
-
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
822 |
-
dbDelta( $sql );
|
823 |
-
|
824 |
-
add_option( "iwp_backup_table_version", $IWP_MMB_BACKUP_TABLE_VERSION);
|
825 |
-
}*/
|
826 |
-
// import iwp_client_backup_tasks option table array to row data.
|
827 |
-
|
828 |
-
|
829 |
if (is_wp_error($result) || !$result) {
|
830 |
return array(
|
831 |
'error' => 'InfiniteWP Client plugin could not be updated.', 'error_code' => 'client_plugin_could_not_be_updated'
|
832 |
);
|
833 |
-
} else {
|
|
|
|
|
|
|
834 |
return array(
|
835 |
'success' => 'InfiniteWP Client plugin successfully updated.'
|
836 |
);
|
184 |
'backup_test_site' => 'iwp_mmb_backup_test_site',
|
185 |
'ithemes_security_load' => 'iwp_mmb_ithemes_security_load',
|
186 |
'get_seo_info' => 'iwp_mmb_yoast_get_seo_info',
|
187 |
+
'save_seo_info' => 'iwp_mmb_yoast_save_seo_info',
|
188 |
+
'fetch_activities_log' => 'iwp_mmb_fetch_activities_log'
|
189 |
);
|
190 |
|
191 |
add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
|
629 |
*/
|
630 |
function install() {
|
631 |
|
632 |
+
global $wpdb, $_wp_using_ext_object_cache, $current_user, $iwp_mmb_activities_log;
|
633 |
$_wp_using_ext_object_cache = false;
|
634 |
|
635 |
//delete plugin options, just in case
|
667 |
delete_option('iwp_client_pageview_alerts');
|
668 |
|
669 |
add_option('iwp_client_activate_key', sha1( rand(1, 99999). uniqid('', true) . get_option('siteurl') ) );
|
670 |
+
|
671 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('install');
|
672 |
}
|
673 |
|
674 |
/**
|
732 |
delete_option('iwp_client_pageview_alerts');
|
733 |
|
734 |
delete_option('iwp_client_activate_key');
|
735 |
+
delete_option('iwp_client_all_themes_history');
|
736 |
+
delete_option('iwp_client_all_plugins_history');
|
737 |
+
delete_option('iwp_client_wp_version_old');
|
738 |
+
delete_option('is_save_activity_log');
|
739 |
}
|
740 |
|
741 |
|
760 |
*/
|
761 |
function update_client_plugin($params)
|
762 |
{
|
763 |
+
global $iwp_mmb_activities_log;
|
764 |
extract($params);
|
765 |
if ($download_url) {
|
766 |
@include_once ABSPATH . 'wp-admin/includes/file.php';
|
791 |
ob_end_clean();
|
792 |
@wp_update_plugins();
|
793 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
794 |
if (is_wp_error($result) || !$result) {
|
795 |
return array(
|
796 |
'error' => 'InfiniteWP Client plugin could not be updated.', 'error_code' => 'client_plugin_could_not_be_updated'
|
797 |
);
|
798 |
+
} else {
|
799 |
+
|
800 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('update_client_plugin');
|
801 |
+
|
802 |
return array(
|
803 |
'success' => 'InfiniteWP Client plugin successfully updated.'
|
804 |
);
|
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.
|
8 |
Author URI: http://www.revmakx.com
|
9 |
*/
|
10 |
/************************************************************
|
@@ -28,7 +28,7 @@ if(basename($_SERVER['SCRIPT_FILENAME']) == "init.php"):
|
|
28 |
exit;
|
29 |
endif;
|
30 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
31 |
-
define('IWP_MMB_CLIENT_VERSION', '1.
|
32 |
|
33 |
|
34 |
|
@@ -47,6 +47,7 @@ $iwp_mmb_plugin_url = WP_PLUGIN_URL . '/' . basename(dirname(__FILE__));
|
|
47 |
|
48 |
require_once("$iwp_mmb_plugin_dir/helper.class.php");
|
49 |
require_once("$iwp_mmb_plugin_dir/core.class.php");
|
|
|
50 |
require_once("$iwp_mmb_plugin_dir/stats.class.php");
|
51 |
//require_once("$iwp_mmb_plugin_dir/backup.class.php");
|
52 |
//require_once("$iwp_mmb_plugin_dir/backup.class.singlecall.php");
|
@@ -91,7 +92,7 @@ if( !function_exists ( 'iwp_mmb_filter_params' )) {
|
|
91 |
if( !function_exists ('iwp_mmb_parse_request')) {
|
92 |
function iwp_mmb_parse_request()
|
93 |
{
|
94 |
-
global $HTTP_RAW_POST_DATA;
|
95 |
$HTTP_RAW_POST_DATA_LOCAL = NULL;
|
96 |
$HTTP_RAW_POST_DATA_LOCAL = file_get_contents('php://input');
|
97 |
if(empty($HTTP_RAW_POST_DATA_LOCAL)){
|
@@ -111,10 +112,14 @@ if( !function_exists ('iwp_mmb_parse_request')) {
|
|
111 |
$unserialized_data['params'] = iwp_mmb_filter_params($unserialized_data['params']);
|
112 |
}
|
113 |
|
114 |
-
$iwp_action
|
115 |
-
$params
|
116 |
-
$id
|
117 |
-
$signature
|
|
|
|
|
|
|
|
|
118 |
}
|
119 |
|
120 |
if (isset($iwp_action)) {
|
@@ -126,7 +131,7 @@ if( !function_exists ('iwp_mmb_parse_request')) {
|
|
126 |
error_reporting(E_ALL ^ E_NOTICE);
|
127 |
@ini_set("display_errors", 1);
|
128 |
|
129 |
-
|
130 |
|
131 |
run_hash_change_process();
|
132 |
|
@@ -138,12 +143,14 @@ if( !function_exists ('iwp_mmb_parse_request')) {
|
|
138 |
iwp_mmb_response(array('error' => 'Username <b>' . $params['username'] . '</b> does not have administrative access. Enter the correct username in the site options.', 'error_code' => 'username_does_not_have_administrative_access'), false);
|
139 |
|
140 |
if ($action == 'add_site') {
|
|
|
141 |
iwp_mmb_add_site($params);
|
142 |
iwp_mmb_response(array('error' => 'You should never see this.', 'error_code' => 'you_should_never_see_this'), false);
|
143 |
}
|
144 |
if ($action == 'readd_site') {
|
145 |
-
|
146 |
-
|
|
|
147 |
iwp_mmb_readd_site($params);
|
148 |
iwp_mmb_response(array('error' => 'You should never see this.', 'error_code' => 'you_should_never_see_this'), false);
|
149 |
}
|
@@ -207,7 +214,8 @@ if( !function_exists ('iwp_mmb_parse_request')) {
|
|
207 |
global $_iwp_mmb_plugin_actions;
|
208 |
$_iwp_mmb_plugin_actions[$action] = $params;
|
209 |
}
|
210 |
-
|
|
|
211 |
} else {
|
212 |
iwp_mmb_response($auth, false);
|
213 |
}
|
@@ -293,7 +301,7 @@ if( !function_exists ( 'iwp_mmb_response' )) {
|
|
293 |
if( !function_exists ( 'iwp_mmb_add_site' )) {
|
294 |
function iwp_mmb_add_site($params)
|
295 |
{
|
296 |
-
global $iwp_mmb_core;
|
297 |
$num = extract($params);
|
298 |
|
299 |
if ($num) {
|
@@ -320,6 +328,8 @@ if( !function_exists ( 'iwp_mmb_add_site' )) {
|
|
320 |
}
|
321 |
|
322 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
|
|
|
|
323 |
delete_option('iwp_client_activate_key');//iwp
|
324 |
} else if ($verify == 0) {
|
325 |
iwp_mmb_response(array('error' => 'Invalid message signature. Please contact us if you see this message often.', 'error_code' => 'iwp_mmb_add_site_invalid_message_signature'), false);
|
@@ -343,7 +353,8 @@ if( !function_exists ( 'iwp_mmb_add_site' )) {
|
|
343 |
if(is_array($brand) && !empty($brand)){
|
344 |
update_option('iwp_client_brand',$brand);
|
345 |
}
|
346 |
-
|
|
|
347 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
348 |
delete_option('iwp_client_activate_key');//IWP
|
349 |
} else
|
@@ -360,7 +371,7 @@ if( !function_exists ( 'iwp_mmb_add_site' )) {
|
|
360 |
|
361 |
if( !function_exists ( 'iwp_mmb_readd_site' )) {
|
362 |
function iwp_mmb_readd_site($params){
|
363 |
-
global $iwp_mmb_core;
|
364 |
$num = extract($params);
|
365 |
if ($num) {
|
366 |
if (!get_option('iwp_client_action_message_id') && !get_option('iwp_client_public_key')) {
|
@@ -382,6 +393,8 @@ if( !function_exists ( 'iwp_mmb_readd_site' )) {
|
|
382 |
if(isset($brand) && is_array($brand) && !empty($brand)){
|
383 |
update_option('iwp_client_brand',$brand);
|
384 |
}
|
|
|
|
|
385 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
386 |
delete_option('iwp_client_activate_key');//iwp
|
387 |
} else if ($verify == 0) {
|
@@ -406,7 +419,8 @@ if( !function_exists ( 'iwp_mmb_readd_site' )) {
|
|
406 |
if(is_array($brand) && !empty($brand)){
|
407 |
update_option('iwp_client_brand',$brand);
|
408 |
}
|
409 |
-
|
|
|
410 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
411 |
delete_option('iwp_client_activate_key');//IWP
|
412 |
} else
|
@@ -593,7 +607,6 @@ if( !function_exists ( 'iwp_mmb_scheduled_backup' )) {
|
|
593 |
function iwp_mmb_scheduled_backup($params)
|
594 |
{
|
595 |
global $iwp_mmb_core;
|
596 |
-
|
597 |
$iwp_mmb_core->get_backup_instance($params['mechanism']);
|
598 |
$return = $iwp_mmb_core->backup_instance->set_backup_task($params);
|
599 |
iwp_mmb_response($return, $return);
|
@@ -1694,13 +1707,73 @@ if(!function_exists('iwp_mmb_convert_data')){
|
|
1694 |
}
|
1695 |
}
|
1696 |
|
1697 |
-
if(!function_exists('
|
1698 |
-
function
|
1699 |
$IWP_MMB_BACKUP_TABLE_VERSION = iwp_mmb_get_site_option('iwp_backup_table_version');
|
1700 |
-
|
1701 |
-
|
1702 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1703 |
}
|
|
|
|
|
|
|
|
|
|
|
1704 |
global $wpdb;
|
1705 |
if(method_exists($wpdb, 'get_charset_collate')){
|
1706 |
$charset_collate = $wpdb->get_charset_collate();
|
@@ -1764,55 +1837,20 @@ if(!function_exists('iwp_mmb_alter_backup_table')){
|
|
1764 |
}
|
1765 |
}
|
1766 |
|
1767 |
-
if(!function_exists('
|
1768 |
-
function
|
1769 |
global $wpdb;
|
1770 |
-
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
$IWP_MMB_BACKUP_TABLE_VERSION = iwp_mmb_get_site_option('iwp_backup_table_version');
|
1775 |
-
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
1776 |
-
|
1777 |
-
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name){
|
1778 |
-
if (!empty($charset_collate)){
|
1779 |
-
$cachecollation = $charset_collate;
|
1780 |
-
}
|
1781 |
-
else{
|
1782 |
-
$cachecollation = ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
|
1783 |
-
}
|
1784 |
-
|
1785 |
-
$sql = "
|
1786 |
-
CREATE TABLE IF NOT EXISTS $table_name (
|
1787 |
-
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
1788 |
-
`historyID` int(11) NOT NULL,
|
1789 |
-
`taskName` varchar(255) NOT NULL,
|
1790 |
-
`action` varchar(50) NOT NULL,
|
1791 |
-
`type` varchar(50) NOT NULL,
|
1792 |
-
`category` varchar(50) NOT NULL,
|
1793 |
-
`stage` varchar(255) NOT NULL,
|
1794 |
-
`status` varchar(255) NOT NULL,
|
1795 |
-
`finalStatus` varchar(50) DEFAULT NULL,
|
1796 |
-
`statusMsg` varchar(255) NOT NULL,
|
1797 |
-
`requestParams` text NOT NULL,
|
1798 |
-
`responseParams` longtext,
|
1799 |
-
`taskResults` text,
|
1800 |
-
`startTime` int(11) DEFAULT NULL,
|
1801 |
-
`endTime` int(11) NOT NULL,
|
1802 |
-
PRIMARY KEY (`ID`)
|
1803 |
-
)".$cachecollation." ;
|
1804 |
-
";
|
1805 |
-
|
1806 |
-
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
1807 |
-
dbDelta( $sql );
|
1808 |
-
|
1809 |
-
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
|
1810 |
-
update_option( "iwp_backup_table_version", '1.1.1');
|
1811 |
-
}
|
1812 |
}
|
1813 |
-
|
1814 |
-
|
|
|
|
|
1815 |
}
|
|
|
1816 |
}
|
1817 |
}
|
1818 |
|
@@ -1881,7 +1919,9 @@ if( !function_exists('iwp_mmb_backup_test_site')){
|
|
1881 |
//register_activation_hook( __FILE__, 'iwp_mmb_create_backup_table' );
|
1882 |
|
1883 |
$iwp_mmb_core = new IWP_MMB_Core();
|
|
|
1884 |
$mmb_core = 1;
|
|
|
1885 |
|
1886 |
if(isset($_GET['auto_login']))
|
1887 |
$iwp_mmb_core->automatic_login();
|
@@ -2095,6 +2135,4 @@ if(!function_exists('iwp_mmb_get_site_option')) {
|
|
2095 |
if ( !get_option('iwp_client_public_key') && function_exists('add_action')){
|
2096 |
add_action('admin_enqueue_scripts', 'iwp_mmb_add_zero_clipboard_scripts');
|
2097 |
}
|
2098 |
-
|
2099 |
-
|
2100 |
?>
|
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.6.0
|
8 |
Author URI: http://www.revmakx.com
|
9 |
*/
|
10 |
/************************************************************
|
28 |
exit;
|
29 |
endif;
|
30 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
31 |
+
define('IWP_MMB_CLIENT_VERSION', '1.6.0');
|
32 |
|
33 |
|
34 |
|
47 |
|
48 |
require_once("$iwp_mmb_plugin_dir/helper.class.php");
|
49 |
require_once("$iwp_mmb_plugin_dir/core.class.php");
|
50 |
+
require_once("$iwp_mmb_plugin_dir/activities_log.class.php");
|
51 |
require_once("$iwp_mmb_plugin_dir/stats.class.php");
|
52 |
//require_once("$iwp_mmb_plugin_dir/backup.class.php");
|
53 |
//require_once("$iwp_mmb_plugin_dir/backup.class.singlecall.php");
|
92 |
if( !function_exists ('iwp_mmb_parse_request')) {
|
93 |
function iwp_mmb_parse_request()
|
94 |
{
|
95 |
+
global $HTTP_RAW_POST_DATA, $iwp_mmb_activities_log;
|
96 |
$HTTP_RAW_POST_DATA_LOCAL = NULL;
|
97 |
$HTTP_RAW_POST_DATA_LOCAL = file_get_contents('php://input');
|
98 |
if(empty($HTTP_RAW_POST_DATA_LOCAL)){
|
112 |
$unserialized_data['params'] = iwp_mmb_filter_params($unserialized_data['params']);
|
113 |
}
|
114 |
|
115 |
+
$iwp_action = $unserialized_data['iwp_action'];
|
116 |
+
$params = $unserialized_data['params'];
|
117 |
+
$id = $unserialized_data['id'];
|
118 |
+
$signature = $unserialized_data['signature'];
|
119 |
+
if(isset($unserialized_data['is_save_activity_log'])) {
|
120 |
+
$is_save_activity_log = $unserialized_data['is_save_activity_log'];
|
121 |
+
}
|
122 |
+
$GLOBALS['activities_log_datetime'] = $unserialized_data['activities_log_datetime'];
|
123 |
}
|
124 |
|
125 |
if (isset($iwp_action)) {
|
131 |
error_reporting(E_ALL ^ E_NOTICE);
|
132 |
@ini_set("display_errors", 1);
|
133 |
|
134 |
+
iwp_mmb_backup_db_changes();
|
135 |
|
136 |
run_hash_change_process();
|
137 |
|
143 |
iwp_mmb_response(array('error' => 'Username <b>' . $params['username'] . '</b> does not have administrative access. Enter the correct username in the site options.', 'error_code' => 'username_does_not_have_administrative_access'), false);
|
144 |
|
145 |
if ($action == 'add_site') {
|
146 |
+
$params['is_save_activity_log'] = $is_save_activity_log;
|
147 |
iwp_mmb_add_site($params);
|
148 |
iwp_mmb_response(array('error' => 'You should never see this.', 'error_code' => 'you_should_never_see_this'), false);
|
149 |
}
|
150 |
if ($action == 'readd_site') {
|
151 |
+
$params['id'] = $id;
|
152 |
+
$params['signature'] = $signature;
|
153 |
+
$params['is_save_activity_log'] = $is_save_activity_log;
|
154 |
iwp_mmb_readd_site($params);
|
155 |
iwp_mmb_response(array('error' => 'You should never see this.', 'error_code' => 'you_should_never_see_this'), false);
|
156 |
}
|
214 |
global $_iwp_mmb_plugin_actions;
|
215 |
$_iwp_mmb_plugin_actions[$action] = $params;
|
216 |
}
|
217 |
+
$iwp_mmb_activities_log->iwp_mmb_update_is_save_activity_log($is_save_activity_log);
|
218 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('parse_request');
|
219 |
} else {
|
220 |
iwp_mmb_response($auth, false);
|
221 |
}
|
301 |
if( !function_exists ( 'iwp_mmb_add_site' )) {
|
302 |
function iwp_mmb_add_site($params)
|
303 |
{
|
304 |
+
global $iwp_mmb_core, $iwp_mmb_activities_log;
|
305 |
$num = extract($params);
|
306 |
|
307 |
if ($num) {
|
328 |
}
|
329 |
|
330 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
331 |
+
$iwp_mmb_activities_log->iwp_mmb_update_is_save_activity_log($params['is_save_activity_log']);
|
332 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('add_site');
|
333 |
delete_option('iwp_client_activate_key');//iwp
|
334 |
} else if ($verify == 0) {
|
335 |
iwp_mmb_response(array('error' => 'Invalid message signature. Please contact us if you see this message often.', 'error_code' => 'iwp_mmb_add_site_invalid_message_signature'), false);
|
353 |
if(is_array($brand) && !empty($brand)){
|
354 |
update_option('iwp_client_brand',$brand);
|
355 |
}
|
356 |
+
$iwp_mmb_activities_log->iwp_mmb_update_is_save_activity_log($params['is_save_activity_log']);
|
357 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('add_site');
|
358 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
359 |
delete_option('iwp_client_activate_key');//IWP
|
360 |
} else
|
371 |
|
372 |
if( !function_exists ( 'iwp_mmb_readd_site' )) {
|
373 |
function iwp_mmb_readd_site($params){
|
374 |
+
global $iwp_mmb_core,$iwp_mmb_activities_log;
|
375 |
$num = extract($params);
|
376 |
if ($num) {
|
377 |
if (!get_option('iwp_client_action_message_id') && !get_option('iwp_client_public_key')) {
|
393 |
if(isset($brand) && is_array($brand) && !empty($brand)){
|
394 |
update_option('iwp_client_brand',$brand);
|
395 |
}
|
396 |
+
$iwp_mmb_activities_log->iwp_mmb_update_is_save_activity_log($params['is_save_activity_log']);
|
397 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('readd_site');
|
398 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
399 |
delete_option('iwp_client_activate_key');//iwp
|
400 |
} else if ($verify == 0) {
|
419 |
if(is_array($brand) && !empty($brand)){
|
420 |
update_option('iwp_client_brand',$brand);
|
421 |
}
|
422 |
+
$iwp_mmb_activities_log->iwp_mmb_update_is_save_activity_log($params['is_save_activity_log']);
|
423 |
+
$iwp_mmb_activities_log->iwp_mmb_save_options_for_activity_log('readd_site');
|
424 |
iwp_mmb_response($iwp_mmb_core->stats_instance->get_initial_stats(), true);
|
425 |
delete_option('iwp_client_activate_key');//IWP
|
426 |
} else
|
607 |
function iwp_mmb_scheduled_backup($params)
|
608 |
{
|
609 |
global $iwp_mmb_core;
|
|
|
610 |
$iwp_mmb_core->get_backup_instance($params['mechanism']);
|
611 |
$return = $iwp_mmb_core->backup_instance->set_backup_task($params);
|
612 |
iwp_mmb_response($return, $return);
|
1707 |
}
|
1708 |
}
|
1709 |
|
1710 |
+
if (!function_exists('iwp_mmb_backup_db_changes')) {
|
1711 |
+
function iwp_mmb_backup_db_changes(){
|
1712 |
$IWP_MMB_BACKUP_TABLE_VERSION = iwp_mmb_get_site_option('iwp_backup_table_version');
|
1713 |
+
if (empty($IWP_MMB_BACKUP_TABLE_VERSION) || $IWP_MMB_BACKUP_TABLE_VERSION == false ) {
|
1714 |
+
iwp_mmb_create_backup_status_table();
|
1715 |
+
}
|
1716 |
+
if(version_compare(iwp_mmb_get_site_option('iwp_backup_table_version'), '1.1.2', '<')){
|
1717 |
+
iwp_mmb_change_collation_backup_status_table();
|
1718 |
+
}
|
1719 |
+
if(version_compare(iwp_mmb_get_site_option('iwp_backup_table_version'), '1.1.3', '<')){
|
1720 |
+
iwp_mmb_add_lastUpdateTime_column_backup_status_table();
|
1721 |
+
}
|
1722 |
+
}
|
1723 |
+
}
|
1724 |
+
|
1725 |
+
if(!function_exists('iwp_mmb_create_backup_status_table')){
|
1726 |
+
//write new backup_status_table changes also in this function.
|
1727 |
+
function iwp_mmb_create_backup_status_table(){
|
1728 |
+
global $wpdb;
|
1729 |
+
if(method_exists($wpdb, 'get_charset_collate')){
|
1730 |
+
$charset_collate = $wpdb->get_charset_collate();
|
1731 |
+
}
|
1732 |
+
|
1733 |
+
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
1734 |
+
|
1735 |
+
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name){
|
1736 |
+
if (!empty($charset_collate)){
|
1737 |
+
$cachecollation = $charset_collate;
|
1738 |
+
}
|
1739 |
+
else{
|
1740 |
+
$cachecollation = ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
|
1741 |
+
}
|
1742 |
+
|
1743 |
+
$sql = "
|
1744 |
+
CREATE TABLE IF NOT EXISTS $table_name (
|
1745 |
+
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
1746 |
+
`historyID` int(11) NOT NULL,
|
1747 |
+
`taskName` varchar(255) NOT NULL,
|
1748 |
+
`action` varchar(50) NOT NULL,
|
1749 |
+
`type` varchar(50) NOT NULL,
|
1750 |
+
`category` varchar(50) NOT NULL,
|
1751 |
+
`stage` varchar(255) NOT NULL,
|
1752 |
+
`status` varchar(255) NOT NULL,
|
1753 |
+
`finalStatus` varchar(50) DEFAULT NULL,
|
1754 |
+
`statusMsg` varchar(255) NOT NULL,
|
1755 |
+
`requestParams` text NOT NULL,
|
1756 |
+
`responseParams` longtext,
|
1757 |
+
`taskResults` text,
|
1758 |
+
`startTime` int(11) DEFAULT NULL,
|
1759 |
+
`lastUpdateTime` int(10) unsigned DEFAULT NULL,
|
1760 |
+
`endTime` int(11) NOT NULL,
|
1761 |
+
PRIMARY KEY (`ID`)
|
1762 |
+
)".$cachecollation." ;
|
1763 |
+
";
|
1764 |
+
|
1765 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
1766 |
+
dbDelta( $sql );
|
1767 |
+
|
1768 |
+
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
|
1769 |
+
update_option( "iwp_backup_table_version", '1.1.3');
|
1770 |
+
}
|
1771 |
}
|
1772 |
+
}
|
1773 |
+
}
|
1774 |
+
|
1775 |
+
if(!function_exists('iwp_mmb_change_collation_backup_status_table')){
|
1776 |
+
function iwp_mmb_change_collation_backup_status_table(){
|
1777 |
global $wpdb;
|
1778 |
if(method_exists($wpdb, 'get_charset_collate')){
|
1779 |
$charset_collate = $wpdb->get_charset_collate();
|
1837 |
}
|
1838 |
}
|
1839 |
|
1840 |
+
if(!function_exists('iwp_mmb_add_lastUpdateTime_column_backup_status_table')){
|
1841 |
+
function iwp_mmb_add_lastUpdateTime_column_backup_status_table(){
|
1842 |
global $wpdb;
|
1843 |
+
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
1844 |
+
if($wpdb->get_var("SHOW COLUMNS FROM `$table_name` WHERE Field = 'lastUpdateTime'")){
|
1845 |
+
update_option( "iwp_backup_table_version", '1.1.3');
|
1846 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1847 |
}
|
1848 |
+
$sql = "ALTER TABLE ".$table_name." ADD `lastUpdateTime` INT(10) UNSIGNED NULL;";
|
1849 |
+
$isDone = $wpdb->query($sql);
|
1850 |
+
if ($isDone) {
|
1851 |
+
update_option( "iwp_backup_table_version", '1.1.3');
|
1852 |
}
|
1853 |
+
|
1854 |
}
|
1855 |
}
|
1856 |
|
1919 |
//register_activation_hook( __FILE__, 'iwp_mmb_create_backup_table' );
|
1920 |
|
1921 |
$iwp_mmb_core = new IWP_MMB_Core();
|
1922 |
+
$GLOBALS['iwp_mmb_activities_log'] = new IWP_MMB_Activities_log();
|
1923 |
$mmb_core = 1;
|
1924 |
+
$GLOBALS['iwp_activities_log_post_type'] = 'iwp_log';
|
1925 |
|
1926 |
if(isset($_GET['auto_login']))
|
1927 |
$iwp_mmb_core->automatic_login();
|
2135 |
if ( !get_option('iwp_client_public_key') && function_exists('add_action')){
|
2136 |
add_action('admin_enqueue_scripts', 'iwp_mmb_add_zero_clipboard_scripts');
|
2137 |
}
|
|
|
|
|
2138 |
?>
|
installer.class.php
CHANGED
@@ -162,6 +162,8 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
162 |
|
163 |
function do_upgrade($params = null)
|
164 |
{
|
|
|
|
|
165 |
if ($params == null || empty($params))
|
166 |
return array(
|
167 |
'error' => 'No upgrades passed.', 'error_code' => 'no_upgrades_passed'
|
@@ -181,38 +183,57 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
181 |
$upgrade_translations = isset($params['upgrade_translations']) ? $params['upgrade_translations'] : array();
|
182 |
$upgrades = array();
|
183 |
$premium_upgrades = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
if (!empty($core_upgrade)) {
|
185 |
-
|
|
|
186 |
}
|
187 |
if (!empty($upgrade_plugins)) {
|
188 |
-
$plugin_files = array();
|
189 |
foreach ($upgrade_plugins as $plugin) {
|
190 |
-
if (isset($plugin->file))
|
|
|
191 |
$plugin_files[$plugin->file] = $plugin->old_version;
|
192 |
-
else
|
|
|
193 |
$premium_upgrades[md5($plugin->name)] = $plugin;
|
|
|
|
|
|
|
|
|
194 |
}
|
195 |
-
if (!empty($plugin_files))
|
196 |
-
$upgrades['plugins'] = $this->upgrade_plugins($plugin_files);
|
197 |
-
|
198 |
}
|
199 |
|
200 |
if (!empty($upgrade_themes)) {
|
201 |
-
$theme_temps = array();
|
202 |
foreach ($upgrade_themes as $theme) {
|
203 |
-
if (isset($theme['theme_tmp']))
|
|
|
204 |
$theme_temps[] = $theme['theme_tmp'];
|
205 |
-
else
|
|
|
206 |
$premium_upgrades[md5($theme['name'])] = $theme;
|
|
|
207 |
}
|
208 |
|
209 |
if (!empty($theme_temps))
|
210 |
-
$upgrades['themes'] = $this->upgrade_themes($theme_temps);
|
211 |
|
212 |
}
|
213 |
|
214 |
if (!empty($premium_upgrades)) {
|
215 |
-
$premium_upgrades = $this->upgrade_premium($premium_upgrades);
|
216 |
if (!empty($premium_upgrades)) {
|
217 |
if (!empty($upgrades)) {
|
218 |
foreach ($upgrades as $key => $val) {
|
@@ -226,7 +247,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
226 |
}
|
227 |
}
|
228 |
if (!empty($upgrade_translations)) {
|
229 |
-
$upgrades['translations'] = $this->upgrade_translations($upgrade_translations);
|
230 |
}
|
231 |
ob_clean();
|
232 |
$this->iwp_mmb_maintenance_mode(false);
|
@@ -237,10 +258,9 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
237 |
* Upgrades WordPress locally
|
238 |
*
|
239 |
*/
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
function upgrade_translations($current){
|
244 |
include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
245 |
$upgrader = new Language_Pack_Upgrader( new Language_Pack_Upgrader_Skin( compact( 'url', 'nonce', 'title', 'context' ) ) );
|
246 |
$result = $upgrader->bulk_upgrade();
|
@@ -254,6 +274,8 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
254 |
}
|
255 |
}
|
256 |
if(!$upgradeFailed){
|
|
|
|
|
257 |
$return = 'updated';
|
258 |
}
|
259 |
return array('upgraded' => $return);
|
@@ -264,9 +286,11 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
264 |
}
|
265 |
}
|
266 |
|
267 |
-
function upgrade_core($current)
|
268 |
{
|
|
|
269 |
ob_start();
|
|
|
270 |
if (!function_exists('wp_version_check') || !function_exists('get_core_checksums'))
|
271 |
include_once(ABSPATH . '/wp-admin/includes/update.php');
|
272 |
|
@@ -326,11 +350,12 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
326 |
return array(
|
327 |
'error' => $this->iwp_mmb_get_error($result), 'error_code' => 'maintenance_mode_upgrade_core'
|
328 |
);
|
329 |
-
} else
|
|
|
330 |
return array(
|
331 |
'upgraded' => 'updated'
|
332 |
);
|
333 |
-
|
334 |
} else {
|
335 |
if (!class_exists('WP_Upgrader')) {
|
336 |
include_once(ABSPATH . 'wp-admin/includes/update.php');
|
@@ -340,10 +365,12 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
340 |
return array(
|
341 |
'error' => $this->iwp_mmb_get_error($result), 'error_code' => 'wp_update_core_upgrade_core'
|
342 |
);
|
343 |
-
} else
|
|
|
344 |
return array(
|
345 |
'upgraded' => 'updated'
|
346 |
);
|
|
|
347 |
}
|
348 |
}
|
349 |
|
@@ -409,6 +436,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
409 |
'error' => $this->iwp_mmb_get_error($update_core), 'error_code' => 'upgrade_core_wp_error'
|
410 |
);
|
411 |
ob_end_flush();
|
|
|
412 |
return array(
|
413 |
'upgraded' => 'updated'
|
414 |
);
|
@@ -425,13 +453,13 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
425 |
}
|
426 |
}
|
427 |
|
428 |
-
function upgrade_plugins($plugins = false)
|
429 |
{
|
|
|
430 |
if (!$plugins || empty($plugins))
|
431 |
return array(
|
432 |
'error' => 'No plugin files for upgrade.', 'error_code' => 'no_plugin_files_for_upgrade'
|
433 |
-
);
|
434 |
-
|
435 |
$current = $this->iwp_mmb_get_transient('update_plugins');
|
436 |
$versions = array();
|
437 |
if(!empty($current)){
|
@@ -445,17 +473,67 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
445 |
if (class_exists('Plugin_Upgrader') && class_exists('Bulk_Plugin_Upgrader_Skin')) {
|
446 |
$upgrader = new Plugin_Upgrader(new Bulk_Plugin_Upgrader_Skin(compact('nonce', 'url')));
|
447 |
$result = $upgrader->bulk_upgrade(array_keys($plugins));
|
|
|
448 |
if (!function_exists('wp_update_plugins'))
|
449 |
include_once(ABSPATH . 'wp-includes/update.php');
|
450 |
|
451 |
@wp_update_plugins();
|
452 |
$current = $this->iwp_mmb_get_transient('update_plugins');
|
|
|
453 |
if (!empty($result)) {
|
454 |
foreach ($result as $plugin_slug => $plugin_info) {
|
455 |
if (!$plugin_info || is_wp_error($plugin_info)) {
|
456 |
$return[$plugin_slug] = array('error' => $this->iwp_mmb_get_error($plugin_info), 'error_code' => 'upgrade_plugins_wp_error');
|
457 |
} else {
|
458 |
-
if(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
$return[$plugin_slug] = 1;
|
460 |
} else {
|
461 |
update_option('iwp_client_forcerefresh', true);
|
@@ -479,8 +557,9 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
479 |
}
|
480 |
}
|
481 |
|
482 |
-
function upgrade_themes($themes = false)
|
483 |
{
|
|
|
484 |
if (!$themes || empty($themes))
|
485 |
return array(
|
486 |
'error' => 'No theme files for upgrade.', 'error_code' => 'no_theme_files_for_upgrade'
|
@@ -511,6 +590,17 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
511 |
$return[$theme_tmp] = array('error' => $this->iwp_mmb_get_error($theme_info), 'error_code' => 'upgrade_themes_wp_error');
|
512 |
} else {
|
513 |
if(!empty($result[$theme_tmp]) || (isset($current->checked[$theme_tmp]) && version_compare(array_search($theme_tmp, $versions), $current->checked[$theme_tmp], '<') == true)){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
514 |
$return[$theme_tmp] = 1;
|
515 |
} else {
|
516 |
update_option('iwp_client_forcerefresh', true);
|
@@ -533,7 +623,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
533 |
}
|
534 |
}
|
535 |
|
536 |
-
function upgrade_premium($premium = false)
|
537 |
{
|
538 |
global $iwp_mmb_plugin_url;
|
539 |
|
@@ -579,7 +669,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
579 |
|
580 |
// try default wordpress upgrader
|
581 |
if(!empty($plugins)){
|
582 |
-
$updateplugins = $this->upgrade_plugins($plugins);
|
583 |
if(!empty($updateplugins) && isset($updateplugins['upgraded'])){
|
584 |
foreach ($premium_update as $key => $update) {
|
585 |
$update = array_change_key_case($update, CASE_LOWER);
|
@@ -596,7 +686,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
596 |
}
|
597 |
|
598 |
if(!empty($themes)){
|
599 |
-
$updatethemes = $this->upgrade_themes(array_keys($themes));
|
600 |
if(!empty($updatethemes) && isset($updatethemes['upgraded'])){
|
601 |
foreach ($premium_update as $key => $update) {
|
602 |
$update = array_change_key_case($update, CASE_LOWER);
|
@@ -613,43 +703,43 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
613 |
}
|
614 |
|
615 |
//try direct install with overwrite
|
616 |
-
|
617 |
foreach ($premium_update as $update) {
|
618 |
$update = array_change_key_case($update, CASE_LOWER);
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
}
|
652 |
}
|
|
|
653 |
return $pr_update;
|
654 |
} else {
|
655 |
foreach ($premium as $pr) {
|
@@ -721,7 +811,7 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
721 |
continue;
|
722 |
}
|
723 |
|
724 |
-
if (!$theme_data->parent()) {
|
725 |
foreach ($current->response as $current_themes => $theme) {
|
726 |
if ($theme_data->Template == $current_themes) {
|
727 |
if (strlen($theme_data->Name) > 0 && strlen($theme_data->Version) > 0) {
|
@@ -753,22 +843,23 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
753 |
if (isset($theme_data['Name']) && in_array($theme_data['Name'], $filter)) {
|
754 |
continue;
|
755 |
}
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
|
|
770 |
|
771 |
-
|
772 |
|
773 |
return $upgrade_themes;
|
774 |
}
|
162 |
|
163 |
function do_upgrade($params = null)
|
164 |
{
|
165 |
+
global $iwp_mmb_activities_log;
|
166 |
+
|
167 |
if ($params == null || empty($params))
|
168 |
return array(
|
169 |
'error' => 'No upgrades passed.', 'error_code' => 'no_upgrades_passed'
|
183 |
$upgrade_translations = isset($params['upgrade_translations']) ? $params['upgrade_translations'] : array();
|
184 |
$upgrades = array();
|
185 |
$premium_upgrades = array();
|
186 |
+
$user = get_user_by( 'login', $params['username'] );
|
187 |
+
$userid = $user->data->ID;
|
188 |
+
|
189 |
+
if (!empty($core_upgrade) || !empty($upgrade_plugins) || !empty($upgrade_themes) || !empty($upgrade_translations)) {
|
190 |
+
$iwp_mmb_activities_log->iwp_mmb_do_remove_upgrader_process_complete_action();
|
191 |
+
$iwp_mmb_activities_log->iwp_mmb_do_remove_theme_filters();
|
192 |
+
$iwp_mmb_activities_log->iwp_mmb_do_remove_upgrader_post_install_filter();
|
193 |
+
}
|
194 |
+
if (!empty($core_upgrade) || !empty($upgrade_plugins) || !empty($upgrade_themes)) {
|
195 |
+
$GLOBALS['iwp_client_plugin_ptc_updates'] = 1;
|
196 |
+
}
|
197 |
+
|
198 |
if (!empty($core_upgrade)) {
|
199 |
+
$iwp_mmb_activities_log->iwp_mmb_do_remove_core_updated_successfully();
|
200 |
+
$upgrades['core'] = $this->upgrade_core($core_upgrade,$userid);
|
201 |
}
|
202 |
if (!empty($upgrade_plugins)) {
|
203 |
+
$plugin_files = $plugin_details = $premium_plugin_details = array();
|
204 |
foreach ($upgrade_plugins as $plugin) {
|
205 |
+
if (isset($plugin->file)) {
|
206 |
+
$plugin_details[] = $plugin;
|
207 |
$plugin_files[$plugin->file] = $plugin->old_version;
|
208 |
+
} else {
|
209 |
+
$premium_plugin_details[] = $plugin;
|
210 |
$premium_upgrades[md5($plugin->name)] = $plugin;
|
211 |
+
}
|
212 |
+
}
|
213 |
+
if (!empty($plugin_files)) {
|
214 |
+
$upgrades['plugins'] = $this->upgrade_plugins($plugin_files,$plugin_details,$userid);
|
215 |
}
|
|
|
|
|
|
|
216 |
}
|
217 |
|
218 |
if (!empty($upgrade_themes)) {
|
219 |
+
$theme_temps = $theme_details = $premium_theme_details = array();
|
220 |
foreach ($upgrade_themes as $theme) {
|
221 |
+
if (isset($theme['theme_tmp'])) {
|
222 |
+
$theme_details[] = $theme;
|
223 |
$theme_temps[] = $theme['theme_tmp'];
|
224 |
+
} else {
|
225 |
+
$premium_theme_details[] = $theme;
|
226 |
$premium_upgrades[md5($theme['name'])] = $theme;
|
227 |
+
}
|
228 |
}
|
229 |
|
230 |
if (!empty($theme_temps))
|
231 |
+
$upgrades['themes'] = $this->upgrade_themes($theme_temps,$theme_details,$userid);
|
232 |
|
233 |
}
|
234 |
|
235 |
if (!empty($premium_upgrades)) {
|
236 |
+
$premium_upgrades = $this->upgrade_premium($premium_upgrades,$premium_plugin_details,$premium_theme_details,$userid);
|
237 |
if (!empty($premium_upgrades)) {
|
238 |
if (!empty($upgrades)) {
|
239 |
foreach ($upgrades as $key => $val) {
|
247 |
}
|
248 |
}
|
249 |
if (!empty($upgrade_translations)) {
|
250 |
+
$upgrades['translations'] = $this->upgrade_translations($upgrade_translations,$userid);
|
251 |
}
|
252 |
ob_clean();
|
253 |
$this->iwp_mmb_maintenance_mode(false);
|
258 |
* Upgrades WordPress locally
|
259 |
*
|
260 |
*/
|
261 |
+
function upgrade_translations($current,$userid){
|
262 |
+
global $iwp_activities_log_post_type, $iwp_mmb_activities_log;
|
263 |
+
$GLOBALS['iwp_client_plugin_translations'] = 1;
|
|
|
264 |
include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
265 |
$upgrader = new Language_Pack_Upgrader( new Language_Pack_Upgrader_Skin( compact( 'url', 'nonce', 'title', 'context' ) ) );
|
266 |
$result = $upgrader->bulk_upgrade();
|
274 |
}
|
275 |
}
|
276 |
if(!$upgradeFailed){
|
277 |
+
$details = array();
|
278 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('translations', 'update', $iwp_activities_log_post_type, (object)$details, $userid);
|
279 |
$return = 'updated';
|
280 |
}
|
281 |
return array('upgraded' => $return);
|
286 |
}
|
287 |
}
|
288 |
|
289 |
+
function upgrade_core($current,$userid)
|
290 |
{
|
291 |
+
global $iwp_activities_log_post_type, $iwp_mmb_activities_log;
|
292 |
ob_start();
|
293 |
+
|
294 |
if (!function_exists('wp_version_check') || !function_exists('get_core_checksums'))
|
295 |
include_once(ABSPATH . '/wp-admin/includes/update.php');
|
296 |
|
350 |
return array(
|
351 |
'error' => $this->iwp_mmb_get_error($result), 'error_code' => 'maintenance_mode_upgrade_core'
|
352 |
);
|
353 |
+
} else {
|
354 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('core', 'update', $iwp_activities_log_post_type, $current, $userid);
|
355 |
return array(
|
356 |
'upgraded' => 'updated'
|
357 |
);
|
358 |
+
}
|
359 |
} else {
|
360 |
if (!class_exists('WP_Upgrader')) {
|
361 |
include_once(ABSPATH . 'wp-admin/includes/update.php');
|
365 |
return array(
|
366 |
'error' => $this->iwp_mmb_get_error($result), 'error_code' => 'wp_update_core_upgrade_core'
|
367 |
);
|
368 |
+
} else {
|
369 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('core', 'update', $iwp_activities_log_post_type, $current, $userid);
|
370 |
return array(
|
371 |
'upgraded' => 'updated'
|
372 |
);
|
373 |
+
}
|
374 |
}
|
375 |
}
|
376 |
|
436 |
'error' => $this->iwp_mmb_get_error($update_core), 'error_code' => 'upgrade_core_wp_error'
|
437 |
);
|
438 |
ob_end_flush();
|
439 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('core', 'update', $iwp_activities_log_post_type, $current, $userid);
|
440 |
return array(
|
441 |
'upgraded' => 'updated'
|
442 |
);
|
453 |
}
|
454 |
}
|
455 |
|
456 |
+
function upgrade_plugins($plugins = false,$plugin_details = false,$userid)
|
457 |
{
|
458 |
+
global $iwp_activities_log_post_type, $iwp_mmb_activities_log;
|
459 |
if (!$plugins || empty($plugins))
|
460 |
return array(
|
461 |
'error' => 'No plugin files for upgrade.', 'error_code' => 'no_plugin_files_for_upgrade'
|
462 |
+
);
|
|
|
463 |
$current = $this->iwp_mmb_get_transient('update_plugins');
|
464 |
$versions = array();
|
465 |
if(!empty($current)){
|
473 |
if (class_exists('Plugin_Upgrader') && class_exists('Bulk_Plugin_Upgrader_Skin')) {
|
474 |
$upgrader = new Plugin_Upgrader(new Bulk_Plugin_Upgrader_Skin(compact('nonce', 'url')));
|
475 |
$result = $upgrader->bulk_upgrade(array_keys($plugins));
|
476 |
+
|
477 |
if (!function_exists('wp_update_plugins'))
|
478 |
include_once(ABSPATH . 'wp-includes/update.php');
|
479 |
|
480 |
@wp_update_plugins();
|
481 |
$current = $this->iwp_mmb_get_transient('update_plugins');
|
482 |
+
|
483 |
if (!empty($result)) {
|
484 |
foreach ($result as $plugin_slug => $plugin_info) {
|
485 |
if (!$plugin_info || is_wp_error($plugin_info)) {
|
486 |
$return[$plugin_slug] = array('error' => $this->iwp_mmb_get_error($plugin_info), 'error_code' => 'upgrade_plugins_wp_error');
|
487 |
} else {
|
488 |
+
if(
|
489 |
+
!empty($result[$plugin_slug])
|
490 |
+
|| (
|
491 |
+
isset($current->checked[$plugin_slug])
|
492 |
+
&& version_compare(array_search($plugin_slug, $versions), $current->checked[$plugin_slug], '<') == true
|
493 |
+
)
|
494 |
+
){
|
495 |
+
foreach($plugin_details as $key=>$plugin_detail) {
|
496 |
+
/* the following "if" is used to detect premium plugin properties.*/
|
497 |
+
if(is_array($plugin_detail)) {
|
498 |
+
$plugin_detail = (object) $plugin_detail;
|
499 |
+
}
|
500 |
+
/* the above "if" is used to detect premium plugin properties.*/
|
501 |
+
|
502 |
+
if(
|
503 |
+
(
|
504 |
+
isset($plugin_detail->plugin)
|
505 |
+
&& $plugin_slug==$plugin_detail->plugin
|
506 |
+
)
|
507 |
+
|| ( // This condition is used to detect premium plugin properties.
|
508 |
+
isset($plugin_detail->slug)
|
509 |
+
&& $plugin_slug==$plugin_detail->slug
|
510 |
+
)
|
511 |
+
) {
|
512 |
+
$current_plugin = array();
|
513 |
+
$current_plugin['name'] = isset($plugin_detail->name)?$plugin_detail->name:'';
|
514 |
+
|
515 |
+
if(isset($plugin_detail->textdomain)) { // this "if" is used to detect premium plugin properties.
|
516 |
+
$current_plugin['slug'] = $plugin_detail->textdomain;
|
517 |
+
} else if(isset($plugin_detail->slug)) {
|
518 |
+
$current_plugin['slug'] = $plugin_detail->slug;
|
519 |
+
} else {
|
520 |
+
$current_plugin['slug'] = '';
|
521 |
+
}
|
522 |
+
|
523 |
+
if(isset($plugin_detail->old_version)) {
|
524 |
+
$current_plugin['old_version'] = $plugin_detail->old_version;
|
525 |
+
} else if(isset($plugin_detail->version)) {
|
526 |
+
$current_plugin['old_version'] = $plugin_detail->version;
|
527 |
+
} else {
|
528 |
+
$current_plugin['old_version'] = '';
|
529 |
+
}
|
530 |
+
|
531 |
+
$current_plugin['updated_version'] = isset($plugin_detail->new_version) ? $plugin_detail->new_version : '';
|
532 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('plugins', 'update', $iwp_activities_log_post_type, (object)$current_plugin, $userid);
|
533 |
+
unset($current_plugin);
|
534 |
+
break;
|
535 |
+
}
|
536 |
+
}
|
537 |
$return[$plugin_slug] = 1;
|
538 |
} else {
|
539 |
update_option('iwp_client_forcerefresh', true);
|
557 |
}
|
558 |
}
|
559 |
|
560 |
+
function upgrade_themes($themes = false,$theme_details = false,$userid)
|
561 |
{
|
562 |
+
global $iwp_activities_log_post_type, $iwp_mmb_activities_log;
|
563 |
if (!$themes || empty($themes))
|
564 |
return array(
|
565 |
'error' => 'No theme files for upgrade.', 'error_code' => 'no_theme_files_for_upgrade'
|
590 |
$return[$theme_tmp] = array('error' => $this->iwp_mmb_get_error($theme_info), 'error_code' => 'upgrade_themes_wp_error');
|
591 |
} else {
|
592 |
if(!empty($result[$theme_tmp]) || (isset($current->checked[$theme_tmp]) && version_compare(array_search($theme_tmp, $versions), $current->checked[$theme_tmp], '<') == true)){
|
593 |
+
foreach($theme_details as $key=>$theme_detail) {
|
594 |
+
if($theme_tmp==$theme_detail['theme_tmp']) {
|
595 |
+
$current_theme = array();
|
596 |
+
$current_theme['name'] = $current_theme['slug'] = $theme_detail['name']; // slug is used to get short description. Here theme name as slug.
|
597 |
+
$current_theme['old_version'] = $theme_detail['old_version'];
|
598 |
+
$current_theme['updated_version'] = $theme_detail['new_version'];
|
599 |
+
$iwp_mmb_activities_log->iwp_mmb_save_iwp_activities('themes', 'update', $iwp_activities_log_post_type, (object)$current_theme, $userid);
|
600 |
+
unset($current_theme);
|
601 |
+
break;
|
602 |
+
}
|
603 |
+
}
|
604 |
$return[$theme_tmp] = 1;
|
605 |
} else {
|
606 |
update_option('iwp_client_forcerefresh', true);
|
623 |
}
|
624 |
}
|
625 |
|
626 |
+
function upgrade_premium($premium = false,$premium_plugin_details = false,$premium_theme_details = false,$userid)
|
627 |
{
|
628 |
global $iwp_mmb_plugin_url;
|
629 |
|
669 |
|
670 |
// try default wordpress upgrader
|
671 |
if(!empty($plugins)){
|
672 |
+
$updateplugins = $this->upgrade_plugins($plugins,$premium_plugin_details,$userid);
|
673 |
if(!empty($updateplugins) && isset($updateplugins['upgraded'])){
|
674 |
foreach ($premium_update as $key => $update) {
|
675 |
$update = array_change_key_case($update, CASE_LOWER);
|
686 |
}
|
687 |
|
688 |
if(!empty($themes)){
|
689 |
+
$updatethemes = $this->upgrade_themes(array_keys($themes),$premium_theme_details,$userid);
|
690 |
if(!empty($updatethemes) && isset($updatethemes['upgraded'])){
|
691 |
foreach ($premium_update as $key => $update) {
|
692 |
$update = array_change_key_case($update, CASE_LOWER);
|
703 |
}
|
704 |
|
705 |
//try direct install with overwrite
|
706 |
+
if (!empty($premium_update)) {
|
707 |
foreach ($premium_update as $update) {
|
708 |
$update = array_change_key_case($update, CASE_LOWER);
|
709 |
+
$update_result = false;
|
710 |
+
if (isset($update['url'])) {
|
711 |
+
if (defined('WP_INSTALLING') && file_exists(ABSPATH . '.maintenance'))
|
712 |
+
$pr_update[$update['type'] . 's']['upgraded'][md5($update['name'])] = 'Site under maintanace.';
|
713 |
+
|
714 |
+
$upgrader_skin = new WP_Upgrader_Skin();
|
715 |
+
$upgrader_skin->done_header = true;
|
716 |
+
$upgrader = new WP_Upgrader();
|
717 |
+
@$update_result = $upgrader->run(array(
|
718 |
+
'package' => $update['url'],
|
719 |
+
'destination' => isset($update['type']) && $update['type'] == 'theme' ? WP_CONTENT_DIR . '/themes' : WP_PLUGIN_DIR,
|
720 |
+
'clear_destination' => true,
|
721 |
+
'clear_working' => true,
|
722 |
+
'is_multi' => true,
|
723 |
+
'hook_extra' => array()
|
724 |
+
));
|
725 |
+
$update_result = !$update_result || is_wp_error($update_result) ? $this->iwp_mmb_get_error($update_result) : 1;
|
726 |
+
|
727 |
+
} else if (isset($update['callback'])) {
|
728 |
+
if (is_array($update['callback'])) {
|
729 |
+
$update_result = call_user_func(array( $update['callback'][0], $update['callback'][1] ));
|
730 |
+
} else if (is_string($update['callback'])) {
|
731 |
+
$update_result = call_user_func($update['callback']);
|
732 |
+
} else {
|
733 |
+
$update_result = array('error' => 'Upgrade function "' . $update['callback'] . '" does not exists.', 'error_code' => 'upgrade_func_callback_does_not_exists');
|
734 |
+
}
|
735 |
+
|
736 |
+
$update_result = $update_result !== true ? array('error' => $this->iwp_mmb_get_error($update_result), 'error_code' => 'upgrade_premium_wp_error') : 1;
|
737 |
+
} else
|
738 |
+
$update_result = array('error' => 'Bad update params.', 'error_code' => 'bad_update_params');
|
739 |
+
|
740 |
+
$pr_update[$update['type'] . 's']['upgraded'][md5($update['name'])] = $update_result;
|
|
|
741 |
}
|
742 |
+
}
|
743 |
return $pr_update;
|
744 |
} else {
|
745 |
foreach ($premium as $pr) {
|
811 |
continue;
|
812 |
}
|
813 |
|
814 |
+
if (method_exists($theme_data,'parent') && !$theme_data->parent()) {
|
815 |
foreach ($current->response as $current_themes => $theme) {
|
816 |
if ($theme_data->Template == $current_themes) {
|
817 |
if (strlen($theme_data->Name) > 0 && strlen($theme_data->Version) > 0) {
|
843 |
if (isset($theme_data['Name']) && in_array($theme_data['Name'], $filter)) {
|
844 |
continue;
|
845 |
}
|
846 |
+
|
847 |
+
if (method_exists($theme_data,'parent') && !$theme_data->parent()) {
|
848 |
+
foreach ($current->response as $current_themes => $theme) {
|
849 |
+
if ($theme_data['Template'] == $current_themes) {
|
850 |
+
if (strlen($theme_data['Name']) > 0 && strlen($theme_data['Version']) > 0) {
|
851 |
+
$current->response[$current_themes]['name'] = $theme_data['Name'];
|
852 |
+
$current->response[$current_themes]['old_version'] = $theme_data['Version'];
|
853 |
+
$current->response[$current_themes]['theme_tmp'] = $theme_data['Template'];
|
854 |
+
$upgrade_themes[] = $current->response[$current_themes];
|
855 |
+
}
|
856 |
+
}
|
857 |
+
}
|
858 |
+
}
|
859 |
+
}
|
860 |
+
}
|
861 |
|
862 |
+
}
|
863 |
|
864 |
return $upgrade_themes;
|
865 |
}
|
readme.txt
CHANGED
@@ -1,16 +1,16 @@
|
|
1 |
-
=== InfiniteWP Client ===
|
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: 4.
|
6 |
-
Stable tag: trunk
|
7 |
|
8 |
Install this plugin on unlimited sites and manage them all from a central dashboard.
|
9 |
This plugin communicates with your InfiniteWP Admin Panel.
|
10 |
|
11 |
== Description ==
|
12 |
|
13 |
-
[InfiniteWP](
|
14 |
|
15 |
Main features:
|
16 |
|
@@ -22,11 +22,11 @@ Main features:
|
|
22 |
* Bulk Install plugins & themes in multiple sites at once
|
23 |
* and more..
|
24 |
|
25 |
-
Visit us at [InfiniteWP.com](
|
26 |
|
27 |
-
Check out the [InfiniteWP Overview Video](
|
28 |
|
29 |
-
|
30 |
|
31 |
Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin on which the client plugin is being developed.
|
32 |
|
@@ -48,7 +48,12 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
-
= 1.
|
|
|
|
|
|
|
|
|
|
|
52 |
* Fix: "Unable to update File list table : Can’t DROP ‘thisFileName’; check that column/key exists" error would be thrown while taking Multi-call backups in the Multi-site WordPress environment.
|
53 |
|
54 |
= 1.5.1.2 - May 18th 2016 =
|
1 |
+
=== InfiniteWP Client ===
|
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: 4.5.3
|
6 |
+
Stable tag: trunk
|
7 |
|
8 |
Install this plugin on unlimited sites and manage them all from a central dashboard.
|
9 |
This plugin communicates with your InfiniteWP Admin Panel.
|
10 |
|
11 |
== Description ==
|
12 |
|
13 |
+
[InfiniteWP](https://infinitewp.com/ "Manage Multiple WordPress") allows users to manage unlimited number of WordPress sites from their own server.
|
14 |
|
15 |
Main features:
|
16 |
|
22 |
* Bulk Install plugins & themes in multiple sites at once
|
23 |
* and more..
|
24 |
|
25 |
+
Visit us at [InfiniteWP.com](https://infinitewp.com/ "Manage Multiple WordPress").
|
26 |
|
27 |
+
Check out the [InfiniteWP Overview Video](https://youtu.be/8wOMewY2EBY) below.
|
28 |
|
29 |
+
https://youtu.be/8wOMewY2EBY
|
30 |
|
31 |
Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin on which the client plugin is being developed.
|
32 |
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 1.6.0 - June 27th 2016 =
|
52 |
+
* Feature: Activity log for updates and backups to be used in new version of client reporting beta will be saved and retrieved from the WP Admin instead of the IWP Admin Panel, provided the client reporting addon is active.
|
53 |
+
* Improvement: The code in the backup_status_table has been refactored.
|
54 |
+
* Fix: Failed backups with date “01 Jan 1970” were not cleared from the database.
|
55 |
+
|
56 |
+
= 1.5.1.3 - May 24th 2016 =
|
57 |
* Fix: "Unable to update File list table : Can’t DROP ‘thisFileName’; check that column/key exists" error would be thrown while taking Multi-call backups in the Multi-site WordPress environment.
|
58 |
|
59 |
= 1.5.1.2 - May 18th 2016 =
|