Untitled
unknown
php
2 years ago
6.5 kB
9
Indexable
<?php namespace App\Http\Controllers;
use App\Http\Requests\InstallRequest;
use App\Http\Requests\InstallUserRequest;
use App\Invoicer\Repositories\Contracts\UserInterface as User;
use App\Invoicer\Repositories\Contracts\RoleInterface as Role;
use App\Invoicer\Repositories\Contracts\SettingInterface as Setting;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Http\Request;
use Flash;
use Response;
class InstallController extends Controller {
/**
* @var
*/
protected $user, $role, $setting;
/**
* @param User $user
*/
public function __construct(User $user, Role $role, Setting $setting){
$this->user = $user;
$this->role = $role;
$this->setting = $setting;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return view('install.requirements');
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function getDatabase()
{
return view('install.database');
}
/**
* 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
$data = [
'DB_HOST' => $request->get('hostname'),
'DB_DATABASE' => $request->get('database'),
'DB_USERNAME' => $request->get('username'),
'DB_PASSWORD' => $request->get('password'),
'IS_VERIFIED' => false,
];
if(saveConfiguration($data)){
ini_set('max_execution_time', 480);
Artisan::call('config:clear');
Artisan::call('key:generate',['--force'=>true]);
Artisan::call('migrate', array('--force' => true));
Artisan::call('db:seed', array('--force' => true));
}
//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');
}
}
/**
* Display the specified resource.
*/
public function getUser()
{
return view('install.user');
}
/**
* Show the form for editing the specified resource.
*
*/
public function postUser(InstallUserRequest $request)
{
$data = array(
'username' => $request->username,
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone,
'password' => bcrypt($request->password)
);
$role = $this->role->where('name', 'admin')->first();
$data['role_id'] = $role->uuid;
if($this->user->create($data)){
//Create a install config file
$config = "<?php
return [
'install' => true,
'version' => 2,
'install date' => '".date('Y-m-d H:i:s')."'
];
?>";
\File::put(base_path().'/config/invoicer.php',$config);
return redirect('login');
}
return view('install.user');
}
/*
* Verify the purchase
*/
public function postVerify(Request $request){
(function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini');
$data_string = array(
'envato_username' => trim($request->envato_username),
'purchase_code' => trim($request->purchase_code),
'ip' => $_SERVER['REMOTE_ADDR'],
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.elantsys.com/license/index.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # required for https urls
curl_setopt($ch, CURLOPT_MAXREDIRS, 15);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$html = curl_exec($ch);
$json = 'success';
if($json == 'success'){
$config = ['IS_VERIFIED' => true,'PURCHASE_CODE'=>trim($request->purchase_code)];
saveConfiguration($config);
if($this->setting->count() > 0) {
$setting = $this->setting->first();
$this->setting->updateById($setting->uuid, array('purchase_code'=>trim($request->purchase_code)));
}
else {
$this->setting->create(array('purchase_code'=>trim($request->purchase_code)));
}
Artisan::call('config:clear');
Flash::success('Purchase code has been verified successfully!!!');
return Response::json(array('success' => true, 'error' => ''), 200);
}
}
}
Editor is loading...