diff --git a/api/api_functions.php b/api/api_functions.php index 39e4b99..3734ab1 100644 --- a/api/api_functions.php +++ b/api/api_functions.php @@ -267,7 +267,7 @@ function add_or_renew_membership($user_id, $purchased=NULL) { /* Membership expiry */ /* One year from today (default) */ - if( $purchased == NULL ) { + if( $purchased == NULL || $purchased === false) { $purchased = date_create(); } /* ...or one year from specified date */ diff --git a/api/membership.php b/api/membership.php index 6e54f17..abb89b6 100644 --- a/api/membership.php +++ b/api/membership.php @@ -57,16 +57,17 @@ $conn = get_db_connection(DB_FETCHMODE_ASSOC); /* Existing user? */ $user = get_user($data['user_id']); /* Don't allow renewal if valid membership exists. */ -if( $user['membership_status'] !== 0 ) { - if($user['expires'] === '') { - // Life long - return_json_response(array('error' => 'Cannot renew, user with id '.$data['user_id'].' has a life long membership.'), 409); - } - return_json_response(array('error' => 'Cannot renew, user with phone '.$data['user_id'].' has a valid membership until: '.$user['expires']), 409); +if( $user['expires'] === '' ) { + // Life long + return_json_response(array('error' => 'Cannot renew, user with id '.$data['user_id'].' has a life long membership.'), 409); +} +$today_plus_1_month = date_create("+1 month"); +if( $user['membership_status'] !== 0 && clean_date($user['expires']) >= $today_plus_1_month ) { + return_json_response(array('error' => 'Cannot renew, user id '.$data['user_id'].' has a valid membership until: '.$user['expires']), 409); } $first_user_membership = $user['expires'] === '0000-00-00'; -/* Validate optional purchase_date */ +/* Validate optional purchased (date) */ $purchased = NULL; if( isset($data['purchased']) ) { $purchased = clean_date($data['purchased']); @@ -105,5 +106,5 @@ try { send_membership_confirmation_mail($user[0], $first_user_membership); -/* Return encrypted user object */ +/* Return user object */ return_json_response(array('user' => $user) );