SetupController.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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, does not work with PHP-fpm or NGINX
  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. */
  31. # check if GD extension is enabled
  32. if(!extension_loaded('gd')){
  33. $systemcheck['error'][] = 'The php-extension GD for image manipulation is not enabled.';
  34. }
  35. $setuperrors = empty($systemcheck) ? false : 'Some system requirements for Typemill are missing.';
  36. $systemcheck = empty($systemcheck) ? false : $systemcheck;
  37. return $this->render($response, 'auth/setup.twig', array( 'messages' => $setuperror, 'systemcheck' => $systemcheck ));
  38. }
  39. public function create($request, $response, $args)
  40. {
  41. if($request->isPost())
  42. {
  43. $params = $request->getParams();
  44. $validate = new Validation();
  45. $user = new User();
  46. /* set user as admin */
  47. $params['userrole'] = 'administrator';
  48. /* get userroles for validation */
  49. $userroles = $user->getUserroles();
  50. /* validate user */
  51. if($validate->newUser($params, $userroles))
  52. {
  53. $userdata = array('username' => $params['username'], 'email' => $params['email'], 'userrole' => $params['userrole'], 'password' => $params['password']);
  54. /* create initial user */
  55. $username = $user->createUser($userdata);
  56. if($username)
  57. {
  58. /* login user */
  59. $user->login($username);
  60. # create initial settings file
  61. \Typemill\Settings::createSettings();
  62. return $response->withRedirect($this->c->router->pathFor('setup.welcome'));
  63. }
  64. }
  65. $this->c->flash->addMessage('error', 'Please check your input and try again');
  66. return $response->withRedirect($this->c->router->pathFor('setup.show'));
  67. }
  68. }
  69. public function welcome($request, $response, $args)
  70. {
  71. /* store updated settings */
  72. \Typemill\Settings::updateSettings(array('welcome' => false));
  73. return $this->render($response, 'auth/welcome.twig', array());
  74. }
  75. }