cms = $cms; } /** * Get current page information */ public function getCurrentPage(): array { return $this->cms->getPage(); } /** * Get current page title */ public function getCurrentPageTitle(): string { $page = $this->cms->getPage(); return $page['title'] ?? ''; } /** * Get current page content */ public function getCurrentPageContent(): string { $page = $this->cms->getPage(); return $page['content'] ?? ''; } /** * Get current page URL */ public function getCurrentPageUrl(): string { $page = $_GET['page'] ?? $this->cms->config['default_page']; $lang = $_GET['lang'] ?? $this->cms->config['language']['default'] ?? 'nl'; return "?page={$page}&lang={$lang}"; } /** * Get menu structure */ public function getMenu(): array { return $this->cms->getMenu(); } /** * Get configuration value */ public function getConfig(string $key, $default = null) { $keys = explode('.', $key); $value = $this->cms->config; foreach ($keys as $k) { if (!isset($value[$k])) { return $default; } $value = $value[$k]; } return $value; } /** * Get translation */ public function translate(string $key): string { return $this->cms->t($key); } /** * Get current language */ public function getCurrentLanguage(): string { return $this->cms->currentLanguage; } /** * Check if user is on homepage */ public function isHomepage(): bool { $defaultPage = $this->cms->config['default_page'] ?? 'index'; $currentPage = $_GET['page'] ?? $defaultPage; return $currentPage === $defaultPage; } /** * Get file info for current page */ public function getCurrentPageFileInfo(): ?array { $page = $this->cms->getPage(); return $page['file_info'] ?? null; } /** * Get breadcrumb data */ public function getBreadcrumb(): string { return $this->cms->generateBreadcrumb(); } /** * Check if content directory has content */ public function hasContent(): bool { return !$this->cms->isContentDirEmpty(); } /** * Get search results if searching */ public function getSearchResults(): array { if (isset($_GET['search'])) { return $this->cms->searchResults; } return []; } /** * Check if currently searching */ public function isSearching(): bool { return isset($_GET['search']); } /** * Get available languages */ public function getAvailableLanguages(): array { return $this->cms->getAvailableLanguages(); } /** * Create URL for page */ public function createUrl(string $page, ?string $lang = null): string { $lang = $lang ?? $this->getCurrentLanguage(); return "?page={$page}&lang={$lang}"; } /** * Execute PHP file and capture output */ public function executePhpFile(string $filePath): string { if (!file_exists($filePath)) { return ''; } ob_start(); include $filePath; return ob_get_clean(); } /** * Get content from PHP/HTML/Markdown file */ public function getFileContent(string $filePath): string { if (!file_exists($filePath)) { return ''; } $extension = pathinfo($filePath, PATHINFO_EXTENSION); switch ($extension) { case 'php': return $this->executePhpFile($filePath); case 'md': $content = file_get_contents($filePath); $result = $this->cms->parseMarkdown($content, $filePath); return $result['content'] ?? ''; case 'html': return file_get_contents($filePath); default: return file_get_contents($filePath); } } /** * Check if file exists in content directory */ public function contentFileExists(string $filename): bool { $contentDir = $this->cms->config['content_dir']; return file_exists($contentDir . '/' . $filename); } /** * Get all pages with their metadata */ public function getAllPages(): array { return $this->cms->getAllPageTitles(); } }