Version Description
- Support for sub-users (limited access users)
- Bulk add user
- 'Select all' feature for bulk posting
- Featured image support for bulk posting
- Reload button on the dashboard (on the top of the Right now widget) will now refresh information about available updates
- Fixed a problem with the import tool
- Fixed a problem when remote dashboard would not work for some servers
Download this release
Release Info
| Developer | freediver |
| Plugin | |
| Version | 3.9.1 |
| Comparing to | |
| See all releases | |
Code changes from version 3.9.0 to 3.9.1
- backup.class.php +25 -16
- core.class.php +20 -4
- helper.class.php +52 -11
- index.html +0 -0
- init.php +26 -8
- link.class.php +2 -2
- plugins/cleanup/cleanup.php +29 -4
- readme.txt +12 -2
- stats.class.php +13 -2
- user.class.php +53 -0
- version +1 -1
backup.class.php
CHANGED
|
@@ -19,6 +19,7 @@ class MMB_Backup extends MMB_Core
|
|
| 19 |
|
| 20 |
function backup($args)
|
| 21 |
{
|
|
|
|
| 22 |
@ini_set('memory_limit', '300M');
|
| 23 |
@set_time_limit(300);
|
| 24 |
//type like manual, weekly, daily
|
|
@@ -44,10 +45,10 @@ class MMB_Backup extends MMB_Core
|
|
| 44 |
if (trim($what) == 'full') {
|
| 45 |
//take wp-content backup
|
| 46 |
$content_backup = $this->backup_wpcontent($type);
|
| 47 |
-
if (
|
| 48 |
@unlink($content_backup['path']);
|
| 49 |
return array(
|
| 50 |
-
'error' => '
|
| 51 |
);
|
| 52 |
}
|
| 53 |
}
|
|
@@ -70,9 +71,8 @@ class MMB_Backup extends MMB_Core
|
|
| 70 |
|
| 71 |
// Get previous backup in tmp
|
| 72 |
$worker_options = get_option('mmb-worker');
|
| 73 |
-
|
| 74 |
$tmp_file = WP_CONTENT_DIR . '/' . basename($worker_options['backups'][$type]['path']);
|
| 75 |
-
|
| 76 |
if (rename($worker_options['backups'][$type]['path'], $tmp_file)) {
|
| 77 |
@unlink($worker_options['backups'][$type]['path']);
|
| 78 |
}
|
|
@@ -147,7 +147,6 @@ class MMB_Backup extends MMB_Core
|
|
| 147 |
$worker_options['backups'][$type]['url'] = $backup_url;
|
| 148 |
update_option('mmb-worker', $worker_options);
|
| 149 |
|
| 150 |
-
|
| 151 |
//Everything went fine, return backup url to master
|
| 152 |
return $worker_options['backups'][$type]['url'];
|
| 153 |
}
|
|
@@ -168,25 +167,23 @@ class MMB_Backup extends MMB_Core
|
|
| 168 |
$result = $this->mmb_exec($command);
|
| 169 |
ob_get_clean();
|
| 170 |
$file_url = WP_CONTENT_URL . $file;
|
| 171 |
-
|
| 172 |
-
if($result)
|
| 173 |
-
{
|
| 174 |
return array(
|
| 175 |
'path' => $file_path,
|
| 176 |
'url' => $file_url
|
| 177 |
);
|
| 178 |
}
|
| 179 |
-
else
|
| 180 |
-
|
| 181 |
-
return false;
|
| 182 |
}
|
| 183 |
|
| 184 |
|
| 185 |
} else {
|
| 186 |
require_once ABSPATH . '/wp-admin/includes/class-pclzip.php';
|
| 187 |
$archive = new PclZip($file_path);
|
| 188 |
-
$result = $archive->add(ABSPATH, PCLZIP_OPT_REMOVE_PATH, ABSPATH);
|
| 189 |
-
|
|
|
|
| 190 |
if ($result) {
|
| 191 |
$file_url = WP_CONTENT_URL . $file;
|
| 192 |
return array(
|
|
@@ -194,8 +191,15 @@ class MMB_Backup extends MMB_Core
|
|
| 194 |
'url' => $file_url
|
| 195 |
);
|
| 196 |
}
|
|
|
|
| 197 |
@unlink($file_path);
|
| 198 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
}
|
| 200 |
}
|
| 201 |
|
|
@@ -278,7 +282,7 @@ class MMB_Backup extends MMB_Core
|
|
| 278 |
$j = 1;
|
| 279 |
foreach ($row as $value) {
|
| 280 |
$value = addslashes($value);
|
| 281 |
-
$value =
|
| 282 |
$num_values == $j ? $dump_data .= "'" . $value . "'" : $dump_data .= "'" . $value . "', ";
|
| 283 |
$j++;
|
| 284 |
unset($value);
|
|
@@ -626,6 +630,7 @@ class MMB_Backup extends MMB_Core
|
|
| 626 |
$pass = false;
|
| 627 |
}
|
| 628 |
|
|
|
|
| 629 |
if(is_writable(WP_CONTENT_DIR))
|
| 630 |
{
|
| 631 |
$reqs['Backup Folder']['status'] = "writable";
|
|
@@ -637,6 +642,11 @@ class MMB_Backup extends MMB_Core
|
|
| 637 |
$reqs['Backup Folder']['pass'] = false;
|
| 638 |
}
|
| 639 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 640 |
if($func = $this->check_sys())
|
| 641 |
{
|
| 642 |
$reqs['Execute Function']['status'] =$func;
|
|
@@ -685,7 +695,6 @@ class MMB_Backup extends MMB_Core
|
|
| 685 |
}
|
| 686 |
|
| 687 |
|
| 688 |
-
|
| 689 |
return $reqs;
|
| 690 |
}
|
| 691 |
|
| 19 |
|
| 20 |
function backup($args)
|
| 21 |
{
|
| 22 |
+
|
| 23 |
@ini_set('memory_limit', '300M');
|
| 24 |
@set_time_limit(300);
|
| 25 |
//type like manual, weekly, daily
|
| 45 |
if (trim($what) == 'full') {
|
| 46 |
//take wp-content backup
|
| 47 |
$content_backup = $this->backup_wpcontent($type);
|
| 48 |
+
if (array_key_exists('error',$content_backup)) {
|
| 49 |
@unlink($content_backup['path']);
|
| 50 |
return array(
|
| 51 |
+
'error' => $content_backup['error']
|
| 52 |
);
|
| 53 |
}
|
| 54 |
}
|
| 71 |
|
| 72 |
// Get previous backup in tmp
|
| 73 |
$worker_options = get_option('mmb-worker');
|
|
|
|
| 74 |
$tmp_file = WP_CONTENT_DIR . '/' . basename($worker_options['backups'][$type]['path']);
|
| 75 |
+
|
| 76 |
if (rename($worker_options['backups'][$type]['path'], $tmp_file)) {
|
| 77 |
@unlink($worker_options['backups'][$type]['path']);
|
| 78 |
}
|
| 147 |
$worker_options['backups'][$type]['url'] = $backup_url;
|
| 148 |
update_option('mmb-worker', $worker_options);
|
| 149 |
|
|
|
|
| 150 |
//Everything went fine, return backup url to master
|
| 151 |
return $worker_options['backups'][$type]['url'];
|
| 152 |
}
|
| 167 |
$result = $this->mmb_exec($command);
|
| 168 |
ob_get_clean();
|
| 169 |
$file_url = WP_CONTENT_URL . $file;
|
| 170 |
+
if($result){
|
|
|
|
|
|
|
| 171 |
return array(
|
| 172 |
'path' => $file_path,
|
| 173 |
'url' => $file_url
|
| 174 |
);
|
| 175 |
}
|
| 176 |
+
else{
|
| 177 |
+
return array('error' => 'Failed to backup site. Try to enable Zip Command on your server.');
|
|
|
|
| 178 |
}
|
| 179 |
|
| 180 |
|
| 181 |
} else {
|
| 182 |
require_once ABSPATH . '/wp-admin/includes/class-pclzip.php';
|
| 183 |
$archive = new PclZip($file_path);
|
| 184 |
+
$result = $archive->add(ABSPATH, PCLZIP_OPT_REMOVE_PATH, ABSPATH);
|
| 185 |
+
//$result = $archive->delete(PCLZIP_OPT_BY_NAME, $content_dir.'/'.$sec_string.'/');
|
| 186 |
+
$this->_log($archive);
|
| 187 |
if ($result) {
|
| 188 |
$file_url = WP_CONTENT_URL . $file;
|
| 189 |
return array(
|
| 191 |
'url' => $file_url
|
| 192 |
);
|
| 193 |
}
|
| 194 |
+
else {
|
| 195 |
@unlink($file_path);
|
| 196 |
+
if($archive->error_code == '-10'){
|
| 197 |
+
return array('error' => 'Failed to zip backup file. Try increasing memory limit and/or free space on your server.');
|
| 198 |
+
}
|
| 199 |
+
else{
|
| 200 |
+
return array('error' => 'Failed to backup site. Try to enable Zip Command on your server.');
|
| 201 |
+
}
|
| 202 |
+
}
|
| 203 |
}
|
| 204 |
}
|
| 205 |
|
| 282 |
$j = 1;
|
| 283 |
foreach ($row as $value) {
|
| 284 |
$value = addslashes($value);
|
| 285 |
+
$value = preg_replace("\n", "\\n", $value);
|
| 286 |
$num_values == $j ? $dump_data .= "'" . $value . "'" : $dump_data .= "'" . $value . "', ";
|
| 287 |
$j++;
|
| 288 |
unset($value);
|
| 630 |
$pass = false;
|
| 631 |
}
|
| 632 |
|
| 633 |
+
|
| 634 |
if(is_writable(WP_CONTENT_DIR))
|
| 635 |
{
|
| 636 |
$reqs['Backup Folder']['status'] = "writable";
|
| 642 |
$reqs['Backup Folder']['pass'] = false;
|
| 643 |
}
|
| 644 |
|
| 645 |
+
$sec_string = md5('mmb-worker');
|
| 646 |
+
$file = "/$sec_string/mwp_backups";
|
| 647 |
+
$file_path = WP_CONTENT_DIR . $file;
|
| 648 |
+
$reqs['Backup Folder']['status'].= ' ('.$file_path.')';
|
| 649 |
+
|
| 650 |
if($func = $this->check_sys())
|
| 651 |
{
|
| 652 |
$reqs['Execute Function']['status'] =$func;
|
| 695 |
}
|
| 696 |
|
| 697 |
|
|
|
|
| 698 |
return $reqs;
|
| 699 |
}
|
| 700 |
|
core.class.php
CHANGED
|
@@ -22,14 +22,16 @@ class MMB_Core extends MMB_Helper
|
|
| 22 |
var $post_instance;
|
| 23 |
var $stats_instance;
|
| 24 |
var $search_instance;
|
|
|
|
| 25 |
var $user_instance;
|
| 26 |
var $backup_instance;
|
| 27 |
var $installer_instance;
|
|
|
|
| 28 |
|
| 29 |
|
| 30 |
function __construct()
|
| 31 |
{
|
| 32 |
-
global $mmb_plugin_dir;
|
| 33 |
|
| 34 |
$this->name = 'Manage Multiple Blogs';
|
| 35 |
$this->slug = 'manage-multiple-blogs';
|
|
@@ -43,6 +45,15 @@ class MMB_Core extends MMB_Helper
|
|
| 43 |
);
|
| 44 |
$this->save_options();
|
| 45 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
add_action('rightnow_end', array(
|
| 47 |
$this,
|
| 48 |
'add_right_now_info'
|
|
@@ -58,14 +69,15 @@ class MMB_Core extends MMB_Helper
|
|
| 58 |
add_action('init', array(
|
| 59 |
$this,
|
| 60 |
'automatic_login'
|
| 61 |
-
));
|
| 62 |
-
|
| 63 |
if (!get_option('_worker_public_key'))
|
| 64 |
add_action('admin_notices', array(
|
| 65 |
$this,
|
| 66 |
'admin_notice'
|
| 67 |
));
|
| 68 |
}
|
|
|
|
| 69 |
/**
|
| 70 |
* Add notice to admin dashboard for security reasons
|
| 71 |
*
|
|
@@ -353,15 +365,19 @@ class MMB_Core extends MMB_Helper
|
|
| 353 |
*/
|
| 354 |
function automatic_login()
|
| 355 |
{
|
|
|
|
| 356 |
$where = ($_GET['mwp_goto']);
|
| 357 |
|
| 358 |
-
if (!is_user_logged_in() && $_GET['auto_login']) {
|
|
|
|
| 359 |
$signature = base64_decode($_GET['signature']);
|
| 360 |
$message_id = trim($_GET['message_id']);
|
| 361 |
$username = $_GET['username'];
|
| 362 |
|
| 363 |
$auth = $this->authenticate_message($where . $message_id, $signature, $message_id);
|
| 364 |
if ($auth === true) {
|
|
|
|
|
|
|
| 365 |
$user = get_user_by('login', $username);
|
| 366 |
$user_id = $user->ID;
|
| 367 |
wp_set_current_user($user_id, $username);
|
| 22 |
var $post_instance;
|
| 23 |
var $stats_instance;
|
| 24 |
var $search_instance;
|
| 25 |
+
var $links_instance;
|
| 26 |
var $user_instance;
|
| 27 |
var $backup_instance;
|
| 28 |
var $installer_instance;
|
| 29 |
+
var $mmb_multisite = false;
|
| 30 |
|
| 31 |
|
| 32 |
function __construct()
|
| 33 |
{
|
| 34 |
+
global $mmb_plugin_dir, $wpmu_version, $blog_id;
|
| 35 |
|
| 36 |
$this->name = 'Manage Multiple Blogs';
|
| 37 |
$this->slug = 'manage-multiple-blogs';
|
| 45 |
);
|
| 46 |
$this->save_options();
|
| 47 |
}
|
| 48 |
+
|
| 49 |
+
if (function_exists('is_multisite')){
|
| 50 |
+
if (is_multisite()) {
|
| 51 |
+
$this->mmb_multisite = $blog_id;
|
| 52 |
+
}
|
| 53 |
+
} else if (!empty($wpmu_version)) {
|
| 54 |
+
$this->mmb_multisite = $blog_id;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
add_action('rightnow_end', array(
|
| 58 |
$this,
|
| 59 |
'add_right_now_info'
|
| 69 |
add_action('init', array(
|
| 70 |
$this,
|
| 71 |
'automatic_login'
|
| 72 |
+
));
|
| 73 |
+
|
| 74 |
if (!get_option('_worker_public_key'))
|
| 75 |
add_action('admin_notices', array(
|
| 76 |
$this,
|
| 77 |
'admin_notice'
|
| 78 |
));
|
| 79 |
}
|
| 80 |
+
|
| 81 |
/**
|
| 82 |
* Add notice to admin dashboard for security reasons
|
| 83 |
*
|
| 365 |
*/
|
| 366 |
function automatic_login()
|
| 367 |
{
|
| 368 |
+
global $current_user;
|
| 369 |
$where = ($_GET['mwp_goto']);
|
| 370 |
|
| 371 |
+
if ((!is_user_logged_in() || $_GET['username'] != $current_user->user_login) && $_GET['auto_login']) {
|
| 372 |
+
|
| 373 |
$signature = base64_decode($_GET['signature']);
|
| 374 |
$message_id = trim($_GET['message_id']);
|
| 375 |
$username = $_GET['username'];
|
| 376 |
|
| 377 |
$auth = $this->authenticate_message($where . $message_id, $signature, $message_id);
|
| 378 |
if ($auth === true) {
|
| 379 |
+
if(isset($current_user->user_login))
|
| 380 |
+
do_action('wp_logout');
|
| 381 |
$user = get_user_by('login', $username);
|
| 382 |
$user_id = $user->ID;
|
| 383 |
wp_set_current_user($user_id, $username);
|
helper.class.php
CHANGED
|
@@ -31,7 +31,7 @@ class MMB_Helper
|
|
| 31 |
fwrite($handle, $mixed . PHP_EOL);
|
| 32 |
fclose($handle);
|
| 33 |
}
|
| 34 |
-
|
| 35 |
function _escape(&$array)
|
| 36 |
{
|
| 37 |
global $wpdb;
|
|
@@ -82,11 +82,14 @@ class MMB_Helper
|
|
| 82 |
if (!$option_name || !$data) {
|
| 83 |
return false;
|
| 84 |
}
|
|
|
|
|
|
|
|
|
|
| 85 |
global $mmb_wp_version;
|
| 86 |
|
| 87 |
-
if (version_compare($mmb_wp_version, '2.
|
| 88 |
update_option($option_name, $data);
|
| 89 |
-
} else if (version_compare($mmb_wp_version, '
|
| 90 |
update_option('_transient_' . $option_name, $data);
|
| 91 |
} else {
|
| 92 |
update_option('_site_transient_' . $option_name, $data);
|
|
@@ -98,15 +101,18 @@ class MMB_Helper
|
|
| 98 |
if (trim($option_name) == '') {
|
| 99 |
return FALSE;
|
| 100 |
}
|
| 101 |
-
|
|
|
|
|
|
|
| 102 |
global $mmb_wp_version;
|
|
|
|
| 103 |
|
| 104 |
-
if (version_compare($mmb_wp_version, '2.
|
| 105 |
-
|
| 106 |
-
} else if (version_compare($mmb_wp_version, '
|
| 107 |
-
|
| 108 |
} else {
|
| 109 |
-
|
| 110 |
}
|
| 111 |
}
|
| 112 |
|
|
@@ -118,15 +124,50 @@ class MMB_Helper
|
|
| 118 |
|
| 119 |
global $mmb_wp_version;
|
| 120 |
|
| 121 |
-
|
| 122 |
delete_option($option_name);
|
| 123 |
-
} else if (version_compare($mmb_wp_version, '
|
| 124 |
delete_option('_transient_' . $option_name);
|
| 125 |
} else {
|
| 126 |
delete_option('_site_transient_' . $option_name);
|
| 127 |
}
|
| 128 |
}
|
| 129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
function delete_temp_dir($directory)
|
| 131 |
{
|
| 132 |
if (substr($directory, -1) == "/") {
|
| 31 |
fwrite($handle, $mixed . PHP_EOL);
|
| 32 |
fclose($handle);
|
| 33 |
}
|
| 34 |
+
|
| 35 |
function _escape(&$array)
|
| 36 |
{
|
| 37 |
global $wpdb;
|
| 82 |
if (!$option_name || !$data) {
|
| 83 |
return false;
|
| 84 |
}
|
| 85 |
+
if($this->mmb_multisite)
|
| 86 |
+
return $this->mmb_set_sitemeta_transient($option_name, $data);
|
| 87 |
+
|
| 88 |
global $mmb_wp_version;
|
| 89 |
|
| 90 |
+
if (version_compare($mmb_wp_version, '2.7.9', '<=')) {
|
| 91 |
update_option($option_name, $data);
|
| 92 |
+
} else if (version_compare($mmb_wp_version, '2.9.9', '<=')) {
|
| 93 |
update_option('_transient_' . $option_name, $data);
|
| 94 |
} else {
|
| 95 |
update_option('_site_transient_' . $option_name, $data);
|
| 101 |
if (trim($option_name) == '') {
|
| 102 |
return FALSE;
|
| 103 |
}
|
| 104 |
+
if($this->mmb_multisite)
|
| 105 |
+
return $this->mmb_get_sitemeta_transient($option_name);
|
| 106 |
+
|
| 107 |
global $mmb_wp_version;
|
| 108 |
+
|
| 109 |
|
| 110 |
+
if (version_compare($mmb_wp_version, '2.7.9', '<=')) {
|
| 111 |
+
return get_option($option_name);
|
| 112 |
+
} else if (version_compare($mmb_wp_version, '2.9.9', '<=')) {
|
| 113 |
+
return get_option('_transient_' . $option_name);
|
| 114 |
} else {
|
| 115 |
+
return get_option('_site_transient_' . $option_name);
|
| 116 |
}
|
| 117 |
}
|
| 118 |
|
| 124 |
|
| 125 |
global $mmb_wp_version;
|
| 126 |
|
| 127 |
+
if (version_compare($mmb_wp_version, '2.7.9', '<=')) {
|
| 128 |
delete_option($option_name);
|
| 129 |
+
} else if (version_compare($mmb_wp_version, '2.9.9', '<=')) {
|
| 130 |
delete_option('_transient_' . $option_name);
|
| 131 |
} else {
|
| 132 |
delete_option('_site_transient_' . $option_name);
|
| 133 |
}
|
| 134 |
}
|
| 135 |
|
| 136 |
+
function mmb_get_sitemeta_transient($option_name){
|
| 137 |
+
global $wpdb;
|
| 138 |
+
$option_name = '_site_transient_'. $option_name;
|
| 139 |
+
|
| 140 |
+
$result = $wpdb->get_var( $wpdb->prepare("SELECT `meta_value` FROM `{$wpdb->sitemeta}` WHERE meta_key = '{$option_name}' AND `site_id` = '{$this->mmb_multisite}' "));
|
| 141 |
+
$result = maybe_unserialize($result);
|
| 142 |
+
return $result;
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
function mmb_set_sitemeta_transient($option_name, $option_value){
|
| 146 |
+
global $wpdb;
|
| 147 |
+
$option_name = '_site_transient_'. $option_name;
|
| 148 |
+
|
| 149 |
+
if($this->mmb_get_sitemeta_transient($option_name)){
|
| 150 |
+
$result = $wpdb->update( $wpdb->sitemeta,
|
| 151 |
+
array(
|
| 152 |
+
'meta_value' => maybe_serialize($option_value)
|
| 153 |
+
),
|
| 154 |
+
array(
|
| 155 |
+
'meta_key' => $option_name,
|
| 156 |
+
'site_id' => $this->mmb_multisite
|
| 157 |
+
)
|
| 158 |
+
);
|
| 159 |
+
}else {
|
| 160 |
+
$result = $wpdb->insert( $wpdb->sitemeta,
|
| 161 |
+
array(
|
| 162 |
+
'meta_key' => $option_name,
|
| 163 |
+
'meta_value' => maybe_serialize($option_value),
|
| 164 |
+
'site_id' => $this->mmb_multisite
|
| 165 |
+
)
|
| 166 |
+
);
|
| 167 |
+
}
|
| 168 |
+
return $result;
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
function delete_temp_dir($directory)
|
| 172 |
{
|
| 173 |
if (substr($directory, -1) == "/") {
|
index.html
DELETED
|
File without changes
|
init.php
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
/*
|
| 3 |
Plugin Name: ManageWP - Worker
|
| 4 |
Plugin URI: http://managewp.com/
|
| 5 |
-
Description: Manage all your blogs from one dashboard
|
| 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 |
|
| 23 |
-
define('MMB_WORKER_VERSION', '3.9.
|
| 24 |
|
| 25 |
global $wpdb, $mmb_plugin_dir, $mmb_plugin_url;
|
| 26 |
|
|
@@ -51,6 +51,7 @@ $mmb_actions = array(
|
|
| 51 |
'install_addon' => 'mmb_install_addon',
|
| 52 |
'do_upgrade' => 'mmb_do_upgrade',
|
| 53 |
'add_link' => 'mmb_add_link',
|
|
|
|
| 54 |
'email_backup' => 'mmb_email_backup',
|
| 55 |
'check_backup_compat' => 'mmb_check_backup_compat',
|
| 56 |
'execute_php_code' => 'mmb_execute_php_code'
|
|
@@ -64,6 +65,7 @@ require_once("$mmb_plugin_dir/stats.class.php");
|
|
| 64 |
require_once("$mmb_plugin_dir/backup.class.php");
|
| 65 |
require_once("$mmb_plugin_dir/installer.class.php");
|
| 66 |
require_once("$mmb_plugin_dir/link.class.php");
|
|
|
|
| 67 |
require_once("$mmb_plugin_dir/api.php");
|
| 68 |
|
| 69 |
require_once("$mmb_plugin_dir/plugins/search/search.php");
|
|
@@ -75,6 +77,7 @@ require_once("$mmb_plugin_dir/plugins/cleanup/cleanup.php");
|
|
| 75 |
$mmb_core = new MMB_Core();
|
| 76 |
if( microtime(true) - (double)get_option('mwp_iframe_options_header') < 3600 ){
|
| 77 |
remove_action( 'admin_init', 'send_frame_options_header');
|
|
|
|
| 78 |
}
|
| 79 |
|
| 80 |
add_action('init', 'mmb_parse_request');
|
|
@@ -108,10 +111,11 @@ function mmb_parse_request()
|
|
| 108 |
$num = @extract(unserialize($data));
|
| 109 |
|
| 110 |
if ($action) {
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
@$
|
|
|
|
| 115 |
|
| 116 |
update_option('mwp_iframe_options_header', microtime(true));
|
| 117 |
// mmb_response($mmb_actions, false);
|
|
@@ -152,7 +156,7 @@ function mmb_response($response = false, $success = true)
|
|
| 152 |
$return['error'] = $response;
|
| 153 |
|
| 154 |
if( !headers_sent() ){
|
| 155 |
-
|
| 156 |
header('Content-Type: text/plain');
|
| 157 |
}
|
| 158 |
exit("<MWPHEADER>" . base64_encode(serialize($return))."<ENDMWPHEADER>");
|
|
@@ -443,6 +447,20 @@ function mmb_add_link($params)
|
|
| 443 |
|
| 444 |
}
|
| 445 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 446 |
function mmb_iframe_plugins_fix($update_actions)
|
| 447 |
{
|
| 448 |
foreach($update_actions as $key => $action)
|
| 2 |
/*
|
| 3 |
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.1
|
| 8 |
Author URI: http://www.prelovac.com
|
| 9 |
*/
|
| 10 |
|
| 20 |
**************************************************************/
|
| 21 |
|
| 22 |
|
| 23 |
+
define('MMB_WORKER_VERSION', '3.9.1');
|
| 24 |
|
| 25 |
global $wpdb, $mmb_plugin_dir, $mmb_plugin_url;
|
| 26 |
|
| 51 |
'install_addon' => 'mmb_install_addon',
|
| 52 |
'do_upgrade' => 'mmb_do_upgrade',
|
| 53 |
'add_link' => 'mmb_add_link',
|
| 54 |
+
'add_user' => 'mmb_add_user',
|
| 55 |
'email_backup' => 'mmb_email_backup',
|
| 56 |
'check_backup_compat' => 'mmb_check_backup_compat',
|
| 57 |
'execute_php_code' => 'mmb_execute_php_code'
|
| 65 |
require_once("$mmb_plugin_dir/backup.class.php");
|
| 66 |
require_once("$mmb_plugin_dir/installer.class.php");
|
| 67 |
require_once("$mmb_plugin_dir/link.class.php");
|
| 68 |
+
require_once("$mmb_plugin_dir/user.class.php");
|
| 69 |
require_once("$mmb_plugin_dir/api.php");
|
| 70 |
|
| 71 |
require_once("$mmb_plugin_dir/plugins/search/search.php");
|
| 77 |
$mmb_core = new MMB_Core();
|
| 78 |
if( microtime(true) - (double)get_option('mwp_iframe_options_header') < 3600 ){
|
| 79 |
remove_action( 'admin_init', 'send_frame_options_header');
|
| 80 |
+
remove_action( 'login_init', 'send_frame_options_header');
|
| 81 |
}
|
| 82 |
|
| 83 |
add_action('init', 'mmb_parse_request');
|
| 111 |
$num = @extract(unserialize($data));
|
| 112 |
|
| 113 |
if ($action) {
|
| 114 |
+
global $w3_plugin_totalcache;
|
| 115 |
+
if(!empty($w3_plugin_totalcache)){
|
| 116 |
+
@$w3_plugin_totalcache->flush_dbcache();
|
| 117 |
+
@$w3_plugin_totalcache->flush_objectcache();
|
| 118 |
+
}
|
| 119 |
|
| 120 |
update_option('mwp_iframe_options_header', microtime(true));
|
| 121 |
// mmb_response($mmb_actions, false);
|
| 156 |
$return['error'] = $response;
|
| 157 |
|
| 158 |
if( !headers_sent() ){
|
| 159 |
+
header('HTTP/1.0 200 OK');
|
| 160 |
header('Content-Type: text/plain');
|
| 161 |
}
|
| 162 |
exit("<MWPHEADER>" . base64_encode(serialize($return))."<ENDMWPHEADER>");
|
| 447 |
|
| 448 |
}
|
| 449 |
|
| 450 |
+
function mmb_add_user($params)
|
| 451 |
+
{
|
| 452 |
+
global $mmb_core;
|
| 453 |
+
$mmb_core->get_user_instance();
|
| 454 |
+
$return = $mmb_core->user_instance->add_user($params);
|
| 455 |
+
if (is_array($return) && array_key_exists('error', $return))
|
| 456 |
+
|
| 457 |
+
mmb_response($return['error'], false);
|
| 458 |
+
else {
|
| 459 |
+
mmb_response($return, true);
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
function mmb_iframe_plugins_fix($update_actions)
|
| 465 |
{
|
| 466 |
foreach($update_actions as $key => $action)
|
link.class.php
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
<?php
|
| 2 |
/*************************************************************
|
| 3 |
*
|
| 4 |
-
*
|
| 5 |
*
|
| 6 |
-
* Add
|
| 7 |
*
|
| 8 |
*
|
| 9 |
* Copyright (c) 2011 Prelovac Media
|
| 1 |
<?php
|
| 2 |
/*************************************************************
|
| 3 |
*
|
| 4 |
+
* user.class.php
|
| 5 |
*
|
| 6 |
+
* Add Users
|
| 7 |
*
|
| 8 |
*
|
| 9 |
* Copyright (c) 2011 Prelovac Media
|
plugins/cleanup/cleanup.php
CHANGED
|
@@ -96,9 +96,25 @@ function mmb_get_overhead()
|
|
| 96 |
$tot_idx = 0;
|
| 97 |
$tot_all = 0;
|
| 98 |
$query = 'SHOW TABLE STATUS FROM '. DB_NAME;
|
| 99 |
-
$tables = $wpdb->get_results($query,ARRAY_A);
|
| 100 |
foreach($tables as $table)
|
| 101 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
$tot_data = $table['Data_length'];
|
| 103 |
$tot_idx = $table['Index_length'];
|
| 104 |
$total = $tot_data + $tot_idx;
|
|
@@ -108,18 +124,26 @@ function mmb_get_overhead()
|
|
| 108 |
$gain = $gain / 1024 ;
|
| 109 |
$total_gain += $gain;
|
| 110 |
$gain = round ($gain,3);
|
| 111 |
-
|
| 112 |
}
|
| 113 |
-
|
| 114 |
return round($total_gain,3);
|
| 115 |
}
|
| 116 |
|
|
|
|
| 117 |
function mmb_clear_overhead()
|
| 118 |
{
|
| 119 |
global $wpdb;
|
| 120 |
$tables = $wpdb->get_col("SHOW TABLES");
|
| 121 |
foreach ($tables as $table_name) {
|
| 122 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
}
|
| 124 |
$table_string = substr($table_string,0,strlen($table_string)-1); //remove last ,
|
| 125 |
|
|
@@ -133,6 +157,7 @@ function mmb_clear_overhead()
|
|
| 133 |
|
| 134 |
|
| 135 |
|
|
|
|
| 136 |
/* Spam Comments */
|
| 137 |
|
| 138 |
function mmb_num_spam_comments()
|
| 96 |
$tot_idx = 0;
|
| 97 |
$tot_all = 0;
|
| 98 |
$query = 'SHOW TABLE STATUS FROM '. DB_NAME;
|
| 99 |
+
$tables = $wpdb->get_results($wpdb->prepare($query),ARRAY_A);
|
| 100 |
foreach($tables as $table)
|
| 101 |
{
|
| 102 |
+
if($wpdb->base_prefix != $wpdb->prefix){
|
| 103 |
+
if(preg_match('/^'.$wpdb->prefix.'*/Ui', $table['Name'])){
|
| 104 |
+
$tot_data = $table['Data_length'];
|
| 105 |
+
$tot_idx = $table['Index_length'];
|
| 106 |
+
$total = $tot_data + $tot_idx;
|
| 107 |
+
$total = $total / 1024 ;
|
| 108 |
+
$total = round ($total,3);
|
| 109 |
+
$gain= $table['Data_free'];
|
| 110 |
+
$gain = $gain / 1024 ;
|
| 111 |
+
$total_gain += $gain;
|
| 112 |
+
$gain = round ($gain,3);
|
| 113 |
+
}
|
| 114 |
+
} else if(preg_match('/^'.$wpdb->prefix.'[0-9]{1,20}_*/Ui', $table['Name'])){
|
| 115 |
+
continue;
|
| 116 |
+
}
|
| 117 |
+
else {
|
| 118 |
$tot_data = $table['Data_length'];
|
| 119 |
$tot_idx = $table['Index_length'];
|
| 120 |
$total = $tot_data + $tot_idx;
|
| 124 |
$gain = $gain / 1024 ;
|
| 125 |
$total_gain += $gain;
|
| 126 |
$gain = round ($gain,3);
|
| 127 |
+
}
|
| 128 |
}
|
|
|
|
| 129 |
return round($total_gain,3);
|
| 130 |
}
|
| 131 |
|
| 132 |
+
|
| 133 |
function mmb_clear_overhead()
|
| 134 |
{
|
| 135 |
global $wpdb;
|
| 136 |
$tables = $wpdb->get_col("SHOW TABLES");
|
| 137 |
foreach ($tables as $table_name) {
|
| 138 |
+
if($wpdb->base_prefix != $wpdb->prefix){
|
| 139 |
+
if(preg_match('/^'.$wpdb->prefix.'*/Ui', $table_name)){
|
| 140 |
+
$table_string .= $table_name . ",";
|
| 141 |
+
}
|
| 142 |
+
} else if(preg_match('/^'.$wpdb->prefix.'[0-9]{1,20}_*/Ui', $table_name)){
|
| 143 |
+
continue;
|
| 144 |
+
}
|
| 145 |
+
else
|
| 146 |
+
$table_string .= $table_name . ",";
|
| 147 |
}
|
| 148 |
$table_string = substr($table_string,0,strlen($table_string)-1); //remove last ,
|
| 149 |
|
| 157 |
|
| 158 |
|
| 159 |
|
| 160 |
+
|
| 161 |
/* Spam Comments */
|
| 162 |
|
| 163 |
function mmb_num_spam_comments()
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: freediver
|
|
| 3 |
Donate link: https://www.networkforgood.org/donation/MakeDonation.aspx?ORGID2=520781390
|
| 4 |
Tags: managewp, managewp worker, admin, manage blogs, multi blog manager, manage multiple blogs, remote blog management
|
| 5 |
Requires at least: 3.0
|
| 6 |
-
Tested up to: 3.
|
| 7 |
Stable tag: trunk
|
| 8 |
|
| 9 |
ManageWP Worker plugin allows you to remotely manage your blogs from one dashboard.
|
|
@@ -17,10 +17,11 @@ Main features:
|
|
| 17 |
* Secure! No passwords for sites required, uses OpenSSL encrypted protocol
|
| 18 |
* One click upgrades of WordPress, plugin and themes across all your sites
|
| 19 |
* One click to access administration dashboard for any site
|
|
|
|
| 20 |
* Bulk publish posts to multiple sites at once
|
| 21 |
* Bulk upload themes and plugins to multiple sites at once
|
| 22 |
* Automatic backups of your sites
|
| 23 |
-
* Clone
|
| 24 |
* Much, much more...
|
| 25 |
|
| 26 |
Check out [ManageWP.com](http://managewp.com/ "Manage Multiple Blogs")
|
|
@@ -29,6 +30,15 @@ API for developers available at [ManageWP.com/API](http://managewp.com/api "Mana
|
|
| 29 |
|
| 30 |
== Changelog ==
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
= 3.9.0 =
|
| 33 |
* New feature: Up to 50% faster dashboard loading
|
| 34 |
* New feature: You can now ignore WordPress/plugin/theme updates
|
| 3 |
Donate link: https://www.networkforgood.org/donation/MakeDonation.aspx?ORGID2=520781390
|
| 4 |
Tags: managewp, managewp worker, admin, manage blogs, multi blog manager, manage multiple blogs, remote blog management
|
| 5 |
Requires at least: 3.0
|
| 6 |
+
Tested up to: 3.2
|
| 7 |
Stable tag: trunk
|
| 8 |
|
| 9 |
ManageWP Worker plugin allows you to remotely manage your blogs from one dashboard.
|
| 17 |
* Secure! No passwords for sites required, uses OpenSSL encrypted protocol
|
| 18 |
* One click upgrades of WordPress, plugin and themes across all your sites
|
| 19 |
* One click to access administration dashboard for any site
|
| 20 |
+
* Add sub-users (writes, staff..) to your account
|
| 21 |
* Bulk publish posts to multiple sites at once
|
| 22 |
* Bulk upload themes and plugins to multiple sites at once
|
| 23 |
* Automatic backups of your sites
|
| 24 |
+
* Clone or migrate site to another domain
|
| 25 |
* Much, much more...
|
| 26 |
|
| 27 |
Check out [ManageWP.com](http://managewp.com/ "Manage Multiple Blogs")
|
| 30 |
|
| 31 |
== Changelog ==
|
| 32 |
|
| 33 |
+
= 3.9.1 =
|
| 34 |
+
* Support for sub-users (limited access users)
|
| 35 |
+
* Bulk add user
|
| 36 |
+
* 'Select all' feature for bulk posting
|
| 37 |
+
* Featured image support for bulk posting
|
| 38 |
+
* Reload button on the dashboard (on the top of the Right now widget) will now refresh information about available updates
|
| 39 |
+
* Fixed a problem with the import tool
|
| 40 |
+
* Fixed a problem when remote dashboard would not work for some servers
|
| 41 |
+
|
| 42 |
= 3.9.0 =
|
| 43 |
* New feature: Up to 50% faster dashboard loading
|
| 44 |
* New feature: You can now ignore WordPress/plugin/theme updates
|
stats.class.php
CHANGED
|
@@ -25,7 +25,15 @@ class MMB_Stats extends MMB_Core
|
|
| 25 |
|
| 26 |
function get($params)
|
| 27 |
{
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
$stats = array();
|
| 30 |
|
| 31 |
//define constants
|
|
@@ -39,6 +47,9 @@ class MMB_Stats extends MMB_Core
|
|
| 39 |
|
| 40 |
$stats['worker_version'] = MMB_WORKER_VERSION;
|
| 41 |
$stats['wordpress_version'] = $mmb_wp_version;
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
$updates = $this->mmb_get_transient('update_core');
|
| 44 |
|
|
@@ -381,7 +392,7 @@ class MMB_Stats extends MMB_Core
|
|
| 381 |
|
| 382 |
$thebot = '';
|
| 383 |
foreach ($bot_list as $bot) {
|
| 384 |
-
if (
|
| 385 |
$thebot = $bot;
|
| 386 |
break;
|
| 387 |
}
|
| 25 |
|
| 26 |
function get($params)
|
| 27 |
{
|
| 28 |
+
$num = extract($params);
|
| 29 |
+
if($refresh == 'transient'){
|
| 30 |
+
include_once(ABSPATH.'wp-includes/update.php');
|
| 31 |
+
wp_update_plugins();
|
| 32 |
+
wp_update_themes();
|
| 33 |
+
wp_version_check();
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
global $wpdb, $mmb_wp_version, $mmb_plugin_dir;
|
| 37 |
$stats = array();
|
| 38 |
|
| 39 |
//define constants
|
| 47 |
|
| 48 |
$stats['worker_version'] = MMB_WORKER_VERSION;
|
| 49 |
$stats['wordpress_version'] = $mmb_wp_version;
|
| 50 |
+
$stats['wp_multisite'] = $this->mmb_multisite;
|
| 51 |
+
$stats['php_version'] = phpversion();
|
| 52 |
+
$stats['mysql_version'] = $wpdb->db_version();
|
| 53 |
|
| 54 |
$updates = $this->mmb_get_transient('update_core');
|
| 55 |
|
| 392 |
|
| 393 |
$thebot = '';
|
| 394 |
foreach ($bot_list as $bot) {
|
| 395 |
+
if ((boolean)strpos($bot, $agent)) {
|
| 396 |
$thebot = $bot;
|
| 397 |
break;
|
| 398 |
}
|
user.class.php
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/*************************************************************
|
| 3 |
+
*
|
| 4 |
+
* user.class.php
|
| 5 |
+
*
|
| 6 |
+
* Add Users
|
| 7 |
+
*
|
| 8 |
+
*
|
| 9 |
+
* Copyright (c) 2011 Prelovac Media
|
| 10 |
+
* www.prelovac.com
|
| 11 |
+
**************************************************************/
|
| 12 |
+
|
| 13 |
+
class MMB_User extends MMB_Core
|
| 14 |
+
{
|
| 15 |
+
function __construct()
|
| 16 |
+
{
|
| 17 |
+
parent::__construct();
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
function add_user($args)
|
| 21 |
+
{
|
| 22 |
+
|
| 23 |
+
if(!function_exists('username_exists') || !function_exists('email_exists'))
|
| 24 |
+
include_once(ABSPATH . WPINC . '/registration.php');
|
| 25 |
+
|
| 26 |
+
if(username_exists($args['user_login']))
|
| 27 |
+
return array('error' => 'Username already exists');
|
| 28 |
+
|
| 29 |
+
if (email_exists($args['user_email']))
|
| 30 |
+
return array('error' => 'Email already exists');
|
| 31 |
+
|
| 32 |
+
if(!function_exists('wp_insert_user'))
|
| 33 |
+
include_once (ABSPATH . 'wp-admin/includes/user.php');
|
| 34 |
+
|
| 35 |
+
$user_id = wp_insert_user($args);
|
| 36 |
+
|
| 37 |
+
if($user_id){
|
| 38 |
+
|
| 39 |
+
if($args['email_notify']){
|
| 40 |
+
//require_once ABSPATH . WPINC . '/pluggable.php';
|
| 41 |
+
wp_new_user_notification($user_id, $args['user_pass']);
|
| 42 |
+
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
return $user_id;
|
| 46 |
+
}else{
|
| 47 |
+
return array('error' => 'User not added. Please try again.');
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
}
|
| 53 |
+
?>
|
version
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
3.9.
|
| 1 |
+
3.9.1
|
