Opinions on Resetting Expire Date on Membership Site

I’m coding a membership module that I’m going to use in a couple of projects. I’m curious what other people do (or would do) when a membership expires and is later renewed. Note: Membership payment in these scenarios is not automatic (i.e. subscriber payments)

Scenario #1: A member renews via Paypal on or before the expiration date. This is the easy case. The new expiration becomes the old expiration date plus 1 year.

Scenario #2: 2 weeks after membership expires, a member renews via Paypal. This falls within the grace period, so the new expiration is the same as scenario #1.

Scenario #3: 2 months after membership expires, a member renews via Paypal. This is outside the grace period, so it’s treated almost like a new membership where the new expiration date is the current date plus 1 year.

I guess the real question is where should the cutoff be after which membership has basically lapsed due to inactivity? Renewing starts a new expiration date based on the current date.

I’m not sure if I understand your question. Are you asking how long your grace period should be? I would probably restart their subscription on the date they renew if they are expired. If they are expired, they shouldn’t have access to your site. If my subscription ended and I renewed it, I wouldn’t want my new expiration date to be based on when it last expired. What you would do is get rid of scenario #2. You would use the grace period as an optional way of giving them a chance to come back at a lower price. Saying,“Hey, your membership expired. You have X amount of days to renew at $X.XX price.” Otherwise, they go back to full price. With your scenario there really isn’t much incentive to renew during the grace period because their expiration date is retro active. If it was my membership that expired, I would wait until the grace period is over so I don’t lose the days between it last expired and when I renewed.

I am curious about your membership script, because I am working on a membership site but instead of writing my own member module, I am integrating aMember into my app.

@cnick79, thanks for the input. One of the sites in particular displays a publicly available userpage. It revolves around the school calendar, so there is no real financial incentive to delay renewal. I get your point, though. I thought a grace period would be a kinder way of cutting them off. I was thinking of magazine or newspaper subscriptions. If you go past the renewal date, newspapers especially will continue to deliver up to a point under the assumption that you’ll pay the bill. The end date is still based on the fact that you continued to have access to the service and that you’re just paying the bill late.

I think I came across aMember. I haven’t used it though. Let me know how the integration goes. I’m using the userGroups module coupled with YAPM (Yet Another Paypal Module) that I’m writing. Basically, I create a few simple roles (e.g. trial, member, expired, admin) using userGroups. YAPM includes a utility class for changing groups, setting expiration dates, etc. that should probably be part of userGroups. I could have used one of the existing Paypal modules, but I wanted to understand the security aspect of it. So I started with some PHP code I liked and added what I needed for the rest of the functionality.

I don’t know if my code will ever be released for general use. I don’t have the time to support the questions or to write up decent enough documentation. I don’t have a problem sharing on an individual basis, though, if you’re curious enough to want to see code.

@cnick79, I just took a quick look at the FAQ for aMember. It appears to use folder based permissions to restrict access using .htaccess, correct?

Protection can be set for website folders, downloadable files, pages, and URL links. I’m not sure if it uses .htaccess or not. This is my first time using aMember so it’s still new to me.

Ok. I’m guessing you’re going to have problems with anything underneath the protected folder. By default within “protected”, there is a .htaccess file containing “deny from all”. The bootstrap file (index.php), one directory level up from protected, is the only executable file users have direct access to. I would think there would be problems restricting controller/actions since users can’t directly access those folders anyway.

I’m sure it won’t take long to test things out either way. Good luck.