- Add DEVELOPMENT.md with complete architecture overview - Document exact loading order and function call sequence - Include security checkpoints and data flow analysis - Provide practical development workflow and coding standards
4.9 KiB
CodePress CMS - Executie Flow
Volledige Laadvolgorde en Functie Aanroepen
1. Web Request Start
Bestand: public/index.php (Eerste geladen bestand)
Stappen:
-
Line 3:
require_once __DIR__ . '/../engine/core/index.php'- Laadt de core loader
-
Line 5:
$config = include __DIR__ . '/../engine/core/config.php'- Laadt configuratie
-
Line 8-13: Security check
- Blokkeert directe toegang tot
/content/directory
- Blokkeert directe toegang tot
-
Line 15:
$cms = new CodePressCMS($config)- Creëert CMS instance
-
Line 16:
$cms->render()- Start de rendering
2. Core Loader
Bestand: engine/core/index.php
Stappen (in volgorde):
-
Line 27:
require_once 'config.php'- Laadt configuratie systeem
-
Line 30:
require_once 'class/SimpleTemplate.php'- Laadt template engine
-
Line 33:
require_once 'class/CodePressCMS.php'- Laadt main CMS class
3. Configuratie Laden
Bestand: engine/core/config.php
Stappen:
- Line 9-25:
$defaultConfigarray wordt gedefinieerd - Line 27-41: Configuratie wordt samengevoegd met
config.jsonindien aanwezig
4. CodePressCMS Constructor
Bestand: engine/core/class/CodePressCMS.php
Methode: __construct($config) (Line 35-44)
Stappen in exacte volgorde:
-
Line 36:
$this->config = $config- Slaat configuratie op
-
Line 37:
$this->currentLanguage = $this->getCurrentLanguage()- Roept
getCurrentLanguage()aan
- Roept
-
Line 38:
$this->translations = $this->loadTranslations($this->currentLanguage)- Roept
loadTranslations()aan
- Roept
-
Line 39:
$this->buildMenu()- Roept
buildMenu()aan
- Roept
-
Line 41-43: Search handling indien nodig
- Roept
performSearch()aan als$_GET['search']bestaat
- Roept
5. Taal Detectie
Methode: getCurrentLanguage() (Line 51-53)
Stappen:
- Line 52:
return $_GET['lang'] ?? $this->config['language']['default'] ?? 'nl'- Check URL parameter, dan config default, dan 'nl'
6. Translaties Laden
Methode: loadTranslations($lang) (Line 61-74)
Stappen:
-
Line 62:
$langFile = __DIR__ . '/../../lang/' . $lang . '.php'- Bouwt pad naar taalbestand
-
Line 64-68: Check of bestand exists en laad het
-
Line 70-73: Fallback naar default taal indien nodig
7. Menu Bouwen
Methode: buildMenu() (ongeveer Line 200+)
Stappen:
- Scan content directory voor bestanden en mappen
- Roep
scanDirectory()aan recursief - Genereer menu structuur met hiërarchie
8. Main Render Methode
Methode: render() (ongeveer Line 300+)
Stappen in volgorde:
- Bepaal page type (content, search, guide, directory)
- Roep
getPage()aan voor content - Genereer breadcrumb met
generateBreadcrumb() - Bepaal content type met
getContentType() - Laad template (layout, header, content, footer)
- Render template met
SimpleTemplate::render() - Output HTML
9. Content Verwerking
Methode: getPage() (ongeveer Line 150+)
Flow afhankelijk van page type:
Voor Markdown (.md):
parseMarkdown($content, $filePath)- CommonMark conversie
- Auto-linking met
autoLinkPageTitles()
Voor PHP (.php):
parsePHP($filePath)- Execute PHP en capture output
- Buffer handling
Voor HTML (.html):
parseHTML($content)- Directe verwerking
Voor Directory:
getDirectoryListing($pagePath, $dirPath)- Scan directory voor bestanden
- Genereer lijst met metadata
10. Template Rendering
Klasse: SimpleTemplate
Methode: render($template, $data)
Stappen:
- Load template file
- Process partials met
{{>partial}} - Process conditionals met
{{#var}}...{{/var}} - Replace variables met
{{variable}}(escaped) of{{{variable}}}(unescaped) - Return rendered HTML
Complete Flow Samenvatting
1. public/index.php
↓ require_once
2. engine/core/index.php
↓ require_once (3x)
3. config.php → SimpleTemplate.php → CodePressCMS.php
↓ new CodePressCMS()
4. CodePressCMS::__construct()
↓ getCurrentLanguage()
5. loadTranslations()
↓ buildMenu()
↓ (optioneel) performSearch()
↓ render()
6. getPage() → parseMarkdown/parsePHP/parseHTML/getDirectoryListing()
↓ generateBreadcrumb()
↓ getContentType()
↓ SimpleTemplate::render()
7. SimpleTemplate::renderTemplate()
↓ Output HTML
Security Checkpoints
- public/index.php Line 8-13: Blokkeert
/content/toegang - Template engine: Escaped variabelen met
htmlspecialchars() - File access: Gecontroleerde paden en validatie
Data Flow
- Request URI → Page detection → Content parsing → Template rendering → HTML output
- Configuratie → Doorgegeven aan alle componenten
- Taal → Gedetecteerd → Translations geladen → Template data
- Menu → Gebouwd uit file structure → Doorgegeven aan template