<?php
# @*************************************************************************@
# @ Software author: Mansur Altamirov (Mansur_TL) @
# @ Author_url 1: https://www.instagram.com/mansur_tl @
# @ Author_url 2: http://codecanyon.net/user/mansur_tl @
# @ Author E-mail: vayart.help@gmail.com @
# @*************************************************************************@
# @ ColibriSM - The Ultimate Modern Social Media Sharing Platform @
# @ Copyright (c) 2020 - 2021 ColibriSM. All rights reserved. @
# @*************************************************************************@
if (isset($_POST['install'])) {
require_once(PROJ_RP . '/core/libs/DB/vendor/autoload.php');
$errors = array();
$form_fields = array(
'sql_host' => ((empty($_POST['sql_host'])) ? null : strval($_POST['sql_host'])),
'sql_user' => ((empty($_POST['sql_user'])) ? null : strval($_POST['sql_user'])),
'sql_pass' => ((empty($_POST['sql_pass'])) ? null : strval($_POST['sql_pass'])),
'sql_db_name' => ((empty($_POST['sql_db_name'])) ? null : strval($_POST['sql_db_name'])),
'site_url' => ((empty($_POST['site_url'])) ? null : strval($_POST['site_url'])),
'site_name' => ((empty($_POST['site_name'])) ? null : strval($_POST['site_name'])),
'site_desc' => ((empty($_POST['site_desc'])) ? null : strval($_POST['site_desc'])),
'site_seokw' => ((empty($_POST['site_seokw'])) ? null : strval($_POST['site_seokw'])),
'site_title' => ((empty($_POST['site_title'])) ? null : strval($_POST['site_title'])),
'site_email' => ((empty($_POST['site_email'])) ? null : strval($_POST['site_email'])),
'site_password' => ((empty($_POST['site_password'])) ? null : strval($_POST['site_password'])),
);
$_SESSION['sql_host'] = $sql_host = $form_fields['sql_host'];
$_SESSION['sql_user'] = $sql_user = $form_fields['sql_user'];
$_SESSION['sql_pass'] = $sql_pass = $form_fields['sql_pass'];
$_SESSION['sql_db_name'] = $sql_db_name = $form_fields['sql_db_name'];
$_SESSION['site_url'] = $site_url = $form_fields['site_url'];
$_SESSION['site_name'] = $site_name = $form_fields['site_name'];
$_SESSION['site_desc'] = $site_desc = $form_fields['site_desc'];
$_SESSION['site_seokw'] = $site_seokw = $form_fields['site_seokw'];
$_SESSION['site_title'] = $site_title = $form_fields['site_title'];
$_SESSION['site_email'] = $site_email = $form_fields['site_email'];
$_SESSION['site_password'] = $site_password = $form_fields['site_password'];
$mysqlcon = mysqli_connect($sql_host, $sql_user, $sql_pass, $sql_db_name);
$db = new MysqliDb($mysqlcon);
if (mysqli_connect_errno()) {
$errors[] = "Failed to connect to MySQL: " . mysqli_connect_error();
}
else if (empty($site_url)) {
$errors[] = "The site url field is required!";
}
else if (filter_var($site_url, FILTER_VALIDATE_URL) != true) {
$errors[] = "The site url you entered is not valid!";
}
else if (empty($site_name)) {
$errors[] = "The site name field is required. Please enter your site name!";
}
else if (mb_strlen($site_name) > 32) {
$errors[] = "The site name you entered is too long!";
}
else if (empty($site_desc) != true && mb_strlen($site_desc) > 250) {
$errors[] = "The site description you entered is too long! Max length is 250 characters";
}
else if (empty($$site_seokw) != true && mb_strlen($site_seokw) > 250) {
$errors[] = "The site SEO keywords you entered is too long! Max length is 250 characters";
}
else if (empty($site_title)) {
$errors[] = "The title field is required. Please enter your site title!";
}
else if (mb_strlen($site_title) > 55) {
$errors[] = "The site title you entered is too long!";
}
else if (empty($site_email)) {
$errors[] = "The site email field is required. Please enter your site email address!";
}
else if (filter_var($site_email, FILTER_VALIDATE_EMAIL) != true) {
$errors[] = "The site email address you entered is not valid. Please enter a valid email address!";
}
else if (empty($site_password)) {
$errors[] = "Please enter an admin password!";
}
else if (mb_strlen($site_password) < 6) {
$errors[] = "An admin password must be at least 6 characters!";
}
else if (mb_strlen($site_password) > 20) {
$errors[] = "The admin password you entered is too long!";
}
else {
$settings_file_content = '<?php
# @*************************************************************************@
# @ Software author: Mansur Altamirov (Mansur_TL) @
# @ Author_url 1: https://www.instagram.com/mansur_tl @
# @ Author_url 2: http://codecanyon.net/user/mansur_tl @
# @ Author E-mail: vayart.help@gmail.com @
# @*************************************************************************@
# @ ColibriSM - The Ultimate Modern Social Media Sharing Platform @
# @ Copyright (c) 2020 - 2021 ColibriSM. All rights reserved. @
# @*************************************************************************@
# MySQL db host name
$sql_db_host = "' . $sql_host . '";
# MySQL db User
$sql_db_user = "' . $sql_user . '";
# MySQL db Password
$sql_db_pass = "' . $sql_pass . '";
# MySQL db Name
$sql_db_name = "' . $sql_db_name. '";
# Site URL
$site_url = "' . $site_url . '"; // E.g (https://www.mysite.com)
?>';
$config_file = file_put_contents(PROJ_RP . '/core/settings.php', trim($settings_file_content));
if ($config_file) {
$db_sql_query = file_get_contents(PROJ_RP . '/colibri-db.sql');
$insert_status = true;
preg_match_all('/\{\%begin\%\}(.+?)\{\%end\%\}/is',$db_sql_query, $matches, PREG_PATTERN_ORDER);
if (isset($matches[1]) && is_array($matches[1])) {
$set_names = $mysqlcon->query("SET NAMES utf8");
$set_charset = $mysqlcon->set_charset('utf8mb4');
$set_charset = $mysqlcon->query("SET collation_connection = utf8mb4_unicode_ci");
foreach ($matches[1] as $query) {
$query_status = mysqli_query($mysqlcon, $query);
if (empty($query_status)) {
$errors[] = mysqli_error($mysqlcon);
$errors[] = "Error at: <code>$query</code>";
$insert_status = false;
foreach ($cl_tables as $t_name) {
try {
mysqli_query($mysqlcon,"DROP TABLE `{$t_name}`");
} catch (Exception $e) { /*pass*/ }
}
break;
}
}
if ($insert_status) {
$site_name = mysqli_real_escape_string($mysqlcon, $site_name);
$site_desc = mysqli_real_escape_string($mysqlcon, $site_desc);
$site_seokw = mysqli_real_escape_string($mysqlcon, $site_seokw);
$site_title = mysqli_real_escape_string($mysqlcon, $site_title);
$site_email = mysqli_real_escape_string($mysqlcon, $site_email);
$db = $db->where('name','name');
$qr = $db->update('cl_configs',array('value' => $site_name));
if (empty($site_desc) != true) {
$db = $db->where('name','description');
$qr = $db->update('cl_configs',array('value' => htmlspecialchars($site_desc)));
}
if (empty($site_seokw) != true) {
$db = $db->where('name','keywords');
$qr = $db->update('cl_configs',array('value' => $site_seokw));
}
$db = $db->where('name','title');
$qr = $db->update('cl_configs',array('value' => $site_title));
$db = $db->where('name','email');
$qr = $db->update('cl_configs',array('value' => $site_email));
$insert_data = array(
'fname' => 'Site',
'lname' => 'Admin',
'username' => 'administrator',
'email' => $site_email,
'admin' => '1',
'active' => '1',
'country_id' => '1',
'verified' => '1',
'start_up' => 'done',
'language' => 'english',
'last_active' => time(),
'joined' => time(),
'ip_address' => '0.0.0.0',
'password' => password_hash($site_password, PASSWORD_DEFAULT)
);
$user_id = $db->insert('cl_users', $insert_data);
$success = true;
}
}
else {
$errors[] = "Error found while installing, please contact us.";
}
}
}
}
?>
<div class="main-cont-inner">
<?php if (empty($success) != true): ?>
<div class="cont-header">
<div class="row">
<div class="col-6">
<h2>
<span class="icon">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="48px" height="48px" viewBox="0 0 24 24" aria-labelledby="circleOkIconTitle" stroke="#2329D6" stroke-width="1" stroke-linecap="square" stroke-linejoin="miter" fill="none" color="#2329D6"> <title id="circleOkIconTitle">OK</title> <polyline points="7 13 10 16 17 9"/> <circle cx="12" cy="12" r="10"/> </svg>
</span>
<span class="text">
Installed
</span>
</h2>
</div>
<div class="col-6">
<div class="go-back">
<a href="<?php echo($site_url); ?>">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="48px" height="48px" viewBox="0 0 24 24" aria-labelledby="arrowRightTopIconTitle" stroke="#2329D6" stroke-width="1" stroke-linecap="square" stroke-linejoin="miter" fill="none" color="#2329D6"> <title id="arrowRightTopIconTitle">Arrow Right Top</title> <path d="M19 13V5h-8"/> <path stroke-linecap="round" d="M19 5l-1 1"/> <path d="M18 6L5 19"/> </svg>
</a>
</div>
</div>
</div>
</div>
<div class="cont-body">
<div class="installation">
<div class="form-content">
<div class="success">
<h2>Congratulations!</h2>
<p>
Your site has been successfully installed and ready to go.
</p>
<a href="<?php echo($site_url); ?>" class="lets-go d-block">
<button class="btn btn-success">
Let's Go!
</button>
</a>
</div>
</div>
</div>
</div>
<?php else: ?>
<div class="cont-header">
<div class="row">
<div class="col-6">
<h2>
<span class="icon">
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-labelledby="downloadIconTitle" stroke-width="1.8" stroke-linecap="square" stroke-linejoin="miter" fill="none" > <path d="M12,3 L12,16"/> <polyline points="7 12 12 17 17 12"/> <path d="M20,21 L4,21"/> </svg>
</span>
<span class="text">
Installation
</span>
</h2>
</div>
<div class="col-6">
<div class="go-back">
<a href="?p=requirements">
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-labelledby="arrowLeftIconTitle" stroke-width="1.8" stroke-linecap="square" stroke-linejoin="miter" fill="none" > <path d="M9 6l-6 6 6 6"/> <path d="M21 12H4"/> <path stroke-linecap="round" d="M3 12h1"/> </svg>
</a>
</div>
</div>
</div>
</div>
<div class="cont-body">
<div class="installation">
<form id="install-site" class="form" method="post" action="?p=installation">
<div class="installation-def-title">
<p>
Please provide the following info, to begin installing your site.
</p>
</div>
<div class="form-content">
<?php if (empty($errors) != true): ?>
<div class="row">
<div class="col-12">
<div class="errors">
<?php foreach ($errors as $err): ?>
<p>
<?php echo($err); ?>
</p>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
<div class="row">
<div class="col-12">
<div class="form-group-title">
<div>
Database credentials
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
SQL host name
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['sql_host'])) ? $_SESSION['sql_host'] : ''); ?>" class="form-control" type="text" name="sql_host" placeholder="Enter your DB host name. E.g 127.0.0.1">
</div>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
SQL username
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['sql_user'])) ? $_SESSION['sql_user'] : ''); ?>" class="form-control" type="text" name="sql_user" placeholder="Enter your DB user name. E.g root_user">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
SQL password
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['sql_pass'])) ? $_SESSION['sql_pass'] : ''); ?>" class="form-control" type="text" name="sql_pass" placeholder="Enter your DB user password..">
</div>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
SQL database name
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['sql_db_name'])) ? $_SESSION['sql_db_name'] : ''); ?>" class="form-control" type="text" name="sql_db_name" placeholder="Enter your DB name. E.g. highexpress_db">
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<div class="form-group-title">
<div>
Website URL
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-input-label">
Site url
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['site_url'])) ? $_SESSION['site_url'] : ''); ?>" class="form-control" type="text" name="site_url" placeholder="Enter your site url address. E.g. http(s)://www.domain-name.com">
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<div class="form-group-title">
<div>
Website name
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-input-label">
Site name
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['site_name'])) ? $_SESSION['site_name'] : ''); ?>" class="form-control" type="text" name="site_name" placeholder="Enter your site name.">
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label class="form-input-label">
Site title
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['site_title'])) ? $_SESSION['site_title'] : ''); ?>" class="form-control" type="text" name="site_title" placeholder="Enter your site title">
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<div class="form-group-title">
<div>
SEO keywords & description
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-input-label">
SEO keywords (Optional)
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['site_seokw'])) ? $_SESSION['site_seokw'] : ''); ?>" class="form-control" type="text" name="site_seokw" placeholder="Enter your site SEO keywords">
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label class="form-input-label">
Site description (Optional)
</label>
<div class="form-input">
<textarea class="form-control" name="site_desc" placeholder="Enter your site description"><?php echo ((isset($_SESSION['site_desc'])) ? $_SESSION['site_desc'] : ''); ?></textarea>
</div>
<small class="info-message">
If you have not yet defined the description of your site, then you can skip these fields, as you can do this later through the admin panel
</small>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<div class="form-group-title">
<div>
Admin user credentials
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
Site E-mail
</label>
<div class="form-input">
<input value="<?php echo ((isset($_SESSION['site_email'])) ? $_SESSION['site_email'] : ''); ?>" class="form-control" type="text" name="site_email" placeholder="Enter your site E-mail address">
</div>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label class="form-input-label">
Enter a password for admin
</label>
<div class="form-input">
<input class="form-control" type="text" name="site_password" placeholder="Enter a password">
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<small class="info-message">
Please note that this email and password will be requested to Log-in the site as an administrator!
</small>
</div>
</div>
</div>
</div>
<div class="next-action">
<div class="ml-auto">
<button type="submit" class="btn btn-info" name="install">
Install
</button>
<button disabled="true" type="button" class="btn btn-info d-none">
Please wait...
</button>
</div>
</div>
</form>
</div>
</div>
<?php endif; ?>
</div>