SetupController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace Typemill\Controllers;
  3. use \Symfony\Component\Yaml\Yaml;
  4. use Typemill\Models\Validation;
  5. use Typemill\Models\User;
  6. use Typemill\Models\Write;
  7. class SetupController extends Controller
  8. {
  9. # redirect if visit /setup route
  10. public function redirect($request, $response)
  11. {
  12. return $response->withRedirect($this->c->router->pathFor('setup.show'));
  13. }
  14. public function show($request, $response, $args)
  15. {
  16. /* make some checks befor you install */
  17. $checkFolder = new Write();
  18. $systemcheck = array();
  19. # check folders and create them if possible
  20. try{ $checkFolder->checkPath('settings'); }catch(\Exception $e){ $systemcheck['error'][] = $e->getMessage(); }
  21. try{ $checkFolder->checkPath('settings/users'); }catch(\Exception $e){ $systemcheck['error'][] = $e->getMessage(); }
  22. try{ $checkFolder->checkPath('content'); }catch(\Exception $e){ $systemcheck['error'][] = $e->getMessage(); }
  23. try{ $checkFolder->checkPath('cache'); }catch(\Exception $e){ $systemcheck['error'][] = $e->getMessage(); }
  24. try{ $checkFolder->checkPath('media'); }catch(\Exception $e){ $systemcheck['error'][] = $e->getMessage(); }
  25. # check php-version
  26. if (version_compare(phpversion(), '7.0.0', '<')) {
  27. $systemcheck['error'][] = 'The PHP-version of your server is ' . phpversion() . ' and Typemill needs at least 7.0.0';
  28. }
  29. /* check if mod rewrite is enabled, does not work with PHP-fpm or NGINX
  30. $modules = apache_get_modules();
  31. if(!in_array('mod_rewrite', $modules))
  32. {
  33. $systemcheck['error'][] = 'The apache module "mod_rewrite" is not enabled.';
  34. }
  35. */
  36. # check if GD extension is enabled
  37. if(!extension_loaded('gd')){
  38. $systemcheck['error'][] = 'The php-extension GD for image manipulation is not enabled.';
  39. }
  40. $setuperrors = empty($systemcheck) ? false : 'Some system requirements for Typemill are missing.';
  41. $systemcheck = empty($systemcheck) ? false : $systemcheck;
  42. return $this->render($response, 'auth/setup.twig', array( 'messages' => $setuperror, 'systemcheck' => $systemcheck ));
  43. }
  44. public function create($request, $response, $args)
  45. {
  46. if($request->isPost())
  47. {
  48. $params = $request->getParams();
  49. $validate = new Validation();
  50. $user = new User();
  51. /* set user as admin */
  52. $params['userrole'] = 'administrator';
  53. /* get userroles for validation */
  54. $userroles = $user->getUserroles();
  55. /* validate user */
  56. if($validate->newUser($params, $userroles))
  57. {
  58. $userdata = array('username' => $params['username'], 'email' => $params['email'], 'userrole' => $params['userrole'], 'password' => $params['password']);
  59. /* create initial user */
  60. $username = $user->createUser($userdata);
  61. if($username)
  62. {
  63. /* login user */
  64. $user->login($username);
  65. # create initial settings file
  66. \Typemill\Settings::createSettings();
  67. return $response->withRedirect($this->c->router->pathFor('setup.welcome'));
  68. }
  69. }
  70. $this->c->flash->addMessage('error', 'Please check your input and try again');
  71. return $response->withRedirect($this->c->router->pathFor('setup.show'));
  72. }
  73. }
  74. public function welcome($request, $response, $args)
  75. {
  76. /* store updated settings */
  77. \Typemill\Settings::updateSettings(array('welcome' => false));
  78. return $this->render($response, 'auth/welcome.twig', array());
  79. }
  80. }