We at Solunanet would like to welcome you to our new company website. We are a new web development and hosting company in the Pioneer Valley. Please browse the services and products we have available.


 

Welcome to the SimpleMOD Developer Blog

 

SimpleMOD

 

SimpleMOD is a PHP5, Object Orientated framework and content management system created to each the development of web-based applications. By using a modular approach Zarrs is able to be customized and expanded with ease.

 

Modules and Package

 

To understand SimpleMOD you must first understand Packages and Modules. A package is a collection of code, templates, SQL and configuration files that can be used to install a working module into Zarrs. Using a CMS package, for instance, you can install multiple CMS Modules (one for each department in a University, for instance) that can each have their own settings and permissions.

 

More importantly, by using base classes a programmer can create a custom module that fits into Zarrs- in other words, it can be installed, edited, and deleted and have all of its actions run through the system. With all of the basic functionality taken care of focus can be made on what makes the new project unique.

 

A final note about Modules is that they can interact with other modules and packages. A custom package can utilize code in the CMS package to give basic CMS functionality to that custom module.

 

Engines

 

When a module runs, it handles all of the data crunching and interactions that are unique to the system, but the Engines handle the grunt work. The majority of code for each engine is the same- they load the appropriate module, check to see if the user has permission to be in that area to do the requested action, handle errors, and run any widgets associated with that engine.

 

The one area where they differ most often is how they present their data. There is an engine for displaying web content, another for playing Javascript Object Notation (JSON) for our AJAX applications, another to handle the Admin panel, and the potential for many others. Each Package defines a set of actions that it can do with each engine, and since this is normally seperated from the display formatting itself it allows each Package to present multiple ways for communication with the client and opens up an easy avenue for API development.

 

Widgets

 

Similar to Packages, Widgets are customized code developed to add functionality to entire engines. As such, installed Widgets get run every time the engine associated with them runs. Examples include

Google Analytics code for the main engine, or an advanced logging widget for the admin engine.

 

Security

 

A high priority, there are multiple approaches to security being utilized by Zarrs. Here we will outline some of the most relevant.

 

Our role-based permission system allows different roles to be assigned to members or member groups at different locations in the system. Any object has the potential to be a location, and permissions are inherited from parent locations.

 

User input is automatically filtered to prevent XSS attacks from taking place. The programmer can choose the level of filter quite easily for different circumstances. Filters have the capability to include desired html while stripping out potentially threatening code.

 

To protect our databases we use prepared and bound statements to protect from SQL injection attacks as well as to speed up queries. Queries are also divided up based on their type, so there is less potential for damage in the case of a successful SQL injection.

 

User passwords are stored using salted sha256 password.

 

Templates and Themes

 

With a simple to use template system, designers are able to tweak every aspect of how Zarrs looks and feels without having to understand any code. Separating the form from the function was a high priority to help ease development and maintenance of applications build off of Zarrs.

 

Shared Library

 

Simply a collection of common tools, the shared library gives developers a toolbox which they can use to share add features to multiple modules. Some of the features in the shared library include improved content-spam filtering, WYSIWYG editors, XSS filtering, and a PayPal button generator.

 

Open Source

 

Zarrs is an example Open Source Software. It is released under the Mozilla Public License. What this means is that the Zarrs Framework itself can by used, edited, and redistributed by anyone as long as they follow a certain set of rules, which include sharing any modifications of improvements to the code with us so we can all benefit from those improvements. Its important to note this only applies to code that is part of Zarrs- any code you develop that utilizes Zarrs but is your own unique code, such as a Package or Widget, can have any license you wish (as long as it doesn't consider MPL incompatible), or even be closed source.

 

Zarrs being open source gives you other advantages as well. You don't have to worry about license fees, you can alter the code at any time (or have someone do it for you) without having to worry about legal ramifications, and you can apply any updates to your current installations.

 

Database

 

The Zarrs database utilizes the InnoDB engine of MySQL and the features it imparts, such as foreign key support and transaction support. An Entity-Relationship Diagram is included in this file to give a basic understanding how the permissions system and modules work. The structure will expand as mode Packages get installed as Modules.