PHP Classes

File: src/preload.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   CMS Airship   src/preload.php   Download  
File: src/preload.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: CMS Airship
Content management system with security features
Author: By
Last change: Establish PHP 7.2 as the minimum supported version for Airship 2.
Date: 6 years ago
Size: 2,801 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);

use
Airship\Engine\State;
use
ParagonIE\Halite\Halite;

/**
 * This is loaded before everything else in the bootstrapping process.
 */

if (PHP_VERSION_ID < 70200) {
    die(
"Airship requires PHP 7.2.0 or newer. You are running PHP " . PHP_VERSION);
}
if (!
extension_loaded('sodium')) {
    die(
"Airship requires Libsodium.");
}
// This is set to FALSE. It allows us to give IDEs hints that should never be executed.
define('IDE_HACKS', false);

/**
 * 1. Define come constants
 */
if (!\defined('ROOT')) {
   
define('ROOT', __DIR__);
}
define('AIRSHIP_UPLOADS', ROOT . '/files/uploaded/');
if (!\
defined('ISCLI')) {
   
define('ISCLI', PHP_SAPI === 'cli');
}
if (!\
defined('CURLPROXY_SOCKS5_HOSTNAME')) {
   
define('CURLPROXY_SOCKS5_HOSTNAME', 7);
}

if (!\
is_dir(ROOT . '/tmp')) {
   
// Load the sanity check script that makes sure the necessary
    // tmp/* directories exist and are writable.
   
require_once ROOT . '/tmp_dirs.php';
}
if (
ISCLI) {
    if (isset(
$argc)) {
       
$_SERVER['REQUEST_URI'] = $argc > 1
           
? $argv[1]
            :
'/';
    } elseif(empty(
$_SERVER['REQUEST_URI'])) {
       
$_SERVER['REQUEST_URI'] = '';
    }
} elseif (\
file_exists(ROOT . '/tmp/site_down.txt')) {
   
// There might be an automatic update in progress!
    // Let's give it up to 15 seconds, but only as much time as is needed.
   
$iter = 0;
    do {
        if (!\
file_exists(ROOT . '/tmp/site_down.txt')) {
            break;
        }
        \
usleep(1000);
        ++
$iter;
    } while (
$iter < 15000);

    \
clearstatcache();
   
// If we're still in the middle of that process, let's not load anything else:
   
if (\file_exists(ROOT . '/tmp/site_down.txt')) {
        echo
'This Airship is currently being upgraded. Please try again later.', "\n";
        exit(
255);
    }
}
if (!isset(
$_SERVER['REQUEST_URI'])) {
   
$_SERVER['REQUEST_URI'] = '';
}

/**
 * 2. Load the Airship functions
 */
require_once ROOT . '/Airship.php';

/**
 * 3. Let's autoload the composer packages
 */
require_once \dirname(ROOT) . '/vendor/autoload.php';

// Let's also make sure we're using a good version of libsodium
if (!Halite::isLibsodiumSetupCorrectly()) {
    die(
"Airship requires libsodium 1.0.9 or newer (with a stable version of the PHP bindings).");
}

/**
 * 4. Autoload the Engine files
 */
\Airship\autoload('Airship\\Alerts', '~/Alerts');
\
Airship\autoload('Airship\\Engine', '~/Engine');

/**
 * 5. Load up the registry singleton for latest types
 */
$state = State::instance();

// 5a. Initialize the Gears.
require_once ROOT.'/gear_init.php';

/**
 * 6. Load the global functions
 */
require_once ROOT.'/global_functions.php';
require_once
ROOT.'/view_functions.php';

/**
 * 7. Load all of the cryptography keys
 */
require_once ROOT.'/keys.php';