<?php

define('PAGES_PATH', realpath(dirname(dirname(__FILE__))).'/pages/');
define('EXT','.html');

date_default_timezone_set('Europe/Paris');

function isEndedByExt($page){
	return preg_match('/'.preg_quote(EXT).'$/',$page);
}
function clearExt($page){
	return substr($page,0,-strlen(EXT));
}

$request = $_SERVER['REQUEST_URI'];

// Remove first slash
$request = ltrim($request,'/');

// Remove last slash if applicable
if (substr($request,-1)=='/'){
	$request = substr($request,0,-1);
}

// Explode request with / separator
$explodedRequest = explode('/',$request);
$countRequest = count($explodedRequest);

//print_r($explodedRequest);

/**
 * Router
 */
if ($countRequest == 2 && isEndedByExt($explodedRequest[1])){
	// toto/tata.html
	$dir = $explodedRequest[0] . '/';
	$file = clearExt($explodedRequest[1]);
} else if ($countRequest == 1 && isEndedByExt($explodedRequest[0])){
	// tata.html
	$dir = '';
	$file = clearExt($explodedRequest[0]);
}  else if ($countRequest == 1 && $explodedRequest[0] == 'sitemap.xml') {
	// sitemap.xml
	$dir = '';
	$file = '_sitemap';
} else if ($countRequest == 1 && !empty($explodedRequest[0])){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: https://".$_SERVER['HTTP_HOST']."/".preg_replace('/'.preg_quote(EXT).'$/', '', $explodedRequest[0]).EXT);
    exit();
        
	// toto/
	$dir = '';
	$file = $explodedRequest[0];
} else if ($countRequest == 1 && empty($explodedRequest[0])){
	// index
	$dir = '';
	$file = 'index';
} else {
	$dir = '';
	$file = '_error';
}

if ($file == '_sitemap') {
	header ("Content-type: text/xml; charset=UTF-8");
	require PAGES_PATH . $file . '.php';
	exit;
}


/**
 * Preparing files path
 */
$files = array();
$files['functions'] = PAGES_PATH.'_functions.php';
$files['header'] = PAGES_PATH.'_header.php';
$files['footer'] = PAGES_PATH.'_footer.php';
$files['ads'] = PAGES_PATH.'_ads.php';
$files['tracking'] = PAGES_PATH.'_tracking.php';
$files['page'] = PAGES_PATH.$dir.$file.'.php';
$files['defaultMeta'] = PAGES_PATH.'_meta.php';

if (file_exists(PAGES_PATH.'_menu.php')){
	$files['menu'] = PAGES_PATH.'_menu.php';
}

/**
 * Check page file existence
 */
if (!file_exists($files['page'])){
	header("HTTP/1.0 404 Not Found");
	$dir = '';
	$file = '_error';
	$files['page'] = PAGES_PATH.$dir.$file.'.php';
}


$types = array('meta','submenu');

foreach($types as $type){
	
	// file.meta.php
	$third = PAGES_PATH.$dir.$file.'.'.$type.'.php';
	
	// toto/_submenu.php (for toto/tata.html)
	$second = PAGES_PATH.$dir.'_'.$type.'.php';
	if (empty($dir)){
		// toto/_submenu.php (for toto.html)
		$second = PAGES_PATH.$file.'/_'.$type.'.php';
	}
	
	// /_submenu.php
	$first = PAGES_PATH.'_'.$type.'.php';
	
	if ($type == 'meta' && file_exists($third)){
		$files[$type] = $third;
	} else if (file_exists($second)){
		$files[$type] = $second;
	} else if (file_exists($first)){
		$files[$type] = $first;
	}
}

//print_r($files);exit;

require $files['functions'];

require $files['defaultMeta'];

require $files['meta'];

require $files['ads'];

require $files['header'];

require $files['page'];

require $files['footer'];
