File: /home/assibfaf/public_html/prox-bootstrap.php
<?php
/**
* @package Proxim
* @author Davison Pro <davisonpro.coder@gmail.com | https://davisonpro.dev>
* @copyright 2019 Proxim
* @version 1.0.0
* @since File available since Release 1.0.0
*/
// One minute to execute the script
@set_time_limit(300);
/* Improve PHP configuration to prevent issues */
ini_set('default_charset', 'utf-8');
@date_default_timezone_set(@date_default_timezone_get());
// Short name
define('PROX_DS', DIRECTORY_SEPARATOR);
// Modes
define('PROX_IS_CLI_MODE', 'cli' === PHP_SAPI);
// Common end-of-line
define('PROX_EOL', PROX_IS_CLI_MODE ? "\n" : '<br />');
define('PROX_NAMESPACE', 'Proxim');
define('PROX_DIR', dirname(__FILE__));
define('PROX_DIR_ROOT', rtrim(PROX_DIR, PROX_DS) . PROX_DS);
define('PROX_DIR_CLASSES', PROX_DIR_ROOT . 'prox-classes' . PROX_DS);
define('PROX_DIR_CONTROLLERS', PROX_DIR_ROOT . 'prox-controllers' . PROX_DS);
define('PROX_DIR_CACHE', PROX_DIR_ROOT . 'prox-cache' . PROX_DS);
define('PROX_DIR_MODULE', PROX_DIR_ROOT . 'prox-modules' . PROX_DS);
define('PROX_DIR_TEMPLATES', PROX_DIR_ROOT . 'prox-templates' . PROX_DS);
define('PROX_DIR_IMAGES', PROX_DIR_ROOT . 'prox-images' . PROX_DS);
define('PROX_DIR_MAIL', PROX_DIR_TEMPLATES . 'mail' . PROX_DS);
define('PROX_API_DOMAIN', 'proxim.craftyworks.co');
define('PROX_API_URL', 'https://' .PROX_API_DOMAIN );
define('PROX_UPDATES_URL', PROX_API_URL . '/releases/client');
define('PROX_OS_WINDOWS', 'WIN' === strtoupper(substr(PHP_OS, 0, 3)));
define('PROX_IS_PHP_7', version_compare(PHP_VERSION, '7.0.0', '>='));
if (!defined('PROX_MAGIC_QUOTES_GPC')) {
define('PROX_MAGIC_QUOTES_GPC', false);
}
// check the config file
if(!file_exists(PROX_DIR_ROOT . 'prox-config.php')) {
/* the config file doesn't exist -> start the installer */
header('Location: /install');
}
if ( file_exists(PROX_DIR . PROX_DS . 'vendor' . PROX_DS . 'autoload.php') ) {
require_once PROX_DIR . PROX_DS . 'vendor' . PROX_DS . 'autoload.php';
}
require_once PROX_DIR_ROOT . 'prox-autoload.php';
require_once PROX_DIR_ROOT . 'prox-globals.php';
require_once PROX_DIR_ROOT . 'prox-config.php';
require_once PROX_DIR_ROOT . 'prox-functions.php';
if (PROX_DEBUG) {
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('PROX_DEBUG_SQL', true);
} else {
define('PROX_DEBUG_SQL', false);
}
use Proxim\Tools;
use Proxim\Validate;
use Proxim\Database\DbQuery;
use Proxim\Database\DbCore;
use Proxim\Database\DbPDOCore;
use Proxim\Database\DbMySQLiCore;
abstract class Db extends DbCore {};
class DbPDO extends DbPDOCore {};
class DbMySQLi extends DbMySQLiCore {};
/* set db time to UTC */
Db::getInstance()->query("SET time_zone = '+0:00'");
if (Tools::convertBytes(ini_get('upload_max_filesize')) < Tools::convertBytes('100M')) {
ini_set('upload_max_filesize', '100M');
ini_set('post_max_size', '100M');
}
// Define some $_SERVER variables like HTTP_HOST if PHP is launched with php-cli
if (Tools::isPHPCLI()) {
if (!isset($_SERVER['HTTP_HOST']) || empty($_SERVER['HTTP_HOST'])) {
$_SERVER['HTTP_HOST'] = '';
}
if (!isset($_SERVER['SERVER_NAME']) || empty($_SERVER['SERVER_NAME'])) {
$_SERVER['SERVER_NAME'] = '';
}
if (!isset($_SERVER['REMOTE_ADDR']) || empty($_SERVER['REMOTE_ADDR'])) {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
}
}
/* Redefine REQUEST_URI if empty (on some webservers...) */
if (!isset($_SERVER['REQUEST_URI']) || empty($_SERVER['REQUEST_URI'])) {
if (!isset($_SERVER['SCRIPT_NAME']) && isset($_SERVER['SCRIPT_FILENAME'])) {
$_SERVER['SCRIPT_NAME'] = $_SERVER['SCRIPT_FILENAME'];
}
if (isset($_SERVER['SCRIPT_NAME'])) {
if (basename($_SERVER['SCRIPT_NAME']) == 'index.php' && empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] = dirname($_SERVER['SCRIPT_NAME']).'/';
} else {
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING'];
}
}
}
}
/* Trying to redefine HTTP_HOST if empty (on some webservers...) */
if (!isset($_SERVER['HTTP_HOST']) || empty($_SERVER['HTTP_HOST'])) {
$_SERVER['HTTP_HOST'] = @getenv('HTTP_HOST');
}
use Proxim\Application;
use Proxim\Configuration;
use Proxim\Site\Site;
use Proxim\User\Customer;
use Proxim\Util\ArrayUtils;
use Proxim\Util\DateUtils;
$app = new Application([
'mode' => PROX_ENVIRONMENT,
'debug' => PROX_DEBUG
]);
# add extensions
$allowed_extensions = Configuration::get('ALLOWED_EXTENSIONS', PROX_ADMIN_SITE_ID);
if( $allowed_extensions ) {
$extensions = explode(',', $allowed_extensions);
$extensions = array_merge($extensions, $globals['extensions']);
$globals['extensions'] = $extensions;
}
/* set system uploads */
if(Configuration::get('S3_ENABLED', PROX_ADMIN_SITE_ID)) {
$s3_region = Configuration::get('S3_REGION', PROX_ADMIN_SITE_ID);
$s3_bucket = Configuration::get('S3_BUCKET', PROX_ADMIN_SITE_ID);
$endpoint = "https://s3.".$s3_region.".amazonaws.com/".$s3_bucket;
$uploads_path = $endpoint . "/uploads";
} elseif (Configuration::get('DIGITALOCEAN_ENABLED', PROX_ADMIN_SITE_ID)) {
$digitalocean_space_name = Configuration::get('DIGITALOCEAN_SPACE_NAME', PROX_ADMIN_SITE_ID);
$digitalocean_space_region = Configuration::get('DIGITALOCEAN_SPACE_REGION', PROX_ADMIN_SITE_ID);
$endpoint = "https://".$digitalocean_space_name.".".$digitalocean_space_region.".digitaloceanspaces.com";
$uploads_path = $endpoint."/uploads";
} else {
$uploads_path = $app->base_uri .'/uploads';
}
Configuration::set('UPLOADS_PATH', $uploads_path);
$cookie = $app->container->cookie;
$smarty = $app->container->smarty;
$ip_address = $app->request->getIp();
$cookie->ip_address = $ip_address;
$ip_address = $app->request->getIp();
if (
!isset($cookie->country_code) ||
$cookie->ip_address != $ip_address &&
$ip_address != '127.0.0.1'
) {
$cookie->ip_address = $ip_address;
$ip_info = Tools::ipInfo($ip_address , true );
if ( ArrayUtils::has($ip_info, 'country_code') ) {
$cookie->country_code = ArrayUtils::get($ip_info, 'country_code');
}
}
if ( (int) $cookie->user_id) {
$user = new Customer( (int) $cookie->user_id);
if (Validate::isLoadedObject($user)) {
$user->last_activity = DateUtils::now();
$user->logged = 1;
$user->update();
} else {
$cookie->logout();
}
}
if (!isset($user) || !Validate::isLoadedObject($user)) {
$user = new Customer();
}
if(!Configuration::get('PROX_VERSION')) {
Configuration::updateValue('PROX_VERSION', Application::VERSION);
}
$smarty->assign([
'user' => (array) $user,
'siteName' => Configuration::get('SITE_NAME'),
'siteEmail' => Configuration::get('SITE_EMAIL'),
'system_version' => Configuration::get('PROX_VERSION'),
]);
$app->container->set('cookie', $cookie);
$app->container->set('user', $user);
$site = new Site( PROX_SITE_ID );
$app->container->set('site', $site);
// init affiliates system
$app->initAffiliates();