Μετάβαση στο περιεχόμενο

6. Runtime view

Scenario 1: bootstrap a normal request

sequenceDiagram
  participant B as Browser
  participant P as Page controller
  participant D as defaultincludes.inc
  participant S as Session
  participant L as Language
  participant DB as Database
  participant U as Upgrade logic

  B->>P: HTTP request
  P->>D: require
  D->>D: load autoloader and defaults
  D->>D: load config.inc.php and site config
  D->>S: initialize selected session
  D->>L: initialize locale and catalogues
  D->>DB: initialize database adapter
  D->>U: check schema version
  D-->>P: standard request context
  P-->>B: rendered response

The order matters. Session initialization happens before error infrastructure to reduce interface-version conflicts with third-party systems such as Joomla.

Scenario 2: create a booking

sequenceDiagram
  participant U as User
  participant F as edit_entry.php
  participant H as edit_entry_handler.php
  participant A as Authorization/policy
  participant Q as Booking persistence
  participant DB as Database
  participant M as MailQueue

  U->>F: Open booking form
  F->>A: Check access and available slot
  F-->>U: Form and policy constraints
  U->>H: Submit booking
  H->>A: Validate identity, input, policy, conflicts
  H->>Q: Create entry or recurrence
  Q->>DB: Transactional writes
  DB-->>Q: Stored booking
  H->>M: Queue notifications
  H-->>U: Redirect to calendar or entry
  M->>M: Flush during shutdown

Database checks remain authoritative; client-side availability is only a user experience aid.

Scenario 3: authenticate

sequenceDiagram
  participant P as Protected page
  participant S as Session adapter
  participant A as Auth adapter
  participant I as Identity source

  P->>S: getCurrentUser()
  alt no current identity
    P->>S: request authentication
    S->>A: validate credentials or initiate SSO
    A->>I: backend-specific verification
    I-->>A: identity and attributes
    A-->>S: MRBS user
    S-->>P: authenticated identity
  else existing session
    S-->>P: current identity
  end
  P->>P: compare access level and resource rules

Scenario 4: schema upgrade

During bootstrap, upgrade logic compares the stored schema version with the application's expected version. If migration is necessary, an administrator may supply a database account able to alter the schema. Upgrade steps modify tables and record the new version before ordinary operation continues.