Your IP : 3.14.134.206


Current Path : /var/www/wptbox/wp-content/mu-plugins/wp-nc-easywp/plugin/Traits/
Upload File :
Current File : /var/www/wptbox/wp-content/mu-plugins/wp-nc-easywp/plugin/Traits/AdminMenuableTrait.php

<?php

namespace WPNCEasyWP\Traits;

if (!defined('ABSPATH')) {
  exit;
}

use WPNCEasyWP\Support\AdminMenu;

trait AdminMenuableTrait
{

  protected $title;

  protected function addMenuItem($title)
  {
    $this->title = $title;

    add_filter('wpnceasywp_admin_menu', [$this, 'adminBarMenuItem'], 10, 2);

    // single clear all
    add_action(AdminMenu::ACTION_KEY . "_{$this->action}", [$this, 'doActionMenu']);
  }

  protected function enableForClearAll()
  {
    // massive clear
    add_action(AdminMenu::ACTION_KEY . "_" . AdminMenu::ACTION_CLEAR_ALL, [$this, 'doActionMenuForClearAll']);
  }

  /**
   * Add a menu item in admin menu bar.
   *
   * @param array $adminMenu
   * @return array
   */
  public function adminBarMenuItem(array $adminMenu): array
  {
    $adminMenu[] = [
      'parent' => AdminMenu::PARENT_MENU_ID,
      'id' => $this->action,
      'title' => $this->title,
      'href' => wp_nonce_url(add_query_arg(AdminMenu::ACTION_KEY, $this->action), AdminMenu::NONCE),
      'meta' => [
        'title' => $this->title,
      ],
    ];

    return $adminMenu;
  }

  public function doActionMenuForClearAll()
  {
    $this->doActionMenu(true);

    if (!isset($GLOBALS['oneshot'])) {
      add_action('admin_notices', function () {
        echo '<div id="message" class="notice notice-success fade is-dismissible">';
        echo '<p>';
        _e('Cache cleared', 'wp-nc-easywp');
        echo '</p>';
        echo '</div>';
      });
      $GLOBALS['oneshot'] = true;
    }
  }

  // we are using a different action in order to display a different admin notice

  public function doActionMenu()
  {
    // you have to override this method
  }
}