@@ -29,7 +29,7 @@ discard block |
||
29 | 29 | */ |
30 | 30 | public static function register(string $addon_name = '', array $setup_args = []): bool |
31 | 31 | { |
32 | - self::$privacy_policies[ $addon_name ] = $setup_args; |
|
32 | + self::$privacy_policies[$addon_name] = $setup_args; |
|
33 | 33 | // add to list of modules to be registered |
34 | 34 | add_filter( |
35 | 35 | 'FHEE__EventEspresso_core_services_privacy_policy_PrivacyPolicyManager__privacy_policies', |
@@ -44,7 +44,7 @@ discard block |
||
44 | 44 | */ |
45 | 45 | public static function deregister(string $addon_name = '') |
46 | 46 | { |
47 | - unset(self::$privacy_policies[ $addon_name ]); |
|
47 | + unset(self::$privacy_policies[$addon_name]); |
|
48 | 48 | } |
49 | 49 | |
50 | 50 |
@@ -12,51 +12,51 @@ |
||
12 | 12 | */ |
13 | 13 | class EE_Register_Privacy_Policy implements EEI_Plugin_API |
14 | 14 | { |
15 | - /** |
|
16 | - * FQCN for all privacy policy generators |
|
17 | - * |
|
18 | - * @var array keys are plugin_ids, and values are an array of FQCNs or FQCNs |
|
19 | - */ |
|
20 | - protected static $privacy_policies = []; |
|
15 | + /** |
|
16 | + * FQCN for all privacy policy generators |
|
17 | + * |
|
18 | + * @var array keys are plugin_ids, and values are an array of FQCNs or FQCNs |
|
19 | + */ |
|
20 | + protected static $privacy_policies = []; |
|
21 | 21 | |
22 | 22 | |
23 | - /** |
|
24 | - * @param string $addon_name |
|
25 | - * @param array $setup_args can be the fully qualified namespaces each containing only privacy policies, |
|
26 | - * OR fully qualified class names of privacy policies |
|
27 | - * @return bool |
|
28 | - */ |
|
29 | - public static function register(string $addon_name = '', array $setup_args = []): bool |
|
30 | - { |
|
31 | - self::$privacy_policies[ $addon_name ] = $setup_args; |
|
32 | - // add to list of modules to be registered |
|
33 | - add_filter( |
|
34 | - 'FHEE__EventEspresso_core_services_privacy_policy_PrivacyPolicyManager__privacy_policies', |
|
35 | - ['EE_Register_Privacy_Policy', 'addPrivacyPolicies'] |
|
36 | - ); |
|
37 | - return true; |
|
38 | - } |
|
23 | + /** |
|
24 | + * @param string $addon_name |
|
25 | + * @param array $setup_args can be the fully qualified namespaces each containing only privacy policies, |
|
26 | + * OR fully qualified class names of privacy policies |
|
27 | + * @return bool |
|
28 | + */ |
|
29 | + public static function register(string $addon_name = '', array $setup_args = []): bool |
|
30 | + { |
|
31 | + self::$privacy_policies[ $addon_name ] = $setup_args; |
|
32 | + // add to list of modules to be registered |
|
33 | + add_filter( |
|
34 | + 'FHEE__EventEspresso_core_services_privacy_policy_PrivacyPolicyManager__privacy_policies', |
|
35 | + ['EE_Register_Privacy_Policy', 'addPrivacyPolicies'] |
|
36 | + ); |
|
37 | + return true; |
|
38 | + } |
|
39 | 39 | |
40 | 40 | |
41 | - /** |
|
42 | - * @param string $addon_name |
|
43 | - */ |
|
44 | - public static function deregister(string $addon_name = '') |
|
45 | - { |
|
46 | - unset(self::$privacy_policies[ $addon_name ]); |
|
47 | - } |
|
41 | + /** |
|
42 | + * @param string $addon_name |
|
43 | + */ |
|
44 | + public static function deregister(string $addon_name = '') |
|
45 | + { |
|
46 | + unset(self::$privacy_policies[ $addon_name ]); |
|
47 | + } |
|
48 | 48 | |
49 | 49 | |
50 | - /** |
|
51 | - * Adds our privacy policy generators registered by add-ons |
|
52 | - * |
|
53 | - * @param string[] $privacy_policies |
|
54 | - * @return string[] |
|
55 | - */ |
|
56 | - public static function addPrivacyPolicies(array $privacy_policies): array |
|
57 | - { |
|
58 | - return array_merge($privacy_policies, ...self::$privacy_policies); |
|
59 | - } |
|
50 | + /** |
|
51 | + * Adds our privacy policy generators registered by add-ons |
|
52 | + * |
|
53 | + * @param string[] $privacy_policies |
|
54 | + * @return string[] |
|
55 | + */ |
|
56 | + public static function addPrivacyPolicies(array $privacy_policies): array |
|
57 | + { |
|
58 | + return array_merge($privacy_policies, ...self::$privacy_policies); |
|
59 | + } |
|
60 | 60 | } |
61 | 61 | // End of file EE_Register_Privacy_Policy.lib.php |
62 | 62 | // Location: ${NAMESPACE}/EE_Register_Privacy_Policy.lib.php |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | ); |
60 | 60 | } |
61 | 61 | // make sure we don't register twice |
62 | - if (isset(self::$_settings[ $addon_name ])) { |
|
62 | + if (isset(self::$_settings[$addon_name])) { |
|
63 | 63 | return true; |
64 | 64 | } |
65 | 65 | // make sure this was called in the right place! |
@@ -77,7 +77,7 @@ discard block |
||
77 | 77 | ); |
78 | 78 | } |
79 | 79 | // setup $_settings array from incoming values. |
80 | - self::$_settings[ $addon_name ] = [ |
|
80 | + self::$_settings[$addon_name] = [ |
|
81 | 81 | // array of full server paths to any EE_PMT_Base children used |
82 | 82 | 'payment_method_paths' => isset($setup_args['payment_method_paths']) |
83 | 83 | ? (array) $setup_args['payment_method_paths'] |
@@ -93,12 +93,12 @@ discard block |
||
93 | 93 | if (did_action('FHEE__EE_Payment_Method_Manager__register_payment_methods__registered_payment_methods')) { |
94 | 94 | $payment_method_manager = LoaderFactory::getLoader()->getShared('EE_Payment_Method_Manager'); |
95 | 95 | // register payment methods directly |
96 | - foreach (self::$_settings[ $addon_name ]['payment_method_paths'] as $payment_method_path) { |
|
96 | + foreach (self::$_settings[$addon_name]['payment_method_paths'] as $payment_method_path) { |
|
97 | 97 | $payment_method_manager->register_payment_method($payment_method_path); |
98 | 98 | } |
99 | 99 | $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
100 | 100 | $capabilities->addCaps( |
101 | - self::getPaymentMethodCapabilities(self::$_settings[ $addon_name ]) |
|
101 | + self::getPaymentMethodCapabilities(self::$_settings[$addon_name]) |
|
102 | 102 | ); |
103 | 103 | } |
104 | 104 | return true; |
@@ -135,13 +135,13 @@ discard block |
||
135 | 135 | */ |
136 | 136 | public static function deregister(string $addon_name = '') |
137 | 137 | { |
138 | - if (isset(self::$_settings[ $addon_name ])) { |
|
138 | + if (isset(self::$_settings[$addon_name])) { |
|
139 | 139 | // set action for just this module id to delay deregistration until core is loaded and ready. |
140 | - $module_settings = self::$_settings[ $addon_name ]; |
|
141 | - unset(self::$_settings[ $addon_name ]); |
|
140 | + $module_settings = self::$_settings[$addon_name]; |
|
141 | + unset(self::$_settings[$addon_name]); |
|
142 | 142 | add_action( |
143 | 143 | 'AHEE__EE_System__core_loaded_and_ready', |
144 | - function () use ($module_settings) { |
|
144 | + function() use ($module_settings) { |
|
145 | 145 | $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
146 | 146 | $capabilities->removeCaps( |
147 | 147 | EE_Register_Payment_Method::getPaymentMethodCapabilities($module_settings) |
@@ -18,163 +18,163 @@ |
||
18 | 18 | */ |
19 | 19 | class EE_Register_Payment_Method implements EEI_Plugin_API |
20 | 20 | { |
21 | - /** |
|
22 | - * Holds values for registered payment methods |
|
23 | - * |
|
24 | - * @var array |
|
25 | - */ |
|
26 | - protected static $_settings = []; |
|
21 | + /** |
|
22 | + * Holds values for registered payment methods |
|
23 | + * |
|
24 | + * @var array |
|
25 | + */ |
|
26 | + protected static $_settings = []; |
|
27 | 27 | |
28 | 28 | |
29 | - /** |
|
30 | - * Method for registering new EE_PMT_Base children |
|
31 | - * |
|
32 | - * @param string $addon_name a unique identifier for this set of modules Required. |
|
33 | - * @param array $setup_args an array of arguments provided for registering modules Required.{ |
|
34 | - * @type string[] $payment_method_paths each element is the folder containing the EE_PMT_Base child class |
|
35 | - * (eg, 'public_html/wp-content/plugins/my_plugin/Payomatic/' which contains |
|
36 | - * the files EE_PMT_Payomatic.pm.php) |
|
37 | - * } |
|
38 | - * @return bool |
|
39 | - * @throws EE_Error |
|
40 | - * @type array payment_method_paths an array of full server paths to folders containing any EE_PMT_Base |
|
41 | - * children, or to the EED_Module files themselves |
|
42 | - * @throws InvalidDataTypeException |
|
43 | - * @throws DomainException |
|
44 | - * @throws InvalidArgumentException |
|
45 | - * @throws InvalidInterfaceException |
|
46 | - * @throws InvalidDataTypeException |
|
47 | - * @since 4.5.0 |
|
48 | - */ |
|
49 | - public static function register(string $addon_name = '', array $setup_args = []): bool |
|
50 | - { |
|
51 | - // required fields MUST be present, so let's make sure they are. |
|
52 | - if (empty($addon_name) || ! is_array($setup_args) || empty($setup_args['payment_method_paths'])) { |
|
53 | - throw new EE_Error( |
|
54 | - esc_html__( |
|
55 | - 'In order to register Payment Methods with EE_Register_Payment_Method::register(), you must include a "payment_method_id" (a unique identifier for this set of modules), and an array containing the following keys: "payment_method_paths" (an array of full server paths to folders that contain modules, or to the module files themselves)', |
|
56 | - 'event_espresso' |
|
57 | - ) |
|
58 | - ); |
|
59 | - } |
|
60 | - // make sure we don't register twice |
|
61 | - if (isset(self::$_settings[ $addon_name ])) { |
|
62 | - return true; |
|
63 | - } |
|
64 | - // make sure this was called in the right place! |
|
65 | - if ( |
|
66 | - ! did_action('AHEE__EE_System__load_espresso_addons') |
|
67 | - || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
68 | - ) { |
|
69 | - EE_Error::doing_it_wrong( |
|
70 | - __METHOD__, |
|
71 | - esc_html__( |
|
72 | - 'An attempt to register modules has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register modules.', |
|
73 | - 'event_espresso' |
|
74 | - ), |
|
75 | - '4.3.0' |
|
76 | - ); |
|
77 | - } |
|
78 | - // setup $_settings array from incoming values. |
|
79 | - self::$_settings[ $addon_name ] = [ |
|
80 | - // array of full server paths to any EE_PMT_Base children used |
|
81 | - 'payment_method_paths' => isset($setup_args['payment_method_paths']) |
|
82 | - ? (array) $setup_args['payment_method_paths'] |
|
83 | - : [], |
|
84 | - ]; |
|
85 | - // add to list of modules to be registered |
|
86 | - add_filter( |
|
87 | - 'FHEE__EE_Payment_Method_Manager__register_payment_methods__payment_methods_to_register', |
|
88 | - ['EE_Register_Payment_Method', 'add_payment_methods'] |
|
89 | - ); |
|
90 | - // If EE_Payment_Method_Manager::register_payment_methods has already been called, |
|
91 | - // then we need to add our caps for this payment method manually |
|
92 | - if (did_action('FHEE__EE_Payment_Method_Manager__register_payment_methods__registered_payment_methods')) { |
|
93 | - $payment_method_manager = LoaderFactory::getLoader()->getShared('EE_Payment_Method_Manager'); |
|
94 | - // register payment methods directly |
|
95 | - foreach (self::$_settings[ $addon_name ]['payment_method_paths'] as $payment_method_path) { |
|
96 | - $payment_method_manager->register_payment_method($payment_method_path); |
|
97 | - } |
|
98 | - $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
|
99 | - $capabilities->addCaps( |
|
100 | - self::getPaymentMethodCapabilities(self::$_settings[ $addon_name ]) |
|
101 | - ); |
|
102 | - } |
|
103 | - return true; |
|
104 | - } |
|
29 | + /** |
|
30 | + * Method for registering new EE_PMT_Base children |
|
31 | + * |
|
32 | + * @param string $addon_name a unique identifier for this set of modules Required. |
|
33 | + * @param array $setup_args an array of arguments provided for registering modules Required.{ |
|
34 | + * @type string[] $payment_method_paths each element is the folder containing the EE_PMT_Base child class |
|
35 | + * (eg, 'public_html/wp-content/plugins/my_plugin/Payomatic/' which contains |
|
36 | + * the files EE_PMT_Payomatic.pm.php) |
|
37 | + * } |
|
38 | + * @return bool |
|
39 | + * @throws EE_Error |
|
40 | + * @type array payment_method_paths an array of full server paths to folders containing any EE_PMT_Base |
|
41 | + * children, or to the EED_Module files themselves |
|
42 | + * @throws InvalidDataTypeException |
|
43 | + * @throws DomainException |
|
44 | + * @throws InvalidArgumentException |
|
45 | + * @throws InvalidInterfaceException |
|
46 | + * @throws InvalidDataTypeException |
|
47 | + * @since 4.5.0 |
|
48 | + */ |
|
49 | + public static function register(string $addon_name = '', array $setup_args = []): bool |
|
50 | + { |
|
51 | + // required fields MUST be present, so let's make sure they are. |
|
52 | + if (empty($addon_name) || ! is_array($setup_args) || empty($setup_args['payment_method_paths'])) { |
|
53 | + throw new EE_Error( |
|
54 | + esc_html__( |
|
55 | + 'In order to register Payment Methods with EE_Register_Payment_Method::register(), you must include a "payment_method_id" (a unique identifier for this set of modules), and an array containing the following keys: "payment_method_paths" (an array of full server paths to folders that contain modules, or to the module files themselves)', |
|
56 | + 'event_espresso' |
|
57 | + ) |
|
58 | + ); |
|
59 | + } |
|
60 | + // make sure we don't register twice |
|
61 | + if (isset(self::$_settings[ $addon_name ])) { |
|
62 | + return true; |
|
63 | + } |
|
64 | + // make sure this was called in the right place! |
|
65 | + if ( |
|
66 | + ! did_action('AHEE__EE_System__load_espresso_addons') |
|
67 | + || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
68 | + ) { |
|
69 | + EE_Error::doing_it_wrong( |
|
70 | + __METHOD__, |
|
71 | + esc_html__( |
|
72 | + 'An attempt to register modules has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register modules.', |
|
73 | + 'event_espresso' |
|
74 | + ), |
|
75 | + '4.3.0' |
|
76 | + ); |
|
77 | + } |
|
78 | + // setup $_settings array from incoming values. |
|
79 | + self::$_settings[ $addon_name ] = [ |
|
80 | + // array of full server paths to any EE_PMT_Base children used |
|
81 | + 'payment_method_paths' => isset($setup_args['payment_method_paths']) |
|
82 | + ? (array) $setup_args['payment_method_paths'] |
|
83 | + : [], |
|
84 | + ]; |
|
85 | + // add to list of modules to be registered |
|
86 | + add_filter( |
|
87 | + 'FHEE__EE_Payment_Method_Manager__register_payment_methods__payment_methods_to_register', |
|
88 | + ['EE_Register_Payment_Method', 'add_payment_methods'] |
|
89 | + ); |
|
90 | + // If EE_Payment_Method_Manager::register_payment_methods has already been called, |
|
91 | + // then we need to add our caps for this payment method manually |
|
92 | + if (did_action('FHEE__EE_Payment_Method_Manager__register_payment_methods__registered_payment_methods')) { |
|
93 | + $payment_method_manager = LoaderFactory::getLoader()->getShared('EE_Payment_Method_Manager'); |
|
94 | + // register payment methods directly |
|
95 | + foreach (self::$_settings[ $addon_name ]['payment_method_paths'] as $payment_method_path) { |
|
96 | + $payment_method_manager->register_payment_method($payment_method_path); |
|
97 | + } |
|
98 | + $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
|
99 | + $capabilities->addCaps( |
|
100 | + self::getPaymentMethodCapabilities(self::$_settings[ $addon_name ]) |
|
101 | + ); |
|
102 | + } |
|
103 | + return true; |
|
104 | + } |
|
105 | 105 | |
106 | 106 | |
107 | - /** |
|
108 | - * Filters the list of payment methods to add ours. |
|
109 | - * and they're just full filepaths to FOLDERS containing a payment method class file. Eg. |
|
110 | - * |
|
111 | - * @param array $payment_method_folders array of paths to all payment methods that require registering |
|
112 | - * @return array |
|
113 | - */ |
|
114 | - public static function add_payment_methods(array $payment_method_folders): array |
|
115 | - { |
|
116 | - $payment_method_paths = []; |
|
117 | - foreach (self::$_settings as $settings) { |
|
118 | - $payment_method_paths[] = $settings['payment_method_paths']; |
|
119 | - } |
|
120 | - return array_merge($payment_method_folders, ...$payment_method_paths); |
|
121 | - } |
|
107 | + /** |
|
108 | + * Filters the list of payment methods to add ours. |
|
109 | + * and they're just full filepaths to FOLDERS containing a payment method class file. Eg. |
|
110 | + * |
|
111 | + * @param array $payment_method_folders array of paths to all payment methods that require registering |
|
112 | + * @return array |
|
113 | + */ |
|
114 | + public static function add_payment_methods(array $payment_method_folders): array |
|
115 | + { |
|
116 | + $payment_method_paths = []; |
|
117 | + foreach (self::$_settings as $settings) { |
|
118 | + $payment_method_paths[] = $settings['payment_method_paths']; |
|
119 | + } |
|
120 | + return array_merge($payment_method_folders, ...$payment_method_paths); |
|
121 | + } |
|
122 | 122 | |
123 | 123 | |
124 | - /** |
|
125 | - * This deregisters a module that was previously registered with a specific $addon_name. |
|
126 | - * |
|
127 | - * @param string $addon_name the name for the module that was previously registered |
|
128 | - * @return void |
|
129 | - * @throws DomainException |
|
130 | - * @throws InvalidArgumentException |
|
131 | - * @throws InvalidInterfaceException |
|
132 | - * @throws InvalidDataTypeException |
|
133 | - * @since 4.3.0 |
|
134 | - */ |
|
135 | - public static function deregister(string $addon_name = '') |
|
136 | - { |
|
137 | - if (isset(self::$_settings[ $addon_name ])) { |
|
138 | - // set action for just this module id to delay deregistration until core is loaded and ready. |
|
139 | - $module_settings = self::$_settings[ $addon_name ]; |
|
140 | - unset(self::$_settings[ $addon_name ]); |
|
141 | - add_action( |
|
142 | - 'AHEE__EE_System__core_loaded_and_ready', |
|
143 | - function () use ($module_settings) { |
|
144 | - $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
|
145 | - $capabilities->removeCaps( |
|
146 | - EE_Register_Payment_Method::getPaymentMethodCapabilities($module_settings) |
|
147 | - ); |
|
148 | - } |
|
149 | - ); |
|
150 | - } |
|
151 | - } |
|
124 | + /** |
|
125 | + * This deregisters a module that was previously registered with a specific $addon_name. |
|
126 | + * |
|
127 | + * @param string $addon_name the name for the module that was previously registered |
|
128 | + * @return void |
|
129 | + * @throws DomainException |
|
130 | + * @throws InvalidArgumentException |
|
131 | + * @throws InvalidInterfaceException |
|
132 | + * @throws InvalidDataTypeException |
|
133 | + * @since 4.3.0 |
|
134 | + */ |
|
135 | + public static function deregister(string $addon_name = '') |
|
136 | + { |
|
137 | + if (isset(self::$_settings[ $addon_name ])) { |
|
138 | + // set action for just this module id to delay deregistration until core is loaded and ready. |
|
139 | + $module_settings = self::$_settings[ $addon_name ]; |
|
140 | + unset(self::$_settings[ $addon_name ]); |
|
141 | + add_action( |
|
142 | + 'AHEE__EE_System__core_loaded_and_ready', |
|
143 | + function () use ($module_settings) { |
|
144 | + $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities'); |
|
145 | + $capabilities->removeCaps( |
|
146 | + EE_Register_Payment_Method::getPaymentMethodCapabilities($module_settings) |
|
147 | + ); |
|
148 | + } |
|
149 | + ); |
|
150 | + } |
|
151 | + } |
|
152 | 152 | |
153 | 153 | |
154 | - /** |
|
155 | - * returns an array of the caps that get added when a Payment Method is registered |
|
156 | - * |
|
157 | - * @param array $settings |
|
158 | - * @return array |
|
159 | - * @throws DomainException |
|
160 | - * @throws InvalidArgumentException |
|
161 | - * @throws InvalidInterfaceException |
|
162 | - * @throws InvalidDataTypeException |
|
163 | - * @access private Developers do NOT use this method. It's only public for PHP5.3 closure support (see deregister) |
|
164 | - * When we drop support for PHP5.3 this will be made private again. You have been warned. |
|
165 | - */ |
|
166 | - public static function getPaymentMethodCapabilities(array $settings): array |
|
167 | - { |
|
168 | - $payment_method_manager = LoaderFactory::getLoader()->getShared('EE_Payment_Method_Manager'); |
|
169 | - $payment_method_caps = ['administrator' => []]; |
|
170 | - if (isset($settings['payment_method_paths'])) { |
|
171 | - foreach ($settings['payment_method_paths'] as $payment_method_path) { |
|
172 | - $payment_method_caps = $payment_method_manager->addPaymentMethodCap( |
|
173 | - strtolower(basename($payment_method_path)), |
|
174 | - $payment_method_caps |
|
175 | - ); |
|
176 | - } |
|
177 | - } |
|
178 | - return $payment_method_caps; |
|
179 | - } |
|
154 | + /** |
|
155 | + * returns an array of the caps that get added when a Payment Method is registered |
|
156 | + * |
|
157 | + * @param array $settings |
|
158 | + * @return array |
|
159 | + * @throws DomainException |
|
160 | + * @throws InvalidArgumentException |
|
161 | + * @throws InvalidInterfaceException |
|
162 | + * @throws InvalidDataTypeException |
|
163 | + * @access private Developers do NOT use this method. It's only public for PHP5.3 closure support (see deregister) |
|
164 | + * When we drop support for PHP5.3 this will be made private again. You have been warned. |
|
165 | + */ |
|
166 | + public static function getPaymentMethodCapabilities(array $settings): array |
|
167 | + { |
|
168 | + $payment_method_manager = LoaderFactory::getLoader()->getShared('EE_Payment_Method_Manager'); |
|
169 | + $payment_method_caps = ['administrator' => []]; |
|
170 | + if (isset($settings['payment_method_paths'])) { |
|
171 | + foreach ($settings['payment_method_paths'] as $payment_method_path) { |
|
172 | + $payment_method_caps = $payment_method_manager->addPaymentMethodCap( |
|
173 | + strtolower(basename($payment_method_path)), |
|
174 | + $payment_method_caps |
|
175 | + ); |
|
176 | + } |
|
177 | + } |
|
178 | + return $payment_method_caps; |
|
179 | + } |
|
180 | 180 | } |
@@ -60,7 +60,7 @@ discard block |
||
60 | 60 | } |
61 | 61 | |
62 | 62 | // make sure we don't register twice |
63 | - if (isset(self::$_settings[ $addon_name ])) { |
|
63 | + if (isset(self::$_settings[$addon_name])) { |
|
64 | 64 | return true; |
65 | 65 | } |
66 | 66 | |
@@ -79,7 +79,7 @@ discard block |
||
79 | 79 | ); |
80 | 80 | } |
81 | 81 | // setup $_settings array from incoming values. |
82 | - self::$_settings[ $addon_name ] = [ |
|
82 | + self::$_settings[$addon_name] = [ |
|
83 | 83 | // array of full server paths to any EES_Shortcodes used by the shortcode |
84 | 84 | 'shortcode_paths' => isset($setup_args['shortcode_paths']) |
85 | 85 | ? (array) $setup_args['shortcode_paths'] |
@@ -136,9 +136,9 @@ discard block |
||
136 | 136 | CollectionInterface $shortcodes_collection |
137 | 137 | ): CollectionInterface { |
138 | 138 | foreach (self::$_settings as $settings) { |
139 | - if (! empty($settings['shortcode_fqcns'])) { |
|
139 | + if ( ! empty($settings['shortcode_fqcns'])) { |
|
140 | 140 | foreach ($settings['shortcode_fqcns'] as $shortcode_fqcn) { |
141 | - if (! class_exists($shortcode_fqcn)) { |
|
141 | + if ( ! class_exists($shortcode_fqcn)) { |
|
142 | 142 | throw new InvalidClassException( |
143 | 143 | sprintf( |
144 | 144 | esc_html__( |
@@ -149,7 +149,7 @@ discard block |
||
149 | 149 | ) |
150 | 150 | ); |
151 | 151 | } |
152 | - if (! EE_Dependency_Map::instance()->has_dependency_for_class($shortcode_fqcn)) { |
|
152 | + if ( ! EE_Dependency_Map::instance()->has_dependency_for_class($shortcode_fqcn)) { |
|
153 | 153 | // register dependencies |
154 | 154 | EE_Dependency_Map::register_dependencies( |
155 | 155 | $shortcode_fqcn, |
@@ -175,6 +175,6 @@ discard block |
||
175 | 175 | */ |
176 | 176 | public static function deregister(string $addon_name = '') |
177 | 177 | { |
178 | - unset(self::$_settings[ $addon_name ]); |
|
178 | + unset(self::$_settings[$addon_name]); |
|
179 | 179 | } |
180 | 180 | } |
@@ -19,163 +19,163 @@ |
||
19 | 19 | */ |
20 | 20 | class EE_Register_Shortcode implements EEI_Plugin_API |
21 | 21 | { |
22 | - /** |
|
23 | - * Holds values for registered shortcodes |
|
24 | - * |
|
25 | - * @var array |
|
26 | - */ |
|
27 | - protected static $_settings = []; |
|
22 | + /** |
|
23 | + * Holds values for registered shortcodes |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | + protected static $_settings = []; |
|
28 | 28 | |
29 | 29 | |
30 | - /** |
|
31 | - * Method for registering new EE_Shortcodes |
|
32 | - * |
|
33 | - * @param string $addon_name a unique identifier for this set of modules Required. |
|
34 | - * @param array $setup_args an array of arguments provided for registering shortcodes Required. |
|
35 | - * @type array shortcode_paths an array of full server paths to folders containing any EES_Shortcodes |
|
36 | - * @type array shortcode_fqcns an array of fully qualified class names for any new shortcode classes to register. |
|
37 | - * Shortcode classes should extend EspressoShortcode |
|
38 | - * and be properly namespaced so they are autoloaded. |
|
39 | - * @return bool |
|
40 | - * @throws EE_Error |
|
41 | - * @since 4.3.0 |
|
42 | - * @since 4.9.46.rc.025 for the new `shortcode_fqcns` array argument. |
|
43 | - */ |
|
44 | - public static function register(string $addon_name = '', array $setup_args = []): bool |
|
45 | - { |
|
46 | - // required fields MUST be present, so let's make sure they are. |
|
47 | - if ( |
|
48 | - empty($addon_name) |
|
49 | - || ! is_array($setup_args) |
|
50 | - || ( |
|
51 | - empty($setup_args['shortcode_paths']) |
|
52 | - ) |
|
53 | - && empty($setup_args['shortcode_fqcns']) |
|
54 | - ) { |
|
55 | - throw new EE_Error( |
|
56 | - esc_html__( |
|
57 | - 'In order to register Modules with EE_Register_Shortcode::register(), you must include a "shortcode_id" (a unique identifier for this set of shortcodes), and an array containing the following keys: "shortcode_paths" (an array of full server paths to folders that contain shortcodes, or to the shortcode files themselves)', |
|
58 | - 'event_espresso' |
|
59 | - ) |
|
60 | - ); |
|
61 | - } |
|
30 | + /** |
|
31 | + * Method for registering new EE_Shortcodes |
|
32 | + * |
|
33 | + * @param string $addon_name a unique identifier for this set of modules Required. |
|
34 | + * @param array $setup_args an array of arguments provided for registering shortcodes Required. |
|
35 | + * @type array shortcode_paths an array of full server paths to folders containing any EES_Shortcodes |
|
36 | + * @type array shortcode_fqcns an array of fully qualified class names for any new shortcode classes to register. |
|
37 | + * Shortcode classes should extend EspressoShortcode |
|
38 | + * and be properly namespaced so they are autoloaded. |
|
39 | + * @return bool |
|
40 | + * @throws EE_Error |
|
41 | + * @since 4.3.0 |
|
42 | + * @since 4.9.46.rc.025 for the new `shortcode_fqcns` array argument. |
|
43 | + */ |
|
44 | + public static function register(string $addon_name = '', array $setup_args = []): bool |
|
45 | + { |
|
46 | + // required fields MUST be present, so let's make sure they are. |
|
47 | + if ( |
|
48 | + empty($addon_name) |
|
49 | + || ! is_array($setup_args) |
|
50 | + || ( |
|
51 | + empty($setup_args['shortcode_paths']) |
|
52 | + ) |
|
53 | + && empty($setup_args['shortcode_fqcns']) |
|
54 | + ) { |
|
55 | + throw new EE_Error( |
|
56 | + esc_html__( |
|
57 | + 'In order to register Modules with EE_Register_Shortcode::register(), you must include a "shortcode_id" (a unique identifier for this set of shortcodes), and an array containing the following keys: "shortcode_paths" (an array of full server paths to folders that contain shortcodes, or to the shortcode files themselves)', |
|
58 | + 'event_espresso' |
|
59 | + ) |
|
60 | + ); |
|
61 | + } |
|
62 | 62 | |
63 | - // make sure we don't register twice |
|
64 | - if (isset(self::$_settings[ $addon_name ])) { |
|
65 | - return true; |
|
66 | - } |
|
63 | + // make sure we don't register twice |
|
64 | + if (isset(self::$_settings[ $addon_name ])) { |
|
65 | + return true; |
|
66 | + } |
|
67 | 67 | |
68 | - // make sure this was called in the right place! |
|
69 | - if ( |
|
70 | - ! did_action('AHEE__EE_System__load_espresso_addons') |
|
71 | - || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
72 | - ) { |
|
73 | - EE_Error::doing_it_wrong( |
|
74 | - __METHOD__, |
|
75 | - esc_html__( |
|
76 | - 'An attempt to register shortcodes has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register shortcodes.', |
|
77 | - 'event_espresso' |
|
78 | - ), |
|
79 | - '4.3.0' |
|
80 | - ); |
|
81 | - } |
|
82 | - // setup $_settings array from incoming values. |
|
83 | - self::$_settings[ $addon_name ] = [ |
|
84 | - // array of full server paths to any EES_Shortcodes used by the shortcode |
|
85 | - 'shortcode_paths' => isset($setup_args['shortcode_paths']) |
|
86 | - ? (array) $setup_args['shortcode_paths'] |
|
87 | - : [], |
|
88 | - 'shortcode_fqcns' => isset($setup_args['shortcode_fqcns']) |
|
89 | - ? (array) $setup_args['shortcode_fqcns'] |
|
90 | - : [], |
|
91 | - ]; |
|
92 | - // add to list of shortcodes to be registered |
|
93 | - add_filter( |
|
94 | - 'FHEE__EE_Config__register_shortcodes__shortcodes_to_register', |
|
95 | - ['EE_Register_Shortcode', 'add_shortcodes'] |
|
96 | - ); |
|
68 | + // make sure this was called in the right place! |
|
69 | + if ( |
|
70 | + ! did_action('AHEE__EE_System__load_espresso_addons') |
|
71 | + || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
72 | + ) { |
|
73 | + EE_Error::doing_it_wrong( |
|
74 | + __METHOD__, |
|
75 | + esc_html__( |
|
76 | + 'An attempt to register shortcodes has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register shortcodes.', |
|
77 | + 'event_espresso' |
|
78 | + ), |
|
79 | + '4.3.0' |
|
80 | + ); |
|
81 | + } |
|
82 | + // setup $_settings array from incoming values. |
|
83 | + self::$_settings[ $addon_name ] = [ |
|
84 | + // array of full server paths to any EES_Shortcodes used by the shortcode |
|
85 | + 'shortcode_paths' => isset($setup_args['shortcode_paths']) |
|
86 | + ? (array) $setup_args['shortcode_paths'] |
|
87 | + : [], |
|
88 | + 'shortcode_fqcns' => isset($setup_args['shortcode_fqcns']) |
|
89 | + ? (array) $setup_args['shortcode_fqcns'] |
|
90 | + : [], |
|
91 | + ]; |
|
92 | + // add to list of shortcodes to be registered |
|
93 | + add_filter( |
|
94 | + 'FHEE__EE_Config__register_shortcodes__shortcodes_to_register', |
|
95 | + ['EE_Register_Shortcode', 'add_shortcodes'] |
|
96 | + ); |
|
97 | 97 | |
98 | - add_filter( |
|
99 | - 'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection', |
|
100 | - ['EE_Register_Shortcode', 'instantiateAndAddToShortcodeCollection'] |
|
101 | - ); |
|
102 | - return true; |
|
103 | - } |
|
98 | + add_filter( |
|
99 | + 'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection', |
|
100 | + ['EE_Register_Shortcode', 'instantiateAndAddToShortcodeCollection'] |
|
101 | + ); |
|
102 | + return true; |
|
103 | + } |
|
104 | 104 | |
105 | 105 | |
106 | - /** |
|
107 | - * Filters the list of shortcodes to add ours. |
|
108 | - * and they're just full filepaths to FOLDERS containing a shortcode class file. Eg. |
|
109 | - * array('espresso_monkey'=>'/public_html/wonder-site/wp-content/plugins/ee4/shortcodes/espresso_monkey'...) |
|
110 | - * |
|
111 | - * @param array $shortcodes_to_register array of paths to all shortcodes that require registering |
|
112 | - * @return array |
|
113 | - */ |
|
114 | - public static function add_shortcodes(array $shortcodes_to_register): array |
|
115 | - { |
|
116 | - $shortcode_paths = []; |
|
117 | - foreach (self::$_settings as $settings) { |
|
118 | - $shortcode_paths[] = $settings['shortcode_paths']; |
|
119 | - } |
|
120 | - return array_merge($shortcodes_to_register, ...$shortcode_paths); |
|
121 | - } |
|
106 | + /** |
|
107 | + * Filters the list of shortcodes to add ours. |
|
108 | + * and they're just full filepaths to FOLDERS containing a shortcode class file. Eg. |
|
109 | + * array('espresso_monkey'=>'/public_html/wonder-site/wp-content/plugins/ee4/shortcodes/espresso_monkey'...) |
|
110 | + * |
|
111 | + * @param array $shortcodes_to_register array of paths to all shortcodes that require registering |
|
112 | + * @return array |
|
113 | + */ |
|
114 | + public static function add_shortcodes(array $shortcodes_to_register): array |
|
115 | + { |
|
116 | + $shortcode_paths = []; |
|
117 | + foreach (self::$_settings as $settings) { |
|
118 | + $shortcode_paths[] = $settings['shortcode_paths']; |
|
119 | + } |
|
120 | + return array_merge($shortcodes_to_register, ...$shortcode_paths); |
|
121 | + } |
|
122 | 122 | |
123 | 123 | |
124 | - /** |
|
125 | - * Hooks into |
|
126 | - * FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection and |
|
127 | - * registers any provided shortcode fully qualified class names. |
|
128 | - * |
|
129 | - * @param CollectionInterface $shortcodes_collection |
|
130 | - * @return CollectionInterface |
|
131 | - * @throws InvalidArgumentException |
|
132 | - * @throws InvalidClassException |
|
133 | - * @throws InvalidDataTypeException |
|
134 | - * @throws InvalidInterfaceException |
|
135 | - */ |
|
136 | - public static function instantiateAndAddToShortcodeCollection( |
|
137 | - CollectionInterface $shortcodes_collection |
|
138 | - ): CollectionInterface { |
|
139 | - foreach (self::$_settings as $settings) { |
|
140 | - if (! empty($settings['shortcode_fqcns'])) { |
|
141 | - foreach ($settings['shortcode_fqcns'] as $shortcode_fqcn) { |
|
142 | - if (! class_exists($shortcode_fqcn)) { |
|
143 | - throw new InvalidClassException( |
|
144 | - sprintf( |
|
145 | - esc_html__( |
|
146 | - 'Are you sure %s is the right fully qualified class name for the shortcode class?', |
|
147 | - 'event_espresso' |
|
148 | - ), |
|
149 | - $shortcode_fqcn |
|
150 | - ) |
|
151 | - ); |
|
152 | - } |
|
153 | - if (! EE_Dependency_Map::instance()->has_dependency_for_class($shortcode_fqcn)) { |
|
154 | - // register dependencies |
|
155 | - EE_Dependency_Map::register_dependencies( |
|
156 | - $shortcode_fqcn, |
|
157 | - [ |
|
158 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
159 | - ] |
|
160 | - ); |
|
161 | - } |
|
162 | - $shortcodes_collection->add(LoaderFactory::getLoader()->getShared($shortcode_fqcn)); |
|
163 | - } |
|
164 | - } |
|
165 | - } |
|
166 | - return $shortcodes_collection; |
|
167 | - } |
|
124 | + /** |
|
125 | + * Hooks into |
|
126 | + * FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection and |
|
127 | + * registers any provided shortcode fully qualified class names. |
|
128 | + * |
|
129 | + * @param CollectionInterface $shortcodes_collection |
|
130 | + * @return CollectionInterface |
|
131 | + * @throws InvalidArgumentException |
|
132 | + * @throws InvalidClassException |
|
133 | + * @throws InvalidDataTypeException |
|
134 | + * @throws InvalidInterfaceException |
|
135 | + */ |
|
136 | + public static function instantiateAndAddToShortcodeCollection( |
|
137 | + CollectionInterface $shortcodes_collection |
|
138 | + ): CollectionInterface { |
|
139 | + foreach (self::$_settings as $settings) { |
|
140 | + if (! empty($settings['shortcode_fqcns'])) { |
|
141 | + foreach ($settings['shortcode_fqcns'] as $shortcode_fqcn) { |
|
142 | + if (! class_exists($shortcode_fqcn)) { |
|
143 | + throw new InvalidClassException( |
|
144 | + sprintf( |
|
145 | + esc_html__( |
|
146 | + 'Are you sure %s is the right fully qualified class name for the shortcode class?', |
|
147 | + 'event_espresso' |
|
148 | + ), |
|
149 | + $shortcode_fqcn |
|
150 | + ) |
|
151 | + ); |
|
152 | + } |
|
153 | + if (! EE_Dependency_Map::instance()->has_dependency_for_class($shortcode_fqcn)) { |
|
154 | + // register dependencies |
|
155 | + EE_Dependency_Map::register_dependencies( |
|
156 | + $shortcode_fqcn, |
|
157 | + [ |
|
158 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
159 | + ] |
|
160 | + ); |
|
161 | + } |
|
162 | + $shortcodes_collection->add(LoaderFactory::getLoader()->getShared($shortcode_fqcn)); |
|
163 | + } |
|
164 | + } |
|
165 | + } |
|
166 | + return $shortcodes_collection; |
|
167 | + } |
|
168 | 168 | |
169 | 169 | |
170 | - /** |
|
171 | - * This deregisters a shortcode that was previously registered with a specific $addon_name. |
|
172 | - * |
|
173 | - * @param string $addon_name the name for the shortcode that was previously registered |
|
174 | - * @return void |
|
175 | - * @since 4.3.0 |
|
176 | - */ |
|
177 | - public static function deregister(string $addon_name = '') |
|
178 | - { |
|
179 | - unset(self::$_settings[ $addon_name ]); |
|
180 | - } |
|
170 | + /** |
|
171 | + * This deregisters a shortcode that was previously registered with a specific $addon_name. |
|
172 | + * |
|
173 | + * @param string $addon_name the name for the shortcode that was previously registered |
|
174 | + * @return void |
|
175 | + * @since 4.3.0 |
|
176 | + */ |
|
177 | + public static function deregister(string $addon_name = '') |
|
178 | + { |
|
179 | + unset(self::$_settings[ $addon_name ]); |
|
180 | + } |
|
181 | 181 | } |
@@ -48,7 +48,7 @@ discard block |
||
48 | 48 | } |
49 | 49 | |
50 | 50 | // make sure we don't register twice |
51 | - if (isset(self::$_settings[ $addon_name ])) { |
|
51 | + if (isset(self::$_settings[$addon_name])) { |
|
52 | 52 | return true; |
53 | 53 | } |
54 | 54 | |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | ); |
68 | 68 | } |
69 | 69 | // setup $_settings array from incoming values. |
70 | - self::$_settings[ $addon_name ] = [ |
|
70 | + self::$_settings[$addon_name] = [ |
|
71 | 71 | // array of full server paths to any EED_Modules used by the module |
72 | 72 | 'module_paths' => isset($setup_args['module_paths']) ? (array) $setup_args['module_paths'] : [], |
73 | 73 | ]; |
@@ -107,6 +107,6 @@ discard block |
||
107 | 107 | */ |
108 | 108 | public static function deregister(string $addon_name = '') |
109 | 109 | { |
110 | - unset(self::$_settings[ $addon_name ]); |
|
110 | + unset(self::$_settings[$addon_name]); |
|
111 | 111 | } |
112 | 112 | } |
@@ -14,98 +14,98 @@ |
||
14 | 14 | */ |
15 | 15 | class EE_Register_Module implements EEI_Plugin_API |
16 | 16 | { |
17 | - /** |
|
18 | - * Holds values for registered modules |
|
19 | - * |
|
20 | - * @var array |
|
21 | - */ |
|
22 | - protected static $_settings = []; |
|
17 | + /** |
|
18 | + * Holds values for registered modules |
|
19 | + * |
|
20 | + * @var array |
|
21 | + */ |
|
22 | + protected static $_settings = []; |
|
23 | 23 | |
24 | 24 | |
25 | - /** |
|
26 | - * Method for registering new EED_Modules |
|
27 | - * |
|
28 | - * @param string $addon_name a unique identifier for this set of modules Required. |
|
29 | - * @param array $setup_args an array of full server paths to folders containing any EED_Modules, or to the |
|
30 | - * EED_Module files themselves Required. |
|
31 | - * @type array module_paths an array of full server paths to folders containing any EED_Modules, or to the |
|
32 | - * EED_Module files themselves |
|
33 | - * @return bool |
|
34 | - * @throws EE_Error |
|
35 | - * @since 4.3.0 |
|
36 | - */ |
|
37 | - public static function register(string $addon_name = '', array $setup_args = []): bool |
|
38 | - { |
|
39 | - // required fields MUST be present, so let's make sure they are. |
|
40 | - if (empty($addon_name) || ! is_array($setup_args) || empty($setup_args['module_paths'])) { |
|
41 | - throw new EE_Error( |
|
42 | - esc_html__( |
|
43 | - 'In order to register Modules with EE_Register_Module::register(), you must include a "module_id" (a unique identifier for this set of modules), and an array containing the following keys: "module_paths" (an array of full server paths to folders that contain modules, or to the module files themselves)', |
|
44 | - 'event_espresso' |
|
45 | - ) |
|
46 | - ); |
|
47 | - } |
|
25 | + /** |
|
26 | + * Method for registering new EED_Modules |
|
27 | + * |
|
28 | + * @param string $addon_name a unique identifier for this set of modules Required. |
|
29 | + * @param array $setup_args an array of full server paths to folders containing any EED_Modules, or to the |
|
30 | + * EED_Module files themselves Required. |
|
31 | + * @type array module_paths an array of full server paths to folders containing any EED_Modules, or to the |
|
32 | + * EED_Module files themselves |
|
33 | + * @return bool |
|
34 | + * @throws EE_Error |
|
35 | + * @since 4.3.0 |
|
36 | + */ |
|
37 | + public static function register(string $addon_name = '', array $setup_args = []): bool |
|
38 | + { |
|
39 | + // required fields MUST be present, so let's make sure they are. |
|
40 | + if (empty($addon_name) || ! is_array($setup_args) || empty($setup_args['module_paths'])) { |
|
41 | + throw new EE_Error( |
|
42 | + esc_html__( |
|
43 | + 'In order to register Modules with EE_Register_Module::register(), you must include a "module_id" (a unique identifier for this set of modules), and an array containing the following keys: "module_paths" (an array of full server paths to folders that contain modules, or to the module files themselves)', |
|
44 | + 'event_espresso' |
|
45 | + ) |
|
46 | + ); |
|
47 | + } |
|
48 | 48 | |
49 | - // make sure we don't register twice |
|
50 | - if (isset(self::$_settings[ $addon_name ])) { |
|
51 | - return true; |
|
52 | - } |
|
49 | + // make sure we don't register twice |
|
50 | + if (isset(self::$_settings[ $addon_name ])) { |
|
51 | + return true; |
|
52 | + } |
|
53 | 53 | |
54 | - // make sure this was called in the right place! |
|
55 | - if ( |
|
56 | - ! did_action('AHEE__EE_System__load_espresso_addons') |
|
57 | - || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
58 | - ) { |
|
59 | - EE_Error::doing_it_wrong( |
|
60 | - __METHOD__, |
|
61 | - esc_html__( |
|
62 | - 'An attempt to register modules has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register modules.', |
|
63 | - 'event_espresso' |
|
64 | - ), |
|
65 | - '4.3.0' |
|
66 | - ); |
|
67 | - } |
|
68 | - // setup $_settings array from incoming values. |
|
69 | - self::$_settings[ $addon_name ] = [ |
|
70 | - // array of full server paths to any EED_Modules used by the module |
|
71 | - 'module_paths' => isset($setup_args['module_paths']) ? (array) $setup_args['module_paths'] : [], |
|
72 | - ]; |
|
73 | - // add to list of modules to be registered |
|
74 | - add_filter( |
|
75 | - 'FHEE__EE_Config__register_modules__modules_to_register', |
|
76 | - ['EE_Register_Module', 'add_modules'] |
|
77 | - ); |
|
78 | - return true; |
|
79 | - } |
|
54 | + // make sure this was called in the right place! |
|
55 | + if ( |
|
56 | + ! did_action('AHEE__EE_System__load_espresso_addons') |
|
57 | + || did_action('AHEE__EE_System__register_shortcodes_modules_and_widgets') |
|
58 | + ) { |
|
59 | + EE_Error::doing_it_wrong( |
|
60 | + __METHOD__, |
|
61 | + esc_html__( |
|
62 | + 'An attempt to register modules has failed because it was not registered at the correct time. Please use the "AHEE__EE_System__register_shortcodes_modules_and_widgets" hook to register modules.', |
|
63 | + 'event_espresso' |
|
64 | + ), |
|
65 | + '4.3.0' |
|
66 | + ); |
|
67 | + } |
|
68 | + // setup $_settings array from incoming values. |
|
69 | + self::$_settings[ $addon_name ] = [ |
|
70 | + // array of full server paths to any EED_Modules used by the module |
|
71 | + 'module_paths' => isset($setup_args['module_paths']) ? (array) $setup_args['module_paths'] : [], |
|
72 | + ]; |
|
73 | + // add to list of modules to be registered |
|
74 | + add_filter( |
|
75 | + 'FHEE__EE_Config__register_modules__modules_to_register', |
|
76 | + ['EE_Register_Module', 'add_modules'] |
|
77 | + ); |
|
78 | + return true; |
|
79 | + } |
|
80 | 80 | |
81 | 81 | |
82 | - /** |
|
83 | - * Filters the list of modules to add ours. |
|
84 | - * and they're just full filepaths to FOLDERS containing a module class file. Eg. |
|
85 | - * array('espresso_monkey'=>'/public_html/wonder-site/wp-content/plugins/ee4/shortcodes/espresso_monkey'...) |
|
86 | - * |
|
87 | - * @param array $modules_to_register array of paths to all modules that require registering |
|
88 | - * @return array |
|
89 | - */ |
|
90 | - public static function add_modules(array $modules_to_register): array |
|
91 | - { |
|
92 | - $module_paths = []; |
|
93 | - foreach (self::$_settings as $settings) { |
|
94 | - $module_paths[] = $settings['module_paths']; |
|
95 | - } |
|
96 | - return array_merge($modules_to_register, ...$module_paths); |
|
97 | - } |
|
82 | + /** |
|
83 | + * Filters the list of modules to add ours. |
|
84 | + * and they're just full filepaths to FOLDERS containing a module class file. Eg. |
|
85 | + * array('espresso_monkey'=>'/public_html/wonder-site/wp-content/plugins/ee4/shortcodes/espresso_monkey'...) |
|
86 | + * |
|
87 | + * @param array $modules_to_register array of paths to all modules that require registering |
|
88 | + * @return array |
|
89 | + */ |
|
90 | + public static function add_modules(array $modules_to_register): array |
|
91 | + { |
|
92 | + $module_paths = []; |
|
93 | + foreach (self::$_settings as $settings) { |
|
94 | + $module_paths[] = $settings['module_paths']; |
|
95 | + } |
|
96 | + return array_merge($modules_to_register, ...$module_paths); |
|
97 | + } |
|
98 | 98 | |
99 | 99 | |
100 | - /** |
|
101 | - * This deregisters a module that was previously registered with a specific $addon_name. |
|
102 | - * |
|
103 | - * @param string $addon_name the name for the module that was previously registered |
|
104 | - * @return void |
|
105 | - * @since 4.3.0 |
|
106 | - */ |
|
107 | - public static function deregister(string $addon_name = '') |
|
108 | - { |
|
109 | - unset(self::$_settings[ $addon_name ]); |
|
110 | - } |
|
100 | + /** |
|
101 | + * This deregisters a module that was previously registered with a specific $addon_name. |
|
102 | + * |
|
103 | + * @param string $addon_name the name for the module that was previously registered |
|
104 | + * @return void |
|
105 | + * @since 4.3.0 |
|
106 | + */ |
|
107 | + public static function deregister(string $addon_name = '') |
|
108 | + { |
|
109 | + unset(self::$_settings[ $addon_name ]); |
|
110 | + } |
|
111 | 111 | } |
@@ -101,7 +101,7 @@ discard block |
||
101 | 101 | */ |
102 | 102 | public function setUUID(string $UUID) |
103 | 103 | { |
104 | - if (! Cuid::isCuid($UUID)) { |
|
104 | + if ( ! Cuid::isCuid($UUID)) { |
|
105 | 105 | throw new InvalidArgumentException( |
106 | 106 | sprintf( |
107 | 107 | /* translators: 1: UUID value, 2: UUID generator function. */ |
@@ -177,7 +177,7 @@ discard block |
||
177 | 177 | */ |
178 | 178 | public function attributes(): ?Attributes |
179 | 179 | { |
180 | - if (! $this->attributes instanceof Attributes) { |
|
180 | + if ( ! $this->attributes instanceof Attributes) { |
|
181 | 181 | $this->attributes = Attributes::fromJson($this->get('FSC_attributes')); |
182 | 182 | } |
183 | 183 | return $this->attributes; |
@@ -243,7 +243,7 @@ discard block |
||
243 | 243 | $form_elements = $this->get_many_related('Form_Element', ['order_by' => ['FIN_order' => 'ASC']]); |
244 | 244 | foreach ($form_elements as $form_element) { |
245 | 245 | if ($form_element instanceof EE_Form_Element) { |
246 | - $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
246 | + $this->form_elements[$form_element->UUID()] = $form_element; |
|
247 | 247 | } |
248 | 248 | } |
249 | 249 | return $this->form_elements; |
@@ -260,7 +260,7 @@ discard block |
||
260 | 260 | foreach ($form_elements as $form_element) { |
261 | 261 | if ($form_element instanceof EE_Form_Element) { |
262 | 262 | $this->_add_relation_to($form_element->UUID(), 'Form_Element'); |
263 | - $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
263 | + $this->form_elements[$form_element->UUID()] = $form_element; |
|
264 | 264 | } |
265 | 265 | } |
266 | 266 | } |
@@ -291,7 +291,7 @@ discard block |
||
291 | 291 | public function formElementFilter(): Closure |
292 | 292 | { |
293 | 293 | $FSC_UUID = strtolower($this->UUID()); |
294 | - return function ($form_element) use ($FSC_UUID) { |
|
294 | + return function($form_element) use ($FSC_UUID) { |
|
295 | 295 | return $form_element instanceof EE_Form_Element && strtolower($form_element->belongsTo()) === $FSC_UUID; |
296 | 296 | }; |
297 | 297 | } |
@@ -306,7 +306,7 @@ discard block |
||
306 | 306 | */ |
307 | 307 | public function label(): ?FormLabel |
308 | 308 | { |
309 | - if (! $this->label instanceof FormLabel) { |
|
309 | + if ( ! $this->label instanceof FormLabel) { |
|
310 | 310 | $this->label = FormLabel::fromJson($this->get('FSC_label')); |
311 | 311 | } |
312 | 312 | return $this->label; |
@@ -25,494 +25,494 @@ |
||
25 | 25 | */ |
26 | 26 | class EE_Form_Section extends EE_Base_Class |
27 | 27 | { |
28 | - /** |
|
29 | - * @var Attributes |
|
30 | - */ |
|
31 | - private $attributes; |
|
32 | - |
|
33 | - /** |
|
34 | - * @var EE_Form_Element[] |
|
35 | - */ |
|
36 | - private $form_elements = []; |
|
37 | - |
|
38 | - /** |
|
39 | - * @var FormLabel |
|
40 | - */ |
|
41 | - private $label; |
|
42 | - |
|
43 | - |
|
44 | - |
|
45 | - /** |
|
46 | - * @param array $props_n_values |
|
47 | - * @return EE_Form_Section |
|
48 | - * @throws EE_Error |
|
49 | - * @throws ReflectionException |
|
50 | - */ |
|
51 | - public static function new_instance(array $props_n_values = []): EE_Form_Section |
|
52 | - { |
|
53 | - $has_object = parent::_check_for_object($props_n_values, __CLASS__); |
|
54 | - return $has_object ?: new self($props_n_values); |
|
55 | - } |
|
56 | - |
|
57 | - |
|
58 | - /** |
|
59 | - * @param array $props_n_values |
|
60 | - * @return EE_Form_Section |
|
61 | - * @throws EE_Error |
|
62 | - * @throws ReflectionException |
|
63 | - */ |
|
64 | - public static function new_instance_from_db(array $props_n_values = []): EE_Form_Section |
|
65 | - { |
|
66 | - return new self($props_n_values, true); |
|
67 | - } |
|
68 | - |
|
69 | - |
|
70 | - /** |
|
71 | - * Form Section UUID (universally unique identifier) |
|
72 | - * |
|
73 | - * @return string |
|
74 | - * @throws EE_Error |
|
75 | - * @throws ReflectionException |
|
76 | - */ |
|
77 | - public function UUID(): string |
|
78 | - { |
|
79 | - return $this->get('FSC_UUID'); |
|
80 | - } |
|
81 | - |
|
82 | - |
|
83 | - /** |
|
84 | - * last 8 characters of the UUID |
|
85 | - * |
|
86 | - * @return string |
|
87 | - * @throws EE_Error |
|
88 | - * @throws ReflectionException |
|
89 | - */ |
|
90 | - public function uuidSlug(): string |
|
91 | - { |
|
92 | - return substr($this->UUID(), -8); |
|
93 | - } |
|
94 | - |
|
95 | - |
|
96 | - /** |
|
97 | - * @param string $UUID |
|
98 | - * @throws EE_Error |
|
99 | - * @throws ReflectionException |
|
100 | - */ |
|
101 | - public function setUUID(string $UUID) |
|
102 | - { |
|
103 | - if (! Cuid::isCuid($UUID)) { |
|
104 | - throw new InvalidArgumentException( |
|
105 | - sprintf( |
|
106 | - /* translators: 1: UUID value, 2: UUID generator function. */ |
|
107 | - esc_html__( |
|
108 | - 'The supplied UUID "%1$s" is invalid or missing. Please use %2$s to generate a valid one.', |
|
109 | - 'event_espresso' |
|
110 | - ), |
|
111 | - $UUID, |
|
112 | - "`Cuid::cuid()`" |
|
113 | - ) |
|
114 | - ); |
|
115 | - } |
|
116 | - $this->set('FSC_UUID', $UUID); |
|
117 | - } |
|
118 | - |
|
119 | - |
|
120 | - /** |
|
121 | - * Form user types that this form section should be presented to. |
|
122 | - * Values correspond to the EEM_Form_Section::APPLIES_TO_* constants. |
|
123 | - * |
|
124 | - * @return string |
|
125 | - * @throws EE_Error |
|
126 | - * @throws ReflectionException |
|
127 | - */ |
|
128 | - public function appliesTo(): string |
|
129 | - { |
|
130 | - return $this->get('FSC_appliesTo'); |
|
131 | - } |
|
132 | - |
|
133 | - |
|
134 | - /** |
|
135 | - * Form user types that this form section should be presented to. |
|
136 | - * Values correspond to the EEM_Form_Section::APPLIES_TO_* constants. |
|
137 | - * |
|
138 | - * @param EE_Registration|string $registrant |
|
139 | - * @return bool |
|
140 | - * @throws EE_Error |
|
141 | - * @throws ReflectionException |
|
142 | - */ |
|
143 | - public function appliesToRegistrant($registrant): bool |
|
144 | - { |
|
145 | - switch ($this->appliesTo()) { |
|
146 | - case EEM_Form_Section::APPLIES_TO_PRIMARY: |
|
147 | - return $registrant instanceof EE_Registration && $registrant->is_primary_registrant(); |
|
148 | - case EEM_Form_Section::APPLIES_TO_PURCHASER: |
|
149 | - return $registrant === 'purchaser'; |
|
150 | - case EEM_Form_Section::APPLIES_TO_REGISTRANTS: |
|
151 | - return $registrant instanceof EE_Registration && ! $registrant->is_primary_registrant(); |
|
152 | - case EEM_Form_Section::APPLIES_TO_ALL: |
|
153 | - default: |
|
154 | - return true; |
|
155 | - } |
|
156 | - } |
|
157 | - |
|
158 | - |
|
159 | - /** |
|
160 | - * @param string $user_type |
|
161 | - * @throws EE_Error |
|
162 | - * @throws ReflectionException |
|
163 | - */ |
|
164 | - public function setAppliesTo(string $user_type) |
|
165 | - { |
|
166 | - $this->set('FSC_appliesTo', $user_type); |
|
167 | - } |
|
168 | - |
|
169 | - |
|
170 | - /** |
|
171 | - * JSON string of HTML attributes, such as class, to be applied to this form section\'s container. |
|
172 | - * |
|
173 | - * @return Attributes |
|
174 | - * @throws EE_Error |
|
175 | - * @throws ReflectionException |
|
176 | - */ |
|
177 | - public function attributes(): ?Attributes |
|
178 | - { |
|
179 | - if (! $this->attributes instanceof Attributes) { |
|
180 | - $this->attributes = Attributes::fromJson($this->get('FSC_attributes')); |
|
181 | - } |
|
182 | - return $this->attributes; |
|
183 | - } |
|
184 | - |
|
185 | - |
|
186 | - /** |
|
187 | - * @param Attributes $attributes |
|
188 | - * @throws EE_Error |
|
189 | - * @throws ReflectionException |
|
190 | - */ |
|
191 | - public function setAttributes(Attributes $attributes) |
|
192 | - { |
|
193 | - // set local object |
|
194 | - $this->attributes = $attributes; |
|
195 | - // then pass to model as an array which will get converted to JSON by the model field |
|
196 | - $this->set('FSC_attributes', $attributes->toArray()); |
|
197 | - } |
|
198 | - |
|
199 | - |
|
200 | - /** |
|
201 | - * UUID or ID of related entity this form section belongs to. |
|
202 | - * |
|
203 | - * @return string |
|
204 | - * @throws EE_Error |
|
205 | - * @throws ReflectionException |
|
206 | - */ |
|
207 | - public function belongsTo(): ?string |
|
208 | - { |
|
209 | - return $this->get('FSC_belongsTo'); |
|
210 | - } |
|
211 | - |
|
212 | - |
|
213 | - /** |
|
214 | - * @param string $parent_UUID |
|
215 | - * @throws EE_Error |
|
216 | - * @throws ReflectionException |
|
217 | - */ |
|
218 | - public function setBelongsTo(string $parent_UUID) |
|
219 | - { |
|
220 | - $this->set('FSC_belongsTo', $parent_UUID); |
|
221 | - } |
|
222 | - |
|
223 | - |
|
224 | - /** |
|
225 | - * @return EE_Form_Element[] |
|
226 | - * @throws EE_Error |
|
227 | - * @throws ReflectionException |
|
228 | - */ |
|
229 | - public function formElements(): array |
|
230 | - { |
|
231 | - return $this->form_elements ?: $this->getFormElements(); |
|
232 | - } |
|
233 | - |
|
234 | - |
|
235 | - /** |
|
236 | - * @return EE_Form_Element[] |
|
237 | - * @throws EE_Error |
|
238 | - * @throws ReflectionException |
|
239 | - */ |
|
240 | - private function getFormElements(): array |
|
241 | - { |
|
242 | - $form_elements = $this->get_many_related('Form_Element', ['order_by' => ['FIN_order' => 'ASC']]); |
|
243 | - foreach ($form_elements as $form_element) { |
|
244 | - if ($form_element instanceof EE_Form_Element) { |
|
245 | - $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
246 | - } |
|
247 | - } |
|
248 | - return $this->form_elements; |
|
249 | - } |
|
250 | - |
|
251 | - |
|
252 | - /** |
|
253 | - * @param EE_Form_Element[] $form_elements |
|
254 | - * @throws EE_Error |
|
255 | - * @throws ReflectionException |
|
256 | - */ |
|
257 | - public function setFormElements(array $form_elements): void |
|
258 | - { |
|
259 | - foreach ($form_elements as $form_element) { |
|
260 | - if ($form_element instanceof EE_Form_Element) { |
|
261 | - $this->_add_relation_to($form_element->UUID(), 'Form_Element'); |
|
262 | - $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
263 | - } |
|
264 | - } |
|
265 | - } |
|
266 | - |
|
267 | - |
|
268 | - /** |
|
269 | - * @param EE_Form_Element[] $all_form_elements |
|
270 | - * @return EE_Form_Element[] |
|
271 | - * @throws EE_Error |
|
272 | - * @throws ReflectionException |
|
273 | - */ |
|
274 | - public function filterFormElements(array $all_form_elements): array |
|
275 | - { |
|
276 | - return array_filter($all_form_elements, $this->formElementFilter()); |
|
277 | - } |
|
278 | - |
|
279 | - |
|
280 | - /** |
|
281 | - * returns a closure that can be used to filter form elements for this form section |
|
282 | - * usage: |
|
283 | - * $filter = EEM_Form_Element::formElementFilter(); |
|
284 | - * $filtered_form_elements = array_filter( $all_form_elements, $filter ); |
|
285 | - * |
|
286 | - * @return Closure |
|
287 | - * @throws EE_Error |
|
288 | - * @throws ReflectionException |
|
289 | - */ |
|
290 | - public function formElementFilter(): Closure |
|
291 | - { |
|
292 | - $FSC_UUID = strtolower($this->UUID()); |
|
293 | - return function ($form_element) use ($FSC_UUID) { |
|
294 | - return $form_element instanceof EE_Form_Element && strtolower($form_element->belongsTo()) === $FSC_UUID; |
|
295 | - }; |
|
296 | - } |
|
297 | - |
|
298 | - |
|
299 | - /** |
|
300 | - * returns a FormLabel object for managing form section labels, ie: the form section heading |
|
301 | - * |
|
302 | - * @return FormLabel |
|
303 | - * @throws EE_Error |
|
304 | - * @throws ReflectionException |
|
305 | - */ |
|
306 | - public function label(): ?FormLabel |
|
307 | - { |
|
308 | - if (! $this->label instanceof FormLabel) { |
|
309 | - $this->label = FormLabel::fromJson($this->get('FSC_label')); |
|
310 | - } |
|
311 | - return $this->label; |
|
312 | - } |
|
313 | - |
|
314 | - |
|
315 | - /** |
|
316 | - * @param FormLabel $label |
|
317 | - * @throws EE_Error |
|
318 | - * @throws ReflectionException |
|
319 | - */ |
|
320 | - public function setLabel(FormLabel $label) |
|
321 | - { |
|
322 | - // set local object |
|
323 | - $this->label = $label; |
|
324 | - // then pass to model as an array which will get converted to JSON by the model field |
|
325 | - $this->set('FSC_label', $label->toJson()); |
|
326 | - } |
|
327 | - |
|
328 | - |
|
329 | - /** |
|
330 | - * Order in which form section appears in a form. |
|
331 | - * |
|
332 | - * @return int |
|
333 | - * @throws EE_Error |
|
334 | - * @throws ReflectionException |
|
335 | - */ |
|
336 | - public function order(): int |
|
337 | - { |
|
338 | - return $this->get('FSC_order'); |
|
339 | - } |
|
340 | - |
|
341 | - |
|
342 | - /** |
|
343 | - * @param int $order |
|
344 | - * @throws EE_Error |
|
345 | - * @throws ReflectionException |
|
346 | - */ |
|
347 | - public function setOrder(int $order) |
|
348 | - { |
|
349 | - $this->set('FSC_order', $order); |
|
350 | - } |
|
351 | - |
|
352 | - |
|
353 | - /** |
|
354 | - * combination of public label and UUID slug for use in identifiers |
|
355 | - * |
|
356 | - * @return string |
|
357 | - * @throws EE_Error |
|
358 | - * @throws ReflectionException |
|
359 | - */ |
|
360 | - public function slug(): ?string |
|
361 | - { |
|
362 | - $label = sanitize_title($this->label()->publicLabel()); |
|
363 | - return "{$label}-{$this->uuidSlug()}"; |
|
364 | - } |
|
365 | - |
|
366 | - |
|
367 | - /** |
|
368 | - * Whether form section is active, archived, trashed, or used as a default on new forms. |
|
369 | - * Values correspond to the EEM_Form_Section::STATUS_* constants. |
|
370 | - * |
|
371 | - * @return string |
|
372 | - * @throws EE_Error |
|
373 | - * @throws ReflectionException |
|
374 | - */ |
|
375 | - public function status(): ?string |
|
376 | - { |
|
377 | - return $this->get('FSC_status'); |
|
378 | - } |
|
379 | - |
|
380 | - |
|
381 | - /** |
|
382 | - * Whether form section is active, archived, trashed, or used as a default on new forms. |
|
383 | - * Values correspond to the EEM_Form_Section::STATUS_* constants. |
|
384 | - * |
|
385 | - * @param string $status |
|
386 | - * @throws EE_Error |
|
387 | - * @throws ReflectionException |
|
388 | - */ |
|
389 | - public function setStatus(string $status) |
|
390 | - { |
|
391 | - $this->set('FSC_status', $status); |
|
392 | - } |
|
393 | - |
|
394 | - |
|
395 | - /** |
|
396 | - * returns the id the wordpress user who created this question |
|
397 | - * |
|
398 | - * @return int |
|
399 | - * @throws EE_Error |
|
400 | - * @throws ReflectionException |
|
401 | - */ |
|
402 | - public function wp_user(): int |
|
403 | - { |
|
404 | - return $this->get('FSC_wpUser'); |
|
405 | - } |
|
406 | - |
|
407 | - |
|
408 | - /** |
|
409 | - * @param int $wp_user |
|
410 | - * @throws EE_Error |
|
411 | - * @throws ReflectionException |
|
412 | - */ |
|
413 | - public function setWpUser(int $wp_user) |
|
414 | - { |
|
415 | - $this->set('FSC_wpUser', $wp_user); |
|
416 | - } |
|
417 | - |
|
418 | - |
|
419 | - /** |
|
420 | - * @param array $set_cols_n_values |
|
421 | - * @return bool|int|string |
|
422 | - * @throws EE_Error |
|
423 | - * @throws ReflectionException |
|
424 | - */ |
|
425 | - public function save($set_cols_n_values = []) |
|
426 | - { |
|
427 | - // make sure internal versions for all composite objects are updated |
|
428 | - $this->set('FSC_attributes', $this->attributes()->toArray()); |
|
429 | - $this->set('FSC_label', $this->label()->toArray()); |
|
430 | - return parent::save($set_cols_n_values); |
|
431 | - } |
|
432 | - |
|
433 | - /** |
|
434 | - * Whether the section is active. |
|
435 | - * |
|
436 | - * @return boolean TRUE if is active, FALSE if not. |
|
437 | - * @throws ReflectionException |
|
438 | - * @throws InvalidArgumentException |
|
439 | - * @throws InvalidInterfaceException |
|
440 | - * @throws InvalidDataTypeException |
|
441 | - * @throws EE_Error |
|
442 | - */ |
|
443 | - public function isActive(): bool |
|
444 | - { |
|
445 | - return $this->status() === FormStatus::ACTIVE; |
|
446 | - } |
|
447 | - |
|
448 | - /** |
|
449 | - * Whether the section is archived. |
|
450 | - * |
|
451 | - * @return boolean TRUE if is archived, FALSE if not. |
|
452 | - * @throws ReflectionException |
|
453 | - * @throws InvalidArgumentException |
|
454 | - * @throws InvalidInterfaceException |
|
455 | - * @throws InvalidDataTypeException |
|
456 | - * @throws EE_Error |
|
457 | - */ |
|
458 | - public function isArchived(): bool |
|
459 | - { |
|
460 | - return $this->status() === FormStatus::ARCHIVED; |
|
461 | - } |
|
462 | - |
|
463 | - /** |
|
464 | - * Whether the section is a default one. |
|
465 | - * |
|
466 | - * @return boolean TRUE if is default, FALSE if not. |
|
467 | - * @throws ReflectionException |
|
468 | - * @throws InvalidArgumentException |
|
469 | - * @throws InvalidInterfaceException |
|
470 | - * @throws InvalidDataTypeException |
|
471 | - * @throws EE_Error |
|
472 | - */ |
|
473 | - public function isDefault(): bool |
|
474 | - { |
|
475 | - return $this->status() === FormStatus::DEFAULT; |
|
476 | - } |
|
477 | - |
|
478 | - /** |
|
479 | - * Whether the section is a shared one. |
|
480 | - * |
|
481 | - * @return boolean TRUE if is shared, FALSE if not. |
|
482 | - * @throws ReflectionException |
|
483 | - * @throws InvalidArgumentException |
|
484 | - * @throws InvalidInterfaceException |
|
485 | - * @throws InvalidDataTypeException |
|
486 | - * @throws EE_Error |
|
487 | - */ |
|
488 | - public function isShared(): bool |
|
489 | - { |
|
490 | - return $this->status() === FormStatus::SHARED; |
|
491 | - } |
|
492 | - |
|
493 | - /** |
|
494 | - * Whether the section is trashed. |
|
495 | - * |
|
496 | - * @return boolean TRUE if is trashed, FALSE if not. |
|
497 | - * @throws ReflectionException |
|
498 | - * @throws InvalidArgumentException |
|
499 | - * @throws InvalidInterfaceException |
|
500 | - * @throws InvalidDataTypeException |
|
501 | - * @throws EE_Error |
|
502 | - */ |
|
503 | - public function isTrashed(): bool |
|
504 | - { |
|
505 | - return $this->status() === FormStatus::TRASHED; |
|
506 | - } |
|
507 | - |
|
508 | - |
|
509 | - /** |
|
510 | - * @return bool |
|
511 | - * @throws EE_Error |
|
512 | - * @throws ReflectionException |
|
513 | - */ |
|
514 | - public function isTopLevelFormSection(): bool |
|
515 | - { |
|
516 | - return empty($this->belongsTo()); |
|
517 | - } |
|
28 | + /** |
|
29 | + * @var Attributes |
|
30 | + */ |
|
31 | + private $attributes; |
|
32 | + |
|
33 | + /** |
|
34 | + * @var EE_Form_Element[] |
|
35 | + */ |
|
36 | + private $form_elements = []; |
|
37 | + |
|
38 | + /** |
|
39 | + * @var FormLabel |
|
40 | + */ |
|
41 | + private $label; |
|
42 | + |
|
43 | + |
|
44 | + |
|
45 | + /** |
|
46 | + * @param array $props_n_values |
|
47 | + * @return EE_Form_Section |
|
48 | + * @throws EE_Error |
|
49 | + * @throws ReflectionException |
|
50 | + */ |
|
51 | + public static function new_instance(array $props_n_values = []): EE_Form_Section |
|
52 | + { |
|
53 | + $has_object = parent::_check_for_object($props_n_values, __CLASS__); |
|
54 | + return $has_object ?: new self($props_n_values); |
|
55 | + } |
|
56 | + |
|
57 | + |
|
58 | + /** |
|
59 | + * @param array $props_n_values |
|
60 | + * @return EE_Form_Section |
|
61 | + * @throws EE_Error |
|
62 | + * @throws ReflectionException |
|
63 | + */ |
|
64 | + public static function new_instance_from_db(array $props_n_values = []): EE_Form_Section |
|
65 | + { |
|
66 | + return new self($props_n_values, true); |
|
67 | + } |
|
68 | + |
|
69 | + |
|
70 | + /** |
|
71 | + * Form Section UUID (universally unique identifier) |
|
72 | + * |
|
73 | + * @return string |
|
74 | + * @throws EE_Error |
|
75 | + * @throws ReflectionException |
|
76 | + */ |
|
77 | + public function UUID(): string |
|
78 | + { |
|
79 | + return $this->get('FSC_UUID'); |
|
80 | + } |
|
81 | + |
|
82 | + |
|
83 | + /** |
|
84 | + * last 8 characters of the UUID |
|
85 | + * |
|
86 | + * @return string |
|
87 | + * @throws EE_Error |
|
88 | + * @throws ReflectionException |
|
89 | + */ |
|
90 | + public function uuidSlug(): string |
|
91 | + { |
|
92 | + return substr($this->UUID(), -8); |
|
93 | + } |
|
94 | + |
|
95 | + |
|
96 | + /** |
|
97 | + * @param string $UUID |
|
98 | + * @throws EE_Error |
|
99 | + * @throws ReflectionException |
|
100 | + */ |
|
101 | + public function setUUID(string $UUID) |
|
102 | + { |
|
103 | + if (! Cuid::isCuid($UUID)) { |
|
104 | + throw new InvalidArgumentException( |
|
105 | + sprintf( |
|
106 | + /* translators: 1: UUID value, 2: UUID generator function. */ |
|
107 | + esc_html__( |
|
108 | + 'The supplied UUID "%1$s" is invalid or missing. Please use %2$s to generate a valid one.', |
|
109 | + 'event_espresso' |
|
110 | + ), |
|
111 | + $UUID, |
|
112 | + "`Cuid::cuid()`" |
|
113 | + ) |
|
114 | + ); |
|
115 | + } |
|
116 | + $this->set('FSC_UUID', $UUID); |
|
117 | + } |
|
118 | + |
|
119 | + |
|
120 | + /** |
|
121 | + * Form user types that this form section should be presented to. |
|
122 | + * Values correspond to the EEM_Form_Section::APPLIES_TO_* constants. |
|
123 | + * |
|
124 | + * @return string |
|
125 | + * @throws EE_Error |
|
126 | + * @throws ReflectionException |
|
127 | + */ |
|
128 | + public function appliesTo(): string |
|
129 | + { |
|
130 | + return $this->get('FSC_appliesTo'); |
|
131 | + } |
|
132 | + |
|
133 | + |
|
134 | + /** |
|
135 | + * Form user types that this form section should be presented to. |
|
136 | + * Values correspond to the EEM_Form_Section::APPLIES_TO_* constants. |
|
137 | + * |
|
138 | + * @param EE_Registration|string $registrant |
|
139 | + * @return bool |
|
140 | + * @throws EE_Error |
|
141 | + * @throws ReflectionException |
|
142 | + */ |
|
143 | + public function appliesToRegistrant($registrant): bool |
|
144 | + { |
|
145 | + switch ($this->appliesTo()) { |
|
146 | + case EEM_Form_Section::APPLIES_TO_PRIMARY: |
|
147 | + return $registrant instanceof EE_Registration && $registrant->is_primary_registrant(); |
|
148 | + case EEM_Form_Section::APPLIES_TO_PURCHASER: |
|
149 | + return $registrant === 'purchaser'; |
|
150 | + case EEM_Form_Section::APPLIES_TO_REGISTRANTS: |
|
151 | + return $registrant instanceof EE_Registration && ! $registrant->is_primary_registrant(); |
|
152 | + case EEM_Form_Section::APPLIES_TO_ALL: |
|
153 | + default: |
|
154 | + return true; |
|
155 | + } |
|
156 | + } |
|
157 | + |
|
158 | + |
|
159 | + /** |
|
160 | + * @param string $user_type |
|
161 | + * @throws EE_Error |
|
162 | + * @throws ReflectionException |
|
163 | + */ |
|
164 | + public function setAppliesTo(string $user_type) |
|
165 | + { |
|
166 | + $this->set('FSC_appliesTo', $user_type); |
|
167 | + } |
|
168 | + |
|
169 | + |
|
170 | + /** |
|
171 | + * JSON string of HTML attributes, such as class, to be applied to this form section\'s container. |
|
172 | + * |
|
173 | + * @return Attributes |
|
174 | + * @throws EE_Error |
|
175 | + * @throws ReflectionException |
|
176 | + */ |
|
177 | + public function attributes(): ?Attributes |
|
178 | + { |
|
179 | + if (! $this->attributes instanceof Attributes) { |
|
180 | + $this->attributes = Attributes::fromJson($this->get('FSC_attributes')); |
|
181 | + } |
|
182 | + return $this->attributes; |
|
183 | + } |
|
184 | + |
|
185 | + |
|
186 | + /** |
|
187 | + * @param Attributes $attributes |
|
188 | + * @throws EE_Error |
|
189 | + * @throws ReflectionException |
|
190 | + */ |
|
191 | + public function setAttributes(Attributes $attributes) |
|
192 | + { |
|
193 | + // set local object |
|
194 | + $this->attributes = $attributes; |
|
195 | + // then pass to model as an array which will get converted to JSON by the model field |
|
196 | + $this->set('FSC_attributes', $attributes->toArray()); |
|
197 | + } |
|
198 | + |
|
199 | + |
|
200 | + /** |
|
201 | + * UUID or ID of related entity this form section belongs to. |
|
202 | + * |
|
203 | + * @return string |
|
204 | + * @throws EE_Error |
|
205 | + * @throws ReflectionException |
|
206 | + */ |
|
207 | + public function belongsTo(): ?string |
|
208 | + { |
|
209 | + return $this->get('FSC_belongsTo'); |
|
210 | + } |
|
211 | + |
|
212 | + |
|
213 | + /** |
|
214 | + * @param string $parent_UUID |
|
215 | + * @throws EE_Error |
|
216 | + * @throws ReflectionException |
|
217 | + */ |
|
218 | + public function setBelongsTo(string $parent_UUID) |
|
219 | + { |
|
220 | + $this->set('FSC_belongsTo', $parent_UUID); |
|
221 | + } |
|
222 | + |
|
223 | + |
|
224 | + /** |
|
225 | + * @return EE_Form_Element[] |
|
226 | + * @throws EE_Error |
|
227 | + * @throws ReflectionException |
|
228 | + */ |
|
229 | + public function formElements(): array |
|
230 | + { |
|
231 | + return $this->form_elements ?: $this->getFormElements(); |
|
232 | + } |
|
233 | + |
|
234 | + |
|
235 | + /** |
|
236 | + * @return EE_Form_Element[] |
|
237 | + * @throws EE_Error |
|
238 | + * @throws ReflectionException |
|
239 | + */ |
|
240 | + private function getFormElements(): array |
|
241 | + { |
|
242 | + $form_elements = $this->get_many_related('Form_Element', ['order_by' => ['FIN_order' => 'ASC']]); |
|
243 | + foreach ($form_elements as $form_element) { |
|
244 | + if ($form_element instanceof EE_Form_Element) { |
|
245 | + $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
246 | + } |
|
247 | + } |
|
248 | + return $this->form_elements; |
|
249 | + } |
|
250 | + |
|
251 | + |
|
252 | + /** |
|
253 | + * @param EE_Form_Element[] $form_elements |
|
254 | + * @throws EE_Error |
|
255 | + * @throws ReflectionException |
|
256 | + */ |
|
257 | + public function setFormElements(array $form_elements): void |
|
258 | + { |
|
259 | + foreach ($form_elements as $form_element) { |
|
260 | + if ($form_element instanceof EE_Form_Element) { |
|
261 | + $this->_add_relation_to($form_element->UUID(), 'Form_Element'); |
|
262 | + $this->form_elements[ $form_element->UUID() ] = $form_element; |
|
263 | + } |
|
264 | + } |
|
265 | + } |
|
266 | + |
|
267 | + |
|
268 | + /** |
|
269 | + * @param EE_Form_Element[] $all_form_elements |
|
270 | + * @return EE_Form_Element[] |
|
271 | + * @throws EE_Error |
|
272 | + * @throws ReflectionException |
|
273 | + */ |
|
274 | + public function filterFormElements(array $all_form_elements): array |
|
275 | + { |
|
276 | + return array_filter($all_form_elements, $this->formElementFilter()); |
|
277 | + } |
|
278 | + |
|
279 | + |
|
280 | + /** |
|
281 | + * returns a closure that can be used to filter form elements for this form section |
|
282 | + * usage: |
|
283 | + * $filter = EEM_Form_Element::formElementFilter(); |
|
284 | + * $filtered_form_elements = array_filter( $all_form_elements, $filter ); |
|
285 | + * |
|
286 | + * @return Closure |
|
287 | + * @throws EE_Error |
|
288 | + * @throws ReflectionException |
|
289 | + */ |
|
290 | + public function formElementFilter(): Closure |
|
291 | + { |
|
292 | + $FSC_UUID = strtolower($this->UUID()); |
|
293 | + return function ($form_element) use ($FSC_UUID) { |
|
294 | + return $form_element instanceof EE_Form_Element && strtolower($form_element->belongsTo()) === $FSC_UUID; |
|
295 | + }; |
|
296 | + } |
|
297 | + |
|
298 | + |
|
299 | + /** |
|
300 | + * returns a FormLabel object for managing form section labels, ie: the form section heading |
|
301 | + * |
|
302 | + * @return FormLabel |
|
303 | + * @throws EE_Error |
|
304 | + * @throws ReflectionException |
|
305 | + */ |
|
306 | + public function label(): ?FormLabel |
|
307 | + { |
|
308 | + if (! $this->label instanceof FormLabel) { |
|
309 | + $this->label = FormLabel::fromJson($this->get('FSC_label')); |
|
310 | + } |
|
311 | + return $this->label; |
|
312 | + } |
|
313 | + |
|
314 | + |
|
315 | + /** |
|
316 | + * @param FormLabel $label |
|
317 | + * @throws EE_Error |
|
318 | + * @throws ReflectionException |
|
319 | + */ |
|
320 | + public function setLabel(FormLabel $label) |
|
321 | + { |
|
322 | + // set local object |
|
323 | + $this->label = $label; |
|
324 | + // then pass to model as an array which will get converted to JSON by the model field |
|
325 | + $this->set('FSC_label', $label->toJson()); |
|
326 | + } |
|
327 | + |
|
328 | + |
|
329 | + /** |
|
330 | + * Order in which form section appears in a form. |
|
331 | + * |
|
332 | + * @return int |
|
333 | + * @throws EE_Error |
|
334 | + * @throws ReflectionException |
|
335 | + */ |
|
336 | + public function order(): int |
|
337 | + { |
|
338 | + return $this->get('FSC_order'); |
|
339 | + } |
|
340 | + |
|
341 | + |
|
342 | + /** |
|
343 | + * @param int $order |
|
344 | + * @throws EE_Error |
|
345 | + * @throws ReflectionException |
|
346 | + */ |
|
347 | + public function setOrder(int $order) |
|
348 | + { |
|
349 | + $this->set('FSC_order', $order); |
|
350 | + } |
|
351 | + |
|
352 | + |
|
353 | + /** |
|
354 | + * combination of public label and UUID slug for use in identifiers |
|
355 | + * |
|
356 | + * @return string |
|
357 | + * @throws EE_Error |
|
358 | + * @throws ReflectionException |
|
359 | + */ |
|
360 | + public function slug(): ?string |
|
361 | + { |
|
362 | + $label = sanitize_title($this->label()->publicLabel()); |
|
363 | + return "{$label}-{$this->uuidSlug()}"; |
|
364 | + } |
|
365 | + |
|
366 | + |
|
367 | + /** |
|
368 | + * Whether form section is active, archived, trashed, or used as a default on new forms. |
|
369 | + * Values correspond to the EEM_Form_Section::STATUS_* constants. |
|
370 | + * |
|
371 | + * @return string |
|
372 | + * @throws EE_Error |
|
373 | + * @throws ReflectionException |
|
374 | + */ |
|
375 | + public function status(): ?string |
|
376 | + { |
|
377 | + return $this->get('FSC_status'); |
|
378 | + } |
|
379 | + |
|
380 | + |
|
381 | + /** |
|
382 | + * Whether form section is active, archived, trashed, or used as a default on new forms. |
|
383 | + * Values correspond to the EEM_Form_Section::STATUS_* constants. |
|
384 | + * |
|
385 | + * @param string $status |
|
386 | + * @throws EE_Error |
|
387 | + * @throws ReflectionException |
|
388 | + */ |
|
389 | + public function setStatus(string $status) |
|
390 | + { |
|
391 | + $this->set('FSC_status', $status); |
|
392 | + } |
|
393 | + |
|
394 | + |
|
395 | + /** |
|
396 | + * returns the id the wordpress user who created this question |
|
397 | + * |
|
398 | + * @return int |
|
399 | + * @throws EE_Error |
|
400 | + * @throws ReflectionException |
|
401 | + */ |
|
402 | + public function wp_user(): int |
|
403 | + { |
|
404 | + return $this->get('FSC_wpUser'); |
|
405 | + } |
|
406 | + |
|
407 | + |
|
408 | + /** |
|
409 | + * @param int $wp_user |
|
410 | + * @throws EE_Error |
|
411 | + * @throws ReflectionException |
|
412 | + */ |
|
413 | + public function setWpUser(int $wp_user) |
|
414 | + { |
|
415 | + $this->set('FSC_wpUser', $wp_user); |
|
416 | + } |
|
417 | + |
|
418 | + |
|
419 | + /** |
|
420 | + * @param array $set_cols_n_values |
|
421 | + * @return bool|int|string |
|
422 | + * @throws EE_Error |
|
423 | + * @throws ReflectionException |
|
424 | + */ |
|
425 | + public function save($set_cols_n_values = []) |
|
426 | + { |
|
427 | + // make sure internal versions for all composite objects are updated |
|
428 | + $this->set('FSC_attributes', $this->attributes()->toArray()); |
|
429 | + $this->set('FSC_label', $this->label()->toArray()); |
|
430 | + return parent::save($set_cols_n_values); |
|
431 | + } |
|
432 | + |
|
433 | + /** |
|
434 | + * Whether the section is active. |
|
435 | + * |
|
436 | + * @return boolean TRUE if is active, FALSE if not. |
|
437 | + * @throws ReflectionException |
|
438 | + * @throws InvalidArgumentException |
|
439 | + * @throws InvalidInterfaceException |
|
440 | + * @throws InvalidDataTypeException |
|
441 | + * @throws EE_Error |
|
442 | + */ |
|
443 | + public function isActive(): bool |
|
444 | + { |
|
445 | + return $this->status() === FormStatus::ACTIVE; |
|
446 | + } |
|
447 | + |
|
448 | + /** |
|
449 | + * Whether the section is archived. |
|
450 | + * |
|
451 | + * @return boolean TRUE if is archived, FALSE if not. |
|
452 | + * @throws ReflectionException |
|
453 | + * @throws InvalidArgumentException |
|
454 | + * @throws InvalidInterfaceException |
|
455 | + * @throws InvalidDataTypeException |
|
456 | + * @throws EE_Error |
|
457 | + */ |
|
458 | + public function isArchived(): bool |
|
459 | + { |
|
460 | + return $this->status() === FormStatus::ARCHIVED; |
|
461 | + } |
|
462 | + |
|
463 | + /** |
|
464 | + * Whether the section is a default one. |
|
465 | + * |
|
466 | + * @return boolean TRUE if is default, FALSE if not. |
|
467 | + * @throws ReflectionException |
|
468 | + * @throws InvalidArgumentException |
|
469 | + * @throws InvalidInterfaceException |
|
470 | + * @throws InvalidDataTypeException |
|
471 | + * @throws EE_Error |
|
472 | + */ |
|
473 | + public function isDefault(): bool |
|
474 | + { |
|
475 | + return $this->status() === FormStatus::DEFAULT; |
|
476 | + } |
|
477 | + |
|
478 | + /** |
|
479 | + * Whether the section is a shared one. |
|
480 | + * |
|
481 | + * @return boolean TRUE if is shared, FALSE if not. |
|
482 | + * @throws ReflectionException |
|
483 | + * @throws InvalidArgumentException |
|
484 | + * @throws InvalidInterfaceException |
|
485 | + * @throws InvalidDataTypeException |
|
486 | + * @throws EE_Error |
|
487 | + */ |
|
488 | + public function isShared(): bool |
|
489 | + { |
|
490 | + return $this->status() === FormStatus::SHARED; |
|
491 | + } |
|
492 | + |
|
493 | + /** |
|
494 | + * Whether the section is trashed. |
|
495 | + * |
|
496 | + * @return boolean TRUE if is trashed, FALSE if not. |
|
497 | + * @throws ReflectionException |
|
498 | + * @throws InvalidArgumentException |
|
499 | + * @throws InvalidInterfaceException |
|
500 | + * @throws InvalidDataTypeException |
|
501 | + * @throws EE_Error |
|
502 | + */ |
|
503 | + public function isTrashed(): bool |
|
504 | + { |
|
505 | + return $this->status() === FormStatus::TRASHED; |
|
506 | + } |
|
507 | + |
|
508 | + |
|
509 | + /** |
|
510 | + * @return bool |
|
511 | + * @throws EE_Error |
|
512 | + * @throws ReflectionException |
|
513 | + */ |
|
514 | + public function isTopLevelFormSection(): bool |
|
515 | + { |
|
516 | + return empty($this->belongsTo()); |
|
517 | + } |
|
518 | 518 | } |
@@ -52,14 +52,14 @@ discard block |
||
52 | 52 | */ |
53 | 53 | public function create(EE_Base_Class $entity): array |
54 | 54 | { |
55 | - if (! $entity instanceof EE_Event) { |
|
55 | + if ( ! $entity instanceof EE_Event) { |
|
56 | 56 | throw new InvalidEntityException($entity, 'EE_Event'); |
57 | 57 | } |
58 | 58 | $default_dates = []; |
59 | 59 | $blank_dates = $this->datetime_model->create_new_blank_datetime(); |
60 | 60 | if (is_array($blank_dates)) { |
61 | 61 | foreach ($blank_dates as $blank_date) { |
62 | - if (! $blank_date instanceof EE_Datetime) { |
|
62 | + if ( ! $blank_date instanceof EE_Datetime) { |
|
63 | 63 | throw new InvalidEntityException($blank_date, 'EE_Datetime'); |
64 | 64 | } |
65 | 65 | // clone date, strip out ID, then save to get a new ID |
@@ -68,7 +68,7 @@ discard block |
||
68 | 68 | $default_date->save(); |
69 | 69 | $default_date->_add_relation_to($entity->ID(), 'Event'); |
70 | 70 | $this->default_tickets->create($default_date); |
71 | - $default_dates[ $default_date->ID() ] = $default_date; |
|
71 | + $default_dates[$default_date->ID()] = $default_date; |
|
72 | 72 | } |
73 | 73 | } |
74 | 74 | return $default_dates; |
@@ -20,56 +20,56 @@ |
||
20 | 20 | */ |
21 | 21 | class DefaultDatetimes implements DefaultEntityGeneratorInterface |
22 | 22 | { |
23 | - /** |
|
24 | - * @var DefaultTickets $default_tickets |
|
25 | - */ |
|
26 | - protected $default_tickets; |
|
23 | + /** |
|
24 | + * @var DefaultTickets $default_tickets |
|
25 | + */ |
|
26 | + protected $default_tickets; |
|
27 | 27 | |
28 | - /** |
|
29 | - * @var EEM_Datetime $datetime_model |
|
30 | - */ |
|
31 | - protected $datetime_model; |
|
28 | + /** |
|
29 | + * @var EEM_Datetime $datetime_model |
|
30 | + */ |
|
31 | + protected $datetime_model; |
|
32 | 32 | |
33 | - /** |
|
34 | - * @param DefaultTickets $default_tickets |
|
35 | - * @param EEM_Datetime $datetime_model |
|
36 | - */ |
|
37 | - public function __construct(DefaultTickets $default_tickets, EEM_Datetime $datetime_model) |
|
38 | - { |
|
39 | - $this->default_tickets = $default_tickets; |
|
40 | - $this->datetime_model = $datetime_model; |
|
41 | - } |
|
33 | + /** |
|
34 | + * @param DefaultTickets $default_tickets |
|
35 | + * @param EEM_Datetime $datetime_model |
|
36 | + */ |
|
37 | + public function __construct(DefaultTickets $default_tickets, EEM_Datetime $datetime_model) |
|
38 | + { |
|
39 | + $this->default_tickets = $default_tickets; |
|
40 | + $this->datetime_model = $datetime_model; |
|
41 | + } |
|
42 | 42 | |
43 | 43 | |
44 | - /** |
|
45 | - * @param EE_Event|EE_Base_Class $entity |
|
46 | - * @return EE_Datetime[] |
|
47 | - * @throws EE_Error |
|
48 | - * @throws InvalidEntityException |
|
49 | - * @throws ReflectionException |
|
50 | - * @since 5.0.0.p |
|
51 | - */ |
|
52 | - public function create(EE_Base_Class $entity): array |
|
53 | - { |
|
54 | - if (! $entity instanceof EE_Event) { |
|
55 | - throw new InvalidEntityException($entity, 'EE_Event'); |
|
56 | - } |
|
57 | - $default_dates = []; |
|
58 | - $blank_dates = $this->datetime_model->create_new_blank_datetime(); |
|
59 | - if (is_array($blank_dates)) { |
|
60 | - foreach ($blank_dates as $blank_date) { |
|
61 | - if (! $blank_date instanceof EE_Datetime) { |
|
62 | - throw new InvalidEntityException($blank_date, 'EE_Datetime'); |
|
63 | - } |
|
64 | - // clone date, strip out ID, then save to get a new ID |
|
65 | - $default_date = clone $blank_date; |
|
66 | - $default_date->set('DTT_ID', null); |
|
67 | - $default_date->save(); |
|
68 | - $default_date->_add_relation_to($entity->ID(), 'Event'); |
|
69 | - $this->default_tickets->create($default_date); |
|
70 | - $default_dates[ $default_date->ID() ] = $default_date; |
|
71 | - } |
|
72 | - } |
|
73 | - return $default_dates; |
|
74 | - } |
|
44 | + /** |
|
45 | + * @param EE_Event|EE_Base_Class $entity |
|
46 | + * @return EE_Datetime[] |
|
47 | + * @throws EE_Error |
|
48 | + * @throws InvalidEntityException |
|
49 | + * @throws ReflectionException |
|
50 | + * @since 5.0.0.p |
|
51 | + */ |
|
52 | + public function create(EE_Base_Class $entity): array |
|
53 | + { |
|
54 | + if (! $entity instanceof EE_Event) { |
|
55 | + throw new InvalidEntityException($entity, 'EE_Event'); |
|
56 | + } |
|
57 | + $default_dates = []; |
|
58 | + $blank_dates = $this->datetime_model->create_new_blank_datetime(); |
|
59 | + if (is_array($blank_dates)) { |
|
60 | + foreach ($blank_dates as $blank_date) { |
|
61 | + if (! $blank_date instanceof EE_Datetime) { |
|
62 | + throw new InvalidEntityException($blank_date, 'EE_Datetime'); |
|
63 | + } |
|
64 | + // clone date, strip out ID, then save to get a new ID |
|
65 | + $default_date = clone $blank_date; |
|
66 | + $default_date->set('DTT_ID', null); |
|
67 | + $default_date->save(); |
|
68 | + $default_date->_add_relation_to($entity->ID(), 'Event'); |
|
69 | + $this->default_tickets->create($default_date); |
|
70 | + $default_dates[ $default_date->ID() ] = $default_date; |
|
71 | + } |
|
72 | + } |
|
73 | + return $default_dates; |
|
74 | + } |
|
75 | 75 | } |
@@ -55,7 +55,7 @@ discard block |
||
55 | 55 | */ |
56 | 56 | public function create(EE_Base_Class $entity): array |
57 | 57 | { |
58 | - if (! $entity instanceof EE_Event) { |
|
58 | + if ( ! $entity instanceof EE_Event) { |
|
59 | 59 | throw new InvalidEntityException($entity, 'EE_Event'); |
60 | 60 | } |
61 | 61 | /** @var EE_Form_Section[] $new_form_sections */ |
@@ -63,7 +63,7 @@ discard block |
||
63 | 63 | $default_form_sections = $this->form_section_model->getDefaultFormSections(); |
64 | 64 | if (is_array($default_form_sections)) { |
65 | 65 | foreach ($default_form_sections as $default_form_section) { |
66 | - if (! $default_form_section instanceof EE_Form_Section) { |
|
66 | + if ( ! $default_form_section instanceof EE_Form_Section) { |
|
67 | 67 | throw new InvalidEntityException($default_form_section, 'EE_Form_Section'); |
68 | 68 | } |
69 | 69 | // we're calling this inside the loop, because this might get set the first time around |
@@ -80,7 +80,7 @@ discard block |
||
80 | 80 | $new_form_section->setBelongsTo($top_level_form_section); |
81 | 81 | } |
82 | 82 | $new_form_section->save(); |
83 | - $new_form_sections[ $UUID ] = $new_form_section; |
|
83 | + $new_form_sections[$UUID] = $new_form_section; |
|
84 | 84 | // now retrieve, clone, and save all of the form elements |
85 | 85 | $this->createDefaultFormElements($new_form_section, $default_form_elements); |
86 | 86 | // save form section UUID on event if it is the top-level form section |
@@ -103,7 +103,7 @@ discard block |
||
103 | 103 | /** @var EE_Form_Element[] $new_form_sections */ |
104 | 104 | $new_form_elements = []; |
105 | 105 | foreach ($default_form_elements as $default_form_element) { |
106 | - if (! $default_form_element instanceof EE_Form_Element) { |
|
106 | + if ( ! $default_form_element instanceof EE_Form_Element) { |
|
107 | 107 | throw new InvalidEntityException($default_form_element, 'EE_Form_Element'); |
108 | 108 | } |
109 | 109 | // clone form_element, generate a new UUID, reset the status, then save it |
@@ -114,7 +114,7 @@ discard block |
||
114 | 114 | $new_form_element->setBelongsTo($new_form_section->UUID()); |
115 | 115 | $new_form_element->setStatus(FormStatus::ACTIVE); |
116 | 116 | $new_form_element->save(); |
117 | - $new_form_elements[ $UUID ] = $new_form_element; |
|
117 | + $new_form_elements[$UUID] = $new_form_element; |
|
118 | 118 | } |
119 | 119 | $new_form_section->setFormElements($new_form_elements); |
120 | 120 | } |
@@ -24,97 +24,97 @@ |
||
24 | 24 | */ |
25 | 25 | class DefaultFormSections implements DefaultEntityGeneratorInterface |
26 | 26 | { |
27 | - /** |
|
28 | - * @var EEM_Form_Element $form_element_model |
|
29 | - */ |
|
30 | - protected $form_element_model; |
|
27 | + /** |
|
28 | + * @var EEM_Form_Element $form_element_model |
|
29 | + */ |
|
30 | + protected $form_element_model; |
|
31 | 31 | |
32 | - /** |
|
33 | - * @var EEM_Form_Section $form_section_model |
|
34 | - */ |
|
35 | - protected $form_section_model; |
|
32 | + /** |
|
33 | + * @var EEM_Form_Section $form_section_model |
|
34 | + */ |
|
35 | + protected $form_section_model; |
|
36 | 36 | |
37 | - /** |
|
38 | - * @param EEM_Form_Element $form_element_model |
|
39 | - * @param EEM_Form_Section $form_section_model |
|
40 | - */ |
|
41 | - public function __construct(EEM_Form_Element $form_element_model, EEM_Form_Section $form_section_model) |
|
42 | - { |
|
43 | - $this->form_element_model = $form_element_model; |
|
44 | - $this->form_section_model = $form_section_model; |
|
45 | - } |
|
37 | + /** |
|
38 | + * @param EEM_Form_Element $form_element_model |
|
39 | + * @param EEM_Form_Section $form_section_model |
|
40 | + */ |
|
41 | + public function __construct(EEM_Form_Element $form_element_model, EEM_Form_Section $form_section_model) |
|
42 | + { |
|
43 | + $this->form_element_model = $form_element_model; |
|
44 | + $this->form_section_model = $form_section_model; |
|
45 | + } |
|
46 | 46 | |
47 | 47 | |
48 | - /** |
|
49 | - * @param EE_Event|EE_Base_Class $entity |
|
50 | - * @return EE_Form_Section[] |
|
51 | - * @throws EE_Error |
|
52 | - * @throws InvalidEntityException |
|
53 | - * @throws ReflectionException |
|
54 | - */ |
|
55 | - public function create(EE_Base_Class $entity): array |
|
56 | - { |
|
57 | - if (! $entity instanceof EE_Event) { |
|
58 | - throw new InvalidEntityException($entity, 'EE_Event'); |
|
59 | - } |
|
60 | - /** @var EE_Form_Section[] $new_form_sections */ |
|
61 | - $new_form_sections = []; |
|
62 | - $default_form_sections = $this->form_section_model->getDefaultFormSections(); |
|
63 | - if (is_array($default_form_sections)) { |
|
64 | - foreach ($default_form_sections as $default_form_section) { |
|
65 | - if (! $default_form_section instanceof EE_Form_Section) { |
|
66 | - throw new InvalidEntityException($default_form_section, 'EE_Form_Section'); |
|
67 | - } |
|
68 | - // we're calling this inside the loop, because this might get set the first time around |
|
69 | - // and it would always be blank for a new event if we were to call it before the loop, |
|
70 | - // and then we couldn't set the "BelongsTo" for any child form sections |
|
71 | - $top_level_form_section = $entity->registrationFormUuid(); |
|
72 | - $default_form_elements = $default_form_section->formElements(); |
|
73 | - // clone form_section, generate a new UUID, reset the status, then save it |
|
74 | - $new_form_section = clone $default_form_section; |
|
75 | - $UUID = Cuid::cuid(); |
|
76 | - $new_form_section->setUUID($UUID); |
|
77 | - $new_form_section->setStatus(FormStatus::ACTIVE); |
|
78 | - if ($top_level_form_section) { |
|
79 | - $new_form_section->setBelongsTo($top_level_form_section); |
|
80 | - } |
|
81 | - $new_form_section->save(); |
|
82 | - $new_form_sections[ $UUID ] = $new_form_section; |
|
83 | - // now retrieve, clone, and save all of the form elements |
|
84 | - $this->createDefaultFormElements($new_form_section, $default_form_elements); |
|
85 | - // save form section UUID on event if it is the top-level form section |
|
86 | - if ($new_form_section->isTopLevelFormSection()) { |
|
87 | - $entity->setRegistrationFormUuid($UUID); |
|
88 | - $entity->save(); |
|
89 | - } |
|
90 | - } |
|
91 | - } |
|
92 | - return $new_form_sections; |
|
93 | - } |
|
48 | + /** |
|
49 | + * @param EE_Event|EE_Base_Class $entity |
|
50 | + * @return EE_Form_Section[] |
|
51 | + * @throws EE_Error |
|
52 | + * @throws InvalidEntityException |
|
53 | + * @throws ReflectionException |
|
54 | + */ |
|
55 | + public function create(EE_Base_Class $entity): array |
|
56 | + { |
|
57 | + if (! $entity instanceof EE_Event) { |
|
58 | + throw new InvalidEntityException($entity, 'EE_Event'); |
|
59 | + } |
|
60 | + /** @var EE_Form_Section[] $new_form_sections */ |
|
61 | + $new_form_sections = []; |
|
62 | + $default_form_sections = $this->form_section_model->getDefaultFormSections(); |
|
63 | + if (is_array($default_form_sections)) { |
|
64 | + foreach ($default_form_sections as $default_form_section) { |
|
65 | + if (! $default_form_section instanceof EE_Form_Section) { |
|
66 | + throw new InvalidEntityException($default_form_section, 'EE_Form_Section'); |
|
67 | + } |
|
68 | + // we're calling this inside the loop, because this might get set the first time around |
|
69 | + // and it would always be blank for a new event if we were to call it before the loop, |
|
70 | + // and then we couldn't set the "BelongsTo" for any child form sections |
|
71 | + $top_level_form_section = $entity->registrationFormUuid(); |
|
72 | + $default_form_elements = $default_form_section->formElements(); |
|
73 | + // clone form_section, generate a new UUID, reset the status, then save it |
|
74 | + $new_form_section = clone $default_form_section; |
|
75 | + $UUID = Cuid::cuid(); |
|
76 | + $new_form_section->setUUID($UUID); |
|
77 | + $new_form_section->setStatus(FormStatus::ACTIVE); |
|
78 | + if ($top_level_form_section) { |
|
79 | + $new_form_section->setBelongsTo($top_level_form_section); |
|
80 | + } |
|
81 | + $new_form_section->save(); |
|
82 | + $new_form_sections[ $UUID ] = $new_form_section; |
|
83 | + // now retrieve, clone, and save all of the form elements |
|
84 | + $this->createDefaultFormElements($new_form_section, $default_form_elements); |
|
85 | + // save form section UUID on event if it is the top-level form section |
|
86 | + if ($new_form_section->isTopLevelFormSection()) { |
|
87 | + $entity->setRegistrationFormUuid($UUID); |
|
88 | + $entity->save(); |
|
89 | + } |
|
90 | + } |
|
91 | + } |
|
92 | + return $new_form_sections; |
|
93 | + } |
|
94 | 94 | |
95 | 95 | |
96 | - /** |
|
97 | - * @throws EE_Error |
|
98 | - * @throws ReflectionException |
|
99 | - */ |
|
100 | - private function createDefaultFormElements(EE_Form_Section $new_form_section, array $default_form_elements) |
|
101 | - { |
|
102 | - /** @var EE_Form_Element[] $new_form_sections */ |
|
103 | - $new_form_elements = []; |
|
104 | - foreach ($default_form_elements as $default_form_element) { |
|
105 | - if (! $default_form_element instanceof EE_Form_Element) { |
|
106 | - throw new InvalidEntityException($default_form_element, 'EE_Form_Element'); |
|
107 | - } |
|
108 | - // clone form_element, generate a new UUID, reset the status, then save it |
|
109 | - $new_form_element = clone $default_form_element; |
|
110 | - // generate a new UUID for this form section then save it |
|
111 | - $UUID = Cuid::cuid(); |
|
112 | - $new_form_element->setUUID($UUID); |
|
113 | - $new_form_element->setBelongsTo($new_form_section->UUID()); |
|
114 | - $new_form_element->setStatus(FormStatus::ACTIVE); |
|
115 | - $new_form_element->save(); |
|
116 | - $new_form_elements[ $UUID ] = $new_form_element; |
|
117 | - } |
|
118 | - $new_form_section->setFormElements($new_form_elements); |
|
119 | - } |
|
96 | + /** |
|
97 | + * @throws EE_Error |
|
98 | + * @throws ReflectionException |
|
99 | + */ |
|
100 | + private function createDefaultFormElements(EE_Form_Section $new_form_section, array $default_form_elements) |
|
101 | + { |
|
102 | + /** @var EE_Form_Element[] $new_form_sections */ |
|
103 | + $new_form_elements = []; |
|
104 | + foreach ($default_form_elements as $default_form_element) { |
|
105 | + if (! $default_form_element instanceof EE_Form_Element) { |
|
106 | + throw new InvalidEntityException($default_form_element, 'EE_Form_Element'); |
|
107 | + } |
|
108 | + // clone form_element, generate a new UUID, reset the status, then save it |
|
109 | + $new_form_element = clone $default_form_element; |
|
110 | + // generate a new UUID for this form section then save it |
|
111 | + $UUID = Cuid::cuid(); |
|
112 | + $new_form_element->setUUID($UUID); |
|
113 | + $new_form_element->setBelongsTo($new_form_section->UUID()); |
|
114 | + $new_form_element->setStatus(FormStatus::ACTIVE); |
|
115 | + $new_form_element->save(); |
|
116 | + $new_form_elements[ $UUID ] = $new_form_element; |
|
117 | + } |
|
118 | + $new_form_section->setFormElements($new_form_elements); |
|
119 | + } |
|
120 | 120 | } |
@@ -69,13 +69,13 @@ discard block |
||
69 | 69 | } |
70 | 70 | |
71 | 71 | // make sure we don't register twice |
72 | - if (isset(self::$_registry[ $addon_name ])) { |
|
72 | + if (isset(self::$_registry[$addon_name])) { |
|
73 | 73 | return true; |
74 | 74 | } |
75 | 75 | |
76 | 76 | // check that incoming $addon_name doesn't already exist. If it does then we'll create a unique reference for this template pack. |
77 | - if (isset(self::$_registry[ $addon_name ])) { |
|
78 | - $addon_name = uniqid() . '_' . $addon_name; |
|
77 | + if (isset(self::$_registry[$addon_name])) { |
|
78 | + $addon_name = uniqid().'_'.$addon_name; |
|
79 | 79 | } |
80 | 80 | |
81 | 81 | |
@@ -98,7 +98,7 @@ discard block |
||
98 | 98 | } |
99 | 99 | |
100 | 100 | if (self::_verify_class_not_exist($setup_args['classname'])) { |
101 | - self::$_registry[ $addon_name ] = [ |
|
101 | + self::$_registry[$addon_name] = [ |
|
102 | 102 | 'path' => (string) $setup_args['path'], |
103 | 103 | 'classname' => (string) $setup_args['classname'], |
104 | 104 | ]; |
@@ -151,14 +151,14 @@ discard block |
||
151 | 151 | { |
152 | 152 | foreach (self::$_registry as $args) { |
153 | 153 | // verify class_exists |
154 | - if (! class_exists($args['classname'])) { |
|
155 | - require_once($args['path'] . '/' . $args['classname'] . '.class.php'); |
|
154 | + if ( ! class_exists($args['classname'])) { |
|
155 | + require_once($args['path'].'/'.$args['classname'].'.class.php'); |
|
156 | 156 | } |
157 | 157 | |
158 | 158 | // check again! |
159 | 159 | if (class_exists($args['classname'])) { |
160 | 160 | $template_pack = new $args['classname'](); |
161 | - $template_packs[ $template_pack->dbref ] = $template_pack; |
|
161 | + $template_packs[$template_pack->dbref] = $template_pack; |
|
162 | 162 | } |
163 | 163 | } |
164 | 164 | |
@@ -208,6 +208,6 @@ discard block |
||
208 | 208 | */ |
209 | 209 | public static function deregister(string $addon_name = '') |
210 | 210 | { |
211 | - unset(self::$_registry[ $addon_name ]); |
|
211 | + unset(self::$_registry[$addon_name]); |
|
212 | 212 | } |
213 | 213 | } |
@@ -10,202 +10,202 @@ |
||
10 | 10 | */ |
11 | 11 | class EE_Register_Messages_Template_Pack implements EEI_Plugin_API |
12 | 12 | { |
13 | - /** |
|
14 | - * Holds values for registered template pack |
|
15 | - * |
|
16 | - * @since 4.5.0 |
|
17 | - * |
|
18 | - * @var array |
|
19 | - */ |
|
20 | - protected static $_registry = []; |
|
21 | - |
|
22 | - |
|
23 | - /** |
|
24 | - * Used to register a new template pack with the messages system. |
|
25 | - * |
|
26 | - * Template packs are primarily defined via class extending EE_Messages_Template_Pack and are typically used to |
|
27 | - * change entire layouts for a set of message templates. This method is used to register the new template pack and |
|
28 | - * automatically have it loaded in the appropriate places. |
|
29 | - * |
|
30 | - * This registry also verifies that there isn't already a template pack registered with the same name and if there |
|
31 | - * is then it will add an EE_Error notice. |
|
32 | - * |
|
33 | - * Note that this only handles registering the your Template Pack class with the message template pack system. |
|
34 | - * However, there is also a naming schema you must follow for templates you are providing with your template pack. |
|
35 | - * |
|
36 | - * @param string $addon_name The internal reference used to refer to this template pack. Note, this is first come, |
|
37 | - * first serve. If there is already a template pack registered with this name then the |
|
38 | - * registry will assign a unique reference for it so it can still be activated (but this |
|
39 | - * makes it harder to deregister as it will be unique per load - so its best to try to |
|
40 | - * make this a unique string!) |
|
41 | - * @param array $setup_args array { |
|
42 | - * An array of required values for registering the template pack. |
|
43 | - * @type string $path The path for the new template pack class. |
|
44 | - * @type string $classname The name of the new Template Pack Class. |
|
45 | - * } |
|
46 | - * @return bool |
|
47 | - * @throws EE_Error |
|
48 | - * |
|
49 | - * @see core/libraries/messages/defaults/default/* for all the example templates the default template pack |
|
50 | - * supports. |
|
51 | - * |
|
52 | - * |
|
53 | - * @since 4.5.0 |
|
54 | - * @see EE_Messages_Template_Pack_Default for an example class |
|
55 | - */ |
|
56 | - public static function register(string $addon_name = '', array $setup_args = []): bool |
|
57 | - { |
|
58 | - |
|
59 | - // check for required params |
|
60 | - if (empty($addon_name) || empty($setup_args['path']) || empty($setup_args['classname'])) { |
|
61 | - throw new EE_Error( |
|
62 | - esc_html__( |
|
63 | - 'In order to register a new template pack for the EE Messages system, you must include a value to reference the template pack being registered and the setup_args must have the path for the new template pack class as well as the classname for the new Template Pack Class. ', |
|
64 | - 'event_espresso' |
|
65 | - ) |
|
66 | - ); |
|
67 | - } |
|
68 | - |
|
69 | - // make sure we don't register twice |
|
70 | - if (isset(self::$_registry[ $addon_name ])) { |
|
71 | - return true; |
|
72 | - } |
|
73 | - |
|
74 | - // check that incoming $addon_name doesn't already exist. If it does then we'll create a unique reference for this template pack. |
|
75 | - if (isset(self::$_registry[ $addon_name ])) { |
|
76 | - $addon_name = uniqid() . '_' . $addon_name; |
|
77 | - } |
|
78 | - |
|
79 | - |
|
80 | - // make sure this was called in the right place! |
|
81 | - if ( |
|
82 | - ! did_action('EE_Brewing_Regular___messages_caf') |
|
83 | - || did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations') |
|
84 | - ) { |
|
85 | - EE_Error::doing_it_wrong( |
|
86 | - __METHOD__, |
|
87 | - sprintf( |
|
88 | - esc_html__( |
|
89 | - 'A EE Messages Template Pack given the reference "%s" has been attempted to be registered with the EE Messages System. It may or may not work because it should be only called on the "EE_Brewing_Regular__messages_caf" hook.', |
|
90 | - 'event_espresso' |
|
91 | - ), |
|
92 | - $addon_name |
|
93 | - ), |
|
94 | - '4.5.0' |
|
95 | - ); |
|
96 | - } |
|
97 | - |
|
98 | - if (self::_verify_class_not_exist($setup_args['classname'])) { |
|
99 | - self::$_registry[ $addon_name ] = [ |
|
100 | - 'path' => (string) $setup_args['path'], |
|
101 | - 'classname' => (string) $setup_args['classname'], |
|
102 | - ]; |
|
103 | - } |
|
104 | - |
|
105 | - // hook into the system |
|
106 | - add_filter( |
|
107 | - 'FHEE__EED_Messages___set_messages_paths___MSG_PATHS', |
|
108 | - ['EE_Register_Messages_Template_Pack', 'set_template_pack_path'], |
|
109 | - 10 |
|
110 | - ); |
|
111 | - add_filter( |
|
112 | - 'FHEE__EED_Messages__get_template_packs__template_packs', |
|
113 | - ['EE_Register_Messages_Template_Pack', 'set_template_pack'], |
|
114 | - 10 |
|
115 | - ); |
|
116 | - return true; |
|
117 | - } |
|
118 | - |
|
119 | - |
|
120 | - /** |
|
121 | - * Callback for the FHEE__EED_Messages___set_messages_paths___MSG_PATHS filter. This adds this template packs path |
|
122 | - * to the messages autoloader paths. |
|
123 | - * |
|
124 | - * @param array $paths Array of paths already registered with the messages autoloader |
|
125 | - * |
|
126 | - * @return array |
|
127 | - * @since 4.5.0 |
|
128 | - * |
|
129 | - */ |
|
130 | - public static function set_template_pack_path(array $paths): array |
|
131 | - { |
|
132 | - foreach (self::$_registry as $args) { |
|
133 | - $paths[] = $args['path']; |
|
134 | - } |
|
135 | - return $paths; |
|
136 | - } |
|
137 | - |
|
138 | - |
|
139 | - /** |
|
140 | - * Callback for the FHEE__EED_Messages__get_template_packs__template_packs filter. This adds the instantiated, |
|
141 | - * registered template pack to the template packs array when requested by client code. |
|
142 | - * |
|
143 | - * @param EE_Messages_Template_Pack[] $template_packs |
|
144 | - * @return EE_Messages_Template_Pack[] |
|
145 | - * @since 4.5.0 |
|
146 | - * |
|
147 | - */ |
|
148 | - public static function set_template_pack(array $template_packs): array |
|
149 | - { |
|
150 | - foreach (self::$_registry as $args) { |
|
151 | - // verify class_exists |
|
152 | - if (! class_exists($args['classname'])) { |
|
153 | - require_once($args['path'] . '/' . $args['classname'] . '.class.php'); |
|
154 | - } |
|
155 | - |
|
156 | - // check again! |
|
157 | - if (class_exists($args['classname'])) { |
|
158 | - $template_pack = new $args['classname'](); |
|
159 | - $template_packs[ $template_pack->dbref ] = $template_pack; |
|
160 | - } |
|
161 | - } |
|
162 | - |
|
163 | - return $template_packs; |
|
164 | - } |
|
165 | - |
|
166 | - |
|
167 | - /** |
|
168 | - * This verifies that the classes for each registered template pack are unique names. |
|
169 | - * |
|
170 | - * @param string $classname The classname being checked |
|
171 | - * |
|
172 | - * @return bool |
|
173 | - */ |
|
174 | - private static function _verify_class_not_exist(string $classname): bool |
|
175 | - { |
|
176 | - // loop through the existing registry and see if the classname is already present. |
|
177 | - foreach (self::$_registry as $args) { |
|
178 | - if ($args['classname'] == $classname) { |
|
179 | - EE_Error::add_error( |
|
180 | - sprintf( |
|
181 | - esc_html__( |
|
182 | - 'The %s template pack that you just activated cannot be registered with the messages system because there is already a template pack active using the same classname. Contact the author of this template pack to let them know of the conflict. To stop seeing this message you will need to deactivate this template pack.', |
|
183 | - 'event_espresso' |
|
184 | - ), |
|
185 | - $classname |
|
186 | - ), |
|
187 | - __FILE__, |
|
188 | - __LINE__, |
|
189 | - __FUNCTION__ |
|
190 | - ); |
|
191 | - return false; |
|
192 | - } |
|
193 | - } |
|
194 | - return true; |
|
195 | - } |
|
196 | - |
|
197 | - |
|
198 | - /** |
|
199 | - * This deregisters a variation set that was previously registered with the given slug. |
|
200 | - * |
|
201 | - * @param string $addon_name The name for the variation set that was previously registered. |
|
202 | - * |
|
203 | - * @return void |
|
204 | - * @since 4.5.0 |
|
205 | - * |
|
206 | - */ |
|
207 | - public static function deregister(string $addon_name = '') |
|
208 | - { |
|
209 | - unset(self::$_registry[ $addon_name ]); |
|
210 | - } |
|
13 | + /** |
|
14 | + * Holds values for registered template pack |
|
15 | + * |
|
16 | + * @since 4.5.0 |
|
17 | + * |
|
18 | + * @var array |
|
19 | + */ |
|
20 | + protected static $_registry = []; |
|
21 | + |
|
22 | + |
|
23 | + /** |
|
24 | + * Used to register a new template pack with the messages system. |
|
25 | + * |
|
26 | + * Template packs are primarily defined via class extending EE_Messages_Template_Pack and are typically used to |
|
27 | + * change entire layouts for a set of message templates. This method is used to register the new template pack and |
|
28 | + * automatically have it loaded in the appropriate places. |
|
29 | + * |
|
30 | + * This registry also verifies that there isn't already a template pack registered with the same name and if there |
|
31 | + * is then it will add an EE_Error notice. |
|
32 | + * |
|
33 | + * Note that this only handles registering the your Template Pack class with the message template pack system. |
|
34 | + * However, there is also a naming schema you must follow for templates you are providing with your template pack. |
|
35 | + * |
|
36 | + * @param string $addon_name The internal reference used to refer to this template pack. Note, this is first come, |
|
37 | + * first serve. If there is already a template pack registered with this name then the |
|
38 | + * registry will assign a unique reference for it so it can still be activated (but this |
|
39 | + * makes it harder to deregister as it will be unique per load - so its best to try to |
|
40 | + * make this a unique string!) |
|
41 | + * @param array $setup_args array { |
|
42 | + * An array of required values for registering the template pack. |
|
43 | + * @type string $path The path for the new template pack class. |
|
44 | + * @type string $classname The name of the new Template Pack Class. |
|
45 | + * } |
|
46 | + * @return bool |
|
47 | + * @throws EE_Error |
|
48 | + * |
|
49 | + * @see core/libraries/messages/defaults/default/* for all the example templates the default template pack |
|
50 | + * supports. |
|
51 | + * |
|
52 | + * |
|
53 | + * @since 4.5.0 |
|
54 | + * @see EE_Messages_Template_Pack_Default for an example class |
|
55 | + */ |
|
56 | + public static function register(string $addon_name = '', array $setup_args = []): bool |
|
57 | + { |
|
58 | + |
|
59 | + // check for required params |
|
60 | + if (empty($addon_name) || empty($setup_args['path']) || empty($setup_args['classname'])) { |
|
61 | + throw new EE_Error( |
|
62 | + esc_html__( |
|
63 | + 'In order to register a new template pack for the EE Messages system, you must include a value to reference the template pack being registered and the setup_args must have the path for the new template pack class as well as the classname for the new Template Pack Class. ', |
|
64 | + 'event_espresso' |
|
65 | + ) |
|
66 | + ); |
|
67 | + } |
|
68 | + |
|
69 | + // make sure we don't register twice |
|
70 | + if (isset(self::$_registry[ $addon_name ])) { |
|
71 | + return true; |
|
72 | + } |
|
73 | + |
|
74 | + // check that incoming $addon_name doesn't already exist. If it does then we'll create a unique reference for this template pack. |
|
75 | + if (isset(self::$_registry[ $addon_name ])) { |
|
76 | + $addon_name = uniqid() . '_' . $addon_name; |
|
77 | + } |
|
78 | + |
|
79 | + |
|
80 | + // make sure this was called in the right place! |
|
81 | + if ( |
|
82 | + ! did_action('EE_Brewing_Regular___messages_caf') |
|
83 | + || did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations') |
|
84 | + ) { |
|
85 | + EE_Error::doing_it_wrong( |
|
86 | + __METHOD__, |
|
87 | + sprintf( |
|
88 | + esc_html__( |
|
89 | + 'A EE Messages Template Pack given the reference "%s" has been attempted to be registered with the EE Messages System. It may or may not work because it should be only called on the "EE_Brewing_Regular__messages_caf" hook.', |
|
90 | + 'event_espresso' |
|
91 | + ), |
|
92 | + $addon_name |
|
93 | + ), |
|
94 | + '4.5.0' |
|
95 | + ); |
|
96 | + } |
|
97 | + |
|
98 | + if (self::_verify_class_not_exist($setup_args['classname'])) { |
|
99 | + self::$_registry[ $addon_name ] = [ |
|
100 | + 'path' => (string) $setup_args['path'], |
|
101 | + 'classname' => (string) $setup_args['classname'], |
|
102 | + ]; |
|
103 | + } |
|
104 | + |
|
105 | + // hook into the system |
|
106 | + add_filter( |
|
107 | + 'FHEE__EED_Messages___set_messages_paths___MSG_PATHS', |
|
108 | + ['EE_Register_Messages_Template_Pack', 'set_template_pack_path'], |
|
109 | + 10 |
|
110 | + ); |
|
111 | + add_filter( |
|
112 | + 'FHEE__EED_Messages__get_template_packs__template_packs', |
|
113 | + ['EE_Register_Messages_Template_Pack', 'set_template_pack'], |
|
114 | + 10 |
|
115 | + ); |
|
116 | + return true; |
|
117 | + } |
|
118 | + |
|
119 | + |
|
120 | + /** |
|
121 | + * Callback for the FHEE__EED_Messages___set_messages_paths___MSG_PATHS filter. This adds this template packs path |
|
122 | + * to the messages autoloader paths. |
|
123 | + * |
|
124 | + * @param array $paths Array of paths already registered with the messages autoloader |
|
125 | + * |
|
126 | + * @return array |
|
127 | + * @since 4.5.0 |
|
128 | + * |
|
129 | + */ |
|
130 | + public static function set_template_pack_path(array $paths): array |
|
131 | + { |
|
132 | + foreach (self::$_registry as $args) { |
|
133 | + $paths[] = $args['path']; |
|
134 | + } |
|
135 | + return $paths; |
|
136 | + } |
|
137 | + |
|
138 | + |
|
139 | + /** |
|
140 | + * Callback for the FHEE__EED_Messages__get_template_packs__template_packs filter. This adds the instantiated, |
|
141 | + * registered template pack to the template packs array when requested by client code. |
|
142 | + * |
|
143 | + * @param EE_Messages_Template_Pack[] $template_packs |
|
144 | + * @return EE_Messages_Template_Pack[] |
|
145 | + * @since 4.5.0 |
|
146 | + * |
|
147 | + */ |
|
148 | + public static function set_template_pack(array $template_packs): array |
|
149 | + { |
|
150 | + foreach (self::$_registry as $args) { |
|
151 | + // verify class_exists |
|
152 | + if (! class_exists($args['classname'])) { |
|
153 | + require_once($args['path'] . '/' . $args['classname'] . '.class.php'); |
|
154 | + } |
|
155 | + |
|
156 | + // check again! |
|
157 | + if (class_exists($args['classname'])) { |
|
158 | + $template_pack = new $args['classname'](); |
|
159 | + $template_packs[ $template_pack->dbref ] = $template_pack; |
|
160 | + } |
|
161 | + } |
|
162 | + |
|
163 | + return $template_packs; |
|
164 | + } |
|
165 | + |
|
166 | + |
|
167 | + /** |
|
168 | + * This verifies that the classes for each registered template pack are unique names. |
|
169 | + * |
|
170 | + * @param string $classname The classname being checked |
|
171 | + * |
|
172 | + * @return bool |
|
173 | + */ |
|
174 | + private static function _verify_class_not_exist(string $classname): bool |
|
175 | + { |
|
176 | + // loop through the existing registry and see if the classname is already present. |
|
177 | + foreach (self::$_registry as $args) { |
|
178 | + if ($args['classname'] == $classname) { |
|
179 | + EE_Error::add_error( |
|
180 | + sprintf( |
|
181 | + esc_html__( |
|
182 | + 'The %s template pack that you just activated cannot be registered with the messages system because there is already a template pack active using the same classname. Contact the author of this template pack to let them know of the conflict. To stop seeing this message you will need to deactivate this template pack.', |
|
183 | + 'event_espresso' |
|
184 | + ), |
|
185 | + $classname |
|
186 | + ), |
|
187 | + __FILE__, |
|
188 | + __LINE__, |
|
189 | + __FUNCTION__ |
|
190 | + ); |
|
191 | + return false; |
|
192 | + } |
|
193 | + } |
|
194 | + return true; |
|
195 | + } |
|
196 | + |
|
197 | + |
|
198 | + /** |
|
199 | + * This deregisters a variation set that was previously registered with the given slug. |
|
200 | + * |
|
201 | + * @param string $addon_name The name for the variation set that was previously registered. |
|
202 | + * |
|
203 | + * @return void |
|
204 | + * @since 4.5.0 |
|
205 | + * |
|
206 | + */ |
|
207 | + public static function deregister(string $addon_name = '') |
|
208 | + { |
|
209 | + unset(self::$_registry[ $addon_name ]); |
|
210 | + } |
|
211 | 211 | } |
@@ -55,7 +55,7 @@ discard block |
||
55 | 55 | $UUID = $section->UUID(); |
56 | 56 | |
57 | 57 | // Avoid duplicates, if any |
58 | - $sections[ $UUID ] = [ |
|
58 | + $sections[$UUID] = [ |
|
59 | 59 | 'id' => $UUID, |
60 | 60 | 'appliesTo' => GQLUtils::formatEnumKey($section->appliesTo()), |
61 | 61 | 'attributes' => $section->attributes()->toJson(), |
@@ -85,7 +85,7 @@ discard block |
||
85 | 85 | $UUID = $element->UUID(); |
86 | 86 | |
87 | 87 | // Avoid duplicates |
88 | - $elements[ $UUID ] = [ |
|
88 | + $elements[$UUID] = [ |
|
89 | 89 | 'id' => $UUID, |
90 | 90 | 'adminOnly' => $element->adminOnly(), |
91 | 91 | 'attributes' => $element->attributes()->toJson(), |
@@ -23,87 +23,87 @@ |
||
23 | 23 | */ |
24 | 24 | class FormBuilder implements EventEditorDataInterface |
25 | 25 | { |
26 | - /** |
|
27 | - * @param int $eventId |
|
28 | - * @return array |
|
29 | - * @throws EE_Error |
|
30 | - * @throws ReflectionException |
|
31 | - */ |
|
32 | - public function getData(int $eventId): array |
|
33 | - { |
|
34 | - /** @var EE_Event $event */ |
|
35 | - $event = EEM_Event::instance()->get_one_by_ID($eventId); |
|
36 | - $topLevelSectionId = $event->registrationFormUuid(); |
|
26 | + /** |
|
27 | + * @param int $eventId |
|
28 | + * @return array |
|
29 | + * @throws EE_Error |
|
30 | + * @throws ReflectionException |
|
31 | + */ |
|
32 | + public function getData(int $eventId): array |
|
33 | + { |
|
34 | + /** @var EE_Event $event */ |
|
35 | + $event = EEM_Event::instance()->get_one_by_ID($eventId); |
|
36 | + $topLevelSectionId = $event->registrationFormUuid(); |
|
37 | 37 | |
38 | - /** @var EE_Form_Section[] $form_sections */ |
|
39 | - $form_sections = EEM_Form_Section::instance()->get_all([ |
|
40 | - [ |
|
41 | - 'OR' => [ |
|
42 | - 'FSC_UUID' => $topLevelSectionId, // top level form |
|
43 | - 'FSC_belongsTo' => $topLevelSectionId, // child form sections |
|
44 | - 'FSC_status' => FormStatus::SHARED, // shared form sections |
|
45 | - ] |
|
46 | - ], |
|
47 | - 'order_by' => ['FSC_order' => 'ASC'], |
|
48 | - ]); |
|
38 | + /** @var EE_Form_Section[] $form_sections */ |
|
39 | + $form_sections = EEM_Form_Section::instance()->get_all([ |
|
40 | + [ |
|
41 | + 'OR' => [ |
|
42 | + 'FSC_UUID' => $topLevelSectionId, // top level form |
|
43 | + 'FSC_belongsTo' => $topLevelSectionId, // child form sections |
|
44 | + 'FSC_status' => FormStatus::SHARED, // shared form sections |
|
45 | + ] |
|
46 | + ], |
|
47 | + 'order_by' => ['FSC_order' => 'ASC'], |
|
48 | + ]); |
|
49 | 49 | |
50 | - $sections = []; |
|
51 | - foreach ($form_sections as $section) { |
|
52 | - if ($section instanceof EE_Form_Section) { |
|
53 | - $UUID = $section->UUID(); |
|
50 | + $sections = []; |
|
51 | + foreach ($form_sections as $section) { |
|
52 | + if ($section instanceof EE_Form_Section) { |
|
53 | + $UUID = $section->UUID(); |
|
54 | 54 | |
55 | - // Avoid duplicates, if any |
|
56 | - $sections[ $UUID ] = [ |
|
57 | - 'id' => $UUID, |
|
58 | - 'appliesTo' => GQLUtils::formatEnumKey($section->appliesTo()), |
|
59 | - 'attributes' => $section->attributes()->toJson(), |
|
60 | - 'belongsTo' => $section->belongsTo(), |
|
61 | - 'isActive' => $section->isActive(), |
|
62 | - 'isArchived' => $section->isArchived(), |
|
63 | - 'isDefault' => $section->isDefault(), |
|
64 | - 'isShared' => $section->isShared(), |
|
65 | - 'isTrashed' => $section->isTrashed(), |
|
66 | - 'label' => $section->label()->toJson(), |
|
67 | - 'order' => $section->order(), |
|
68 | - 'status' => GQLUtils::formatEnumKey($section->status()), |
|
69 | - ]; |
|
70 | - } |
|
71 | - } |
|
55 | + // Avoid duplicates, if any |
|
56 | + $sections[ $UUID ] = [ |
|
57 | + 'id' => $UUID, |
|
58 | + 'appliesTo' => GQLUtils::formatEnumKey($section->appliesTo()), |
|
59 | + 'attributes' => $section->attributes()->toJson(), |
|
60 | + 'belongsTo' => $section->belongsTo(), |
|
61 | + 'isActive' => $section->isActive(), |
|
62 | + 'isArchived' => $section->isArchived(), |
|
63 | + 'isDefault' => $section->isDefault(), |
|
64 | + 'isShared' => $section->isShared(), |
|
65 | + 'isTrashed' => $section->isTrashed(), |
|
66 | + 'label' => $section->label()->toJson(), |
|
67 | + 'order' => $section->order(), |
|
68 | + 'status' => GQLUtils::formatEnumKey($section->status()), |
|
69 | + ]; |
|
70 | + } |
|
71 | + } |
|
72 | 72 | |
73 | - /** @var EE_Form_Element[] $form_elements */ |
|
74 | - $form_elements = EEM_Form_Element::instance()->get_all([ |
|
75 | - [ |
|
76 | - 'FSC_UUID' => ['IN', array_keys($sections)] |
|
77 | - ] |
|
78 | - ]); |
|
73 | + /** @var EE_Form_Element[] $form_elements */ |
|
74 | + $form_elements = EEM_Form_Element::instance()->get_all([ |
|
75 | + [ |
|
76 | + 'FSC_UUID' => ['IN', array_keys($sections)] |
|
77 | + ] |
|
78 | + ]); |
|
79 | 79 | |
80 | - $elements = []; |
|
81 | - foreach ($form_elements as $element) { |
|
82 | - if ($element instanceof EE_Form_Element) { |
|
83 | - $UUID = $element->UUID(); |
|
80 | + $elements = []; |
|
81 | + foreach ($form_elements as $element) { |
|
82 | + if ($element instanceof EE_Form_Element) { |
|
83 | + $UUID = $element->UUID(); |
|
84 | 84 | |
85 | - // Avoid duplicates |
|
86 | - $elements[ $UUID ] = [ |
|
87 | - 'id' => $UUID, |
|
88 | - 'adminOnly' => $element->adminOnly(), |
|
89 | - 'attributes' => $element->attributes()->toJson(), |
|
90 | - 'belongsTo' => $element->belongsTo(), |
|
91 | - 'helpText' => $element->helpText()->toJson(), |
|
92 | - 'label' => $element->label()->toJson(), |
|
93 | - 'mapsTo' => $element->mapsTo(), |
|
94 | - 'options' => $element->options()->toJson(), |
|
95 | - 'order' => $element->order(), |
|
96 | - 'required' => $element->required()->toJson(), |
|
97 | - 'status' => GQLUtils::formatEnumKey($element->status()), |
|
98 | - 'type' => GQLUtils::formatEnumKey($element->type()), |
|
99 | - ]; |
|
100 | - } |
|
101 | - } |
|
85 | + // Avoid duplicates |
|
86 | + $elements[ $UUID ] = [ |
|
87 | + 'id' => $UUID, |
|
88 | + 'adminOnly' => $element->adminOnly(), |
|
89 | + 'attributes' => $element->attributes()->toJson(), |
|
90 | + 'belongsTo' => $element->belongsTo(), |
|
91 | + 'helpText' => $element->helpText()->toJson(), |
|
92 | + 'label' => $element->label()->toJson(), |
|
93 | + 'mapsTo' => $element->mapsTo(), |
|
94 | + 'options' => $element->options()->toJson(), |
|
95 | + 'order' => $element->order(), |
|
96 | + 'required' => $element->required()->toJson(), |
|
97 | + 'status' => GQLUtils::formatEnumKey($element->status()), |
|
98 | + 'type' => GQLUtils::formatEnumKey($element->type()), |
|
99 | + ]; |
|
100 | + } |
|
101 | + } |
|
102 | 102 | |
103 | - return [ |
|
104 | - 'elements' => array_values($elements), |
|
105 | - 'sections' => array_values($sections), |
|
106 | - 'topLevelSectionId' => $event->registrationFormUuid() |
|
107 | - ]; |
|
108 | - } |
|
103 | + return [ |
|
104 | + 'elements' => array_values($elements), |
|
105 | + 'sections' => array_values($sections), |
|
106 | + 'topLevelSectionId' => $event->registrationFormUuid() |
|
107 | + ]; |
|
108 | + } |
|
109 | 109 | } |