# timetics/1.0.2/core/admin/menu.php

Timetics – Appointment Booking Calendar &amp; Scheduling, version 1.0.2. 146 lines.

- Page: https://pluginprobe.com/plugins/timetics/1.0.2/code/core/admin/menu.php
- Raw: https://pluginprobe.com/plugins/timetics/1.0.2/raw/core/admin/menu.php
- Modified: 2023-04-04T11:35:18+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/timetics/1.0.2/code/core/admin/menu.php#L10-L20`.

```php
<?php

/**
 * Admin meni class
 *
 * @package Timetics
 */

namespace Timetics\Core\Admin;

/**
 * Class Menu
 */
class Menu
{

    use \Timetics\Utils\Singleton;

    /**
     * Initialize
     *
     * @return void
     */
    public function init()
    {
        add_action('admin_menu', array($this, 'register_admin_menu'));

        // go pro link
        if (!class_exists('TimeticsPro')) {
            add_action('admin_menu', array($this, 'add_pro_admin_menu'));
        }
    }


    /**
     * Register admin menu
     *
     * @return void
     */

    public function register_admin_menu()
    {
        global $submenu;
        $capability = 'manage_timetics';
        $slug       = 'timetics';
        $url        = 'admin.php?page=' . $slug . '#';
        $menu_items = array(
            [
                'title'      => __('Overview', 'timetics'),
                'link'       => '/',
                'capability' => $capability,
                'position'   => 1,
            ],
            [
                'title'      => __('Meetings', 'timetics'),
                'link'       => '/meetings',
                'capability' => 'read_booking',
                'position'   => 2,
            ],
            [
                'title'      => __('Staffs', 'timetics'),
                'link'       => '/staff',
                'capability' => 'edit_staff',
                'position'   => 3,
            ],

            [
                'title'      => __('Bookings', 'timetics'),
                'link'       => '/bookings',
                'capability' => 'read_booking',
                'position'   => 4,
            ],
            [
                'title'      => __('Customers', 'timetics'),
                'link'       => '/customers',
                'capability' => 'manage_options',
                'position'   => 5,
            ],
            [
                'title'      => __('Settings', 'timetics'),
                'link'       => '/settings',
                'capability' => 'manage_options',
                'position'   => 6,
            ],
            [
                'title'      => __('My Profile', 'timetics'),
                'link'       => '/my-profile',
                'capability' => 'edit_profile',
                'position'   => 7,
            ],
            [
                'title'      => __('Shortcodes', 'timetics'),
                'link'       => '/shortcodes',
                'capability' => 'edit_profile',
                'position'   => 8,
            ],
        );

        add_menu_page(
            __('Timetics', 'timetics'),
            __('Timetics', 'timetics'),
            $capability,
            $slug,
            array($this, 'timetics_dashboard_view'),
            'dashicons-store',
            10
        );

        $menu_items = apply_filters('timetics_menu', $menu_items);
        $position   = array_column($menu_items, 'position');

        array_multisort($position, SORT_ASC, $menu_items);

        foreach ($menu_items as $item) {
            $submenu[$slug][] = [$item['title'], $item['capability'], $url . $item['link']]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
        }
    }

    /**
     * Admin dashboard view
     *
     * @return void
     */
    public function timetics_dashboard_view()
    {
?>
        <div class="wrap" id="time_tics_dashboard">
        </div>
<?php
    }

    // Add submenu page under "Settings"
    public function add_pro_admin_menu()
    {
        add_submenu_page(
            'timetics',
            'Go Pro',
            'Go Pro',
            'manage_options',
            'https://arraytics.com/timetics',
            '',
            9,
        );
    }
}

```
