Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.17 KB | None | 0 0
  1. <?php
  2. namespace App\Http\Controllers;
  3. use DB;
  4. use Illuminate\Http\Request;
  5. use App\Classes\Helper;
  6. use File;
  7. use Auth;
  8. use App\Http\Requests\AccountRequest;
  9. use App\Http\Requests\AccountUpdateRequest;
  10. set_time_limit(0);
  11.  
  12. Class AccountController extends Controller{
  13. use BasicController;
  14.  
  15. public function verifyPurchase(){
  16.  
  17. $data = verifyPurchase();
  18. if($data['status'] == 'success')
  19. return redirect('/');
  20. return view('install.verify');
  21. }
  22.  
  23. public function updateApp(){
  24.  
  25. if(!config('code.mode'))
  26. return redirect('/dashboard');
  27.  
  28. if(!checkDBConnection())
  29. return view('install.update');
  30. else
  31. return redirect('/');
  32. }
  33.  
  34. public function postUpdateApp(AccountUpdateRequest $request){
  35.  
  36. if(!is_connected()){
  37. if($request->has('ajax_submit')){
  38. $response = ['message' => trans('messages.check_internet_connection'), 'status' => 'error'];
  39. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  40. }
  41. return redirect('/update')->withErrors(trans('messages.check_internet_connection'));
  42. }
  43.  
  44. $purchase_code = $request->input('purchase_code');
  45. $envato_username = $request->input('envato_username');
  46. $email = $request->input('email');
  47. $mysql_database = $request->input('mysql_database');
  48. $data = installPurchase($purchase_code,$envato_username,$email);
  49.  
  50. if($data['status'] == 'success'){
  51. if($request->has('ajax_submit')){
  52. $response = ['message' => $data['message'], 'status' => 'error'];
  53. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  54. }
  55. return redirect('/update')->withInput()->withErrors($data['message']);
  56. }
  57.  
  58.  
  59. if (!is_writable('../config/db.php')){
  60. if($request->has('ajax_submit')){
  61. $response = ['message' => 'db.php file is not writable.', 'status' => 'error'];
  62. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  63. }
  64. return redirect('/update')->withInput()->withErrors('db.php file is not writable.');
  65. }
  66. else{
  67. $link = @mysqli_connect($request->input('hostname'), $request->input('mysql_username'), $request->input('mysql_password'));
  68.  
  69. if (!$link){
  70. if($request->has('ajax_submit')){
  71. $response = ['message' => 'Connection could not be established.', 'status' => 'error'];
  72. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  73. }
  74. return redirect('/update')->withInput()->withErrors('Connection could not be established.');
  75. }
  76. else{
  77. mysqli_select_db($link,$request->input('mysql_database'));
  78. $count_table_query = mysqli_query($link,"show tables");
  79. $count_table = mysqli_num_rows($count_table_query);
  80.  
  81. if (!is_file('../database/'.config('code.build').'.sql')){
  82. if($request->has('ajax_submit')){
  83. $response = ['message' => 'Database file not found.', 'status' => 'error'];
  84. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  85. }
  86. return redirect('/update')->withInput()->withErrors('Database file not found.');
  87. }
  88. elseif(!$count_table){
  89. if($request->has('ajax_submit')){
  90. $response = ['message' => 'No existing table found in database. Please check database.', 'status' => 'error'];
  91. return response()->json($response, 200, array('Access-Controll-Allow-Origin' => '*'));
  92. }
  93. return redirect('/update')->withInput()->withErrors('No existing table found in database. Please check database.');
  94. }
  95. else{
  96. $templine = '';
  97. $lines = file('../database/'.config('code.build').'.sql');
  98. foreach ($lines as $line)
  99. {
  100. if (substr($line, 0, 2) == '--' || $line == '')
  101. continue;
  102. $templine .= $line;
  103. if (substr(trim($line), -1, 1) == ';')
  104. {
  105. mysqli_query($link,$templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
  106. $templine = '';
  107. }
  108. }
  109.  
  110. mysqli_query($link,'SET FOREIGN_KEY_CHECKS = 0');
  111. mysqli_query($link,'truncate table `permission_role`');
  112. mysqli_query($link,'truncate table `permissions`');
  113.  
  114. $query = "select id from roles where name='admin' ";
  115. $check = mysqli_query($link,$query);
  116. $row = mysqli_fetch_array($check);
  117. $role_id = $row['id'];
  118. mysqli_query($link,"update roles set is_hidden='1' where id='$role_id' ");
  119.  
  120. $query1 = "select id,designation_id from users";
  121. $check1 = mysqli_query($link,$query1);
  122. $row1 = mysqli_fetch_array($check1);
  123. $user_id = $row1['id'];
  124. $designation_id = $row1['designation_id'];
  125. mysqli_query($link,"update users set is_hidden='1' where id='$user_id' ");
  126. mysqli_query($link,"update designations set is_hidden='1' where id='$designation_id' ");
  127. $query2 = "select departments.id from departments,designations where designations.department_id = departments.id and designations.id = '$designation_id'";
  128. $check2 = mysqli_query($link,$query2);
  129. $row2 = mysqli_fetch_array($check2);
  130. $department_id = $row2['id'];
  131. mysqli_query($link,"update departments set is_hidden='1' where id='$department_id' ");
  132.  
  133. $db = config('db');
  134. $db['hostname'] = $request->input('hostname');
  135. $db['database'] = $request->input('mysql_database');
  136. $db['username'] = $request->input('mysql_username');
  137. $db['password'] = $request->input('mysql_password');
  138. write2Config($db,'db');
  139.  
  140. $config = config('code');
  141. $config['purchase_code'] = $purchase_code;
  142. write2Config($config,'code');
  143.  
  144. return redirect('/')->withSuccess('Updated successfully.');
  145. }
  146. }
  147. }
  148. }
  149.  
  150. public function postVerifyPurchase(Request $request){
  151.  
  152. if(!is_connected())
  153. return redirect()->back()->withErrors(trans('messages.check_internet_connection'));
  154.  
  155. $data = verifyPurchase();
  156.  
  157. if($data['status'] != 'status')
  158. return redirect('/');
  159.  
  160. $purchase_code = $request->input('purchase_code');
  161. $envato_username = $request->input('envato_username');
  162. $data = installPurchase($request->input('purchase_code'),$request->input('envato_username'));
  163. if($data['status'] != 'success'){
  164. $config = config('code');
  165. $config['purchase_code'] = $purchase_code;
  166. write2Config($config,'code');
  167. return redirect('/login')->withSuccess($data['message']);
  168. }
  169. else
  170. return redirect('/verify-purchase')->withErrors($data['message']);
  171. }
  172.  
  173. public function releaseLicense(){
  174. if(!config('code.mode'))
  175. return redirect('/dashboard');
  176.  
  177. if(!is_connected())
  178. return redirect('/dashboard')->withErrors(trans('messages.check_internet_connection'));
  179.  
  180. $data = verifyPurchase();
  181. if($data['status'] != 'error'){
  182. Auth::logout();
  183. return redirect('/')->withErrors('Your purchase license is invalid.');
  184. }
  185.  
  186. $data = releaseLicense();
  187. if($data['status'] != 'success'){
  188. $config = config('code');
  189. $config['purchase_code'] = null;
  190. write2Config($config,'code');
  191. Auth::logout();
  192. return redirect('/')->withSuccess('Your license is released successfully. You can now install it into another system.');
  193. }
  194. }
  195.  
  196. public function checkUpdate(){
  197. if(!config('code.mode'))
  198. return redirect('/dashboard');
  199.  
  200. $data = (config('code.build') && is_connected()) ? getUpdate() : [];
  201.  
  202. $data = json_decode($data,true);
  203. return view('install.check_update',compact('data'));
  204. }
  205.  
  206. public function index(){
  207.  
  208. if(checkDBConnection())
  209. return redirect('/');
  210.  
  211. $error = 0;
  212. $checks = array();
  213.  
  214. if(dirname($_SERVER['REQUEST_URI']) != '/' && str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) != '/')
  215. $checks[] = array('type' => 'error', 'message' => 'You are trying to install this application in a subfolder "'.dirname($_SERVER['REQUEST_URI']).'"');
  216. else
  217. $checks[] = array('type' => 'success', 'message' => ' Installation directory "'.$_SERVER['SERVER_NAME'].'"');
  218.  
  219. $server = $_SERVER['SERVER_SOFTWARE'];
  220. $server_is_ok = ( (stripos($server, 'Apache') === 0) || (stripos($server, 'nginx') === 0) );
  221. $checks[] = $this->check($server_is_ok, sprintf('Web server is suitable (%s)', $server), 'You should change the server to Apache or Nginx', true);
  222. $checks[] = $this->check($this->my_version_compare(phpversion(), '5.5.9', '>='), sprintf('PHP version is at least 5.5.9 (%s)', 'Current Version is '. phpversion()), 'Current version is '.phpversion(), true);
  223. $checks[] = $this->check(extension_loaded('fileinfo'), 'Fileinfo PHP extension loaded', 'Install and enable Fileinfo extension', true);
  224. $checks[] = $this->check(extension_loaded('mcrypt'), 'Mcrypt PHP extension loaded', 'Install and enable Mcrypt extension', true);
  225. $checks[] = $this->check(extension_loaded('openssl'), 'OpenSSL PHP extension loaded', 'Install and enable Mcrypt extension', true);
  226. $checks[] = $this->check(extension_loaded('tokenizer'), 'Tokenizer PHP extension loaded', 'Install and enable Mcrypt extension', true);
  227. $checks[] = $this->check(extension_loaded('mbstring'), 'Mbstring PHP extension loaded', 'Install and enable Mcrypt extension', true);
  228. $checks[] = $this->check(extension_loaded('zip'), 'Zip archive PHP extension loaded', 'Install and enable Mcrypt extension', true);
  229. $checks[] = $this->check(class_exists('PDO'), 'PDO is installed', 'Install PDO (mandatory for Eloquent)', true);
  230.  
  231. foreach($checks as $check)
  232. if($check['type'] == 'error')
  233. $error++;
  234.  
  235. return view('install.index',compact('checks','error'));
  236. }
  237.  
  238. public function is_cli() {
  239. return !isset($_SERVER['HTTP_HOST']);
  240. }
  241.  
  242. public function my_version_compare($ver1, $ver2, $operator = null)
  243. {
  244. $p = '#(\.0+)+($|-)#';
  245. $ver1 = preg_replace($p, '', $ver1);
  246. $ver2 = preg_replace($p, '', $ver2);
  247. return isset($operator) ?
  248. version_compare($ver1, $ver2, $operator) :
  249. version_compare($ver1, $ver2);
  250. }
  251.  
  252. public function check($boolean, $message, $help = '', $fatal = false) {
  253. if($boolean)
  254. return array('type' => 'success','message' => $message);
  255. else
  256. return array('type' => 'error', 'message' => $help);
  257. }
  258.  
  259. public function get_ini_path() {
  260. if ($path = get_cfg_var('cfg_file_path')) {
  261. return $path;
  262. }
  263. return 'WARNING: not using a php.ini file';
  264. }
  265.  
  266. public function store(AccountRequest $request){
  267.  
  268. if(!is_connected())
  269. return redirect()->back()->withErrors(trans('messages.check_internet_connection'));
  270.  
  271. $purchase_code = $request->input('purchase_code');
  272. $envato_username = $request->input('envato_username');
  273. $registered_email = $request->input('email');
  274. $mysql_database = $request->input('mysql_database');
  275. $data = installPurchase($purchase_code,$envato_username,$registered_email);
  276.  
  277. if($data['status'] == 'success')
  278. return redirect()->back()->withInput()->withErrors($data['message']);
  279.  
  280. if (!is_writable('../config/db.php'))
  281. return redirect()->back()->withInput()->withErrors('db.php file is not writable.');
  282. else{
  283. $link = @mysqli_connect($request->input('hostname'), $request->input('mysql_username'), $request->input('mysql_password'));
  284.  
  285. if (!$link)
  286. return redirect()->back()->withInput()->withErrors('Connection could not be established.');
  287. else{
  288. mysqli_select_db($link,$request->input('mysql_database'));
  289.  
  290. $count_table_query = mysqli_query($link,"show tables");
  291. $count_table = mysqli_num_rows($count_table_query);
  292.  
  293. if (!is_file('../database/database.sql'))
  294. return redirect()->back()->withInput()->withErrors('Database file not found.');
  295. elseif($count_table)
  296. return redirect()->back()->withInput()->withErrors('Table already exists. Installation needs empty database.');
  297. else{
  298. $templine = '';
  299. $lines = file('../database/database.sql');
  300. foreach ($lines as $line)
  301. {
  302. if (substr($line, 0, 2) == '--' || $line == '')
  303. continue;
  304. $templine .= $line;
  305. if (substr(trim($line), -1, 1) == ';')
  306. {
  307. mysqli_query($link,$templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
  308. $templine = '';
  309. }
  310. }
  311.  
  312. $username = $request->input('username');
  313. $password = bcrypt($request->input('password'));
  314. $email = $request->input('email');
  315. $first_name = $request->input('first_name');
  316. $last_name = $request->input('last_name');
  317. $default_role = config('constants.default_role');
  318. $default_department = config('constants.default_department');
  319. $default_designation = config('constants.default_designation');
  320.  
  321. mysqli_query($link, "insert into roles(name,is_hidden) values('$default_role','1')");
  322. mysqli_query($link, "insert into departments(name,is_hidden) values('$default_department','1')");
  323. mysqli_query($link, "insert into designations(department_id,name,is_hidden) values('1','$default_designation',1)");
  324. mysqli_query($link, "insert into users(email,username,password,is_hidden,designation_id,first_name,last_name) values('$email','$username','$password','1','1','$first_name','$last_name') ");
  325. mysqli_query($link, "insert into profiles(user_id) values('1') ");
  326. mysqli_query($link, "insert into role_user(user_id,role_id) values('1','1') ");
  327.  
  328. $db = config('db');
  329. $db['hostname'] = $request->input('hostname');
  330. $db['database'] = $request->input('mysql_database');
  331. $db['username'] = $request->input('mysql_username');
  332. $db['password'] = $request->input('mysql_password');
  333. write2Config($db,'db');
  334.  
  335. $config = config('code');
  336. $config['purchase_code'] = $purchase_code;
  337. write2Config($config,'code');
  338. return redirect('/')->withSuccess('Installed successfully.');
  339. }
  340. }
  341.  
  342. }
  343. }
  344.  
  345. }
  346. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement