/**
     * Returns the contens of the dialog
     *
     * @since  1.0.0
     *
     * @return object
     */
    public function get_contents($data)
    {
        $subscription = $data['model'];
        $gateways = MS_Model_Gateway::get_gateway_names(false, true);
        if (isset($gateways[$subscription->gateway_id])) {
            $gateway = $gateways[$subscription->gateway_id];
        } elseif (empty($subscription->gateway_id)) {
            $gateway = __('- No Gateway -', 'membership2');
        } else {
            $gateway = '(' . $subscription->gateway_id . ')';
        }
        $events = MS_Model_Event::get_events(array('topic' => 'membership', 'nopaging' => true, 'relationship_id' => $subscription->id));
        $sub_details = array('title' => __('Subscription Details', 'membership2'), 'type' => MS_Helper_Html::TYPE_HTML_TABLE, 'value' => array(array('Subscription ID', $subscription->id), array('Membership', $subscription->get_membership()->name), array('Payment Gateway', $gateway), array('Payment Type', $subscription->get_payment_description(null, true)), array('Subscription Start', $subscription->start_date), array('Subscription End', $subscription->expire_date), array('Status', $subscription->status)), 'field_options' => array('head_col' => true));
        $evt_details = array();
        foreach ($events as $event) {
            $evt_details[] = array('title' => __('Event Details', 'membership2'), 'type' => MS_Helper_Html::TYPE_HTML_TABLE, 'value' => array(array('Event ID', $event->id), array('Date', $event->date), array('Description', $event->description)), 'field_options' => array('head_col' => true));
        }
        ob_start();
        ?>
		<div>
			<?php 
        MS_Helper_Html::html_element($sub_details);
        MS_Helper_Html::html_separator();
        foreach ($evt_details as $detail) {
            MS_Helper_Html::html_element($detail);
        }
        ?>
		</div>
		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_view_member_subscription_to_html', $html);
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_Content::RULE_ID);
        // This fixes the list-title generated by MS_Helper_ListTable_Rule.
        unset($_GET['status']);
        $rule_listtable = new MS_Rule_Content_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', array('title' => __('Comments & More Tag', MS_TEXT_DOMAIN), 'desc' => __('Decide how to protect Comments and More Tag contents.', MS_TEXT_DOMAIN)), MS_Rule_Content::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Pages', MS_TEXT_DOMAIN));
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_Content::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
 /**
  * Displays the import preview form.
  *
  * @since  1.0.0
  * @return string
  */
 public function to_html()
 {
     $data = apply_filters('ms_import_preview_data_before', $this->data['model']->source);
     $compact = !empty($this->data['compact']);
     if (!is_object($data)) {
         $data = (object) array('memberships' => array(), 'members' => array(), 'notes' => array(), 'settings' => array(), 'source' => '', 'export_time' => '');
     }
     // Converts object to array
     $data->memberships = (array) $data->memberships;
     $data->members = (array) $data->members;
     $fields = $this->prepare_fields($data);
     if ($compact) {
         $overview_box = array($fields['batchsize'], $fields['sep'], $fields['clear_all'], $fields['skip'], $fields['import']);
     } else {
         $overview_box = array($fields['details'], $fields['sep'], $fields['batchsize'], $fields['sep'], $fields['clear_all'], $fields['back'], $fields['import'], $fields['download']);
     }
     ob_start();
     MS_Helper_Html::settings_box($overview_box, __('Import Overview', 'membership2'));
     if (!$compact) {
         MS_Helper_Html::settings_box(array($fields['memberships']), __('List of all Memberships', 'membership2'), '', 'open');
         MS_Helper_Html::settings_box(array($fields['members']), __('List of all Members', 'membership2'), '', 'open');
         MS_Helper_Html::settings_box(array($fields['settings']), __('Imported Settings', 'membership2'), '', 'open');
     }
     echo '<script>window._ms_import_obj = ' . json_encode($data) . '</script>';
     $html = ob_get_clean();
     return apply_filters('ms_import_preview_object', $html, $data);
 }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_Category::RULE_ID);
        $rule_listtable = new MS_Rule_Category_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = array();
        $header_data['title'] = __('Choose which Categories you want to protect', 'membership2');
        $header_data['desc'] = '';
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', $header_data, MS_Rule_Category::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings ">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Categories', 'membership2'), 'search-cat');
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_Category::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     *
     * @return string
     */
    public function to_html()
    {
        $fields = $this->prepare_fields();
        $form_url = esc_url_raw(remove_query_arg(array('action', 'coupon_id')));
        if ($this->data['coupon']->is_valid()) {
            $title = __('Edit Coupon', 'membership2');
        } else {
            $title = __('Add Coupon', 'membership2');
        }
        ob_start();
        // Render tabbed interface.
        ?>
		<div class="ms-wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $title, 'title_icon_class' => 'wpmui-fa wpmui-fa-pencil-square'));
        ?>
			<form action="<?php 
        echo esc_url($form_url);
        ?>
" method="post" class="ms-form">
				<?php 
        MS_Helper_Html::settings_box($fields, '', '', 'static', 'ms-small-form');
        ?>
			</form>
			<div class="clear"></div>
		</div>
		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_addon_coupon_view_edit_to_html', $html, $this);
    }
    /**
     * Overrides parent's to_html() method.
     *
     * Creates an output buffer, outputs the HTML and grabs the buffer content before releasing it.
     * Creates a wrapper 'ms-wrap' HTML element to contain content and navigation. The content inside
     * the navigation gets loaded with dynamic method calls.
     * e.g. if key is 'settings' then render_settings() gets called, if 'bob' then render_bob().
     *
     * @todo Could use callback functions to call dynamic methods from within the helper, thus
     * creating the navigation with a single method call and passing method pointers in the $tabs array.
     *
     * @since  1.0.0
     *
     * @return object
     */
    public function to_html()
    {
        $this->check_simulation();
        // Setup navigation tabs.
        $tabs = $this->data['tabs'];
        $desc = array();
        ob_start();
        // Render tabbed interface.
        ?>
		<div class="ms-wrap wrap">
			<?php 
        $desc = $this->advanced_forms($desc);
        MS_Helper_Html::settings_header(array('title' => __('Membership 2 Settings', 'membership2'), 'title_icon_class' => 'wpmui-fa wpmui-fa-cog', 'desc' => $desc));
        $active_tab = MS_Helper_Html::html_admin_vertical_tabs($tabs);
        // Call the appropriate form to render.
        $tab_name = str_replace('-', '_', $active_tab);
        $callback_name = 'render_tab_' . $tab_name;
        $render_callback = apply_filters('ms_view_settings_edit_render_callback', array($this, $callback_name), $active_tab, $this->data);
        ?>
			<div class="ms-settings ms-settings-<?php 
        echo esc_attr($tab_name);
        ?>
">
				<?php 
        $html = call_user_func($render_callback);
        $html = apply_filters('ms_view_settings_' . $callback_name, $html);
        echo $html;
        ?>
			</div>
		</div>
		<?php 
        $this->render_settings_footer($tab_name);
        $html = ob_get_clean();
        return $html;
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_Adminside::RULE_ID);
        $rule_listtable = new MS_Rule_Adminside_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', array('title' => __('Protect Admin Side pages', 'membership2'), 'desc' => array(__('Note that WordPress also restricts access to pages before Content Protection is applied.', 'membership2'), __('Tip: Combine with the <b>User Role</b> rules to grant your members additional permission if required!', 'membership2'))), MS_Rule_Adminside::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box();
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_Adminside::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    public function to_html()
    {
        $this->check_simulation();
        // Search for orphaned relationships and delete them.
        MS_Model_Member::clean_db();
        $listview = MS_Factory::create('MS_Helper_ListTable_Member');
        $listview->prepare_items();
        ob_start();
        ?>

		<div class="wrap ms-wrap ms-member-list">
			<?php 
        MS_Helper_Html::settings_header(array('title' => __('Members', MS_TEXT_DOMAIN), 'title_icon_class' => 'wpmui-fa wpmui-fa-users', 'desc' => __('Here you can manage the Memberships of existing Users.', MS_TEXT_DOMAIN)));
        // Display a filter to switch between individual memberships.
        $this->membership_filter();
        $listview->views();
        $listview->search_box();
        ?>
			<form method="post">
				<?php 
        $listview->display();
        ?>
			</form>
		</div>

		<?php 
        $html = ob_get_clean();
        return $html;
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     *
     * @return string
     */
    public function to_html()
    {
        $this->check_simulation();
        $fields = $this->prepare_fields();
        $form_url = esc_url_raw(remove_query_arg(array('action', 'invoice_id')));
        if ($this->data['invoice']->is_valid()) {
            $title = __('Edit Billing', MS_TEXT_DOMAIN);
        } else {
            $title = __('Add Billing', MS_TEXT_DOMAIN);
        }
        ob_start();
        // Render tabbed interface.
        ?>
			<div class="ms-wrap ms-billing">
				<?php 
        MS_Helper_Html::settings_header(array('title' => $title, 'title_icon_class' => 'wpmui-fa wpmui-fa-pencil-square'));
        ?>
				<form action="<?php 
        echo $form_url;
        ?>
" method="post" class="ms-form">
					<?php 
        MS_Helper_Html::settings_box($fields, '', '', 'static', 'ms-small-form');
        ?>
				</form>
				<div class="clear"></div>
			</div>
		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_view_billing_edit_to_html', $html, $this);
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $fields = $this->prepare_fields();
        ob_start();
        ?>
		<div class="ms-membership-add ms-cols-2">
			<form method="post" id="ms-choose-type-form">
				<div class="ms-settings-row cf">
					<h3><?php 
        _e('Set the membership type:', MS_TEXT_DOMAIN);
        ?>
</h3>
					<?php 
        MS_Helper_Html::html_element($fields['type']);
        ?>
				</div>
				<div>
					<?php 
        foreach ($fields['control_fields'] as $field) {
            MS_Helper_Html::html_element($field);
        }
        ?>
				</div>
			</form>
		</div>
		<?php 
        $html = ob_get_clean();
        return $html;
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_MemberRoles::RULE_ID);
        $rule_listtable = new MS_Rule_MemberRoles_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data['title'] = __('Assign WordPress User Roles to your Members', MS_TEXT_DOMAIN);
        $header_data['desc'] = array(__('When assigning a Membership to any role, then this role will be added to all members of that Membership. You can even assign multiple roles to a single Membership.', MS_TEXT_DOMAIN), __('For security reasons the Administrator role cannot be assigned to a Membership.', MS_TEXT_DOMAIN));
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', $header_data, MS_Rule_MemberRoles::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Capability', MS_TEXT_DOMAIN));
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_MemberRoles::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $this->check_simulation();
        $membership = $this->data['membership'];
        $admin_message = MS_Helper_Membership::get_admin_message(array($membership->name), $membership);
        $title = MS_Helper_Membership::get_admin_title();
        $membership_list = MS_Factory::create('MS_Helper_ListTable_Membership');
        $membership_list->prepare_items();
        $create_new_button = array('id' => 'create_new_ms_button', 'type' => MS_Helper_Html::TYPE_HTML_LINK, 'url' => $this->data['create_new_url'], 'value' => __('Create New Membership', MS_TEXT_DOMAIN), 'class' => 'button');
        ob_start();
        ?>

		<div class="wrap ms-wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $title, 'desc' => array(__('Here you can view and edit all the Memberships you have created.', MS_TEXT_DOMAIN), $admin_message)));
        ?>
			<form action="" method="post">
				<div class="ms-list-table-wrapper ms-membership-list">
					<?php 
        MS_Helper_Html::html_element($create_new_button);
        $membership_list->display();
        MS_Helper_Html::html_element($create_new_button);
        ?>
				</div>
			</form>
		</div>

		<?php 
        $html = ob_get_clean();
        echo $html;
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $list_table = MS_Factory::create('MS_Helper_ListTable_Event');
        $list_table->prepare_items();
        if (isset($_REQUEST['membership_id'])) {
            $membership = MS_Factory::load('MS_Model_Membership', $_REQUEST['membership_id']);
            $title = sprintf(__('%s News', 'membership2'), $membership->get_name_tag());
            $url = esc_url_raw(add_query_arg(array('step' => MS_Controller_Membership::STEP_OVERVIEW), remove_query_arg(array('paged', 'order', 'post_mime_type', 'detached', 'orderby', 's'))));
            $back_link = array('id' => 'back', 'type' => MS_Helper_Html::TYPE_HTML_LINK, 'value' => __('&raquo; Back to Overview', 'membership2'), 'url' => $url, 'class' => 'wpmui-field-button button');
        } else {
            $title = __('Membership News', 'membership2');
            $back_link = '';
        }
        ob_start();
        ?>

		<div class="wrap ms-wrap ms-membership-news">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $title));
        MS_Helper_Html::html_element($back_link);
        $list_table->search_box();
        $list_table->views();
        ?>
			<form action="" method="post">
				<?php 
        $list_table->display();
        ?>
			</form>
		</div>

		<?php 
        $html = ob_get_clean();
        echo '' . $html;
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_Page::RULE_ID);
        $rule_listtable = new MS_Rule_Page_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', array('title' => __('Apply protection to Pages and and grant access to members', 'membership2'), 'desc' => __('All pages that do not have Content Protection applied are visible to Everyone', 'membership2')), MS_Rule_Page::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Pages', 'membership2'));
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_Page::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $this->check_simulation();
        $this->check_network();
        $desc = array(__('Choose Pages, Categories etc. that you want to make <strong>unavailable</strong> to visitors, and non-members.', 'membership2'));
        ob_start();
        // Render tabbed interface.
        ?>
		<div class="ms-wrap wrap ms-wrap-membership2">
			<?php 
        MS_Helper_Html::settings_header(array('title' => __('Set-up Protection Rules', 'membership2'), 'desc' => $desc));
        // Display a filter to switch between individual memberships.
        $this->membership_filter();
        // In network-wide protection mode allow user to select a site.
        $this->site_filter();
        $active_tab = $this->data['active_tab'];
        MS_Helper_Html::html_admin_vertical_tabs($this->data['tabs'], $active_tab);
        // Call the appropriate form to render.
        $callback_name = 'render_tab_' . str_replace('-', '_', $active_tab);
        $render_callback = array($this, $callback_name);
        $render_callback = apply_filters('ms_view_protectedcontent_define-' . $active_tab, $render_callback, $this->data);
        if (is_callable($render_callback)) {
            $html = call_user_func($render_callback);
        } else {
            // This is to notify devs that a file/hook is missing or wrong.
            $html = '<div class="ms-settings">' . '<div class="error below-h2"><p>' . '<em>No View defined by hook "ms_view_protectedcontent_define-' . $active_tab . '"</em>' . '</p></div>' . '</div>';
        }
        $html = apply_filters('ms_view_membership_protected_' . $active_tab, $html);
        echo $html;
        ?>
		</div>
		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_view_membership_protectedcontent_to_html', $html, $this);
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_MemberCaps::RULE_ID);
        $rule_listtable = new MS_Rule_MemberCaps_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = array();
        $header_data['title'] = __('Assign WordPress Capabilities to your Members', 'membership2');
        $header_data['desc'] = array(__('Fine-tune member permissions by assigning certain Capabilities to each Membership. All Members of that Membership are granted the specified Capabilities.', 'membership2'), __('Important: All users that are not inside these Memberships will be striped of any Protected Capability!', 'membership2'), __('You should only use these rules if you know what you are doing! Granting the wrong capabilities makes your website prone to abuse. For a bit of security we already removed the most critical Capabilities from this list.', 'membership2'));
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', $header_data, MS_Rule_MemberCaps::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Capability', 'membership2'));
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_MemberCaps::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $fields = $this->prepare_fields();
        $cols = count($fields['type']['field_options']);
        if ($cols < 2) {
            $cols = 2;
        }
        if ($cols > 3) {
            $cols = 2;
        }
        ob_start();
        ?>
		<div class="ms-wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => __('Create New Membership', MS_TEXT_DOMAIN), 'desc' => __('First up, choose a name and a type for your membership site.', MS_TEXT_DOMAIN)));
        ?>
			<div class="ms-settings ms-membership-add ms-cols-<?php 
        echo esc_attr($cols);
        ?>
">
				<form method="post" id="ms-choose-type-form">
					<div class="ms-settings-row cf">
						<h3><?php 
        _e('Choose a membership type:', MS_TEXT_DOMAIN);
        ?>
</h3>
						<?php 
        MS_Helper_Html::html_element($fields['type']);
        ?>
					</div>
					<div class="ms-settings-row cf">
						<?php 
        MS_Helper_Html::html_element($fields['name']);
        ?>
					</div>
					<div class="ms-settings-row cf">
						<div class="ms-options-wrapper">
							<?php 
        foreach ($fields['config_fields'] as $field) {
            echo '<span class="opt">';
            MS_Helper_Html::html_element($field);
            echo '</span>';
        }
        ?>
						</div>
					</div>
					<div class="ms-control-fields-wrapper">
						<?php 
        foreach ($fields['control_fields'] as $field) {
            MS_Helper_Html::html_element($field);
        }
        ?>
					</div>
				</form>
			</div>
		</div>
		<?php 
        $html = ob_get_clean();
        return $html;
    }
    public function to_html()
    {
        $settings = $this->data['settings'];
        $fields = array('plugin_enabled' => array('id' => 'plugin_enabled', 'type' => MS_Helper_Html::INPUT_TYPE_RADIO_SLIDER, 'title' => __('Content Protection', 'membership2'), 'desc' => __('This setting toggles the content protection on this site.', 'membership2'), 'value' => MS_Plugin::is_enabled(), 'data_ms' => array('action' => MS_Controller_Settings::AJAX_ACTION_TOGGLE_SETTINGS, 'setting' => 'plugin_enabled')), 'hide_admin_bar' => array('id' => 'hide_admin_bar', 'type' => MS_Helper_Html::INPUT_TYPE_RADIO_SLIDER, 'title' => __('Hide admin toolbar', 'membership2'), 'desc' => __('Hide the admin toolbar for non administrator users.', 'membership2'), 'value' => $settings->hide_admin_bar, 'data_ms' => array('action' => MS_Controller_Settings::AJAX_ACTION_TOGGLE_SETTINGS, 'setting' => 'hide_admin_bar')));
        $fields = apply_filters('ms_view_settings_prepare_general_fields', $fields);
        $setup = MS_Factory::create('MS_View_Settings_Page_Setup');
        $action_url = esc_url_raw(remove_query_arg(array('msg')));
        ob_start();
        MS_Helper_Html::settings_tab_header();
        ?>

		<form action="<?php 
        echo esc_url($action_url);
        ?>
" method="post" class="cf">
			<div class="cf">
				<div class="ms-half">
					<?php 
        MS_Helper_Html::html_element($fields['plugin_enabled']);
        ?>
				</div>
				<div class="ms-half">
					<?php 
        MS_Helper_Html::html_element($fields['hide_admin_bar']);
        ?>
				</div>
			</div>
			<?php 
        MS_Helper_Html::html_separator();
        MS_Helper_Html::html_element($setup->html_full_form());
        ?>
		</form>
		<?php 
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     *
     * @return string
     */
    public function to_html()
    {
        $code_list = MS_Factory::create('MS_Addon_Invitation_Helper_Listtable');
        $code_list->prepare_items();
        $title = __('Invitations', 'membership2');
        $add_new_button = array('id' => 'add_new', 'type' => MS_Helper_Html::TYPE_HTML_LINK, 'url' => MS_Controller_Plugin::get_admin_url(MS_Addon_Invitation::SLUG, array('action' => 'edit', 'invitation_id' => 0)), 'value' => __('Add New Code', 'membership2'), 'class' => 'button');
        ob_start();
        ?>
		<div class="wrap ms-wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $title, 'title_icon_class' => 'wpmui-fa wpmui-fa-ticket'));
        ?>
			<div>
				<?php 
        MS_Helper_Html::html_element($add_new_button);
        ?>
			</div>

			<form action="" method="post">
				<?php 
        $code_list->display();
        ?>
			</form>
			<p><em>
				<?php 
        _e('By default all Memberships are protected and require an invitation code to register.<br>You can manually change this for individual memberships via a new setting in the "Payment Options" settings of each membership.', 'membership2');
        ?>
			</em></p>
		</div>

		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_addon_invitation_view_list_to_html', $html, $this);
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_CptItem::RULE_ID);
        $rule_listtable = new MS_Rule_CptItem_ListTable($rule);
        $rule_listtable->prepare_items();
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', array('title' => __('Choose Custom Post Types you want to protect', MS_TEXT_DOMAIN), 'desc' => ''), MS_Rule_CptItem::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $rule_listtable->views();
        $rule_listtable->search_box(__('Posts', MS_TEXT_DOMAIN));
        ?>
			<form action="" method="post">
				<?php 
        $rule_listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_CptItem::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.1.0
     * @return string
     */
    public function to_html()
    {
        $this->check_simulation();
        // Setup navigation tabs.
        $tabs = $this->data['tabs'];
        $membership = $this->data['membership'];
        $desc = array();
        ob_start();
        // Render tabbed interface.
        ?>
		<div class="ms-wrap wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $membership->get_name_tag(), 'title_icon_class' => '', 'desc' => __('Edit Memberhip details and define Membership specific settings.', MS_TEXT_DOMAIN)));
        $active_tab = MS_Helper_Html::html_admin_vertical_tabs($tabs);
        // Call the appropriate form to render.
        $tab_name = str_replace('-', '_', $active_tab);
        $callback_name = 'render_tab_' . $tab_name;
        $render_callback = apply_filters('ms_view_membership_edit_render_callback', array($this, $callback_name), $active_tab, $this->data);
        ?>
			<div class="ms-settings ms-settings-<?php 
        echo esc_attr($tab_name);
        ?>
">
				<?php 
        $html = call_user_func($render_callback);
        $html = apply_filters('ms_view_settings_' . $callback_name, $html);
        echo $html;
        ?>
			</div>
		</div>
		<?php 
        $html = ob_get_clean();
        return $html;
    }
    public function to_html()
    {
        $membership = MS_Model_Membership::get_base();
        $rule = $membership->get_rule(MS_Rule_ReplaceMenu::RULE_ID);
        // This fixes the list-title generated by MS_Helper_ListTable_Rule.
        unset($_GET['status']);
        $listtable = new MS_Rule_ReplaceMenu_ListTable($rule);
        $listtable->prepare_items();
        $header_data = apply_filters('ms_view_membership_protectedcontent_header', array('title' => __('Replace Menus', 'membership2'), 'desc' => __('Replace or protect WordPress menus.', 'membership2')), MS_Rule_ReplaceMenu::RULE_ID, $this);
        ob_start();
        ?>
		<div class="ms-settings">
			<?php 
        MS_Helper_Html::settings_tab_header($header_data);
        $listtable->views();
        $listtable->search_box();
        ?>
			<form action="" method="post">
				<?php 
        $listtable->display();
        do_action('ms_view_membership_protectedcontent_footer', MS_Rule_ReplaceMenu::RULE_ID, $this);
        ?>
			</form>
		</div>
		<?php 
        MS_Helper_Html::settings_footer();
        return ob_get_clean();
    }
    /**
     * Create view output.
     *
     * @since  1.0.0
     *
     * @return string
     */
    public function to_html()
    {
        $coupon_list = MS_Factory::create('MS_Addon_Coupon_Helper_Listtable');
        $coupon_list->prepare_items();
        $title = __('Coupons', MS_TEXT_DOMAIN);
        $add_new_button = array('id' => 'add_new', 'type' => MS_Helper_Html::TYPE_HTML_LINK, 'url' => MS_Controller_Plugin::get_admin_url('coupons', array('action' => 'edit', 'coupon_id' => 0)), 'value' => __('Add New Coupon', MS_TEXT_DOMAIN), 'class' => 'button');
        ob_start();
        ?>
		<div class="wrap ms-wrap">
			<?php 
        MS_Helper_Html::settings_header(array('title' => $title, 'title_icon_class' => 'wpmui-fa wpmui-fa-credit-card'));
        ?>
			<div>
				<?php 
        MS_Helper_Html::html_element($add_new_button);
        ?>
			</div>

			<form action="" method="post">
				<?php 
        $coupon_list->display();
        ?>
			</form>
		</div>

		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_addon_coupon_view_list_to_html', $html, $this);
    }
    public function to_html()
    {
        $fields = $this->prepare_fields();
        $subscription = $this->data['ms_relationship'];
        $invoice = $subscription->get_current_invoice();
        $gateway = $this->data['gateway'];
        // Force ssl url
        $action_url = MS_Model_Pages::get_page_url(MS_Model_Pages::MS_PAGE_REGISTER, true);
        $action_url = apply_filters('ms_gateway_authorize_view_button_form_action_url', $action_url);
        $row_class = 'gateway_' . $gateway->id;
        if (!$gateway->is_live_mode()) {
            $row_class .= ' sandbox-mode';
        }
        ob_start();
        ?>
		<form action="<?php 
        echo esc_url($action_url);
        ?>
" method="post">
			<?php 
        MS_Helper_Html::html_element($fields['_wpnonce']);
        ?>
			<?php 
        MS_Helper_Html::html_element($fields['gateway']);
        ?>
			<?php 
        MS_Helper_Html::html_element($fields['ms_relationship_id']);
        ?>
			<?php 
        MS_Helper_Html::html_element($fields['step']);
        ?>
			<?php 
        MS_Helper_Html::html_element($fields['submit']);
        ?>
		</form>
		<?php 
        $payment_form = apply_filters('ms_gateway_form', ob_get_clean(), $gateway, $invoice, $this);
        ob_start();
        ?>
		<tr class="<?php 
        echo esc_attr($row_class);
        ?>
">
			<td class="ms-buy-now-column" colspan="2">
				<?php 
        echo $payment_form;
        ?>
			</td>
		</tr>
		<?php 
        $html = ob_get_clean();
        $html = apply_filters('ms_gateway_button-' . $gateway->id, $html, $this);
        $html = apply_filters('ms_gateway_button', $html, $gateway->id, $this);
        return $html;
    }
    public function to_html()
    {
        $fields = $this->prepare_fields();
        $classes = array();
        $classes[] = 'ms-tax-' . $fields['country_choice']['value'];
        ob_start();
        ?>
		<div class="ms-wrap <?php 
        echo esc_attr(implode(' ', $classes));
        ?>
">
			<div class="modal-header">
				<button type="button" class="close">&times;</button>
				<h4 class="modal-title"><?php 
        _e('Tax Settings', MS_TEXT_DOMAIN);
        ?>
</h4>
			</div>
			<div class="modal-body">

			<?php 
        foreach ($fields as $field) {
            MS_Helper_Html::html_element($field);
        }
        ?>

			</div>
			<div class="modal-footer">
				<button type="button" class="btn btn-default close"><?php 
        _e('Close', MS_TEXT_DOMAIN);
        ?>
</button>
				<button type="button" class="btn btn-primary save"><?php 
        _e('Save', MS_TEXT_DOMAIN);
        ?>
</button>
			</div>
			<div class="loading-message">
				<?php 
        _e('Saving data, please wait...', MS_TEXT_DOMAIN);
        ?>
			</div>
		</div>
		<div class="body-messages">
			<div class="ms-tax-loading-overlay"></div>
			<div class="ms-tax-loading-message"><?php 
        _e('Refreshing page, please wait...', MS_TEXT_DOMAIN);
        ?>
</div>
		</div>
		<?php 
        $html = ob_get_clean();
        return apply_filters('ms_addon_taxamo_userprofile', $html);
    }
    public function to_html()
    {
        $action_url = '';
        $fields = $this->prepare_fields();
        ob_start();
        ?>
			<div class='ms-wrap ms-card-info-wrapper'>
				<h2><?php 
        _e('Credit card info', MS_TEXT_DOMAIN);
        ?>
 </h2>
				<table class="ms-table">
					<tbody>
						<tr>
							<th><?php 
        _e('Card Number', MS_TEXT_DOMAIN);
        ?>
</th>
							<th><?php 
        _e('Card Expiration date', MS_TEXT_DOMAIN);
        ?>
</th>
						</tr>
						<tr>
							<td><?php 
        echo '**** **** **** ' . $this->data['authorize']['card_num'];
        ?>
</td>
							<td><?php 
        echo '' . $this->data['authorize']['card_exp'];
        ?>
</td>
						</tr>
					</tbody>
				</table>
				<form action="<?php 
        echo esc_url($action_url);
        ?>
" method="post">
					<?php 
        foreach ($fields as $field) {
            MS_Helper_Html::html_element($field);
        }
        ?>
				</form>
				<div class="clear"></div>
			</div>
		<?php 
        return ob_get_clean();
    }
    /**
     * Return the HTML code.
     *
     * @since  1.0.0
     * @return string
     */
    public function to_html()
    {
        $fields = $this->prepare_fields();
        $cancel = array('id' => 'cancel', 'type' => MS_Helper_Html::TYPE_HTML_LINK, 'title' => __('Cancel', MS_TEXT_DOMAIN), 'value' => __('Cancel', MS_TEXT_DOMAIN), 'url' => esc_url_raw(remove_query_arg(array('action'))), 'class' => 'wpmui-field-button button');
        $this->add_action('ms_view_frontend_profile_after_fields', 'add_scripts');
        ob_start();
        ?>
		<div class="ms-membership-form-wrapper">
			<?php 
        $this->render_errors();
        ?>
			<form id="ms-view-frontend-profile-form" class="form-membership" action="" method="post">
				<legend><?php 
        _e('Edit profile', MS_TEXT_DOMAIN);
        ?>
</legend>
				<?php 
        foreach ($fields as $field) {
            if (is_string($field)) {
                MS_Helper_Html::html_element($field);
            } elseif (MS_Helper_Html::INPUT_TYPE_HIDDEN == $field['type']) {
                MS_Helper_Html::html_element($field);
            } else {
                ?>
						<div class="ms-form-element ms-form-element-<?php 
                echo esc_attr($field['id']);
                ?>
">
							<?php 
                MS_Helper_Html::html_element($field);
                ?>
						</div>
						<?php 
            }
        }
        do_action('ms_view_frontend_profile_after_fields');
        do_action('ms_view_frontend_profile_extra_fields', $this->error);
        ?>
			</form>
			<div class="ms-form-element">
			<?php 
        MS_Helper_Html::html_link($cancel);
        ?>
			</div>
		</div>
		<?php 
        $html = ob_get_clean();
        $html = apply_filters('ms_compact_code', $html);
        return $html;
    }
    public function to_html()
    {
        $export_action = MS_Controller_Import::ACTION_EXPORT;
        $import_action = MS_Controller_Import::ACTION_PREVIEW;
        $messages = $this->data['message'];
        $preview = false;
        if (isset($messages['preview'])) {
            $preview = $messages['preview'];
        }
        $export_fields = array('export' => array('id' => 'btn_export', 'type' => MS_Helper_Html::INPUT_TYPE_SUBMIT, 'value' => __('Generate Export', 'membership2'), 'desc' => __('Generate an export file with the current membership settings. ' . '<em>Note that this is not a full backup of the plugin settings.</em>', 'membership2')), 'action' => array('id' => 'action', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => $export_action), 'nonce' => array('id' => '_wpnonce', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => wp_create_nonce($export_action)));
        $file_field = array('id' => 'upload', 'type' => MS_Helper_Html::INPUT_TYPE_FILE, 'title' => __('From export file', 'membership2'));
        $import_options = array('file' => array('text' => MS_Helper_Html::html_element($file_field, true), 'disabled' => !MS_Model_Import_File::present()), 'membership' => array('text' => __('Membership (WPMU DEV)', 'membership2'), 'disabled' => !MS_Model_Import_Membership::present()));
        $sel_source = 'file';
        if (isset($_POST['import_source']) && isset($import_options[$_POST['import_source']])) {
            $sel_source = $_POST['import_source'];
        }
        $import_fields = array('source' => array('id' => 'import_source', 'type' => MS_Helper_Html::INPUT_TYPE_RADIO, 'title' => __('Choose an import source', 'membership2'), 'field_options' => $import_options, 'value' => $sel_source), 'import' => array('id' => 'btn_import', 'type' => MS_Helper_Html::INPUT_TYPE_SUBMIT, 'value' => __('Preview Import', 'membership2'), 'desc' => __('Import data into this installation.', 'membership2')), 'action' => array('id' => 'action', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => $import_action), 'nonce' => array('id' => '_wpnonce', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => wp_create_nonce($import_action)));
        ob_start();
        MS_Helper_Html::settings_tab_header(array('title' => __('Import Tool', 'membership2')));
        ?>

		<div>
			<?php 
        if ($preview) {
            ?>
				<form action="" method="post">
					<?php 
            echo '' . $preview;
            ?>
				</form>
			<?php 
        } else {
            ?>
				<form action="" method="post" enctype="multipart/form-data">
					<?php 
            MS_Helper_Html::settings_box($import_fields, __('Import data', 'membership2'));
            ?>
				</form>
				<form action="" method="post">
					<?php 
            MS_Helper_Html::settings_box($export_fields, __('Export data', 'membership2'));
            ?>
				</form>
			<?php 
        }
        ?>
		</div>
		<?php 
        return ob_get_clean();
    }
 /**
  * Prepare fields that are displayed in the form.
  *
  * @since  1.0.1.0
  * @return array
  */
 protected function prepare_fields()
 {
     $action_save = MS_Addon_Attributes::AJAX_ACTION_SAVE_SETTING;
     $action_delete = MS_Addon_Attributes::AJAX_ACTION_DELETE_SETTING;
     $attribute_types = array('text' => __('Simple text field', MS_TEXT_DOMAIN), 'number' => __('Numeric field (integer)', MS_TEXT_DOMAIN), 'textarea' => __('Multi-line text', MS_TEXT_DOMAIN), 'bool' => __('Yes|No', MS_TEXT_DOMAIN));
     $field_def = MS_Addon_Attributes::list_field_def();
     $fieldlist = array();
     $fieldlist[] = array(__('Attribute Title', MS_TEXT_DOMAIN), __('Attribute Slug', MS_TEXT_DOMAIN), __('Attribute Type', MS_TEXT_DOMAIN), __('Attribute Infos', MS_TEXT_DOMAIN));
     foreach ($field_def as $field) {
         $fieldlist[] = array($field->title, '<code>' . $field->slug . '</code>', $field->type, $field->info);
     }
     $fields = array();
     $fields['fields'] = array('add_field' => array('id' => 'add_field', 'type' => MS_Helper_Html::INPUT_TYPE_BUTTON, 'value' => __('New Attribute', MS_TEXT_DOMAIN), 'class' => 'add_field'), 'fieldlist' => array('id' => 'fieldlist', 'type' => MS_Helper_Html::TYPE_HTML_TABLE, 'value' => $fieldlist, 'field_options' => array('head_row' => true), 'class' => 'field-list'));
     $fields['editor no-auto-init'] = array('title' => array('id' => 'title', 'class' => 'title', 'type' => MS_Helper_Html::INPUT_TYPE_TEXT, 'title' => __('Attribute Name', MS_TEXT_DOMAIN), 'desc' => __('A human readable title of the Attribute.', MS_TEXT_DOMAIN)), 'slug' => array('id' => 'slug', 'class' => 'slug', 'type' => MS_Helper_Html::INPUT_TYPE_TEXT, 'title' => __('Attribute Slug', MS_TEXT_DOMAIN), 'desc' => __('You use the slug in the attribute shortcode and in PHP code to access a value.', MS_TEXT_DOMAIN)), 'type' => array('id' => 'type', 'class' => 'type', 'type' => MS_Helper_Html::INPUT_TYPE_SELECT, 'title' => __('Attribute Type', MS_TEXT_DOMAIN), 'desc' => __('Decide what kind of data will be stored by the attribute.', MS_TEXT_DOMAIN), 'field_options' => $attribute_types), 'info' => array('id' => 'info', 'class' => 'info', 'type' => MS_Helper_Html::INPUT_TYPE_TEXT_AREA, 'title' => __('Attribute Infos', MS_TEXT_DOMAIN), 'desc' => __('Additional details displayed in the Membership editor. Only Admin users can see this value.', MS_TEXT_DOMAIN)), 'old_slug' => array('id' => 'old_slug', 'class' => 'old_slug', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN), 'action_save' => array('id' => 'action_save', 'class' => 'action_save', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => $action_save), 'nonce_save' => array('id' => 'nonce_save', 'class' => 'nonce_save', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => wp_create_nonce($action_save)), 'action_delete' => array('id' => 'action_delete', 'class' => 'action_delete', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => $action_delete), 'nonce_delete' => array('id' => 'nonce_delete', 'class' => 'nonce_delete', 'type' => MS_Helper_Html::INPUT_TYPE_HIDDEN, 'value' => wp_create_nonce($action_delete)), 'buttons' => array('type' => MS_Helper_Html::TYPE_HTML_TEXT, 'value' => MS_Helper_Html::html_element(array('id' => 'btn_delete', 'class' => 'btn_delete button-link danger', 'type' => MS_Helper_Html::INPUT_TYPE_BUTTON, 'value' => __('Delete', MS_TEXT_DOMAIN)), true) . MS_Helper_Html::html_element(array('id' => 'btn_cancel', 'class' => 'btn_cancel close', 'type' => MS_Helper_Html::INPUT_TYPE_BUTTON, 'value' => __('Cancel', MS_TEXT_DOMAIN)), true) . MS_Helper_Html::html_element(array('id' => 'btn_save', 'class' => 'btn_save button-primary', 'type' => MS_Helper_Html::INPUT_TYPE_BUTTON, 'value' => __('Save Attribute', MS_TEXT_DOMAIN)), true), 'class' => 'buttons'));
     return $fields;
 }
    public function render_tab()
    {
        $fields = $this->prepare_fields();
        ob_start();
        ?>
		<div class="ms-addon-wrap">
			<?php 
        MS_Helper_Html::settings_tab_header(array('title' => __('Taxamo Settings', 'membership2')));
        foreach ($fields as $field) {
            MS_Helper_Html::html_element($field);
        }
        ?>
		</div>
		<?php 
        $html = ob_get_clean();
        echo $html;
    }