Events Manager Project History 2000-2008

Version 0.7.0

What is it?

The Events Manager is a multi-user tool for creating and managing the web-based registration process for events. Authenticated users are allowed to create and post events. Events are listed in the main display. The public facing view allows for registrants to browse, select and register for events. Registrants receive an email confirmation of their registration.

Events Manager Features

The Events Manager offers event owners a small set of features that enable them to manage their events. Event owners are allowed to create, update, duplicate and delete events within the system. Event owners are also able to view the names of people who have RSVP'd for their event and generate email to their attendees. Events may be active or inactive. Events that have slipped into the past can be shown if necessary.

Events can be "owned" and "managed" by different user types. Often we have an Event that has a contact person who is not the Event Owner. New in this version is the notion of the Instructor user type. Events can be configured to send email (via a cc of the registrant email receipt) to each or none of the user types.

Events can have "sub-events" allowing for a Conference to have multiple workshops associated with the conference. These eases the problem of having to register for each and every event you wish to attend.

New in version 0.7.0 is the notion of "optional fields". Both the Event description and the Registration forms have the ability to toggle on/off fields. Event owners may decide that they don't want to collect or display information on the Event URL, Event Logo or Fee fields. They can choose to "hide" these fields. In addition to "optional" fields, the notion of "required" fields can also be toggled on/off. This allows the Event Owner to either require the field "Title:" or display the field and not require it.

Also new in 0.7.0 is the ability to toggle on/off the "send cc to" feature. Event owners can send themselves a cc of the registration receipt that was sent to the registrant. Event contacts and Instructors can also be cc'd as necessary.

In Development Additional features that are in testing include the ability to download MS Excel spreadsheets of RSVP lists and tracking FOAPAL information for events that have fees. Minimal online help is available to Event Owners in the Administration screen.

History and Background

Conferences, convocations, retreats and meetings often require on-line registration tools to track attendees, generate email reminder notices and participant lists, create name tags, handle billing, etc. The BAS Events Manager allows an individual to manage this type of data without additional programming effort. Overtime, I've dropped the divisional specific "BAS" and simply called the program "Events Manager".

The Events Manager was originally written in Fall 2000 using the tools Cold Fusion and Oracle. I rewrote the original program in 2004 using PHP and MySQL to reduce the dependence on proprietary software. It has received a number of upgrades and bug fixes over years and I continue to build the list of desired features that can help my customers.

After developing many one-off registration programs for various groups on campus. I came to realize that most event owners had the same basic set of functional requirements including:

  • a method to post information about their event to the web, a method to capture registration information about event attendees,
  • a method to control basic business rules about an event (number of attendees, active and inactive events, dates, times, etc.),
  • a method to manage their event registrations (editing information about the event or attendees, download registrations to their desktops and, generate mass emailings).

In Spring 2004, I began porting the existing ColdFusion code to PHP and migrating the database from Oracle 8.0.5 to MySQL 4.0.17. The purpose of this migration is twofold; first, I wanted to migrate off older technology (Oracle 8 running on Windows NT) and second, I wanted to reduce the costs associated with the database. The cost issue was relatively minor; about $300/year, but the labor costs in maintaining the overhead of an Oracle RDBMS is not insignificant. I simply don't need all the functionality found in Oracle and am more comfortable managing a series of MySQL implementations. In addition, I wanted to move the code base to open source allowing anyone else who is interested in improving and adding functionality to the base. Currently, this solution is running on an Apple X Server running 10.3.x which hosts a number of virtual domains, web applications and static data.

In the process of migrating, I was able to achieve a test environment by replicating my PHP code and MySQL db's on both my laptop and workstation. This is an improvement on my past environment, where applications were being developed on the production server; not a good solution.

The first phase of the port was to maintain existing functionality. This required learning the differences between ColdFusion and PHP as well as the differences between Fusebox 2 and Fusebox 3.

Fusebox is a standard framework and methodology for building web-based applications. I selected this methodology while working in ColdFusion back in 2001. It seemed like a reasonable thing to continue with a development method that I understood and was fairly well documented.

I've used a number of tools on this project. SQLGrinder was used to connect my Mac to the Oracle server and export the data. (Oracle doesn't allow for easy ASCII text file exports; just another reason IMHO). CocoaMySQL is a great open source tool for working with MySQL databases. Eclipse is a java based IDE with PHP plug-in support that makes debugging a little easier. BBEdit is a well known text editor for the Mac. I began using CVS on this project to manage revisions done on my laptop, workstation.

Moving to PHP

As in the ColdFusion world, PHP has a great number of resources available to developers. One of the most useful for me was the PEAR archives. PEAR is structured library of open source code for PHP developers. It is comparable with the CPAN repository for Perl. The PEAR code library is a series of packages that contain code classes that developers may use to reduce their overall development effort.

For example, every time you need to connect to the database, you need to send information about user, password, host and database name. A class containing functions would allow you to wrap the code necessary to make the connection into a single file that you would call each time you needed to connect vs. re-writing the connection code on every page.

Through the use of classes, my goal is to achieve a reduction in the overall effort required to connect, fetch, display, create, update and delete data. My observation at this point is that I'm able to reduce the coding effort by one third by using PEAR classes to display forms and tables. Additionally, the code is much cleaner and easier to read.

My Approach

The Events Manager is a project I started when I actually was doing a lot of web application development. I've changed jobs over the years and have kept maintaining the program based on user feedback. This helps me keep my skills up - I'm not a professional programmer, you may consider me an advanced hobbyist.

These days, the development work happens during the summer between other large IT projects. I've also spent vacation days, weekends and my own time trying to improve the program so that it meets the requirements of my local customer base here at UC Santa Cruz.

Events Manager makes use of PHP class libraries from several sources. I'd like to take the opportunity to cite and thank the people who have put these pieces together for me to reassemble.

  • I've drawn heavily on the SitePoint books The PHP Anthology Volumes I and II by Harry Fuecks. In addition to Volumes I and II, I've made use the SitePoint PHP class libraries (SPLIB). Any redistribution of this work needs to include these acknowledgment notices.
  • The new authentication and user management system is based on patUser developed by Stephan Schmidt and Gerd Schaufelberger. See their site, for some other great PHP application tools.
  • As mentioned above, version 0.7.0 is written for the FuseBox v3 specification.
  • I tried to stay loyal to their principles, but I'm sure I haven't.
  • I'm now maintaining an SVN repository to help me manage and remember how I've approached the coding and resolution of bugs. I'm no SVN expert, but it is forcing me to adhere to best practices.
  • I have not written any unit tests. This is something I want to learn how to do. Maybe in the next version and spurt of development time.
  • PHPMailer class is used.
  • PEAR HTML_QuickForm
  • PEAR HTML_QuickTable

The Road Ahead

My hope is to package and release this software in the sourceforge and to continue to improve it as my time permits. I'm always happy to take end user input, I just can't make every change for every person. I'd like to see more object oriented re-factoring take place in a future version. Time and energy are my real constraints.