HEX
Server: LiteSpeed
System: Linux s917.lon1.mysecurecloudhost.com 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: assibfaf (3034)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/assibfaf/dashboard.tutorsclub.us/bootstrap.php
<?php
/**
 * @package    Proxim
 * @author     Davison Pro <davis@davisonpro.dev | https://davisonpro.dev>
 * @copyright  2019 Proxim
 * @version    1.5.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_INCLUDES',           PROX_DIR_ROOT . 'prox-includes' . PROX_DS);
define('PROX_DIR_CLASSES',            PROX_DIR_INCLUDES . 'classes' . PROX_DS);
define('PROX_DIR_CONTROLLERS',        PROX_DIR_INCLUDES . 'controllers' . PROX_DS);
define('PROX_DIR_IMAGES',             PROX_DIR_ROOT . 'images' . PROX_DS);
define('PROX_DIR_CONTENT',            PROX_DIR_ROOT . 'content' . PROX_DS);
define('PROX_DIR_MODULE',             PROX_DIR_CONTENT . 'modules' . PROX_DS);
define('PROX_DIR_CACHE',              PROX_DIR_CONTENT . 'cache' . PROX_DS);
define('PROX_DIR_TEMPLATES',          PROX_DIR_CONTENT . 'themes' . PROX_DS);
define('PROX_DIR_MAIL',               PROX_DIR_TEMPLATES . 'mail' . PROX_DS);
define('PROX_DIR_PDF',                PROX_DIR_TEMPLATES . 'pdf' . PROX_DS);

define('PROX_API_URL', 'proxim.craftyworks.co' );
define('PROX_ADDONS_DOMAIN', 'addons.craftyworks.co' );
define('PROX_UPDATES_URL', 'https://' . PROX_API_URL  . '/releases/admin' );
define('PROX_API_MODULES_LIST', PROX_ADDONS_DOMAIN . '/xml/modules_list.xml' );

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);
}

if ( file_exists(PROX_DIR . PROX_DS . 'vendor' . PROX_DS . 'autoload.php') ) {
    require_once PROX_DIR . PROX_DS . 'vendor' . PROX_DS . 'autoload.php';
}

// check the config file
if(!file_exists(PROX_DIR_ROOT . 'config.php')) {
    /* the config file doesn't exist -> start the installer */
    header('Location: /install');
    exit;
}

require_once PROX_DIR_ROOT . 'autoload.php';

require_once PROX_DIR_INCLUDES . 'globals.php';
require_once PROX_DIR_INCLUDES . 'functions.php';
require_once PROX_DIR_ROOT . 'config.php';

@session_start();

if (PROX_DEBUG) {
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    define('PROX_DEBUG_SQL', true);
} else {
    define('PROX_DEBUG_SQL', false);
}

use Proxim\Application;
use Proxim\Cookie;
use Proxim\Tools;
use Proxim\Validate;
use Proxim\Configuration;
use Proxim\Database\DbQuery;
use Proxim\Database\DbCore;
use Proxim\Database\DbPDOCore;
use Proxim\Database\DbMySQLiCore;
use Proxim\Cache\CacheMemcachedCore;
use Proxim\Cache\CacheApcCore;
use Proxim\Module\Module;
use Proxim\Preference\UploadType;
use Proxim\Presenter\Object\ObjectPresenter;
use Proxim\Site\Site;
use Proxim\User\Employee;
use Proxim\Util\DateUtils;

abstract class Db extends DbCore {};
class DbPDO extends DbPDOCore {};
class DbMySQLi extends DbMySQLiCore {};
class CacheMemcached extends CacheMemcachedCore {};
class CacheApc extends CacheApcCore {};

/* 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');
}

$app = new Application([
    'mode' => PROX_ENVIRONMENT,
    'debug' => PROX_DEBUG
]);

$cloud_storage = false;
/* set system uploads */
if(Configuration::get('S3_ENABLED')) {
    $cloud_storage = true;
    $s3_region = Configuration::get('S3_REGION');
    $s3_bucket = Configuration::get('S3_BUCKET');
    $endpoint = "https://s3.".$s3_region.".amazonaws.com/".$s3_bucket;
    $uploads_path = $endpoint . "/uploads";
} elseif (Configuration::get('DIGITALOCEAN_ENABLED')) {
    $cloud_storage = true;
    $digitalocean_space_name = Configuration::get('DIGITALOCEAN_SPACE_NAME');
    $digitalocean_space_region = Configuration::get('DIGITALOCEAN_SPACE_REGION');
    $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);

# add extensions
$allowed_extensions = Configuration::get('ALLOWED_EXTENSIONS');
if( $allowed_extensions ) {
    $extensions = explode(',', $allowed_extensions);
    $extensions = array_merge($extensions, $globals['extensions']);
    $globals['extensions'] = $extensions;
}

foreach ( $globals['academicLevels'] as $academicLevelId => $academicLevel ) {
    $academicLevel['id'] = $academicLevelId;
    $academicLevels[] = $academicLevel;
}

$cookie = $app->container->cookie;
$smarty = $app->container->smarty;

$regions = array();
$zones = timezone_identifiers_list();
foreach ($zones as $zone) {
    $zone = explode('/', $zone);
    if(in_array($zone[0], array("Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Australia", "Europe", "Indian"))) {
        if (isset($zone[1]) != '') {
            $regions[$zone[0]][$zone[0]. '/' . $zone[1]] = str_replace('_', ' ', $zone[1]);
        }
    }
}

$can_switch_dashboard = false;
$article_writing_enabled = (bool) Configuration::get('ARTICLE_WRITING_ENABLED', PROX_SITE_ID, false);
global $active_dashboard;

if(Configuration::get('ARTICLE_WRITING_ENABLED') && $app->request->get('dashboard')) {
    if($app->request->get('dashboard') == 'article') {
        $active_dashboard = 'article';
    } else {
        $active_dashboard = 'academic';
    }

    $_SESSION['active_dashboard'] = $active_dashboard;
} elseif( isset($_SESSION['active_dashboard']) ) {
    if($_SESSION['active_dashboard'] == 'article') {
        $active_dashboard = 'article';
    } else {
        $active_dashboard = 'academic';
    }
} else { 
    $active_dashboard = 'academic';
}

if (
    (isset($cookie->user_id) && 
    isset($cookie->session_token) && 
    isset($cookie->session_browser) && 
    isset($cookie->session_os) && 
    isset($cookie->password)) && 
    (int) $cookie->user_id
) {
    $sql = new DbQuery();
    $sql->select('e.employee_id, e.employee_group, e.employee_dashboard');
    $sql->from('employee', 'e');
    $sql->innerJoin('user_session', 'us', 'us.user_id = e.employee_id');
    $sql->where('e.`employee_id` = ' . (int) $cookie->user_id );
    $sql->where('us.`session_token` = \'' . pSQL($cookie->session_token) . '\'');
    $sql->where('us.`user_browser` = \'' . pSQL($cookie->session_browser) . '\'');
    $sql->where('us.`user_os` = \'' . pSQL($cookie->session_os) . '\'');
    $checkUser = Db::getInstance(PROX_USE_SQL_SLAVE)->getRow($sql);

    if($checkUser) {

        if(
            Configuration::get('ARTICLE_WRITING_ENABLED') &&
            ($checkUser['employee_group'] != Employee::GROUP_ADMIN) && 
            ($checkUser['employee_dashboard'] == 'academic' || $checkUser['employee_dashboard'] == 'article') && 
            $active_dashboard != $checkUser['employee_dashboard'] 
        ) {
            $active_dashboard = $checkUser['employee_dashboard'];
        }

        $user = new Employee( (int) $checkUser['employee_id'] );
        if (
            Validate::isLoadedObject($user) && 
            $user->password == $cookie->password 
        ) {
            $user->last_activity = DateUtils::now();
            $user->logged = true;
            $user->update();

            if($user->is_admin || $user->employee_dashboard == 'all' ) {
                $can_switch_dashboard = true;
            }
        } else {
            $cookie->logout();
        }
    } else {
        $cookie->logout();
    }
} else {
    $user = new Employee();
}

$isAuthorize = false;
if (isset($cookie->authorize_id) && (int) $cookie->authorize_id) {
    $admin = new Employee( (int) $cookie->authorize_id );
    if(Validate::isLoadedObject($admin)) {
        $isAuthorize = true;
        $smarty->assign([
            'admin' => (array) $admin
        ]);
    }
}

# upload types
$objectPresenter = new ObjectPresenter();
$uploadTypes = UploadType::getUploadTypes();

$upload_types = array();
foreach($uploadTypes as $uploadType) {
    $uploadType = new UploadType( (int) $uploadType['upload_type_id'] );
    if(Validate::isLoadedObject($uploadType)) {
        if($user->is_writer && $uploadType->writer) {
            $upload_types[] = $objectPresenter->present($uploadType);
        } elseif ($user->is_editor && $uploadType->editor) {
            $upload_types[] = $objectPresenter->present($uploadType);
        } else {
            $upload_types[] = $objectPresenter->present($uploadType);
        }
    }
}

$app->container->set('cookie', $cookie);
$app->container->set('user', $user);

// run cron job
$app->runCronjob();

// site
$site = new Site(PROX_SITE_ID);
$app->container->set('site', $site);

if(!Configuration::get('PROX_VERSION')) {
    Configuration::updateValue('PROX_VERSION', Application::VERSION);
}

$show_client_cost = $show_writer_info = true;

if($user->is_sub_admin) {
    $show_client_cost = (bool) Configuration::get('SUBADMIN_CLIENT_COST', PROX_SITE_ID, true);
    $show_writer_info = (bool) Configuration::get('SUBADMIN_WRITER_INFO', PROX_SITE_ID, true);
}

$smarty->assign([
    'base_uri' => $app->base_uri,
    'user' => (array) $user,
    'smarty' => $smarty,
    'isAuthorize' => $isAuthorize,
    'max_results_limit' => Configuration::get('MAX_RESULTS', null, 10),
    'cookie_consent_enabled' => Configuration::get('COOKIE_CONSENT_ENABLED', PROX_SITE_ID, true),
    'smsnotifications_enabled' => Module::isInstalled('smsnotifications'),
    'chat_enabled' => Module::isInstalled('messenger'),
    'pay_delivered_orders' => Configuration::get('PAY_DELIVERED_ORDERS', PROX_SITE_ID, false),
    'ifs_enabled' => (bool) Configuration::get('INTERNAL_FILE_STORAGE'),
    'editor_account_enabled' => (bool) Configuration::get('EDITOR_ACCOUNT_ENABLED', PROX_SITE_ID, true),
    'confirm_order_assign' => (bool) Configuration::get('CONFIRM_ORDER_ASSIGN', PROX_SITE_ID, true),
    'order_manager_enabled' => (bool) Configuration::get('ORDER_MANAGER_ENABLED', PROX_SITE_ID, false),
    'order_manager_public' => (bool) Configuration::get('ORDER_MANAGER_PUBLIC', PROX_SITE_ID, false),
    'active_dashboard' => $active_dashboard,
    'can_switch_dashboard' => $can_switch_dashboard,
    'article_writing_enabled' => $article_writing_enabled,
    'cloud_storage' => (bool) $cloud_storage,
    'uploads_path' => Configuration::get('UPLOADS_PATH'),
    'upload_types' => array_reverse($upload_types),
    'regions' => $regions,
    'default_region' => preg_replace("/(.*)\/.*/", "$1", Configuration::get('DEFAULT_TIMEZONE', PROX_SITE_ID, 'America') ),
    'default_timezone' => Configuration::get('DEFAULT_TIMEZONE'),
    'academic_levels' => $academicLevels,
    'show_client_cost' => $show_client_cost,
    'show_writer_info' => $show_writer_info,
    'view' => '',
    'sub_view' => '',
    'page_title' => ''
]);