Development Guide

Basic Architecture

This diagram gives a broad overview on the ILIAS 3 architecture. ILIAS components are divided into services and modules. Each module provides an implementation for one or more resources that can be added to the ILIAS repository, e.g. a forum, a glossary or a chat. Services provide general functionalities used in the modules (or in other services), e.g. the role based access system or the news system.

Foundation Layer

The Foundation Layer contains all external systems and programs that ILIAS depends on, like PHP, MySQL and Apache. To keep it simple, some helper tools like Imagemagick or the zip program are omitted in the diagram.

ILIAS Application and GUI Layer

The main idea is that every component consists of a number of User Interface and Application classes.

Responsibilities of the GUI Layer

  • Processes input and generates output

  • Accesses $_GET and $_POST variables

  • Calls methods of the Application Layer

  • Generates output with Template Engine

Responsibilities of the Application Layer

  • Accesses database to insert, update and delete data

  • Calls other application or core classes to perform some tasks

Example flow of control

The flow of control starts in a User Interface class that calls methods of the corresponding application class. The example on the right shows the control flow through the different layers. The szenario displays the title of an ILIAS group. The group GUI class ilObjGroupGUI creates an instance of the application class ilObjGroup. In its constructor the application class accesses the database and reads all the instance properties with the help of the query method of class ilDBx. After the processing of the constructor ilGroupGUI calls the getTitle() method if ilObjGroup to receive the group title and finally sets a template variable in the HTML output accordingly.

Sometimes more than one GUI and/or application class are involved in processing a user request. But method calls may only targeted to objects in the same or underlying layers.

Code Directory Structure

The architecture leads to the following main directory structure for the code. Please note that you will find additional files and folders in the ILIAS main directory. But the most core of ILIAS is within this structure:

Modules/
Glossary/
classes/
templates/
Survey/
classes/
templates/
Test/
...
Services/
AccessControl/
classes/
MetaData/
classes
templates
Search/
...

API Documentation

The current API documentation for modules and services can be found at: ILIAS API Documentation. It is offered for the trunk and former release branches.