# CodePress CMS - Executie Flow ## Volledige Laadvolgorde en Functie Aanroepen ### 1. Web Request Start **Bestand:** `public/index.php` (Eerste geladen bestand) **Stappen:** 1. **Line 3:** `require_once __DIR__ . '/../engine/core/index.php'` - Laadt de core loader 2. **Line 5:** `$config = include __DIR__ . '/../engine/core/config.php'` - Laadt configuratie 3. **Line 8-13:** Security check - Blokkeert directe toegang tot `/content/` directory 4. **Line 15:** `$cms = new CodePressCMS($config)` - Creëert CMS instance 5. **Line 16:** `$cms->render()` - Start de rendering --- ### 2. Core Loader **Bestand:** `engine/core/index.php` **Stappen (in volgorde):** 1. **Line 27:** `require_once 'config.php'` - Laadt configuratie systeem 2. **Line 30:** `require_once 'class/SimpleTemplate.php'` - Laadt template engine 3. **Line 33:** `require_once 'class/CodePressCMS.php'` - Laadt main CMS class --- ### 3. Configuratie Laden **Bestand:** `engine/core/config.php` **Stappen:** 1. **Line 9-25:** `$defaultConfig` array wordt gedefinieerd 2. **Line 27-41:** Configuratie wordt samengevoegd met `config.json` indien aanwezig --- ### 4. CodePressCMS Constructor **Bestand:** `engine/core/class/CodePressCMS.php` **Methode:** `__construct($config)` (Line 35-44) **Stappen in exacte volgorde:** 1. **Line 36:** `$this->config = $config` - Slaat configuratie op 2. **Line 37:** `$this->currentLanguage = $this->getCurrentLanguage()` - Roept `getCurrentLanguage()` aan 3. **Line 38:** `$this->translations = $this->loadTranslations($this->currentLanguage)` - Roept `loadTranslations()` aan 4. **Line 39:** `$this->buildMenu()` - Roept `buildMenu()` aan 5. **Line 41-43:** Search handling indien nodig - Roept `performSearch()` aan als `$_GET['search']` bestaat --- ### 5. Taal Detectie **Methode:** `getCurrentLanguage()` (Line 51-53) **Stappen:** 1. **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:** 1. **Line 62:** `$langFile = __DIR__ . '/../../lang/' . $lang . '.php'` - Bouwt pad naar taalbestand 2. **Line 64-68:** Check of bestand exists en laad het 3. **Line 70-73:** Fallback naar default taal indien nodig --- ### 7. Menu Bouwen **Methode:** `buildMenu()` (ongeveer Line 200+) **Stappen:** 1. **Scan content directory** voor bestanden en mappen 2. **Roep `scanDirectory()` aan** recursief 3. **Genereer menu structuur** met hiërarchie --- ### 8. Main Render Methode **Methode:** `render()` (ongeveer Line 300+) **Stappen in volgorde:** 1. **Bepaal page type** (content, search, guide, directory) 2. **Roep `getPage()` aan** voor content 3. **Genereer breadcrumb** met `generateBreadcrumb()` 4. **Bepaal content type** met `getContentType()` 5. **Laad template** (layout, header, content, footer) 6. **Render template** met `SimpleTemplate::render()` 7. **Output HTML** --- ### 9. Content Verwerking **Methode:** `getPage()` (ongeveer Line 150+) **Flow afhankelijk van page type:** **Voor Markdown (.md):** 1. `parseMarkdown($content, $filePath)` 2. CommonMark conversie 3. Auto-linking met `autoLinkPageTitles()` **Voor PHP (.php):** 1. `parsePHP($filePath)` 2. Execute PHP en capture output 3. Buffer handling **Voor HTML (.html):** 1. `parseHTML($content)` 2. Directe verwerking **Voor Directory:** 1. `getDirectoryListing($pagePath, $dirPath)` 2. Scan directory voor bestanden 3. Genereer lijst met metadata --- ### 10. Template Rendering **Klasse:** `SimpleTemplate` **Methode:** `render($template, $data)` **Stappen:** 1. **Load template file** 2. **Process partials** met `{{>partial}}` 3. **Process conditionals** met `{{#var}}...{{/var}}` 4. **Replace variables** met `{{variable}}` (escaped) of `{{{variable}}}` (unescaped) 5. **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 1. **public/index.php Line 8-13:** Blokkeert `/content/` toegang 2. **Template engine:** Escaped variabelen met `htmlspecialchars()` 3. **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