/home/preegmxb/gymnyou.com/wp-content/plugins/white-label-cms/includes/classes/Admin_Dashboard.php
<?php
class WLCMS_Admin_Dashboard extends WLCMS_Previewable
{
private $is_dashboard_all_hidden;
public function __construct()
{
//Check and set if it is a preview
$this->check_preview();
add_action('wp_dashboard_setup', array($this, 'dashboard_setup'), 999);
add_action("wp_ajax_hide_vum_dashboard", array($this, "hide_vum_dashboard"));
add_action("admin_init", array($this, "reset_welcome_dashboard"));
}
public function dashboard_setup()
{
$this->reset_dashboard_style();
$this->add_own_rss_panel();
$this->dashboard_title();
$this->set_welcome_metabox();
//Old version setting 2.0.2
if (!wlcms_field_setting('dashboard_role_stat')) {
if (is_wlcms_admin()) return;
} else {
$dashboard_widgets_visibility_roles = wlcms_field_setting('dashboard_widgets_visibility_roles');
if( ! $dashboard_widgets_visibility_roles ) return;
if (!$this->has_current_user_role($dashboard_widgets_visibility_roles))
return;
}
$this->set_dashboard_all_hidden();
$this->remove_metaboxes();
$this->remove_dashed_border();
}
private function reset_dashboard_style() {
wlcms_set_css(
'.wlcms-welcome-panel .elementor div,
.wlcms-welcome-panel .elementor h1,
.wlcms-welcome-panel .elementor h2,
.wlcms-welcome-panel .elementor h3,
.wlcms-welcome-panel .elementor h4,
.wlcms-welcome-panel .elementor h5,
.wlcms-welcome-panel .fl-builder-content p,
.wlcms-welcome-panel p',
array(
'border' => '0',
'font-size' => '100%',
'font' => 'inherit',
'line-height' => 'inherit',
'vertical-align' => 'baseline',
'color' => 'unset'
)
);
wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content > h2',
array(
'width' => '95%',
'padding' => '0 21px'
)
);
wlcms_set_css( '.wlcms-welcome-panel .wlcms-welcome-content',
array(
'padding' => '20px'
)
);
wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content',
array(
'max-width' => 'none!important',
'margin-left' => '0!important',
'justify-content' => 'flex-start',
'min-height' => 'auto'
)
);
wlcms_set_css( '.wlcms-welcome-panel .elementor-section-full_width',
array(
'width' => '100%!important',
'left' => '0!important'
)
);
wlcms_set_css( '.wlcms-welcome-panel', array(
'position' => 'relative',
"border"=>"1px solid #c3c4c7",
"box-shadow"=>"0 1px 1px rgb(0 0 0 / 4%)",
"background"=>"#fff",
"font-size"=>"13px",
"line-height"=>"1.7",
"margin" => "16px 0"
));
wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-close:before', array(
"background"=>"0 0",
"color"=>"#787c82",
"content"=>'"\f153"',
"display"=>"block",
"font"=>"normal 16px/20px dashicons",
"speak"=>"never",
"height"=>"20px",
"text-align"=>"center",
"width"=>"20px",
"-webkit-font-smoothing"=>"antialiased",
"-moz-osx-font-smoothing"=>"grayscale",
"position"=>"absolute",
"top"=>"8px",
"left"=>"0",
"transition"=>"all .1s ease-in-out",
));
wlcms_set_css( '.wlcms-welcome-panel, .wlcms-welcome-panel .welcome-panel-content', array(
'padding' => '0!important',
));
wlcms_set_css( '.wlcms-welcome-panel a', array(
"color"=>"#2271b1",
));
wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-close',
array(
'top' => '0!important',
'right' => '0!important',
'background' => 'white!important',
'z-index' => '1000',
"position"=>"absolute",
"top"=>"0",
"right"=>"0",
"padding"=>"10px 15px 10px 24px",
"font-size"=>"13px",
"line-height"=>"1.23076923",
"text-decoration"=>"none"
)
);
}
private function set_dashboard_all_hidden()
{
$this->is_dashboard_all_hidden = $this->get_settings('hide_all_dashboard_panels');
}
public function is_dashboard_all_hidden()
{
return $this->is_dashboard_all_hidden;
}
/**
* Change Dashboard H1 Title by using js
*
* @return void
*/
private function dashboard_title()
{
global $current_screen, $wp_version;
$dashboard_title = '';
if ($icon = $this->get_settings('dashboard_icon')) {
$dashboard_title .= '<span id=\"wlcms_dashboard_logo\"><img src=\"' . $icon . '\" alt=\"\" /></span>';
wlcms_set_css('.index-php #wlcms_dashboard_logo img', array('vertical-align' => 'middle', 'padding-right' => '10px'));
}
if ($title = $this->get_settings('dashboard_title')) {
$dashboard_title .= '<span id=\"wlcms_dashboard_title\">' . $title . '</span>';
}
if (version_compare($wp_version, '3.8-beta', '>=')) {
wlcms_add_js('jQuery(".index-php #wpbody-content .wrap h1:eq(0)").html("' . $dashboard_title . '")');
return;
}
wlcms_add_js('jQuery("#icon-index").html("' . $dashboard_title . '")');
return;
}
/**
* Removed Wordpress Dashboard metaboxes if set to true
*
* @return void
*/
private function remove_metaboxes()
{
global $wp_meta_boxes;
$wlcms_widgets = $this->get_settings('dashboard_widgets');
if (!(isset($wp_meta_boxes['dashboard']) && is_array($wp_meta_boxes['dashboard']))) {
return;
}
foreach ($wp_meta_boxes['dashboard'] as $section_key => $section) {
if (!is_array($section)) {
continue;
}
foreach ( $section as $position_key => $position ) {
if (!is_array($position)) {
continue;
}
foreach ( $position as $widget_id => $widget ) {
if ($this->is_wlcms_widget($widget_id)) {
continue;
}elseif (!$this->is_dashboard_all_hidden()) {
if($wlcms_widgets && is_array($wlcms_widgets) && count($wlcms_widgets) > 0){
if (!in_array($widget_id, $wlcms_widgets)) {
continue;
}
} else {
continue;
}
}
unset($wp_meta_boxes['dashboard'][$section_key][$position_key][$widget_id]);
}
}
}
}
private function is_wlcms_widget($dashboard_key = false)
{
if (!$dashboard_key){
return false;
}
if (strpos($dashboard_key, 'custom_vum_widget') !== false) {
return true;
}
return in_array($dashboard_key, $this->excluded_widgets());
}
private function excluded_widgets()
{
return apply_filters('wlcms_exclude_dashboard_metaboxes', array('wlcms_rss_box'));
}
/**
* Add Own Welcome panel if set to true
*
* @return void
*/
private function set_welcome_metabox()
{
$user_id = get_current_user_id();
if( $user_id == 0 )
{
return false;
}
$welcome_panels = wlcms_field_setting('welcome_panel');
if (!$welcome_panels || !is_array($welcome_panels)) {
return;
}
if (!count($welcome_panels) === 0) {
return;
}
$admin_Dashboard_Welcome_Message = wlcms()->require_class("Admin_Dashboard_Welcome_Message");
$admin_Dashboard_Welcome_Message = new Admin_Dashboard_Welcome_Message();
foreach ($welcome_panels as $key => $welcome_panel) {
if (!$this->is_welcome_panel_visible($welcome_panel) || !is_array($welcome_panel)) {
continue;
}
$welcome_content_hidden = get_user_meta($user_id, 'vum_hide_dashboard' . $key ,true);
if( $welcome_content_hidden && isset($welcome_panel['dismissible']) ) {
continue;
}
$admin_Dashboard_Welcome_Message->set($welcome_panel, $key);
$admin_Dashboard_Welcome_Message->handle();
}
$admin_Dashboard_Welcome_Message->make_welcome_panel($welcome_panels);
wlcms_set_css('.index-php .wlcms-welcome-panel-content', array('margin' => '13px', 'padding-bottom' => '25px!important'));
}
private function is_welcome_panel_visible($setting)
{
if (!isset($setting['is_active'])) {
return false;
}
if ($setting['is_active'] != '1') {
return false;
}
if (!isset($setting['visible_to'])
|| (isset($setting['visible_to']) && !$setting['visible_to']))
return false;
$roles = $setting['visible_to'];
return $this->has_current_user_role($roles);
}
private function has_current_user_role($roles)
{
$user_role = wlcms_current_user_roles();
return in_array($user_role, $roles);
}
/**
* Remove Dashboard Border Line if set to true
*
* @return void
*/
private function remove_dashed_border()
{
if (!$this->get_settings('remove_empty_dash_panel')) {
return;
}
wlcms_set_css('body.index-php #dashboard-widgets .postbox-container .empty-container', array('border' => '0', 'visibility' => 'hidden'));
}
/**
* Remove Wordpress Core News and Event if set to troe
*
* @return void
*/
public function remove_news_and_events()
{
if (!$this->get_settings('hide_news_and_events')) {
return;
}
remove_meta_box('dashboard_primary', 'dashboard', 'core');
wlcms_add_js(';jQuery("#community-events").remove();jQuery(".community-events-footer").remove();jQuery("#dashboard_primary h2 span").remove();');
}
/**
* Add RSS Dashboard Metabox
*
* @return void
*/
public function add_own_rss_panel()
{
if (!$this->get_settings('add_own_rss_panel')) {
return;
}
if (!$this->get_settings('rss_feed_address')) {
return;
}
$title = '';
$this->get_settings('rss_title');
if ($logo = $this->get_settings('rss_logo')) {
$title .= '<img src="' . esc_url($logo) . '" height="16" width="16" alt="Logo" style="padding-right:5px;vertical-align:bottom;"/> ';
}
if ($rss_title = $this->get_settings('rss_title')) {
$title .= $rss_title;
}
wp_add_dashboard_widget(
'wlcms_rss_box',
!empty($title) ? $title : ' ',
array($this, 'rss_box')
);
}
/**
* Display RSS Metabox to the dashboard
* called by wp_add_dashboard_widget
*
* @return void
*/
public function rss_box()
{
include_once(ABSPATH . WPINC . '/feed.php');
$num_items = $this->get_settings('rss_feed_number_of_item');
$introduction = $this->get_settings('rss_introduction');
$show_post_content = $this->get_settings('show_post_content');
$url = $this->get_settings('rss_feed_address');
if ($introduction) {
echo '<p>' . $introduction . '</p>';
}
$rss = fetch_feed($url);
if ($error = is_wp_error($rss)) {
echo '<div class="warning-text">' . $rss->get_error_message() . '</div>';
wlcms_set_css(
'.index-php .warning-text',
array('color' => 'rgba(240, 116, 95, 0.808)', 'display' => 'block')
);
return;
}
$maxitems = $rss->get_item_quantity($num_items);
$rss_items = $rss->get_items(0, $maxitems);
if ($maxitems == 0) {
echo 'No items.';
return;
}
$rss_list = '<ul>';
foreach ($rss_items as $item) :
$rss_list .= sprintf(
'<li><strong><a href="%s" title="Posted %s" target="_blank">%s</a> </strong> <br />',
esc_url($item->get_permalink()),
$item->get_date('j F Y | g:i a'),
esc_html($item->get_title())
);
if ($show_post_content) :
$rss_list .= preg_replace('/<img[^>]+./', '', $item->get_content());
endif;
$rss_list .= '</li>';
endforeach;
$rss_list .= '</ul>';
echo $rss_list;
}
public function hide_vum_dashboard()
{
if ( !wp_verify_nonce( $_REQUEST['nonce'], "vum_hide_dashboard_nonce")) {
exit("No naughty business please");
}
$user_id = get_current_user_id();
if( $user_id == 0 )
{
return false;
}
$key = sanitize_text_field($_POST['key']);
update_user_meta($user_id, 'vum_hide_dashboard' . $key, 1);
echo json_encode(array('type' => 'success'));
exit;
}
public function reset_welcome_dashboard()
{
if(! isset($_GET['wlcms-action']) ) return;
if( $_GET['wlcms-action'] !== 'reset-welcome-dashboard' ) return;
if(! isset($_GET['dashboard']) ) return;
if( ! is_wlcms_super_admin() ) return;
$key = sanitize_text_field($_GET['dashboard']);
delete_metadata( 'user', 0, 'vum_hide_dashboard'. $key, '', true );
WLCMS_Queue('Welcome dashboard message successfully reset.');
}
public function widgets()
{
global $wp_meta_boxes;
if (isset( $wp_meta_boxes['dashboard'] ) && is_array( $wp_meta_boxes['dashboard'])) {
return $wp_meta_boxes['dashboard'];
}
require_once ABSPATH . '/wp-admin/includes/dashboard.php';
set_current_screen( 'dashboard' );
//remove wlcms hook
remove_action('wp_dashboard_setup', array($this, 'dashboard_setup'), 999);
wp_dashboard_setup();
//re-apply wlcms hook
add_action('wp_dashboard_setup', array($this, 'dashboard_setup'), 999);
set_current_screen( get_current_screen() );
return $wp_meta_boxes['dashboard'];
}
}