/** * get posts accessible to member by user id * * @param int user id * @return posts * @verb GET * @action all * @url <site>/mgmapi/members/posts.<format> */ public function posts($id) { global $wpdb; // int $id = (int) $id; // posts $posts = array(); $total_rows = 0; // get member if ($member = mgm_get_member($id)) { // get all subscribed membership types $membership_types = mgm_get_subscribed_membershiptypes($id, $member); // accessible posts $accessible = mgm_get_membership_contents($membership_types, 'accessible', $id); // purchased posts $purchased = mgm_get_purchased_posts($id); // purchasable posts $purchasable = mgm_get_membership_contents($membership_types, 'purchasable', $id); // total rows $total_rows = $accessible['total_posts'] + $purchased['total_posts'] + $purchasable['total_posts']; // posts $posts = array('accessible' => array('contents' => $this->_clean_content($accessible['posts'])), 'purchased' => array('contents' => $this->_clean_content($purchased['posts'])), 'purchasable' => array('contents' => $this->_clean_content($purchasable['posts']))); } // response $response = array('status' => 'success', 'message' => sprintf(__('Get posts accessible to member by member id#%d response', 'mgm'), $id), 'data' => array('total_rows' => $total_rows, 'posts' => $posts)); // return return array($response, 200); }
/** * router for url protection, API calls * */ function mgm_url_router($wp) { global $wpdb, $route, $window_title; // trim $current_uri = trim($_SERVER['REQUEST_URI']); // pre process hook for url router do_action('mgm_url_router_pre_process'); // proxy protector for all files in mgm/downloads - more will be added later if (isset($_GET['protect']) && isset($_GET['file'])) { // get method $file = strip_tags($_GET['file']); // file $protect = strip_tags($_GET['protect']); // protected folder // check mgm_stream_file($file, $protect); // exit exit; } // check admin if (!is_super_admin()) { // TODO, improve code for less query, WARNING, not to use direct URI, posibility of SQL injection // having all is better to protet all scenario // sql $sql = "SELECT url,membership_types FROM `" . TBL_MGM_POST_PROTECTED_URL . "` WHERE `post_id` IS NULL ORDER BY LENGTH(`url`) DESC"; // direct urls $direct_urls = $wpdb->get_results($sql); // check if ($direct_urls) { // loop foreach ($direct_urls as $direct_url) { // url path only $uri = trim(parse_url($direct_url->url, PHP_URL_PATH)); // append end if (substr($uri, -1) == '*') { $uri = preg_quote(str_replace('*', '', $uri), '/') . '(.*)'; } elseif (substr($uri, -4) == ':any') { $uri = preg_quote(str_replace(':any', '', $uri), '/') . '(.*)'; } else { $uri = preg_quote($uri, '/'); } // pattern $uri_pattern = "#{$uri}#i"; // match if (!empty($uri) && (strcasecmp($uri, $current_uri) == 0 || preg_match($uri_pattern, $current_uri))) { // membership types $membership_types = json_decode($direct_url->membership_types, true); // check $current_user = wp_get_current_user(); // access $access = false; // check if ($current_user->ID) { // get member $user_membership_types = array(); // default $user_membership_types[] = mgm_get_user_membership_type($current_user->ID, 'code'); // multiple $user_membership_types[] = mgm_get_subscribed_membershiptypes($current_user->ID); // loop if (is_array($membership_types)) { // loop foreach ($membership_types as $membership_type) { // check if (in_array($membership_type, $user_membership_types)) { // set $access = true; break; } } } } else { //issue #1173 if (is_array($membership_types) && !$current_user->ID) { // loop foreach ($membership_types as $membership_type) { // check if ($membership_type == 'guest') { // set $access = true; break; } } } } // add filter if (!$access) { add_filter('the_content', 'mgm_url_content_protection'); } } } } } // rest api request if (mgm_is_restapi_request($current_uri) && mgm_api_access_allowed()) { // forward to api handler mgm_restapi_server::init(); exit; } // post process hook for url router do_action('mgm_url_router_post_process'); }
/** * text widget : multiple instance * front end instance * * @param array $args * @param array $widget_args * @return void * @since 1.0 */ function mgm_sidebar_widget_text($args, $widget_args = 1) { global $mgm_sidebar_widget, $user_ID; 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->text_widget; if (!isset($options[$number])) { return; } $user_memtypes = array(); $available_to = explode('|', $options[$number]['access_membership_types']); //$membership_type = strtolower(mgm_get_user_membership_type(false, 'code')); // issue#: 843 // fetch subscribed membership types $access = false; // Issue #1029 if (empty($options[$number]['access_membership_types']) || count($available_to) === 1 && 'guest' == strtolower($available_to[0]) && !$user_ID) { $access = true; } if (!$access && $user_ID) { if (!is_super_admin()) { $user_memtypes = mgm_get_subscribed_membershiptypes($user_ID); foreach ($available_to as $available) { //if ($membership_type == strtolower($available)) { if (in_array(strtolower($available), $user_memtypes)) { $access = true; break; } } } else { $access = true; } } // has access if ($access) { $title = apply_filters('mgm_sidebar_widget_text_title', $options[$number]['title']); $text = apply_filters('mgm_sidebar_widget_text_text', $options[$number]['text']); ?> <?php echo $before_widget; ?> <?php if (!empty($title)) { echo $before_title . $title . $after_title; } ?> <div class="textwidget"><?php echo $text; ?> </div> <?php echo $after_widget; } }
/** * exclude post/pages by membership type * * @param int $user_id * @param string $content_type * @return string */ function mgm_content_exclude_by_user($user_id = 0, $content_type = 'category') { // not for admin if (is_super_admin()) { return array(); } // global global $wpdb; // system $system_obj = mgm_get_class('system'); // protecction $content_hide_by_membership = $system_obj->get_setting('content_hide_by_membership'); // get member $member = mgm_get_member($user_id); $user = wp_get_current_user(); $temp_member = new stdClass(); $membership_type = $member->membership_type; // set default $membership_type = empty($membership_type) ? 'guest' : $membership_type; //get user membership types: multiple level membership issue#: 400 modification $arr_mt = mgm_get_subscribed_membershiptypes($user_id, $member); // store if (!in_array($membership_type, $arr_mt)) { $arr_mt[] = $membership_type; } // on type switch ($content_type) { case 'category': case 'taxonomy': // category if (!($hide_terms = wp_cache_get($content_type . '_exclusion_' . $user_id, 'users'))) { // exclude protected terms $hide_terms = array(); // get post terms settings $post_terms = mgm_get_class('post_' . $content_type); // loop set foreach ($post_terms->get_access_membership_types() as $term_id => $membership_types) { // exclude if ($membership_types) { // not set public access // multiple level membership issue#: 400 modification if (array_diff($membership_types, $arr_mt) != $membership_types) { continue; } // hide $hide_terms[] = $term_id; } } // set cache wp_cache_set($content_type . '_exclusion_' . $user_id, $hide_terms, 'users'); } // return return $hide_terms; // end check break; case 'post': // post // $content_hide_by_membership = $system_obj->get_setting('content_hide_by_membership'); // no check if not required if (!bool_from_yn($content_hide_by_membership)) { return array(); } // check if (!($hide_posts = wp_cache_get('post_exclusion_' . $user_id, 'users'))) { // exclude protected posts $hide_posts = array(); // fetch all posts $posts = $wpdb->get_results("SELECT ID FROM `{$wpdb->posts}` WHERE `post_type` NOT IN('revision','attachment')"); // check if ($posts) { // loop foreach ($posts as $post) { // get post $post_obj = mgm_get_post($post->ID); $access_delay = $post_obj->access_delay; // check types if (is_array($post_obj->access_membership_types) && count($post_obj->access_membership_types)) { // default $access = false; // check foreach ($post_obj->access_membership_types as $a_membership_type) { // match // multiple level membership issue#: 400 modification if (in_array($a_membership_type, $arr_mt)) { // done $access = true; // check protection if (bool_from_yn($content_hide_by_membership)) { // temp $temp_member->membership_type = $a_membership_type; //deny access if delay: issue#: 516 if (mgm_check_post_access_delay($temp_member, $user, $access_delay)) { //OK: break; } else { $access = false; } } } } //issue #841 if (bool_from_yn($post_obj->purchasable)) { $access = true; } // protect if (!$access) { $hide_posts[] = $post->ID; } } // unset unset($post_obj); } } // set cache wp_cache_set('post_exclusion_' . $user_id, $hide_posts, 'users'); } // return return $hide_posts; // end check break; } // empty return array(); }
/** * create purchase another button * * @param array userdata * @retun string html output */ function mgm_get_purchase_another_subscription_button($args = array()) { global $wpdb; //ceck settings $settings = mgm_get_class('system')->get_setting(); // check if (!isset($settings['enable_multiple_level_purchase']) || isset($settings['enable_multiple_level_purchase']) && !bool_from_yn($settings['enable_multiple_level_purchase'])) { return; } // current user $user = wp_get_current_user(); // validate if (!$user->ID) { // query string $user = mgm_get_user_from_querystring(); } // validate if (!$user->ID) { return __('No such user', 'mgm'); } // userdata $username = $user->user_login; $mgm_home = get_option('siteurl'); $member = mgm_get_member($user->ID); $system_obj = mgm_get_class('system'); $membership_type = mgm_get_user_membership_type($user->ID, 'code'); $packs_obj = mgm_get_class('subscription_packs'); $packs = $packs_obj->get_packs('upgrade'); $duration_str = $packs_obj->duration_str; $trial_taken = $member->trial_taken; // pack_ids $pack_ids = mgm_get_members_packids($member); $pack_membership_types = mgm_get_subscribed_membershiptypes($user->ID, $member); // query_arg $form_action = mgm_get_custom_url('transactions', false, array('action' => 'purchase_another', 'username' => $username)); //issue 1009 if (isset($settings['membership_details_url'])) { $membership_details_url = $settings['membership_details_url']; } else { $membership_details_url = get_admin_url() . 'profile.php?page=mgm/profile'; } // cancel $cancel_url = $membership_details_url; // $cancel_url = mgm_get_custom_url('membership_details'); // active modules $a_payment_modules = $system_obj->get_active_modules('payment'); // selected_subscription $selected_subs = mgm_get_selected_subscription($args); // second step, after post if (isset($_POST['submit'])) { // verify selected if (!isset($_POST['subs_opt'])) { // die return sprintf(__('Package not selected, <a href="%s">go back</a>.', 'mgm'), $_POST['form_action']); exit; } // get subs data $subs_opt_pack = mgm_decode_package($_POST['subs_opt']); extract($subs_opt_pack); // check $valid = false; // loop packs foreach ($packs as $pack) { // check //check pack id as well: issue#: 580 if ($pack['cost'] == $cost && $pack['duration'] == $duration && $pack['duration_type'] == $duration_type && $membership_type == $pack['membership_type'] && $pack_id == $pack['id']) { $valid = true; break; } } // error if (!$valid) { return __('Invalid data passed', 'mgm'); exit; } // get object $member = new mgm_member($user->ID); $temp_membership = $member->_default_fields(); $temp_membership['membership_type'] = $membership_type; $temp_membership['pack_id'] = $pack_id; //issue #860 //if (isset($_POST['mgm_upgrade_field']['autoresponder']) && ($_POST['mgm_upgrade_field']['autoresponder'])=='Y') { if (isset($_POST['mgm_upgrade_field']['autoresponder']) && substr($_POST['mgm_upgrade_field']['autoresponder'], 0, 1) == 'Y') { $temp_membership['subscribed'] = 'Y'; $temp_membership['autoresponder'] = $system_obj->active_modules['autoresponder']; } //issue #1236 if (isset($_POST['mgm_upgrade_field']['coupon']) && !empty($_POST['mgm_upgrade_field']['coupon'])) { //issue #1250 - Coupon validation if (!empty($_POST['form_action'])) { // check if its a valid coupon if (!($coupon = mgm_get_coupon_data($_POST['mgm_upgrade_field']['coupon']))) { //redirect back to the form $q_arg = array('error_field' => 'Coupon', 'error_type' => 'invalid', 'error_field_value' => $_POST['mgm_upgrade_field']['coupon']); $redirect = add_query_arg($q_arg, $_POST['form_action']); // redirect mgm_redirect($redirect); exit; } else { // membership type check // get subs if ($subs_pack = mgm_decode_package(mgm_post_var('subs_opt'))) { // values $coupon_values = mgm_get_coupon_values(NULL, $coupon['value'], true); // check if (isset($coupon_values['new_membership_type']) && $coupon_values['new_membership_type'] != $subs_pack['membership_type']) { $new_membership_type = mgm_get_membership_type_name($coupon_values['new_membership_type']); $q_arg = array('error_field' => 'Coupon', 'error_type' => 'invalid', 'membership_type' => $coupon_values['new_membership_type'], 'error_field_value' => $_POST['mgm_upgrade_field']['coupon']); $redirect = add_query_arg($q_arg, $_POST['form_action']); // redirect mgm_redirect($redirect); exit; } } } } } //inserted an incomplete entry for the selected subscription type mgm_save_another_membership_fields($temp_membership, $user->ID); // save coupon fields and update member object $member = mgm_save_partial_fields_purchase_more($user->ID, $membership_type, $cost); // coupon $purchase_another_coupon = false; // array if (isset($member->upgrade)) { if (is_array($member->upgrade) && isset($member->upgrade['coupon']['id'])) { $purchase_another_coupon = $member->upgrade['coupon']; } elseif (is_object($member->upgrade) && isset($member->upgrade->coupon->id)) { $purchase_another_coupon = mgm_object2array($member->upgrade->coupon); } // coupon mgm_get_purchase_another_coupon_pack($purchase_another_coupon, $pack); } //save custom fields -issue #1285 if (isset($_POST['mgm_upgrade_field']) && !empty($_POST['mgm_upgrade_field'])) { //member $cf_member = mgm_get_member($user->ID); //upgrade custom fileds $cfu_fileds = mgm_get_class('member_custom_fields')->get_fields_where(array('display' => array('on_multiple_membership_level_purchase' => true))); //loop fields foreach ($cfu_fileds as $cf_filed) { //skip coupon and autoresponder if (in_array($cf_filed['name'], array('coupon', 'autoresponder'))) { continue; } //check if (isset($_POST['mgm_upgrade_field'][$cf_filed['name']])) { // check upgrae and required if ((bool) $cf_filed['attributes']['required'] === true) { if (empty($_POST['mgm_upgrade_field'][$cf_filed['name']])) { //redirect back to the form $q_arg = array('error_field' => $cf_filed['label'], 'error_type' => 'empty', 'error_field_value' => $_POST['mgm_upgrade_field'][$cf_filed['name']]); $redirect = add_query_arg($q_arg, $_POST['form_action']); mgm_redirect($redirect); exit; } } //appending custom fields if (isset($cf_member->custom_fields->{$cf_filed}['name'])) { $cf_member->custom_fields->{$cf_filed}['name'] = $_POST['mgm_upgrade_field'][$cf_filed['name']]; } else { $cf_member->custom_fields->{$cf_filed}['name'] = $_POST['mgm_upgrade_field'][$cf_filed['name']]; } } } $cf_member->save(); } // start html $html = '<div>'; // free if (($pack['cost'] == 0 || $membership_type == 'free') && in_array('mgm_free', $a_payment_modules) && mgm_get_module('mgm_free')->is_enabled()) { $html .= sprintf('<div>%s - %s</div>', __('Create a free account ', 'mgm'), ucwords($membership_type)); $module = 'mgm_free'; // payments url $payments_url = mgm_get_custom_url('transactions'); // if tril module selected and cost is 0 and free moduleis not active if ($membership_type == 'trial') { if (in_array('mgm_trial', $a_payment_modules)) { $module = 'mgm_trial'; } } //Purchase Another Membership Level problem : issue #: 752 $redirect = add_query_arg(array('method' => 'payment_return', 'module' => $module, 'custom' => $user->ID . '_' . $duration . '_' . $duration_type . '_' . $pack_id . '_Y', 'redirector' => $redirector), $payments_url); // redirect if (!headers_sent()) { @header('location: ' . $redirect); exit; } // js redirect $html .= sprintf('<script type="text/javascript">window.location = "%s";</script><div>%s</div>', $redirect, $packs_obj->get_pack_desc($pack)); } else { $html .= sprintf('<div class="mgm_get_subs_btn">%s</div>', $packs_obj->get_pack_desc($pack)); // coupon if (isset($purchase_another_coupon['id'])) { $html .= sprintf('<div class="mgm_get_subs_btn">%s</div>', sprintf(__('Using Coupon "%s" - %s', 'mgm'), $purchase_another_coupon['name'], $purchase_another_coupon['description'])); } $html .= sprintf('<div class="mgm_get_subs_btn">%s</div>', __('Please Select from Available Payment Gateways', 'mgm')); } //bypass if payment gateway field is selected -issue #1764 if ((double) $pack['cost'] > 0 && isset($_POST['mgm_payment_gateways']) && !empty($_POST['mgm_payment_gateways'])) { //init $tran_id = 0; if (!$tran_id) { $tran_id = mgm_add_transaction($pack, array('is_another_membership_purchase' => true, 'user_id' => $user->ID)); } // module $mod_obj = mgm_get_module($_POST['mgm_payment_gateways'], 'payment'); // module end point $redirect = $mod_obj->_get_endpoint('html_redirect', false); // encode id: //encode transaction id $encode_tran_id = mgm_encode_id($tran_id); //args $redirect = add_query_arg(array('tran_id' => $encode_tran_id), $redirect); // do the redirect to payment mgm_redirect($redirect); } // init $payment_modules = array(); // when active if ($a_payment_modules) { // loop foreach ($a_payment_modules as $payment_module) { // not trial if (in_array($payment_module, array('mgm_free', 'mgm_trial'))) { continue; } //consider only the modules assigned to pack if (isset($pack['modules']) && !in_array($payment_module, (array) $pack['modules'])) { continue; } // store $payment_modules[] = $payment_module; } } // loop payment mods if not free if (count($payment_modules) && $cost) { // transaction $tran_id = 0; // loop foreach ($payment_modules as $module) { // module $mod_obj = mgm_get_module($module, 'payment'); // create transaction // if(!$tran_id) $tran_id = $mod_obj->_create_transaction($pack, array('is_another_membership_purchase' => true, 'user_id' => $user->ID)); if (!$tran_id) { $tran_id = mgm_add_transaction($pack, array('is_another_membership_purchase' => true, 'user_id' => $user->ID)); } // button $html .= sprintf('<div class="mgm_get_subs_btn">%s</div>', $mod_obj->get_button_subscribe(array('pack' => $pack, 'tran_id' => $tran_id))); } } else { if ($cost) { $html .= sprintf('<div class="mgm_get_subs_btn">%s</div>', __('There are no payment gateways available at this time.', 'mgm')); } } // html $html .= '</div>'; } else { // first step show upgrade options // html $html = sprintf('<p class="message register">%s</p>', __('Please Select from Available Membership Packages', 'mgm')); // upgrade_packages $upgrade_packages = ''; // pack to modules $pack_modules = array(); // loop foreach ($packs as $pack) { // default $checked = ''; // skip already purchased packs if (in_array($pack['id'], $pack_ids)) { continue; } //skip same membership level subscriptions if (in_array($pack['membership_type'], $pack_membership_types)) { continue; } // do not show trial or free as upgradre if ($pack['membership_type'] == 'trial' || $pack['membership_type'] == 'free') { continue; } // reset $checked = mgm_select_subscription($pack, $selected_subs); // skip other when a package sent as selected if ($selected_subs !== false) { if (empty($checked)) { continue; } } // checked if (!$checked) { $checked = (int) $pack['default'] == 1 ? ' checked="checked"' : ''; } // duration if ($pack['duration'] == 1) { $dur_str = rtrim($duration_str[$pack['duration_type']], 's'); } else { $dur_str = $duration_str[$pack['duration_type']]; } $css_group = mgm_get_css_group(); // encode pack $subs_opt_enc = mgm_encode_package($pack); // set $pack_modules[$subs_opt_enc] = $pack['modules']; //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.form.fields.css'; $upgrade_packages .= sprintf($css_link_format, $css_file); } // free if (($pack['cost'] == 0 || strtolower($pack['membership_type']) == 'free') && in_array('mgm_free', $a_payment_modules) && mgm_get_module('mgm_free')->enabled == 'Y') { // input $input = sprintf('<input type="radio" %s class="checkbox" name="subs_opt" value="%s" rel="mgm_subscription_options"/>', $checked, $subs_opt_enc); // html $upgrade_packages .= ' <div class="mgm_subs_wrapper ' . $pack['membership_type'] . '"> <div class="mgm_subs_option ' . $pack['membership_type'] . '"> ' . $input . ' </div> <div class="mgm_subs_pack_desc ' . $pack['membership_type'] . '"> ' . $packs_obj->get_pack_desc($pack) . ' </div> <div class="clearfix"></div> <div class="mgm_subs_desc ' . $pack['membership_type'] . '"> ' . mgm_stripslashes_deep($pack['description']) . ' </div> </div>'; } else { // input $input = sprintf('<input type="radio" %s class="checkbox" name="subs_opt" value="%s" rel="mgm_subscription_options"/>', $checked, $subs_opt_enc); // html $upgrade_packages .= ' <div class="mgm_subs_wrapper ' . $pack['membership_type'] . '"> <div class="mgm_subs_option ' . $pack['membership_type'] . '"> ' . $input . ' </div> <div class="mgm_subs_pack_desc ' . $pack['membership_type'] . '"> ' . $packs_obj->get_pack_desc($pack) . ' </div> <div class="clearfix"></div> <div class="mgm_subs_desc ' . $pack['membership_type'] . '"> ' . mgm_stripslashes_deep($pack['description']) . ' </div> </div>'; } } // add pack_modules as json data, may consider jquery data later if (!empty($pack_modules)) { $html .= sprintf('<script language="javascript">var mgm_pack_modules = %s</script>', json_encode($pack_modules)); } // show error if (!$upgrade_packages) { // html $html .= '<div class="mgm_subs_wrapper"> <div class="mgm_subs_pack_desc"> ' . __('Sorry, no packages available.', 'mgm') . ' </div> </div> <p> <input type="button" name="cancel" onclick="window.location=\'' . $cancel_url . '\'" value="' . __('Cancel', 'mgm') . '" class="button-primary" /> </p>'; } else { /* $error_field = mgm_request_var('error_field'); if(!empty($error_field)) { $errors = new WP_Error(); switch (mgm_request_var('error_type')) { case 'empty': $error_string = 'You must provide a '; break; case 'invalid': $error_string = 'Invalid '; break; } //issue #703 $errors->add( $error_field, __( '<strong>ERROR</strong>: '.$error_string, 'mgm' ).$error_field ); $html .= mgm_set_errors($errors, true); }*/ // check errors if any: $html .= mgm_subscription_purchase_errors(); // form $html .= '<form action="' . $form_action . '" method="post" class="mgm_form"><div class="mgm_get_pack_form_container">'; $html .= '<input type="hidden" name="form_action" value="' . $form_action . '" />'; $html .= $upgrade_packages; //issue #1285 $html .= mgm_get_custom_fields($user->ID, array('on_multiple_membership_level_purchase' => true), 'mgm_upgrade_field'); // html $html .= '<input type="hidden" name="ref" value="' . md5($member->amount . '_' . $member->duration . '_' . $member->duration_type . '_' . $member->membership_type) . '" />'; // set $html .= '<p> <input class="button" type="submit" name="submit" value="' . __('Next', 'mgm') . '" /> <input class="button" type="button" name="cancel" onclick="window.location=\'' . $cancel_url . '\'" value="' . __('Cancel', 'mgm') . '"/> </p>'; // html $html .= '</div></form>'; } } // return return $html; }
function mgm_member_purchasable_contents($pagetype = 'admin') { global $wpdb; // current_user $current_user = wp_get_current_user(); // setting $setting = mgm_get_class('system')->get_setting(); // snippet $snippet_length = 200; // member $member = mgm_get_member($current_user->ID); $arr_memberships = mgm_get_subscribed_membershiptypes($current_user->ID, $member); // purchasable $purchasable_posts = mgm_get_membership_contents($arr_memberships, 'purchasable', $current_user->ID); // posts $posts = $purchasable_posts['posts']; // total posts $total_posts = $purchasable_posts['total_posts']; // total_post_rows $total_post_rows = $purchasable_posts['total_post_rows']; // init $html = $alt = ''; // start output $html .= '<div class="table width100 br">' . '<div class="row br_bottom">' . '<div class="cell th_div width25 padding10px"><b>' . __('Post Title', 'mgm') . '</b></div>' . '<div class="cell th_div width45 padding10px"><b>' . __('Post Content', 'mgm') . '</b></div>' . '<div class="cell th_div width15 padding10px"><b>' . __('Price', 'mgm') . '</b></div>' . '<div class="cell th_div width15 padding10px"><b></b></div>' . '</div>'; // check if ($total_posts) { $pattern = get_shortcode_regex(); $currency = mgm_get_setting('currency'); // loop foreach ($posts as $id => $obj) { // check purchasable $published = date('jS F Y', strtotime($obj->post_date)); $title = $obj->post_title; $content = $obj->post_content; if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')) { $title = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($title); $content = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($content); } // strip_shortcodes $content = preg_replace('/' . $pattern . '/s', '', $content); $content = substr(strip_tags($content), 0, $snippet_length); $content .= strlen($content) > $snippet_length ? '...' : ''; $html .= '<div class="row br_bottom ' . ($alt = $alt == '' ? 'alternate' : '') . '">' . '<div class="cell width25 padding10px"><a href="' . get_permalink($obj->ID) . '">' . $title . '</a></div>' . '<div class="cell width45 padding10px">' . $content . '</div>' . '<div class="cell width15 padding10px">' . $obj->purchase_cost . ' ' . $currency . '</div>' . '<div class="cell width15 padding10px"><a href="' . get_permalink($obj->ID) . '" class="button">' . __('Buy', 'mgm') . '</a></div>' . '</div>'; } } else { $html .= '<div class="row ' . ($alt = $alt == '' ? 'alternate' : '') . '">' . '<div class="cell mgm_text_align_center">' . __('No purchasable contents', 'mgm') . '</div>' . '</div>'; } $html .= '</div>'; if ($total_posts > 0) { $html .= '<div class="mgm_margin10px">'; if (isset($_GET['section']) && $_GET['section'] == 'purchasable') { $html .= '<div class="mgm_content_back_link_div">' . '<a href="' . ($pagetype == 'admin' ? admin_url('profile.php?page=mgm/membership/content') : mgm_get_custom_url('membership_contents')) . '" class="button">' . __('Back', 'mgm') . '</a>' . '</div>'; } $html .= '<div class="mgm_content_total_post_div">' . sprintf(__('You have a total of %d premium %s you can purchase and access.', 'mgm'), $total_posts, $total_posts == 1 ? __('Post', 'mgm') : __('Posts', 'mgm')) . '</div>'; $html .= '<div class="mgm_content_total_publish_div">'; if (isset($_GET['section']) && $_GET['section'] == 'purchasable') { $html .= '<span class="pager">' . $purchasable_posts['pager'] . '</span>'; //}elseif($total_post_rows > $total_posts) { //Do not show See All if number of records are <= $total_posts } elseif ($total_posts > count($posts)) { $html .= '<a href="' . ($pagetype == 'admin' ? admin_url('profile.php?page=mgm/membership/content§ion=purchasable') : mgm_get_custom_url('membership_contents', false, array('section' => 'purchasable'))) . '" class="button">' . __('See All', 'mgm') . '</a>'; } $html .= '</div>'; $html .= '<br/><div class="clearfix"></div>'; $html .= '</div>'; } return $html; }
private function _save_member_object($user_id, $member, $previous_membership) { // pack $pack = mgm_get_class('subscription_packs')->get_pack($member->pack_id); // multiple_level_purchase $multiple_level_purchase = bool_from_yn(mgm_get_class('system')->get_setting('enable_multiple_level_purchase')); // update options $update_options = mgm_post_var('update_opt'); // new level if (in_array('subscription', $update_options) && mgm_post_var('insert_new_level') == 'new') { // save flag $save = true; // guest if ($previous_membership->membership_type == "guest" && $previous_membership->amount == 0) { // check selected membership already selected: if ($previous_membership->membership_type == $member->membership_type) { $save = false; } } else { // old $old_subtypes = mgm_get_subscribed_membershiptypes($user_id); //check selected membership already selected: if (in_array($member->membership_type, $old_subtypes)) { $save = false; } else { if (isset($member->custom_fields)) { unset($member->custom_fields); } if (isset($member->other_membership_types) || empty($member->other_membership_types)) { unset($member->other_membership_types); } } } // save if ($save) { // multiple if ($multiple_level_purchase) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } } // assign role: $change_order = isset($_POST['highlight_role']) && isset($_POST['upd_subscription_pack']) && $_POST['upd_subscription_pack'] != '-' ? true : false; // set $obj_role = new mgm_roles(); $obj_role->add_user_role($user_id, $pack['role'], $change_order); } else { if (isset($_POST['ps_mem'][$user_id]) && !empty($_POST['ps_mem'][$user_id])) { if (isset($member->custom_fields)) { unset($member->custom_fields); } if (isset($member->other_membership_types) || empty($member->other_membership_types)) { unset($member->other_membership_types); } $prev_index = isset($_POST['ps_mem_index'][$user_id][$previous_membership->membership_type]) ? $_POST['ps_mem_index'][$user_id][$previous_membership->membership_type] : null; //uncomment mgm_save_another_membership_fields($member, $user_id, $prev_index); } else { $member->save(); } if ($member->status == MGM_STATUS_EXPIRED) { //remove role from user: mgm_remove_userroles($user_id, $member); } else { //if($member->membership_type != $previous_membership->membership_type) {//check this condition //mgm role object: $change_order = isset($_POST['highlight_role']) && isset($_POST['upd_subscription_pack']) && $_POST['upd_subscription_pack'] != '-' ? true : false; $obj_role = new mgm_roles(); //update role/change order $obj_role->add_user_role($user_id, $pack['role'], $change_order); //} } } return true; }
/** * check any more subscriptions exist to purchase: */ function mgm_check_purchasable_level_exists($user_id, $member = null) { $subscribed_types = mgm_get_subscribed_membershiptypes($user_id, $member); $subscribed_types = array_unique(array_merge($subscribed_types, array('free', 'trial', 'guest'))); $membership_types_obj = mgm_get_class('membership_types')->membership_types; $membership_types_obj = array_unique(array_keys($membership_types_obj)); return count($subscribed_types) > 3 && count(array_diff($membership_types_obj, $subscribed_types)) == 0 ? false : true; }