Пример #1
0
/**
 * status widget : multiple instance
 * front end instance
 *
 * @param array $args
 * @param array $widget_args
 * @return void
 * @since 1.0
 */
function mgm_sidebar_widget_status($args, $widget_args = 1)
{
    global $wpdb, $user_ID, $current_user, $mgm_sidebar_widget;
    extract($args, EXTR_SKIP);
    if (is_numeric($widget_args)) {
        $widget_args = array('number' => $widget_args);
    }
    $widget_args = wp_parse_args($widget_args, array('number' => -1));
    extract($widget_args, EXTR_SKIP);
    $options = $mgm_sidebar_widget->status_widget;
    if (!isset($options[$number])) {
        return;
    }
    $title = isset($options[$number]['title']) ? $options[$number]['title'] : __('Magic Members', 'mgm');
    $logged_out_intro = isset($options[$number]['logged_out_intro']) ? stripslashes($options[$number]['logged_out_intro']) : $mgm_sidebar_widget->default_text['logged_out_intro'];
    $hide_logged_out = isset($options[$number]['hide_logged_out']) ? stripslashes($options[$number]['hide_logged_out']) : false;
    // packs -issue#: 714
    $packs = mgm_get_class('subscription_packs');
    if ($user_ID) {
        echo $before_widget;
        if (trim($title)) {
            echo $before_title . $title . $after_title;
        }
        //issue#: 539
        $member = mgm_get_member($user_ID);
        // check pack - issue#: 714
        $subs_pack = null;
        if ($member->pack_id) {
            $subs_pack = $packs->get_pack($member->pack_id);
        }
        $uat = $member->membership_type;
        if (!$uat) {
            $uat = 'free';
        }
        $user_status = $member->status;
        if ($user_status != MGM_STATUS_ACTIVE || strtolower($uat) == 'free') {
            $inactive_intro = isset($options[$number]['inactive_intro']) ? $options[$number]['inactive_intro'] : $mgm_sidebar_widget->default_text['inactive_intro'];
            echo $inactive_intro;
            mgm_sidebar_register_links();
        } else {
            if ($expiry = $member->expire_date) {
                //issue#: 692
                $sformat = mgm_get_date_format('date_format_short');
                $expiry = date($sformat, strtotime($expiry));
                //$date = explode('-', $expiry);
                //$expiry = date(get_option('date_format'), mktime(0,0,0,$date[1], $date[2], $date[0]));
            } else {
                $expiry = __('None', 'mgm');
            }
            $active_intro = $mgm_sidebar_widget->default_text['active_intro'];
            if (isset($options[$number]['active_intro'])) {
                $active_intro = $options[$number]['active_intro'];
            }
            $active_intro = str_replace('[membership_type]', mgm_get_class('membership_types')->get_type_name($uat), $active_intro);
            $active_intro = str_replace('[expiry_date]', $expiry, $active_intro);
            // check hidden subscription pack - issue#: 714
            if (isset($subs_pack['hidden']) && $subs_pack['hidden'] != 1 || !isset($subs_pack['hidden'])) {
                echo $active_intro;
            }
            mgm_render_my_purchased_posts($user_ID);
        }
        echo $after_widget;
    } else {
        if (!$hide_logged_out) {
            echo $before_widget;
            if (trim($title)) {
                echo $before_title . $title . $after_title;
            }
            echo $logged_out_intro;
            echo mgm_get_login_register_links();
            echo $after_widget;
        }
    }
}
function mgm_membership_content_page()
{
    global $wpdb;
    // current_user
    $current_user = wp_get_current_user();
    $snippet_length = 200;
    $max_loops = 30;
    $css_group = mgm_get_css_group();
    $html = '';
    //issue #867
    if ($css_group != 'none') {
        //expand this if needed
        $css_link_format = '<link rel="stylesheet" href="%s" type="text/css" media="all" />';
        $css_file = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.pages.css';
        $html .= sprintf($css_link_format, $css_file);
    }
    $arr_mtlabel = mgm_get_subscribed_membershiptypes_with_label($current_user->ID);
    $membership_level = mgm_stripslashes_deep(implode(', ', $arr_mtlabel));
    $member = mgm_get_member($current_user->ID);
    $arr_memberships = mgm_get_subscribed_membershiptypes($current_user->ID, $member);
    $posts = false;
    $blog_home = home_url();
    $sql = 'SELECT DISTINCT(ID), post_name, post_title, post_date, post_content
			FROM
				' . $wpdb->posts . ' p
				JOIN ' . $wpdb->postmeta . ' pm ON (
					p.ID = pm.post_id
					AND p.post_status = "publish"
					AND pm.meta_key LIKE "_mgm_post%"					
					AND post_type = "post"
				)
			ORDER BY post_date DESC';
    // get posts
    $results = $wpdb->get_results($sql);
    // capture only accessible
    $accessible_posts = array();
    //check
    if (count($results) > 0) {
        foreach ($results as $id => $obj) {
            // get post
            $post_obj = mgm_get_post($obj->ID);
            // membership types
            $membership_types = $post_obj->get_access_membership_types();
            //user accessible posts
            if (count(array_intersect($membership_types, $arr_memberships)) > 0) {
                $accessible_posts[] = $obj;
            }
            unset($post_obj);
            unset($obj);
        }
    }
    if ($members_pages = count($accessible_posts)) {
        $loops = 0;
        foreach ($accessible_posts as $id => $obj) {
            //issue #1690
            if (trim($obj->post_name) == 'userprofile') {
                continue;
            }
            $published = date('jS F Y', strtotime($obj->post_date));
            $title = $obj->post_title;
            $full_content = $obj->post_content;
            if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')) {
                $title = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($title);
                $full_content = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($full_content);
            }
            $content = substr(strip_tags($full_content), 0, $snippet_length);
            $content = preg_replace("'\\[/?\\s?private\\s?\\]'i", '', $content);
            $ending = strlen($full_content) > strip_tags($snippet_length) ? '...' : '';
            $row = '<div class="row br_bottom">
						<div class="cell mgm_border_top1px_solid_silver">							
							<div class="mgm_post_title_div"><a href="' . get_permalink($obj->ID) . '">' . $title . '</a></div>
							<div class="mgm_post_content_div">' . $content . '</div>
						</div>
						<div class="cell mgm_border_top1px_solid_silver mgm_vertical_align_top">' . $published . '</div>
					</div>';
            $posts .= $row;
            $loops++;
            if ($loops >= $max_loops) {
                break;
            }
        }
    }
    $table_intro = __('Showing the most recent ', 'mgm') . $loops . __(' posts of a total ', 'mgm') . $members_pages . __(' available to you', 'mgm') . '.';
    $html .= '	<div class="mgm_post_membership_level_div" >' . __('Your membership level is:', "mgm") . ' ' . $membership_level . '.</div>
						<div class="mgm_post_access_total_div">
					' . __('You have access to a total of', 'mgm') . ' ' . $members_pages . ' ' . __('premium', 'mgm') . ' ' . ($members_pages == 1 ? __('Post', 'mgm') : __('Posts', 'mgm')) . ' 
				</div>';
    if ($members_pages > 0) {
        $html .= $table_intro;
        $html .= '<div class="mgm_margin_bottom_10px mgm_padding_top_10px">
					<div class="table width100">
						<div class="row br_bottom">
							<div class="cell th_div mgm_text_align_left">' . __('Post Title', 'mgm') . '</div>
							<div class="cell th_div mgm_width160px mgm_text_align_left">' . __('Published', 'mgm') . '</div>
						</div>
					' . $posts . '
				</div></div>';
        if ($pp = mgm_render_my_purchased_posts($current_user->ID, false, true)) {
            $html .= '<h4>' . __('My Purchased Posts', 'mgm') . '</h4>
			' . $pp;
        }
    }
    return $html;
}