sarga/public/installer/EnvConfig.php

144 lines
4.8 KiB
PHP
Executable File

<?php
// array to hold validation errors
$errors = [];
// array to pass back data
$data = [];
// validate the variables
// if any of these variables don't exist, add an error to our $errors array
if (empty($_POST['app_name']))
$errors['app_name'] = 'App Name is required.';
if (empty($_POST['app_url']))
$errors['app_url'] = 'App Url is required.';
if (empty($_POST['app_currency']))
$errors['app_currency'] = 'The application currency is required.';
if (empty($_POST['app_locale']))
$errors['app_locale'] = 'Please select a locale for the application.';
if (empty($_POST['app_timezone']))
$errors['app_timezone'] = 'The application timezone is required.';
if (empty($_POST['host_name']))
$errors['host_name'] = 'Host Name is required.';
if (empty($_POST['port_name']))
$errors['port_name'] = 'Port Name is required.';
if (preg_match('/\s/', $_POST['app_url']))
$errors['app_url_space'] = 'There should be no space in App URL ';
if (preg_match('/\s/', $_POST['app_name']))
$errors['app_name_space'] = 'There should be no space in App Name.';
if (preg_match('/\s/', $_POST['host_name']))
$errors['host_name_space'] = 'There should be no space in Host Name.';
if (preg_match('/\s/', $_POST['database_name']))
$errors['database_name_space'] = 'There should be no space in Database Name.';
if (preg_match('/\s/', $_POST['database_prefix']))
$errors['database_prefix_space'] = 'There should be no space in Database Prefix.';
if (preg_match('/\s/', $_POST['user_name']))
$errors['user_name_space'] = 'There should be no space in User Name.';
if (preg_match('/\s/', $_POST['user_password']))
$errors['user_password_space'] = 'There should be no space in User Password.';
if (preg_match('/\s/', $_POST['port_name']))
$errors['port_name_space'] = 'There should be no space in Port Name.';
// return a response
// if there are any errors in our errors array, return a success boolean of false
if (! empty($errors)) {
// if there are items in our errors array, return those errors
$data['success'] = false;
$data['errors'] = $errors;
} else {
// if there are no errors process our form, then return a message
// getting env file location
$location = str_replace('\\', '/', getcwd());
$currentLocation = explode("/", $location);
array_pop($currentLocation);
array_pop($currentLocation);
$desiredLocation = implode("/", $currentLocation);
$envFile = $desiredLocation . '/' . '.env';
$envExampleFile = $desiredLocation . '/' . '.env.example';
if (! file_exists($envFile)) {
if (file_exists($envExampleFile)) {
copy($envExampleFile, $envFile);
} else {
touch($envFile);
}
}
// reading env content
$data = file($envFile);
$keyValueData = [];
if ($data) {
foreach ($data as $line) {
$line = preg_replace('/\s+/', '', $line);
$rowValues = explode('=', $line);
if (strlen($line) !== 0) {
$keyValueData[$rowValues[0]] = $rowValues[1];
}
}
}
// inserting form data to empty array
$keyValueData['DB_HOST'] = $_POST["host_name"];
$keyValueData['DB_DATABASE'] = $_POST["database_name"];
$keyValueData['DB_PREFIX'] = $_POST["database_prefix"];
$keyValueData['DB_USERNAME'] = $_POST["user_name"];
$keyValueData['DB_PASSWORD'] = $_POST["user_password"];
$keyValueData['APP_NAME'] = $_POST["app_name"];
$keyValueData['APP_URL'] = $_POST["app_url"];
$keyValueData['APP_CURRENCY'] = $_POST["app_currency"];
$keyValueData['APP_LOCALE'] = $_POST["app_locale"];
$keyValueData['APP_TIMEZONE'] = $_POST["app_timezone"];
$keyValueData['DB_CONNECTION'] = $_POST["database_connection"];
$keyValueData['DB_PORT'] = $_POST["port_name"];
// making key/value pair with form-data for env
$changedData = [];
foreach ($keyValueData as $key => $value) {
$changedData[] = $key . '=' . $value;
}
// inserting new form-data to env
$changedData = implode(PHP_EOL, $changedData);
file_put_contents($envFile, $changedData);
// checking database connection(mysql only)
if ($_POST["database_connection"] == 'mysql') {
// create connection
@$conn = new mysqli($_POST["host_name"], $_POST["user_name"], $_POST["user_password"], $_POST["database_name"], $_POST['port_name']);
// check connection
if ($conn->connect_error) {
$errors['database_error'] = $conn->connect_error;
$data['errors'] = $errors;
$data['success'] = false;
} else {
$data['success'] = true;
$data['message'] = 'Success!';
}
} else {
$data['success'] = true;
$data['message'] = 'Success!';
}
}
// return all our data to an AJAX call
echo json_encode($data);