<?
require_once("CMML_PublicAPI.php");

/*

The following Apache code needs to be added to httpd.conf 

    # Setup CMS Dispatch
    RewriteEngine On
    
    RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} -d
    RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME}/index.html -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME}/index.php -f 
    RewriteRule ^(.+)$ - [L]
    
    RewriteCond %{SCRIPT_FILENAME} \.html$ [OR]
    RewriteCond %{SCRIPT_FILENAME} /$ 
    RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !^/cms/ 
    RewriteRule ^(.+)$ /cms/dispatch.html [QSA]
    DirectoryIndex index.html
 
*/

# Load a CMS-managed template, if it exists
$cms = new CMML_ContentPages($ServerConfig->get("PAGE_TABLE",null));

                       
# Load UrlRouter and run the rewrites                                
$match  = $UrlRouter->match();

$url 	= explode('?', $_SERVER['REQUEST_URI']);
$file	= $url[0];
$file   = (substr($file, strlen($file)-5) != '.html') ? ($file.'/index.html') : $file;
$file 	= str_replace('//', '/', $file);
$file 	= $MultiSiteManager->getPath($ServerConfig->get('PROJECT_ROOT') . '/' . $ServerConfig->get('DOCUMENT_ROOT_DIR'), $file);


if($match && $match['target']['include'] && !is_file($file)){
	$_GET = array_merge($_GET, $match['params']);
	dispatch_loadRoutedFile($match['target']['include'], $match['target']['multisite-inherit-not-found']);
}elseif($MultiSiteManager->isActive()){
	if(is_file($file)){
		require_once($file);
		die();
	}
}


if ($cms->dispatch()) { 
    exit;
} else {    
    $parts = parse_url($_SERVER['REQUEST_URI']);
    $path = $parts['path'];
    $full = $cms->documentRoot . $path;
    if (is_dir($full)) {
    	$fof = $MultiSiteManager->getPath($ServerConfig->get('PROJECT_ROOT') . '/' . $ServerConfig->get('DOCUMENT_ROOT_DIR'), '/403.html');
        if (file_exists($fot)) {
            include($fot);
        } else {
            header("Status: 403 Forbidden"); 
            echo "<h1>Forbidden</h1>";
        }
    } else {
    	$fof = $MultiSiteManager->getPath($ServerConfig->get('PROJECT_ROOT') . '/' . $ServerConfig->get('DOCUMENT_ROOT_DIR'), '/404.html');
        if (file_exists($fof)) {
            include($fof);
        } else {
            header("Status: 404 Not Found");
            echo "<h1>Not Found</h1>";
        }
    }
}

function dispatch_loadRoutedFile($file, $multisite_inherit_not_found){
	global $ServerConfig, $MultiSiteManager;
	$script = $MultiSiteManager->getPath($ServerConfig->get('PROJECT_ROOT') . '/content', $file);
    if(!is_file($script) && $multisite_inherit_not_found && $MultiSiteManager->canInheritFilesFromDefaultSite()){
		$script = $MultiSiteManager->getPath($ServerConfig->get('PROJECT_ROOT') . '/content', $file, $MultiSiteManager->getDefaultSite());
    }
    
	if(is_file($script)){
		require($script);
		exit();
	}
}
   


?>