Current File : /home/mdkeenpw/www/wp-content/plugins/trx_addons/components/dashboard-widget/dashboard-widget.php |
<?php
/**
* Add widget to the WordPress Dashboard
*
* @package ThemeREX Addons
* @since v1.6.44
*/
// Disable direct call
if ( ! defined( 'ABSPATH' ) ) { exit; }
// Define component's subfolder
if ( !defined('TRX_ADDONS_PLUGIN_DASHBOARD_WIDGET') ) define('TRX_ADDONS_PLUGIN_DASHBOARD_WIDGET', TRX_ADDONS_PLUGIN_COMPONENTS . 'dashboard-widget/');
// Refresh interval (in hours)
if ( !defined('TRX_ADDONS_PLUGIN_DASHBOARD_WIDGET_REFRESH') ) define('TRX_ADDONS_PLUGIN_DASHBOARD_WIDGET_REFRESH', 6);
// Add component to the global list
if (!function_exists('trx_addons_dashboard_widget_add_to_components')) {
add_filter( 'trx_addons_components_list', 'trx_addons_dashboard_widget_add_to_components' );
function trx_addons_dashboard_widget_add_to_components($list=array()) {
$list['dashboard_widget'] = array(
'title' => __('WP Dashboard widget', 'trx_addons')
);
return $list;
}
}
//-------------------------------------------------------
//-- Dashboard widget
//-------------------------------------------------------
// Register dashboard widget
if ( !function_exists( 'trx_addons_dashboard_widget_register' ) ) {
add_action( 'wp_dashboard_setup', 'trx_addons_dashboard_widget_register' );
function trx_addons_dashboard_widget_register() {
if ( trx_addons_components_is_allowed('components', 'dashboard_widget') ) {
// Register widget
// Translators: Add theme name
wp_add_dashboard_widget( 'trx_addons-dashboard-widget', sprintf(__( '%s Overview', 'trx_addons' ), wp_get_theme()->get( 'Name' ) ), 'trx_addons_dashboard_widget_display' );
// Move our widget to top.
global $wp_meta_boxes;
$dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
$ours = array(
'trx_addons-dashboard-widget' => $dashboard['trx_addons-dashboard-widget'],
);
$wp_meta_boxes['dashboard']['normal']['core'] = array_merge( $ours, $dashboard );
}
}
}
// Displays dashboard widget
if ( !function_exists( 'trx_addons_dashboard_widget_display' ) ) {
function trx_addons_dashboard_widget_display() {
// Get theme info & feed
$theme_info = apply_filters('trx_addons_filter_get_theme_feed', trx_addons_get_theme_info());
?><div class="trx_addons_dashboard_widget"><?php
// Header
?><div class="trx_addons_dashboard_widget_header">
<h6 class="trx_addons_dashboard_widget_title"><?php
if (!empty($theme_info['theme_page_url'])) {
?><a href="<?php echo esc_url($theme_info['theme_page_url']); ?>" class="button trx_addons_dashboard_widget_title_button"><i class="dashicons dashicons-nametag"></i> <?php
esc_html_e('Theme Dashboard', 'trx_addons');
?></a><?php
}
?><span class="trx_addons_dashboard_widget_title_text"><?php
// Translators: Add theme name and version
echo esc_html(sprintf(__('Welcome to %1$s v.%2$s', 'trx_addons'),
$theme_info['theme_name'],
$theme_info['theme_version']
));
?></span>
</h6>
</div><?php
// Top5 most visited pages
$top = apply_filters( 'trx_addons_dashboard_widget_top_visited_pages', 5 );
$visits = trx_addons_statistics_get_top_visited( apply_filters( 'trx_addons_dashboard_widget_top_visited_pages', $top ) );
if ( is_array( $visits ) && count( $visits ) > 0 ) {
?><div class="trx_addons_dashboard_widget_section trx_addons_dashboard_widget_section_most_visited">
<h5 class="trx_addons_dashboard_widget_section_title"><?php
echo esc_html( sprintf( __( 'Top %d most visited pages', 'trx_addons' ), $top ) );
?></h5>
<ul class="trx_addons_dashboard_widget_section_list">
<li class="trx_addons_dashboard_widget_section_item trx_addons_dashboard_widget_section_item_status_info">
<?php foreach( $visits as $data ) { ?>
<h3 class="trx_addons_dashboard_widget_section_item_header">
<a href="<?php echo esc_url( trim( home_url(), '/' ) . $data['url'] ); ?>" target="_blank" class="trx_addons_dashboard_widget_section_item_title">
<span class="trx_addons_dashboard_widget_section_item_header_text"><?php echo esc_html( $data['title'] ); ?></span>
<span class="trx_addons_dashboard_widget_section_item_header_data"><?php echo esc_html( trx_addons_num2kilo( $data['count'], 1 ) ) . ' (' . esc_html( $data['percent'] ) . '%)'; ?></span>
</a>
</h3>
<?php } ?>
</li>
</ul>
</div><?php
}
// News feed
if ( is_array( $theme_info['theme_feed'] ) && count( $theme_info['theme_feed'] ) > 0 ) {
foreach( $theme_info['theme_feed'] as $section => $data ) {
?><div class="trx_addons_dashboard_widget_section">
<h5 class="trx_addons_dashboard_widget_section_title"><?php
echo esc_html( $data['title'] );
?></h5>
<ul class="trx_addons_dashboard_widget_section_list"><?php
foreach( $data['items'] as $post ) {
?><li class="trx_addons_dashboard_widget_section_item<?php
if ( ! empty( $post['status'] ) && $post['status'] != 'none' ) {
echo ' trx_addons_dashboard_widget_section_item_status_' . esc_attr($post['status']);
}
if ( ! empty( $post['label'] ) && $post['label'] != 'none' ) {
echo ' trx_addons_dashboard_widget_section_item_label_' . esc_attr($post['label']);
}
?>"><?php
if ( ! empty($post['date']) || ! empty($post['title'] ) ) {
?><h3 class="trx_addons_dashboard_widget_section_item_header"><?php
if ( ! empty( $post['date'] ) ) {
?><span class="trx_addons_dashboard_widget_section_item_date"><?php echo esc_html($post['date']); ?></span><?php
}
if ( ! empty( $post['title'] ) ) {
if ( ! empty( $post['link'] ) ) {
?><a href="<?php echo esc_url($post['link']); ?>" target="_blank" class="trx_addons_dashboard_widget_section_item_title"><?php echo esc_html($post['title']); ?></a><?php
} else {
?><span class="trx_addons_dashboard_widget_section_item_title"><?php echo esc_html($post['title']); ?></span><?php
}
}
?></h3><?php
}
?><div class="trx_addons_dashboard_widget_section_item_description"><?php echo wp_kses($post['description'], 'trx_addons_kses_content'); ?></div>
</li><?php
}
?></ul>
</div><?php
}
}
// Footer
if ( is_array($theme_info['theme_actions']) && count($theme_info['theme_actions']) > 0) {
?><ul class="trx_addons_dashboard_widget_section_footer"><?php
foreach ($theme_info['theme_actions'] as $id => $action ) {
if ( empty( $action['link_text'] ) ) {
continue;
}
?><li class="trx_addons_dashboard_widget_section_footer_item trx_addons_dashboard_widget_section_footer_item_<?php echo esc_attr( $id ); ?>">
<a href="<?php echo esc_attr( $action['link'] ); ?>" target="_blank"><?php
echo esc_html( $action['link_text'] ); ?>
<span class="screen-reader-text"><?php esc_html_e( '(opens in a new window)', 'trx_addons' ); ?></span>
<span aria-hidden="true" class="dashicons dashicons-external"></span>
</a>
</li><?php
}
?></ul><?php
}
?></div><?php
}
}
// Get theme-specific feed
if ( !function_exists( 'trx_addons_get_theme_feed' ) ) {
add_filter( 'trx_addons_filter_get_theme_feed', 'trx_addons_get_theme_feed' );
function trx_addons_get_theme_feed($theme_info) {
$data = get_transient("trx_addons_dashboard_feed");
if ( ! $data ) {
//$user = wp_get_current_user();
// Detect active skin and version
$skin_slug = '';
$skin_version = '';
$skins_path = trailingslashit( get_template_directory() ) . 'skins';
if ( is_dir( $skins_path ) ) {
$skin_slug = get_option(
sprintf( 'theme_skin_%s', get_stylesheet() ),
is_dir( $skins_path . '/default' ) ? 'default' : ''
);
$skins_file = $skins_path . '/skins.json';
if ( ! empty( $skin_slug ) && file_exists( $skins_file ) ) {
$skins_installed = json_decode( trx_addons_fgc( $skins_file ), true );
if ( ! empty( $skins_installed[ $skin_slug ]['version'] ) ) {
$skin_version = $skins_installed[ $skin_slug ]['version'];
}
}
}
$response = wp_remote_post( trx_addons_get_protocol() . '://themerex.net/wp-json/trx_feed/v1/get/data', array(
'body' => apply_filters( 'trx_addons_filter_get_theme_feed_info',
array_merge(
$theme_info,
array(
'theme_code' => trx_addons_get_theme_activation_code(),
'skin_slug' => $skin_slug,
'skin_version' => $skin_version,
'site_url' => home_url( '/' ),
'site_name' => get_bloginfo( 'site_name' ),
//'site_admin' => get_option( 'admin_email' ),
//'site_user' => ! empty( $user->data->user_email ) ? $user->data->user_email : '',
//'site_user_name' => ! empty( $user->data->display_name ) ? $user->data->display_name : '',
)
)
),
'headers' => array( 'accept' => 'application/json' ),
'blocking' => true,
'sslverify' => false,
//'method' => 'POST',
//'timeout' => 45,
//'redirection' => 5,
//'httpversion' => '1.0',
//'cookies' => array()
)
);
if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) == 200 ) {
$data = json_decode( wp_remote_retrieve_body( $response ), true );
// Replace macros inside item's title, link and description
// and store data to the cache
if ( is_array( $data ) ) {
foreach( $data as $section => $content ) {
if ( ! empty( $content['title'] ) ) {
$data[$section]['title'] = trx_addons_feed_prepare_macros( $content['title'], $theme_info );
}
if ( is_array( $content['items'] ) ) {
foreach( $content['items'] as $k => $v ) {
if ( ! empty( $v['link'] ) ) $data[$section]['items'][$k]['link'] = trx_addons_feed_prepare_macros($v['link'], $theme_info);
if ( ! empty( $v['title'] ) ) $data[$section]['items'][$k]['title'] = trx_addons_feed_prepare_macros($v['title'], $theme_info);
if ( ! empty( $v['description'] ) ) $data[$section]['items'][$k]['description'] = nl2br(trx_addons_feed_prepare_macros($v['description'], $theme_info));
}
}
}
set_transient("trx_addons_dashboard_feed", $data, TRX_ADDONS_PLUGIN_DASHBOARD_WIDGET_REFRESH*60*60);
}
}
}
if ( is_array( $data ) ) {
// Leave single random FAQ item
if (!empty($data['faq']['items']) && is_array($data['faq']['items']) && ($total = count($data['faq']['items'])) > 1) {
$data['faq']['items'] = array($data['faq']['items'][mt_rand(0, $total - 1)]);
}
$theme_info['theme_feed'] = $data;
}
return $theme_info;
}
}
// Replace macros '{theme_name}', '{user_name}', '{theme_page}', etc.
if ( !function_exists( 'trx_addons_feed_prepare_macros' ) ) {
function trx_addons_feed_prepare_macros($str, $theme_info) {
return str_replace(
array(
'{theme_page}',
'{theme_name}',
'{theme_version}',
'{theme_doc}',
'{theme_support}',
'{user_name}',
'{site_name}',
'{site_url}',
),
array(
! empty( $theme_info['theme_page_url'] ) ? $theme_info['theme_page_url'] : '',
! empty( $theme_info['theme_name'] ) ? $theme_info['theme_name'] : '',
! empty( $theme_info['theme_version'] ) ? $theme_info['theme_version'] : '',
! empty( $theme_info['theme_actions']['doc']['link'] ) ? $theme_info['theme_actions']['doc']['link'] : '',
! empty( $theme_info['theme_actions']['support']['link'] ) ? $theme_info['theme_actions']['support']['link'] : '',
! empty( $theme_info['site_user_name'] ) ? $theme_info['site_user_name'] : '',
! empty( $theme_info['site_name'] ) ? $theme_info['site_name'] : '',
! empty( $theme_info['site_url'] ) ? $theme_info['site_url'] : '',
),
$str
);
}
}