[ class tree: Controllers ] [ index: Controllers ] [ all elements ]

User Guide for the Retreat Registration Version Two (RV2)Project

To help developers get up and running with working on the Project

Author: Jan van der Breggen

Table of Contents


This documentation is for the Rigpa Retreat Registration Version Two PHP software project. This is not the general project documentation which can be found at: (insert link). The aim of this documentation is to describe the current state of the PHP software development process that is part of the project. The project is currently in the phase of Prototype Development. The project is envisioned to become an open source style team collaboration involving as many programmers as are willing to volunteer their time and efforts. According to research on the topic one of the critical factors in the success of Open Source Software Development is the availability of a working prototype of the project. Having a critical mass of code embodied in a working prototype sets the vision of the project in a tangible way, and this enhances the chances of a succesful Open Source Project (See for example Srijith's research paper on Open Source SD).

The of aim the working prototype is twofold:

  • To provide the critical mass of code and design vision as described above;
  • To provide those who have to convince the wider Rigpa world of the benefits of a world wide system of retreat registrations with a kind of demo version of the application.
  • The last point falls outside the scope of this document. The rest of this document is made up of two sections: setting up the RV2 Development Environment, and RV2 Software Design. The section of Software Design will also introduce the project's basic directory structure, so it is recommended you go through this section after you have setup the RV2 development environment.

    Setting up a Development Environment

    Below you find recommendations for setting up your computer for working on the project.

    Web Server Environment

    You will need to install the following on your computer:

  • Apache Web Server
  • PHP Version xxxxx
  • MySql Version xxxxx
  • Easiest is to use a package that installs and configures all these components for you, such as Wamp Server or Zend Community Server

    You may also wish to download the of MySql Administration tools . Especially the MySql Query Browser and MySql Administrator applications are very useful.

    Setting up the project in Eclipse PDT

    The recommended IDE for developers on the Rvtwo project is the Eclipse PDT Integrated Development Environment ( PDT Download site) . If you are using another IDE you will need to take the essential information supplied in this section and apply it to your IDE's environment. After installation, upon opening the application you will be prompted to set a work space location. Choose your web server's document root for this.

    The source code of the Project is stored in a Subversion repository on the project's Sourceforge site. In order to access it throug the Eclipse PDT application you will need to install the Subclipse plugin. This can be done by following the steps explained on the Tigris website .

    After installing the SubClipse plugin you can download the project Source code from the repository as follows: From the File menu, select Import and under Other select Checkout Projects from SVN and click Next. Select Create a New Repository Location, click Next, and enter the following location:, and checkout the following folders:

  • rvtwo
  • ddms_server
  • Eclipse will ask whether to create the projects in its workspace. Anwser 'yes' to this.

    RV2 Software Design


    The basic design of the application follows the well known Model-View-Controller (MVC) design pattern. For indepth information about the MVC design pattern and the reasons for using it see for example ?????? (find good web resource to link to). Here we'll just establish the basics needed for starting to work with the code.

    Within the MVC pattern, there is a separation of 'layers':

  • Model - this is the layer that directly interacts with the MySql database. Any program code that has SQL embedded should be part of a Model.
  • View - this is the layer that is responsible for displaying the user interface. Any code that involves HTML tags should be part of a View.
  • Controller - this layer is responsible for: - providing the View with data to be displayed on the user interface, - processing information supplied by users through the user interface and passing this system responses back to the View for display, - passing data to the Model for storage in the database. The Controller should never go directly to the database and should not have anything to do with formatting data into HTML tags.

  • Object Oriented Approach to Application Development

    The RV2 application aims as much as possible to be Object Oriented (OO). As such the Controller and Model functionality is all encapsulated in Classes. The Controller classes are all stored in Controllers directory and the Model classes are all stored in the Models directory. Each file in these directories contains the code for one Controller or Model class, and the filename matches the class name. Model and Controller Classes make use of functionality provided by other Classes, the code of which resides in the Classes directory. For these classes the same rule applies as for Model and Controller Classes: one class per file and file name and class name must match.


    Views (stored in the Views directory)are the exception to the rule that RV2 is fully OO. Views are Smarty Templates: a combination of HTML tags and Smarty tags which together produce a User Interface Screen. If your work on the RV2 project involves User Interface development you will need to be familiar with the way Smarty works. (Insert hyperlink to Smarty documentation). If your work is limited to working in the area of system Controllers you will at least need to know how to pass data to the Smarty template. For this, easiest is to just have a look at some existing Controller classes and see how this is done.

    Documentation generated on Mon, 18 May 2009 11:21:28 +0200 by phpDocumentor 1.4.1