PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / FormDesigns / Registrars / FormDesignRegistrar.php
give / src / Framework / FormDesigns / Registrars Last commit date
FormDesignRegistrar.php 2 years ago
FormDesignRegistrar.php
109 lines
1 <?php
2
3 namespace Give\Framework\FormDesigns\Registrars;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use Give\Framework\FormDesigns\Exceptions\OverflowException;
7 use Give\Framework\FormDesigns\FormDesign;
8 use Give\Log\Log;
9
10 /**
11 * @since 3.0.0
12 */
13 class FormDesignRegistrar
14 {
15 /**
16 * @var array
17 */
18 protected $designs = [];
19
20 /**
21 * @since 3.0.0
22 */
23 public function getDesigns(): array
24 {
25 return $this->designs;
26 }
27
28 /**
29 * @since 3.0.0
30 *
31 * @throws InvalidArgumentException
32 */
33 public function getDesign(string $id): FormDesign
34 {
35 if (!$this->hasDesign($id)) {
36 throw new InvalidArgumentException("No design exists with the ID {$id}");
37 }
38
39 /** @var FormDesign $design */
40 $design = give($this->designs[$id]);
41
42 return $design;
43 }
44
45 /**
46 * @since 3.0.0
47 */
48 public function hasDesign(string $id): bool
49 {
50 return isset($this->designs[$id]);
51 }
52
53 /**
54 * @since 3.0.0
55 */
56 public function registerDesign(string $designClass)
57 {
58 try {
59 $this->register($designClass);
60 } catch (InvalidArgumentException $invalidArgumentException) {
61 Log::error('Form Design Registration', ['data' => $invalidArgumentException->getMessage()]);
62 throw $invalidArgumentException;
63 } catch (OverflowException $overflowException) {
64 Log::error('Form Design Registration ', ['data' => $overflowException->getMessage()]);
65 throw $overflowException;
66 }
67 }
68
69 /**
70 * @since 3.0.0
71 */
72 public function unregisterDesign(string $designId)
73 {
74 if ($this->hasDesign($designId)) {
75 unset($this->designs[$designId]);
76 }
77 }
78
79 /**
80 * @since 3.0.0
81 *
82 * @return void
83 *
84 * @throws OverflowException|InvalidArgumentException
85 */
86 private function register(string $designClass)
87 {
88 if (!is_subclass_of($designClass, FormDesign::class)) {
89 throw new InvalidArgumentException(
90 sprintf(
91 '%1$s must extend %2$s',
92 $designClass,
93 FormDesign::class
94 )
95 );
96 }
97
98 $designId = $designClass::id();
99
100 if ($this->hasDesign($designId)) {
101 throw new OverflowException("Cannot register a design with an id that already exists: $designId");
102 }
103
104 $this->designs[$designId] = $designClass;
105
106 give()->singleton($designClass);
107 }
108 }
109