Templates
3 years ago
FormTemplate.php
2 years ago
TemplateRepository.php
3 years ago
index.php
3 years ago
TemplateRepository.php
183 lines
| 1 | <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing |
| 2 | |
| 3 | namespace MailPoet\Form\Templates; |
| 4 | |
| 5 | if (!defined('ABSPATH')) exit; |
| 6 | |
| 7 | |
| 8 | use MailPoet\Form\Templates\Templates\InitialForm; |
| 9 | use MailPoet\Form\Templates\Templates\Template10BelowPages; |
| 10 | use MailPoet\Form\Templates\Templates\Template10FixedBar; |
| 11 | use MailPoet\Form\Templates\Templates\Template10Popup; |
| 12 | use MailPoet\Form\Templates\Templates\Template10SlideIn; |
| 13 | use MailPoet\Form\Templates\Templates\Template10Widget; |
| 14 | use MailPoet\Form\Templates\Templates\Template11BelowPages; |
| 15 | use MailPoet\Form\Templates\Templates\Template11FixedBar; |
| 16 | use MailPoet\Form\Templates\Templates\Template11Popup; |
| 17 | use MailPoet\Form\Templates\Templates\Template11SlideIn; |
| 18 | use MailPoet\Form\Templates\Templates\Template11Widget; |
| 19 | use MailPoet\Form\Templates\Templates\Template12BelowPages; |
| 20 | use MailPoet\Form\Templates\Templates\Template12FixedBar; |
| 21 | use MailPoet\Form\Templates\Templates\Template12Popup; |
| 22 | use MailPoet\Form\Templates\Templates\Template12SlideIn; |
| 23 | use MailPoet\Form\Templates\Templates\Template12Widget; |
| 24 | use MailPoet\Form\Templates\Templates\Template13BelowPages; |
| 25 | use MailPoet\Form\Templates\Templates\Template13FixedBar; |
| 26 | use MailPoet\Form\Templates\Templates\Template13Popup; |
| 27 | use MailPoet\Form\Templates\Templates\Template13SlideIn; |
| 28 | use MailPoet\Form\Templates\Templates\Template13Widget; |
| 29 | use MailPoet\Form\Templates\Templates\Template14BelowPages; |
| 30 | use MailPoet\Form\Templates\Templates\Template14FixedBar; |
| 31 | use MailPoet\Form\Templates\Templates\Template14Popup; |
| 32 | use MailPoet\Form\Templates\Templates\Template14SlideIn; |
| 33 | use MailPoet\Form\Templates\Templates\Template14Widget; |
| 34 | use MailPoet\Form\Templates\Templates\Template17BelowPages; |
| 35 | use MailPoet\Form\Templates\Templates\Template17FixedBar; |
| 36 | use MailPoet\Form\Templates\Templates\Template17Popup; |
| 37 | use MailPoet\Form\Templates\Templates\Template17SlideIn; |
| 38 | use MailPoet\Form\Templates\Templates\Template17Widget; |
| 39 | use MailPoet\Form\Templates\Templates\Template18BelowPages; |
| 40 | use MailPoet\Form\Templates\Templates\Template18FixedBar; |
| 41 | use MailPoet\Form\Templates\Templates\Template18Popup; |
| 42 | use MailPoet\Form\Templates\Templates\Template18SlideIn; |
| 43 | use MailPoet\Form\Templates\Templates\Template18Widget; |
| 44 | use MailPoet\Form\Templates\Templates\Template1BelowPages; |
| 45 | use MailPoet\Form\Templates\Templates\Template1FixedBar; |
| 46 | use MailPoet\Form\Templates\Templates\Template1Popup; |
| 47 | use MailPoet\Form\Templates\Templates\Template1SlideIn; |
| 48 | use MailPoet\Form\Templates\Templates\Template1Widget; |
| 49 | use MailPoet\Form\Templates\Templates\Template3BelowPages; |
| 50 | use MailPoet\Form\Templates\Templates\Template3FixedBar; |
| 51 | use MailPoet\Form\Templates\Templates\Template3Popup; |
| 52 | use MailPoet\Form\Templates\Templates\Template3SlideIn; |
| 53 | use MailPoet\Form\Templates\Templates\Template3Widget; |
| 54 | use MailPoet\Form\Templates\Templates\Template4BelowPages; |
| 55 | use MailPoet\Form\Templates\Templates\Template4FixedBar; |
| 56 | use MailPoet\Form\Templates\Templates\Template4Popup; |
| 57 | use MailPoet\Form\Templates\Templates\Template4SlideIn; |
| 58 | use MailPoet\Form\Templates\Templates\Template4Widget; |
| 59 | use MailPoet\Form\Templates\Templates\Template6BelowPages; |
| 60 | use MailPoet\Form\Templates\Templates\Template6FixedBar; |
| 61 | use MailPoet\Form\Templates\Templates\Template6Popup; |
| 62 | use MailPoet\Form\Templates\Templates\Template6SlideIn; |
| 63 | use MailPoet\Form\Templates\Templates\Template6Widget; |
| 64 | use MailPoet\Form\Templates\Templates\Template7BelowPages; |
| 65 | use MailPoet\Form\Templates\Templates\Template7FixedBar; |
| 66 | use MailPoet\Form\Templates\Templates\Template7Popup; |
| 67 | use MailPoet\Form\Templates\Templates\Template7SlideIn; |
| 68 | use MailPoet\Form\Templates\Templates\Template7Widget; |
| 69 | use MailPoet\Settings\SettingsController; |
| 70 | use MailPoet\UnexpectedValueException; |
| 71 | use MailPoet\Util\CdnAssetUrl; |
| 72 | use MailPoet\WP\Functions as WPFunctions; |
| 73 | |
| 74 | class TemplateRepository { |
| 75 | const INITIAL_FORM_TEMPLATE = InitialForm::ID; |
| 76 | |
| 77 | /** @var CdnAssetUrl */ |
| 78 | private $cdnAssetUrl; |
| 79 | |
| 80 | /** @var WPFunctions */ |
| 81 | private $wp; |
| 82 | |
| 83 | /** @var SettingsController */ |
| 84 | private $settings; |
| 85 | |
| 86 | |
| 87 | private $templates = [ |
| 88 | InitialForm::ID => InitialForm::class, |
| 89 | Template1BelowPages::ID => Template1BelowPages::class, |
| 90 | Template1FixedBar::ID => Template1FixedBar::class, |
| 91 | Template1Popup::ID => Template1Popup::class, |
| 92 | Template1SlideIn::ID => Template1SlideIn::class, |
| 93 | Template1Widget::ID => Template1Widget::class, |
| 94 | Template3BelowPages::ID => Template3BelowPages::class, |
| 95 | Template3FixedBar::ID => Template3FixedBar::class, |
| 96 | Template3Popup::ID => Template3Popup::class, |
| 97 | Template3SlideIn::ID => Template3SlideIn::class, |
| 98 | Template3Widget::ID => Template3Widget::class, |
| 99 | Template4BelowPages::ID => Template4BelowPages::class, |
| 100 | Template4FixedBar::ID => Template4FixedBar::class, |
| 101 | Template4Popup::ID => Template4Popup::class, |
| 102 | Template4SlideIn::ID => Template4SlideIn::class, |
| 103 | Template4Widget::ID => Template4Widget::class, |
| 104 | Template6BelowPages::ID => Template6BelowPages::class, |
| 105 | Template6FixedBar::ID => Template6FixedBar::class, |
| 106 | Template6Popup::ID => Template6Popup::class, |
| 107 | Template6SlideIn::ID => Template6SlideIn::class, |
| 108 | Template6Widget::ID => Template6Widget::class, |
| 109 | Template7BelowPages::ID => Template7BelowPages::class, |
| 110 | Template7FixedBar::ID => Template7FixedBar::class, |
| 111 | Template7Popup::ID => Template7Popup::class, |
| 112 | Template7SlideIn::ID => Template7SlideIn::class, |
| 113 | Template7Widget::ID => Template7Widget::class, |
| 114 | Template10BelowPages::ID => Template10BelowPages::class, |
| 115 | Template10FixedBar::ID => Template10FixedBar::class, |
| 116 | Template10Popup::ID => Template10Popup::class, |
| 117 | Template10SlideIn::ID => Template10SlideIn::class, |
| 118 | Template10Widget::ID => Template10Widget::class, |
| 119 | Template11BelowPages::ID => Template11BelowPages::class, |
| 120 | Template11FixedBar::ID => Template11FixedBar::class, |
| 121 | Template11Popup::ID => Template11Popup::class, |
| 122 | Template11SlideIn::ID => Template11SlideIn::class, |
| 123 | Template11Widget::ID => Template11Widget::class, |
| 124 | Template12BelowPages::ID => Template12BelowPages::class, |
| 125 | Template12FixedBar::ID => Template12FixedBar::class, |
| 126 | Template12Popup::ID => Template12Popup::class, |
| 127 | Template12SlideIn::ID => Template12SlideIn::class, |
| 128 | Template12Widget::ID => Template12Widget::class, |
| 129 | Template13BelowPages::ID => Template13BelowPages::class, |
| 130 | Template13FixedBar::ID => Template13FixedBar::class, |
| 131 | Template13Popup::ID => Template13Popup::class, |
| 132 | Template13SlideIn::ID => Template13SlideIn::class, |
| 133 | Template13Widget::ID => Template13Widget::class, |
| 134 | Template14BelowPages::ID => Template14BelowPages::class, |
| 135 | Template14FixedBar::ID => Template14FixedBar::class, |
| 136 | Template14Popup::ID => Template14Popup::class, |
| 137 | Template14SlideIn::ID => Template14SlideIn::class, |
| 138 | Template14Widget::ID => Template14Widget::class, |
| 139 | Template17BelowPages::ID => Template17BelowPages::class, |
| 140 | Template17FixedBar::ID => Template17FixedBar::class, |
| 141 | Template17Popup::ID => Template17Popup::class, |
| 142 | Template17SlideIn::ID => Template17SlideIn::class, |
| 143 | Template17Widget::ID => Template17Widget::class, |
| 144 | Template18BelowPages::ID => Template18BelowPages::class, |
| 145 | Template18FixedBar::ID => Template18FixedBar::class, |
| 146 | Template18Popup::ID => Template18Popup::class, |
| 147 | Template18SlideIn::ID => Template18SlideIn::class, |
| 148 | Template18Widget::ID => Template18Widget::class, |
| 149 | ]; |
| 150 | |
| 151 | public function __construct( |
| 152 | CdnAssetUrl $cdnAssetUrl, |
| 153 | SettingsController $settings, |
| 154 | WPFunctions $wp |
| 155 | ) { |
| 156 | $this->cdnAssetUrl = $cdnAssetUrl; |
| 157 | $this->wp = $wp; |
| 158 | $this->settings = $settings; |
| 159 | } |
| 160 | |
| 161 | public function getFormTemplate(string $templateId): FormTemplate { |
| 162 | if (!isset($this->templates[$templateId])) { |
| 163 | throw UnexpectedValueException::create() |
| 164 | ->withErrors(["Template with id $templateId doesn't exist."]); |
| 165 | } |
| 166 | /** @var FormTemplate $template */ |
| 167 | $template = new $this->templates[$templateId]($this->cdnAssetUrl, $this->settings, $this->wp); |
| 168 | return $template; |
| 169 | } |
| 170 | |
| 171 | /** |
| 172 | * @param string[] $templateIds |
| 173 | * @return FormTemplate[] associative array with template ids as keys |
| 174 | */ |
| 175 | public function getFormTemplates(array $templateIds): array { |
| 176 | $result = []; |
| 177 | foreach ($templateIds as $templateId) { |
| 178 | $result[$templateId] = $this->getFormTemplate($templateId); |
| 179 | } |
| 180 | return $result; |
| 181 | } |
| 182 | } |
| 183 |