Alps-Rentals.com is a property rentals website for the French and Swiss alps.
The client wanted to be able to manage properties with different categories of facilities, photos as well as pricing and availability. Another requirement was that property owners would also be able to log in and add/edit their own properties in different currencies depending on whether they were a Swiss, French or UK company.
The Content Management System was built using a bespoke Object Oriented approach.
Content added by property owners is quarantined so that the admin users can check for inappropriate content or attempts to link back to their own website. In order to prevent XSS attacks All content added this way has HTML tags striped.
When pricing and availability is added for a property the user can book their holiday straight away, the price of the rental is automatically calculated. This turned out to be the most complicated bit of the job because different property owners have different pricing models and designing an algorithm to cater for every posibility is virtually impossible (certainly for the client's budget).
Once a booking is made the property owner is emailed the users booking information minus the contact details, they would then log into the website to accept the booking and only then would the users contact details be revealed to the property owner.
There is also a CronJob that runs every night which sends reminders to property owners if they haven't accepted or refused an enquiry. Another CronJob automatically invoices the property owners for bookings they have accepted.
The emails sent out this way are HTML formatted with a simplified version of the alps-rentals design, the invoices are created as PDFs on the fly using dompdf and are saved on the server, outside the document root, for future reference.
In the end it turned out that many property owners didn't have the time or inclination to keep their availability up-to-date so many properties on the website don't have any listed, instead users are encouraged to make a booking enquiry.
This had the added advantage of gathering more enquiries from potential users than would be the case when they can only make an actual booking, giving the client the opportunity to follow up the leads by email.