PHP/PHPBB3 Subscribing members support - ability to purchase access to restricted forum(s), expire of users and administration.
I have an area where 'Subscribing Members' only can post. Payment is done via PayPal in either 1 month, 6 month or 1 year increments. For postal orders (check/money order), they can in theory buy multiple months so a drop down in the ACP area couldn't be limited to these 3 options.
Start date and End date are stored in epoch (This may not have been wise). I am not a programmer by trade so most likely, it would be wise to consider this a 'from scratch' project and I'll handle the data conversion from the existing table to the newly created table. If conversion from my crummy table to the newly created system is easily done, I'd consider it a nice bonus. I'll list what is working only for reference.
Upon paying, account is upgraded to Subscribing Member and can post
* Notification email sent to admins (working but not A+ code)
* Store relevant info in the database in regards to the transaction (Working but not A+ code)
* For non-subscribing members, direct them to subscribe (working, example online if needed)
For expiry info
- Nightly email warning to those who are to expire within the next 24 hours warning should go to payer_email as well as administrator - admin in single emails or preferably in the form of a report (Partially working but had to do it in perl)
- Expire those who need expiring
- Remove all posts in 'Subscribing Members' only area for expired person
- Send notice of expire with email leading them to renew URL
- Ability to manually add information to subscribers table for non-PayPal transactions in ACP
- Ability to extend accounts that need it (in case of downtime or favor to purchaser) in ACP
- Ability to Subscribing Members database for manual changes/updates in ACP
- Ability to define which forums are "Subscribing Member" only in ACP
- Ability to set pricing in the ACP would be a plus but I don't mind changing the code to adjust pricing.
- Ability to see how much time remaining on subscription preferably in UCP
- Link (target = _new) to renew account
// End requirements
Again, I have a version working via a new table in the phpbb database but not 'clean'. It is only the subscription portion, not UCP or expiry. A brief description of the table I've used is described below.
I feel I've neglected the following:
* When did they originally start (how long have they been a subscribing member)
* Start and end in epoch may have been a bad idea
* I didn't really account for a new member type of say "Supporting Members" - i.e. growth
// My current table addition description:
user_id - unique phpbb userid on the system - this is part of the paypal order id
username - unique phpbb username on the system - this is part of the paypal order id
startdate - epoch of start time - generated with time()
enddate - epoch of end time - generated with time() + seconds in month, 6 month, or 1 year
payment_status - Paypal return variable
transaction_id - Paypal return variable
business - Paypal return variable
receiver_email - Paypal return variable
receiver_id - Paypal return variable
verify_sign - Paypal return variable
payer_email - Paypal return variable
payer_id - Paypal return variable
last_payment_gross - Paypal return variable
last_payment_fee - Paypal return variable
address_status - Paypal return variable
first_name - Paypal return variable
last_name - Paypal return variable
payer_status - Paypal return variable
address_street - Paypal return variable
address_city - Paypal return variable
address_state - Paypal return variable
address_zip - Paypal return variable
address_country_code - Paypal return variable
active - Is the account active - for renews
custom - unused at this time
Some other notes:
Server is Apache running latest mod_security. Security is VERY important to me and variables/insertions must be checked for validity. Programmer must understand vulnerabilities in XSS and remote SQL injection and how to avoid such issues.
I will have a live and development server available. This is a Linux environment. Shell access to development machine will be available if required via SSH (v2).
Right now, what is working works fine but expiry is being done for the most part manually. I feel it should just be redone by someone who is really a programmer as opposed to my kludging along. =)
I will answer any other questions via email.