PluginProbe
The Innovative Form Builder – IvyForms / 0.8
The Innovative Form Builder – IvyForms v0.8
1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 1.2 1.3
ivyforms / backend / src / ValueObjects / Form / IntegrationSettings.php

IntegrationSettings.php in The Innovative Form Builder – IvyForms 0.8, at backend/src/ValueObjects/Form/IntegrationSettings.php

103 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IvyForms\ValueObjects\Form;
4
5 // phpcs:disable PSR1.Files.SideEffects
6 use IvyForms\Services\Template\TemplateDefaults;
7
8 if (!defined('ABSPATH')) {
9 exit; // Exit if accessed directly
10 }
11
12 /**
13 * Class IntegrationSettings
14 * Encapsulates integration settings for a form.
15 *
16 * @property array<string, array<string, mixed>> $settings
17 */
18 final class IntegrationSettings
19 {
20 /**
21 * @var array<string, array<string, mixed>>
22 */
23 private array $settings = [];
24
25 /**
26 * IntegrationSettings constructor.
27 * @param array<string, array<string, mixed>>|null $settings
28 */
29 public function __construct($settings = null)
30 {
31 if (!is_array($settings) || empty($settings)) {
32 $settings = TemplateDefaults::getDefaultIntegrationSettings();
33 }
34 $this->settings = $settings;
35 }
36
37 /**
38 * Get settings for a specific integration.
39 * @param string $integration
40 * @return array<string, mixed>|null
41 */
42 public function get(string $integration): ?array
43 {
44 return $this->settings[$integration] ?? null;
45 }
46
47 /**
48 * Set settings for a specific integration.
49 * @param string $integration
50 * @param array<string, mixed> $settings
51 */
52 public function set(string $integration, array $settings): void
53 {
54 $this->settings[$integration] = $settings;
55 }
56
57 /**
58 * Get all integration settings.
59 * @return array<string, array<string, mixed>>
60 */
61 public function getAll(): array
62 {
63 if (empty($this->settings)) {
64 return TemplateDefaults::getDefaultIntegrationSettings();
65 }
66 return $this->settings;
67 }
68
69 /**
70 * Get enabled status for any integration.
71 * @param string $integration
72 * @return bool
73 */
74 public function isIntegrationEnabled(string $integration): bool
75 {
76 return !empty($this->settings[$integration]['enabled']);
77 }
78
79 /**
80 * Set enabled status for any integration.
81 * @param string $integration
82 * @param bool $enabled
83 */
84 public function setIntegrationEnabled(string $integration, bool $enabled): void
85 {
86 if (!isset($this->settings[$integration])) {
87 $this->settings[$integration] = [];
88 }
89 $this->settings[$integration]['enabled'] = $enabled;
90 }
91
92 /**
93 * Export settings as array.
94 * @return array<string, array<string, mixed>>
95 */
96 public function toArray(): array
97 {
98 return [
99 'integrationSettings' => $this->settings
100 ];
101 }
102 }
103