function widget($args, $instance) { extract($args); // build the check array $defaults = array('title' => '', 'content' => '', 'sub' => 'none'); foreach ($defaults as $key => $value) { if (isset($instance[$key])) { $defaults[$key] = $instance[$key]; } } extract($defaults); $show = false; switch ($sub) { case 'none': if (!is_user_logged_in() || !current_user_is_member()) { $show = true; } break; default: if (current_user_on_subscription($sub)) { $show = true; } break; } if ($show) { echo $before_widget; $title = apply_filters('widget_title', $title); if (!empty($title)) { echo $before_title . $title . $after_title; } echo do_shortcode($content); echo $after_widget; } }
/** * Tests if the current user has a specific membership subscription. * * @since 1.0.0 * @param array $data Contains the element ['membership_sub'] * @return boolean */ protected function user_has_subscription($data) { $result = false; if ($this->is_active) { $data = lib2()->array->get($data); lib2()->array->equip($data, 'membership_sub'); $data['membership_sub'] = lib2()->array->get($data['membership_sub']); foreach ($data['membership_sub'] as $subscription) { if (current_user_on_subscription($subscription)) { $result = true; break; } } } return $result; }