llms_expire_membership()
Expire Membership
Contents
Return Return
(void)
Source Source
File: includes/functions/llms-functions-deprecated.php
function llms_expire_membership() { global $wpdb; // find all memberships wth an expiration date $args = array( 'post_type' => 'llms_membership', 'posts_per_page' => 500, 'meta_query' => array( 'key' => '_llms_expiration_interval', ), ); $posts = get_posts( $args ); if ( empty( $posts ) ) { return; } foreach ( $posts as $post ) { // make sure interval and period exist before continuing. $interval = get_post_meta( $post->ID, '_llms_expiration_interval', true ); $period = get_post_meta( $post->ID, '_llms_expiration_period', true ); if ( empty( $interval ) || empty( $period ) ) { continue; } // query postmeta table and find all users enrolled $table_name = $wpdb->prefix . 'lifterlms_user_postmeta'; $meta_key_status = '_status'; $meta_value_status = 'Enrolled'; $results = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM ' . $table_name . ' WHERE post_id = %d AND meta_key = "%s" AND meta_value = %s ORDER BY updated_date DESC', $post->ID, $meta_key_status, $meta_value_status ) ); for ( $i = 0; $i < count( $results ); $i++ ) { $results[ $results[ $i ]->post_id ] = $results[ $i ]; unset( $results[ $i ] ); } $enrolled_users = $results; foreach ( $enrolled_users as $user ) { $user_id = $user->user_id; $meta_key_start_date = '_start_date'; $meta_value_start_date = 'yes'; $start_date = $wpdb->get_results( $wpdb->prepare( 'SELECT updated_date FROM ' . $table_name . ' WHERE user_id = %d AND post_id = %d AND meta_key = %s AND meta_value = %s ORDER BY updated_date DESC', $user_id, $post->ID, $meta_key_start_date, $meta_value_start_date ) ); // add expiration terms to start date $exp_date = date( 'Y-m-d', strtotime( date( 'Y-m-d', strtotime( $start_date[0]->updated_date ) ) . ' +' . $interval . ' ' . $period ) ); // get current datetime $today = current_time( 'mysql' ); $today = date( 'Y-m-d', strtotime( $today ) ); // if a date parse causes exp date to be unmodified then return. if ( $exp_date == $start_date[0]->updated_date ) { LLMS_log( 'An error occurred modifying the date value. Function: llms_expire_membership, interval: ' . $interval . ' period: ' . $period ); continue; } // compare expiration date to current date. if ( $exp_date < $today ) { $set_user_expired = array( 'post_id' => $post->ID, 'user_id' => $user_id, 'meta_key' => '_status', ); $status_update = array( 'meta_value' => 'Expired', 'updated_date' => current_time( 'mysql' ), ); // change enrolled to expired in user_postmeta $wpdb->update( $table_name, $status_update, $set_user_expired ); // remove membership id from usermeta array $users_levels = get_user_meta( $user_id, '_llms_restricted_levels', true ); if ( in_array( $post->ID, $users_levels ) ) { $key = array_search( $post->ID, $users_levels ); unset( $users_levels[ $key ] ); update_user_meta( $user_id, '_llms_restricted_levels', $users_levels ); } } }// End foreach(). }// End foreach(). }
Expand full source code Collapse full source code View on GitHub