Engelsystem is an MVC based PHP application, but there was a 4th ties, Pages, introduced with the traditional MVC pattern. It seems to have everything an event manager could want.
The Model-View-Control (MVC) pattern, originally formulated in the late 1970s, is a software architecture pattern built on the basis of keeping the presentation of data separate from the methods that interact with the data. In theory, a well-developed MVC system should allow a front-end developer and a back-end developer to work on the same system without interfering, sharing, or editing files either party is working on.
Like everything else in software engineering, it seems, the concept of Model-View-Controller was originally invented bySmalltalk programmers. More specifically, it was invented by one Smalltalk programmer, Trygve Reenskaug. Trygve maintains a page that explains the history of MVC in his own words.
The components of an MVC pattern are explained as follows:
- MODEL: The Model is the name given to the permanent storage of the data used in the overall design.
Models represent knowledge. A model could be a single object (rather uninteresting), or it could be some structure of objects.
- VIEW: The View is where data, requested from the Model, is viewed and its final output is determined. A view is a (visual) representation of its model. It would ordinarily highlight certain attributes of the model and suppress others. It is thus acting as a presentation filter.
Traditionally in web apps built using MVC, the View is the part of the system where the HTML is generated and displayed. The View also ignites reactions from the user, who then goes on to interact with the Controller.
- CONTROLLER: The final component of the triad is the Controller.A controller is the link between a user and the system. It provides the user with input by arranging for relevant views to present themselves in appropriate places on the screen.
Its job is to handle data that the user inputs or submits, and update the Model accordingly. The Controller’s life blood is the user; without user interactions, the Controller has no purpose.
Even though MVC was originally designed for personal computing, it has been adapted and is widely being used by web developers due to its emphasis on separation of concerns, and thus indirectly, reusable code. The pattern encourages the development of modular systems, allowing developers to quickly update, add, or even remove functionality.
Initially, in Engelsystem there were files distributed in 4 tiers, Model, View, Controller, Pages, which are mentioned as follows:
admin_active.php admin_arrive.php admin_export.php admin_free.php admin_groups.php admin_import.php admin_log.php admin_news.php admin_questions.php admin_rooms.php admin_settings.php admin_shifts.php admin_user.php guest_credits.php guest_login.php guest_start.php guest_stats.php user_atom.php user_ical.php user_messages.php user_myshifts.php user_news.php user_questions.php user_settings.php user_shifts.php
AngelType_model.php LogEntries_model.php Message_model.php NeededAngelTypes_model.php Room_model.php Settings_model.php ShiftEntry_model.php ShiftTypes_model.php Shifts_model.php UserAngelTypes_model.php UserDriverLicenses.model.php User_model.php
angeltype_controller.php rooms_controller.php shifts_controller.php shifttypes_controller.php user_angeltypes_controller.php user_driver_licenses_controller.php user_controller.php
AngelTypes_view.php Questions_view.php Rooms_view.php ShiftEntry_view.php ShiftTypes_view.php Shifts_view.php UserAngelTypes_view.php UserDriverLicenses_view.php User_view.php
There were 26 Pages files, in which there were both sql queries along with the controller code. All these files were refactured into Controller and Model(which contains sql queries) files seperately to implement proper MVC pattern in Engelsystem.
We are developing new feature for Engelsystem and we will be applying this WordPress like update system toEngelsystem in the upcoming weeks. Developers who are interested in contributing can work with us.
Development: https://github.com/fossasia/engelsystem Issues/Bugs:https://github.com/fossasia/engelsystem/issues
You must be logged in to post a comment.