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/install.php
<?php
/**
 * @package    Proxim
 * @author     Davison Pro <davis@davisonpro.dev | https://davisonpro.dev>
 * @copyright  2019 Proxim
 * @version    1.0.0
 * @since      File available since Release 1.0.0
 */

// Short name
define('PROX_DS', DIRECTORY_SEPARATOR);
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_CONTENT',            PROX_DIR_ROOT . 'content' . 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_CONTROLLERS',        PROX_DIR_INCLUDES . 'controllers' . PROX_DS);

/**#@+
 * Authentication Unique Keys and Salts.
 */
define( 'PROX_COOKIE_KEY', 'hcmy3vvdmgj1droykuyodzzz0f2kmisj9fjls8q4wonyx4hfiepgvefbsjlflw1c' );
define( 'PROX_COOKIE_IV', 'h2HHwDjqA2dJuU' );

// enviroment settings
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));

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

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

// check the config file
if(file_exists(PROX_DIR_ROOT . 'config.php')) {
    /* the config file exist -> start the system */
    header('Location: /');
}

use Proxim\Application;
use Proxim\Configuration;
use Proxim\Tools;
use Proxim\Validate;
use Proxim\User\Employee;
use Proxim\Util\DateUtils;
use Proxim\Util\ArrayUtils;
use Proxim\Crypto\Hashing;
use Proxim\Database\DbCore;
use Proxim\Database\DbMySQLiCore;
use Proxim\Database\DbPDOCore;
use Proxim\Preference\Discipline;
use Proxim\Preference\PaperFormat;
use Proxim\Preference\PaperType;
use Proxim\Preference\UploadType;

abstract class Db extends DbCore {};
class DbPDO extends DbPDOCore {};
class DbMySQLi extends DbMySQLiCore {};

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

$payload = Tools::getAllValues();

if(ArrayUtils::has($payload, 'submit')) {
    $db_server = ArrayUtils::get($payload, 'db_host');
    $db_user = ArrayUtils::get($payload, 'db_username');
    $db_password = ArrayUtils::get($payload, 'db_password');
    $database = ArrayUtils::get($payload, 'db_name');

    $db_class = Db::getClass();
    $db = new $db_class(
        $db_server,
        $db_user,
        $db_password,
        $database
    );
    
    if(!$db) {
        die("DB_ERROR");
    }
    
    if(!defined('DB_NAME')) define( 'DB_NAME', $database );
    if(!defined('DB_USER')) define( 'DB_USER', $db_user );
    if(!defined('DB_PASSWORD')) define( 'DB_PASSWORD', $db_password );
    if(!defined('DB_SERVER')) define( 'DB_SERVER', $db_server );
    if(!defined('DB_PREFIX')) define( 'DB_PREFIX', 'prox_' );

    // [2] check admin data
    $first_name = ArrayUtils::get($payload, 'admin_first_name');
    if ( $first_name && !Validate::isName($first_name) ) {
        die("Enter a valid first name");
    }
    if ( Tools::strlen($first_name) > 20 ) {
        die("Your first name must be less than 20 characters long. Please try another");
    }
    if ( Tools::strlen($first_name) < 3 ) {
        die("Your first name must be at least 3 characters long. Please try another");
    }

    $last_name = ArrayUtils::get($payload, 'admin_last_name');
    if ( $last_name && !Validate::isName($last_name) ) {
        die("Enter a valid last name");
    }

    if ( Tools::strlen($last_name) > 20 ) {
        die("Your last name must be less than 20 characters long. Please try another");
    }
    if ( Tools::strlen($last_name) < 3 ) {
        die("Your last name must be at least 3 characters long. Please try another");
    }

    $email = ArrayUtils::get($payload, 'admin_email');
    if ( !$email || !Validate::isEmail($email) ) {
        die("Enter a valid email address");
    }

    $password = ArrayUtils::get($payload, 'admin_password');
    if ( !$password || !Validate::isPasswd($password) ) {
        die("Password must be long than 6 characters");
    }

    $date = DateUtils::now();

    // [3] create the database
    $structure = "
        DROP TABLE IF EXISTS `prox_customer`;

        CREATE TABLE IF NOT EXISTS `prox_customer` (
            `customer_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `google_analytics_id` VARCHAR(255) NOT NULL UNIQUE,
            `email` VARCHAR(255) NOT NULL,
            `name` VARCHAR(255) DEFAULT NULL,
            `phone` VARCHAR(50) DEFAULT NULL,
            `country_id` BIGINT(20) unsigned NOT NULL,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `password` VARCHAR(255) NOT NULL,
            `new_password` VARCHAR(255) DEFAULT NULL,
            `reset_password_token` VARCHAR(255) DEFAULT NULL,
            `reset_password_validity` DATETIME DEFAULT NULL,
            `last_passwd_gen` DATETIME DEFAULT NULL,
            `secure_key` VARCHAR(255) NOT NULL DEFAULT '-1',
            `policy_accepted` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `policy_accepted_at` DATETIME DEFAULT NULL,
            `total_spent` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `referrer_id` BIGINT(20) unsigned DEFAULT NULL,
            `affiliate_used` TINYINT(1) unsigned NOT NULL default '0',
            `affiliate_balance` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `last_academic_level` BIGINT(20) unsigned  DEFAULT NULL,
            `last_payment_method` BIGINT(20) unsigned  DEFAULT NULL,
            `is_subscribed` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `is_test` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `is_banned` TINYINT(1) unsigned NOT NULL default '0',
            `push_notifications` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `last_login` DATETIME DEFAULT NULL,
            `last_activity` DATETIME DEFAULT NULL,
            `reg_date` DATETIME DEFAULT NULL,
        PRIMARY KEY(`customer_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_employee`;

        CREATE TABLE IF NOT EXISTS `prox_employee` (
            `employee_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `employee_group` BIGINT(20) unsigned NOT NULL,
            `email` VARCHAR(255) NOT NULL,
            `first_name` VARCHAR(255) DEFAULT NULL,
            `middle_name` VARCHAR(255) DEFAULT NULL,
            `last_name` VARCHAR(255) DEFAULT NULL,
            `gender` enum('male', 'female') NOT NULL default 'male',
            `phone` VARCHAR(50) DEFAULT NULL,
            `writer_category` INT(10) NOT NULL DEFAULT 0,
            `academic_level` INT(10) NOT NULL DEFAULT 0,
            `employee_rating` INT(10) NOT NULL DEFAULT 0,
            `employee_status` INT(10) NOT NULL DEFAULT 0,
            `avatar` VARCHAR(255) DEFAULT NULL,
            `about` LONGTEXT DEFAULT NULL,
            `facebook_profile` VARCHAR(255) DEFAULT NULL,
            `linkedin_profile` VARCHAR(255) DEFAULT NULL,
            `payment_method` BIGINT(20) unsigned DEFAULT NULL,
            `payment_method_value` VARCHAR(255) DEFAULT NULL,
            `last_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_paid` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_orders_revised` INT(10) NOT NULL DEFAULT '0',
            `total_orders_rejected` INT(10) NOT NULL DEFAULT '0',
            `email_notifications` TINYINT(1) unsigned NOT NULL default '1',
            `password` VARCHAR(255) NOT NULL,
            `reset_password_token` VARCHAR(255) DEFAULT NULL,
            `reset_password_validity` DATETIME DEFAULT NULL,
            `last_passwd_gen` DATETIME DEFAULT NULL,
            `secure_key` VARCHAR(255) NOT NULL DEFAULT '-1',
            `policy_accepted` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `policy_accepted_at` DATETIME DEFAULT NULL,
            `is_started` TINYINT(1) unsigned NOT NULL default '0',
            `is_banned` TINYINT(1) unsigned NOT NULL default '0',
            `push_notifications` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `live_notifications_counter` INT(10) unsigned NOT NULL DEFAULT '0',
            `live_notifications_lastid` BIGINT(20) UNSIGNED DEFAULT NULL,
            `live_messages_counter` INT(10) unsigned NOT NULL DEFAULT '0',
            `live_messages_lastid` BIGINT(20) UNSIGNED DEFAULT NULL,
            `number_of_takes` INT(10) UNSIGNED DEFAULT '0',
            `timezone` VARCHAR(255) DEFAULT NULL,
            `notification_sound` TINYINT(1) NOT NULL DEFAULT '0',
            `cpp_type` enum('system', 'custom') NOT NULL default 'system',
            `cpp_amount` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `last_login` DATETIME DEFAULT NULL,
            `last_activity` DATETIME DEFAULT NULL,
            `reg_date` DATETIME DEFAULT NULL,
        PRIMARY KEY(`employee_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order`;

        CREATE TABLE IF NOT EXISTS `prox_order` (
            `order_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `order_type` ENUM('academic', 'article') NOT NULL default 'academic',
            `tracking_id` VARCHAR(255) DEFAULT NULL,
            `form_type_id` BIGINT(20) unsigned NOT NULL,
            `form_type` VARCHAR(255) DEFAULT NULL,
            `payment_method` VARCHAR(255) DEFAULT NULL,
            `currency_id` BIGINT(20) unsigned DEFAULT NULL,
            `currency_to_usd_rate` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `coupon_id` BIGINT(20) UNSIGNED DEFAULT NULL,
            `gmt` INT(10) NOT NULL,
            `customer_id` BIGINT(20) unsigned NOT NULL,
            `writer_id` BIGINT(20) unsigned DEFAULT NULL,
            `requested_writer_id` BIGINT(20) unsigned DEFAULT NULL,
            `editor_id` BIGINT(20) unsigned DEFAULT NULL,
            `status_id` BIGINT(20) unsigned DEFAULT '0',
            `parent_id` BIGINT(20) unsigned NOT NULL,
            `service_type` BIGINT(20) unsigned NOT NULL DEFAULT 37,
            `tariff_id` BIGINT(20) unsigned NOT NULL,
            `title` TEXT NOT NULL,
            `academic_level_id` BIGINT(20) unsigned NOT NULL,
            `paper_type_id` BIGINT(20) unsigned NOT NULL,
            `paper_type_option` TEXT DEFAULT NULL,
            `topic_category_id` BIGINT(20) unsigned NOT NULL,
            `topic_category_option` TEXT DEFAULT NULL,
            `is_complex_assignment` INT(10) unsigned NOT NULL DEFAULT '0',
            `paper_format_id` BIGINT(20) unsigned NOT NULL,
            `paper_format_option` TEXT DEFAULT NULL,
            `writer_category_id` INT(10) unsigned NOT NULL DEFAULT '0',
            `writer_percent` INT(10) unsigned NOT NULL DEFAULT '0',
            `pages` INT(10) unsigned NOT NULL DEFAULT '0',
            `charts` INT(10) unsigned NOT NULL DEFAULT '0',
            `slides` INT(10) unsigned NOT NULL DEFAULT '0',
            `sources` INT(10) unsigned NOT NULL DEFAULT '0',
            `excel_sheets` INT(10) UNSIGNED NOT NULL DEFAULT '0',
            `spacing` enum('single', 'double') NOT NULL default 'double',
            `paper_details` LONGTEXT DEFAULT NULL,
            `comments` LONGTEXT DEFAULT NULL,
            `writer_samples` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `used_sources` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `expert_proofreading` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `progressive_delivery` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `vip_support` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `plagiarism_report` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `draft_outline` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `raw_cost` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `tax` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `discount` INT(10) unsigned NOT NULL DEFAULT 0,
            `discount_type` INT(10) unsigned NOT NULL DEFAULT '0',
            `price_per_page` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_paid` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `paid_at` DATETIME DEFAULT NULL,
            `is_paid` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `writer_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `is_writer_paid` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `writer_paid_at` DATETIME DEFAULT NULL,
            `is_writer_confirmed` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `editor_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `is_editor_paid` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `editor_paid_at` DATETIME DEFAULT NULL,
            `is_editor_confirmed` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `hrs_customer` INT(10) unsigned NOT NULL DEFAULT '0',
            `customer_deadline` DATETIME DEFAULT NULL,
            `hrs_writer` INT(10) unsigned NOT NULL DEFAULT '0',
            `writer_deadline` DATETIME DEFAULT NULL,
            `writer_assigned` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `writer_assigned_at` DATETIME DEFAULT NULL,
            `editor_assigned` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `editor_assigned_at` DATETIME DEFAULT NULL,
            `ordermanager_id` BIGINT(20) UNSIGNED DEFAULT NULL,
            `ordermanager_assigned` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `ordermanager_assigned_at` DATETIME DEFAULT NULL,
            `ordermanager_pay` FLOAT(14,2) DEFAULT 0.00,
            `is_ordermanager_paid` TINYINT(1) UNSIGNED DEFAULT '0',
            `ordermanager_paid_at` DATETIME DEFAULT NULL,
            `approved_at` DATETIME DEFAULT NULL,
            `completed_at` DATETIME DEFAULT NULL,
            `cancelled_at` DATETIME DEFAULT NULL,
            `delivered_at` DATETIME DEFAULT NULL,
            `finished_at` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`order_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_additional_service`;

        CREATE TABLE IF NOT EXISTS `prox_additional_service` (
            `additional_service_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `comment` TEXT DEFAULT NULL,
            `tariff_id` BIGINT(20) unsigned DEFAULT NULL,
            `writer_category_id` BIGINT(20) unsigned DEFAULT NULL,
            `pages` INT(10) unsigned NOT NULL DEFAULT '0',
            `charts` INT(10) unsigned NOT NULL DEFAULT '0',
            `slides` INT(10) unsigned NOT NULL DEFAULT '0',
            `writer_samples` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `used_sources` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `expert_proofreading` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `progressive_delivery` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `total` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `paid_at` DATETIME DEFAULT NULL,
            `is_paid` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`additional_service_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_paypal_payment`;

        CREATE TABLE IF NOT EXISTS `prox_paypal_payment` (
            `payment_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `status_id` INT(10) unsigned NOT NULL DEFAULT '0',
            `node_type` VARCHAR(20) DEFAULT NULL,
            `node_id` BIGINT(20) unsigned NOT NULL,
            `amount` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`payment_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_payment`;

        CREATE TABLE IF NOT EXISTS `prox_payment` (
            `payment_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `node_id` BIGINT(20) UNSIGNED NOT NULL,
            `node_type` VARCHAR(20) DEFAULT NULL,
            `currency_id` BIGINT(20) UNSIGNED DEFAULT NULL,
            `conversion_rate` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `payment_method` VARCHAR(255) DEFAULT NULL,
            `transaction_id` VARCHAR(255) DEFAULT NULL,
            `amount` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`payment_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_order_bid`;

        CREATE TABLE IF NOT EXISTS `prox_order_bid` (
            `bid_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `writer_id` BIGINT(20) unsigned NOT NULL,
            `bid_time` INT(10) unsigned NOT NULL DEFAULT '0',
            `amount` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `is_assigned` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `is_deleted` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`bid_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_view`;

        CREATE TABLE IF NOT EXISTS `prox_order_view` (
            `order_id` BIGINT(20) unsigned NOT NULL,
            `user_id` BIGINT(20) unsigned NOT NULL,
            `last_viewed` INT(10) unsigned NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        KEY(`order_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_file`;

        CREATE TABLE `prox_order_file` (
            `file_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `site_id` BIGINT(20) UNSIGNED DEFAULT NULL,
            `uploader_id` BIGINT(20) unsigned NOT NULL,
            `file_type_id` INT(10) NOT NULL,
            `file_description` VARCHAR(255) DEFAULT NULL,
            `name` VARCHAR(255) NOT NULL,
            `size` INT(10) NOT NULL DEFAULT '0',
            `source` TEXT NOT NULL,
            `extension` VARCHAR(20) DEFAULT NULL,
            `is_part` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `is_final_file` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `approved` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `approved_at` DATETIME DEFAULT NULL,
            `downloaded` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `downloaded_at` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`file_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_message`;

        CREATE TABLE `prox_order_message` (
            `message_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned DEFAULT NULL,
            `sender_id` BIGINT(20) unsigned DEFAULT NULL,
            `parent_id` BIGINT(20) unsigned NOT NULL,
            `from_department` BIGINT(20) unsigned NOT NULL,
            `to_department` BIGINT(20) unsigned NOT NULL,
            `subject` TEXT DEFAULT NULL,
            `body` LONGTEXT DEFAULT NULL,
            `is_deleted` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `deleted_at` DATETIME DEFAULT NULL,
            `is_viewed` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `viewed_at` DATETIME DEFAULT NULL,
            `is_verified` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `verified_at` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
        PRIMARY KEY(`message_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_revision`;

        CREATE TABLE IF NOT EXISTS `prox_order_revision` (
            `revision_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `file_id` BIGINT(20) unsigned NOT NULL,
            `grammar` LONGTEXT DEFAULT NULL,
            `format` LONGTEXT DEFAULT NULL,
            `sources` LONGTEXT DEFAULT NULL,
            `customize_cont` LONGTEXT DEFAULT NULL,
            `other` LONGTEXT DEFAULT NULL,
            `instructions` LONGTEXT DEFAULT NULL,
            `client_deadline` INT(10) NOT NULL,
            `request_diff_writer` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `free_revision` TINYINT(1) unsigned NOT NULL DEFAULT '1',
            `date_add` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            PRIMARY KEY `revision_id` (`revision_id`),
            KEY `order_id` (`order_id`),
            KEY `file_id` (`file_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_pd_schedule`;

        CREATE TABLE IF NOT EXISTS `prox_order_pd_schedule` (
            `schedule_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `status_id` INT(10) NOT NULL DEFAULT '0',
            `pages` INT(10) NOT NULL DEFAULT '0',
            `slides` INT(10) NOT NULL DEFAULT '0',
            `charts` INT(10) NOT NULL DEFAULT '0',
            `comment` TEXT DEFAULT NULL,
            `writer_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `is_writer_paid` TINYINT(1) unsigned NOT NULL default '0',
            `client_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `is_paid` TINYINT(1) unsigned NOT NULL default '0',
            `client_deadline` DATETIME DEFAULT NULL,
            `writer_deadline` DATETIME DEFAULT NULL,
            `is_completed` TINYINT(1) unsigned NOT NULL default '0',
            `completed_at` DATETIME DEFAULT NULL,
            `is_approved` TINYINT(1) unsigned NOT NULL default '0',
            `approved_at` DATETIME DEFAULT NULL,
            `is_accepted` TINYINT(1) unsigned NOT NULL default '0',
            `accepted_at` DATETIME DEFAULT NULL,
            `is_rejected` TINYINT(1) unsigned NOT NULL default '0',
            `rejected_at` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`schedule_id`),
            KEY `orders` ( `order_id` )
        );

        DROP TABLE IF EXISTS `prox_order_meta`;

        CREATE TABLE IF NOT EXISTS `prox_order_meta` (
            `meta_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `name` VARCHAR(255) NOT NULL,
            `value` TEXT DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`meta_id`),
            KEY `order_id` ( `order_id` )
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_order_rating`;

        CREATE TABLE `prox_order_rating` (
            `rating_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `order_id` BIGINT(20) unsigned NOT NULL,
            `paper_rating` INT(10) DEFAULT NULL,
            `service_rating` INT(10) DEFAULT NULL,
            `comment` LONGTEXT DEFAULT NULL,
            `paper_on_time` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`rating_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_coupon`;

        CREATE TABLE IF NOT EXISTS `prox_coupon` (
            `coupon_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `coupon_type` INT(10) NOT NULL DEFAULT 1,
            `coupon_code` VARCHAR(255) NOT NULL UNIQUE,
            `order_id` BIGINT(20) unsigned DEFAULT NULL,
            `customer_id` BIGINT(20) unsigned DEFAULT NULL,
            `value` INT(10) NOT NULL DEFAULT 0,
            `lifetime` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `active` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `expiry` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY `coupon_id` (`coupon_id`),
            KEY `site_id` (`site_id`),
            KEY `order_id` (`order_id`),
            KEY `customer_id` (`customer_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_configuration`;

        CREATE TABLE IF NOT EXISTS `prox_configuration` (
            `configuration_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `name` VARCHAR(255) NOT NULL,
            `value` TEXT DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
        PRIMARY KEY(`configuration_id`),
        KEY(`site_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_mail`;

        CREATE TABLE IF NOT EXISTS `prox_mail` (
            `mail_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `recipient` VARCHAR(255) NOT NULL,
            `template` VARCHAR(255) NOT NULL,
            `subject` TEXT DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY `mail_id` (`mail_id`),
            KEY `site_id` (`site_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_site`;

        CREATE TABLE IF NOT EXISTS `prox_site` (
            `site_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `name` VARCHAR(255) DEFAULT NULL,
            `email` VARCHAR(255) DEFAULT NULL,
            `domain` VARCHAR(255) DEFAULT NULL,
            `customers` INT(10) DEFAULT 0,
            `orders` INT(10) DEFAULT 0,
            `payments` FLOAT(14,2) DEFAULT 0.00,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`site_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_coupon`;

        CREATE TABLE IF NOT EXISTS `prox_coupon` (
            `coupon_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) unsigned NOT NULL,
            `coupon_code` VARCHAR(255) NOT NULL UNIQUE,
            `coupon_type` INT(10) NOT NULL DEFAULT 1,
            `coupon_value` INT(10) DEFAULT NULL,
            `writer_category_id` INT(10) DEFAULT NULL,
            `service_type_id` INT(10) DEFAULT NULL,
            `order_id` BIGINT(20) unsigned DEFAULT NULL,
            `user_id` BIGINT(20) unsigned DEFAULT NULL,
            `active` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `one_time` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `expiry` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`coupon_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_currency`;

        CREATE TABLE `prox_currency` (
            `currency_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `title` VARCHAR(255) NOT NULL,
            `iso_code` CHAR(5) NOT NULL UNIQUE,
            `symbol` CHAR(5) NOT NULL,
            `country_code` CHAR(5) DEFAULT NULL,
            `conversion_rate` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `active` TINYINT(1) unsigned NOT NULL DEFAULT '1',
            `last_checked` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`currency_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        INSERT INTO `prox_currency` (`currency_id`, `title`, `iso_code`, `symbol`, `country_code`, `conversion_rate`, `active`, `last_checked`, `date_upd`, `date_add`) VALUES
        (1, 'United States Dollars	', 'USD', '$', '', 1.00, 1, '".$date."', '".$date."', '".$date."'),
        (2, 'Pound sterling	', 'GBP', '£', '', 0.82, 1, '".$date."', '".$date."', '".$date."'),
        (3, 'Canadian Dollars	', 'CAD', '$', '', 1.33, 1, '".$date."', '".$date."', '".$date."'),
        (4, 'Australian Dollars	', 'AUD', '$', '', 1.49, 1, '".$date."', '".$date."', '".$date."');

        DROP TABLE IF EXISTS `prox_error_log`;

        CREATE TABLE `prox_error_log` (
            `log_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `site_domain` TEXT DEFAULT NULL,
            `message` TEXT DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`log_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_payment_request`;

        CREATE TABLE `prox_payment_request` (
            `payment_request_id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
            `user_id` BIGINT(20) unsigned NOT NULL,
            `total_done_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_completed_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_pay` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_credit` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `total_fine` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `status` TINYINT(1) NOT NULL DEFAULT '0',
            `paid_at` DATETIME DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`payment_request_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_payment_request_order`;

        CREATE TABLE `prox_payment_request_order` (
            `node_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
            `user_id` BIGINT(20) UNSIGNED NOT NULL,
            `payment_request_id` BIGINT(20) unsigned NOT NULL,
            `order_id` BIGINT(20) unsigned NOT NULL,
            PRIMARY KEY(`node_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_notification`;

        CREATE TABLE `prox_notification` (
            `notification_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
            `to_department` VARCHAR(255) NOT NULL,
            `to_user_id` BIGINT(20) UNSIGNED NOT NULL,
            `from_department` VARCHAR(255) NOT NULL,
            `from_user_id` BIGINT(20) UNSIGNED NOT NULL,
            `action` VARCHAR(255) NOT NULL,
            `node_type` VARCHAR(255) NOT NULL,
            `node_url` VARCHAR(255) NOT NULL,
            `message` TEXT DEFAULT NULL,
            `is_seen` TINYINT(1) NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`notification_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_mailing_list`;

        CREATE TABLE `prox_mailing_list` (
            `mail_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) UNSIGNED NOT NULL,
            `name` VARCHAR(255) DEFAULT NULL,
            `email` VARCHAR(255) NOT NULL,
            `date_add` DATETIME DEFAULT NULL,
            PRIMARY KEY(`mail_id`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS `prox_deadline`;

        CREATE TABLE `prox_deadline` (
            `deadline_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `site_id` BIGINT(20) UNSIGNED NOT NULL,
            `academic_level_id` BIGINT(20) UNSIGNED NOT NULL,
            `name` VARCHAR(255) DEFAULT NULL,
            `price_per_page` FLOAT(14,2) NOT NULL DEFAULT 0.00,
            `hrs_customer` INT(10) NOT NULL,
            `hrs_writer` INT(10) NOT NULL,
            `min_pages` INT(10) NOT NULL DEFAULT 1,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`deadline_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_discipline`;

        CREATE TABLE `prox_discipline` ( 
            `discipline_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `group_id` BIGINT(20) UNSIGNED NOT NULL,
            `title` VARCHAR(255) DEFAULT NULL,
            `is_group` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `is_complex_assignment` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`discipline_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_paper_type`;

        CREATE TABLE `prox_paper_type` (
            `paper_type_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `title` VARCHAR(255) DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`paper_type_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_upload_type`;

        CREATE TABLE `prox_upload_type` ( 
            `upload_type_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `title` VARCHAR(255) DEFAULT NULL,
            `writer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `customer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `editor` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`upload_type_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_paper_format`;

        CREATE TABLE `prox_paper_format` ( 
            `paper_format_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `title` VARCHAR(255) DEFAULT NULL,
            `date_upd` DATETIME DEFAULT NULL,
            `date_add` DATETIME DEFAULT NULL,
        PRIMARY KEY(`paper_format_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_module`;

        /* Installed module list */
        CREATE TABLE `prox_module` (
            `module_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `name` VARCHAR(64) NOT NULL,
            `active` TINYINT(1) unsigned NOT NULL DEFAULT '0',
            `version` VARCHAR(8) NOT NULL,
            PRIMARY KEY (`module_id`),
            UNIQUE KEY `name_UNIQUE` (`name`),
            KEY `name` (`name`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_hook`;

        CREATE TABLE `prox_hook` (
            `hook_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `name` VARCHAR(64) NOT NULL,
            `title` VARCHAR(64) NOT NULL,
            `description` TEXT,
            `position` TINYINT(1) NOT NULL DEFAULT '1',
            PRIMARY KEY (`hook_id`),
            UNIQUE KEY `hook_name` (`name`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_hook_alias`;

        /* Hook alias name */
        CREATE TABLE `prox_hook_alias` (
            `hook_id_alias` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `alias` VARCHAR(64) NOT NULL,
            `name` VARCHAR(64) NOT NULL,
            PRIMARY KEY (`hook_id_alias`),
            UNIQUE KEY `alias` (`alias`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_hook_module`;

        /* Define registered hook module */
        CREATE TABLE `prox_hook_module` (
            `module_id` BIGINT(20) unsigned NOT NULL,
            `hook_id` BIGINT(20) unsigned NOT NULL,
            `position` TINYINT(2) unsigned NOT NULL,
            PRIMARY KEY (
                `module_id`, `hook_id`
            ),
            KEY `hook_id` (`hook_id`),
            KEY `module_id` (`module_id`),
            KEY `position` (`position`)
        ) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

        DROP TABLE IF EXISTS `prox_user_session`;

        CREATE TABLE IF NOT EXISTS `prox_user_session` (
            `session_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
            `session_token` VARCHAR(64) NOT NULL,
            `user_id` BIGINT(20) UNSIGNED NOT NULL,
            `user_browser` VARCHAR(64) NOT NULL,
            `user_os` VARCHAR(64) NOT NULL,
            `user_ip` VARCHAR(64) NOT NULL,
            `date_add` DATETIME DEFAULT NULL,
            UNIQUE KEY `session_token` (`session_token`),
            KEY `user_ip` (`user_ip`),
        PRIMARY KEY(`session_id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
    ";

    $db->execute($structure);

    $site_id = 132457698;

    $crypto = new Hashing();
    $password = $crypto->hash(
        $password,
        PROX_COOKIE_KEY
    );

    $domain = $app->base_uri;
    $secure_key = md5(uniqid(rand(), true));

    // [4] update system settings
    $db->insert('configuration', array(
        'name' => 'SITE_ID',
        'site_id' => $site_id,
        'value' => $site_id,
        'date_add' => $date,
        'date_upd' => $date,
    ));

    $db->insert('configuration', array(
        'name' => 'SITE_DOMAIN',
        'site_id' => $site_id,
        'value' => $domain,
        'date_add' => $date,
        'date_upd' => $date,
    ));

    // [5] install preferences
    $paperTypes = $globals['paperTypes'];
    foreach( $paperTypes as $paperTypeId => $paperType ) {
        $a = new PaperType();
        $a->force_id = true;
        $a->id = $paperTypeId;
        $a->title = $paperType['title'];
        $a->add();
    }

    $paperFormats = array(
        1 => [
            "title" => "APA",
        ],
        2 => [
            "title" => "Chicago / Turabian",
        ],
        3 => [
            "title" => "Not applicable",
        ],
        4 => [
            "title" => "Other",
        ],
        5 => [
            "title" => "MLA",
        ]
    );

    foreach( $paperFormats as $paperFormatId => $paperFormat ) {
        $b = new PaperFormat();
        $b->force_id = true;
        $b->id = $paperFormatId;
        $b->title = $paperFormat['title'];
        $b->add();
    }

    $uploadTypes = $globals['uploadTypes'];
    foreach($uploadTypes as $uploadTypeId => $uploadType) {
        $c = new UploadType();
        $c->force_id = true;
        $c->id = $uploadTypeId;
        $c->title = $uploadType['description'];
        $c->writer = $uploadType['writer'];
        $c->customer = $uploadType['customer'];
        $c->add();
    }

    $disciplines = $globals['disciplines'];
    foreach($disciplines as $disciplineId => $discipline) {
        $c = new Discipline();
        $c->force_id = true;
        $c->id = $disciplineId;
        $c->title = $discipline['name'];
        $c->is_complex_assignment = $discipline['isComplexAssignment'];
        $c->add();
    }

    $disciplinesGroups = $globals['disciplinesGroups'];
    foreach( $disciplinesGroups as $disciplinesGroupId => $disciplinesGroup ) {
        $d = new Discipline();
        $d->id = $disciplinesGroupId;
        $d->title = $disciplinesGroup['groupName'];
        $d->add();

        foreach( $disciplinesGroup['disciplines'] as $disciplineId ) {
            $discipline = new Discipline( (int) $disciplineId );
            if(Validate::isLoadedObject($discipline)) {
                $discipline->group_id = $d->id;
                $discipline->update();
            }
        }
    }

    // [6] Add the admin
    try {
        $db->insert(
            'employee',
            array(
                'employee_id' => Employee::START_ID,
                'employee_group' => 1,
                'email' => $email,
                'first_name' => $first_name,
                'last_name' => $last_name,
                'password' => $password,
                'secure_key' => $secure_key,
                'is_started' => 1,
                'reg_date' => $date
            )
        );
    } catch (\Exception $e) {
        die($e->getMessage());
    }

    // [7] create config file
$config_string = "<?php
/**
 * The base configuration for Proxim
 * @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
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for Proxim */
define( 'DB_NAME', '".$database."' );

/** MySQL database username */
define( 'DB_USER', '".$db_user."' );

/** MySQL database password */
define( 'DB_PASSWORD', '".$db_password."' );

/** MySQL hostname */
define( 'DB_SERVER', '".$db_server."' );

/** 9 characters Unique Identifier for this site */
define( 'PROX_SITE_ID', '".$site_id."' );

/** MySQL database prefix */
define( 'DB_PREFIX', 'prox_' );

define( 'PROX_DEBUG', true );

define( 'PROX_ENVIRONMENT', 'development');

define( 'PROX_CACHING_SYSTEM', 'CacheMemcached' );

/* SQL Replication management */
define( 'PROX_USE_SQL_SLAVE', false );

/** uploads folder */
define('PROX_DIR_UPLOADS', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR);

/**#@+
 * Authentication Unique Keys and Salts.
 */
define( 'PROX_COOKIE_KEY', '".PROX_COOKIE_KEY."' );
define( 'PROX_COOKIE_IV', '".PROX_COOKIE_IV."' );

/** All errors that occur will be sent to this email */
define('PROX_DEVELOPER_MAIL',          'davis@davisonpro.dev');

/* That's all, stop editing! Happy writing . */
?>";

    $config_file = PROX_DIR_ROOT . 'config.php';
    $handle = fopen($config_file, 'w') or die("Proxim intsaller wizard cannot create the config file");
    fwrite($handle, $config_string);
    fclose($handle);

    // [7] start the system
    header('Location: /');
}

?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Proxim &rsaquo; Installer</title>

        <link rel="stylesheet" type="text/css" href="/static/installer/installer.css" />
        <script src="/static/installer/modernizr.custom.js"></script>
    </head>

    <body>

        <div class="container">

            <div class="fs-form-wrap" id="fs-form-wrap">

                <div class="fs-title">
                    <h1>Proxim Installer</h1>
                </div>

                <form id="myform" class="fs-form fs-form-full" autocomplete="off" action="install.php" method="post">
                    <ol class="fs-fields">

                        <li>
                            <p class="fs-field-label fs-anim-upper">
                                Welcome to <strong>Proxim</strong> installation process! Just fill in the information below and start your own academic writing service.
                            </p>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="db_name" data-info="The name of the database you want to run Proxim in">What's Database Name?</label>
                            <input autocomplete="off" class="fs-anim-lower" id="db_name" name="db_name" type="text" placeholder="Proxim" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="db_username" data-info="Your MySQL username">What's Database Username?</label>
                            <input autocomplete="off" class="fs-anim-lower" id="db_username" name="db_username" type="text" placeholder="username" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="db_password" data-info="Your MySQL password">What's Database Password?</label>
                            <input autocomplete="off" class="fs-anim-lower" id="db_password" name="db_password" type="text" placeholder="password"/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="db_host" data-info="You should be able to get this info from your web host, if localhost does not work">What's Database Host?</label>
                            <input autocomplete="off" class="fs-anim-lower" id="db_host" name="db_host" type="text" placeholder="localhost" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="admin_email" data-info="Double-check your email address before continuing.">Your E-mail</label>
                            <input autocomplete="off" class="fs-anim-lower" id="admin_email" name="admin_email" type="email" placeholder="me@mail.com" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="admin_first_name" data-info="Name can have only alphanumeric characters.">Your First name</label>
                            <input autocomplete="off" class="fs-anim-lower" id="admin_first_name" name="admin_first_name" type="text" placeholder="First name" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="admin_last_name" data-info="Name can have only alphanumeric characters.">Your Last name</label>
                            <input autocomplete="off" class="fs-anim-lower" id="admin_last_name" name="admin_last_name" type="text" placeholder="Last name" required/>
                        </li>

                        <li>
                            <label class="fs-field-label fs-anim-upper" for="admin_password" data-info=' The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers, and symbols like ! " ? $ % ^ & ).'>Password</label>
                            <input autocomplete="off" class="fs-anim-lower" id="admin_password" name="admin_password" type="text" placeholder="password" required/>
                        </li>

                    </ol>
                    <button class="fs-submit" name="submit" type="submit">Install</button>
                </form>

            </div>

        </div>

        <script src="/static/installer/classie.js"></script>
        <script src="/static/installer/fullscreenForm.js"></script>
        <script>
            (function() {
                var formWrap = document.getElementById( 'fs-form-wrap' );
                new FForm( formWrap, {
                    onReview : function() {
                        classie.add( document.body, 'overview' );
                    }
                } );
            })();
        </script>

    </body>
</html>