<?php

// Blink Interactive Frontend
// 
// Author: Michel Boezerooij
// Copyright 2012 Blink Interactive

error_reporting(E_ALL ^ E_NOTICE);

//speed test
$t0 = microtime(true);
//die('a');
//includes
require_once('config/configuration.php');
//die('a2');
require_once('config/includes.inc.php');
//die('a3');
//helpers
require_once('helpers/Smarty-3.1.7/libs/Smarty.class.php');

//database openenen
//$db = mysql_connect(DB_HOST, DB_USER, DB_PASS);
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
try {
	if(!$db) {
		$exeptionstring = 'Fout bij het maken van een connectie met de database<br />';
		$exeptionstring .= mysqli_error();
		throw new exception ($exeptionstring);
	} else {
		mysqli_select_db($db, DB_NAME);
	}
	//return $db;
} catch (exception $e) {
	echo 'Exception: ' . $e->getmessage();
	die();
}

//sessie starten
session_start();

//single module execution (bv voor xml output)
//print_r($_REQUEST);die();
$moduleName = (isset($_REQUEST['module'])) ? $_REQUEST['module'] : null;
if(!is_null($moduleName)) {
	$m = new Module();
	$m->loadByName($moduleName);
	$m->execute();
	die();
}

//controller bepalen adhv alias
$aliasName = (isset($_REQUEST['alias'])) ? $_REQUEST['alias'] : 'default';
//if(substr($aliasName, -1) == '/') $aliasName = substr($aliasName, 0, -1);
$alias = new Alias();
$conditions = array('name'=>$aliasName);
$alias->loadOneConditional($conditions);

if($alias->id == 0) {
	Logger::log('404 for ' . $aliasName);
	header("Location:/404");
	die('');
}
if($alias->name == '404') {
	header("HTTP/1.0 404 Not Found");
}
//print_r($alias);die();
$cf = new Controller($alias->controller_id);
$controller = $cf->factory();
//print_r($controller);die();
$controller->execute();

$s = Smartywrap::singleton();
if(file_exists(JAVASCRIPT_PATH . $controller->name . '.js')) {
	$s->assign('js', JAVASCRIPT_URL . $controller->name . '.js');
}
if(file_exists(JAVASCRIPT_PATH . $alias->name . '.js')) {
	$s->assign('js', JAVASCRIPT_URL . $alias->name . '.js');
}

//template bepalen adhv pagina
$template = $controller->getTemplate();

//modules laden adhv template // hoort in Controller thuis
/*$modules = $template->modules();
foreach($modules AS $module) {
	$module->execute();
}*/


//$u = Person::loggedInPerson();
//$s->assign('loggedInPerson', $u);
$s->assign('content', TEMPLATE_DIR . $template->templatefile);
$s->assign('BASE_URL', BASE_URL);
$s->assign('CDN_ROOT', CDN_ROOT);
$s->assign('alias', $alias);
$s->assign('download_url', DOWNLOAD_URL);
$s->assign('controller', $controller);
$s->assign('og_default_title', OG_DEFAULT_TITLE);
$s->assign('og_default_description', OG_DEFAULT_DESCRIPTION);
$s->display(TEMPLATE_DIR . $template->maintemplate);

//tijd loggen
$tend = microtime(true);
Logger::log('Time to execute: ' . ($tend-$t0) . 's.');
?>