<?php
define('BASE_PATH', realpath(dirname(__FILE__) . '/..') . '/');

set_include_path(get_include_path()
    . PATH_SEPARATOR . BASE_PATH . 'includes'
    . PATH_SEPARATOR . BASE_PATH . 'libraries'
);

require('config.inc.php');

// Versioning
define('VERSION', '0.0');
define('CRAWLER_VERSION', '0.2');
define('CRAWLER_LAST_UPDATED', filemtime(BASE_PATH . 'scripts/crawler.php'));

// For a better death!
function handle_exception($e) {
    error_log('An exception occurred: ' . $e);

    echo "An error occured: " . $e->getMessage() . "<br>\n<br>\n"
        ."Please notify the site administrator (webmaster at tigris dot fanir dot de) and include the information in the box below:<br>\n"
        ."<textarea style='width: 100%; max-width: 80em; height: 20em;' readonly>"
        ."Timestamp: " . strftime('%c') . "\n"
        ."\n"
        ."Code: " . $e->getCode() . "\n"
        ."Message: " . $e->getMessage() . "\n";
    if ($e->getPrevious()) {
        echo "\n"
            ."Previous exception:\n"
            ."Code: " . $e->getPrevious()->getCode() . "\n"
            ."Message: " . $e->getPrevious()->getMessage() . "\n";
    }
    echo "</textarea>";

    exit($e->getCode());
}
set_exception_handler('handle_exception');


// Connect to DB
try {
    $db = new PDO(DB_DSN, DB_USER, DB_PASS);
    
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    throw new Exception('Cannot connect to database', 16, $e);
}
// Load database abstraction
require('database.inc.php');

// Load helper functions
require('helpers.inc.php');