| Current Path : /home/ereika83/www/wp-content/plugins/genesis-club-pro/classes/ |
| Current File : /home/ereika83/www/wp-content/plugins/genesis-club-pro/classes/class-menu-pro.php |
<?php
class Genesis_Club_Menu_Pro extends Genesis_Club_Menu {
protected $pro_defaults = array(
'loginout' => false,
'login_text' => 'Member Login',
'logout_text' => 'Logout',
);
function get_defaults() {
return array_merge($this->defaults, $this->pro_defaults);
}
function init() {
$this->is_html5 = $this->utils->is_html5();
if (!is_admin()) add_action('wp', array($this,'prepare'));
}
function prepare() {
if (($loginout = $this->get_option('loginout')) && ('none' != $loginout)) {
add_filter('wp_nav_menu_items', array($this,'maybe_add_loginout'),10,2 );
}
add_filter( 'genesis_club_menu_stripper', array($this, 'strip_menu'), 10, 2);
parent::prepare();
}
function maybe_add_loginout($items, $args) {
$loginout = $this->get_option('loginout');
if (($args->theme_location == $loginout)
|| (('header' == $loginout) && has_filter('wp_nav_menu', 'genesis_header_menu_wrap'))) {
if (is_user_logged_in()) {
$class = 'logout';
$url = wp_logout_url();
$text = $this->get_option('logout_text');
if (empty($text)) $text = $this->get_default('logout_text');
} else {
$class = 'login';
$url = site_url('wp-login.php') ;
$text = $this->get_option('login_text');
if (empty($text)) $text = $this->get_default('login_text');
}
return $items .sprintf('<li class="menu-item %1$s"><a href="%2$s">%3$s</a></li>', $class, $url, $text); ;
} else {
return $items;
}
}
function strip_menu($menu, $original_menu){
$strip_menu = strip_tags($original_menu,'<ul><li><a><span>'); //strip any unexpected tags
$current_pattern = '/<li id="menu\-\item-(?P<id>\d+)"\ class=".*?current\-menu\-item.*?">(.*)<\/li>/';
if (preg_match($current_pattern, $strip_menu, $matches)) {
$id_pattern = sprintf('#\sid="menu\-item\-%1$s"#', $matches['id']); //current page menu item
$strip_menu = preg_replace($id_pattern, ' class="active"', preg_replace('#\sclass="[^"]+"#', '', $strip_menu)); //strip all classes and put back active
$strip_menu = preg_replace('#\sid="[^"]+"#', '', $strip_menu); //strip the IDs
} else {
$strip_menu = preg_replace('#\s(id|class)="[^"]+"#', '', $strip_menu); //strip ids and classes
}
return $strip_menu;
}
}