Programmer's Guide to Understanding the Control Hierarchy
The control hierarchy refers to two factors that affect the internal functioning of the Cy Think Content Management System. These two factors affect the balance between flexible and powerful functionality on the one hand and excellent performance and quick response over the internet on the other hand. They are the parameter hierarchy and the access hierarchy.
Although changes to the CMS parameters are typically infrequent, the user / administrator has the powerful ability to change parameter values at any time. This powerful ability is made available through an hierarchical control mechanism.
The user / administrator implements changes in several ways, but on this page we are concerned with the parameters that appear when the Parm button is clicked.
The Parameter Hierarchy
-
The basic defaults are determined by JshPARM.pm.
-
These are superceeded according to the value in sysparms.txt. The show values set by the Parms page changes the values in sysparms.txt. These first two levels define the "site". The sysparms.txt file contains only exceptions to the defaults in JshPARM.pm.
-
An additional level is planned that will further refine the applicable parms by urer type.
-
Rings and albums have values that extend the parm values but apply to all pages in the ring or album.
-
Parameter specifications in individual txt files apply only to related sub pages.
The Access Hierarchy
For performance reasons, some things need to be hardcoded. At the opposite extreme, flexibility demands that some things need to be in database tables. In the Cy Think CMS there are several intermediate levels that span the gap between these two extremes. Here they are in rough order from hard code to database flexibility.
-
Hard code. Fast, but inflexible.
-
Parm system. Fast, but requires one or more disk/memory accesses to read default parm values.
-
The parm system may be expanded to handle specific user types that override and expand the default levels of system configuration. This should extend the parm system to mitigate database overhead.
-
Data in code table. Flexible, but may be slightly faster that separate table for each parameter type.
-
Data in tables in MySQL database. Flexible, but slower.
This procedure is abbreviated and high level. It is documented to prompt the programmer as to the needed steps and is not intended to be a detailed step-by-step procedures.
|