Advertisement
orangerdigiart

Sejoli Member Area - Example

Mar 2nd, 2021
1,852
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.69 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sejoli_Reward\Front;
  4.  
  5. class Member {
  6.  
  7.     /**
  8.      * The ID of this plugin.
  9.      *
  10.      * @since    1.0.0
  11.      * @access   private
  12.      * @var      string    $plugin_name    The ID of this plugin.
  13.      */
  14.     private $plugin_name;
  15.  
  16.     /**
  17.      * The version of this plugin.
  18.      *
  19.      * @since    1.0.0
  20.      * @access   private
  21.      * @var      string    $version    The current version of this plugin.
  22.      */
  23.     private $version;
  24.  
  25.     /**
  26.      * Menu position
  27.      * @since   1.0.0
  28.      * @var     integer
  29.      */
  30.     protected $menu_position = 1;
  31.  
  32.     /**
  33.      * Registered point member menu list
  34.      * @since   1.0.0
  35.      * @var     array
  36.      */
  37.     protected $member_menu = array();
  38.  
  39.     /**
  40.      * Initialize the class and set its properties.
  41.      *
  42.      * @since    1.0.0
  43.      * @param      string    $plugin_name       The name of the plugin.
  44.      * @param      string    $version    The version of this plugin.
  45.      */
  46.     public function __construct( $plugin_name, $version ) {
  47.  
  48.         $this->plugin_name = $plugin_name;
  49.         $this->version = $version;
  50.  
  51.         $this->member_menu = array(
  52.                                 'link'    => 'javascript::void(0)',
  53.                                 'label'   => __('Poin Anda', 'sejoli'),
  54.                                 'icon'    => 'gift icon',
  55.                                 'class'   => 'item',
  56.                                 'submenu' => array(
  57.                                     'point' => array(
  58.                                         'link'    => site_url('member-area/your-point'),
  59.                                         'label'   => __('Transaksi Poin', 'sejoli'),
  60.                                         'icon'    => '',
  61.                                         'class'   => 'item',
  62.                                         'submenu' => array()
  63.                                     ),
  64.                                     'reward' => array(
  65.                                         'link'    => site_url('member-area/reward-exchange'),
  66.                                         'label'   => __('Tukar Poin', 'sejoli'),
  67.                                         'icon'    => '',
  68.                                         'class'   => 'item',
  69.                                         'submenu' => array()
  70.                                     )
  71.                                 )
  72.                             );
  73.     }
  74.  
  75.     /**
  76.      * Register member area menu
  77.      * Hooked via filter sejoli/member-area/menu, priority 12
  78.      * @since   1.0.0
  79.      * @param   array  $menu
  80.      * @return  array
  81.      */
  82.     public function register_menu( array $menu ) {
  83.  
  84.         $menu = array_slice($menu, 0, $this->menu_position, true) +
  85.                 array( 'reward' => $this->member_menu ) +
  86.                 array_slice($menu, $this->menu_position, count($menu) - 1, true);
  87.  
  88.         return $menu;
  89.     }
  90.  
  91.     /**
  92.      * Add point menu to menu backend area
  93.      * Hooked via filter sejoli/member-area/backend/menu, priority 1222
  94.      * @since   1.0.0
  95.      * @param   array   $menu
  96.      * @return  array
  97.      */
  98.     public function add_menu_in_backend(array $menu) {
  99.  
  100.         $point_menu = array(
  101.             'title'  => __('Poin Anda', 'sejoli'),
  102.             'object' => 'sejoli-reward-point',
  103.             'url'    => site_url('member-area/your-point')
  104.         );
  105.  
  106.         // Add point menu in selected position
  107.         $menu   =   array_slice($menu, 0, $this->menu_position, true) +
  108.                     array('reward-point' => $point_menu) +
  109.                     array_slice($menu, $this->menu_position, count($menu) - 1, true);
  110.  
  111.         return $menu;
  112.     }
  113.  
  114.     /**
  115.      * Display link list for point member link
  116.      * Hooked via filter sejoli/member-area/menu-link, priority 1
  117.      * @since   1.0.0
  118.      * @param   string  $output
  119.      * @param   object  $object
  120.      * @param   array   $args
  121.      * @param   array   $setup
  122.      * @return  string
  123.      */
  124.     public function display_link_list_in_menu($output, $object, $args, $setup) {
  125.  
  126.         if('sejoli-reward-point' === $object->object) :
  127.             // YES IM LAZY
  128.             extract($args);
  129.  
  130.             ob_start();
  131.             ?>
  132.             <div class="master-menu">
  133.                 <a href="javascript:void(0)" class='item'>
  134.                     <i class='gift icon'></i>
  135.                     <?php echo $object->post_title; ?>
  136.                 </a>
  137.                 <ul class="menu">
  138.                 <?php foreach( $this->member_menu['submenu'] as $submenu ) : ?>
  139.                     <li>
  140.                         <a href="<?php echo $submenu['link']; ?>" class="<?php echo $submenu['class']; ?>">
  141.                         <?php if( !empty( $submenu['icon'] ) ) : ?>
  142.                         <i class="<?php echo $submenu['icon']; ?>"></i>
  143.                         <?php endif; ?>
  144.                         <?php echo $submenu['label']; ?>
  145.                         </a>
  146.                     </li>
  147.                 <?php endforeach; ?>
  148.                 </ul>
  149.             </div>
  150.             <?php
  151.  
  152.             $item_output = ob_get_contents();
  153.             ob_end_clean();
  154.  
  155.             return $item_output;
  156.         endif;
  157.  
  158.         return $output;
  159.     }
  160.  
  161.     /**
  162.      * Set template file for point menu template
  163.      * Hooked via sejoli/template-file, priority 122
  164.      * @since   1.0.0
  165.      * @param   string  $file
  166.      * @param   string  $view_request
  167.      */
  168.     public function set_template_file(string $file, string $view_request) {
  169.  
  170.         if('your-point' === $view_request) :
  171.  
  172.             return SEJOLI_REWARD_DIR . 'template/your-point.php';
  173.  
  174.         elseif('reward-exchange' === $view_request) :
  175.  
  176.             return SEJOLI_REWARD_DIR . 'template/reward-exchange.php';
  177.  
  178.         endif;
  179.  
  180.         return $file;
  181.     }
  182. }
  183.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement