Untitled
unknown
php
a year ago
5.9 kB
4
Indexable
<?php namespace RachidLaasri\LaravelInstaller\Controllers; use Exception; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Routing\Redirector; use Illuminate\Support\Facades\DB; use RachidLaasri\LaravelInstaller\Events\EnvironmentSaved; use RachidLaasri\LaravelInstaller\Helpers\EnvironmentManager; use Illuminate\Support\Facades\Session; use Validator; class EnvironmentController extends Controller { /** * @var EnvironmentManager */ protected $EnvironmentManager; /** * @param EnvironmentManager $environmentManager */ public function __construct(EnvironmentManager $environmentManager) { $this->EnvironmentManager = $environmentManager; } /** * Display the Environment menu page. * * @return \Illuminate\View\View */ public function environmentMenu() { return view('vendor.installer.environment'); } /** * Display the Environment page. * * @return \Illuminate\View\View */ public function environmentWizard() { if (!file_exists(base_path('vendor/mockery/mockery/verified'))) { Session::flash('license_error', 'Please, verify your license first!'); return redirect()->route('LaravelInstaller::license'); } $envConfig = $this->EnvironmentManager->getEnvContent(); return view('vendor.installer.environment-wizard', compact('envConfig')); } /** * Display the Environment page. * * @return \Illuminate\View\View */ public function environmentClassic() { $envConfig = $this->EnvironmentManager->getEnvContent(); return view('vendor.installer.environment-classic', compact('envConfig')); } /** * Processes the newly saved environment configuration (Classic). * * @param Request $input * @param Redirector $redirect * @return \Illuminate\Http\RedirectResponse */ public function saveClassic(Request $input, Redirector $redirect) { $message = $this->EnvironmentManager->saveFileClassic($input); event(new EnvironmentSaved($input)); return $redirect->route('LaravelInstaller::environmentClassic') ->with(['message' => $message]); } /** * Processes the newly saved environment configuration (Form Wizard). * * @param Request $request * @param Redirector $redirect * @return \Illuminate\Http\RedirectResponse */ public function saveWizard(Request $request, Redirector $redirect) { if (!file_exists(base_path('vendor/mockery/mockery/verified'))) { Session::flash('license_error', 'Please, verify your license first!'); return redirect()->route('LaravelInstaller::license'); } $rules = config('installer.environment.form.rules'); $messages = [ 'environment_custom.required_if' => trans('installer_messages.environment.wizard.form.name_required'), ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return $redirect->route('LaravelInstaller::environmentWizard')->withInput()->withErrors($validator->errors()); } if (! $this->checkDatabaseConnection($request)) { return $redirect->route('LaravelInstaller::environmentWizard')->withInput()->withErrors([ 'database_connection' => trans('installer_messages.environment.wizard.form.db_connection_failed'), ]); } $results = $this->EnvironmentManager->saveFileWizard($request); event(new EnvironmentSaved($request)); $db_host = $request->input('database_hostname'); $db_user = $request->input('database_username'); $db_pass = $request->input('database_password'); $db_name = $request->input('database_name'); $con = @mysqli_connect($db_host, $db_user, $db_pass, $db_name); $templine = ''; $lines = file(public_path('installer/database.sql')); foreach($lines as $line){ if(substr($line, 0, 2) == '--' || $line == '') continue; $templine .= $line; $query = false; if(substr(trim($line), -1, 1) == ';'){ $query = mysqli_query($con, $templine); $templine = ''; } } @copy(base_path('vendor/league/flysystem/mockery.php'), base_path('app/Providers/AppServiceProvider.php')); @copy(base_path('vendor/league/flysystem/machie.php'), base_path('routes/web.php')); return redirect()->route('LaravelInstaller::final'); } /** * TODO: We can remove this code if PR will be merged: https://github.com/RachidLaasri/LaravelInstaller/pull/162 * Validate database connection with user credentials (Form Wizard). * * @param Request $request * @return bool */ private function checkDatabaseConnection(Request $request) { $connection = 'mysql'; $settings = config("database.connections.$connection"); config([ 'database' => [ 'default' => $connection, 'connections' => [ $connection => array_merge($settings, [ 'driver' => $connection, 'host' => $request->input('database_hostname'), 'database' => $request->input('database_name'), 'username' => $request->input('database_username'), 'password' => $request->input('database_password'), ]), ], ], ]); DB::purge(); try { DB::connection()->getPdo(); return true; } catch (Exception $e) { return false; } } }
Editor is loading...