<?php function include_ob($file){ ob_start(); include $file; return ob_get_clean(); } function sanitize_template_strings($indata){ $sanit_pattern = '/<template.*>/is'; return preg_replace($sanit_pattern, '', $indata); } function replaceTemplateTags($content) { // Add any additional template replacements here $hash = md5(strtolower(trim($_SESSION['user_email']))); $gravatarUrl = "https://www.gravatar.com/avatar/$hash?s=100"; $content = str_replace('<template name="gravatar image">', "<img src='$gravatarUrl' alt='Gravatar Profile Picture'>", $content); // Add more replacements if needed return $content; } session_start(); require_once 'config.php'; $paths_to_check = array(); $page = basename($_SERVER['QUERY_STRING']); if (isset($_SESSION['user_id'])) { if($_SESSION['user_isAdmin'] == 1) { $nav = include_ob("$template_dir/admin_nav.html"); } else { $nav = include_ob("$template_dir/user_nav.html"); } } else { $nav = include_ob("$template_dir/navigation.html"); } $nav = replaceTemplateTags($nav); // Apply templating to the navigation if($page_dir == "global") { if(!file_exists("$page_dir/index.html")) { $page_file = "$page_dir/login.html"; } } if(empty($page)){ if(isset($_SESSION['user_id'])){ $page = 'index'; } else{ $page = 'login'; } } // Check if the user is logged in if (isset($_SESSION['user_id'])) { if ($_SESSION['user_isAdmin'] == 1) { $paths_to_check[] = "pages/admin"; } $paths_to_check[] = "pages/user"; } $paths_to_check[] = "pages/global"; $page_file = "$template_dir/404.html"; foreach($paths_to_check as $page_dir){ $page_file_tmp = "$page_dir/$page.html"; if(file_exists($page_file_tmp)){ $page_file = $page_file_tmp; break; } } $page_data = include_ob($page_file); $output = file_get_contents("$template_dir/skeleton.html"); $output = str_replace('<template name="navigation">', $nav, $output); if (isset($_SESSION['user_id'])) { $hash = md5(strtolower(trim($_SESSION['user_email']))); $gravatarUrl = "https://www.gravatar.com/avatar/$hash?s=100"; $gravatarTag = "<img src='$gravatarUrl' alt='Gravatar Profile Picture'>"; $page_data = str_replace('<template name="gravatar image">', $gravatarTag, $page_data); $page_data = str_replace('<template name="username">', $_SESSION['user_username'], $page_data); } $page_regex = '/<!--PAGENAME=(.*?)-->/s'; $page_style_regex = '/<!--PAGESTYLE=(.*?)-->/s'; if (preg_match($page_regex, $page_data, $matches)) { $page_name = $matches[1]; $page_data = preg_replace($page_regex, '', $page_data); } else { $page_name = ucfirst($page); } if (preg_match($page_style_regex, $page_data, $style_matches)) { $page_style = $style_matches[1]; $page_data = preg_replace($page_style_regex, '', $page_data); // Replace the PAGESTYLE tag } else { $page_style = "/styles/pages/$page_name.css"; $page_data = str_replace('<template name="page styling">', $page_style, $page_data); } $output = str_replace('<template name="page name">', $page_name, $output); $output = str_replace('<template name="page styling">', $page_style, $output); $output = str_replace('<template name="page content">', $page_data, $output); echo $output; ?>