function mgm_posts_for_membership($membership_type = '') { $posts = mgm_get_posts_for_level($membership_type, false); $membership_type = is_array($membership_type) ? $membership_type : array(0 => $membership_type); $levels = ''; if (!empty($membership_type)) { $i = 0; $cnt = count($membership_type); foreach ($membership_type as $key => $lvl) { $sep = ''; if ($i > 0 && $i == $cnt - 1) { $sep = ' and '; } elseif ($i > 0) { $sep = ', '; } $membership = mgm_get_class('membership_types'); $levels .= $sep . '"' . mgm_stripslashes_deep($membership->get_type_name($lvl)) . '"'; $i++; } } $html = ''; $css_group = mgm_get_css_group(); //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); } $html .= '<div class="postbox mgm_margin10px0px">' . '<h3>' . sprintf(__('Accessible Contents For %s', 'mgm'), $levels) . '</h3>' . '<div class="inside">'; $html .= '<div class="table width100">' . '<div class="row br_bottom">' . '<div class="cell th_div width25"> ' . __('Post Title', 'mgm') . '</b></div>' . '<div class="cell th_div width45"><b>' . __('Post Content', 'mgm') . '</b></div>' . '<div class="cell th_div width15"><b>' . __('Published', 'mgm') . '</b></div>' . '<div class="cell th_div width15"><b>' . __('Membership Type', 'mgm') . '</b></div>' . '</div>'; if (isset($posts['total']) && $posts['total'] > 0) { $pattern = get_shortcode_regex(); $snippet_length = 200; foreach ($posts['posts'] as $id => $obj) { // check purchaseble $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); } $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"><a href="' . get_permalink($obj->ID) . '">' . $title . '</a></div>' . '<div class="cell width45">' . $content . '</div>' . '<div class="cell width15">' . $published . '</div>' . '<div class="cell width15">' . mgm_stripslashes_deep($obj->access_membership_type) . '</div>' . '</div>'; } } else { $html .= '<div class="row br_bottom ' . ($alt = $alt == '' ? 'alternate' : '') . '">' . '<div class="cell">' . __('No posts available', 'mgm') . '</div>' . '</div>'; } $html .= '</div>'; if (isset($posts['total']) && $posts['total'] > 0) { $html .= '<div class="mgm_margin10px">'; if (isset($_GET['show']) && $_GET['show'] == 'all') { $html .= '<div class="mgm_content_back_link_div">' . '<a href="' . add_query_arg(array('show' => 'paged'), mgm_current_url()) . '" class="button">' . __('Back', 'mgm') . '</a>' . '</div>'; } $html .= '<div class="mgm_content_total_post_div">' . sprintf(__('Total Accessible Contents: %d', 'mgm'), $posts['total']) . '</div>'; $html .= '<div class="mgm_content_total_publish_div">'; if ((!isset($_GET['show']) || isset($_GET['show']) && $_GET['show'] == 'paged') && $posts['total'] > count($posts['posts'])) { $html .= '<a href="' . add_query_arg(array('show' => 'all'), mgm_current_url()) . '" class="button">' . __('See All', 'mgm') . '</a>'; } $html .= '</div>'; $html .= '<br/><div class="clearfix"></div>'; $html .= '</div>'; } $html .= '</div>' . '</div>'; $html = apply_filters('mgm_posts_for_membership_html', $html); return $html; }
function membership_type_update() { global $wpdb; extract($_POST); // init $message = $status = ''; // new type ------------------------------------------------------------------- if (isset($new_membership_type) && !empty($new_membership_type)) { // new type $new_membership_type = trim($new_membership_type); // allowed only if (strtolower($new_membership_type) != 'none') { // set $membership_types_obj = mgm_get_class('membership_types'); // set type, check duplicate $success = $membership_types_obj->set_membership_type($new_membership_type); // update if ($success) { // add redirect url $n_login_redirect_url = isset($new_login_redirect_url) ? $new_login_redirect_url : ''; $n_logout_redirect_url = isset($new_logout_redirect_url) ? $new_logout_redirect_url : ''; $n_type_code = $membership_types_obj->get_type_code($new_membership_type); // set url $membership_types_obj->set_login_redirect($n_type_code, $n_login_redirect_url); $membership_types_obj->set_logout_redirect($n_type_code, $n_logout_redirect_url); // update $membership_types_obj->save(); // message $message = sprintf(__('Successfully created new membership type: %s.', 'mgm'), mgm_stripslashes_deep($new_membership_type)); $status = 'success'; } else { $message = sprintf(__('Error while creating new membership type: %s. Duplicate type.', 'mgm'), mgm_stripslashes_deep($new_membership_type)); $status = 'error'; } } else { $message = sprintf(__('Error while creating new membership type: %s. Not allowed.', 'mgm'), mgm_stripslashes_deep($new_membership_type)); $status = 'error'; } } // delete/move account ------------------------------------------------------------ if (isset($remove_membership_type) && count($remove_membership_type) > 0) { // get object $membership_types_obj = mgm_get_class('membership_types'); // users $users = mgm_get_all_userids(array('ID'), 'get_results'); // how many removed $removed = 0; // loop foreach ($remove_membership_type as $type_code) { // unset $membership_types_obj->unset_membership_type($type_code); // move if (isset($move_membership_type_to[$type_code]) && $move_membership_type_to[$type_code] != 'none') { // loop foreach ($users as $user) { // get $member = mgm_get_member($user->ID); // if users with same membershiptype as that of selected if ($member->membership_type == $type_code) { // set $member->membership_type = $move_membership_type_to[$type_code]; // save $member->save(); } else { // check if any multiple levels exist: if (isset($member->other_membership_types) && is_array($member->other_membership_types) && count($member->other_membership_types) > 0) { // loop foreach ($member->other_membership_types as $key => $memtypes) { // make sure its an object: $memtypes = mgm_convert_array_to_memberobj($memtypes, $user->ID); // verify if ($memtypes->membership_type == $type_code) { // set $memtypes->membership_type = $move_membership_type_to[$type_code]; // save mgm_save_another_membership_fields($memtypes, $user->ID, $key); break; } } } } // unset unset($member); } } // remove packs $subscription_packs = mgm_get_class('subscription_packs'); // empty $packs = array(); // set foreach ($subscription_packs->packs as $i => $pack) { // if membership_type is same as being deleted if ($pack['membership_type'] == $type_code) { continue; // skip } // filtered $packs[] = $pack; } // set $subscription_packs->set_packs($packs); // update $subscription_packs->save(); // removed $removed++; } // ends remove pack: // save $membership_types_obj->save(); // message $message .= (!empty($message) ? '<br>' : '') . sprintf(__('Successfully removed %d membership type(s).', 'mgm'), $removed); // set status $status = 'success'; } // update name/redirects ------------------------------------------------------------------------ // get object $membership_types_obj = mgm_get_class('membership_types'); // ge all users $users = mgm_get_all_userids(array('ID'), 'get_results'); // init $updated = 0; // loop types foreach ($membership_types_obj->get_membership_types() as $type_code => $type_name) { // skip new type, in edit otherwise overwritten if (isset($n_type_code) && !empty($n_type_code) && $n_type_code == $type_code) { continue; } // urls $_login_redirect_url = isset($login_redirect_url[$type_code]) ? $login_redirect_url[$type_code] : ''; $_logout_redirect_url = isset($logout_redirect_url[$type_code]) ? $logout_redirect_url[$type_code] : ''; // set urls $membership_types_obj->set_login_redirect($type_code, $_login_redirect_url); $membership_types_obj->set_logout_redirect($type_code, $_logout_redirect_url); // set name if (isset($membership_type_names[$type_code]) && !empty($membership_type_names[$type_code]) && $membership_type_names[$type_code] != $type_name) { //issue #1127 $new_type_code = $membership_types_obj->get_type_code($membership_type_names[$type_code]); //check if ($new_type_code != $type_code) { // get object $obj_sp = mgm_get_class('subscription_packs'); //update new foreach ($obj_sp->packs as $key => $pack) { if ($obj_sp->packs[$key]['membership_type'] == $type_code) { $obj_sp->packs[$key]['membership_type'] = $new_type_code; $obj_sp->save(); } } // loop foreach ($users as $user) { // get $member = mgm_get_member($user->ID); // if users with same membershiptype as that of selected if (isset($member->membership_type) && $member->membership_type == $type_code) { // set $member->membership_type = $new_type_code; // save $member->save(); } // check if any multiple levels exist: if (isset($member->other_membership_types) && is_array($member->other_membership_types) && count($member->other_membership_types) > 0) { // loop foreach ($member->other_membership_types as $key => $memtypes) { // make sure its an object: $memtypes = mgm_convert_array_to_memberobj($memtypes, $user->ID); // verify if ($memtypes->membership_type == $type_code) { // set $memtypes->membership_type = $new_type_code; // save mgm_save_another_membership_fields($memtypes, $user->ID, $key); } } } // unset unset($member); } //issue #1336 $membership_posts = mgm_get_posts_for_level($type_code); if (isset($membership_posts['total']) && $membership_posts['total'] > 0) { foreach ($membership_posts['posts'] as $id => $obj) { $post_id = $obj->ID; // get object $post_obj = mgm_get_post($post_id); // if access set if (is_array($post_obj->access_membership_types)) { $access_membership_types = $post_obj->access_membership_types; foreach ($post_obj->access_membership_types as $key => $access_membership_type) { if ($access_membership_type == $type_code) { //update rename $access_membership_types[$key] = $new_type_code; // set $post_obj->access_membership_types = $access_membership_types; } } } // if access delay set if (is_array($post_obj->access_delay)) { $access_delay = $post_obj->access_delay; if (isset($access_delay[$type_code])) { $access_delay[$new_type_code] = $access_delay[$type_code]; unset($access_delay[$type_code]); $post_obj->access_delay = $access_delay; } } // apply filter $post_obj = apply_filters('mgm_post_update', $post_obj, $post_id); // save meta $post_obj->save(); // unset unset($post_obj); } } //unset $membership_types_obj->unset_membership_type($type_code); // set $membership_types_obj->set_name($membership_type_names[$type_code], $new_type_code); } else { // set $membership_types_obj->set_name($membership_type_names[$type_code], $type_code); } } // update $updated++; } // update $membership_types_obj->save(); // notify if (empty($message)) { // message $message = sprintf(__('Successfully updated %d membership type(s).', 'mgm'), $updated); // set status $status = 'success'; } // return response echo json_encode(array('status' => $status, 'message' => $message)); exit; }