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
	Introduction
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:
				https://retreatreg.svn.sourceforge.net/svnroot/retreatreg,
				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
Model-View-Controller
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.
		Smarty
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.