'public', ), $atts, 'aistma_dashboard_widget' ); if ( ! self::user_can_view( $atts['viewable_by'] ) ) { return ''; } if ( class_exists( 'AISTMA_Widgets_Manager' ) ) { AISTMA_Widgets_Manager::load_widget_classes(); } if ( ! class_exists( $widget_class ) || ! method_exists( $widget_class, 'render_widget' ) ) { return ''; } ob_start(); self::maybe_print_assets( $widget_class ); echo '
'; call_user_func( array( $widget_class, 'render_widget' ), array( 'show_footer' => false ) ); echo '
'; return ob_get_clean(); } private static function maybe_print_assets( $widget_class ) { if ( isset( self::$assets_printed_for[ $widget_class ] ) ) { return; } self::$assets_printed_for[ $widget_class ] = true; if ( method_exists( $widget_class, 'get_widget_styles' ) ) { $css = call_user_func( array( $widget_class, 'get_widget_styles' ) ); if ( ! empty( $css ) ) { echo ''; } } if ( method_exists( $widget_class, 'get_widget_scripts' ) ) { $js = call_user_func( array( $widget_class, 'get_widget_scripts' ) ); if ( ! empty( $js ) ) { echo ''; } } } private static function user_can_view( $viewable_by ) { switch ( $viewable_by ) { case 'admin': return current_user_can( 'manage_options' ); case 'logged_in': return is_user_logged_in(); case 'public': default: return true; } } } AISTMA_Dashboard_Shortcodes::init();