mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-10-31 18:24:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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."',
 | |
|         apiServiceName: '".$config::API_SERVICE_NAME."',
 | |
|         apiServiceToken: '".$config::API_SERVICE_TOKEN."',
 | |
| 
 | |
|         //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."'>";
 | |
| }
 |