PageRenderTime 66ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Backend/Modules/Analytics/Form/SettingsStepAuthConfigFileType.php

http://github.com/forkcms/forkcms
PHP | 96 lines | 59 code | 16 blank | 21 comment | 3 complexity | c51b23b02c8a2b5df27e61a9e8d4f3cb MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, MIT, AGPL-3.0, LGPL-2.1, BSD-3-Clause
  1. <?php
  2. namespace Backend\Modules\Analytics\Form;
  3. use Backend\Core\Engine\Form;
  4. use Backend\Core\Engine\Language;
  5. use Backend\Core\Engine\TwigTemplate;
  6. use Common\ModulesSettings;
  7. /**
  8. * A form to change the settings of the analytics module
  9. */
  10. final class SettingsStepAuthConfigFileType implements SettingsStepType
  11. {
  12. /** @var Form */
  13. private $form;
  14. /** @var ModulesSettings */
  15. private $settings;
  16. /**
  17. * @param string $name
  18. * @param ModulesSettings $settings
  19. */
  20. public function __construct($name, ModulesSettings $settings)
  21. {
  22. $this->form = new Form($name);
  23. $this->settings = $settings;
  24. $this->build();
  25. }
  26. /**
  27. * @param TwigTemplate $template
  28. */
  29. public function parse(TwigTemplate $template)
  30. {
  31. $this->form->parse($template);
  32. }
  33. /**
  34. * @return bool
  35. */
  36. public function handle()
  37. {
  38. $this->form->cleanupFields();
  39. if (!$this->form->isSubmitted() || !$this->isValid()) {
  40. return false;
  41. }
  42. $certificate = base64_encode(file_get_contents($this->form->getField('certificate')->getTempFileName()));
  43. $this->settings->set(
  44. 'Analytics',
  45. 'certificate',
  46. $certificate
  47. );
  48. $this->settings->set(
  49. 'Analytics',
  50. 'email',
  51. $this->form->getField('email')->getValue()
  52. );
  53. return true;
  54. }
  55. /**
  56. * Build up the form
  57. */
  58. private function build()
  59. {
  60. $this->form->addFile('certificate');
  61. $this->form->addText('email');
  62. }
  63. /**
  64. * @return bool
  65. */
  66. private function isValid()
  67. {
  68. $fileField = $this->form->getField('certificate');
  69. $emailField = $this->form->getField('email');
  70. if ($fileField->isFilled(Language::err('FieldIsRequired'))) {
  71. $fileField->isAllowedExtension(
  72. ['p12'],
  73. Language::err('P12Only')
  74. );
  75. }
  76. $emailField->isFilled(Language::err('FieldIsRequired'));
  77. $emailField->isEmail(Language::err('EmailIsInvalid'));
  78. return $this->form->isCorrect();
  79. }
  80. }