<?php
header("Content-Type: text/html; charset=utf-8");

//Outputbuffer en sessie starten
ob_start();
session_start();


//Basis inladen
include("lokaal.php");

//Updatefase aankondigen
if(!is_bool($lokaal) && $lokaal == "update")
{
	if(!isset($_GET["up"]) && !isset($_SESSION["up"]))
	{
		//die("Op dit moment wordt de website bijgewerkt. Probeer het binnen een uurtje nog eens.<br />Onze excuses voor het ongemak.");
		header("Location: /offline.php");
		exit;
	}
	elseif(isset($_GET["up"]))
	{
		//Testfunctie inschakelen via sessie
		$_SESSION["up"] = "aan";
	}
}

include("frame/utf8.php");
include("frame/constanten.php");
include("frame/functies/hulpfuncties.php");
include("frame/functies/fouten.php");
include("frame/functies/log.php");
include("frame/functies/hulplayout.php");

include("frame/klassen/database/db.php");
include("frame/klassen/pagina/menu.php");
include("frame/klassen/pagina/pagina.php");
include("frame/klassen/pagina/download.php");
include("frame/klassen/toegang/toegang.php");





//Databaseverbinding starten
$db = new DB();


/**
 * Tijdgestuurde taken (cronjobs) uitvoeren
 *
 * In het geval van een cronjob, wordt index.php rechtstreeks vanuit de command
 * line interface aangeroepen, in de vorm van: 
 * 		php -f index.php -- arg1 arg2
 * 		waarbij vervolgens beschikbaar is: 
 * 		$argv = array( 
 * 			0 => "index.php", 
 * 			1 => "arg1", 
 * 			2 => "arg2");
 *
 * We nemen hierbij arg1 = "tijdtaak" en arg2 als de naam van de uit te voeren 
 * taak. Verder zijn er geen argumenten.
 *
 * Om te testen kan dit ook aangeroepen worden door in een browser te gaan naar
 * 		index.php?tijdtaak=taak
 * 
 * Een tijdgestuurde taak geeft slechts minimale uitvoer i.v.m. debugging. De
 * werkelijke logging vindt plaats in database-tabel tijdtaken.
 */
if(
	(isset($argv) && $argc == 3 && $argv[1] == "tijdtaak") ||
	bestaanIn("tijdtaak", $_GET)
)
{
	include("frame/functies/tijdtaken.php");
	$tijdtaak = (isset($argv)) ? $argv[2] : g("tijdtaak");
	
	echo "Het is volgens PHP nu: " . date("c") . " oftewel " . date("Y-m-d H:i:s") . "\n";
	echo "Tijd voor tijdtaak '$tijdtaak'!\n";
	tijdtaak($tijdtaak);
	echo "Einde uitvoering tijdtaak. Ik sluit af.\n";
	
	$db->stop();
	ob_end_flush(); //Niet nodig voor command line interface, maar wel voor online benadering (https://www.php.net/manual/en/features.commandline.differences.php)
	exit;
}







//Eventuele POST-gegevens vanuit redirect() opslaan
if(isset($_SESSION["POSTGEGEVENS"]))
{
	$_POST = $_SESSION["POSTGEGEVENS"];
	unset($_SESSION["POSTGEGEVENS"]);
}


//Paginainfo laden
$pagina = new Pagina();

//Toegangscontrole uitvoeren
$toegang = new Toegang();
$toegang->paginaControle();


//Bovenkant pagina inladen
include("main/boven.php");


if(isset($_SESSION["up"])): echo "TESTFUNCTIE STAAT AAN!"; endif;

//Inhoud
$pagina->weergave();

//Onderkant pagina inladen
include("main/onder.php");

//Database afsluiten
$db->stop();

//Outputbuffer sluiten en sturen
ob_end_flush();
