From: Steve Sutton Date: Thu, 5 Sep 2019 15:00:56 +0000 (-0400) Subject: Change how the renewal date update method is done. X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=a40be616f51e12b299633cc2557bcd3d9bfb5d79;p=WP-Plugins%2Fglm-member-db-billing.git Change how the renewal date update method is done. If the site is using same date for renewals then when renewing memberships it should use that date. If the site has different renewal dates for each membership then the renewal date should stay on the same day and month each year. --- diff --git a/classes/billingSupport.php b/classes/billingSupport.php index 0db862d..5e33aca 100644 --- a/classes/billingSupport.php +++ b/classes/billingSupport.php @@ -1782,32 +1782,50 @@ class GlmBillingSupport */ public function updateAccountRenewalDate( $account ) { + // Get billing Settings for the renewal dates. + $renewal_day_static = $this->config['settings']['renewal_day_static']; + $renewal_day = $this->config['settings']['renewal_day']; + $renewal_month = $this->config['settings']['renewal_month']; $days_after_expired = $this->config['settings']['days_after_expired']; $days_before_renewal = $this->config['settings']['days_before_renewal']; - // Grab current renewal date - $current_renewal_date = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT renewal_date - FROM " . GLM_MEMBERS_BILLING_PLUGIN_DB_PREFIX . "accounts - WHERE id = %d", - $account - ) - ); - if ( $current_renewal_date ) { - $renewal_date = new DateTime( $current_renewal_date ); - // Get earliest date this one can renewal with. - $earliest_date = $renewal_date->modify( '-' . $days_before_renewal . ' days + 1 year' ); - $year_part = substr( $current_renewal_date, 0, 4 ); - $the_rest = substr( $current_renewal_date, 4 ); - // Adjust the year to current year - $new_renewal_date = date( 'Y' ) . $the_rest; - $test_renewal_date = new DateTime( $new_renewal_date ); - if ( $test_renewal_date->getTimestamp() < $earliest_date->getTimestamp() ) { - // Adjust the year. - $new_renewal_date = ( date( 'Y' ) - 1 ) . $the_rest; - } + if ( $renewal_day_static ) { + // If the renewal days are alway the same then use that date. + $new_renewal_date = date( + 'Y-m-d', + mktime( + 0, 0, 0, + $renewal_day_static, + $renewal_month, + date( 'Y' ) + ) + ); } else { - $new_renewal_date = date( 'Y-m-d' ); + // Calculate the renewal date base on last renewal date. + // Grab current renewal date + $current_renewal_date = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT renewal_date + FROM " . GLM_MEMBERS_BILLING_PLUGIN_DB_PREFIX . "accounts + WHERE id = %d", + $account + ) + ); + if ( $current_renewal_date ) { + $renewal_date = new DateTime( $current_renewal_date ); + // Get earliest date this one can renewal with. + $earliest_date = $renewal_date->modify( '-' . $days_before_renewal . ' days + 1 year' ); + $year_part = substr( $current_renewal_date, 0, 4 ); + $the_rest = substr( $current_renewal_date, 4 ); + // Adjust the year to current year + $new_renewal_date = date( 'Y' ) . $the_rest; + $test_renewal_date = new DateTime( $new_renewal_date ); + if ( $test_renewal_date->getTimestamp() < $earliest_date->getTimestamp() ) { + // Adjust the year. + $new_renewal_date = ( date( 'Y' ) - 1 ) . $the_rest; + } + } else { + $new_renewal_date = date( 'Y-m-d' ); + } } $this->wpdb->update(