A PHP framework for back-office applications

Radicore is a PHP framework built for back-office web applications. Please refer to this link to read a thorough description of the framework.

In order to show you how powerful it is I shall write about the applications I have built using it. In this post I will cover one of these applications and will be following it up with successive posts covering the rest of the applications. These applications have been deployed in the production environment of a university and have been listed below in an increasing order of complexity:

  1. Library Application
  2. Survey Reports Application
  3. Time & Attendance Application
  4. Core Business Application

Library Application

  1. The application should have a record of all books present in the library. Each record should include data on the following attributes of a book: Accession Number, Title, Author, ISBN, Publisher, Year Of Publication, Price, Supplier, Number of Pages, Is Hardback, Date Of Purchase, Country – in which it was published, Edition, Discipline, Subject Area (more specific than Discipline).
  2. Students, teachers, the librarian and the library staff should be authenticated before they are allowed access to the application.
  3. There should be an authorization mechanism in place that enables role based access to the application such that each role should be able to view a set of attributes specific to their role.
  4. The librarian should be able to print reports for the management. These reports should print a pre-defined set of book attributes A, filtered using a second set of attributes B and sorted using a third set of attributes C in PDF format.

Meeting these requirements using RADICORE
To meet the first requirement:

  • Created an application & a MySQL database instance.
  • Created a single database table with a single field for each attribute.
  • Imported the database into the application instance.
  • Imported this table into RADICORE’s data-dictionary.
  • Used RADICORE’s data-dictionary to generate a object oriented class representing the database table.
  • Used RADICORE’s menu system to create a set of screens for basic CRUD operations on the class.

To meet the second requirement:

  • Integrated the application with a LDAP server running in our university. This LDAP server hosts accounts for all students, teachers, the librarian and the library staff. RADICORE was then able to leverage LDAP for authenticating users.

To meet the third requirement:

  • I used RADICORE’s role based authorization system. In order to do so I had to import all users of the application from the LDAP server into RADICORE and assign a role to each user. I then made a duplicate set of CRUD screens for students & teachers and customized these by removing references to the create, update and delete operations. I also removed some of the book attributes that were not relevant to the student and teacher roles. Having customized the screens, I was able to use a feature of the menu system to make these screens visible only to the student & teacher roles. Finally, I made the original set of CRUD screens visible only to the librarian and the library staff roles. (The student & teacher roles and the library staff & librarian roles were created as duplicates keeping in mind the future expansion of the application.)

To meet the fourth requirement:

  • I used RADICORE’s reporting sub-system, which uses the open-source TCPDF library to generate reports in PDF format. This sub-system uses a template mechanism whereby it splits the report into two components. The first component is a template, that must be coded for each report and that abstracts out the format of the report and the static and dynamic variables that go into completing the report. The business logic that generates values for the dynamic variables is encapsulated in a PHP class built using the data-dictionary.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s