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;
 }