<?php
ob_start();
if (!defined('entry') || !entry) {
    die('Not a valid page');
}

error_reporting(E_ALL);
ini_set('display_errors', '1');

// PHP settings specific to Sorbet
ini_set('pcre.backtrack_limit', '10000');

define('Absolute_Path', dirname(__FILE__).DIRECTORY_SEPARATOR);
$installed = true;
$configFile = Absolute_Path.'config.php';

$dir = (strpos($_SERVER['REQUEST_URI'], '/admin')) ? "../" : "";

if (!file_exists($configFile) and basename($_SERVER['PHP_SELF'])!='install.php') {
    header("Location: {$dir}install.php");
    exit;
} else {
    include_once(Absolute_Path.'classes/install.class.php');
    $install = new Install();
    if (!$install->is_sorbet_installed()) {
        if (basename($_SERVER['PHP_SELF'])!='install.php') {
            header("Location: {$dir}install.php");
            exit;
        }
        $installed = false;
    }
}

if ($installed) {
    require_once($configFile);
}

if (!extension_loaded('json')) {
    require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'JSON.php');
    $GLOBALS['JSON_OBJECT'] = new Services_JSON();

    function json_encode($value)
    {
        return $GLOBALS['JSON_OBJECT']->encode($value);
    }

    function json_decode($value, $none)
    {
        return $GLOBALS['JSON_OBJECT']->decode($value);
    }
}

require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'configuration.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'util.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'sorbet.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'templates.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'themes.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'pagination.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'user.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'comments.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'feeds.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'mysql_connection.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'streams.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'gettext.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'lang.functions.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'plugin.class.php');
require_once(Absolute_Path.'classes'.DIRECTORY_SEPARATOR.'plugins.class.php');

if ($installed) {

    // Globals to be used throughout the application
    $db = new Conexion_Mysql(DB_name, DB_Server, DB_User, DB_Password);
    $conf = new configuration();
    $tumble = new sorbet();
    $user = new user();

    session_start();

    $util_init_plugins = new util();
    $util_init_plugins -> init_plugins();

    $plugin_instance = new plugin();

    $trigger =& $plugin_instance -> instance(); //DO NOT remove the & after the =

    $trigger->call('sorbet_init');

    $feeds = new feeds();
    $feeds->updateFeeds();
    unset($feeds);
}