# ever-compare/1.0.2/includes/classes/Admin/Dashboard.php

Ever Compare – Products Compare Plugin for WooCommerce, version 1.0.2. 152 lines.

- Page: https://pluginprobe.com/plugins/ever-compare/1.0.2/code/includes/classes/Admin/Dashboard.php
- Raw: https://pluginprobe.com/plugins/ever-compare/1.0.2/raw/includes/classes/Admin/Dashboard.php
- Modified: 2021-05-02T09:10:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ever-compare/1.0.2/code/includes/classes/Admin/Dashboard.php#L10-L20`.

```php
<?php
namespace EverCompare\Admin;
/**
 * Dashboard handlers class
 */
class Dashboard {

    /**
     * Menu capability
     */
    const MENU_CAPABILITY = 'manage_options';

    /**
     * Parent Menu Page Slug
     */
    const MENU_PAGE_SLUG = 'evercompare';

    /**
     * [$parent_menu_hook] Parent Menu Hook
     * @var string
     */
    static $parent_menu_hook = '';

    /**
     * [$_instance]
     * @var null
     */
    private static $_instance = null;

    /**
     * [instance] Initializes a singleton instance
     * @return [Admin]
     */
    public static function instance() {
        if ( is_null( self::$_instance ) ) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * Initialize the class
     */
    private function __construct() {

        Admin_Fields::instance();

        add_action( 'admin_menu', [ $this, 'add_menu' ], 20 );

        add_filter('plugin_action_links_'.EVERCOMPARE_BASE, [ $this, 'action_links' ] );
    }

    /**
    * [action_links] add plugin action link
    * @param  [array] $links default plugin action link
    * @return [array] plugin action link
    */
    public function action_links( $links ) {

        if ( ! current_user_can( self::MENU_CAPABILITY ) ) {
            return $links;
        }

        $settings_link = '<a href="'.admin_url( 'admin.php?page='.self::MENU_PAGE_SLUG ).'">'.esc_html__( 'Settings', 'ever-compare' ).'</a>'; 

        array_unshift( $links, $settings_link );

        return $links; 
    }

    /**
     * [add_menu] Admin Menu
     */
    public function add_menu(){

        global $submenu;

        self::$parent_menu_hook = add_menu_page( 
            esc_html__( 'Ever Compare', 'ever-compare' ), 
            esc_html__( 'Ever Compare', 'ever-compare' ), 
            self::MENU_CAPABILITY, 
            self::MENU_PAGE_SLUG, 
            [ $this,'dashboard' ], 
            'dashicons-update-alt', 
            59 
        );

        if ( current_user_can( self::MENU_CAPABILITY ) ) {

            foreach ( $this->sub_menu_nav() as $menukey => $menu ) {
                $submenu[ self::MENU_PAGE_SLUG ][] = array( 
                    esc_html__( $menu['title'], 'ever-compare' ), 
                    self::MENU_CAPABILITY,
                    'admin.php?page='.self::MENU_PAGE_SLUG.'#'.$menukey,
                );
            }

        }

        add_action( 'load-' . self::$parent_menu_hook, [ $this, 'init_hooks'] );
        

    }

    /**
     * Initialize our hooks for the admin page
     *
     * @return void
     */
    public function init_hooks() {
        add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
    }

    /**
     * [enqueue_scripts] Add Scripts Base Menu Slug
     * @param  [string] $hook
     * @return [void]
     */
    public function enqueue_scripts() {
        wp_enqueue_style( 'evercompare-admin' );
        wp_enqueue_script( 'evercompare-admin' );
    }

    /**
     * [dashboard] Dashboard plugin page
     * @return [HTML]
     */
    public function dashboard(){
        Admin_Fields::instance()->plugin_page();
    }

    /**
     * [sub_menu_nav]
     * @return [array]
     */
    public function sub_menu_nav() {

        $submenu = [
            'settings' => [
                'title'     => esc_html__( 'Settings', 'ever-compare' ),
                'subtitle'  => esc_html__( 'Settings', 'ever-compare' ),
                'icon'      => '',
                'class'     => '',
            ],
        ];

        return apply_filters( 'ever_compare_dashboard_submenu', $submenu );

    }
    

}
```
