/** * Display a filter to select the current membership * * @since 1.0.0 */ public function membership_filter() { $memberships = MS_Model_Membership::get_membership_names(array('active' => true, 'include_guest' => false)); $url = esc_url_raw(remove_query_arg(array('membership_id', 'paged'))); $links = array(); $links['all'] = array('label' => __('All', MS_TEXT_DOMAIN), 'url' => $url); foreach ($memberships as $id => $name) { if (empty($name)) { $name = __('(No Name)', MS_TEXT_DOMAIN); } $filter_url = esc_url_raw(add_query_arg(array('membership_id' => $id), $url)); $links['ms-' . $id] = array('label' => esc_html($name), 'url' => $filter_url); } ?> <div class="wp-filter"> <ul class="filter-links"> <?php foreach ($links as $key => $item) { $is_current = MS_Helper_Utility::is_current_url($item['url']); $class = $is_current ? 'current' : ''; ?> <li> <a href="<?php echo esc_url($item['url']); ?> " class="<?php echo esc_attr($class); ?> "> <?php echo esc_html($item['label']); ?> </a> </li> <?php } ?> </ul> </div> <?php }
/** * Sets up the 'Billing' navigation and list page. * * @since 1.0.0 */ public function admin_page() { $this->print_admin_message(); // Action view page request $isset = array('action', 'invoice_id'); if (self::validate_required($isset, 'GET', false) && 'edit' == $_GET['action']) { $invoice_id = !empty($_GET['invoice_id']) ? $_GET['invoice_id'] : 0; $data['invoice'] = MS_Factory::load('MS_Model_Invoice', $_GET['invoice_id']); $data['action'] = $_GET['action']; $data['memberships'] = MS_Model_Membership::get_membership_names(array('include_guest' => 0)); $view = MS_Factory::create('MS_View_Billing_Edit'); $view->data = apply_filters('ms_view_billing_edit_data', $data); $view->render(); } else { $view = MS_Factory::create('MS_View_Billing_List'); $view->render(); } }
/** * Bulk actions options. * * @since 1.0.0 * * @param array { * @type string $action The action name. * @type mixed $desciption The action description. * } */ public function get_bulk_actions() { $protect_key = __('Add Membership', MS_TEXT_DOMAIN); $unprotect_key = __('Drop Membership', MS_TEXT_DOMAIN); $bulk_actions = array('drop-all' => __('Drop all Memberships', MS_TEXT_DOMAIN), $protect_key => array(), $unprotect_key => array()); $args = array('include_guest' => 0); $memberships = MS_Model_Membership::get_membership_names($args); $txt_add = __('Add: %s', MS_TEXT_DOMAIN); $txt_rem = __('Drop: %s', MS_TEXT_DOMAIN); foreach ($memberships as $id => $name) { $bulk_actions[$protect_key]['add-' . $id] = sprintf($txt_add, $name); $bulk_actions[$unprotect_key]['drop-' . $id] = sprintf($txt_rem, $name); } return apply_filters('ms_helper_listtable_member_get_bulk_actions', $bulk_actions, $this); }
/** * Render the Coupon admin manager. * * @since 1.0.0 */ public function admin_coupon() { $isset = array('action', 'coupon_id'); if (self::validate_required($isset, 'GET', false) && 'edit' == $_GET['action']) { // Edit action view page request $coupon_id = !empty($_GET['coupon_id']) ? $_GET['coupon_id'] : 0; $data['coupon'] = MS_Factory::load('MS_Addon_Coupon_Model', $coupon_id); $data['memberships'] = array(__('Any', MS_TEXT_DOMAIN)); $data['memberships'] += MS_Model_Membership::get_membership_names(); $data['action'] = $_GET['action']; $view = MS_Factory::create('MS_Addon_Coupon_View_Edit'); $view->data = apply_filters('ms_addon_coupon_view_edit_data', $data); $view->render(); } else { // Coupon admin list page $view = MS_Factory::create('MS_Addon_Coupon_View_List'); $view->render(); } }
/** * Defines bulk-actions that are available for this list. * * @since 1.0.0 * @return array */ public function get_bulk_actions() { $protect_key = __('Add Membership', 'membership2'); $unprotect_key = __('Drop Membership', 'membership2'); $bulk_actions = array('rem-all' => __('Drop all Memberships', 'membership2'), $protect_key => array(), $unprotect_key => array()); $memberships = MS_Model_Membership::get_membership_names(); $txt_add = __('Add: %s', 'membership2'); $txt_rem = __('Drop: %s', 'membership2'); foreach ($memberships as $id => $name) { $bulk_actions[$protect_key]['add-' . $id] = sprintf($txt_add, $name); $bulk_actions[$unprotect_key]['rem-' . $id] = sprintf($txt_rem, $name); } return apply_filters('ms_helper_listtable_' . $this->id . '_bulk_actions', $bulk_actions); }
/** * Do membership content protection shortcode. * * self::PROTECT_CONTENT_SHORTCODE * * Verify if content is protected comparing to self::$membership_ids. * * @since 1.0.0 * * @param array $atts The shortcode attributes. * @param string $content The content inside the shortcode. * @param string $code The shortcode code. * @return string The shortcode output */ public static function protect_content_shortcode($atts, $content = null, $code = '') { $atts = apply_filters('ms_model_shortcode_protect_content_shortcode_atts', shortcode_atts(array('id' => '', 'access' => true, 'silent' => false, 'msg' => false), $atts)); extract($atts); $membership_ids = explode(',', $id); if ($silent) { $msg = ''; } else { if (!is_string($msg) || !strlen($msg)) { $settings = MS_Factory::load('MS_Model_Settings'); $membership_id = apply_filters('ms_detect_membership_id', 0); $msg = $settings->get_protection_message(MS_Model_Settings::PROTECTION_MSG_SHORTCODE, $membership_id); } } $access = lib3()->is_true($access); if (!$access) { // No access to member of membership_ids if (self::is_member_of($membership_ids)) { // User belongs to these memberships and therefore cannot see // this content... if ($silent) { // Silent protection: Do not show a message, simply hide it $content = ''; } else { $content = '<div class="ms-protection-msg">'; if (!empty($msg)) { $content .= $msg; } else { $membership_names = MS_Model_Membership::get_membership_names(array('post__in' => $membership_ids)); $content .= __('No access to members of: ', 'membership2'); $content .= implode(', ', $membership_names); } $content .= '</div>'; } } } else { // Give access to member of membership_ids if (!self::is_member_of($membership_ids)) { // User does not belong to these memberships and therefore // cannot see this content... if ($silent) { // Silent protection: Do not show a message, simply hide it $content = ''; } else { $content = '<div class="ms-protection-msg">'; if (!empty($msg)) { $content .= $msg; } else { $membership_names = MS_Model_Membership::get_membership_names(array('post__in' => $membership_ids)); $content .= __('Content protected to members of: ', 'membership2'); $content .= implode(', ', $membership_names); } $content .= '</div>'; } } } return apply_filters('ms_rule_shortcode_model_protect_content_shortcode_content', do_shortcode($content), $atts, $content, $code); }