/** * Store a newly created resource in storage. * @param InstallRequest $request * @return string */ public function postDatabase(InstallRequest $request) { // Connect to the database try { $pdo = new \PDO("mysql:host=" . $request->get('hostname'), $request->get('username'), $request->get('password')); //Create Database if not already created $pdo->exec("CREATE DATABASE IF NOT EXISTS " . $request->get('database')); $options = ['host' => $request->get('hostname'), 'database' => $request->get('database'), 'username' => $request->get('username'), 'password' => $request->get('password')]; $default = \Config::get("database.connections.mysql"); // Loop through our default array and update options if we have non-defaults foreach ($default as $item => $value) { $default[$item] = isset($options[$item]) ? $options[$item] : $default[$item]; } // Set the temporary configuration \Config::set("database.connections.mysql", $default); //Edit config database.php file and add new database details $template_path = base_path() . '/config/database.sample.php'; // Open the file $database_file = file_get_contents($template_path); $new = str_replace("%DB_HOST%", $request->get('hostname'), $database_file); $new = str_replace("%DB_DATABASE%", $request->get('database'), $new); $new = str_replace("%DB_USERNAME%", $request->get('username'), $new); $new = str_replace("%DB_PASSWORD%", $request->get('password'), $new); // Write the contents back to the file if (file_put_contents(base_path() . '/config/database.php', $new)) { //Execute the database migrations using artisan ini_set('max_execution_time', 90); \Artisan::call('migrate:install'); \Artisan::call('migrate', array('--force' => true)); } //Create a install config file $config = "<?php return array('install' => true,\n 'version' => 1,\n 'install date' => '" . date('Y-m-d H:i:s') . "',\n );"; \File::put('../config/cfi.php', $config); //Redirect to the next step return redirect('install/user'); } catch (\Exception $e) { \Flash::error('An installation error occured <br/><b> Reason:</b> ' . $e->getMessage()); return view('install.database'); } }
public function store(InstallRequest $request) { $url = "http://verify.wmlab.in/index.php?envato_username="******"&purchase_code=" . $request->input('purchase_code') . "&product=" . config('constants.ITEM_CODE'); if (!file_get_contents($url)) { return redirect()->back()->withInput()->withErrors("We can't verify you as our customer."); } if (!is_writable('../config/database.php')) { return redirect()->back()->withInput()->withErrors('database.php file is not writable.'); } else { $link = @mysqli_connect($request->input('hostname'), $request->input('mysql_username'), $request->input('mysql_password')); if (!$link) { return redirect()->back()->withInput()->withErrors('Connection could not be established.'); } else { mysqli_select_db($link, $request->input('mysql_database')); if (!is_file('../database/database.sql')) { return redirect()->back()->withInput()->withErrors('Database file not found.'); } else { $templine = ''; $lines = file('../database/database.sql'); foreach ($lines as $line) { if (substr($line, 0, 2) == '--' || $line == '') { continue; } $templine .= $line; if (substr(trim($line), -1, 1) == ';') { mysqli_query($link, $templine) or print 'Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />'; $templine = ''; } } $username = $request->input('username'); $password = bcrypt($request->input('password')); $email = $request->input('email'); mysqli_query($link, "insert into roles(name,display_name) values('admin','Admin'),('user','User'),('staff','Staff') "); mysqli_query($link, "insert into departments(department_name) values('Support')"); mysqli_query($link, "insert into users(email,username,password,confirmed) values('{$email}','{$username}','{$password}','1') "); mysqli_query($link, "insert into profile(user_id,department_id) values('1','1') "); mysqli_query($link, "insert into role_user(user_id,role_id) values('1','1') "); $db_file = file_get_contents('../config/database.php'); $db_file = str_replace('%hostname%', $request->input('hostname'), $db_file); $db_file = str_replace('%mysql_username%', $request->input('mysql_username'), $db_file); $db_file = str_replace('%mysql_password%', $request->input('mysql_password'), $db_file); $db_file = str_replace('%mysql_database%', $request->input('mysql_database'), $db_file); file_put_contents('../config/database.php', $db_file); $config = Helper::getConfiguration(); $config['installation_path'] = '0'; $filename = base_path() . config('paths.CONFIG_PATH'); File::put($filename, var_export($config, true)); File::prepend($filename, '<?php return '); File::append($filename, ';'); return redirect('/')->withSuccess('Installed successfully.'); } } } }