<?php /** * Page initiator * * @author Pierre HUBERT */ /** * Include main config */ require_once __DIR__."/config/global.config.php"; /** * Load a page * * @param string $config The configuration to use to load a page * @return string Generated source page */ function load_page(string $config) : string { //Load configuration load_config($config); $conf = new $config(); //Load page template $source = file_get_contents(__DIR__."/tpl/page.tpl"); //Replace path to assets when required $source = str_replace("{ASSETS_URL}", $config::ASSETS_URL, $source); //Update javascript config $source = str_replace("{js_config}", get_javascript_config($conf), $source); //Update assets inclusion if(is_array($conf::THIRD_PARTY_CSS)){ $source = str_replace("{THIRD_PARTY_CSS}", src_inc_list_css($conf::ASSETS_URL, $conf::THIRD_PARTY_CSS), $source); $source = str_replace("{APP_CSS}", src_inc_list_css($conf::ASSETS_URL, $conf::APP_CSS), $source); $source = str_replace("{THIRD_PARTY_JS}", src_inc_list_js($conf::ASSETS_URL, $conf::THIRD_PARTY_JS), $source); $source = str_replace("{APP_JS}", src_inc_list_js($conf::ASSETS_URL, $conf::APP_JS), $source); } else { $source = str_replace("{THIRD_PARTY_CSS}", src_inc_css($conf::ASSETS_URL.$conf::THIRD_PARTY_CSS), $source); $source = str_replace("{APP_CSS}", src_inc_css($conf::ASSETS_URL.$conf::APP_CSS), $source); $source = str_replace("{THIRD_PARTY_JS}", src_inc_js($conf::ASSETS_URL.$conf::THIRD_PARTY_JS), $source); $source = str_replace("{APP_JS}", src_inc_js($conf::ASSETS_URL.$conf::APP_JS), $source); } return $source; } /** * Load a configuration * * @param string $name The name of the configuration to load */ function load_config(string $config){ require_once __DIR__."/config/".$config.".config.php"; } /** * Get javascript configuration * * @param object $config The configuration object * @return string The javascript configuration */ function get_javascript_config($config) : string { $js_config = "<script> var ComunicConfig = { //Production mode productionMode: ".($config::PROD_MODE ? "true" : "false").", //AppVersion appVersion: '".Config::VERSION."', //Assets URL assetsURL: '".$config::ASSETS_URL."', //Templates URL templatesURL : '".$config::ASSETS_URL.$config::TEMPLATES_PATH."', //Site URL siteURL: '".$config::SITE_URL."', //API configuration apiURL: '".$config::API_URL."', apiClientName: '".$config::API_CLIENT_NAME."', //About website URL aboutWebsiteURL: '".$config::ABOUT_WEBSITE_URL."', //Default language defaultLanguage: '".$config::DEFAULT_LANGUAGE."', "/*LanguagesPath "languagesPath: '".$config::ASSETS_URL.$config::LANGUAGE_PATH."', */." }; </script>"; return $js_config; } /** * Return the source code to include an array of css assets * * @param string $asset_url URL path to assets * @param array $files The list of files to include * @return string Generated source code */ function src_inc_list_css(string $assets_url, array $files) : string { $source = ""; //Process the list of files foreach($files as $file){ $source .= src_inc_css($assets_url.$file)."\n\t\t"; } return $source; } /** * Return the source code to include an array of javascript assets * * @param string $asset_url URL path to assets * @param array $files The list of files to include * @return string Generated source code */ function src_inc_list_js(string $assets_url, array $files) : string { $source = ""; //Process the list of files foreach($files as $file){ if(is_array($file)) $file = $file["path"]; $source .= src_inc_js($assets_url.$file)."\n\t\t"; } return $source; } /** * Returns the source code to include a javascript file * * @param string $file The path to the file * @return string Source code for including a javascript file */ function src_inc_js(string $file) : string{ return "<script type='text/javascript' src='".$file."'></script>"; } /** * Returns the source code to include a CSS file * * @param string $file Path to the CSS file * @return string HTML Source code to include the CSS file */ function src_inc_css(string $file) : string { return "<link rel='stylesheet' href='".$file."'>"; }