Version Description
- Two factor authentication
- Run code tool
- Quick access to security check and broken link tools
- More accurate pageview statistics
- You can now opt to completely hide the Worker plugin from the list of plugins (part of Worker branding features)
- We improved the backups for folks running Windows servers
- Amazon S3 directory name now "ManageWP" by default
- Read more on ManageWP.com http://managewp.com/update-two-factor-authentication-run-code-tool-sucuri-security-check-more-accurate-pageview-statistics
Download this release
Release Info
| Developer | freediver |
| Plugin | |
| Version | 3.9.14 |
| Comparing to | |
| See all releases | |
Code changes from version 3.9.13 to 3.9.14
- backup.class.php +61 -16
- core.class.php +1 -1
- init.php +4 -2
- plugins/cleanup/cleanup.php +4 -10
- readme.txt +10 -0
- version +1 -1
backup.class.php
CHANGED
|
@@ -395,6 +395,7 @@ class MMB_Backup extends MMB_Core
|
|
| 395 |
if (is_array($ftp_result) && isset($ftp_result['error'])) {
|
| 396 |
return $ftp_result;
|
| 397 |
}
|
|
|
|
| 398 |
$this->update_status($task_name, $this->statuses['ftp'], true);
|
| 399 |
}
|
| 400 |
|
|
@@ -408,6 +409,7 @@ class MMB_Backup extends MMB_Core
|
|
| 408 |
if (is_array($amazons3_result) && isset($amazons3_result['error'])) {
|
| 409 |
return $amazons3_result;
|
| 410 |
}
|
|
|
|
| 411 |
$this->update_status($task_name, $this->statuses['s3'], true);
|
| 412 |
}
|
| 413 |
|
|
@@ -422,7 +424,7 @@ class MMB_Backup extends MMB_Core
|
|
| 422 |
if (is_array($dropbox_result) && isset($dropbox_result['error'])) {
|
| 423 |
return $dropbox_result;
|
| 424 |
}
|
| 425 |
-
|
| 426 |
$this->update_status($task_name, $this->statuses['dropbox'], true);
|
| 427 |
}
|
| 428 |
|
|
@@ -658,6 +660,9 @@ class MMB_Backup extends MMB_Core
|
|
| 658 |
|
| 659 |
}
|
| 660 |
|
|
|
|
|
|
|
|
|
|
| 661 |
$this->update_status($task_name, $this->statuses['files_zip'], true);
|
| 662 |
return true;
|
| 663 |
}
|
|
@@ -714,9 +719,10 @@ class MMB_Backup extends MMB_Core
|
|
| 714 |
|
| 715 |
$count = $wpdb->get_var("SELECT count(*) FROM $table[0]");
|
| 716 |
if ($count > 100)
|
| 717 |
-
$count = ceil($count / 100)
|
| 718 |
-
else
|
| 719 |
-
$count = 1;
|
|
|
|
| 720 |
for ($i = 0; $i < $count; $i++) {
|
| 721 |
$low_limit = $i * 100;
|
| 722 |
$qry = "SELECT * FROM $table[0] LIMIT $low_limit, 100";
|
|
@@ -827,13 +833,18 @@ class MMB_Backup extends MMB_Core
|
|
| 827 |
$home = rtrim(get_option('home'), "/");
|
| 828 |
$site_url = get_option('site_url');
|
| 829 |
|
|
|
|
| 830 |
if (trim($clone_from_url) || trim($mwp_clone)) {
|
| 831 |
-
|
| 832 |
$clone_options['_worker_nossl_key'] = get_option('_worker_nossl_key');
|
| 833 |
$clone_options['_worker_public_key'] = get_option('_worker_public_key');
|
| 834 |
$clone_options['_action_message_id'] = get_option('_action_message_id');
|
|
|
|
| 835 |
}
|
| 836 |
|
|
|
|
|
|
|
|
|
|
| 837 |
|
| 838 |
}
|
| 839 |
|
|
@@ -862,12 +873,16 @@ class MMB_Backup extends MMB_Core
|
|
| 862 |
);
|
| 863 |
}
|
| 864 |
|
| 865 |
-
$db_result = $this->restore_db();
|
| 866 |
|
| 867 |
-
|
| 868 |
return array(
|
| 869 |
'error' => 'Error restoring database.'
|
| 870 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 871 |
}
|
| 872 |
|
| 873 |
} else {
|
|
@@ -933,11 +948,12 @@ class MMB_Backup extends MMB_Core
|
|
| 933 |
$query = "UPDATE " . $new_table_prefix . "users SET user_email='$admin_email', user_login = '$new_user', user_pass = '$new_password' WHERE user_login = '$temp_user->user_login'";
|
| 934 |
$wpdb->query($wpdb->prepare($query));
|
| 935 |
}
|
|
|
|
| 936 |
}
|
| 937 |
}
|
| 938 |
}
|
| 939 |
|
| 940 |
-
if (is_array($clone_options)) {
|
| 941 |
foreach ($clone_options as $key => $option) {
|
| 942 |
if (!empty($key)) {
|
| 943 |
$query = "SELECT option_value FROM " . $new_table_prefix . "options WHERE option_name = '$key'";
|
|
@@ -964,6 +980,11 @@ class MMB_Backup extends MMB_Core
|
|
| 964 |
$file_path = ABSPATH . 'mwp_db';
|
| 965 |
$file_name = glob($file_path . '/*.sql');
|
| 966 |
$file_name = $file_name[0];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 967 |
$brace = (substr(PHP_OS, 0, 3) == 'WIN') ? '"' : '';
|
| 968 |
$command = $brace . $paths['mysql'] . $brace . ' --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" ' . DB_NAME . ' < ' . $brace . $file_name . $brace;
|
| 969 |
|
|
@@ -1262,9 +1283,10 @@ class MMB_Backup extends MMB_Core
|
|
| 1262 |
{
|
| 1263 |
extract($args);
|
| 1264 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder, $ftp_site_folder
|
|
|
|
| 1265 |
if ($ftp_ssl) {
|
| 1266 |
if (function_exists('ftp_ssl_connect')) {
|
| 1267 |
-
$conn_id = ftp_ssl_connect($ftp_hostname);
|
| 1268 |
} else {
|
| 1269 |
return array(
|
| 1270 |
'error' => 'Your server doesn\'t support SFTP',
|
|
@@ -1273,7 +1295,7 @@ class MMB_Backup extends MMB_Core
|
|
| 1273 |
}
|
| 1274 |
} else {
|
| 1275 |
if (function_exists('ftp_connect')) {
|
| 1276 |
-
$conn_id = ftp_connect($ftp_hostname);
|
| 1277 |
if ($conn_id === false) {
|
| 1278 |
return array(
|
| 1279 |
'error' => 'Failed to connect to ' . $ftp_hostname,
|
|
@@ -1295,6 +1317,10 @@ class MMB_Backup extends MMB_Core
|
|
| 1295 |
);
|
| 1296 |
}
|
| 1297 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1298 |
@ftp_mkdir($conn_id, $ftp_remote_folder);
|
| 1299 |
if ($ftp_site_folder) {
|
| 1300 |
$ftp_remote_folder .= '/' . $this->site_name;
|
|
@@ -1322,10 +1348,11 @@ class MMB_Backup extends MMB_Core
|
|
| 1322 |
{
|
| 1323 |
extract($args);
|
| 1324 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder
|
|
|
|
| 1325 |
if ($ftp_ssl && function_exists('ftp_ssl_connect')) {
|
| 1326 |
-
$conn_id = ftp_ssl_connect($ftp_hostname);
|
| 1327 |
} else if (function_exists('ftp_connect')) {
|
| 1328 |
-
$conn_id = ftp_connect($ftp_hostname);
|
| 1329 |
}
|
| 1330 |
|
| 1331 |
if ($conn_id) {
|
|
@@ -1333,6 +1360,10 @@ class MMB_Backup extends MMB_Core
|
|
| 1333 |
if ($ftp_site_folder)
|
| 1334 |
$ftp_remote_folder .= '/' . $this->site_name;
|
| 1335 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1336 |
$delete = ftp_delete($conn_id, $ftp_remote_folder . '/' . $backup_file);
|
| 1337 |
|
| 1338 |
ftp_close($conn_id);
|
|
@@ -1344,16 +1375,16 @@ class MMB_Backup extends MMB_Core
|
|
| 1344 |
{
|
| 1345 |
extract($args);
|
| 1346 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder
|
|
|
|
| 1347 |
if ($ftp_ssl && function_exists('ftp_ssl_connect')) {
|
| 1348 |
-
$conn_id = ftp_ssl_connect($ftp_hostname);
|
| 1349 |
|
| 1350 |
} else if (function_exists('ftp_connect')) {
|
| 1351 |
-
$conn_id = ftp_connect($ftp_hostname);
|
| 1352 |
if ($conn_id === false) {
|
| 1353 |
return false;
|
| 1354 |
}
|
| 1355 |
-
}
|
| 1356 |
-
}
|
| 1357 |
$login = @ftp_login($conn_id, $ftp_username, $ftp_password);
|
| 1358 |
if ($login === false) {
|
| 1359 |
return false;
|
|
@@ -1363,6 +1394,10 @@ class MMB_Backup extends MMB_Core
|
|
| 1363 |
if ($ftp_site_folder)
|
| 1364 |
$ftp_remote_folder .= '/' . $this->site_name;
|
| 1365 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1366 |
$temp = ABSPATH . 'mwp_temp_backup.zip';
|
| 1367 |
$get = ftp_get($conn_id, $temp, $ftp_remote_folder . '/' . $backup_file, FTP_BINARY);
|
| 1368 |
if ($get === false) {
|
|
@@ -1867,6 +1902,16 @@ class MMB_Backup extends MMB_Core
|
|
| 1867 |
update_option('mwp_backup_tasks', $tasks);
|
| 1868 |
}
|
| 1869 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1870 |
}
|
| 1871 |
|
| 1872 |
?>
|
| 395 |
if (is_array($ftp_result) && isset($ftp_result['error'])) {
|
| 396 |
return $ftp_result;
|
| 397 |
}
|
| 398 |
+
$this->wpdb_reconnect();
|
| 399 |
$this->update_status($task_name, $this->statuses['ftp'], true);
|
| 400 |
}
|
| 401 |
|
| 409 |
if (is_array($amazons3_result) && isset($amazons3_result['error'])) {
|
| 410 |
return $amazons3_result;
|
| 411 |
}
|
| 412 |
+
$this->wpdb_reconnect();
|
| 413 |
$this->update_status($task_name, $this->statuses['s3'], true);
|
| 414 |
}
|
| 415 |
|
| 424 |
if (is_array($dropbox_result) && isset($dropbox_result['error'])) {
|
| 425 |
return $dropbox_result;
|
| 426 |
}
|
| 427 |
+
$this->wpdb_reconnect();
|
| 428 |
$this->update_status($task_name, $this->statuses['dropbox'], true);
|
| 429 |
}
|
| 430 |
|
| 660 |
|
| 661 |
}
|
| 662 |
|
| 663 |
+
//Reconnect
|
| 664 |
+
$this->wpdb_reconnect();
|
| 665 |
+
|
| 666 |
$this->update_status($task_name, $this->statuses['files_zip'], true);
|
| 667 |
return true;
|
| 668 |
}
|
| 719 |
|
| 720 |
$count = $wpdb->get_var("SELECT count(*) FROM $table[0]");
|
| 721 |
if ($count > 100)
|
| 722 |
+
$count = ceil($count / 100);
|
| 723 |
+
else if ($count > 0)
|
| 724 |
+
$count = 1;
|
| 725 |
+
|
| 726 |
for ($i = 0; $i < $count; $i++) {
|
| 727 |
$low_limit = $i * 100;
|
| 728 |
$qry = "SELECT * FROM $table[0] LIMIT $low_limit, 100";
|
| 833 |
$home = rtrim(get_option('home'), "/");
|
| 834 |
$site_url = get_option('site_url');
|
| 835 |
|
| 836 |
+
$clone_options = array();
|
| 837 |
if (trim($clone_from_url) || trim($mwp_clone)) {
|
| 838 |
+
|
| 839 |
$clone_options['_worker_nossl_key'] = get_option('_worker_nossl_key');
|
| 840 |
$clone_options['_worker_public_key'] = get_option('_worker_public_key');
|
| 841 |
$clone_options['_action_message_id'] = get_option('_action_message_id');
|
| 842 |
+
|
| 843 |
}
|
| 844 |
|
| 845 |
+
$clone_options['mwp_backup_tasks'] = serialize(get_option('mwp_backup_tasks'));
|
| 846 |
+
$clone_options['mwp_notifications'] = serialize(get_option('mwp_notifications'));
|
| 847 |
+
|
| 848 |
|
| 849 |
}
|
| 850 |
|
| 873 |
);
|
| 874 |
}
|
| 875 |
|
| 876 |
+
$db_result = $this->restore_db();
|
| 877 |
|
| 878 |
+
if (!$db_result) {
|
| 879 |
return array(
|
| 880 |
'error' => 'Error restoring database.'
|
| 881 |
);
|
| 882 |
+
} else if(is_array($db_result) && isset($db_result['error'])){
|
| 883 |
+
return array(
|
| 884 |
+
'error' => $db_result['error']
|
| 885 |
+
);
|
| 886 |
}
|
| 887 |
|
| 888 |
} else {
|
| 948 |
$query = "UPDATE " . $new_table_prefix . "users SET user_email='$admin_email', user_login = '$new_user', user_pass = '$new_password' WHERE user_login = '$temp_user->user_login'";
|
| 949 |
$wpdb->query($wpdb->prepare($query));
|
| 950 |
}
|
| 951 |
+
|
| 952 |
}
|
| 953 |
}
|
| 954 |
}
|
| 955 |
|
| 956 |
+
if (is_array($clone_options) && !empty($clone_options)) {
|
| 957 |
foreach ($clone_options as $key => $option) {
|
| 958 |
if (!empty($key)) {
|
| 959 |
$query = "SELECT option_value FROM " . $new_table_prefix . "options WHERE option_name = '$key'";
|
| 980 |
$file_path = ABSPATH . 'mwp_db';
|
| 981 |
$file_name = glob($file_path . '/*.sql');
|
| 982 |
$file_name = $file_name[0];
|
| 983 |
+
|
| 984 |
+
if(!$file_name){
|
| 985 |
+
return array('error' => 'Cannot access database file.');
|
| 986 |
+
}
|
| 987 |
+
|
| 988 |
$brace = (substr(PHP_OS, 0, 3) == 'WIN') ? '"' : '';
|
| 989 |
$command = $brace . $paths['mysql'] . $brace . ' --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" ' . DB_NAME . ' < ' . $brace . $file_name . $brace;
|
| 990 |
|
| 1283 |
{
|
| 1284 |
extract($args);
|
| 1285 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder, $ftp_site_folder
|
| 1286 |
+
$port = $ftp_port ? $ftp_port : 21; //default port is 21
|
| 1287 |
if ($ftp_ssl) {
|
| 1288 |
if (function_exists('ftp_ssl_connect')) {
|
| 1289 |
+
$conn_id = ftp_ssl_connect($ftp_hostname,$port);
|
| 1290 |
} else {
|
| 1291 |
return array(
|
| 1292 |
'error' => 'Your server doesn\'t support SFTP',
|
| 1295 |
}
|
| 1296 |
} else {
|
| 1297 |
if (function_exists('ftp_connect')) {
|
| 1298 |
+
$conn_id = ftp_connect($ftp_hostname,$port);
|
| 1299 |
if ($conn_id === false) {
|
| 1300 |
return array(
|
| 1301 |
'error' => 'Failed to connect to ' . $ftp_hostname,
|
| 1317 |
);
|
| 1318 |
}
|
| 1319 |
|
| 1320 |
+
if($ftp_passive){
|
| 1321 |
+
@ftp_pasv($conn_id,true);
|
| 1322 |
+
}
|
| 1323 |
+
|
| 1324 |
@ftp_mkdir($conn_id, $ftp_remote_folder);
|
| 1325 |
if ($ftp_site_folder) {
|
| 1326 |
$ftp_remote_folder .= '/' . $this->site_name;
|
| 1348 |
{
|
| 1349 |
extract($args);
|
| 1350 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder
|
| 1351 |
+
$port = $ftp_port ? $ftp_port : 21; //default port is 21
|
| 1352 |
if ($ftp_ssl && function_exists('ftp_ssl_connect')) {
|
| 1353 |
+
$conn_id = ftp_ssl_connect($ftp_hostname,$port);
|
| 1354 |
} else if (function_exists('ftp_connect')) {
|
| 1355 |
+
$conn_id = ftp_connect($ftp_hostname,$port);
|
| 1356 |
}
|
| 1357 |
|
| 1358 |
if ($conn_id) {
|
| 1360 |
if ($ftp_site_folder)
|
| 1361 |
$ftp_remote_folder .= '/' . $this->site_name;
|
| 1362 |
|
| 1363 |
+
if($ftp_passive){
|
| 1364 |
+
@ftp_pasv($conn_id,true);
|
| 1365 |
+
}
|
| 1366 |
+
|
| 1367 |
$delete = ftp_delete($conn_id, $ftp_remote_folder . '/' . $backup_file);
|
| 1368 |
|
| 1369 |
ftp_close($conn_id);
|
| 1375 |
{
|
| 1376 |
extract($args);
|
| 1377 |
//Args: $ftp_username, $ftp_password, $ftp_hostname, $backup_file, $ftp_remote_folder
|
| 1378 |
+
$port = $ftp_port ? $ftp_port : 21; //default port is 21
|
| 1379 |
if ($ftp_ssl && function_exists('ftp_ssl_connect')) {
|
| 1380 |
+
$conn_id = ftp_ssl_connect($ftp_hostname,$port);
|
| 1381 |
|
| 1382 |
} else if (function_exists('ftp_connect')) {
|
| 1383 |
+
$conn_id = ftp_connect($ftp_hostname,$port);
|
| 1384 |
if ($conn_id === false) {
|
| 1385 |
return false;
|
| 1386 |
}
|
| 1387 |
+
}
|
|
|
|
| 1388 |
$login = @ftp_login($conn_id, $ftp_username, $ftp_password);
|
| 1389 |
if ($login === false) {
|
| 1390 |
return false;
|
| 1394 |
if ($ftp_site_folder)
|
| 1395 |
$ftp_remote_folder .= '/' . $this->site_name;
|
| 1396 |
|
| 1397 |
+
if($ftp_passive){
|
| 1398 |
+
@ftp_pasv($conn_id,true);
|
| 1399 |
+
}
|
| 1400 |
+
|
| 1401 |
$temp = ABSPATH . 'mwp_temp_backup.zip';
|
| 1402 |
$get = ftp_get($conn_id, $temp, $ftp_remote_folder . '/' . $backup_file, FTP_BINARY);
|
| 1403 |
if ($get === false) {
|
| 1902 |
update_option('mwp_backup_tasks', $tasks);
|
| 1903 |
}
|
| 1904 |
|
| 1905 |
+
function wpdb_reconnect(){
|
| 1906 |
+
global $wpdb;
|
| 1907 |
+
//Reconnect to avoid timeout problem after ZIP files
|
| 1908 |
+
if(class_exists('wpdb') && function_exists('wp_set_wpdb_vars')){
|
| 1909 |
+
@mysql_close($wpdb->dbh);
|
| 1910 |
+
$wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
|
| 1911 |
+
wp_set_wpdb_vars();
|
| 1912 |
+
}
|
| 1913 |
+
}
|
| 1914 |
+
|
| 1915 |
}
|
| 1916 |
|
| 1917 |
?>
|
core.class.php
CHANGED
|
@@ -131,7 +131,7 @@ class MMB_Core extends MMB_Helper
|
|
| 131 |
add_action('setup_theme', 'mmb_parse_request');
|
| 132 |
add_action('set_auth_cookie', array( &$this, 'mmb_set_auth_cookie'));
|
| 133 |
add_action('set_logged_in_cookie', array( &$this, 'mmb_set_logged_in_cookie'));
|
| 134 |
-
|
| 135 |
}
|
| 136 |
|
| 137 |
function mmb_remote_action(){
|
| 131 |
add_action('setup_theme', 'mmb_parse_request');
|
| 132 |
add_action('set_auth_cookie', array( &$this, 'mmb_set_auth_cookie'));
|
| 133 |
add_action('set_logged_in_cookie', array( &$this, 'mmb_set_logged_in_cookie'));
|
| 134 |
+
|
| 135 |
}
|
| 136 |
|
| 137 |
function mmb_remote_action(){
|
init.php
CHANGED
|
@@ -4,7 +4,7 @@ Plugin Name: ManageWP - Worker
|
|
| 4 |
Plugin URI: http://managewp.com/
|
| 5 |
Description: Manage all your blogs from one dashboard. Visit <a href="http://managewp.com">ManageWP.com</a> to sign up.
|
| 6 |
Author: Prelovac Media
|
| 7 |
-
Version: 3.9.
|
| 8 |
Author URI: http://www.prelovac.com
|
| 9 |
*/
|
| 10 |
|
|
@@ -20,7 +20,7 @@ Author URI: http://www.prelovac.com
|
|
| 20 |
**************************************************************/
|
| 21 |
|
| 22 |
if(!defined('MMB_WORKER_VERSION'))
|
| 23 |
-
define('MMB_WORKER_VERSION', '3.9.
|
| 24 |
|
| 25 |
if ( !defined('MMB_XFRAME_COOKIE')){
|
| 26 |
$siteurl = function_exists('get_site_option') ? get_site_option( 'siteurl' ) : get_option('siteurl');
|
|
@@ -123,6 +123,8 @@ if( !function_exists ( 'mmb_parse_request' )) {
|
|
| 123 |
} else {
|
| 124 |
mmb_response($auth['error'], false);
|
| 125 |
}
|
|
|
|
|
|
|
| 126 |
}
|
| 127 |
ob_end_clean();
|
| 128 |
}
|
| 4 |
Plugin URI: http://managewp.com/
|
| 5 |
Description: Manage all your blogs from one dashboard. Visit <a href="http://managewp.com">ManageWP.com</a> to sign up.
|
| 6 |
Author: Prelovac Media
|
| 7 |
+
Version: 3.9.14
|
| 8 |
Author URI: http://www.prelovac.com
|
| 9 |
*/
|
| 10 |
|
| 20 |
**************************************************************/
|
| 21 |
|
| 22 |
if(!defined('MMB_WORKER_VERSION'))
|
| 23 |
+
define('MMB_WORKER_VERSION', '3.9.14');
|
| 24 |
|
| 25 |
if ( !defined('MMB_XFRAME_COOKIE')){
|
| 26 |
$siteurl = function_exists('get_site_option') ? get_site_option( 'siteurl' ) : get_option('siteurl');
|
| 123 |
} else {
|
| 124 |
mmb_response($auth['error'], false);
|
| 125 |
}
|
| 126 |
+
} else {
|
| 127 |
+
MMB_Stats::set_hit_count();
|
| 128 |
}
|
| 129 |
ob_end_clean();
|
| 130 |
}
|
plugins/cleanup/cleanup.php
CHANGED
|
@@ -85,16 +85,10 @@ function mmb_select_all_revisions()
|
|
| 85 |
function mmb_delete_all_revisions()
|
| 86 |
{
|
| 87 |
global $wpdb;
|
| 88 |
-
$
|
| 89 |
-
$
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
$revisions = $wpdb->query($wpdb->prepare($sql));
|
| 93 |
-
$total += $revisions;
|
| 94 |
-
if ($revisions)
|
| 95 |
-
usleep(100000);
|
| 96 |
-
}
|
| 97 |
-
return $total;
|
| 98 |
}
|
| 99 |
|
| 100 |
|
| 85 |
function mmb_delete_all_revisions()
|
| 86 |
{
|
| 87 |
global $wpdb;
|
| 88 |
+
$sql = "DELETE a,b,c FROM $wpdb->posts a LEFT JOIN $wpdb->term_relationships b ON (a.ID = b.object_id) LEFT JOIN $wpdb->postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'";
|
| 89 |
+
$revisions = $wpdb->query($wpdb->prepare($sql));
|
| 90 |
+
|
| 91 |
+
return $revisions;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
}
|
| 93 |
|
| 94 |
|
readme.txt
CHANGED
|
@@ -32,6 +32,16 @@ Check out [ManageWP.com](http://managewp.com/ "Manage Multiple Blogs").
|
|
| 32 |
|
| 33 |
== Changelog ==
|
| 34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
= 3.9.13 =
|
| 36 |
* Added bucket location for Amazon S3 backups
|
| 37 |
* Better backup feature for larger sites
|
| 32 |
|
| 33 |
== Changelog ==
|
| 34 |
|
| 35 |
+
= 3.9.14 =
|
| 36 |
+
* Two factor authentication
|
| 37 |
+
* Run code tool
|
| 38 |
+
* Quick access to security check and broken link tools
|
| 39 |
+
* More accurate pageview statistics
|
| 40 |
+
* You can now opt to completely hide the Worker plugin from the list of plugins (part of Worker branding features)
|
| 41 |
+
* We improved the backups for folks running Windows servers
|
| 42 |
+
* Amazon S3 directory name now "ManageWP" by default
|
| 43 |
+
* Read more on ManageWP.com http://managewp.com/update-two-factor-authentication-run-code-tool-sucuri-security-check-more-accurate-pageview-statistics
|
| 44 |
+
|
| 45 |
= 3.9.13 =
|
| 46 |
* Added bucket location for Amazon S3 backups
|
| 47 |
* Better backup feature for larger sites
|
version
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
3.9.
|
| 1 |
+
3.9.14
|
