SetupController.php 3.2 KB

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