new version

This commit is contained in:
ruben- 2014-06-10 20:41:28 +02:00
parent ca6563dcfa
commit f10acefb27
5 changed files with 371 additions and 19 deletions

View file

@ -624,6 +624,7 @@ class MainWPChild
// Branding extension
MainWPChildBranding::Instance()->branding_init();
MainWPClientReport::Instance()->creport_init();
}
function default_option_active_plugins($default)

View file

@ -225,7 +225,7 @@ class MainWPChildServerInformation
</style>
<table id="mainwp-table" class="wp-list-table widefat mainwp-child_info-box-warning" cellspacing="0">
<tbody id="the-sites-list" class="list:sites">
<tr><td colspan="2"><strong><?php echo count($conflicts); ?> plugin conflict<?php echo (count($conflicts) > 1 ? 's' : ''); ?> found</strong></td><td style="text-align: right;"><a href="#" id="mainwp-child-warning-dismiss">Dismiss</a></td></tr>
<tr><td colspan="2"><strong><?php echo count($conflicts); ?> plugin conflict<?php echo (count($conflicts) > 1 ? 's' : ''); ?> found</strong></td><td style="text-align: right;"></td></tr>
<?php foreach ($conflicts as $conflict) { ?>
<tr><td><strong><?php echo $conflict; ?></strong> is installed on this site. This plugin is known to have a potential conflict with MainWP functions. <a href="http://docs.mainwp.com/known-plugin-conflicts/">Please click this link for possible solutions</a></td></tr>
<?php } ?>

View file

@ -32,6 +32,9 @@ class MainWPClientReport
case "get_stream":
$information = $this->get_stream();
break;
case "set_showhide":
$information = $this->set_showhide();
break;
}
}
MainWPHelper::write($information);
@ -55,12 +58,18 @@ class MainWPClientReport
'ip',
);
$stream_tokens = array();
if (isset($_POST['stream_tokens'])) {
$stream_tokens = unserialize(base64_decode($_POST['stream_tokens']));
}
if (!is_array($stream_tokens))
$stream_tokens = array();
$sections = isset($_POST['sections']) ? unserialize(base64_decode($_POST['sections'])) : array();
if (!is_array($sections))
$sections = array();
//return $sections;
$other_tokens = isset($_POST['other_tokens']) ? unserialize(base64_decode($_POST['other_tokens'])) : array();
if (!is_array($other_tokens))
$other_tokens = array();
//return $other_tokens;
unset($_POST['sections']);
unset($_POST['other_tokens']);
$args = array();
foreach ( $allowed_params as $param ) {
@ -75,21 +84,363 @@ class MainWPClientReport
unset($args[$arg]);
}
}
if (isset($args['date_from']))
$args['date_from'] = date("Y-m-d H:i:s", $args['date_from']);
if (isset($args['date_to']))
$args['date_to'] = date("Y-m-d H:i:s", $args['date_to']);
$args['records_per_page'] = -1;
$records = wp_stream_query( $args );
if (!is_array($records))
$records = array();
//return $records;
$token_values = array();
foreach ($records as $record) {
$name = "[" . $record->context . "." . $record->action . "]";
if (in_array($name, $stream_tokens)) {
$token_values[$name][] = $record->summary;
//$other_tokens_data = $this->get_other_tokens_data($records, $other_tokens);
if (isset($other_tokens['header']) && is_array($other_tokens['header'])) {
$other_tokens_data['header'] = $this->get_other_tokens_data($records, $other_tokens['header']);
}
if (isset($other_tokens['body']) && is_array($other_tokens['body'])) {
$other_tokens_data['body'] = $this->get_other_tokens_data($records, $other_tokens['body']);
}
if (isset($other_tokens['footer']) && is_array($other_tokens['footer'])) {
$other_tokens_data['footer'] = $this->get_other_tokens_data($records, $other_tokens['footer']);
}
$sections_data = array();
if (isset($sections['header']) && is_array($sections['header'])) {
foreach($sections['header'] as $sec => $tokens) {
$sections_data['header'][$sec] = $this->get_section_loop_data($records, $tokens, $sec);
}
}
$information = array('token_values' => $token_values);
if (isset($sections['body']) && is_array($sections['body'])) {
foreach($sections['body'] as $sec => $tokens) {
$sections_data['body'][$sec] = $this->get_section_loop_data($records, $tokens, $sec);
}
}
if (isset($sections['footer']) && is_array($sections['footer'])) {
foreach($sections['footer'] as $sec => $tokens) {
$sections_data['footer'][$sec] = $this->get_section_loop_data($records, $tokens, $sec);
}
}
$information = array('other_tokens_data' => $other_tokens_data,
'sections_data' => $sections_data );
return $information;
}
function get_other_tokens_data($records, $tokens) {
$convert_context_name = array(
"comment" => "comments",
"plugin" => "plugins",
"profile" => "profiles",
"session" => "sessions",
"setting" => "settings",
"setting" => "settings",
"theme" => "themes",
"posts" => "post",
"pages" => "page",
"user" => "users",
"widget" => "widgets",
"menu" => "menus"
);
$convert_action_name = array(
"restored" => "untrashed",
"spam" => "spammed"
);
$allowed_data = array(
'count'
);
$token_values = array();
if (!is_array($tokens))
$tokens = array();
foreach ($tokens as $token) {
$str_tmp = str_replace(array('[', ']'), "", $token);
$array_tmp = explode(".", $str_tmp);
if (is_array($array_tmp)) {
$context = $action = $data = "";
if (count($array_tmp) == 2) {
list($context, $data) = $array_tmp;
} else if (count($array_tmp) == 3) {
list($context, $action, $data) = $array_tmp;
}
$context = isset($convert_context_name[$context]) ? $convert_context_name[$context] : $context;
$action = isset($convert_action_name[$action]) ? $convert_action_name[$action] : $action;
switch ($data) {
case "count":
$count = 0;
foreach ($records as $record) {
if ($context == "themes" && $action == "edited") {
if ($record->action !== "updated" || $record->connector !== "editor")
continue;
} else if ($context == "users" && $action == "updated") {
if ($record->context !== "profiles" || $record->connector !== "users")
continue;
} else {
if ($action != $record->action)
continue;
if ($context == "comments" && $record->context != "page" && $record->context != "post")
continue;
else if ($context == "media" && $record->connector != "media")
continue;
else if ($context == "widgets" && $record->connector != "widgets")
continue;
else if ($context == "menus" && $record->connector != "menus")
continue;
if ($context !== "comments" && $context !== "media" &&
$context !== "widgets" && $context !== "menus" &&
$record->context != $context)
continue;
}
$count++;
}
$token_values[$token] = $count;
break;
}
}
}
return $token_values;
}
function get_section_loop_data($records, $tokens, $section) {
$convert_context_name = array(
"comment" => "comments",
"plugin" => "plugins",
"profile" => "profiles",
"session" => "sessions",
"setting" => "settings",
"setting" => "settings",
"theme" => "themes",
"posts" => "post",
"pages" => "page",
"widget" => "widgets",
"menu" => "menus",
);
$convert_action_name = array(
"restored" => "untrashed",
"spam" => "spammed",
);
$some_allowed_data = array(
'name',
'title',
'oldversion',
'currentversion',
'date',
'count',
'author',
'old.version',
'current.version'
);
$context = $action = "";
$str_tmp = str_replace(array('[', ']'), "", $section);
$array_tmp = explode(".", $str_tmp);
if (is_array($array_tmp))
list($str1, $context, $action) = $array_tmp;
$context = isset($convert_context_name[$context]) ? $convert_context_name[$context] : $context;
$action = isset($convert_action_name[$action]) ? $convert_action_name[$action] : $action;
$loops = array();
$loop_count = 0;
foreach ($records as $record) {
$theme_edited = $users_updated = false;
if ($context == "themes" && $action == "edited") {
if ($record->action !== "updated" || $record->connector !== "editor")
continue;
else
$theme_edited = true;
} else if ($context == "users" && $action == "updated") {
if ($record->context !== "profiles" || $record->connector !== "users")
continue;
else
$users_updated = true;
} else {
if ($action !== $record->action)
continue;
if ($context === "comments" && $record->context !== "page" && $record->context !== "post")
continue;
else if ($context === "media" && $record->connector !== "media")
continue;
else if ($context === "widgets" && $record->connector !== "widgets")
continue;
else if ($context === "menus" && $record->connector !== "menus")
continue;
// else if ($context === "themes" && $record->connector !== "themes")
// continue;
if ($context !== "comments" && $context !== "media" &&
$context !== "widgets" && $context !== "menus" &&
$record->context !== $context)
continue;
}
$token_values = array();
foreach ($tokens as $token) {
$data = "";
$token_name = str_replace(array('[', ']'), "", $token);
$array_tmp = explode(".", $token_name);
if ($token_name == "user.name") {
$data = "display_name";
} else {
if (count($array_tmp) == 1) {
list($data) = $array_tmp;
} else if (count($array_tmp) == 2) {
list($str1, $data) = $array_tmp;
} else if (count($array_tmp) == 3) {
list($str1, $str2, $data) = $array_tmp;
}
if ($data == "version") {
if ($str2 == "old")
$data = "old_version";
}
}
if ($data == "role")
$data = "roles";
switch ($data) {
case "date":
$token_values[$token] = $record->created;
break;
case "area":
$data = "sidebar_name";
$token_values[$token] = $this->get_stream_meta_data($record->ID, $data);
break;
case "name":
case "version":
case "old_version":
case "display_name":
case "roles":
if ($data == "name") {
if ($theme_edited)
$data = "theme_name";
else if ($users_updated) {
$data = "display_name";
}
}
if ($data == "roles" && $users_updated) {
$user_info = get_userdata($record->object_id);
if ( !( is_object( $user_info ) && is_a( $user_info, 'WP_User' ) ) ) {
$roles = "";
} else {
$roles = implode(", ", $user_info->roles);
}
$token_values[$token] = $roles;
} else {
$token_values[$token] = $this->get_stream_meta_data($record->ID, $data);
}
break;
case "title":
if ($context == "page" || $context == "post" || $context == "comments")
$data = "post_title";
else if ($record->connector == "menus") {
$data = "name";
}
$token_values[$token] = $this->get_stream_meta_data($record->ID, $data);
break;
case "author":
$data = "author_meta";
$token_values[$token] = $this->get_stream_meta_data($record->ID, $data);
break;
default:
$token_values[$token] = $token;
break;
}
} // foreach $tokens
if (!empty($token_values)) {
$loops[$loop_count] = $token_values;
$loop_count++;
}
} // foreach $records
return $loops;
}
function get_stream_meta_data($record_id, $data) {
$meta_key = $data;
global $wpdb;
if (class_exists('WP_Stream_Install'))
$prefix = WP_Stream_Install::$table_prefix;
else
$prefix = $wpdb->prefix;
$sql = "SELECT meta_value FROM {$prefix}stream_meta WHERE record_id = " . $record_id . " AND meta_key = '" . $meta_key . "'";
$meta = $wpdb->get_row( $sql );
$value = "";
if (!empty($meta)) {
$value = $meta->meta_value;
if ($meta_key == "author_meta") {
$value = unserialize($value);
$value = $value['display_name'];
}
}
return $value;
}
function set_showhide() {
MainWPHelper::update_option('mainwp_creport_ext_branding_enabled', "Y");
$hide = isset($_POST['showhide']) && ($_POST['showhide'] === "hide") ? 'hide' : "";
MainWPHelper::update_option('mainwp_creport_branding_stream_hide', $hide);
$information['result'] = 'SUCCESS';
return $information;
}
public function creport_init()
{
if (get_option('mainwp_creport_ext_branding_enabled') !== "Y")
return;
if (get_option('mainwp_creport_branding_stream_hide') === "hide")
{
add_filter('all_plugins', array($this, 'creport_branding_plugin'));
add_action( 'admin_menu', array($this, 'creport_remove_menu'));
}
}
public function creport_branding_plugin($plugins) {
foreach ($plugins as $key => $value)
{
$plugin_slug = basename($key, '.php');
if ($plugin_slug == 'stream')
unset($plugins[$key]);
}
return $plugins;
}
public function creport_remove_menu() {
remove_menu_page('wp_stream');
}
}

View file

@ -5,7 +5,7 @@
Description: Child Plugin for MainWP. The plugin is used so the installed blog can be securely managed remotely by your network. Plugin documentation and options can be found here http://docs.mainwp.com
Author: MainWP
Author URI: http://mainwp.com
Version: 0.29.7-beta
Version: 0.29.7
*/
header('X-Frame-Options: ALLOWALL');
//header('X-Frame-Options: GOFORIT');

View file

@ -7,7 +7,7 @@ Author URI: http://mainwp.com
Plugin URI: http://mainwp.com
Requires at least: 3.6
Tested up to: 3.9
Stable tag: 0.29.6
Stable tag: 0.29.7
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html