Version Description
- Improvement: Security improvement.
- Fix: Parent theme update showing as child theme update.
- Fix: Bug fixes.
Download this release
Release Info
Developer | infinitewp |
Plugin | InfiniteWP Client |
Version | 1.3.15 |
Comparing to | |
See all releases |
Code changes from version 1.3.14 to 1.3.15
- init.php +149 -2
- installer.class.php +61 -51
- plugins/cleanup/cleanup.php +3 -1
- readme.txt +5 -0
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.3.
|
8 |
Author URI: http://www.revmakx.com
|
9 |
*/
|
10 |
/************************************************************
|
@@ -26,7 +26,7 @@ Author URI: http://www.revmakx.com
|
|
26 |
**************************************************************/
|
27 |
|
28 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
29 |
-
define('IWP_MMB_CLIENT_VERSION', '1.3.
|
30 |
|
31 |
|
32 |
|
@@ -121,6 +121,8 @@ if( !function_exists ('iwp_mmb_parse_request')) {
|
|
121 |
|
122 |
iwp_mmb_create_backup_table();
|
123 |
|
|
|
|
|
124 |
$action = $iwp_action;
|
125 |
$_wp_using_ext_object_cache = false;
|
126 |
@set_time_limit(600);
|
@@ -1856,6 +1858,151 @@ if(!function_exists('iwp_mmb_add_zero_clipboard_scripts')){
|
|
1856 |
}
|
1857 |
}
|
1858 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1859 |
if ( !get_option('iwp_client_public_key') && function_exists('add_action')){
|
1860 |
add_action('admin_enqueue_scripts', 'iwp_mmb_add_zero_clipboard_scripts');
|
1861 |
}
|
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.3.15
|
8 |
Author URI: http://www.revmakx.com
|
9 |
*/
|
10 |
/************************************************************
|
26 |
**************************************************************/
|
27 |
|
28 |
if(!defined('IWP_MMB_CLIENT_VERSION'))
|
29 |
+
define('IWP_MMB_CLIENT_VERSION', '1.3.15');
|
30 |
|
31 |
|
32 |
|
121 |
|
122 |
iwp_mmb_create_backup_table();
|
123 |
|
124 |
+
run_hash_change_process();
|
125 |
+
|
126 |
$action = $iwp_action;
|
127 |
$_wp_using_ext_object_cache = false;
|
128 |
@set_time_limit(600);
|
1858 |
}
|
1859 |
}
|
1860 |
|
1861 |
+
if (!function_exists('run_hash_change_process')) {
|
1862 |
+
function run_hash_change_process(){
|
1863 |
+
//code to check whether old hash files are already changed from wp_option table flag
|
1864 |
+
$is_replaced = get_option('iwp_client_replaced_old_hash_backup_files');
|
1865 |
+
if($is_replaced){
|
1866 |
+
return true;
|
1867 |
+
}
|
1868 |
+
|
1869 |
+
global $wpdb;
|
1870 |
+
$table_name = $wpdb->base_prefix . "iwp_backup_status";
|
1871 |
+
$rows = $wpdb->get_results("SELECT historyID,taskResults FROM ".$table_name, ARRAY_A);
|
1872 |
+
|
1873 |
+
$hash_changed_files = array();
|
1874 |
+
$hash_changed_urls = array();
|
1875 |
+
foreach($rows as $k => $v){
|
1876 |
+
$this_his_id = $v['historyID'];
|
1877 |
+
$this_task_result = unserialize($v['taskResults']);
|
1878 |
+
if(!empty($this_task_result) && !empty($this_task_result['task_results']) && !empty($this_task_result['task_results'][$this_his_id]) && !empty($this_task_result['task_results'][$this_his_id]['server']) && !empty($this_task_result['task_results'][$this_his_id]['server']) && !empty($this_task_result['task_results'][$this_his_id]['server']['file_path']) && !empty($this_task_result['task_results'][$this_his_id]['server']['file_url'])){
|
1879 |
+
$new_task_result_server = modify_task_result_server($this_task_result['task_results'][$this_his_id]['server']);
|
1880 |
+
if(is_array($new_task_result_server) && array_key_exists("error")){
|
1881 |
+
continue;
|
1882 |
+
}
|
1883 |
+
$this_task_result['task_results'][$this_his_id]['server'] = $new_task_result_server;
|
1884 |
+
}
|
1885 |
+
if(!empty($this_task_result) && !empty($this_task_result['server']) && !empty($new_task_result_server['hash'])){
|
1886 |
+
$new_task_result_server = modify_task_result_server($this_task_result['server'], $new_task_result_server['hash']);
|
1887 |
+
if(is_array($new_task_result_server) && array_key_exists("error")){
|
1888 |
+
return $new_task_result_server;
|
1889 |
+
break;
|
1890 |
+
}
|
1891 |
+
$this_task_result['server'] = $new_task_result_server;
|
1892 |
+
|
1893 |
+
}
|
1894 |
+
|
1895 |
+
//updating table with new fileNames
|
1896 |
+
$new_task_result = serialize($this_task_result);
|
1897 |
+
$update = $wpdb->update($wpdb->base_prefix.'iwp_backup_status',array('taskResults' => $new_task_result ),array( 'historyID' => $this_his_id),array('%s'),array('%d'));
|
1898 |
+
}
|
1899 |
+
update_option('iwp_client_replaced_old_hash_backup_files', true);
|
1900 |
+
return true;
|
1901 |
+
}
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
if (!function_exists('modify_task_result_server')) {
|
1905 |
+
function modify_task_result_server($task_result_server, $useThisHash=''){
|
1906 |
+
if(!is_array($task_result_server['file_path'])){
|
1907 |
+
$current_file = $task_result_server['file_path'];
|
1908 |
+
$task_result_server['file_path'] = array();
|
1909 |
+
$task_result_server['file_path'][0] = $current_file;
|
1910 |
+
}
|
1911 |
+
if(!is_array($task_result_server['file_url'])){
|
1912 |
+
$current_url = $task_result_server['file_url'];
|
1913 |
+
$task_result_server['file_url'] = array();
|
1914 |
+
$task_result_server['file_url'][0] = $current_url;
|
1915 |
+
}
|
1916 |
+
|
1917 |
+
$old_file_path = $task_result_server['file_path'];
|
1918 |
+
$old_file_url = $task_result_server['file_url'];
|
1919 |
+
|
1920 |
+
$new_file_path = replace_old_hash_with_new_hash($old_file_path, $useThisHash);
|
1921 |
+
foreach($new_file_path['files'] as $ke => $va){
|
1922 |
+
|
1923 |
+
//rename file
|
1924 |
+
$rename_result = rename_old_backup_file_name($va['old'], $va['new']);
|
1925 |
+
if(is_array($rename_result) && array_key_exists("error")){
|
1926 |
+
return $rename_result;
|
1927 |
+
break;
|
1928 |
+
}
|
1929 |
+
$task_result_server['file_path'][$ke] = $va['new'];
|
1930 |
+
}
|
1931 |
+
$task_result_server['hash'] = $new_file_path['hash'];
|
1932 |
+
|
1933 |
+
$new_file_url = replace_old_hash_with_new_hash($old_file_url, $new_file_path['hash']);
|
1934 |
+
foreach($new_file_url['files'] as $ke => $va){
|
1935 |
+
$task_result_server['file_url'][$ke] = $va['new'];
|
1936 |
+
}
|
1937 |
+
|
1938 |
+
//for single backup fix
|
1939 |
+
if(count($task_result_server['file_path']) === 1){
|
1940 |
+
$temp_val = $task_result_server['file_path'][0];
|
1941 |
+
unset($task_result_server['file_path']);
|
1942 |
+
$task_result_server['file_path'] = $temp_val;
|
1943 |
+
}
|
1944 |
+
if(count($task_result_server['file_url']) === 1){
|
1945 |
+
$temp_val = $task_result_server['file_url'][0];
|
1946 |
+
unset($task_result_server['file_url']);
|
1947 |
+
$task_result_server['file_url'] = $temp_val;
|
1948 |
+
}
|
1949 |
+
return $task_result_server;
|
1950 |
+
}
|
1951 |
+
}
|
1952 |
+
|
1953 |
+
if (!function_exists('replace_old_hash_with_new_hash')) {
|
1954 |
+
|
1955 |
+
function replace_old_hash_with_new_hash($backFileArr, $useThisHash='') {
|
1956 |
+
$newbackupfileArr = array();
|
1957 |
+
$newbackupfileArr['files'] = array();
|
1958 |
+
$newbackupfileArr['hash'] = '';
|
1959 |
+
|
1960 |
+
if(empty($useThisHash)){
|
1961 |
+
$newBackupHash = md5(microtime(true).uniqid('',true).substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, rand(20,60)));
|
1962 |
+
$useThisHash = $newBackupHash;
|
1963 |
+
}
|
1964 |
+
else{
|
1965 |
+
$newBackupHash = $useThisHash;
|
1966 |
+
}
|
1967 |
+
foreach($backFileArr as $k => $backFile){
|
1968 |
+
$iwpPart = '.zip';
|
1969 |
+
$tempBackupFile = $backFile;
|
1970 |
+
|
1971 |
+
$iwpPartIndex = strpos($backFile, '_iwp_part');
|
1972 |
+
if($iwpPartIndex !== false){
|
1973 |
+
$iwpPart = substr($backFile, $iwpPartIndex);
|
1974 |
+
$backFile = substr($backFile, 0, $iwpPartIndex);
|
1975 |
+
}
|
1976 |
+
|
1977 |
+
$backFileInArray = explode("_", $backFile);
|
1978 |
+
$hashIndex = count($backFileInArray) - 1;
|
1979 |
+
|
1980 |
+
$backupHashWithZip = $backFileInArray[$hashIndex];
|
1981 |
+
$backupHash = substr($backupHashWithZip, 0, 32);
|
1982 |
+
|
1983 |
+
$newBackupHashWithZip = $newBackupHash . $iwpPart;
|
1984 |
+
$newBackupFile = substr($backFile, 0, strpos($backFile, $backupHashWithZip));
|
1985 |
+
$newBackupFile = $newBackupFile . $newBackupHashWithZip;
|
1986 |
+
$newbackupfileArr['files'][$k]['new'] = $newBackupFile;
|
1987 |
+
$newbackupfileArr['files'][$k]['old'] = $tempBackupFile;
|
1988 |
+
}
|
1989 |
+
$newbackupfileArr['hash'] = $newBackupHash;
|
1990 |
+
return $newbackupfileArr;
|
1991 |
+
}
|
1992 |
+
|
1993 |
+
}
|
1994 |
+
|
1995 |
+
|
1996 |
+
if (!function_exists('rename_old_backup_file_name')) {
|
1997 |
+
|
1998 |
+
function rename_old_backup_file_name($oldName, $newName) {
|
1999 |
+
if (!@rename($oldName, $newName)) {
|
2000 |
+
return array('error' => 'Unable to rename old files', 'error_code' => 'unable_to_remane_old_backup_files');
|
2001 |
+
}
|
2002 |
+
return true;
|
2003 |
+
}
|
2004 |
+
}
|
2005 |
+
|
2006 |
if ( !get_option('iwp_client_public_key') && function_exists('add_action')){
|
2007 |
add_action('admin_enqueue_scripts', 'iwp_mmb_add_zero_clipboard_scripts');
|
2008 |
}
|
installer.class.php
CHANGED
@@ -657,62 +657,72 @@ class IWP_MMB_Installer extends IWP_MMB_Core
|
|
657 |
return array();
|
658 |
}
|
659 |
|
660 |
-
function get_upgradable_themes(
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
$upgrade_themes = array();
|
691 |
-
|
692 |
-
$current = $this->iwp_mmb_get_transient('update_themes');
|
693 |
-
if (!empty($current->response)) {
|
694 |
-
foreach ((array) $all_themes as $theme_template => $theme_data) {
|
695 |
-
if(isset($theme_data['Parent Theme']) && !empty($theme_data['Parent Theme']))
|
696 |
-
continue;
|
697 |
-
|
698 |
-
if(isset($theme_data['Name']) && in_array($theme_data['Name'], $filter))
|
699 |
-
continue;
|
700 |
-
|
701 |
-
foreach ($current->response as $current_themes => $theme) {
|
702 |
-
if ($theme_data['Template'] == $current_themes) {
|
703 |
-
if (strlen($theme_data['Name']) > 0 && strlen($theme_data['Version']) > 0) {
|
704 |
-
$current->response[$current_themes]['name'] = $theme_data['Name'];
|
705 |
-
$current->response[$current_themes]['old_version'] = $theme_data['Version'];
|
706 |
-
$current->response[$current_themes]['theme_tmp'] = $theme_data['Template'];
|
707 |
-
$upgrade_themes[] = $current->response[$current_themes];
|
708 |
}
|
709 |
}
|
710 |
}
|
711 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
712 |
}
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
return $upgrade_themes;
|
717 |
}
|
718 |
|
657 |
return array();
|
658 |
}
|
659 |
|
660 |
+
function get_upgradable_themes($filter = array()) {
|
661 |
+
if (function_exists('wp_get_themes')) {
|
662 |
+
$all_themes = wp_get_themes();
|
663 |
+
$upgrade_themes = array();
|
664 |
+
|
665 |
+
$current = $this->iwp_mmb_get_transient('update_themes');
|
666 |
+
if (!empty($current->response)) {
|
667 |
+
foreach ((array) $all_themes as $theme_template => $theme_data) {
|
668 |
+
|
669 |
+
if (isset($theme_data->{'Parent Theme'}) && !empty($theme_data->{'Parent Theme'})) {
|
670 |
+
continue;
|
671 |
+
}
|
672 |
+
|
673 |
+
if (isset($theme_data->Name) && in_array($theme_data->Name, $filter)) {
|
674 |
+
continue;
|
675 |
+
}
|
676 |
+
|
677 |
+
if (!$theme_data->parent()) {
|
678 |
+
foreach ($current->response as $current_themes => $theme) {
|
679 |
+
if ($theme_data->Template == $current_themes) {
|
680 |
+
if (strlen($theme_data->Name) > 0 && strlen($theme_data->Version) > 0) {
|
681 |
+
|
682 |
+
$current->response[$current_themes]['name'] = $theme_data->Name;
|
683 |
+
$current->response[$current_themes]['old_version'] = $theme_data->Version;
|
684 |
+
$current->response[$current_themes]['theme_tmp'] = $theme_data->Template;
|
685 |
+
$upgrade_themes[] = $current->response[$current_themes];
|
686 |
+
|
687 |
+
}
|
688 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
689 |
}
|
690 |
}
|
691 |
}
|
692 |
}
|
693 |
+
} else {
|
694 |
+
$all_themes = get_themes();
|
695 |
+
|
696 |
+
$upgrade_themes = array();
|
697 |
+
|
698 |
+
$current = $this->iwp_mmb_get_transient('update_themes');
|
699 |
+
|
700 |
+
if (!empty($current->response)) {
|
701 |
+
foreach ((array) $all_themes as $theme_template => $theme_data) {
|
702 |
+
if (isset($theme_data['Parent Theme']) && !empty($theme_data['Parent Theme'])) {
|
703 |
+
continue;
|
704 |
+
}
|
705 |
+
|
706 |
+
if (isset($theme_data['Name']) && in_array($theme_data['Name'], $filter)) {
|
707 |
+
continue;
|
708 |
+
}
|
709 |
+
if (!$theme_data->parent()) {
|
710 |
+
foreach ($current->response as $current_themes => $theme) {
|
711 |
+
if ($theme_data['Template'] == $current_themes) {
|
712 |
+
if (strlen($theme_data['Name']) > 0 && strlen($theme_data['Version']) > 0) {
|
713 |
+
$current->response[$current_themes]['name'] = $theme_data['Name'];
|
714 |
+
$current->response[$current_themes]['old_version'] = $theme_data['Version'];
|
715 |
+
$current->response[$current_themes]['theme_tmp'] = $theme_data['Template'];
|
716 |
+
$upgrade_themes[] = $current->response[$current_themes];
|
717 |
+
}
|
718 |
+
}
|
719 |
+
}
|
720 |
+
}
|
721 |
+
}
|
722 |
+
}
|
723 |
+
|
724 |
}
|
725 |
+
|
|
|
|
|
726 |
return $upgrade_themes;
|
727 |
}
|
728 |
|
plugins/cleanup/cleanup.php
CHANGED
@@ -119,6 +119,8 @@ function iwp_mmb_handle_overhead($clear = false)
|
|
119 |
$tables = $wpdb->get_results($query, ARRAY_A);
|
120 |
$total_gain = 0;
|
121 |
$table_string = '';
|
|
|
|
|
122 |
foreach ($tables as $table) {
|
123 |
if (in_array($table['Engine'], array(
|
124 |
'MyISAM',
|
@@ -146,7 +148,7 @@ function iwp_mmb_handle_overhead($clear = false)
|
|
146 |
//$total_gain += $table['Data_free'] > 100*1024*1024 ? $table['Data_free'] / 1024 : 0;
|
147 |
}
|
148 |
}
|
149 |
-
|
150 |
if ($clear) {
|
151 |
$table_string = substr($table_string, 0, strlen($table_string) - 1); //remove last ,
|
152 |
|
119 |
$tables = $wpdb->get_results($query, ARRAY_A);
|
120 |
$total_gain = 0;
|
121 |
$table_string = '';
|
122 |
+
if (!empty($table) && is_array($table)) {
|
123 |
+
|
124 |
foreach ($tables as $table) {
|
125 |
if (in_array($table['Engine'], array(
|
126 |
'MyISAM',
|
148 |
//$total_gain += $table['Data_free'] > 100*1024*1024 ? $table['Data_free'] / 1024 : 0;
|
149 |
}
|
150 |
}
|
151 |
+
}
|
152 |
if ($clear) {
|
153 |
$table_string = substr($table_string, 0, strlen($table_string) - 1); //remove last ,
|
154 |
|
readme.txt
CHANGED
@@ -48,6 +48,11 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
|
|
|
|
|
|
|
|
|
|
51 |
= 1.3.14 =
|
52 |
* Fix: Bug fix.
|
53 |
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 1.3.15 =
|
52 |
+
* Improvement: Security improvement.
|
53 |
+
* Fix: Parent theme update showing as child theme update.
|
54 |
+
* Fix: Bug fixes.
|
55 |
+
|
56 |
= 1.3.14 =
|
57 |
* Fix: Bug fix.
|
58 |
|