Перейти к содержанию

2. Architecture constraints

Technical constraints

Constraint Consequence
PHP 7.2.5 minimum Production code cannot require newer language syntax without raising the minimum
MySQL/MariaDB and PostgreSQL SQL and schema behavior must work through both database adapters
Server-rendered web application Every normal request executes PHP and returns HTML, JSON, JavaScript, CSS, or an export
Shared-hosting compatibility Installation cannot assume containers, background workers, or shell access
Filesystem configuration Secrets and local overrides are loaded from config.inc.php
Optional PHP extensions Internationalisation and integrations require capability checks or fallbacks
Multiple authentication systems Session initialization and third-party autoloaders can interact

Organizational constraints

  • MRBS is distributed under the GNU General Public License.
  • Existing installations expect configuration variables and database upgrades to remain backward compatible.
  • Contributions must accommodate installations with different themes, languages, identity providers, and database systems.
  • Release artifacts include dependencies in the repository rather than requiring a production Composer installation.

Conventions visible in 1.12.2

  • The MRBS namespace is used for application code.
  • Namespaced classes are loaded from web/lib/ by a small PSR-0-like autoloader.
  • Page controllers and significant shared behavior remain procedural.
  • Configuration is represented by PHP variables and arrays.
  • Database table names use a configurable prefix, mrbs_ by default.
  • User-facing strings are loaded from language files.

Runtime constraints

  • The room timezone can differ from the server timezone.
  • Requests can run under different PHP SAPIs and web servers.
  • Kiosk and public-access modes must coexist with authenticated administration.
  • Email is flushed through the mail queue at request shutdown.
  • Schema upgrades may require credentials with table-altering rights.

Documentation constraint

This architecture baseline is fixed to v1.12.2. Later main-branch changes are not part of the baseline until the documented version is advanced.