We have a Control Panel, written in quite simple php, that needs to be improved and has lacking of some features. There are a dozen scripts for the interface and a few more classes to handle db and user actions.
Currently the control panel has a separate access for Customers and Administrators. We have a database with following tables: One for the Users, one for Sales, one for products, one for the user level. There are also other tables to handle user registration and sessions.
The Customer can create an account, gets a verification email, then can verify account and login.
Once logged in Customer can change password, can register a new sale for a product and can see his/her purchases listed.
1st Improvement Required: Downloads
In the original project we asked the coder to provide a way for customers to download certain files only if he has made a purchase of a given product. There is a table in the database that links downloads to the products. One product may have multiple downloads. Once a user register a purchase he needs to be able to download all the files linked to the purchased product. The original coder did not do this properly and the downloads feature never worked, so we need to implement this. Downloads have a date range in which only they can be downloaded. Downloads must not be accessible for the general public but only from the control panel and if the customer has a valid registration for the purchase. Obviously for security reasons the customer should not be able to see the location of the file, but only to download it. CAREFULLY NOTICE: We want ability to both uploads these files from the administrator panel and to have the customers download them. Uploads may have a size of 50 megabytes, so we need to avoid the time-out.
2nd Improvement Required: Mass mail
In the original project, we asked to provide a mass-email function for the administrator panel, to contact all the users that have purchased a given product. The current implementation is not good as it's a simple loop using mail functions. IT iwll not work for big lists of users. We need a solid solution, possibly based on existing mass-mailer packages. If needed we can purchase a license of some commercial mass-mailer as suggested by the bidder.
The mass-mailer should be able to integrate with our database and should have the ability to send emails on batches. We want the ability to set the number of emails to send per batch and the time-interval between two consecutive batches. Also it would be very appreciated a web interface that lets the administrator control the flow of emails and even pause it / resume it.
3rd improvement: Newsletter and db modification
Currently we have the newsletter field in the user table. We need to move this field and migrate all the values in the products table. In other words we want each product has its newsletter. Of course the newsletter field will determine if we can reach the user for a mass mail for that product. Of course the user should be able to unsubscribe from the newsletter when recieving a message during the mass-email campaign.