<?php 
/** 
 * This file is a part of the CIDRAM package. 
 * Homepage: https://cidram.github.io/ 
 * 
 * CIDRAM COPYRIGHT 2016 and beyond by Caleb Mazalevskis (Maikuolan). 
 * 
 * License: GNU/GPLv2 
 * @see LICENSE.txt 
 * 
 * This file: The loader (last modified: 2019.04.30). 
 */ 
 
/** 
 * CIDRAM should only be loaded once per PHP instance. To ensure this, we check 
 * for the existence of a "CIDRAM" constant. If it doesn't exist, we define it 
 * and continue loading. If it already exists, we do nothing. 
 */ 
if (!defined('CIDRAM')) { 
    define('CIDRAM', true); 
 
    /** Version check. */ 
    if (!version_compare(PHP_VERSION, '7.2.0', '>=')) { 
        header('Content-Type: text/plain'); 
        die('[CIDRAM] Not compatible with PHP versions below 7.2.0; Please update PHP in order to use CIDRAM.'); 
    } 
 
    /** Create an array for our working data. */ 
    $CIDRAM = []; 
 
    /** Determine the location of the "vault" directory. */ 
    $CIDRAM['Vault'] = __DIR__ . '/vault/'; 
 
    /** Kill the script if we can't find the vault directory. */ 
    if (!is_dir($CIDRAM['Vault'])) { 
        header('Content-Type: text/plain'); 
        die( 
            '[CIDRAM] Vault directory not correctly set: Can\'t continue. Refer to do' . 
            'cumentation if this is a first-time run, and if problems persist, seek a' . 
            'ssistance.' 
        ); 
    } 
 
    /** Checks whether we're calling CIDRAM directly or through a hook. */ 
    $CIDRAM['Direct'] = !isset($_SERVER['SCRIPT_FILENAME']) || str_replace("\\", '/', strtolower( 
        realpath($_SERVER['SCRIPT_FILENAME']) 
    )) === str_replace("\\", '/', strtolower(__FILE__)); 
 
    /** Checks whether we're calling CIDRAM through an alternative pathway (e.g., Cronable). */ 
    $CIDRAM['Alternate'] = class_exists('\Maikuolan\Cronable\Cronable'); 
 
    /** Kill the script if the functions file doesn't exist. */ 
    if (!file_exists($CIDRAM['Vault'] . 'functions.php')) { 
        header('Content-Type: text/plain'); 
        die('[CIDRAM] Functions file missing! Please reinstall CIDRAM.'); 
    } 
    /** Load the functions file. */ 
    require $CIDRAM['Vault'] . 'functions.php'; 
 
    /** Kill the script if the configuration handler doesn't exist. */ 
    if (!file_exists($CIDRAM['Vault'] . 'config.php')) { 
        header('Content-Type: text/plain'); 
        die('[CIDRAM] Configuration handler missing! Please reinstall CIDRAM.'); 
    } 
    /** Load the configuration handler. */ 
    require $CIDRAM['Vault'] . 'config.php'; 
 
    /** 
     * Check whether the language handler exists; Kill the script if it 
     * doesn't. 
     */ 
    if (!file_exists($CIDRAM['Vault'] . 'lang.php')) { 
        header('Content-Type: text/plain'); 
        die('[CIDRAM] Language handler missing! Please reinstall CIDRAM.'); 
    } 
    /** Load the language handler. */ 
    require $CIDRAM['Vault'] . 'lang.php'; 
 
    /** 
     * Check whether the output generator exists; Kill the script if it 
     * doesn't; Load it if it does. 
     */ 
    if (!file_exists($CIDRAM['Vault'] . 'outgen.php')) { 
        header('Content-Type: text/plain'); 
        die('[CIDRAM] Output generator missing! Please reinstall CIDRAM.'); 
    } 
    if (!$CIDRAM['Alternate']) { 
        require $CIDRAM['Vault'] . 'outgen.php'; 
    } 
 
    /** 
     * Check whether the front-end handler and the front-end template file 
     * exist; If they do, load the front-end handler. Skip this check if 
     * front-end access is disabled. 
     */ 
    if ( 
        !$CIDRAM['Config']['general']['disable_frontend'] && 
        file_exists($CIDRAM['Vault'] . 'frontend.php') && 
        file_exists($CIDRAM['Vault'] . 'fe_assets/frontend.html') && 
        ($CIDRAM['Direct'] || $CIDRAM['Alternate']) 
    ) { 
        require $CIDRAM['Vault'] . 'frontend.php'; 
    } 
 
    /** Unset our working data so that we can exit cleanly. */ 
    unset($CIDRAM); 
} 
 
 |