Completed
Branch fix/escaping-2 (5dcb9a)
by
unknown
13:02 queued 10:26
created
core/libraries/plugin_api/EE_Register_Messages_Template_Variations.lib.php 2 patches
Indentation   +305 added lines, -305 removed lines patch added patch discarded remove patch
@@ -11,332 +11,332 @@
 block discarded – undo
11 11
 class EE_Register_Messages_Template_Variations implements EEI_Plugin_API
12 12
 {
13 13
 
14
-    /**
15
-     * Holds values for registered variations
16
-     *
17
-     * @since 4.5.0
18
-     *
19
-     * @var array
20
-     */
21
-    protected static $_registry = [];
14
+	/**
15
+	 * Holds values for registered variations
16
+	 *
17
+	 * @since 4.5.0
18
+	 *
19
+	 * @var array
20
+	 */
21
+	protected static $_registry = [];
22 22
 
23 23
 
24
-    /**
25
-     * Used to register new variations
26
-     *
27
-     * Variations are attached to template packs and do not typically change any structural layout but merely tweak the
28
-     * style of the layout.  The most commonly known variation is css.  CSS does not affect html structure just the
29
-     * style of existing structure.
30
-     *
31
-     * It's important to remember that when variation files are loaded, the file structure looked for is:
32
-     * '{$messenger}_{$messenger_variation_type}_{$variation_slug}.{$extension}'.
33
-     *
34
-     *    - Every variation applies to specific messengers.  That's why the variation file includes the messenger name
35
-     *    it.   This ensures that if a template pack the variation is registered with supports multiple variations that
36
-     *    you can have the correct variation loaded.
37
-     *    - EE_messengers also implicitly define variation "types" which typically are the context in which a specific
38
-     *    variation is loaded.  For instance the email messenger has: 'inline', which is the css added inline to the
39
-     *    email templates; 'preview', which is the same css only customized for when emails are previewed; and
40
-     *    'wpeditor', which is the same css only customized so that it works with the wpeditor fields for templates to
41
-     *    give a accurate representation of the style in the wysiwyg editor.  This means that for each variation, if
42
-     *    you want it to be accurately represented in various template contexts you need to have that relevant
43
-     *    variation file available.
44
-     *    - $variation_slug  is simply the variation slug for that variation.
45
-     *    - $extension = whatever the extension is for the variation used for the messenger calling it.  In MOST cases
46
-     *    messenger variations are .css files. Note: if your file names are not formatted correctly then they will NOT
47
-     *    be loaded.  The EE messages template pack system will fallback to corresponding default template pack for the
48
-     *    given messenger or as a last resort (i.e. no default variation for the given messenger) will not load any
49
-     *    variation (so the template pack would be unstyled)
50
-     *
51
-     * @see /core/libraries/messages/defaults/default/variations/* for example variation files for the email and html
52
-     *      messengers.
53
-     *
54
-     * @param string $identifier                      unique reference used to describe this variation registry. If
55
-     *                                                this ISN'T unique then this method will make it unique (and it
56
-     *                                                becomes harder to deregister).
57
-     * @param array  $setup_args                      {
58
-     *                                                an array of required values for registering the variations.
59
-     * @type array   $variations                      {
60
-     *                                                An array indexed by template_pack->dbref. and values are an array
61
-     *                                                indexed by messenger name and values are an array indexed by
62
-     *                                                message_type and values are an array indexed by variation_slug
63
-     *                                                and value  is the localized label for the variation.  Note this
64
-     *                                                api reserves the "default" variation name for the default
65
-     *                                                template pack so you can't register a default variation.  Also,
66
-     *                                                try to use unique variation slugs to reference your variations
67
-     *                                                because this api checks if any existing variations are in place
68
-     *                                                with that name.  If there are then subsequent variations for that
69
-     *                                                template pack with that same name will fail to register with a
70
-     *                                                persistent notice put up for the user. Required.
71
-     *                                                'default' => array(
72
-     *                                                'email' => array(
73
-     *                                                'registration_approved' => array(
74
-     *                                                my_ee_addon_blue_lagoon' => esc_html__('Blue Lagoon',
75
-     *                                                'text_domain'),
76
-     *                                                'my_ee_addon_red_sunset' => esc_html__('Red Sunset',
77
-     *                                                'text_domain')
78
-     *                                                )
79
-     *                                                )
80
-     *                                                )
81
-     *                                                }
82
-     * @type string  $base_path                       The base path for where all your variations are found.  Although
83
-     *                                                the full path to your variation files should include
84
-     *                                                '/variations/' in it, do not include the
85
-     *                                                'variations/' in this. Required.
86
-     * @type string  $base_url                        The base url for where all your variations are found. See note
87
-     *                                                above about the 'variations/' string. Required.
88
-     *                                                }
89
-     *                                                }
90
-     *
91
-     * @throws EE_Error
92
-     * @return void
93
-     */
94
-    public static function register($identifier = '', array $setup_args = [])
95
-    {
24
+	/**
25
+	 * Used to register new variations
26
+	 *
27
+	 * Variations are attached to template packs and do not typically change any structural layout but merely tweak the
28
+	 * style of the layout.  The most commonly known variation is css.  CSS does not affect html structure just the
29
+	 * style of existing structure.
30
+	 *
31
+	 * It's important to remember that when variation files are loaded, the file structure looked for is:
32
+	 * '{$messenger}_{$messenger_variation_type}_{$variation_slug}.{$extension}'.
33
+	 *
34
+	 *    - Every variation applies to specific messengers.  That's why the variation file includes the messenger name
35
+	 *    it.   This ensures that if a template pack the variation is registered with supports multiple variations that
36
+	 *    you can have the correct variation loaded.
37
+	 *    - EE_messengers also implicitly define variation "types" which typically are the context in which a specific
38
+	 *    variation is loaded.  For instance the email messenger has: 'inline', which is the css added inline to the
39
+	 *    email templates; 'preview', which is the same css only customized for when emails are previewed; and
40
+	 *    'wpeditor', which is the same css only customized so that it works with the wpeditor fields for templates to
41
+	 *    give a accurate representation of the style in the wysiwyg editor.  This means that for each variation, if
42
+	 *    you want it to be accurately represented in various template contexts you need to have that relevant
43
+	 *    variation file available.
44
+	 *    - $variation_slug  is simply the variation slug for that variation.
45
+	 *    - $extension = whatever the extension is for the variation used for the messenger calling it.  In MOST cases
46
+	 *    messenger variations are .css files. Note: if your file names are not formatted correctly then they will NOT
47
+	 *    be loaded.  The EE messages template pack system will fallback to corresponding default template pack for the
48
+	 *    given messenger or as a last resort (i.e. no default variation for the given messenger) will not load any
49
+	 *    variation (so the template pack would be unstyled)
50
+	 *
51
+	 * @see /core/libraries/messages/defaults/default/variations/* for example variation files for the email and html
52
+	 *      messengers.
53
+	 *
54
+	 * @param string $identifier                      unique reference used to describe this variation registry. If
55
+	 *                                                this ISN'T unique then this method will make it unique (and it
56
+	 *                                                becomes harder to deregister).
57
+	 * @param array  $setup_args                      {
58
+	 *                                                an array of required values for registering the variations.
59
+	 * @type array   $variations                      {
60
+	 *                                                An array indexed by template_pack->dbref. and values are an array
61
+	 *                                                indexed by messenger name and values are an array indexed by
62
+	 *                                                message_type and values are an array indexed by variation_slug
63
+	 *                                                and value  is the localized label for the variation.  Note this
64
+	 *                                                api reserves the "default" variation name for the default
65
+	 *                                                template pack so you can't register a default variation.  Also,
66
+	 *                                                try to use unique variation slugs to reference your variations
67
+	 *                                                because this api checks if any existing variations are in place
68
+	 *                                                with that name.  If there are then subsequent variations for that
69
+	 *                                                template pack with that same name will fail to register with a
70
+	 *                                                persistent notice put up for the user. Required.
71
+	 *                                                'default' => array(
72
+	 *                                                'email' => array(
73
+	 *                                                'registration_approved' => array(
74
+	 *                                                my_ee_addon_blue_lagoon' => esc_html__('Blue Lagoon',
75
+	 *                                                'text_domain'),
76
+	 *                                                'my_ee_addon_red_sunset' => esc_html__('Red Sunset',
77
+	 *                                                'text_domain')
78
+	 *                                                )
79
+	 *                                                )
80
+	 *                                                )
81
+	 *                                                }
82
+	 * @type string  $base_path                       The base path for where all your variations are found.  Although
83
+	 *                                                the full path to your variation files should include
84
+	 *                                                '/variations/' in it, do not include the
85
+	 *                                                'variations/' in this. Required.
86
+	 * @type string  $base_url                        The base url for where all your variations are found. See note
87
+	 *                                                above about the 'variations/' string. Required.
88
+	 *                                                }
89
+	 *                                                }
90
+	 *
91
+	 * @throws EE_Error
92
+	 * @return void
93
+	 */
94
+	public static function register($identifier = '', array $setup_args = [])
95
+	{
96 96
 
97
-        // check for required params
98
-        if (empty($identifier)) {
99
-            throw new EE_Error(
100
-                esc_html__(
101
-                    'In order to register variations for a EE_Message_Template_Pack, you must include a value to reference the variations being registered',
102
-                    'event_espresso'
103
-                )
104
-            );
105
-        }
97
+		// check for required params
98
+		if (empty($identifier)) {
99
+			throw new EE_Error(
100
+				esc_html__(
101
+					'In order to register variations for a EE_Message_Template_Pack, you must include a value to reference the variations being registered',
102
+					'event_espresso'
103
+				)
104
+			);
105
+		}
106 106
 
107
-        if (
108
-            ! is_array($setup_args)
109
-            || empty($setup_args['variations'])
110
-            || empty($setup_args['base_path'])
111
-            || empty($setup_args['base_url'])
112
-        ) {
113
-            throw new EE_Error(
114
-                esc_html__(
115
-                    'In order to register variations for a EE_Message_Template_Pack, you must include an array containing the following keys: "variations", "base_path", "base_url", "extension"',
116
-                    'event_espresso'
117
-                )
118
-            );
119
-        }
107
+		if (
108
+			! is_array($setup_args)
109
+			|| empty($setup_args['variations'])
110
+			|| empty($setup_args['base_path'])
111
+			|| empty($setup_args['base_url'])
112
+		) {
113
+			throw new EE_Error(
114
+				esc_html__(
115
+					'In order to register variations for a EE_Message_Template_Pack, you must include an array containing the following keys: "variations", "base_path", "base_url", "extension"',
116
+					'event_espresso'
117
+				)
118
+			);
119
+		}
120 120
 
121
-        // make sure we don't register twice
122
-        if (isset(self::$_registry[ $identifier ])) {
123
-            return;
124
-        }
121
+		// make sure we don't register twice
122
+		if (isset(self::$_registry[ $identifier ])) {
123
+			return;
124
+		}
125 125
 
126
-        // make sure variation ref is unique.
127
-        if (isset(self::$_registry[ $identifier ])) {
128
-            $identifier = uniqid() . '_' . $identifier;
129
-        }
126
+		// make sure variation ref is unique.
127
+		if (isset(self::$_registry[ $identifier ])) {
128
+			$identifier = uniqid() . '_' . $identifier;
129
+		}
130 130
 
131 131
 
132
-        // make sure this was called in the right place!
133
-        if (
134
-            ! did_action('EE_Brewing_Regular___messages_caf')
135
-            || did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations')
136
-        ) {
137
-            EE_Error::doing_it_wrong(
138
-                __METHOD__,
139
-                sprintf(
140
-                    esc_html__(
141
-                        'Messages Templates Variations given the reference "%s" has been attempted to be registered with the EE Messages Template Pack System.  It may or may not work because it should be only called on the "EE_Brewing_Regular__messages_caf" hook.',
142
-                        'event_espresso'
143
-                    ),
144
-                    $identifier
145
-                ),
146
-                '4.5.0'
147
-            );
148
-        }
132
+		// make sure this was called in the right place!
133
+		if (
134
+			! did_action('EE_Brewing_Regular___messages_caf')
135
+			|| did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations')
136
+		) {
137
+			EE_Error::doing_it_wrong(
138
+				__METHOD__,
139
+				sprintf(
140
+					esc_html__(
141
+						'Messages Templates Variations given the reference "%s" has been attempted to be registered with the EE Messages Template Pack System.  It may or may not work because it should be only called on the "EE_Brewing_Regular__messages_caf" hook.',
142
+						'event_espresso'
143
+					),
144
+					$identifier
145
+				),
146
+				'4.5.0'
147
+			);
148
+		}
149 149
 
150
-        // validate/sanitize incoming args.
151
-        $validated = [
152
-            'variations' => (array) $setup_args['variations'],
153
-            'base_path'  => (string) $setup_args['base_path'],
154
-            'base_url'   => (string) $setup_args['base_url'],
155
-        ];
150
+		// validate/sanitize incoming args.
151
+		$validated = [
152
+			'variations' => (array) $setup_args['variations'],
153
+			'base_path'  => (string) $setup_args['base_path'],
154
+			'base_url'   => (string) $setup_args['base_url'],
155
+		];
156 156
 
157 157
 
158
-        // check that no reserved variation names are in use and also checks if there are already existing variation names for a given template pack.  The former will throw an error.  The latter will remove the conflicting variation name but still register the others and will add EE_Error notice.
159
-        $validated                      = self::_verify_variations($identifier, $validated);
160
-        self::$_registry[ $identifier ] = $validated;
158
+		// check that no reserved variation names are in use and also checks if there are already existing variation names for a given template pack.  The former will throw an error.  The latter will remove the conflicting variation name but still register the others and will add EE_Error notice.
159
+		$validated                      = self::_verify_variations($identifier, $validated);
160
+		self::$_registry[ $identifier ] = $validated;
161 161
 
162
-        add_filter(
163
-            'FHEE__EE_Messages_Template_Pack__get_variations',
164
-            ['EE_Register_Messages_Template_Variations', 'get_variations'],
165
-            10,
166
-            4
167
-        );
168
-        add_filter(
169
-            'FHEE__EE_Messages_Template_Pack__get_variation',
170
-            ['EE_Register_Messages_Template_Variations', 'get_variation'],
171
-            10,
172
-            8
173
-        );
174
-    }
162
+		add_filter(
163
+			'FHEE__EE_Messages_Template_Pack__get_variations',
164
+			['EE_Register_Messages_Template_Variations', 'get_variations'],
165
+			10,
166
+			4
167
+		);
168
+		add_filter(
169
+			'FHEE__EE_Messages_Template_Pack__get_variation',
170
+			['EE_Register_Messages_Template_Variations', 'get_variation'],
171
+			10,
172
+			8
173
+		);
174
+	}
175 175
 
176 176
 
177
-    /**
178
-     * Cycles through the variations registered and makes sure there are no reserved variations being registered which
179
-     * throws an error.  Also checks if there is already a
180
-     *
181
-     * @param string $identifier           the reference for the variations being registered
182
-     * @param array  $validated_variations The variations setup array that's being registered (and verified).
183
-     * @return array
184
-     * @throws EE_Error
185
-     * @since  4.5.0
186
-     *
187
-     */
188
-    private static function _verify_variations($identifier, array $validated_variations)
189
-    {
190
-        foreach (self::$_registry as $settings) {
191
-            foreach ($settings['variations'] as $messenger) {
192
-                foreach ($messenger as $all_variations) {
193
-                    if (isset($all_variations['default'])) {
194
-                        throw new EE_Error(
195
-                            sprintf(
196
-                                esc_html__(
197
-                                    'Variations registered through the EE_Register_Messages_Template_Variations api cannot override the default variation for the default template.  Please check the code registering variations with this reference, "%s" and modify.',
198
-                                    'event_espresso'
199
-                                ),
200
-                                $identifier
201
-                            )
202
-                        );
203
-                    }
204
-                }
205
-            }
206
-        }
177
+	/**
178
+	 * Cycles through the variations registered and makes sure there are no reserved variations being registered which
179
+	 * throws an error.  Also checks if there is already a
180
+	 *
181
+	 * @param string $identifier           the reference for the variations being registered
182
+	 * @param array  $validated_variations The variations setup array that's being registered (and verified).
183
+	 * @return array
184
+	 * @throws EE_Error
185
+	 * @since  4.5.0
186
+	 *
187
+	 */
188
+	private static function _verify_variations($identifier, array $validated_variations)
189
+	{
190
+		foreach (self::$_registry as $settings) {
191
+			foreach ($settings['variations'] as $messenger) {
192
+				foreach ($messenger as $all_variations) {
193
+					if (isset($all_variations['default'])) {
194
+						throw new EE_Error(
195
+							sprintf(
196
+								esc_html__(
197
+									'Variations registered through the EE_Register_Messages_Template_Variations api cannot override the default variation for the default template.  Please check the code registering variations with this reference, "%s" and modify.',
198
+									'event_espresso'
199
+								),
200
+								$identifier
201
+							)
202
+						);
203
+					}
204
+				}
205
+			}
206
+		}
207 207
 
208
-        // is there already a variation registered with a given variation slug?
209
-        foreach ($validated_variations['variations'] as $template_pack => $messenger) {
210
-            foreach ($messenger as $message_type => $variations) {
211
-                foreach ($variations as $slug => $label) {
212
-                    foreach (self::$_registry as $registered_var => $reg_settings) {
213
-                        if (isset($reg_settings['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ])) {
214
-                            unset($validated_variations['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ]);
215
-                            EE_Error::add_error(
216
-                                sprintf(
217
-                                    esc_html__(
218
-                                        'Unable to register the %s variation for the %s template pack with the %s messenger and %s message_type because a variation with this slug was already registered for this template pack and messenger and message type by an addon using this key %s.',
219
-                                        'event_espresso'
220
-                                    ),
221
-                                    $label,
222
-                                    $template_pack,
223
-                                    $messenger,
224
-                                    $message_type,
225
-                                    $registered_var
226
-                                )
227
-                            );
228
-                        }
229
-                    }
230
-                }
231
-            }
232
-        }
233
-        return $validated_variations;
234
-    }
208
+		// is there already a variation registered with a given variation slug?
209
+		foreach ($validated_variations['variations'] as $template_pack => $messenger) {
210
+			foreach ($messenger as $message_type => $variations) {
211
+				foreach ($variations as $slug => $label) {
212
+					foreach (self::$_registry as $registered_var => $reg_settings) {
213
+						if (isset($reg_settings['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ])) {
214
+							unset($validated_variations['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ]);
215
+							EE_Error::add_error(
216
+								sprintf(
217
+									esc_html__(
218
+										'Unable to register the %s variation for the %s template pack with the %s messenger and %s message_type because a variation with this slug was already registered for this template pack and messenger and message type by an addon using this key %s.',
219
+										'event_espresso'
220
+									),
221
+									$label,
222
+									$template_pack,
223
+									$messenger,
224
+									$message_type,
225
+									$registered_var
226
+								)
227
+							);
228
+						}
229
+					}
230
+				}
231
+			}
232
+		}
233
+		return $validated_variations;
234
+	}
235 235
 
236 236
 
237
-    /**
238
-     * Callback for the FHEE__EE_Messages_Template_Pack__get_variation filter to ensure registered variations are used.
239
-     *
240
-     * @param string                    $variation_path The path generated for the current variation
241
-     * @param string                    $messenger      The messenger the variation is for
242
-     * @param string                    $message_type   EE_message_type->name
243
-     * @param string                    $type           The type of variation being requested
244
-     * @param string                    $variation      The slug for the variation being requested
245
-     * @param string                    $file_extension What the file extension is for the variation
246
-     * @param bool                      $url            Whether url or path is being returned.
247
-     * @param EE_Messages_Template_Pack $template_pack
248
-     *
249
-     * @return string                    The path to the requested variation.
250
-     * @since 4.5.0
251
-     *
252
-     */
253
-    public static function get_variation(
254
-        $variation_path,
255
-        $messenger,
256
-        $message_type,
257
-        $type,
258
-        $variation,
259
-        $file_extension,
260
-        $url,
261
-        EE_Messages_Template_Pack $template_pack
262
-    ) {
263
-        // so let's loop through our registered variations and then pull any details matching the request.
264
-        foreach (self::$_registry as $registry_settings) {
265
-            $base        = $url ? $registry_settings['base_url'] : $registry_settings['base_path'];
266
-            $file_string = $messenger . '_' . $type . '_' . $variation . $file_extension;
267
-            // see if this file exists
268
-            if (is_readable($registry_settings['base_path'] . $file_string)) {
269
-                return $base . $file_string;
270
-            }
271
-        }
237
+	/**
238
+	 * Callback for the FHEE__EE_Messages_Template_Pack__get_variation filter to ensure registered variations are used.
239
+	 *
240
+	 * @param string                    $variation_path The path generated for the current variation
241
+	 * @param string                    $messenger      The messenger the variation is for
242
+	 * @param string                    $message_type   EE_message_type->name
243
+	 * @param string                    $type           The type of variation being requested
244
+	 * @param string                    $variation      The slug for the variation being requested
245
+	 * @param string                    $file_extension What the file extension is for the variation
246
+	 * @param bool                      $url            Whether url or path is being returned.
247
+	 * @param EE_Messages_Template_Pack $template_pack
248
+	 *
249
+	 * @return string                    The path to the requested variation.
250
+	 * @since 4.5.0
251
+	 *
252
+	 */
253
+	public static function get_variation(
254
+		$variation_path,
255
+		$messenger,
256
+		$message_type,
257
+		$type,
258
+		$variation,
259
+		$file_extension,
260
+		$url,
261
+		EE_Messages_Template_Pack $template_pack
262
+	) {
263
+		// so let's loop through our registered variations and then pull any details matching the request.
264
+		foreach (self::$_registry as $registry_settings) {
265
+			$base        = $url ? $registry_settings['base_url'] : $registry_settings['base_path'];
266
+			$file_string = $messenger . '_' . $type . '_' . $variation . $file_extension;
267
+			// see if this file exists
268
+			if (is_readable($registry_settings['base_path'] . $file_string)) {
269
+				return $base . $file_string;
270
+			}
271
+		}
272 272
 
273
-        // no match
274
-        return $variation_path;
275
-    }
273
+		// no match
274
+		return $variation_path;
275
+	}
276 276
 
277 277
 
278
-    /**
279
-     * callback for the FHEE__EE_Messages_Template_Pack__get_variations filter.
280
-     *
281
-     *
282
-     * @param array                     $variations The original contents for the template pack variations property.
283
-     * @param string                    $messenger  The messenger requesting the variations.
284
-     * @param string                    $message_type
285
-     * @param EE_Messages_Template_Pack $template_pack
286
-     *
287
-     * @return array                   new variations array (or existing one if nothing registered)
288
-     * @since 4.5.0
289
-     *
290
-     * @see   $_variation property definition in EE_Messages_Template_Pack
291
-     */
292
-    public static function get_variations(
293
-        array $variations,
294
-        $messenger,
295
-        $message_type,
296
-        EE_Messages_Template_Pack $template_pack
297
-    ) {
298
-        // first let's check if we even have registered variations and get out early.
299
-        if (empty(self::$_registry)) {
300
-            return $variations;
301
-        }
278
+	/**
279
+	 * callback for the FHEE__EE_Messages_Template_Pack__get_variations filter.
280
+	 *
281
+	 *
282
+	 * @param array                     $variations The original contents for the template pack variations property.
283
+	 * @param string                    $messenger  The messenger requesting the variations.
284
+	 * @param string                    $message_type
285
+	 * @param EE_Messages_Template_Pack $template_pack
286
+	 *
287
+	 * @return array                   new variations array (or existing one if nothing registered)
288
+	 * @since 4.5.0
289
+	 *
290
+	 * @see   $_variation property definition in EE_Messages_Template_Pack
291
+	 */
292
+	public static function get_variations(
293
+		array $variations,
294
+		$messenger,
295
+		$message_type,
296
+		EE_Messages_Template_Pack $template_pack
297
+	) {
298
+		// first let's check if we even have registered variations and get out early.
299
+		if (empty(self::$_registry)) {
300
+			return $variations;
301
+		}
302 302
 
303
-        // do we have any new variations for the given messenger, $message_type, and template packs
304
-        foreach (self::$_registry as $registry_settings) {
305
-            // allow for different conditions.
306
-            if (empty($messenger)) {
307
-                return array_merge($registry_settings['variations'], $variations);
308
-            }
309
-            if (empty($message_type)) {
310
-                if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ])) {
311
-                    return array_merge(
312
-                        $registry_settings['variations'][ $template_pack->dbref ][ $messenger ],
313
-                        $variations
314
-                    );
315
-                }
316
-            } else {
317
-                if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ])) {
318
-                    return array_merge(
319
-                        $registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ],
320
-                        $variations
321
-                    );
322
-                }
323
-            }
324
-        }
325
-        return $variations;
326
-    }
303
+		// do we have any new variations for the given messenger, $message_type, and template packs
304
+		foreach (self::$_registry as $registry_settings) {
305
+			// allow for different conditions.
306
+			if (empty($messenger)) {
307
+				return array_merge($registry_settings['variations'], $variations);
308
+			}
309
+			if (empty($message_type)) {
310
+				if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ])) {
311
+					return array_merge(
312
+						$registry_settings['variations'][ $template_pack->dbref ][ $messenger ],
313
+						$variations
314
+					);
315
+				}
316
+			} else {
317
+				if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ])) {
318
+					return array_merge(
319
+						$registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ],
320
+						$variations
321
+					);
322
+				}
323
+			}
324
+		}
325
+		return $variations;
326
+	}
327 327
 
328 328
 
329
-    /**
330
-     * This deregisters a variation set that was previously registered with the given slug.
331
-     *
332
-     * @param string $identifier The name for the variation set that was previously registered.
333
-     *
334
-     * @return void
335
-     * @since 4.5.0
336
-     *
337
-     */
338
-    public static function deregister($identifier = '')
339
-    {
340
-        unset(self::$_registry[ $identifier ]);
341
-    }
329
+	/**
330
+	 * This deregisters a variation set that was previously registered with the given slug.
331
+	 *
332
+	 * @param string $identifier The name for the variation set that was previously registered.
333
+	 *
334
+	 * @return void
335
+	 * @since 4.5.0
336
+	 *
337
+	 */
338
+	public static function deregister($identifier = '')
339
+	{
340
+		unset(self::$_registry[ $identifier ]);
341
+	}
342 342
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -119,13 +119,13 @@  discard block
 block discarded – undo
119 119
         }
120 120
 
121 121
         // make sure we don't register twice
122
-        if (isset(self::$_registry[ $identifier ])) {
122
+        if (isset(self::$_registry[$identifier])) {
123 123
             return;
124 124
         }
125 125
 
126 126
         // make sure variation ref is unique.
127
-        if (isset(self::$_registry[ $identifier ])) {
128
-            $identifier = uniqid() . '_' . $identifier;
127
+        if (isset(self::$_registry[$identifier])) {
128
+            $identifier = uniqid().'_'.$identifier;
129 129
         }
130 130
 
131 131
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 
158 158
         // check that no reserved variation names are in use and also checks if there are already existing variation names for a given template pack.  The former will throw an error.  The latter will remove the conflicting variation name but still register the others and will add EE_Error notice.
159 159
         $validated                      = self::_verify_variations($identifier, $validated);
160
-        self::$_registry[ $identifier ] = $validated;
160
+        self::$_registry[$identifier] = $validated;
161 161
 
162 162
         add_filter(
163 163
             'FHEE__EE_Messages_Template_Pack__get_variations',
@@ -210,8 +210,8 @@  discard block
 block discarded – undo
210 210
             foreach ($messenger as $message_type => $variations) {
211 211
                 foreach ($variations as $slug => $label) {
212 212
                     foreach (self::$_registry as $registered_var => $reg_settings) {
213
-                        if (isset($reg_settings['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ])) {
214
-                            unset($validated_variations['variations'][ $template_pack ][ $messenger ][ $message_type ][ $slug ]);
213
+                        if (isset($reg_settings['variations'][$template_pack][$messenger][$message_type][$slug])) {
214
+                            unset($validated_variations['variations'][$template_pack][$messenger][$message_type][$slug]);
215 215
                             EE_Error::add_error(
216 216
                                 sprintf(
217 217
                                     esc_html__(
@@ -263,10 +263,10 @@  discard block
 block discarded – undo
263 263
         // so let's loop through our registered variations and then pull any details matching the request.
264 264
         foreach (self::$_registry as $registry_settings) {
265 265
             $base        = $url ? $registry_settings['base_url'] : $registry_settings['base_path'];
266
-            $file_string = $messenger . '_' . $type . '_' . $variation . $file_extension;
266
+            $file_string = $messenger.'_'.$type.'_'.$variation.$file_extension;
267 267
             // see if this file exists
268
-            if (is_readable($registry_settings['base_path'] . $file_string)) {
269
-                return $base . $file_string;
268
+            if (is_readable($registry_settings['base_path'].$file_string)) {
269
+                return $base.$file_string;
270 270
             }
271 271
         }
272 272
 
@@ -307,16 +307,16 @@  discard block
 block discarded – undo
307 307
                 return array_merge($registry_settings['variations'], $variations);
308 308
             }
309 309
             if (empty($message_type)) {
310
-                if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ])) {
310
+                if ( ! empty($registry_settings['variations'][$template_pack->dbref][$messenger])) {
311 311
                     return array_merge(
312
-                        $registry_settings['variations'][ $template_pack->dbref ][ $messenger ],
312
+                        $registry_settings['variations'][$template_pack->dbref][$messenger],
313 313
                         $variations
314 314
                     );
315 315
                 }
316 316
             } else {
317
-                if (! empty($registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ])) {
317
+                if ( ! empty($registry_settings['variations'][$template_pack->dbref][$messenger][$message_type])) {
318 318
                     return array_merge(
319
-                        $registry_settings['variations'][ $template_pack->dbref ][ $messenger ][ $message_type ],
319
+                        $registry_settings['variations'][$template_pack->dbref][$messenger][$message_type],
320 320
                         $variations
321 321
                     );
322 322
                 }
@@ -337,6 +337,6 @@  discard block
 block discarded – undo
337 337
      */
338 338
     public static function deregister($identifier = '')
339 339
     {
340
-        unset(self::$_registry[ $identifier ]);
340
+        unset(self::$_registry[$identifier]);
341 341
     }
342 342
 }
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Capabilities.lib.php 2 patches
Indentation   +199 added lines, -199 removed lines patch added patch discarded remove patch
@@ -15,214 +15,214 @@
 block discarded – undo
15 15
 class EE_Register_Capabilities implements EEI_Plugin_API
16 16
 {
17 17
 
18
-    /**
19
-     * Holds the settings for a specific registration.
20
-     *
21
-     * @var array
22
-     */
23
-    protected static $_registry = [];
18
+	/**
19
+	 * Holds the settings for a specific registration.
20
+	 *
21
+	 * @var array
22
+	 */
23
+	protected static $_registry = [];
24 24
 
25 25
 
26
-    /**
27
-     * Used to register capability items with EE core.
28
-     *
29
-     * @param string $identifier                                                          usually will be a class name
30
-     *                                                                                    that references capability
31
-     *                                                                                    related items setup for
32
-     *                                                                                    something.
33
-     * @param array  $setup_args                                                          {
34
-     *                                                                                    An array of items related to
35
-     *                                                                                    registering capabilities.
36
-     * @type array   $capabilities                                                        An array mapping capability
37
-     *                                                                                    strings to core WP Role.
38
-     *                                                                                    Something like: array(
39
-     *                                                                                    'administrator'    => array(
40
-     *                                                                                    'read_cap', 'edit_cap',
41
-     *                                                                                    'delete_cap'),
42
-     *                                                                                    'author'                =>
43
-     *                                                                                    array( 'read_cap' )
44
-     *                                                                                    ).
45
-     * @type array   $capability_maps                                                     EE_Meta_Capability_Map[]
46
-     * @return void
47
-     * @throws EE_Error
48
-     * @since 4.5.0
49
-     * @see   EE_Capabilities.php for php docs on these objects.
50
-     *                                                                                    Should be indexed by the
51
-     *                                                                                    classname for the capability
52
-     *                                                                                    map and values representing
53
-     *                                                                                    the arguments for the map.
54
-     *                                                                                    }
55
-     */
56
-    public static function register($identifier = '', array $setup_args = [])
57
-    {
58
-        // required fields MUST be present, so let's make sure they are.
59
-        if ($identifier === null || ! is_array($setup_args) || empty($setup_args['capabilities'])) {
60
-            throw new EE_Error(
61
-                esc_html__(
62
-                    'In order to register capabilities with EE_Register_Capabilities::register, you must include a unique name to reference the capabilities being registered, plus an array containing the following keys: "capabilities".',
63
-                    'event_espresso'
64
-                )
65
-            );
66
-        }
67
-        // make sure we don't register twice
68
-        if (isset(self::$_registry[ $identifier ])) {
69
-            return;
70
-        }
71
-        // make sure this is not registered too late or too early.
72
-        if (
73
-            ! did_action('AHEE__EE_System__load_espresso_addons')
74
-            || did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
75
-        ) {
76
-            EE_Error::doing_it_wrong(
77
-                __METHOD__,
78
-                sprintf(
79
-                    esc_html__(
80
-                        '%s has been registered too late.  Please ensure that EE_Register_Capabilities::register has been called at some point before the "AHEE__EE_System___detect_if_activation_or_upgrade__begin" action hook has been called.',
81
-                        'event_espresso'
82
-                    ),
83
-                    $identifier
84
-                ),
85
-                '4.5.0'
86
-            );
87
-        }
88
-        // some preliminary sanitization and setting to the $_registry property
89
-        self::$_registry[ $identifier ] = [
90
-            'caps'     => isset($setup_args['capabilities']) && is_array($setup_args['capabilities'])
91
-                ? $setup_args['capabilities']
92
-                : [],
93
-            'cap_maps' => isset($setup_args['capability_maps']) ? $setup_args['capability_maps'] : [],
94
-        ];
95
-        // set initial caps (note that EE_Capabilities takes care of making sure that the caps get added only once)
96
-        add_filter(
97
-            'FHEE__EE_Capabilities__addCaps__capabilities_to_add',
98
-            ['EE_Register_Capabilities', 'register_capabilities']
99
-        );
100
-        // add filter for cap maps
101
-        add_filter(
102
-            'FHEE__EE_Capabilities___set_meta_caps__meta_caps',
103
-            ['EE_Register_Capabilities', 'register_cap_maps']
104
-        );
105
-    }
26
+	/**
27
+	 * Used to register capability items with EE core.
28
+	 *
29
+	 * @param string $identifier                                                          usually will be a class name
30
+	 *                                                                                    that references capability
31
+	 *                                                                                    related items setup for
32
+	 *                                                                                    something.
33
+	 * @param array  $setup_args                                                          {
34
+	 *                                                                                    An array of items related to
35
+	 *                                                                                    registering capabilities.
36
+	 * @type array   $capabilities                                                        An array mapping capability
37
+	 *                                                                                    strings to core WP Role.
38
+	 *                                                                                    Something like: array(
39
+	 *                                                                                    'administrator'    => array(
40
+	 *                                                                                    'read_cap', 'edit_cap',
41
+	 *                                                                                    'delete_cap'),
42
+	 *                                                                                    'author'                =>
43
+	 *                                                                                    array( 'read_cap' )
44
+	 *                                                                                    ).
45
+	 * @type array   $capability_maps                                                     EE_Meta_Capability_Map[]
46
+	 * @return void
47
+	 * @throws EE_Error
48
+	 * @since 4.5.0
49
+	 * @see   EE_Capabilities.php for php docs on these objects.
50
+	 *                                                                                    Should be indexed by the
51
+	 *                                                                                    classname for the capability
52
+	 *                                                                                    map and values representing
53
+	 *                                                                                    the arguments for the map.
54
+	 *                                                                                    }
55
+	 */
56
+	public static function register($identifier = '', array $setup_args = [])
57
+	{
58
+		// required fields MUST be present, so let's make sure they are.
59
+		if ($identifier === null || ! is_array($setup_args) || empty($setup_args['capabilities'])) {
60
+			throw new EE_Error(
61
+				esc_html__(
62
+					'In order to register capabilities with EE_Register_Capabilities::register, you must include a unique name to reference the capabilities being registered, plus an array containing the following keys: "capabilities".',
63
+					'event_espresso'
64
+				)
65
+			);
66
+		}
67
+		// make sure we don't register twice
68
+		if (isset(self::$_registry[ $identifier ])) {
69
+			return;
70
+		}
71
+		// make sure this is not registered too late or too early.
72
+		if (
73
+			! did_action('AHEE__EE_System__load_espresso_addons')
74
+			|| did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
75
+		) {
76
+			EE_Error::doing_it_wrong(
77
+				__METHOD__,
78
+				sprintf(
79
+					esc_html__(
80
+						'%s has been registered too late.  Please ensure that EE_Register_Capabilities::register has been called at some point before the "AHEE__EE_System___detect_if_activation_or_upgrade__begin" action hook has been called.',
81
+						'event_espresso'
82
+					),
83
+					$identifier
84
+				),
85
+				'4.5.0'
86
+			);
87
+		}
88
+		// some preliminary sanitization and setting to the $_registry property
89
+		self::$_registry[ $identifier ] = [
90
+			'caps'     => isset($setup_args['capabilities']) && is_array($setup_args['capabilities'])
91
+				? $setup_args['capabilities']
92
+				: [],
93
+			'cap_maps' => isset($setup_args['capability_maps']) ? $setup_args['capability_maps'] : [],
94
+		];
95
+		// set initial caps (note that EE_Capabilities takes care of making sure that the caps get added only once)
96
+		add_filter(
97
+			'FHEE__EE_Capabilities__addCaps__capabilities_to_add',
98
+			['EE_Register_Capabilities', 'register_capabilities']
99
+		);
100
+		// add filter for cap maps
101
+		add_filter(
102
+			'FHEE__EE_Capabilities___set_meta_caps__meta_caps',
103
+			['EE_Register_Capabilities', 'register_cap_maps']
104
+		);
105
+	}
106 106
 
107 107
 
108
-    /**
109
-     * callback for FHEE__EE_Capabilities__init_caps_map__caps filter.
110
-     * Takes care of registering additional capabilities to the caps map.   Note, that this also on the initial
111
-     * registration ensures that new capabilities are added to existing roles.
112
-     *
113
-     * @param array $incoming_caps The original caps map.
114
-     * @return array merged in new caps.
115
-     */
116
-    public static function register_capabilities(array $incoming_caps)
117
-    {
118
-        foreach (self::$_registry as $caps_and_cap_map) {
119
-            $incoming_caps = array_merge_recursive($incoming_caps, $caps_and_cap_map['caps']);
120
-        }
121
-        return $incoming_caps;
122
-    }
108
+	/**
109
+	 * callback for FHEE__EE_Capabilities__init_caps_map__caps filter.
110
+	 * Takes care of registering additional capabilities to the caps map.   Note, that this also on the initial
111
+	 * registration ensures that new capabilities are added to existing roles.
112
+	 *
113
+	 * @param array $incoming_caps The original caps map.
114
+	 * @return array merged in new caps.
115
+	 */
116
+	public static function register_capabilities(array $incoming_caps)
117
+	{
118
+		foreach (self::$_registry as $caps_and_cap_map) {
119
+			$incoming_caps = array_merge_recursive($incoming_caps, $caps_and_cap_map['caps']);
120
+		}
121
+		return $incoming_caps;
122
+	}
123 123
 
124 124
 
125
-    /**
126
-     * Callback for the 'FHEE__EE_Capabilities___set_meta_caps__meta_caps' filter which registers an array of
127
-     * capability maps for the WP meta_caps filter called in EE_Capabilities.
128
-     *
129
-     * @param EE_Meta_Capability_Map[] $cap_maps The existing cap maps array.
130
-     * @return EE_Meta_Capability_Map[]
131
-     * @throws EE_Error
132
-     * @since 4.5.0
133
-     */
134
-    public static function register_cap_maps(array $cap_maps)
135
-    {
136
-        // loop through and instantiate cap maps.
137
-        foreach (self::$_registry as $identifier => $setup) {
138
-            if (! isset($setup['cap_maps'])) {
139
-                continue;
140
-            }
141
-            foreach ($setup['cap_maps'] as $cap_class => $args) {
125
+	/**
126
+	 * Callback for the 'FHEE__EE_Capabilities___set_meta_caps__meta_caps' filter which registers an array of
127
+	 * capability maps for the WP meta_caps filter called in EE_Capabilities.
128
+	 *
129
+	 * @param EE_Meta_Capability_Map[] $cap_maps The existing cap maps array.
130
+	 * @return EE_Meta_Capability_Map[]
131
+	 * @throws EE_Error
132
+	 * @since 4.5.0
133
+	 */
134
+	public static function register_cap_maps(array $cap_maps)
135
+	{
136
+		// loop through and instantiate cap maps.
137
+		foreach (self::$_registry as $identifier => $setup) {
138
+			if (! isset($setup['cap_maps'])) {
139
+				continue;
140
+			}
141
+			foreach ($setup['cap_maps'] as $cap_class => $args) {
142 142
 
143
-                /**
144
-                 * account for cases where capability maps may be indexed
145
-                 * numerically to allow for the same map class to be utilized
146
-                 * In those cases, maps will be setup in an array like:
147
-                 * array(
148
-                 *    0 => array( 'EE_Meta_Capability' => array(
149
-                 *        'ee_edit_cap', array( 'Object_Name',
150
-                 *        'ee_edit_published_cap',
151
-                 *        'ee_edit_others_cap', 'ee_edit_private_cap' )
152
-                 *        ) )
153
-                 *    1 => ...
154
-                 * )
155
-                 * instead of:
156
-                 * array(
157
-                 *    'EE_Meta_Capability' => array(
158
-                 *        'ee_edit_cap', array( 'Object_Name',
159
-                 *        'ee_edit_published_cap',
160
-                 *        'ee_edit_others_cap', 'ee_edit_private_cap' )
161
-                 *        ),
162
-                 *    ...
163
-                 * )
164
-                 */
165
-                if (is_numeric($cap_class)) {
166
-                    $cap_class = key($args);
167
-                    $args      = $args[ $cap_class ];
168
-                }
143
+				/**
144
+				 * account for cases where capability maps may be indexed
145
+				 * numerically to allow for the same map class to be utilized
146
+				 * In those cases, maps will be setup in an array like:
147
+				 * array(
148
+				 *    0 => array( 'EE_Meta_Capability' => array(
149
+				 *        'ee_edit_cap', array( 'Object_Name',
150
+				 *        'ee_edit_published_cap',
151
+				 *        'ee_edit_others_cap', 'ee_edit_private_cap' )
152
+				 *        ) )
153
+				 *    1 => ...
154
+				 * )
155
+				 * instead of:
156
+				 * array(
157
+				 *    'EE_Meta_Capability' => array(
158
+				 *        'ee_edit_cap', array( 'Object_Name',
159
+				 *        'ee_edit_published_cap',
160
+				 *        'ee_edit_others_cap', 'ee_edit_private_cap' )
161
+				 *        ),
162
+				 *    ...
163
+				 * )
164
+				 */
165
+				if (is_numeric($cap_class)) {
166
+					$cap_class = key($args);
167
+					$args      = $args[ $cap_class ];
168
+				}
169 169
 
170
-                if (! class_exists($cap_class)) {
171
-                    throw new EE_Error(
172
-                        sprintf(
173
-                            esc_html__(
174
-                                'An addon (%s) has tried to register a capability map improperly.  Capability map arrays must be indexed by capability map classname, and an array for the class arguments',
175
-                                'event_espresso'
176
-                            ),
177
-                            $identifier
178
-                        )
179
-                    );
180
-                }
170
+				if (! class_exists($cap_class)) {
171
+					throw new EE_Error(
172
+						sprintf(
173
+							esc_html__(
174
+								'An addon (%s) has tried to register a capability map improperly.  Capability map arrays must be indexed by capability map classname, and an array for the class arguments',
175
+								'event_espresso'
176
+							),
177
+							$identifier
178
+						)
179
+					);
180
+				}
181 181
 
182
-                if (count($args) !== 2) {
183
-                    throw new EE_Error(
184
-                        sprintf(
185
-                            esc_html__(
186
-                                'An addon (%s) has tried to register a capability map improperly.  Capability map arrays must be indexed by capability map classname, and an array for the class arguments.  The array should have two values the first being a string and the second an array.',
187
-                                'event_espresso'
188
-                            ),
189
-                            $identifier
190
-                        )
191
-                    );
192
-                }
193
-                $cap_maps[] = new $cap_class($args[0], $args[1]);
194
-            }
195
-        }
196
-        return $cap_maps;
197
-    }
182
+				if (count($args) !== 2) {
183
+					throw new EE_Error(
184
+						sprintf(
185
+							esc_html__(
186
+								'An addon (%s) has tried to register a capability map improperly.  Capability map arrays must be indexed by capability map classname, and an array for the class arguments.  The array should have two values the first being a string and the second an array.',
187
+								'event_espresso'
188
+							),
189
+							$identifier
190
+						)
191
+					);
192
+				}
193
+				$cap_maps[] = new $cap_class($args[0], $args[1]);
194
+			}
195
+		}
196
+		return $cap_maps;
197
+	}
198 198
 
199 199
 
200
-    /**
201
-     * @param string $identifier
202
-     * @throws InvalidArgumentException
203
-     * @throws InvalidDataTypeException
204
-     * @throws InvalidInterfaceException
205
-     */
206
-    public static function deregister($identifier = '')
207
-    {
208
-        if (! empty(self::$_registry[ $identifier ])) {
209
-            if (! empty(self::$_registry[ $identifier ]['caps'])) {
210
-                // if it's too early to remove capabilities, wait to do this until core is loaded and ready
211
-                $caps_to_remove = self::$_registry[ $identifier ]['caps'];
212
-                if (did_action('AHEE__EE_System__core_loaded_and_ready')) {
213
-                    $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
214
-                    $capabilities->removeCaps($caps_to_remove);
215
-                } else {
216
-                    add_action(
217
-                        'AHEE__EE_System__core_loaded_and_ready',
218
-                        function () use ($caps_to_remove) {
219
-                            $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
220
-                            $capabilities->removeCaps($caps_to_remove);
221
-                        }
222
-                    );
223
-                }
224
-            }
225
-        }
226
-        unset(self::$_registry[ $identifier ]);
227
-    }
200
+	/**
201
+	 * @param string $identifier
202
+	 * @throws InvalidArgumentException
203
+	 * @throws InvalidDataTypeException
204
+	 * @throws InvalidInterfaceException
205
+	 */
206
+	public static function deregister($identifier = '')
207
+	{
208
+		if (! empty(self::$_registry[ $identifier ])) {
209
+			if (! empty(self::$_registry[ $identifier ]['caps'])) {
210
+				// if it's too early to remove capabilities, wait to do this until core is loaded and ready
211
+				$caps_to_remove = self::$_registry[ $identifier ]['caps'];
212
+				if (did_action('AHEE__EE_System__core_loaded_and_ready')) {
213
+					$capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
214
+					$capabilities->removeCaps($caps_to_remove);
215
+				} else {
216
+					add_action(
217
+						'AHEE__EE_System__core_loaded_and_ready',
218
+						function () use ($caps_to_remove) {
219
+							$capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
220
+							$capabilities->removeCaps($caps_to_remove);
221
+						}
222
+					);
223
+				}
224
+			}
225
+		}
226
+		unset(self::$_registry[ $identifier ]);
227
+	}
228 228
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
             );
66 66
         }
67 67
         // make sure we don't register twice
68
-        if (isset(self::$_registry[ $identifier ])) {
68
+        if (isset(self::$_registry[$identifier])) {
69 69
             return;
70 70
         }
71 71
         // make sure this is not registered too late or too early.
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
             );
87 87
         }
88 88
         // some preliminary sanitization and setting to the $_registry property
89
-        self::$_registry[ $identifier ] = [
89
+        self::$_registry[$identifier] = [
90 90
             'caps'     => isset($setup_args['capabilities']) && is_array($setup_args['capabilities'])
91 91
                 ? $setup_args['capabilities']
92 92
                 : [],
@@ -135,7 +135,7 @@  discard block
 block discarded – undo
135 135
     {
136 136
         // loop through and instantiate cap maps.
137 137
         foreach (self::$_registry as $identifier => $setup) {
138
-            if (! isset($setup['cap_maps'])) {
138
+            if ( ! isset($setup['cap_maps'])) {
139 139
                 continue;
140 140
             }
141 141
             foreach ($setup['cap_maps'] as $cap_class => $args) {
@@ -164,10 +164,10 @@  discard block
 block discarded – undo
164 164
                  */
165 165
                 if (is_numeric($cap_class)) {
166 166
                     $cap_class = key($args);
167
-                    $args      = $args[ $cap_class ];
167
+                    $args      = $args[$cap_class];
168 168
                 }
169 169
 
170
-                if (! class_exists($cap_class)) {
170
+                if ( ! class_exists($cap_class)) {
171 171
                     throw new EE_Error(
172 172
                         sprintf(
173 173
                             esc_html__(
@@ -205,17 +205,17 @@  discard block
 block discarded – undo
205 205
      */
206 206
     public static function deregister($identifier = '')
207 207
     {
208
-        if (! empty(self::$_registry[ $identifier ])) {
209
-            if (! empty(self::$_registry[ $identifier ]['caps'])) {
208
+        if ( ! empty(self::$_registry[$identifier])) {
209
+            if ( ! empty(self::$_registry[$identifier]['caps'])) {
210 210
                 // if it's too early to remove capabilities, wait to do this until core is loaded and ready
211
-                $caps_to_remove = self::$_registry[ $identifier ]['caps'];
211
+                $caps_to_remove = self::$_registry[$identifier]['caps'];
212 212
                 if (did_action('AHEE__EE_System__core_loaded_and_ready')) {
213 213
                     $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
214 214
                     $capabilities->removeCaps($caps_to_remove);
215 215
                 } else {
216 216
                     add_action(
217 217
                         'AHEE__EE_System__core_loaded_and_ready',
218
-                        function () use ($caps_to_remove) {
218
+                        function() use ($caps_to_remove) {
219 219
                             $capabilities = LoaderFactory::getLoader()->getShared('EE_Capabilities');
220 220
                             $capabilities->removeCaps($caps_to_remove);
221 221
                         }
@@ -223,6 +223,6 @@  discard block
 block discarded – undo
223 223
                 }
224 224
             }
225 225
         }
226
-        unset(self::$_registry[ $identifier ]);
226
+        unset(self::$_registry[$identifier]);
227 227
     }
228 228
 }
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Config.lib.php 2 patches
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -12,114 +12,114 @@
 block discarded – undo
12 12
 class EE_Register_Config implements EEI_Plugin_API
13 13
 {
14 14
 
15
-    /**
16
-     * Holds registered EE_Config items
17
-     *
18
-     * @var array
19
-     */
20
-    protected static $_ee_config_registry = [];
15
+	/**
16
+	 * Holds registered EE_Config items
17
+	 *
18
+	 * @var array
19
+	 */
20
+	protected static $_ee_config_registry = [];
21 21
 
22 22
 
23
-    /**
24
-     * Handles registering the new config with the EE_Config::instance()->addons property
25
-     *
26
-     * @param string $identifier                          The name of the Config class being registered.
27
-     *                                                    Note this class must extend EE_Config Base and must have
28
-     *                                                    already been registered with an autoloader.
29
-     * @param array  $setup_args                          {
30
-     *
31
-     * @type  string $config_name                         Optional.  by default the new config will be registered to
32
-     *        EE_Config::instance()->addons->{config_class}, but supplying a "config_name" will set the property name
33
-     *        that this variable is accessible by. ie: EE_Config::instance()->addons->{config_name}
34
-     *                            }
35
-     * @return void
36
-     * @throws EE_Error
37
-     *
38
-     * @since    4.3.0
39
-     */
40
-    public static function register($identifier = '', array $setup_args = [])
41
-    {
23
+	/**
24
+	 * Handles registering the new config with the EE_Config::instance()->addons property
25
+	 *
26
+	 * @param string $identifier                          The name of the Config class being registered.
27
+	 *                                                    Note this class must extend EE_Config Base and must have
28
+	 *                                                    already been registered with an autoloader.
29
+	 * @param array  $setup_args                          {
30
+	 *
31
+	 * @type  string $config_name                         Optional.  by default the new config will be registered to
32
+	 *        EE_Config::instance()->addons->{config_class}, but supplying a "config_name" will set the property name
33
+	 *        that this variable is accessible by. ie: EE_Config::instance()->addons->{config_name}
34
+	 *                            }
35
+	 * @return void
36
+	 * @throws EE_Error
37
+	 *
38
+	 * @since    4.3.0
39
+	 */
40
+	public static function register($identifier = '', array $setup_args = [])
41
+	{
42 42
 
43
-        $setup_args['config_name']    = isset($setup_args['config_name']) && ! empty($setup_args['config_name'])
44
-            ? $setup_args['config_name'] : $identifier;
45
-        $setup_args['config_section'] = isset($setup_args['config_section']) && ! empty($setup_args['config_section'])
46
-            ? $setup_args['config_section'] : 'addons';
43
+		$setup_args['config_name']    = isset($setup_args['config_name']) && ! empty($setup_args['config_name'])
44
+			? $setup_args['config_name'] : $identifier;
45
+		$setup_args['config_section'] = isset($setup_args['config_section']) && ! empty($setup_args['config_section'])
46
+			? $setup_args['config_section'] : 'addons';
47 47
 
48
-        // required fields MUST be present, so let's make sure they are.
49
-        if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['config_name'])) {
50
-            throw new EE_Error(
51
-                esc_html__(
52
-                    'In order to register a Config Class with EE_Register_Config::register(), you must include a "config_class" (the actual class name for this config class). As well, you can supply an array containing the following keys: "config_section" the main section of the config object the settings will be saved under (by default the new config will be registered under EE_Config::instance()->modules or EE_Config::instance()->addons depending on what type of class is calling this), "config_name" (by default the new config will be registered to EE_Config::instance()->{config_section}->{config_class}, but supplying a "config_name" will set the property name that this variable is accessible by. ie: EE_Config::instance()->{config_section}->{config_name})',
53
-                    'event_espresso'
54
-                )
55
-            );
56
-        }
48
+		// required fields MUST be present, so let's make sure they are.
49
+		if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['config_name'])) {
50
+			throw new EE_Error(
51
+				esc_html__(
52
+					'In order to register a Config Class with EE_Register_Config::register(), you must include a "config_class" (the actual class name for this config class). As well, you can supply an array containing the following keys: "config_section" the main section of the config object the settings will be saved under (by default the new config will be registered under EE_Config::instance()->modules or EE_Config::instance()->addons depending on what type of class is calling this), "config_name" (by default the new config will be registered to EE_Config::instance()->{config_section}->{config_class}, but supplying a "config_name" will set the property name that this variable is accessible by. ie: EE_Config::instance()->{config_section}->{config_name})',
53
+					'event_espresso'
54
+				)
55
+			);
56
+		}
57 57
 
58
-        // make sure we don't register twice
59
-        if (isset(self::$_ee_config_registry[ $identifier ])) {
60
-            return;
61
-        }
58
+		// make sure we don't register twice
59
+		if (isset(self::$_ee_config_registry[ $identifier ])) {
60
+			return;
61
+		}
62 62
 
63 63
 
64
-        // first find out if this happened too late.
65
-        if (did_action('AHEE__EE_System__load_core_configuration__begin')) {
66
-            EE_Error::doing_it_wrong(
67
-                __METHOD__,
68
-                sprintf(
69
-                    esc_html__(
70
-                        'An attempt to register "%s" as an EE_Config object has failed because it was not registered at the correct hookpoint.  Please register before the "AHEE__EE_System__load_core_configuration__begin" hook has fired',
71
-                        'event_espresso'
72
-                    ),
73
-                    $setup_args['config_name']
74
-                ),
75
-                '4.3'
76
-            );
77
-        }
78
-        // add incoming stuff to our registry property
79
-        self::$_ee_config_registry[ $identifier ] = [
80
-            'section' => $setup_args['config_section'],
81
-            'name'    => $setup_args['config_name'],
82
-        ];
64
+		// first find out if this happened too late.
65
+		if (did_action('AHEE__EE_System__load_core_configuration__begin')) {
66
+			EE_Error::doing_it_wrong(
67
+				__METHOD__,
68
+				sprintf(
69
+					esc_html__(
70
+						'An attempt to register "%s" as an EE_Config object has failed because it was not registered at the correct hookpoint.  Please register before the "AHEE__EE_System__load_core_configuration__begin" hook has fired',
71
+						'event_espresso'
72
+					),
73
+					$setup_args['config_name']
74
+				),
75
+				'4.3'
76
+			);
77
+		}
78
+		// add incoming stuff to our registry property
79
+		self::$_ee_config_registry[ $identifier ] = [
80
+			'section' => $setup_args['config_section'],
81
+			'name'    => $setup_args['config_name'],
82
+		];
83 83
 
84
-        add_action('AHEE__EE_Config___load_core_config__end', ['EE_Register_Config', 'set_config'], 15, 1);
85
-        add_action('AHEE__EE_Config__update_espresso_config__end', ['EE_Register_Config', 'set_config'], 15, 1);
86
-    }
84
+		add_action('AHEE__EE_Config___load_core_config__end', ['EE_Register_Config', 'set_config'], 15, 1);
85
+		add_action('AHEE__EE_Config__update_espresso_config__end', ['EE_Register_Config', 'set_config'], 15, 1);
86
+	}
87 87
 
88 88
 
89
-    /**
90
-     * Callback for the AHEE__EE_Config___load_core_config__end hook.
91
-     * basically just calls EE_Config->get_config() which will take care of loading or creating our config object for us
92
-     *
93
-     * @param EE_Config $EE_Config
94
-     * @return void
95
-     * @throws EE_Error
96
-     * @since    4.3.0
97
-     */
98
-    public static function set_config(EE_Config $EE_Config)
99
-    {
100
-        foreach (self::$_ee_config_registry as $identifier => $settings) {
101
-            // first some validation of our incoming class_name.  We'll throw an error early if its' not registered correctly
102
-            if (! class_exists($identifier)) {
103
-                throw new EE_Error(
104
-                    sprintf(
105
-                        esc_html__(
106
-                            'The "%s" config class can not be registered with EE_Config because it does not exist.  Verify that an autoloader has been set for this class',
107
-                            'event_espresso'
108
-                        ),
109
-                        $identifier
110
-                    )
111
-                );
112
-            }
113
-            $EE_Config->get_config($settings['section'], $settings['name'], $identifier);
114
-        }
115
-    }
89
+	/**
90
+	 * Callback for the AHEE__EE_Config___load_core_config__end hook.
91
+	 * basically just calls EE_Config->get_config() which will take care of loading or creating our config object for us
92
+	 *
93
+	 * @param EE_Config $EE_Config
94
+	 * @return void
95
+	 * @throws EE_Error
96
+	 * @since    4.3.0
97
+	 */
98
+	public static function set_config(EE_Config $EE_Config)
99
+	{
100
+		foreach (self::$_ee_config_registry as $identifier => $settings) {
101
+			// first some validation of our incoming class_name.  We'll throw an error early if its' not registered correctly
102
+			if (! class_exists($identifier)) {
103
+				throw new EE_Error(
104
+					sprintf(
105
+						esc_html__(
106
+							'The "%s" config class can not be registered with EE_Config because it does not exist.  Verify that an autoloader has been set for this class',
107
+							'event_espresso'
108
+						),
109
+						$identifier
110
+					)
111
+				);
112
+			}
113
+			$EE_Config->get_config($settings['section'], $settings['name'], $identifier);
114
+		}
115
+	}
116 116
 
117 117
 
118
-    /**
119
-     * @param string $identifier
120
-     */
121
-    public static function deregister($identifier = '')
122
-    {
123
-        unset(self::$_ee_config_registry[ $identifier ]);
124
-    }
118
+	/**
119
+	 * @param string $identifier
120
+	 */
121
+	public static function deregister($identifier = '')
122
+	{
123
+		unset(self::$_ee_config_registry[ $identifier ]);
124
+	}
125 125
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
         }
57 57
 
58 58
         // make sure we don't register twice
59
-        if (isset(self::$_ee_config_registry[ $identifier ])) {
59
+        if (isset(self::$_ee_config_registry[$identifier])) {
60 60
             return;
61 61
         }
62 62
 
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
             );
77 77
         }
78 78
         // add incoming stuff to our registry property
79
-        self::$_ee_config_registry[ $identifier ] = [
79
+        self::$_ee_config_registry[$identifier] = [
80 80
             'section' => $setup_args['config_section'],
81 81
             'name'    => $setup_args['config_name'],
82 82
         ];
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
     {
100 100
         foreach (self::$_ee_config_registry as $identifier => $settings) {
101 101
             // first some validation of our incoming class_name.  We'll throw an error early if its' not registered correctly
102
-            if (! class_exists($identifier)) {
102
+            if ( ! class_exists($identifier)) {
103 103
                 throw new EE_Error(
104 104
                     sprintf(
105 105
                         esc_html__(
@@ -120,6 +120,6 @@  discard block
 block discarded – undo
120 120
      */
121 121
     public static function deregister($identifier = '')
122 122
     {
123
-        unset(self::$_ee_config_registry[ $identifier ]);
123
+        unset(self::$_ee_config_registry[$identifier]);
124 124
     }
125 125
 }
Please login to merge, or discard this patch.
core/libraries/plugin_api/db/EEME_Base.lib.php 2 patches
Indentation   +207 added lines, -207 removed lines patch added patch discarded remove patch
@@ -44,211 +44,211 @@
 block discarded – undo
44 44
 abstract class EEME_Base
45 45
 {
46 46
 
47
-    const extending_method_prefix = 'ext_';
48
-    const dynamic_callback_method_prefix = 'dynamic_callback_method_';
49
-
50
-    protected $_extra_tables = array();
51
-    protected $_extra_fields = array();
52
-    protected $_extra_relations = array();
53
-
54
-    /**
55
-     * The model name that is extended (not classname)
56
-     *
57
-     * @var string
58
-     */
59
-    protected $_model_name_extended = null;
60
-
61
-    /**
62
-     * The model this extends
63
-     *
64
-     * @var EEM_Base
65
-     */
66
-    protected $_ = null;
67
-
68
-
69
-    /**
70
-     * @throws \EE_Error
71
-     */
72
-    public function __construct()
73
-    {
74
-        if (! $this->_model_name_extended) {
75
-            throw new EE_Error(
76
-                esc_html__(
77
-                    "When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'",
78
-                    "event_espresso"
79
-                )
80
-            );
81
-        }
82
-        $construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end';
83
-        if (did_action($construct_end_action)) {
84
-            throw new EE_Error(
85
-                sprintf(
86
-                    esc_html__(
87
-                        "Hooked in model extension '%s' too late! The model %s has already been used! We know because the action %s has been fired",
88
-                        "event_espresso"
89
-                    ),
90
-                    get_class($this),
91
-                    $this->_model_name_extended,
92
-                    $construct_end_action
93
-                )
94
-            );
95
-        }
96
-        add_filter(
97
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
98
-            array($this, 'add_extra_tables_on_filter')
99
-        );
100
-        add_filter(
101
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
102
-            array($this, 'add_extra_fields_on_filter')
103
-        );
104
-        add_filter(
105
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
106
-            array($this, 'add_extra_relations_on_filter')
107
-        );
108
-        $this->_register_extending_methods();
109
-    }
110
-
111
-
112
-    /**
113
-     * @param array $existing_tables
114
-     * @return array
115
-     */
116
-    public function add_extra_tables_on_filter($existing_tables)
117
-    {
118
-        return array_merge((array) $existing_tables, $this->_extra_tables);
119
-    }
120
-
121
-
122
-    /**
123
-     * @param array $existing_fields
124
-     * @return array
125
-     */
126
-    public function add_extra_fields_on_filter($existing_fields)
127
-    {
128
-        if ($this->_extra_fields) {
129
-            foreach ($this->_extra_fields as $table_alias => $fields) {
130
-                if (! isset($existing_fields[ $table_alias ])) {
131
-                    $existing_fields[ $table_alias ] = array();
132
-                }
133
-                $existing_fields[ $table_alias ] = array_merge(
134
-                    (array) $existing_fields[ $table_alias ],
135
-                    $this->_extra_fields[ $table_alias ]
136
-                );
137
-            }
138
-        }
139
-        return $existing_fields;
140
-    }
141
-
142
-
143
-    /**
144
-     * @param array $existing_relations
145
-     * @return array
146
-     */
147
-    public function add_extra_relations_on_filter($existing_relations)
148
-    {
149
-        return array_merge((array) $existing_relations, $this->_extra_relations);
150
-    }
151
-
152
-
153
-    /**
154
-     * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the
155
-     * model extended. (Internally uses filters, and the __call magic method)
156
-     */
157
-    protected function _register_extending_methods()
158
-    {
159
-        $all_methods = get_class_methods(get_class($this));
160
-        foreach ($all_methods as $method_name) {
161
-            if (strpos($method_name, self::extending_method_prefix) === 0) {
162
-                $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
163
-                $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
164
-                add_filter(
165
-                    $callback_name,
166
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
167
-                    10,
168
-                    10
169
-                );
170
-            }
171
-        }
172
-    }
173
-
174
-    /**
175
-     * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the
176
-     * model extended. (Internally uses filters, and the __call magic method)
177
-     */
178
-    public function deregister()
179
-    {
180
-        remove_filter(
181
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
182
-            array($this, 'add_extra_tables_on_filter')
183
-        );
184
-        remove_filter(
185
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
186
-            array($this, 'add_extra_fields_on_filter')
187
-        );
188
-        remove_filter(
189
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
190
-            array($this, 'add_extra_relations_on_filter')
191
-        );
192
-        $all_methods = get_class_methods(get_class($this));
193
-        foreach ($all_methods as $method_name) {
194
-            if (strpos($method_name, self::extending_method_prefix) === 0) {
195
-                $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
196
-                $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
197
-                remove_filter(
198
-                    $callback_name,
199
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
200
-                    10
201
-                );
202
-            }
203
-        }
204
-        /** @var EEM_Base $model_to_reset */
205
-        $model_to_reset = 'EEM_' . $this->_model_name_extended;
206
-        if (class_exists($model_to_reset)) {
207
-            $model_to_reset::reset();
208
-        }
209
-    }
210
-
211
-
212
-    /**
213
-     * @param string $callback_method_name
214
-     * @param array  $args
215
-     * @return mixed
216
-     * @throws EE_Error
217
-     */
218
-    public function __call($callback_method_name, $args)
219
-    {
220
-        if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) {
221
-            // it's a dynamic callback for a method name
222
-            $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name);
223
-            list($original_return_val, $model_called, $args_provided_to_method_on_model) = (array) $args;
224
-            // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction
225
-            $this->_ = $model_called;
226
-            // phpcs:enable
227
-            $extending_method = self::extending_method_prefix . $method_called_on_model;
228
-            if (method_exists($this, $extending_method)) {
229
-                return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
230
-            } else {
231
-                throw new EE_Error(
232
-                    sprintf(
233
-                        esc_html__(
234
-                            "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)",
235
-                            "event_espresso"
236
-                        ),
237
-                        $this->_model_name_extended,
238
-                        get_class($this),
239
-                        $extending_method,
240
-                        $extending_method
241
-                    )
242
-                );
243
-            }
244
-        } else {
245
-            throw new EE_Error(
246
-                sprintf(
247
-                    esc_html__("There is no method named '%s' on '%s'", "event_espresso"),
248
-                    $callback_method_name,
249
-                    get_class($this)
250
-                )
251
-            );
252
-        }
253
-    }
47
+	const extending_method_prefix = 'ext_';
48
+	const dynamic_callback_method_prefix = 'dynamic_callback_method_';
49
+
50
+	protected $_extra_tables = array();
51
+	protected $_extra_fields = array();
52
+	protected $_extra_relations = array();
53
+
54
+	/**
55
+	 * The model name that is extended (not classname)
56
+	 *
57
+	 * @var string
58
+	 */
59
+	protected $_model_name_extended = null;
60
+
61
+	/**
62
+	 * The model this extends
63
+	 *
64
+	 * @var EEM_Base
65
+	 */
66
+	protected $_ = null;
67
+
68
+
69
+	/**
70
+	 * @throws \EE_Error
71
+	 */
72
+	public function __construct()
73
+	{
74
+		if (! $this->_model_name_extended) {
75
+			throw new EE_Error(
76
+				esc_html__(
77
+					"When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'",
78
+					"event_espresso"
79
+				)
80
+			);
81
+		}
82
+		$construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end';
83
+		if (did_action($construct_end_action)) {
84
+			throw new EE_Error(
85
+				sprintf(
86
+					esc_html__(
87
+						"Hooked in model extension '%s' too late! The model %s has already been used! We know because the action %s has been fired",
88
+						"event_espresso"
89
+					),
90
+					get_class($this),
91
+					$this->_model_name_extended,
92
+					$construct_end_action
93
+				)
94
+			);
95
+		}
96
+		add_filter(
97
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
98
+			array($this, 'add_extra_tables_on_filter')
99
+		);
100
+		add_filter(
101
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
102
+			array($this, 'add_extra_fields_on_filter')
103
+		);
104
+		add_filter(
105
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
106
+			array($this, 'add_extra_relations_on_filter')
107
+		);
108
+		$this->_register_extending_methods();
109
+	}
110
+
111
+
112
+	/**
113
+	 * @param array $existing_tables
114
+	 * @return array
115
+	 */
116
+	public function add_extra_tables_on_filter($existing_tables)
117
+	{
118
+		return array_merge((array) $existing_tables, $this->_extra_tables);
119
+	}
120
+
121
+
122
+	/**
123
+	 * @param array $existing_fields
124
+	 * @return array
125
+	 */
126
+	public function add_extra_fields_on_filter($existing_fields)
127
+	{
128
+		if ($this->_extra_fields) {
129
+			foreach ($this->_extra_fields as $table_alias => $fields) {
130
+				if (! isset($existing_fields[ $table_alias ])) {
131
+					$existing_fields[ $table_alias ] = array();
132
+				}
133
+				$existing_fields[ $table_alias ] = array_merge(
134
+					(array) $existing_fields[ $table_alias ],
135
+					$this->_extra_fields[ $table_alias ]
136
+				);
137
+			}
138
+		}
139
+		return $existing_fields;
140
+	}
141
+
142
+
143
+	/**
144
+	 * @param array $existing_relations
145
+	 * @return array
146
+	 */
147
+	public function add_extra_relations_on_filter($existing_relations)
148
+	{
149
+		return array_merge((array) $existing_relations, $this->_extra_relations);
150
+	}
151
+
152
+
153
+	/**
154
+	 * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the
155
+	 * model extended. (Internally uses filters, and the __call magic method)
156
+	 */
157
+	protected function _register_extending_methods()
158
+	{
159
+		$all_methods = get_class_methods(get_class($this));
160
+		foreach ($all_methods as $method_name) {
161
+			if (strpos($method_name, self::extending_method_prefix) === 0) {
162
+				$method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
163
+				$callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
164
+				add_filter(
165
+					$callback_name,
166
+					array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
167
+					10,
168
+					10
169
+				);
170
+			}
171
+		}
172
+	}
173
+
174
+	/**
175
+	 * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the
176
+	 * model extended. (Internally uses filters, and the __call magic method)
177
+	 */
178
+	public function deregister()
179
+	{
180
+		remove_filter(
181
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
182
+			array($this, 'add_extra_tables_on_filter')
183
+		);
184
+		remove_filter(
185
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
186
+			array($this, 'add_extra_fields_on_filter')
187
+		);
188
+		remove_filter(
189
+			'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
190
+			array($this, 'add_extra_relations_on_filter')
191
+		);
192
+		$all_methods = get_class_methods(get_class($this));
193
+		foreach ($all_methods as $method_name) {
194
+			if (strpos($method_name, self::extending_method_prefix) === 0) {
195
+				$method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
196
+				$callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
197
+				remove_filter(
198
+					$callback_name,
199
+					array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
200
+					10
201
+				);
202
+			}
203
+		}
204
+		/** @var EEM_Base $model_to_reset */
205
+		$model_to_reset = 'EEM_' . $this->_model_name_extended;
206
+		if (class_exists($model_to_reset)) {
207
+			$model_to_reset::reset();
208
+		}
209
+	}
210
+
211
+
212
+	/**
213
+	 * @param string $callback_method_name
214
+	 * @param array  $args
215
+	 * @return mixed
216
+	 * @throws EE_Error
217
+	 */
218
+	public function __call($callback_method_name, $args)
219
+	{
220
+		if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) {
221
+			// it's a dynamic callback for a method name
222
+			$method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name);
223
+			list($original_return_val, $model_called, $args_provided_to_method_on_model) = (array) $args;
224
+			// phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction
225
+			$this->_ = $model_called;
226
+			// phpcs:enable
227
+			$extending_method = self::extending_method_prefix . $method_called_on_model;
228
+			if (method_exists($this, $extending_method)) {
229
+				return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
230
+			} else {
231
+				throw new EE_Error(
232
+					sprintf(
233
+						esc_html__(
234
+							"An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)",
235
+							"event_espresso"
236
+						),
237
+						$this->_model_name_extended,
238
+						get_class($this),
239
+						$extending_method,
240
+						$extending_method
241
+					)
242
+				);
243
+			}
244
+		} else {
245
+			throw new EE_Error(
246
+				sprintf(
247
+					esc_html__("There is no method named '%s' on '%s'", "event_espresso"),
248
+					$callback_method_name,
249
+					get_class($this)
250
+				)
251
+			);
252
+		}
253
+	}
254 254
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
      */
72 72
     public function __construct()
73 73
     {
74
-        if (! $this->_model_name_extended) {
74
+        if ( ! $this->_model_name_extended) {
75 75
             throw new EE_Error(
76 76
                 esc_html__(
77 77
                     "When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'",
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
                 )
80 80
             );
81 81
         }
82
-        $construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end';
82
+        $construct_end_action = 'AHEE__EEM_'.$this->_model_name_extended.'__construct__end';
83 83
         if (did_action($construct_end_action)) {
84 84
             throw new EE_Error(
85 85
                 sprintf(
@@ -94,15 +94,15 @@  discard block
 block discarded – undo
94 94
             );
95 95
         }
96 96
         add_filter(
97
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
97
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__tables',
98 98
             array($this, 'add_extra_tables_on_filter')
99 99
         );
100 100
         add_filter(
101
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
101
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__fields',
102 102
             array($this, 'add_extra_fields_on_filter')
103 103
         );
104 104
         add_filter(
105
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
105
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__model_relations',
106 106
             array($this, 'add_extra_relations_on_filter')
107 107
         );
108 108
         $this->_register_extending_methods();
@@ -127,12 +127,12 @@  discard block
 block discarded – undo
127 127
     {
128 128
         if ($this->_extra_fields) {
129 129
             foreach ($this->_extra_fields as $table_alias => $fields) {
130
-                if (! isset($existing_fields[ $table_alias ])) {
131
-                    $existing_fields[ $table_alias ] = array();
130
+                if ( ! isset($existing_fields[$table_alias])) {
131
+                    $existing_fields[$table_alias] = array();
132 132
                 }
133
-                $existing_fields[ $table_alias ] = array_merge(
134
-                    (array) $existing_fields[ $table_alias ],
135
-                    $this->_extra_fields[ $table_alias ]
133
+                $existing_fields[$table_alias] = array_merge(
134
+                    (array) $existing_fields[$table_alias],
135
+                    $this->_extra_fields[$table_alias]
136 136
                 );
137 137
             }
138 138
         }
@@ -163,7 +163,7 @@  discard block
 block discarded – undo
163 163
                 $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
164 164
                 add_filter(
165 165
                     $callback_name,
166
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
166
+                    array($this, self::dynamic_callback_method_prefix.$method_name_on_model),
167 167
                     10,
168 168
                     10
169 169
                 );
@@ -178,15 +178,15 @@  discard block
 block discarded – undo
178 178
     public function deregister()
179 179
     {
180 180
         remove_filter(
181
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables',
181
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__tables',
182 182
             array($this, 'add_extra_tables_on_filter')
183 183
         );
184 184
         remove_filter(
185
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields',
185
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__fields',
186 186
             array($this, 'add_extra_fields_on_filter')
187 187
         );
188 188
         remove_filter(
189
-            'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations',
189
+            'FHEE__EEM_'.$this->_model_name_extended.'__construct__model_relations',
190 190
             array($this, 'add_extra_relations_on_filter')
191 191
         );
192 192
         $all_methods = get_class_methods(get_class($this));
@@ -196,13 +196,13 @@  discard block
 block discarded – undo
196 196
                 $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model";
197 197
                 remove_filter(
198 198
                     $callback_name,
199
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
199
+                    array($this, self::dynamic_callback_method_prefix.$method_name_on_model),
200 200
                     10
201 201
                 );
202 202
             }
203 203
         }
204 204
         /** @var EEM_Base $model_to_reset */
205
-        $model_to_reset = 'EEM_' . $this->_model_name_extended;
205
+        $model_to_reset = 'EEM_'.$this->_model_name_extended;
206 206
         if (class_exists($model_to_reset)) {
207 207
             $model_to_reset::reset();
208 208
         }
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
             // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction
225 225
             $this->_ = $model_called;
226 226
             // phpcs:enable
227
-            $extending_method = self::extending_method_prefix . $method_called_on_model;
227
+            $extending_method = self::extending_method_prefix.$method_called_on_model;
228 228
             if (method_exists($this, $extending_method)) {
229 229
                 return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
230 230
             } else {
Please login to merge, or discard this patch.
core/libraries/plugin_api/db/EEE_Base_Class.lib.php 2 patches
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -32,126 +32,126 @@
 block discarded – undo
32 32
 class EEE_Base_Class
33 33
 {
34 34
 
35
-    const extending_method_prefix = 'ext_';
36
-    const dynamic_callback_method_prefix = 'dynamic_callback_method_';
37
-    /**
38
-     * The model name that is extended (not classname)
39
-     *
40
-     * @var string
41
-     */
42
-    protected $_model_name_extended = null;
43
-    /**
44
-     * The model this extends
45
-     *
46
-     * @var EE_Base_Class
47
-     */
48
-    protected $_ = null;
35
+	const extending_method_prefix = 'ext_';
36
+	const dynamic_callback_method_prefix = 'dynamic_callback_method_';
37
+	/**
38
+	 * The model name that is extended (not classname)
39
+	 *
40
+	 * @var string
41
+	 */
42
+	protected $_model_name_extended = null;
43
+	/**
44
+	 * The model this extends
45
+	 *
46
+	 * @var EE_Base_Class
47
+	 */
48
+	protected $_ = null;
49 49
 
50
-    public function __construct()
51
-    {
52
-        if (! $this->_model_name_extended) {
53
-            throw new EE_Error(
54
-                sprintf(
55
-                    esc_html__(
56
-                        "When declaring a class extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'",
57
-                        "event_espresso"
58
-                    )
59
-                )
60
-            );
61
-        }
62
-        if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) {
63
-            throw new EE_Error(
64
-                sprintf(
65
-                    esc_html__(
66
-                        "Hooked in model object extension '%s' too late! The model object %s has already been used!",
67
-                        "event_espresso"
68
-                    ),
69
-                    get_class($this),
70
-                    $this->_model_name_extended
71
-                )
72
-            );
73
-        }
74
-        $this->_register_extending_methods();
75
-    }
50
+	public function __construct()
51
+	{
52
+		if (! $this->_model_name_extended) {
53
+			throw new EE_Error(
54
+				sprintf(
55
+					esc_html__(
56
+						"When declaring a class extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'",
57
+						"event_espresso"
58
+					)
59
+				)
60
+			);
61
+		}
62
+		if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) {
63
+			throw new EE_Error(
64
+				sprintf(
65
+					esc_html__(
66
+						"Hooked in model object extension '%s' too late! The model object %s has already been used!",
67
+						"event_espresso"
68
+					),
69
+					get_class($this),
70
+					$this->_model_name_extended
71
+				)
72
+			);
73
+		}
74
+		$this->_register_extending_methods();
75
+	}
76 76
 
77
-    /**
78
-     * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the
79
-     * model extended. (Internally uses filters, and the __call magic method)
80
-     */
81
-    protected function _register_extending_methods()
82
-    {
83
-        $all_methods = get_class_methods(get_class($this));
84
-        foreach ($all_methods as $method_name) {
85
-            if (strpos($method_name, self::extending_method_prefix) === 0) {
86
-                $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
87
-                $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
88
-                add_filter(
89
-                    $callback_name,
90
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
91
-                    10,
92
-                    10
93
-                );
94
-            }
95
-        }
96
-    }
77
+	/**
78
+	 * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the
79
+	 * model extended. (Internally uses filters, and the __call magic method)
80
+	 */
81
+	protected function _register_extending_methods()
82
+	{
83
+		$all_methods = get_class_methods(get_class($this));
84
+		foreach ($all_methods as $method_name) {
85
+			if (strpos($method_name, self::extending_method_prefix) === 0) {
86
+				$method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
87
+				$callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
88
+				add_filter(
89
+					$callback_name,
90
+					array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
91
+					10,
92
+					10
93
+				);
94
+			}
95
+		}
96
+	}
97 97
 
98
-    /**
99
-     * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the
100
-     * model extended. (Internally uses filters, and the __call magic method)
101
-     */
102
-    public function deregister()
103
-    {
104
-        $all_methods = get_class_methods(get_class($this));
105
-        foreach ($all_methods as $method_name) {
106
-            if (strpos($method_name, self::extending_method_prefix) === 0) {
107
-                $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
108
-                $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
109
-                remove_filter(
110
-                    $callback_name,
111
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
112
-                    10
113
-                );
114
-            }
115
-        }
116
-    }
98
+	/**
99
+	 * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the
100
+	 * model extended. (Internally uses filters, and the __call magic method)
101
+	 */
102
+	public function deregister()
103
+	{
104
+		$all_methods = get_class_methods(get_class($this));
105
+		foreach ($all_methods as $method_name) {
106
+			if (strpos($method_name, self::extending_method_prefix) === 0) {
107
+				$method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name);
108
+				$callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
109
+				remove_filter(
110
+					$callback_name,
111
+					array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
112
+					10
113
+				);
114
+			}
115
+		}
116
+	}
117 117
 
118 118
 
119
-    public function __call($callback_method_name, $args)
120
-    {
121
-        if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) {
122
-            // it's a dynamic callback for a method name
123
-            $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name);
124
-            $original_return_val = $args[0];
125
-            $model_called = $args[1];
126
-            // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction
127
-            $this->_ = $model_called;
128
-            // phpcs:enable
129
-            $args_provided_to_method_on_model = $args[2];
130
-            $extending_method = self::extending_method_prefix . $method_called_on_model;
131
-            if (method_exists($this, $extending_method)) {
132
-                return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
133
-            } else {
134
-                throw new EE_Error(
135
-                    sprintf(
136
-                        esc_html__(
137
-                            "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)",
138
-                            "event_espresso"
139
-                        ),
140
-                        $this->_model_name_extended,
141
-                        get_class($this),
142
-                        $extending_method,
143
-                        $extending_method
144
-                    )
145
-                );
146
-            }
147
-        } else {
148
-            throw new EE_Error(
149
-                sprintf(
150
-                    esc_html__("There is no method named '%s' on '%s'", "event_espresso"),
151
-                    $callback_method_name,
152
-                    get_class($this)
153
-                )
154
-            );
155
-        }
156
-    }
119
+	public function __call($callback_method_name, $args)
120
+	{
121
+		if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) {
122
+			// it's a dynamic callback for a method name
123
+			$method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name);
124
+			$original_return_val = $args[0];
125
+			$model_called = $args[1];
126
+			// phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction
127
+			$this->_ = $model_called;
128
+			// phpcs:enable
129
+			$args_provided_to_method_on_model = $args[2];
130
+			$extending_method = self::extending_method_prefix . $method_called_on_model;
131
+			if (method_exists($this, $extending_method)) {
132
+				return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
133
+			} else {
134
+				throw new EE_Error(
135
+					sprintf(
136
+						esc_html__(
137
+							"An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)",
138
+							"event_espresso"
139
+						),
140
+						$this->_model_name_extended,
141
+						get_class($this),
142
+						$extending_method,
143
+						$extending_method
144
+					)
145
+				);
146
+			}
147
+		} else {
148
+			throw new EE_Error(
149
+				sprintf(
150
+					esc_html__("There is no method named '%s' on '%s'", "event_espresso"),
151
+					$callback_method_name,
152
+					get_class($this)
153
+				)
154
+			);
155
+		}
156
+	}
157 157
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 
50 50
     public function __construct()
51 51
     {
52
-        if (! $this->_model_name_extended) {
52
+        if ( ! $this->_model_name_extended) {
53 53
             throw new EE_Error(
54 54
                 sprintf(
55 55
                     esc_html__(
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
                 )
60 60
             );
61 61
         }
62
-        if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) {
62
+        if (did_action('AHEE__EE_'.$this->_model_name_extended.'__construct__end')) {
63 63
             throw new EE_Error(
64 64
                 sprintf(
65 65
                     esc_html__(
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
                 $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
88 88
                 add_filter(
89 89
                     $callback_name,
90
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
90
+                    array($this, self::dynamic_callback_method_prefix.$method_name_on_model),
91 91
                     10,
92 92
                     10
93 93
                 );
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
                 $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model";
109 109
                 remove_filter(
110 110
                     $callback_name,
111
-                    array($this, self::dynamic_callback_method_prefix . $method_name_on_model),
111
+                    array($this, self::dynamic_callback_method_prefix.$method_name_on_model),
112 112
                     10
113 113
                 );
114 114
             }
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
             $this->_ = $model_called;
128 128
             // phpcs:enable
129 129
             $args_provided_to_method_on_model = $args[2];
130
-            $extending_method = self::extending_method_prefix . $method_called_on_model;
130
+            $extending_method = self::extending_method_prefix.$method_called_on_model;
131 131
             if (method_exists($this, $extending_method)) {
132 132
                 return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model);
133 133
             } else {
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Addon.lib.php 2 patches
Indentation   +1250 added lines, -1250 removed lines patch added patch discarded remove patch
@@ -23,1254 +23,1254 @@
 block discarded – undo
23 23
 class EE_Register_Addon implements EEI_Plugin_API
24 24
 {
25 25
 
26
-    /**
27
-     * possibly truncated version of the EE core version string
28
-     *
29
-     * @var string
30
-     */
31
-    protected static $_core_version = '';
32
-
33
-    /**
34
-     * Holds values for registered addons
35
-     *
36
-     * @var array
37
-     */
38
-    protected static $_settings = array();
39
-
40
-    /**
41
-     * @var  array $_incompatible_addons keys are addon SLUGS
42
-     * (first argument passed to EE_Register_Addon::register()), keys are
43
-     * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
44
-     * Generally this should be used sparingly, as we don't want to muddle up
45
-     * EE core with knowledge of ALL the addons out there.
46
-     * If you want NO versions of an addon to run with a certain version of core,
47
-     * it's usually best to define the addon's "min_core_version" as part of its call
48
-     * to EE_Register_Addon::register(), rather than using this array with a super high value for its
49
-     * minimum plugin version.
50
-     * @access    protected
51
-     */
52
-    protected static $_incompatible_addons = array(
53
-        'Multi_Event_Registration' => '2.0.11.rc.002',
54
-        'Promotions'               => '1.0.0.rc.084',
55
-    );
56
-
57
-
58
-    /**
59
-     * We should always be comparing core to a version like '4.3.0.rc.000',
60
-     * not just '4.3.0'.
61
-     * So if the addon developer doesn't provide that full version string,
62
-     * fill in the blanks for them
63
-     *
64
-     * @param string $min_core_version
65
-     * @return string always like '4.3.0.rc.000'
66
-     */
67
-    protected static function _effective_version($min_core_version)
68
-    {
69
-        // versions: 4 . 3 . 1 . p . 123
70
-        // offsets:    0 . 1 . 2 . 3 . 4
71
-        $version_parts = explode('.', $min_core_version);
72
-        // check they specified the micro version (after 2nd period)
73
-        if (! isset($version_parts[2])) {
74
-            $version_parts[2] = '0';
75
-        }
76
-        // if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
77
-        // soon we can assume that's 'rc', but this current version is 'alpha'
78
-        if (! isset($version_parts[3])) {
79
-            $version_parts[3] = 'dev';
80
-        }
81
-        if (! isset($version_parts[4])) {
82
-            $version_parts[4] = '000';
83
-        }
84
-        return implode('.', $version_parts);
85
-    }
86
-
87
-
88
-    /**
89
-     * Returns whether or not the min core version requirement of the addon is met
90
-     *
91
-     * @param string $min_core_version    the minimum core version required by the addon
92
-     * @param string $actual_core_version the actual core version, optional
93
-     * @return boolean
94
-     */
95
-    public static function _meets_min_core_version_requirement(
96
-        $min_core_version,
97
-        $actual_core_version = EVENT_ESPRESSO_VERSION
98
-    ) {
99
-        return version_compare(
100
-            self::_effective_version($actual_core_version),
101
-            self::_effective_version($min_core_version),
102
-            '>='
103
-        );
104
-    }
105
-
106
-
107
-    /**
108
-     * Method for registering new EE_Addons.
109
-     * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
110
-     * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
111
-     * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
112
-     * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
113
-     * 'activate_plugin', it registers the addon still, but its components are not registered
114
-     * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
115
-     * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
116
-     * (so that we can detect that the addon has activated on the subsequent request)
117
-     *
118
-     * @since    4.3.0
119
-     * @param string                  $addon_name                       [Required] the EE_Addon's name.
120
-     * @param  array                  $setup_args                       {
121
-     *                                                                  An array of arguments provided for registering
122
-     *                                                                  the message type.
123
-     * @type  string                  $class_name                       the addon's main file name.
124
-     *                                                                  If left blank, generated from the addon name,
125
-     *                                                                  changes something like "calendar" to
126
-     *                                                                  "EE_Calendar"
127
-     * @type string                   $min_core_version                 the minimum version of EE Core that the
128
-     *                                                                  addon will work with. eg "4.8.1.rc.084"
129
-     * @type string                   $version                          the "software" version for the addon. eg
130
-     *                                                                  "1.0.0.p" for a first stable release, or
131
-     *                                                                  "1.0.0.rc.043" for a version in progress
132
-     * @type string                   $main_file_path                   the full server path to the main file
133
-     *                                                                  loaded directly by WP
134
-     * @type DomainInterface $domain                                    child class of
135
-     *                                                                  EventEspresso\core\domain\DomainBase
136
-     * @type string                   $domain_fqcn                      Fully Qualified Class Name
137
-     *                                                                  for the addon's Domain class
138
-     *                                                                  (see EventEspresso\core\domain\Domain)
139
-     * @type string                   $admin_path                       full server path to the folder where the
140
-     *                                                                  addon\'s admin files reside
141
-     * @type string                   $admin_callback                   a method to be called when the EE Admin is
142
-     *                                                                  first invoked, can be used for hooking into
143
-     *                                                                  any admin page
144
-     * @type string                   $config_section                   the section name for this addon's
145
-     *                                                                  configuration settings section
146
-     *                                                                  (defaults to "addons")
147
-     * @type string                   $config_class                     the class name for this addon's
148
-     *                                                                  configuration settings object
149
-     * @type string                   $config_name                      the class name for this addon's
150
-     *                                                                  configuration settings object
151
-     * @type string                   $autoloader_paths                 [Required] an array of class names and the full
152
-     *                                                                  server paths to those files.
153
-     * @type string                   $autoloader_folders               an array of  "full server paths" for any
154
-     *                                                                  folders containing classes that might be
155
-     *                                                                  invoked by the addon
156
-     * @type string                   $dms_paths                        [Required] an array of full server paths to
157
-     *                                                                  folders that contain data migration scripts.
158
-     *                                                                  The key should be the EE_Addon class name that
159
-     *                                                                  this set of data migration scripts belongs to.
160
-     *                                                                  If the EE_Addon class is namespaced, then this
161
-     *                                                                  needs to be the Fully Qualified Class Name
162
-     * @type string                   $module_paths                     an array of full server paths to any
163
-     *                                                                  EED_Modules used by the addon
164
-     * @type string                   $shortcode_paths                  an array of full server paths to folders
165
-     *                                                                  that contain EES_Shortcodes
166
-     * @type string                   $widget_paths                     an array of full server paths to folders
167
-     *                                                                  that contain WP_Widgets
168
-     * @type string                   $pue_options
169
-     * @type array                    $capabilities                     an array indexed by role name
170
-     *                                                                  (i.e administrator,author ) and the values
171
-     *                                                                  are an array of caps to add to the role.
172
-     *                                                                  'administrator' => array(
173
-     *                                                                  'read_addon',
174
-     *                                                                  'edit_addon',
175
-     *                                                                  etc.
176
-     *                                                                  ).
177
-     * @type EE_Meta_Capability_Map[] $capability_maps                  an array of EE_Meta_Capability_Map object
178
-     *                                                                  for any addons that need to register any
179
-     *                                                                  special meta mapped capabilities.  Should
180
-     *                                                                  be indexed where the key is the
181
-     *                                                                  EE_Meta_Capability_Map class name and the
182
-     *                                                                  values are the arguments sent to the class.
183
-     * @type array                    $model_paths                      array of folders containing DB models
184
-     * @see      EE_Register_Model
185
-     * @type array                    $class_paths                      array of folders containing DB classes
186
-     * @see      EE_Register_Model
187
-     * @type array                    $model_extension_paths            array of folders containing DB model
188
-     *                                                                  extensions
189
-     * @see      EE_Register_Model_Extension
190
-     * @type array                    $class_extension_paths            array of folders containing DB class
191
-     *                                                                  extensions
192
-     * @see      EE_Register_Model_Extension
193
-     * @type array message_types {
194
-     *                                                                  An array of message types with the key as
195
-     *                                                                  the message type name and the values as
196
-     *                                                                  below:
197
-     * @type string                   $mtfilename                       [Required] The filename of the message type
198
-     *                                                                  being registered. This will be the main
199
-     *                                                                  EE_{Message Type Name}_message_type class.
200
-     *                                                                  for example:
201
-     *                                                                  EE_Declined_Registration_message_type.class.php
202
-     * @type array                    $autoloadpaths                    [Required] An array of paths to add to the
203
-     *                                                                  messages autoloader for the new message type.
204
-     * @type array                    $messengers_to_activate_with      An array of messengers that this message
205
-     *                                                                  type should activate with. Each value in
206
-     *                                                                  the
207
-     *                                                                  array
208
-     *                                                                  should match the name property of a
209
-     *                                                                  EE_messenger. Optional.
210
-     * @type array                    $messengers_to_validate_with      An array of messengers that this message
211
-     *                                                                  type should validate with. Each value in
212
-     *                                                                  the
213
-     *                                                                  array
214
-     *                                                                  should match the name property of an
215
-     *                                                                  EE_messenger.
216
-     *                                                                  Optional.
217
-     *                                                                  }
218
-     * @type array                    $custom_post_types
219
-     * @type array                    $custom_taxonomies
220
-     * @type array                    $payment_method_paths             each element is the folder containing the
221
-     *                                                                  EE_PMT_Base child class
222
-     *                                                                  (eg,
223
-     *                                                                  '/wp-content/plugins/my_plugin/Payomatic/'
224
-     *                                                                  which contains the files
225
-     *                                                                  EE_PMT_Payomatic.pm.php)
226
-     * @type array                    $default_terms
227
-     * @type array                    $namespace                        {
228
-     *                                                                  An array with two items for registering the
229
-     *                                                                  addon's namespace. (If, for some reason, you
230
-     *                                                                  require additional namespaces,
231
-     *                                                                  use
232
-     *                                                                  EventEspresso\core\Psr4Autoloader::addNamespace()
233
-     *                                                                  directly)
234
-     * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
235
-     * @type string                   $FQNS                             the namespace prefix
236
-     * @type string                   $DIR                              a base directory for class files in the
237
-     *                                                                  namespace.
238
-     *                                                                  }
239
-     *                                                                  }
240
-     * @type string                   $privacy_policies                 FQNSs (namespaces, each of which contains only
241
-     *                                                                  privacy policy classes) or FQCNs (specific
242
-     *                                                                  classnames of privacy policy classes)
243
-     * @type string                   $personal_data_exporters          FQNSs (namespaces, each of which contains only
244
-     *                                                                  privacy policy classes) or FQCNs (specific
245
-     *                                                                  classnames of privacy policy classes)
246
-     * @type string                   $personal_data_erasers            FQNSs (namespaces, each of which contains only
247
-     *                                                                  privacy policy classes) or FQCNs (specific
248
-     *                                                                  classnames of privacy policy classes)
249
-     * @return void
250
-     * @throws DomainException
251
-     * @throws EE_Error
252
-     * @throws InvalidArgumentException
253
-     * @throws InvalidDataTypeException
254
-     * @throws InvalidInterfaceException
255
-     */
256
-    public static function register($addon_name = '', array $setup_args = array())
257
-    {
258
-        // required fields MUST be present, so let's make sure they are.
259
-        EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
260
-        // get class name for addon
261
-        $class_name = EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
262
-        // setup $_settings array from incoming values.
263
-        $addon_settings = EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
264
-        // setup PUE
265
-        EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
266
-        // does this addon work with this version of core or WordPress ?
267
-        // does this addon work with this version of core or WordPress ?
268
-        if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
269
-            return;
270
-        }
271
-        // register namespaces
272
-        EE_Register_Addon::_setup_namespaces($addon_settings);
273
-        // check if this is an activation request
274
-        if (EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
275
-            // dont bother setting up the rest of the addon atm
276
-            return;
277
-        }
278
-        // we need cars
279
-        EE_Register_Addon::_setup_autoloaders($addon_name);
280
-        // register new models and extensions
281
-        EE_Register_Addon::_register_models_and_extensions($addon_name);
282
-        // setup DMS
283
-        EE_Register_Addon::_register_data_migration_scripts($addon_name);
284
-        // if config_class is present let's register config.
285
-        EE_Register_Addon::_register_config($addon_name);
286
-        // register admin pages
287
-        EE_Register_Addon::_register_admin_pages($addon_name);
288
-        // add to list of modules to be registered
289
-        EE_Register_Addon::_register_modules($addon_name);
290
-        // add to list of shortcodes to be registered
291
-        EE_Register_Addon::_register_shortcodes($addon_name);
292
-        // add to list of widgets to be registered
293
-        EE_Register_Addon::_register_widgets($addon_name);
294
-        // register capability related stuff.
295
-        EE_Register_Addon::_register_capabilities($addon_name);
296
-        // any message type to register?
297
-        EE_Register_Addon::_register_message_types($addon_name);
298
-        // any custom post type/ custom capabilities or default terms to register
299
-        EE_Register_Addon::_register_custom_post_types($addon_name);
300
-        // and any payment methods
301
-        EE_Register_Addon::_register_payment_methods($addon_name);
302
-        // and privacy policy generators
303
-        EE_Register_Addon::registerPrivacyPolicies($addon_name);
304
-        // and privacy policy generators
305
-        EE_Register_Addon::registerPersonalDataExporters($addon_name);
306
-        // and privacy policy generators
307
-        EE_Register_Addon::registerPersonalDataErasers($addon_name);
308
-        // load and instantiate main addon class
309
-        $addon = EE_Register_Addon::_load_and_init_addon_class($addon_name);
310
-        // delay calling after_registration hook on each addon until after all add-ons have been registered.
311
-        add_action('AHEE__EE_System__load_espresso_addons__complete', array($addon, 'after_registration'), 999);
312
-    }
313
-
314
-
315
-    /**
316
-     * @param string $addon_name
317
-     * @param array  $setup_args
318
-     * @return void
319
-     * @throws EE_Error
320
-     */
321
-    private static function _verify_parameters($addon_name, array $setup_args)
322
-    {
323
-        // required fields MUST be present, so let's make sure they are.
324
-        if (empty($addon_name) || ! is_array($setup_args)) {
325
-            throw new EE_Error(
326
-                esc_html__(
327
-                    'In order to register an EE_Addon with EE_Register_Addon::register(), you must include the "addon_name" (the name of the addon), and an array of arguments.',
328
-                    'event_espresso'
329
-                )
330
-            );
331
-        }
332
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
333
-            throw new EE_Error(
334
-                sprintf(
335
-                    esc_html__(
336
-                        'When registering an addon, you didn\'t provide the "main_file_path", which is the full path to the main file loaded directly by Wordpress. You only provided %s',
337
-                        'event_espresso'
338
-                    ),
339
-                    implode(',', array_keys($setup_args))
340
-                )
341
-            );
342
-        }
343
-        // check that addon has not already been registered with that name
344
-        if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
345
-            throw new EE_Error(
346
-                sprintf(
347
-                    esc_html__(
348
-                        'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
349
-                        'event_espresso'
350
-                    ),
351
-                    $addon_name
352
-                )
353
-            );
354
-        }
355
-    }
356
-
357
-
358
-    /**
359
-     * @param string $addon_name
360
-     * @param array  $setup_args
361
-     * @return string
362
-     */
363
-    private static function _parse_class_name($addon_name, array $setup_args)
364
-    {
365
-        if (empty($setup_args['class_name'])) {
366
-            // generate one by first separating name with spaces
367
-            $class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
368
-            // capitalize, then replace spaces with underscores
369
-            $class_name = str_replace(' ', '_', ucwords($class_name));
370
-        } else {
371
-            $class_name = $setup_args['class_name'];
372
-        }
373
-        // check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
374
-        return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
375
-            ? $class_name
376
-            : 'EE_' . $class_name;
377
-    }
378
-
379
-
380
-    /**
381
-     * @param string $class_name
382
-     * @param array  $setup_args
383
-     * @return array
384
-     */
385
-    private static function _get_addon_settings($class_name, array $setup_args)
386
-    {
387
-        // setup $_settings array from incoming values.
388
-        $addon_settings = array(
389
-            // generated from the addon name, changes something like "calendar" to "EE_Calendar"
390
-            'class_name'            => $class_name,
391
-            // the addon slug for use in URLs, etc
392
-            'plugin_slug'           => isset($setup_args['plugin_slug'])
393
-                ? (string) $setup_args['plugin_slug']
394
-                : '',
395
-            // page slug to be used when generating the "Settings" link on the WP plugin page
396
-            'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
397
-                ? (string) $setup_args['plugin_action_slug']
398
-                : '',
399
-            // the "software" version for the addon
400
-            'version'               => isset($setup_args['version'])
401
-                ? (string) $setup_args['version']
402
-                : '',
403
-            // the minimum version of EE Core that the addon will work with
404
-            'min_core_version'      => isset($setup_args['min_core_version'])
405
-                ? (string) $setup_args['min_core_version']
406
-                : '',
407
-            // the minimum version of WordPress that the addon will work with
408
-            'min_wp_version'        => isset($setup_args['min_wp_version'])
409
-                ? (string) $setup_args['min_wp_version']
410
-                : EE_MIN_WP_VER_REQUIRED,
411
-            // full server path to main file (file loaded directly by WP)
412
-            'main_file_path'        => isset($setup_args['main_file_path'])
413
-                ? (string) $setup_args['main_file_path']
414
-                : '',
415
-            // instance of \EventEspresso\core\domain\DomainInterface
416
-            'domain'                => isset($setup_args['domain']) && $setup_args['domain'] instanceof DomainInterface
417
-                ? $setup_args['domain']
418
-                : null,
419
-            // Fully Qualified Class Name for the addon's Domain class
420
-            'domain_fqcn'           => isset($setup_args['domain_fqcn'])
421
-                ? (string) $setup_args['domain_fqcn']
422
-                : '',
423
-            // path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
424
-            'admin_path'            => isset($setup_args['admin_path'])
425
-                ? (string) $setup_args['admin_path'] : '',
426
-            // a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
427
-            'admin_callback'        => isset($setup_args['admin_callback'])
428
-                ? (string) $setup_args['admin_callback']
429
-                : '',
430
-            // the section name for this addon's configuration settings section (defaults to "addons")
431
-            'config_section'        => isset($setup_args['config_section'])
432
-                ? (string) $setup_args['config_section']
433
-                : 'addons',
434
-            // the class name for this addon's configuration settings object
435
-            'config_class'          => isset($setup_args['config_class'])
436
-                ? (string) $setup_args['config_class'] : '',
437
-            // the name given to the config for this addons' configuration settings object (optional)
438
-            'config_name'           => isset($setup_args['config_name'])
439
-                ? (string) $setup_args['config_name'] : '',
440
-            // an array of "class names" => "full server paths" for any classes that might be invoked by the addon
441
-            'autoloader_paths'      => isset($setup_args['autoloader_paths'])
442
-                ? (array) $setup_args['autoloader_paths']
443
-                : array(),
444
-            // an array of  "full server paths" for any folders containing classes that might be invoked by the addon
445
-            'autoloader_folders'    => isset($setup_args['autoloader_folders'])
446
-                ? (array) $setup_args['autoloader_folders']
447
-                : array(),
448
-            // array of full server paths to any EE_DMS data migration scripts used by the addon.
449
-            // The key should be the EE_Addon class name that this set of data migration scripts belongs to.
450
-            // If the EE_Addon class is namespaced, then this needs to be the Fully Qualified Class Name
451
-            'dms_paths'             => isset($setup_args['dms_paths'])
452
-                ? (array) $setup_args['dms_paths']
453
-                : array(),
454
-            // array of full server paths to any EED_Modules used by the addon
455
-            'module_paths'          => isset($setup_args['module_paths'])
456
-                ? (array) $setup_args['module_paths']
457
-                : array(),
458
-            // array of full server paths to any EES_Shortcodes used by the addon
459
-            'shortcode_paths'       => isset($setup_args['shortcode_paths'])
460
-                ? (array) $setup_args['shortcode_paths']
461
-                : array(),
462
-            'shortcode_fqcns'       => isset($setup_args['shortcode_fqcns'])
463
-                ? (array) $setup_args['shortcode_fqcns']
464
-                : array(),
465
-            // array of full server paths to any WP_Widgets used by the addon
466
-            'widget_paths'          => isset($setup_args['widget_paths'])
467
-                ? (array) $setup_args['widget_paths']
468
-                : array(),
469
-            // array of PUE options used by the addon
470
-            'pue_options'           => isset($setup_args['pue_options'])
471
-                ? (array) $setup_args['pue_options']
472
-                : array(),
473
-            'message_types'         => isset($setup_args['message_types'])
474
-                ? (array) $setup_args['message_types']
475
-                : array(),
476
-            'capabilities'          => isset($setup_args['capabilities'])
477
-                ? (array) $setup_args['capabilities']
478
-                : array(),
479
-            'capability_maps'       => isset($setup_args['capability_maps'])
480
-                ? (array) $setup_args['capability_maps']
481
-                : array(),
482
-            'model_paths'           => isset($setup_args['model_paths'])
483
-                ? (array) $setup_args['model_paths']
484
-                : array(),
485
-            'class_paths'           => isset($setup_args['class_paths'])
486
-                ? (array) $setup_args['class_paths']
487
-                : array(),
488
-            'model_extension_paths' => isset($setup_args['model_extension_paths'])
489
-                ? (array) $setup_args['model_extension_paths']
490
-                : array(),
491
-            'class_extension_paths' => isset($setup_args['class_extension_paths'])
492
-                ? (array) $setup_args['class_extension_paths']
493
-                : array(),
494
-            'custom_post_types'     => isset($setup_args['custom_post_types'])
495
-                ? (array) $setup_args['custom_post_types']
496
-                : array(),
497
-            'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
498
-                ? (array) $setup_args['custom_taxonomies']
499
-                : array(),
500
-            'payment_method_paths'  => isset($setup_args['payment_method_paths'])
501
-                ? (array) $setup_args['payment_method_paths']
502
-                : array(),
503
-            'default_terms'         => isset($setup_args['default_terms'])
504
-                ? (array) $setup_args['default_terms']
505
-                : array(),
506
-            // if not empty, inserts a new table row after this plugin's row on the WP Plugins page
507
-            // that can be used for adding upgrading/marketing info
508
-            'plugins_page_row'      => isset($setup_args['plugins_page_row']) ? $setup_args['plugins_page_row'] : '',
509
-            'namespace'             => isset(
510
-                $setup_args['namespace']['FQNS'],
511
-                $setup_args['namespace']['DIR']
512
-            )
513
-                ? (array) $setup_args['namespace']
514
-                : array(),
515
-            'privacy_policies'      => isset($setup_args['privacy_policies'])
516
-                ? (array) $setup_args['privacy_policies']
517
-                : '',
518
-        );
519
-        // if plugin_action_slug is NOT set, but an admin page path IS set,
520
-        // then let's just use the plugin_slug since that will be used for linking to the admin page
521
-        $addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
522
-                                                && ! empty($addon_settings['admin_path'])
523
-            ? $addon_settings['plugin_slug']
524
-            : $addon_settings['plugin_action_slug'];
525
-        // full server path to main file (file loaded directly by WP)
526
-        $addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
527
-        return $addon_settings;
528
-    }
529
-
530
-
531
-    /**
532
-     * @param string $addon_name
533
-     * @param array  $addon_settings
534
-     * @return boolean
535
-     */
536
-    private static function _addon_is_compatible($addon_name, array $addon_settings)
537
-    {
538
-        global $wp_version;
539
-        $incompatibility_message = '';
540
-        // check whether this addon version is compatible with EE core
541
-        if (
542
-            isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
543
-            && ! self::_meets_min_core_version_requirement(
544
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
545
-                $addon_settings['version']
546
-            )
547
-        ) {
548
-            $incompatibility_message = sprintf(
549
-                esc_html__(
550
-                    '%4$sIMPORTANT!%5$sThe Event Espresso "%1$s" addon is not compatible with this version of Event Espresso.%2$sPlease upgrade your "%1$s" addon to version %3$s or newer to resolve this issue.',
551
-                    'event_espresso'
552
-                ),
553
-                $addon_name,
554
-                '<br />',
555
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
556
-                '<span style="font-weight: bold; color: #D54E21;">',
557
-                '</span><br />'
558
-            );
559
-        } elseif (
560
-            ! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
561
-        ) {
562
-            $incompatibility_message = sprintf(
563
-                esc_html__(
564
-                    '%5$sIMPORTANT!%6$sThe Event Espresso "%1$s" addon requires Event Espresso Core version "%2$s" or higher in order to run.%4$sYour version of Event Espresso Core is currently at "%3$s". Please upgrade Event Espresso Core first and then re-activate "%1$s".',
565
-                    'event_espresso'
566
-                ),
567
-                $addon_name,
568
-                self::_effective_version($addon_settings['min_core_version']),
569
-                self::_effective_version(espresso_version()),
570
-                '<br />',
571
-                '<span style="font-weight: bold; color: #D54E21;">',
572
-                '</span><br />'
573
-            );
574
-        } elseif (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
575
-            $incompatibility_message = sprintf(
576
-                esc_html__(
577
-                    '%4$sIMPORTANT!%5$sThe Event Espresso "%1$s" addon requires WordPress version "%2$s" or greater.%3$sPlease update your version of WordPress to use the "%1$s" addon and to keep your site secure.',
578
-                    'event_espresso'
579
-                ),
580
-                $addon_name,
581
-                $addon_settings['min_wp_version'],
582
-                '<br />',
583
-                '<span style="font-weight: bold; color: #D54E21;">',
584
-                '</span><br />'
585
-            );
586
-        }
587
-        if (! empty($incompatibility_message)) {
588
-            // remove 'activate' from the REQUEST
589
-            // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
590
-            /** @var RequestInterface $request */
591
-            $request = LoaderFactory::getLoader()->getShared(RequestInterface::class);
592
-            $request->unSetRequestParam('activate', true);
593
-            if (current_user_can('activate_plugins')) {
594
-                // show an error message indicating the plugin didn't activate properly
595
-                EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
596
-            }
597
-            // BAIL FROM THE ADDON REGISTRATION PROCESS
598
-            return false;
599
-        }
600
-        // addon IS compatible
601
-        return true;
602
-    }
603
-
604
-
605
-    /**
606
-     * if plugin update engine is being used for auto-updates,
607
-     * then let's set that up now before going any further so that ALL addons can be updated
608
-     * (not needed if PUE is not being used)
609
-     *
610
-     * @param string $addon_name
611
-     * @param string $class_name
612
-     * @param array  $setup_args
613
-     * @return void
614
-     */
615
-    private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
616
-    {
617
-        if (! empty($setup_args['pue_options'])) {
618
-            self::$_settings[ $addon_name ]['pue_options'] = array(
619
-                'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
620
-                    ? (string) $setup_args['pue_options']['pue_plugin_slug']
621
-                    : 'espresso_' . strtolower($class_name),
622
-                'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
623
-                    ? (string) $setup_args['pue_options']['plugin_basename']
624
-                    : plugin_basename($setup_args['main_file_path']),
625
-                'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
626
-                    ? (string) $setup_args['pue_options']['checkPeriod']
627
-                    : '24',
628
-                'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
629
-                    ? (string) $setup_args['pue_options']['use_wp_update']
630
-                    : false,
631
-            );
632
-            add_action(
633
-                'AHEE__EE_System__brew_espresso__after_pue_init',
634
-                array('EE_Register_Addon', 'load_pue_update')
635
-            );
636
-        }
637
-    }
638
-
639
-
640
-    /**
641
-     * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
642
-     *
643
-     * @param array $addon_settings
644
-     * @return void
645
-     */
646
-    private static function _setup_namespaces(array $addon_settings)
647
-    {
648
-        //
649
-        if (
650
-            isset(
651
-                $addon_settings['namespace']['FQNS'],
652
-                $addon_settings['namespace']['DIR']
653
-            )
654
-        ) {
655
-            EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
656
-                $addon_settings['namespace']['FQNS'],
657
-                $addon_settings['namespace']['DIR']
658
-            );
659
-        }
660
-    }
661
-
662
-
663
-    /**
664
-     * @param string $addon_name
665
-     * @param array  $addon_settings
666
-     * @return bool
667
-     * @throws InvalidArgumentException
668
-     * @throws InvalidDataTypeException
669
-     * @throws InvalidInterfaceException
670
-     */
671
-    private static function _addon_activation($addon_name, array $addon_settings)
672
-    {
673
-        // this is an activation request
674
-        if (did_action('activate_plugin')) {
675
-            // to find if THIS is the addon that was activated, just check if we have already registered it or not
676
-            // (as the newly-activated addon wasn't around the first time addons were registered).
677
-            // Note: the presence of pue_options in the addon registration options will initialize the $_settings
678
-            // property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
679
-            if (
680
-                ! isset(self::$_settings[ $addon_name ])
681
-                || (isset(self::$_settings[ $addon_name ])
682
-                    && ! isset(self::$_settings[ $addon_name ]['class_name'])
683
-                )
684
-            ) {
685
-                self::$_settings[ $addon_name ] = $addon_settings;
686
-                $addon = self::_load_and_init_addon_class($addon_name);
687
-                $addon->set_activation_indicator_option();
688
-                // dont bother setting up the rest of the addon.
689
-                // we know it was just activated and the request will end soon
690
-            }
691
-            return true;
692
-        }
693
-        // make sure this was called in the right place!
694
-        if (
695
-            ! did_action('AHEE__EE_System__load_espresso_addons')
696
-            || did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
697
-        ) {
698
-            EE_Error::doing_it_wrong(
699
-                __METHOD__,
700
-                sprintf(
701
-                    esc_html__(
702
-                        'An attempt to register an EE_Addon named "%s" has failed because it was not registered at the correct time.  Please use the "AHEE__EE_System__load_espresso_addons" hook to register addons.',
703
-                        'event_espresso'
704
-                    ),
705
-                    $addon_name
706
-                ),
707
-                '4.3.0'
708
-            );
709
-        }
710
-        // make sure addon settings are set correctly without overwriting anything existing
711
-        if (isset(self::$_settings[ $addon_name ])) {
712
-            self::$_settings[ $addon_name ] += $addon_settings;
713
-        } else {
714
-            self::$_settings[ $addon_name ] = $addon_settings;
715
-        }
716
-        return false;
717
-    }
718
-
719
-
720
-    /**
721
-     * @param string $addon_name
722
-     * @return void
723
-     * @throws EE_Error
724
-     */
725
-    private static function _setup_autoloaders($addon_name)
726
-    {
727
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
728
-            // setup autoloader for single file
729
-            EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
730
-        }
731
-        // setup autoloaders for folders
732
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
733
-            foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
734
-                EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
735
-            }
736
-        }
737
-    }
738
-
739
-
740
-    /**
741
-     * register new models and extensions
742
-     *
743
-     * @param string $addon_name
744
-     * @return void
745
-     * @throws EE_Error
746
-     */
747
-    private static function _register_models_and_extensions($addon_name)
748
-    {
749
-        // register new models
750
-        if (
751
-            ! empty(self::$_settings[ $addon_name ]['model_paths'])
752
-            || ! empty(self::$_settings[ $addon_name ]['class_paths'])
753
-        ) {
754
-            EE_Register_Model::register(
755
-                $addon_name,
756
-                array(
757
-                    'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
758
-                    'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
759
-                )
760
-            );
761
-        }
762
-        // register model extensions
763
-        if (
764
-            ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
765
-            || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
766
-        ) {
767
-            EE_Register_Model_Extensions::register(
768
-                $addon_name,
769
-                array(
770
-                    'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
771
-                    'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
772
-                )
773
-            );
774
-        }
775
-    }
776
-
777
-
778
-    /**
779
-     * @param string $addon_name
780
-     * @return void
781
-     * @throws EE_Error
782
-     */
783
-    private static function _register_data_migration_scripts($addon_name)
784
-    {
785
-        // setup DMS
786
-        if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
787
-            EE_Register_Data_Migration_Scripts::register(
788
-                $addon_name,
789
-                array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
790
-            );
791
-        }
792
-    }
793
-
794
-
795
-    /**
796
-     * @param string $addon_name
797
-     * @return void
798
-     * @throws EE_Error
799
-     */
800
-    private static function _register_config($addon_name)
801
-    {
802
-        // if config_class is present let's register config.
803
-        if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
804
-            EE_Register_Config::register(
805
-                self::$_settings[ $addon_name ]['config_class'],
806
-                array(
807
-                    'config_section' => self::$_settings[ $addon_name ]['config_section'],
808
-                    'config_name'    => self::$_settings[ $addon_name ]['config_name'],
809
-                )
810
-            );
811
-        }
812
-    }
813
-
814
-
815
-    /**
816
-     * @param string $addon_name
817
-     * @return void
818
-     * @throws EE_Error
819
-     */
820
-    private static function _register_admin_pages($addon_name)
821
-    {
822
-        if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
823
-            EE_Register_Admin_Page::register(
824
-                $addon_name,
825
-                array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
826
-            );
827
-        }
828
-    }
829
-
830
-
831
-    /**
832
-     * @param string $addon_name
833
-     * @return void
834
-     * @throws EE_Error
835
-     */
836
-    private static function _register_modules($addon_name)
837
-    {
838
-        if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
839
-            EE_Register_Module::register(
840
-                $addon_name,
841
-                array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
842
-            );
843
-        }
844
-    }
845
-
846
-
847
-    /**
848
-     * @param string $addon_name
849
-     * @return void
850
-     * @throws EE_Error
851
-     */
852
-    private static function _register_shortcodes($addon_name)
853
-    {
854
-        if (
855
-            ! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
856
-            || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
857
-        ) {
858
-            EE_Register_Shortcode::register(
859
-                $addon_name,
860
-                array(
861
-                    'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
862
-                        ? self::$_settings[ $addon_name ]['shortcode_paths'] : array(),
863
-                    'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
864
-                        ? self::$_settings[ $addon_name ]['shortcode_fqcns'] : array(),
865
-                )
866
-            );
867
-        }
868
-    }
869
-
870
-
871
-    /**
872
-     * @param string $addon_name
873
-     * @return void
874
-     * @throws EE_Error
875
-     */
876
-    private static function _register_widgets($addon_name)
877
-    {
878
-        if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
879
-            EE_Register_Widget::register(
880
-                $addon_name,
881
-                array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
882
-            );
883
-        }
884
-    }
885
-
886
-
887
-    /**
888
-     * @param string $addon_name
889
-     * @return void
890
-     * @throws EE_Error
891
-     */
892
-    private static function _register_capabilities($addon_name)
893
-    {
894
-        if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
895
-            EE_Register_Capabilities::register(
896
-                $addon_name,
897
-                array(
898
-                    'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
899
-                    'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
900
-                )
901
-            );
902
-        }
903
-    }
904
-
905
-
906
-    /**
907
-     * @param string $addon_name
908
-     * @return void
909
-     */
910
-    private static function _register_message_types($addon_name)
911
-    {
912
-        if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
913
-            add_action(
914
-                'EE_Brewing_Regular___messages_caf',
915
-                array('EE_Register_Addon', 'register_message_types')
916
-            );
917
-        }
918
-    }
919
-
920
-
921
-    /**
922
-     * @param string $addon_name
923
-     * @return void
924
-     * @throws EE_Error
925
-     */
926
-    private static function _register_custom_post_types($addon_name)
927
-    {
928
-        if (
929
-            ! empty(self::$_settings[ $addon_name ]['custom_post_types'])
930
-            || ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
931
-        ) {
932
-            EE_Register_CPT::register(
933
-                $addon_name,
934
-                array(
935
-                    'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
936
-                    'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
937
-                    'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
938
-                )
939
-            );
940
-        }
941
-    }
942
-
943
-
944
-    /**
945
-     * @param string $addon_name
946
-     * @return void
947
-     * @throws InvalidArgumentException
948
-     * @throws InvalidInterfaceException
949
-     * @throws InvalidDataTypeException
950
-     * @throws DomainException
951
-     * @throws EE_Error
952
-     */
953
-    private static function _register_payment_methods($addon_name)
954
-    {
955
-        if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
956
-            EE_Register_Payment_Method::register(
957
-                $addon_name,
958
-                array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
959
-            );
960
-        }
961
-    }
962
-
963
-
964
-    /**
965
-     * @param string $addon_name
966
-     * @return void
967
-     * @throws InvalidArgumentException
968
-     * @throws InvalidInterfaceException
969
-     * @throws InvalidDataTypeException
970
-     * @throws DomainException
971
-     */
972
-    private static function registerPrivacyPolicies($addon_name)
973
-    {
974
-        if (! empty(self::$_settings[ $addon_name ]['privacy_policies'])) {
975
-            EE_Register_Privacy_Policy::register(
976
-                $addon_name,
977
-                self::$_settings[ $addon_name ]['privacy_policies']
978
-            );
979
-        }
980
-    }
981
-
982
-
983
-    /**
984
-     * @param string $addon_name
985
-     * @return void
986
-     */
987
-    private static function registerPersonalDataExporters($addon_name)
988
-    {
989
-        if (! empty(self::$_settings[ $addon_name ]['personal_data_exporters'])) {
990
-            EE_Register_Personal_Data_Eraser::register(
991
-                $addon_name,
992
-                self::$_settings[ $addon_name ]['personal_data_exporters']
993
-            );
994
-        }
995
-    }
996
-
997
-
998
-    /**
999
-     * @param string $addon_name
1000
-     * @return void
1001
-     */
1002
-    private static function registerPersonalDataErasers($addon_name)
1003
-    {
1004
-        if (! empty(self::$_settings[ $addon_name ]['personal_data_erasers'])) {
1005
-            EE_Register_Personal_Data_Eraser::register(
1006
-                $addon_name,
1007
-                self::$_settings[ $addon_name ]['personal_data_erasers']
1008
-            );
1009
-        }
1010
-    }
1011
-
1012
-
1013
-    /**
1014
-     * Loads and instantiates the EE_Addon class and adds it onto the registry
1015
-     *
1016
-     * @param string $addon_name
1017
-     * @return EE_Addon
1018
-     * @throws InvalidArgumentException
1019
-     * @throws InvalidInterfaceException
1020
-     * @throws InvalidDataTypeException
1021
-     */
1022
-    private static function _load_and_init_addon_class($addon_name)
1023
-    {
1024
-        $addon = LoaderFactory::getLoader()->getShared(
1025
-            self::$_settings[ $addon_name ]['class_name'],
1026
-            array('EE_Registry::create(addon)' => true)
1027
-        );
1028
-        if (! $addon instanceof EE_Addon) {
1029
-            throw new DomainException(
1030
-                sprintf(
1031
-                    esc_html__(
1032
-                        'Failed to instantiate the %1$s class. PLease check that the class exists.',
1033
-                        'event_espresso'
1034
-                    ),
1035
-                    $addon_name
1036
-                )
1037
-            );
1038
-        }
1039
-        // setter inject dep map if required
1040
-        if ($addon->dependencyMap() === null) {
1041
-            $addon->setDependencyMap(LoaderFactory::getLoader()->getShared('EE_Dependency_Map'));
1042
-        }
1043
-        // setter inject domain if required
1044
-        EE_Register_Addon::injectAddonDomain($addon_name, $addon);
1045
-
1046
-        $addon->set_name($addon_name);
1047
-        $addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
1048
-        $addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
1049
-        $addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
1050
-        $addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
1051
-        $addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
1052
-        $addon->set_version(self::$_settings[ $addon_name ]['version']);
1053
-        $addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
1054
-        $addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
1055
-        $addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
1056
-        $addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
1057
-        // setup the add-on's pue_slug if we have one.
1058
-        if (! empty(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug'])) {
1059
-            $addon->setPueSlug(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug']);
1060
-        }
1061
-        // unfortunately this can't be hooked in upon construction,
1062
-        // because we don't have the plugin's mainfile path upon construction.
1063
-        register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
1064
-        // call any additional admin_callback functions during load_admin_controller hook
1065
-        if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
1066
-            add_action(
1067
-                'AHEE__EE_System__load_controllers__load_admin_controllers',
1068
-                array($addon, self::$_settings[ $addon_name ]['admin_callback'])
1069
-            );
1070
-        }
1071
-        return $addon;
1072
-    }
1073
-
1074
-
1075
-    /**
1076
-     * @param string   $addon_name
1077
-     * @param EE_Addon $addon
1078
-     * @since   4.10.13.p
1079
-     */
1080
-    private static function injectAddonDomain($addon_name, EE_Addon $addon)
1081
-    {
1082
-        if ($addon instanceof RequiresDomainInterface && $addon->domain() === null) {
1083
-            // using supplied Domain object
1084
-            $domain = self::$_settings[ $addon_name ]['domain'] instanceof DomainInterface
1085
-                ? self::$_settings[ $addon_name ]['domain']
1086
-                : null;
1087
-            // or construct one using Domain FQCN
1088
-            if ($domain === null && self::$_settings[ $addon_name ]['domain_fqcn'] !== '') {
1089
-                $domain = LoaderFactory::getLoader()->getShared(
1090
-                    self::$_settings[ $addon_name ]['domain_fqcn'],
1091
-                    [
1092
-                        new EventEspresso\core\domain\values\FilePath(
1093
-                            self::$_settings[ $addon_name ]['main_file_path']
1094
-                        ),
1095
-                        EventEspresso\core\domain\values\Version::fromString(
1096
-                            self::$_settings[ $addon_name ]['version']
1097
-                        ),
1098
-                    ]
1099
-                );
1100
-            }
1101
-            if ($domain instanceof DomainInterface) {
1102
-                $addon->setDomain($domain);
1103
-            }
1104
-        }
1105
-    }
1106
-
1107
-
1108
-    /**
1109
-     *    load_pue_update - Update notifications
1110
-     *
1111
-     * @return void
1112
-     * @throws InvalidArgumentException
1113
-     * @throws InvalidDataTypeException
1114
-     * @throws InvalidInterfaceException
1115
-     */
1116
-    public static function load_pue_update()
1117
-    {
1118
-        // load PUE client
1119
-        require_once EE_THIRD_PARTY . 'pue/pue-client.php';
1120
-        $license_server = defined('PUE_UPDATES_ENDPOINT') ? PUE_UPDATES_ENDPOINT : 'https://eventespresso.com';
1121
-        // cycle thru settings
1122
-        foreach (self::$_settings as $settings) {
1123
-            if (! empty($settings['pue_options'])) {
1124
-                // initiate the class and start the plugin update engine!
1125
-                new PluginUpdateEngineChecker(
1126
-                    // host file URL
1127
-                    $license_server,
1128
-                    // plugin slug(s)
1129
-                    array(
1130
-                        'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1131
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1132
-                    ),
1133
-                    // options
1134
-                    array(
1135
-                        'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
1136
-                        'lang_domain'       => 'event_espresso',
1137
-                        'checkPeriod'       => $settings['pue_options']['checkPeriod'],
1138
-                        'option_key'        => 'ee_site_license_key',
1139
-                        'options_page_slug' => 'event_espresso',
1140
-                        'plugin_basename'   => $settings['pue_options']['plugin_basename'],
1141
-                        // if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
1142
-                        'use_wp_update'     => $settings['pue_options']['use_wp_update'],
1143
-                    )
1144
-                );
1145
-            }
1146
-        }
1147
-    }
1148
-
1149
-
1150
-    /**
1151
-     * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
1152
-     *
1153
-     * @since 4.4.0
1154
-     * @return void
1155
-     * @throws EE_Error
1156
-     */
1157
-    public static function register_message_types()
1158
-    {
1159
-        foreach (self::$_settings as $settings) {
1160
-            if (! empty($settings['message_types'])) {
1161
-                foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1162
-                    EE_Register_Message_Type::register($message_type, $message_type_settings);
1163
-                }
1164
-            }
1165
-        }
1166
-    }
1167
-
1168
-
1169
-    /**
1170
-     * This deregisters an addon that was previously registered with a specific addon_name.
1171
-     *
1172
-     * @param string $addon_name the name for the addon that was previously registered
1173
-     * @throws DomainException
1174
-     * @throws InvalidArgumentException
1175
-     * @throws InvalidDataTypeException
1176
-     * @throws InvalidInterfaceException
1177
-     *@since    4.3.0
1178
-     */
1179
-    public static function deregister($addon_name = '')
1180
-    {
1181
-        if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1182
-            try {
1183
-                do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1184
-                $class_name = self::$_settings[ $addon_name ]['class_name'];
1185
-                if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
1186
-                    // setup DMS
1187
-                    EE_Register_Data_Migration_Scripts::deregister($addon_name);
1188
-                }
1189
-                if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
1190
-                    // register admin page
1191
-                    EE_Register_Admin_Page::deregister($addon_name);
1192
-                }
1193
-                if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
1194
-                    // add to list of modules to be registered
1195
-                    EE_Register_Module::deregister($addon_name);
1196
-                }
1197
-                if (
1198
-                    ! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
1199
-                    || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
1200
-                ) {
1201
-                    // add to list of shortcodes to be registered
1202
-                    EE_Register_Shortcode::deregister($addon_name);
1203
-                }
1204
-                if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
1205
-                    // if config_class present let's register config.
1206
-                    EE_Register_Config::deregister(self::$_settings[ $addon_name ]['config_class']);
1207
-                }
1208
-                if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
1209
-                    // add to list of widgets to be registered
1210
-                    EE_Register_Widget::deregister($addon_name);
1211
-                }
1212
-                if (
1213
-                    ! empty(self::$_settings[ $addon_name ]['model_paths'])
1214
-                    || ! empty(self::$_settings[ $addon_name ]['class_paths'])
1215
-                ) {
1216
-                    // add to list of shortcodes to be registered
1217
-                    EE_Register_Model::deregister($addon_name);
1218
-                }
1219
-                if (
1220
-                    ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
1221
-                    || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
1222
-                ) {
1223
-                    // add to list of shortcodes to be registered
1224
-                    EE_Register_Model_Extensions::deregister($addon_name);
1225
-                }
1226
-                if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
1227
-                    foreach ((array) self::$_settings[ $addon_name ]['message_types'] as $message_type => $message_type_settings) {
1228
-                        EE_Register_Message_Type::deregister($message_type);
1229
-                    }
1230
-                }
1231
-                // deregister capabilities for addon
1232
-                if (
1233
-                    ! empty(self::$_settings[ $addon_name ]['capabilities'])
1234
-                    || ! empty(self::$_settings[ $addon_name ]['capability_maps'])
1235
-                ) {
1236
-                    EE_Register_Capabilities::deregister($addon_name);
1237
-                }
1238
-                // deregister custom_post_types for addon
1239
-                if (! empty(self::$_settings[ $addon_name ]['custom_post_types'])) {
1240
-                    EE_Register_CPT::deregister($addon_name);
1241
-                }
1242
-                if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
1243
-                    EE_Register_Payment_Method::deregister($addon_name);
1244
-                }
1245
-                $addon = EE_Registry::instance()->getAddon($class_name);
1246
-                if ($addon instanceof EE_Addon) {
1247
-                    remove_action(
1248
-                        'deactivate_' . $addon->get_main_plugin_file_basename(),
1249
-                        array($addon, 'deactivation')
1250
-                    );
1251
-                    remove_action(
1252
-                        'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1253
-                        array($addon, 'initialize_db_if_no_migrations_required')
1254
-                    );
1255
-                    // remove `after_registration` call
1256
-                    remove_action(
1257
-                        'AHEE__EE_System__load_espresso_addons__complete',
1258
-                        array($addon, 'after_registration'),
1259
-                        999
1260
-                    );
1261
-                }
1262
-                EE_Registry::instance()->removeAddon($class_name);
1263
-                LoaderFactory::getLoader()->remove($class_name);
1264
-            } catch (OutOfBoundsException $addon_not_yet_registered_exception) {
1265
-                // the add-on was not yet registered in the registry,
1266
-                // so RegistryContainer::__get() throws this exception.
1267
-                // also no need to worry about this or log it,
1268
-                // it's ok to deregister an add-on before its registered in the registry
1269
-            } catch (Exception $e) {
1270
-                new ExceptionLogger($e);
1271
-            }
1272
-            unset(self::$_settings[ $addon_name ]);
1273
-            do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1274
-        }
1275
-    }
26
+	/**
27
+	 * possibly truncated version of the EE core version string
28
+	 *
29
+	 * @var string
30
+	 */
31
+	protected static $_core_version = '';
32
+
33
+	/**
34
+	 * Holds values for registered addons
35
+	 *
36
+	 * @var array
37
+	 */
38
+	protected static $_settings = array();
39
+
40
+	/**
41
+	 * @var  array $_incompatible_addons keys are addon SLUGS
42
+	 * (first argument passed to EE_Register_Addon::register()), keys are
43
+	 * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
44
+	 * Generally this should be used sparingly, as we don't want to muddle up
45
+	 * EE core with knowledge of ALL the addons out there.
46
+	 * If you want NO versions of an addon to run with a certain version of core,
47
+	 * it's usually best to define the addon's "min_core_version" as part of its call
48
+	 * to EE_Register_Addon::register(), rather than using this array with a super high value for its
49
+	 * minimum plugin version.
50
+	 * @access    protected
51
+	 */
52
+	protected static $_incompatible_addons = array(
53
+		'Multi_Event_Registration' => '2.0.11.rc.002',
54
+		'Promotions'               => '1.0.0.rc.084',
55
+	);
56
+
57
+
58
+	/**
59
+	 * We should always be comparing core to a version like '4.3.0.rc.000',
60
+	 * not just '4.3.0'.
61
+	 * So if the addon developer doesn't provide that full version string,
62
+	 * fill in the blanks for them
63
+	 *
64
+	 * @param string $min_core_version
65
+	 * @return string always like '4.3.0.rc.000'
66
+	 */
67
+	protected static function _effective_version($min_core_version)
68
+	{
69
+		// versions: 4 . 3 . 1 . p . 123
70
+		// offsets:    0 . 1 . 2 . 3 . 4
71
+		$version_parts = explode('.', $min_core_version);
72
+		// check they specified the micro version (after 2nd period)
73
+		if (! isset($version_parts[2])) {
74
+			$version_parts[2] = '0';
75
+		}
76
+		// if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
77
+		// soon we can assume that's 'rc', but this current version is 'alpha'
78
+		if (! isset($version_parts[3])) {
79
+			$version_parts[3] = 'dev';
80
+		}
81
+		if (! isset($version_parts[4])) {
82
+			$version_parts[4] = '000';
83
+		}
84
+		return implode('.', $version_parts);
85
+	}
86
+
87
+
88
+	/**
89
+	 * Returns whether or not the min core version requirement of the addon is met
90
+	 *
91
+	 * @param string $min_core_version    the minimum core version required by the addon
92
+	 * @param string $actual_core_version the actual core version, optional
93
+	 * @return boolean
94
+	 */
95
+	public static function _meets_min_core_version_requirement(
96
+		$min_core_version,
97
+		$actual_core_version = EVENT_ESPRESSO_VERSION
98
+	) {
99
+		return version_compare(
100
+			self::_effective_version($actual_core_version),
101
+			self::_effective_version($min_core_version),
102
+			'>='
103
+		);
104
+	}
105
+
106
+
107
+	/**
108
+	 * Method for registering new EE_Addons.
109
+	 * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
110
+	 * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
111
+	 * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
112
+	 * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
113
+	 * 'activate_plugin', it registers the addon still, but its components are not registered
114
+	 * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
115
+	 * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
116
+	 * (so that we can detect that the addon has activated on the subsequent request)
117
+	 *
118
+	 * @since    4.3.0
119
+	 * @param string                  $addon_name                       [Required] the EE_Addon's name.
120
+	 * @param  array                  $setup_args                       {
121
+	 *                                                                  An array of arguments provided for registering
122
+	 *                                                                  the message type.
123
+	 * @type  string                  $class_name                       the addon's main file name.
124
+	 *                                                                  If left blank, generated from the addon name,
125
+	 *                                                                  changes something like "calendar" to
126
+	 *                                                                  "EE_Calendar"
127
+	 * @type string                   $min_core_version                 the minimum version of EE Core that the
128
+	 *                                                                  addon will work with. eg "4.8.1.rc.084"
129
+	 * @type string                   $version                          the "software" version for the addon. eg
130
+	 *                                                                  "1.0.0.p" for a first stable release, or
131
+	 *                                                                  "1.0.0.rc.043" for a version in progress
132
+	 * @type string                   $main_file_path                   the full server path to the main file
133
+	 *                                                                  loaded directly by WP
134
+	 * @type DomainInterface $domain                                    child class of
135
+	 *                                                                  EventEspresso\core\domain\DomainBase
136
+	 * @type string                   $domain_fqcn                      Fully Qualified Class Name
137
+	 *                                                                  for the addon's Domain class
138
+	 *                                                                  (see EventEspresso\core\domain\Domain)
139
+	 * @type string                   $admin_path                       full server path to the folder where the
140
+	 *                                                                  addon\'s admin files reside
141
+	 * @type string                   $admin_callback                   a method to be called when the EE Admin is
142
+	 *                                                                  first invoked, can be used for hooking into
143
+	 *                                                                  any admin page
144
+	 * @type string                   $config_section                   the section name for this addon's
145
+	 *                                                                  configuration settings section
146
+	 *                                                                  (defaults to "addons")
147
+	 * @type string                   $config_class                     the class name for this addon's
148
+	 *                                                                  configuration settings object
149
+	 * @type string                   $config_name                      the class name for this addon's
150
+	 *                                                                  configuration settings object
151
+	 * @type string                   $autoloader_paths                 [Required] an array of class names and the full
152
+	 *                                                                  server paths to those files.
153
+	 * @type string                   $autoloader_folders               an array of  "full server paths" for any
154
+	 *                                                                  folders containing classes that might be
155
+	 *                                                                  invoked by the addon
156
+	 * @type string                   $dms_paths                        [Required] an array of full server paths to
157
+	 *                                                                  folders that contain data migration scripts.
158
+	 *                                                                  The key should be the EE_Addon class name that
159
+	 *                                                                  this set of data migration scripts belongs to.
160
+	 *                                                                  If the EE_Addon class is namespaced, then this
161
+	 *                                                                  needs to be the Fully Qualified Class Name
162
+	 * @type string                   $module_paths                     an array of full server paths to any
163
+	 *                                                                  EED_Modules used by the addon
164
+	 * @type string                   $shortcode_paths                  an array of full server paths to folders
165
+	 *                                                                  that contain EES_Shortcodes
166
+	 * @type string                   $widget_paths                     an array of full server paths to folders
167
+	 *                                                                  that contain WP_Widgets
168
+	 * @type string                   $pue_options
169
+	 * @type array                    $capabilities                     an array indexed by role name
170
+	 *                                                                  (i.e administrator,author ) and the values
171
+	 *                                                                  are an array of caps to add to the role.
172
+	 *                                                                  'administrator' => array(
173
+	 *                                                                  'read_addon',
174
+	 *                                                                  'edit_addon',
175
+	 *                                                                  etc.
176
+	 *                                                                  ).
177
+	 * @type EE_Meta_Capability_Map[] $capability_maps                  an array of EE_Meta_Capability_Map object
178
+	 *                                                                  for any addons that need to register any
179
+	 *                                                                  special meta mapped capabilities.  Should
180
+	 *                                                                  be indexed where the key is the
181
+	 *                                                                  EE_Meta_Capability_Map class name and the
182
+	 *                                                                  values are the arguments sent to the class.
183
+	 * @type array                    $model_paths                      array of folders containing DB models
184
+	 * @see      EE_Register_Model
185
+	 * @type array                    $class_paths                      array of folders containing DB classes
186
+	 * @see      EE_Register_Model
187
+	 * @type array                    $model_extension_paths            array of folders containing DB model
188
+	 *                                                                  extensions
189
+	 * @see      EE_Register_Model_Extension
190
+	 * @type array                    $class_extension_paths            array of folders containing DB class
191
+	 *                                                                  extensions
192
+	 * @see      EE_Register_Model_Extension
193
+	 * @type array message_types {
194
+	 *                                                                  An array of message types with the key as
195
+	 *                                                                  the message type name and the values as
196
+	 *                                                                  below:
197
+	 * @type string                   $mtfilename                       [Required] The filename of the message type
198
+	 *                                                                  being registered. This will be the main
199
+	 *                                                                  EE_{Message Type Name}_message_type class.
200
+	 *                                                                  for example:
201
+	 *                                                                  EE_Declined_Registration_message_type.class.php
202
+	 * @type array                    $autoloadpaths                    [Required] An array of paths to add to the
203
+	 *                                                                  messages autoloader for the new message type.
204
+	 * @type array                    $messengers_to_activate_with      An array of messengers that this message
205
+	 *                                                                  type should activate with. Each value in
206
+	 *                                                                  the
207
+	 *                                                                  array
208
+	 *                                                                  should match the name property of a
209
+	 *                                                                  EE_messenger. Optional.
210
+	 * @type array                    $messengers_to_validate_with      An array of messengers that this message
211
+	 *                                                                  type should validate with. Each value in
212
+	 *                                                                  the
213
+	 *                                                                  array
214
+	 *                                                                  should match the name property of an
215
+	 *                                                                  EE_messenger.
216
+	 *                                                                  Optional.
217
+	 *                                                                  }
218
+	 * @type array                    $custom_post_types
219
+	 * @type array                    $custom_taxonomies
220
+	 * @type array                    $payment_method_paths             each element is the folder containing the
221
+	 *                                                                  EE_PMT_Base child class
222
+	 *                                                                  (eg,
223
+	 *                                                                  '/wp-content/plugins/my_plugin/Payomatic/'
224
+	 *                                                                  which contains the files
225
+	 *                                                                  EE_PMT_Payomatic.pm.php)
226
+	 * @type array                    $default_terms
227
+	 * @type array                    $namespace                        {
228
+	 *                                                                  An array with two items for registering the
229
+	 *                                                                  addon's namespace. (If, for some reason, you
230
+	 *                                                                  require additional namespaces,
231
+	 *                                                                  use
232
+	 *                                                                  EventEspresso\core\Psr4Autoloader::addNamespace()
233
+	 *                                                                  directly)
234
+	 * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
235
+	 * @type string                   $FQNS                             the namespace prefix
236
+	 * @type string                   $DIR                              a base directory for class files in the
237
+	 *                                                                  namespace.
238
+	 *                                                                  }
239
+	 *                                                                  }
240
+	 * @type string                   $privacy_policies                 FQNSs (namespaces, each of which contains only
241
+	 *                                                                  privacy policy classes) or FQCNs (specific
242
+	 *                                                                  classnames of privacy policy classes)
243
+	 * @type string                   $personal_data_exporters          FQNSs (namespaces, each of which contains only
244
+	 *                                                                  privacy policy classes) or FQCNs (specific
245
+	 *                                                                  classnames of privacy policy classes)
246
+	 * @type string                   $personal_data_erasers            FQNSs (namespaces, each of which contains only
247
+	 *                                                                  privacy policy classes) or FQCNs (specific
248
+	 *                                                                  classnames of privacy policy classes)
249
+	 * @return void
250
+	 * @throws DomainException
251
+	 * @throws EE_Error
252
+	 * @throws InvalidArgumentException
253
+	 * @throws InvalidDataTypeException
254
+	 * @throws InvalidInterfaceException
255
+	 */
256
+	public static function register($addon_name = '', array $setup_args = array())
257
+	{
258
+		// required fields MUST be present, so let's make sure they are.
259
+		EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
260
+		// get class name for addon
261
+		$class_name = EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
262
+		// setup $_settings array from incoming values.
263
+		$addon_settings = EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
264
+		// setup PUE
265
+		EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
266
+		// does this addon work with this version of core or WordPress ?
267
+		// does this addon work with this version of core or WordPress ?
268
+		if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
269
+			return;
270
+		}
271
+		// register namespaces
272
+		EE_Register_Addon::_setup_namespaces($addon_settings);
273
+		// check if this is an activation request
274
+		if (EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
275
+			// dont bother setting up the rest of the addon atm
276
+			return;
277
+		}
278
+		// we need cars
279
+		EE_Register_Addon::_setup_autoloaders($addon_name);
280
+		// register new models and extensions
281
+		EE_Register_Addon::_register_models_and_extensions($addon_name);
282
+		// setup DMS
283
+		EE_Register_Addon::_register_data_migration_scripts($addon_name);
284
+		// if config_class is present let's register config.
285
+		EE_Register_Addon::_register_config($addon_name);
286
+		// register admin pages
287
+		EE_Register_Addon::_register_admin_pages($addon_name);
288
+		// add to list of modules to be registered
289
+		EE_Register_Addon::_register_modules($addon_name);
290
+		// add to list of shortcodes to be registered
291
+		EE_Register_Addon::_register_shortcodes($addon_name);
292
+		// add to list of widgets to be registered
293
+		EE_Register_Addon::_register_widgets($addon_name);
294
+		// register capability related stuff.
295
+		EE_Register_Addon::_register_capabilities($addon_name);
296
+		// any message type to register?
297
+		EE_Register_Addon::_register_message_types($addon_name);
298
+		// any custom post type/ custom capabilities or default terms to register
299
+		EE_Register_Addon::_register_custom_post_types($addon_name);
300
+		// and any payment methods
301
+		EE_Register_Addon::_register_payment_methods($addon_name);
302
+		// and privacy policy generators
303
+		EE_Register_Addon::registerPrivacyPolicies($addon_name);
304
+		// and privacy policy generators
305
+		EE_Register_Addon::registerPersonalDataExporters($addon_name);
306
+		// and privacy policy generators
307
+		EE_Register_Addon::registerPersonalDataErasers($addon_name);
308
+		// load and instantiate main addon class
309
+		$addon = EE_Register_Addon::_load_and_init_addon_class($addon_name);
310
+		// delay calling after_registration hook on each addon until after all add-ons have been registered.
311
+		add_action('AHEE__EE_System__load_espresso_addons__complete', array($addon, 'after_registration'), 999);
312
+	}
313
+
314
+
315
+	/**
316
+	 * @param string $addon_name
317
+	 * @param array  $setup_args
318
+	 * @return void
319
+	 * @throws EE_Error
320
+	 */
321
+	private static function _verify_parameters($addon_name, array $setup_args)
322
+	{
323
+		// required fields MUST be present, so let's make sure they are.
324
+		if (empty($addon_name) || ! is_array($setup_args)) {
325
+			throw new EE_Error(
326
+				esc_html__(
327
+					'In order to register an EE_Addon with EE_Register_Addon::register(), you must include the "addon_name" (the name of the addon), and an array of arguments.',
328
+					'event_espresso'
329
+				)
330
+			);
331
+		}
332
+		if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
333
+			throw new EE_Error(
334
+				sprintf(
335
+					esc_html__(
336
+						'When registering an addon, you didn\'t provide the "main_file_path", which is the full path to the main file loaded directly by Wordpress. You only provided %s',
337
+						'event_espresso'
338
+					),
339
+					implode(',', array_keys($setup_args))
340
+				)
341
+			);
342
+		}
343
+		// check that addon has not already been registered with that name
344
+		if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
345
+			throw new EE_Error(
346
+				sprintf(
347
+					esc_html__(
348
+						'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
349
+						'event_espresso'
350
+					),
351
+					$addon_name
352
+				)
353
+			);
354
+		}
355
+	}
356
+
357
+
358
+	/**
359
+	 * @param string $addon_name
360
+	 * @param array  $setup_args
361
+	 * @return string
362
+	 */
363
+	private static function _parse_class_name($addon_name, array $setup_args)
364
+	{
365
+		if (empty($setup_args['class_name'])) {
366
+			// generate one by first separating name with spaces
367
+			$class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
368
+			// capitalize, then replace spaces with underscores
369
+			$class_name = str_replace(' ', '_', ucwords($class_name));
370
+		} else {
371
+			$class_name = $setup_args['class_name'];
372
+		}
373
+		// check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
374
+		return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
375
+			? $class_name
376
+			: 'EE_' . $class_name;
377
+	}
378
+
379
+
380
+	/**
381
+	 * @param string $class_name
382
+	 * @param array  $setup_args
383
+	 * @return array
384
+	 */
385
+	private static function _get_addon_settings($class_name, array $setup_args)
386
+	{
387
+		// setup $_settings array from incoming values.
388
+		$addon_settings = array(
389
+			// generated from the addon name, changes something like "calendar" to "EE_Calendar"
390
+			'class_name'            => $class_name,
391
+			// the addon slug for use in URLs, etc
392
+			'plugin_slug'           => isset($setup_args['plugin_slug'])
393
+				? (string) $setup_args['plugin_slug']
394
+				: '',
395
+			// page slug to be used when generating the "Settings" link on the WP plugin page
396
+			'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
397
+				? (string) $setup_args['plugin_action_slug']
398
+				: '',
399
+			// the "software" version for the addon
400
+			'version'               => isset($setup_args['version'])
401
+				? (string) $setup_args['version']
402
+				: '',
403
+			// the minimum version of EE Core that the addon will work with
404
+			'min_core_version'      => isset($setup_args['min_core_version'])
405
+				? (string) $setup_args['min_core_version']
406
+				: '',
407
+			// the minimum version of WordPress that the addon will work with
408
+			'min_wp_version'        => isset($setup_args['min_wp_version'])
409
+				? (string) $setup_args['min_wp_version']
410
+				: EE_MIN_WP_VER_REQUIRED,
411
+			// full server path to main file (file loaded directly by WP)
412
+			'main_file_path'        => isset($setup_args['main_file_path'])
413
+				? (string) $setup_args['main_file_path']
414
+				: '',
415
+			// instance of \EventEspresso\core\domain\DomainInterface
416
+			'domain'                => isset($setup_args['domain']) && $setup_args['domain'] instanceof DomainInterface
417
+				? $setup_args['domain']
418
+				: null,
419
+			// Fully Qualified Class Name for the addon's Domain class
420
+			'domain_fqcn'           => isset($setup_args['domain_fqcn'])
421
+				? (string) $setup_args['domain_fqcn']
422
+				: '',
423
+			// path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
424
+			'admin_path'            => isset($setup_args['admin_path'])
425
+				? (string) $setup_args['admin_path'] : '',
426
+			// a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
427
+			'admin_callback'        => isset($setup_args['admin_callback'])
428
+				? (string) $setup_args['admin_callback']
429
+				: '',
430
+			// the section name for this addon's configuration settings section (defaults to "addons")
431
+			'config_section'        => isset($setup_args['config_section'])
432
+				? (string) $setup_args['config_section']
433
+				: 'addons',
434
+			// the class name for this addon's configuration settings object
435
+			'config_class'          => isset($setup_args['config_class'])
436
+				? (string) $setup_args['config_class'] : '',
437
+			// the name given to the config for this addons' configuration settings object (optional)
438
+			'config_name'           => isset($setup_args['config_name'])
439
+				? (string) $setup_args['config_name'] : '',
440
+			// an array of "class names" => "full server paths" for any classes that might be invoked by the addon
441
+			'autoloader_paths'      => isset($setup_args['autoloader_paths'])
442
+				? (array) $setup_args['autoloader_paths']
443
+				: array(),
444
+			// an array of  "full server paths" for any folders containing classes that might be invoked by the addon
445
+			'autoloader_folders'    => isset($setup_args['autoloader_folders'])
446
+				? (array) $setup_args['autoloader_folders']
447
+				: array(),
448
+			// array of full server paths to any EE_DMS data migration scripts used by the addon.
449
+			// The key should be the EE_Addon class name that this set of data migration scripts belongs to.
450
+			// If the EE_Addon class is namespaced, then this needs to be the Fully Qualified Class Name
451
+			'dms_paths'             => isset($setup_args['dms_paths'])
452
+				? (array) $setup_args['dms_paths']
453
+				: array(),
454
+			// array of full server paths to any EED_Modules used by the addon
455
+			'module_paths'          => isset($setup_args['module_paths'])
456
+				? (array) $setup_args['module_paths']
457
+				: array(),
458
+			// array of full server paths to any EES_Shortcodes used by the addon
459
+			'shortcode_paths'       => isset($setup_args['shortcode_paths'])
460
+				? (array) $setup_args['shortcode_paths']
461
+				: array(),
462
+			'shortcode_fqcns'       => isset($setup_args['shortcode_fqcns'])
463
+				? (array) $setup_args['shortcode_fqcns']
464
+				: array(),
465
+			// array of full server paths to any WP_Widgets used by the addon
466
+			'widget_paths'          => isset($setup_args['widget_paths'])
467
+				? (array) $setup_args['widget_paths']
468
+				: array(),
469
+			// array of PUE options used by the addon
470
+			'pue_options'           => isset($setup_args['pue_options'])
471
+				? (array) $setup_args['pue_options']
472
+				: array(),
473
+			'message_types'         => isset($setup_args['message_types'])
474
+				? (array) $setup_args['message_types']
475
+				: array(),
476
+			'capabilities'          => isset($setup_args['capabilities'])
477
+				? (array) $setup_args['capabilities']
478
+				: array(),
479
+			'capability_maps'       => isset($setup_args['capability_maps'])
480
+				? (array) $setup_args['capability_maps']
481
+				: array(),
482
+			'model_paths'           => isset($setup_args['model_paths'])
483
+				? (array) $setup_args['model_paths']
484
+				: array(),
485
+			'class_paths'           => isset($setup_args['class_paths'])
486
+				? (array) $setup_args['class_paths']
487
+				: array(),
488
+			'model_extension_paths' => isset($setup_args['model_extension_paths'])
489
+				? (array) $setup_args['model_extension_paths']
490
+				: array(),
491
+			'class_extension_paths' => isset($setup_args['class_extension_paths'])
492
+				? (array) $setup_args['class_extension_paths']
493
+				: array(),
494
+			'custom_post_types'     => isset($setup_args['custom_post_types'])
495
+				? (array) $setup_args['custom_post_types']
496
+				: array(),
497
+			'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
498
+				? (array) $setup_args['custom_taxonomies']
499
+				: array(),
500
+			'payment_method_paths'  => isset($setup_args['payment_method_paths'])
501
+				? (array) $setup_args['payment_method_paths']
502
+				: array(),
503
+			'default_terms'         => isset($setup_args['default_terms'])
504
+				? (array) $setup_args['default_terms']
505
+				: array(),
506
+			// if not empty, inserts a new table row after this plugin's row on the WP Plugins page
507
+			// that can be used for adding upgrading/marketing info
508
+			'plugins_page_row'      => isset($setup_args['plugins_page_row']) ? $setup_args['plugins_page_row'] : '',
509
+			'namespace'             => isset(
510
+				$setup_args['namespace']['FQNS'],
511
+				$setup_args['namespace']['DIR']
512
+			)
513
+				? (array) $setup_args['namespace']
514
+				: array(),
515
+			'privacy_policies'      => isset($setup_args['privacy_policies'])
516
+				? (array) $setup_args['privacy_policies']
517
+				: '',
518
+		);
519
+		// if plugin_action_slug is NOT set, but an admin page path IS set,
520
+		// then let's just use the plugin_slug since that will be used for linking to the admin page
521
+		$addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
522
+												&& ! empty($addon_settings['admin_path'])
523
+			? $addon_settings['plugin_slug']
524
+			: $addon_settings['plugin_action_slug'];
525
+		// full server path to main file (file loaded directly by WP)
526
+		$addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
527
+		return $addon_settings;
528
+	}
529
+
530
+
531
+	/**
532
+	 * @param string $addon_name
533
+	 * @param array  $addon_settings
534
+	 * @return boolean
535
+	 */
536
+	private static function _addon_is_compatible($addon_name, array $addon_settings)
537
+	{
538
+		global $wp_version;
539
+		$incompatibility_message = '';
540
+		// check whether this addon version is compatible with EE core
541
+		if (
542
+			isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
543
+			&& ! self::_meets_min_core_version_requirement(
544
+				EE_Register_Addon::$_incompatible_addons[ $addon_name ],
545
+				$addon_settings['version']
546
+			)
547
+		) {
548
+			$incompatibility_message = sprintf(
549
+				esc_html__(
550
+					'%4$sIMPORTANT!%5$sThe Event Espresso "%1$s" addon is not compatible with this version of Event Espresso.%2$sPlease upgrade your "%1$s" addon to version %3$s or newer to resolve this issue.',
551
+					'event_espresso'
552
+				),
553
+				$addon_name,
554
+				'<br />',
555
+				EE_Register_Addon::$_incompatible_addons[ $addon_name ],
556
+				'<span style="font-weight: bold; color: #D54E21;">',
557
+				'</span><br />'
558
+			);
559
+		} elseif (
560
+			! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
561
+		) {
562
+			$incompatibility_message = sprintf(
563
+				esc_html__(
564
+					'%5$sIMPORTANT!%6$sThe Event Espresso "%1$s" addon requires Event Espresso Core version "%2$s" or higher in order to run.%4$sYour version of Event Espresso Core is currently at "%3$s". Please upgrade Event Espresso Core first and then re-activate "%1$s".',
565
+					'event_espresso'
566
+				),
567
+				$addon_name,
568
+				self::_effective_version($addon_settings['min_core_version']),
569
+				self::_effective_version(espresso_version()),
570
+				'<br />',
571
+				'<span style="font-weight: bold; color: #D54E21;">',
572
+				'</span><br />'
573
+			);
574
+		} elseif (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
575
+			$incompatibility_message = sprintf(
576
+				esc_html__(
577
+					'%4$sIMPORTANT!%5$sThe Event Espresso "%1$s" addon requires WordPress version "%2$s" or greater.%3$sPlease update your version of WordPress to use the "%1$s" addon and to keep your site secure.',
578
+					'event_espresso'
579
+				),
580
+				$addon_name,
581
+				$addon_settings['min_wp_version'],
582
+				'<br />',
583
+				'<span style="font-weight: bold; color: #D54E21;">',
584
+				'</span><br />'
585
+			);
586
+		}
587
+		if (! empty($incompatibility_message)) {
588
+			// remove 'activate' from the REQUEST
589
+			// so WP doesn't erroneously tell the user the plugin activated fine when it didn't
590
+			/** @var RequestInterface $request */
591
+			$request = LoaderFactory::getLoader()->getShared(RequestInterface::class);
592
+			$request->unSetRequestParam('activate', true);
593
+			if (current_user_can('activate_plugins')) {
594
+				// show an error message indicating the plugin didn't activate properly
595
+				EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
596
+			}
597
+			// BAIL FROM THE ADDON REGISTRATION PROCESS
598
+			return false;
599
+		}
600
+		// addon IS compatible
601
+		return true;
602
+	}
603
+
604
+
605
+	/**
606
+	 * if plugin update engine is being used for auto-updates,
607
+	 * then let's set that up now before going any further so that ALL addons can be updated
608
+	 * (not needed if PUE is not being used)
609
+	 *
610
+	 * @param string $addon_name
611
+	 * @param string $class_name
612
+	 * @param array  $setup_args
613
+	 * @return void
614
+	 */
615
+	private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
616
+	{
617
+		if (! empty($setup_args['pue_options'])) {
618
+			self::$_settings[ $addon_name ]['pue_options'] = array(
619
+				'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
620
+					? (string) $setup_args['pue_options']['pue_plugin_slug']
621
+					: 'espresso_' . strtolower($class_name),
622
+				'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
623
+					? (string) $setup_args['pue_options']['plugin_basename']
624
+					: plugin_basename($setup_args['main_file_path']),
625
+				'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
626
+					? (string) $setup_args['pue_options']['checkPeriod']
627
+					: '24',
628
+				'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
629
+					? (string) $setup_args['pue_options']['use_wp_update']
630
+					: false,
631
+			);
632
+			add_action(
633
+				'AHEE__EE_System__brew_espresso__after_pue_init',
634
+				array('EE_Register_Addon', 'load_pue_update')
635
+			);
636
+		}
637
+	}
638
+
639
+
640
+	/**
641
+	 * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
642
+	 *
643
+	 * @param array $addon_settings
644
+	 * @return void
645
+	 */
646
+	private static function _setup_namespaces(array $addon_settings)
647
+	{
648
+		//
649
+		if (
650
+			isset(
651
+				$addon_settings['namespace']['FQNS'],
652
+				$addon_settings['namespace']['DIR']
653
+			)
654
+		) {
655
+			EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
656
+				$addon_settings['namespace']['FQNS'],
657
+				$addon_settings['namespace']['DIR']
658
+			);
659
+		}
660
+	}
661
+
662
+
663
+	/**
664
+	 * @param string $addon_name
665
+	 * @param array  $addon_settings
666
+	 * @return bool
667
+	 * @throws InvalidArgumentException
668
+	 * @throws InvalidDataTypeException
669
+	 * @throws InvalidInterfaceException
670
+	 */
671
+	private static function _addon_activation($addon_name, array $addon_settings)
672
+	{
673
+		// this is an activation request
674
+		if (did_action('activate_plugin')) {
675
+			// to find if THIS is the addon that was activated, just check if we have already registered it or not
676
+			// (as the newly-activated addon wasn't around the first time addons were registered).
677
+			// Note: the presence of pue_options in the addon registration options will initialize the $_settings
678
+			// property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
679
+			if (
680
+				! isset(self::$_settings[ $addon_name ])
681
+				|| (isset(self::$_settings[ $addon_name ])
682
+					&& ! isset(self::$_settings[ $addon_name ]['class_name'])
683
+				)
684
+			) {
685
+				self::$_settings[ $addon_name ] = $addon_settings;
686
+				$addon = self::_load_and_init_addon_class($addon_name);
687
+				$addon->set_activation_indicator_option();
688
+				// dont bother setting up the rest of the addon.
689
+				// we know it was just activated and the request will end soon
690
+			}
691
+			return true;
692
+		}
693
+		// make sure this was called in the right place!
694
+		if (
695
+			! did_action('AHEE__EE_System__load_espresso_addons')
696
+			|| did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
697
+		) {
698
+			EE_Error::doing_it_wrong(
699
+				__METHOD__,
700
+				sprintf(
701
+					esc_html__(
702
+						'An attempt to register an EE_Addon named "%s" has failed because it was not registered at the correct time.  Please use the "AHEE__EE_System__load_espresso_addons" hook to register addons.',
703
+						'event_espresso'
704
+					),
705
+					$addon_name
706
+				),
707
+				'4.3.0'
708
+			);
709
+		}
710
+		// make sure addon settings are set correctly without overwriting anything existing
711
+		if (isset(self::$_settings[ $addon_name ])) {
712
+			self::$_settings[ $addon_name ] += $addon_settings;
713
+		} else {
714
+			self::$_settings[ $addon_name ] = $addon_settings;
715
+		}
716
+		return false;
717
+	}
718
+
719
+
720
+	/**
721
+	 * @param string $addon_name
722
+	 * @return void
723
+	 * @throws EE_Error
724
+	 */
725
+	private static function _setup_autoloaders($addon_name)
726
+	{
727
+		if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
728
+			// setup autoloader for single file
729
+			EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
730
+		}
731
+		// setup autoloaders for folders
732
+		if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
733
+			foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
734
+				EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
735
+			}
736
+		}
737
+	}
738
+
739
+
740
+	/**
741
+	 * register new models and extensions
742
+	 *
743
+	 * @param string $addon_name
744
+	 * @return void
745
+	 * @throws EE_Error
746
+	 */
747
+	private static function _register_models_and_extensions($addon_name)
748
+	{
749
+		// register new models
750
+		if (
751
+			! empty(self::$_settings[ $addon_name ]['model_paths'])
752
+			|| ! empty(self::$_settings[ $addon_name ]['class_paths'])
753
+		) {
754
+			EE_Register_Model::register(
755
+				$addon_name,
756
+				array(
757
+					'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
758
+					'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
759
+				)
760
+			);
761
+		}
762
+		// register model extensions
763
+		if (
764
+			! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
765
+			|| ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
766
+		) {
767
+			EE_Register_Model_Extensions::register(
768
+				$addon_name,
769
+				array(
770
+					'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
771
+					'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
772
+				)
773
+			);
774
+		}
775
+	}
776
+
777
+
778
+	/**
779
+	 * @param string $addon_name
780
+	 * @return void
781
+	 * @throws EE_Error
782
+	 */
783
+	private static function _register_data_migration_scripts($addon_name)
784
+	{
785
+		// setup DMS
786
+		if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
787
+			EE_Register_Data_Migration_Scripts::register(
788
+				$addon_name,
789
+				array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
790
+			);
791
+		}
792
+	}
793
+
794
+
795
+	/**
796
+	 * @param string $addon_name
797
+	 * @return void
798
+	 * @throws EE_Error
799
+	 */
800
+	private static function _register_config($addon_name)
801
+	{
802
+		// if config_class is present let's register config.
803
+		if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
804
+			EE_Register_Config::register(
805
+				self::$_settings[ $addon_name ]['config_class'],
806
+				array(
807
+					'config_section' => self::$_settings[ $addon_name ]['config_section'],
808
+					'config_name'    => self::$_settings[ $addon_name ]['config_name'],
809
+				)
810
+			);
811
+		}
812
+	}
813
+
814
+
815
+	/**
816
+	 * @param string $addon_name
817
+	 * @return void
818
+	 * @throws EE_Error
819
+	 */
820
+	private static function _register_admin_pages($addon_name)
821
+	{
822
+		if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
823
+			EE_Register_Admin_Page::register(
824
+				$addon_name,
825
+				array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
826
+			);
827
+		}
828
+	}
829
+
830
+
831
+	/**
832
+	 * @param string $addon_name
833
+	 * @return void
834
+	 * @throws EE_Error
835
+	 */
836
+	private static function _register_modules($addon_name)
837
+	{
838
+		if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
839
+			EE_Register_Module::register(
840
+				$addon_name,
841
+				array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
842
+			);
843
+		}
844
+	}
845
+
846
+
847
+	/**
848
+	 * @param string $addon_name
849
+	 * @return void
850
+	 * @throws EE_Error
851
+	 */
852
+	private static function _register_shortcodes($addon_name)
853
+	{
854
+		if (
855
+			! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
856
+			|| ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
857
+		) {
858
+			EE_Register_Shortcode::register(
859
+				$addon_name,
860
+				array(
861
+					'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
862
+						? self::$_settings[ $addon_name ]['shortcode_paths'] : array(),
863
+					'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
864
+						? self::$_settings[ $addon_name ]['shortcode_fqcns'] : array(),
865
+				)
866
+			);
867
+		}
868
+	}
869
+
870
+
871
+	/**
872
+	 * @param string $addon_name
873
+	 * @return void
874
+	 * @throws EE_Error
875
+	 */
876
+	private static function _register_widgets($addon_name)
877
+	{
878
+		if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
879
+			EE_Register_Widget::register(
880
+				$addon_name,
881
+				array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
882
+			);
883
+		}
884
+	}
885
+
886
+
887
+	/**
888
+	 * @param string $addon_name
889
+	 * @return void
890
+	 * @throws EE_Error
891
+	 */
892
+	private static function _register_capabilities($addon_name)
893
+	{
894
+		if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
895
+			EE_Register_Capabilities::register(
896
+				$addon_name,
897
+				array(
898
+					'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
899
+					'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
900
+				)
901
+			);
902
+		}
903
+	}
904
+
905
+
906
+	/**
907
+	 * @param string $addon_name
908
+	 * @return void
909
+	 */
910
+	private static function _register_message_types($addon_name)
911
+	{
912
+		if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
913
+			add_action(
914
+				'EE_Brewing_Regular___messages_caf',
915
+				array('EE_Register_Addon', 'register_message_types')
916
+			);
917
+		}
918
+	}
919
+
920
+
921
+	/**
922
+	 * @param string $addon_name
923
+	 * @return void
924
+	 * @throws EE_Error
925
+	 */
926
+	private static function _register_custom_post_types($addon_name)
927
+	{
928
+		if (
929
+			! empty(self::$_settings[ $addon_name ]['custom_post_types'])
930
+			|| ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
931
+		) {
932
+			EE_Register_CPT::register(
933
+				$addon_name,
934
+				array(
935
+					'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
936
+					'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
937
+					'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
938
+				)
939
+			);
940
+		}
941
+	}
942
+
943
+
944
+	/**
945
+	 * @param string $addon_name
946
+	 * @return void
947
+	 * @throws InvalidArgumentException
948
+	 * @throws InvalidInterfaceException
949
+	 * @throws InvalidDataTypeException
950
+	 * @throws DomainException
951
+	 * @throws EE_Error
952
+	 */
953
+	private static function _register_payment_methods($addon_name)
954
+	{
955
+		if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
956
+			EE_Register_Payment_Method::register(
957
+				$addon_name,
958
+				array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
959
+			);
960
+		}
961
+	}
962
+
963
+
964
+	/**
965
+	 * @param string $addon_name
966
+	 * @return void
967
+	 * @throws InvalidArgumentException
968
+	 * @throws InvalidInterfaceException
969
+	 * @throws InvalidDataTypeException
970
+	 * @throws DomainException
971
+	 */
972
+	private static function registerPrivacyPolicies($addon_name)
973
+	{
974
+		if (! empty(self::$_settings[ $addon_name ]['privacy_policies'])) {
975
+			EE_Register_Privacy_Policy::register(
976
+				$addon_name,
977
+				self::$_settings[ $addon_name ]['privacy_policies']
978
+			);
979
+		}
980
+	}
981
+
982
+
983
+	/**
984
+	 * @param string $addon_name
985
+	 * @return void
986
+	 */
987
+	private static function registerPersonalDataExporters($addon_name)
988
+	{
989
+		if (! empty(self::$_settings[ $addon_name ]['personal_data_exporters'])) {
990
+			EE_Register_Personal_Data_Eraser::register(
991
+				$addon_name,
992
+				self::$_settings[ $addon_name ]['personal_data_exporters']
993
+			);
994
+		}
995
+	}
996
+
997
+
998
+	/**
999
+	 * @param string $addon_name
1000
+	 * @return void
1001
+	 */
1002
+	private static function registerPersonalDataErasers($addon_name)
1003
+	{
1004
+		if (! empty(self::$_settings[ $addon_name ]['personal_data_erasers'])) {
1005
+			EE_Register_Personal_Data_Eraser::register(
1006
+				$addon_name,
1007
+				self::$_settings[ $addon_name ]['personal_data_erasers']
1008
+			);
1009
+		}
1010
+	}
1011
+
1012
+
1013
+	/**
1014
+	 * Loads and instantiates the EE_Addon class and adds it onto the registry
1015
+	 *
1016
+	 * @param string $addon_name
1017
+	 * @return EE_Addon
1018
+	 * @throws InvalidArgumentException
1019
+	 * @throws InvalidInterfaceException
1020
+	 * @throws InvalidDataTypeException
1021
+	 */
1022
+	private static function _load_and_init_addon_class($addon_name)
1023
+	{
1024
+		$addon = LoaderFactory::getLoader()->getShared(
1025
+			self::$_settings[ $addon_name ]['class_name'],
1026
+			array('EE_Registry::create(addon)' => true)
1027
+		);
1028
+		if (! $addon instanceof EE_Addon) {
1029
+			throw new DomainException(
1030
+				sprintf(
1031
+					esc_html__(
1032
+						'Failed to instantiate the %1$s class. PLease check that the class exists.',
1033
+						'event_espresso'
1034
+					),
1035
+					$addon_name
1036
+				)
1037
+			);
1038
+		}
1039
+		// setter inject dep map if required
1040
+		if ($addon->dependencyMap() === null) {
1041
+			$addon->setDependencyMap(LoaderFactory::getLoader()->getShared('EE_Dependency_Map'));
1042
+		}
1043
+		// setter inject domain if required
1044
+		EE_Register_Addon::injectAddonDomain($addon_name, $addon);
1045
+
1046
+		$addon->set_name($addon_name);
1047
+		$addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
1048
+		$addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
1049
+		$addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
1050
+		$addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
1051
+		$addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
1052
+		$addon->set_version(self::$_settings[ $addon_name ]['version']);
1053
+		$addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
1054
+		$addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
1055
+		$addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
1056
+		$addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
1057
+		// setup the add-on's pue_slug if we have one.
1058
+		if (! empty(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug'])) {
1059
+			$addon->setPueSlug(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug']);
1060
+		}
1061
+		// unfortunately this can't be hooked in upon construction,
1062
+		// because we don't have the plugin's mainfile path upon construction.
1063
+		register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
1064
+		// call any additional admin_callback functions during load_admin_controller hook
1065
+		if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
1066
+			add_action(
1067
+				'AHEE__EE_System__load_controllers__load_admin_controllers',
1068
+				array($addon, self::$_settings[ $addon_name ]['admin_callback'])
1069
+			);
1070
+		}
1071
+		return $addon;
1072
+	}
1073
+
1074
+
1075
+	/**
1076
+	 * @param string   $addon_name
1077
+	 * @param EE_Addon $addon
1078
+	 * @since   4.10.13.p
1079
+	 */
1080
+	private static function injectAddonDomain($addon_name, EE_Addon $addon)
1081
+	{
1082
+		if ($addon instanceof RequiresDomainInterface && $addon->domain() === null) {
1083
+			// using supplied Domain object
1084
+			$domain = self::$_settings[ $addon_name ]['domain'] instanceof DomainInterface
1085
+				? self::$_settings[ $addon_name ]['domain']
1086
+				: null;
1087
+			// or construct one using Domain FQCN
1088
+			if ($domain === null && self::$_settings[ $addon_name ]['domain_fqcn'] !== '') {
1089
+				$domain = LoaderFactory::getLoader()->getShared(
1090
+					self::$_settings[ $addon_name ]['domain_fqcn'],
1091
+					[
1092
+						new EventEspresso\core\domain\values\FilePath(
1093
+							self::$_settings[ $addon_name ]['main_file_path']
1094
+						),
1095
+						EventEspresso\core\domain\values\Version::fromString(
1096
+							self::$_settings[ $addon_name ]['version']
1097
+						),
1098
+					]
1099
+				);
1100
+			}
1101
+			if ($domain instanceof DomainInterface) {
1102
+				$addon->setDomain($domain);
1103
+			}
1104
+		}
1105
+	}
1106
+
1107
+
1108
+	/**
1109
+	 *    load_pue_update - Update notifications
1110
+	 *
1111
+	 * @return void
1112
+	 * @throws InvalidArgumentException
1113
+	 * @throws InvalidDataTypeException
1114
+	 * @throws InvalidInterfaceException
1115
+	 */
1116
+	public static function load_pue_update()
1117
+	{
1118
+		// load PUE client
1119
+		require_once EE_THIRD_PARTY . 'pue/pue-client.php';
1120
+		$license_server = defined('PUE_UPDATES_ENDPOINT') ? PUE_UPDATES_ENDPOINT : 'https://eventespresso.com';
1121
+		// cycle thru settings
1122
+		foreach (self::$_settings as $settings) {
1123
+			if (! empty($settings['pue_options'])) {
1124
+				// initiate the class and start the plugin update engine!
1125
+				new PluginUpdateEngineChecker(
1126
+					// host file URL
1127
+					$license_server,
1128
+					// plugin slug(s)
1129
+					array(
1130
+						'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1131
+						'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1132
+					),
1133
+					// options
1134
+					array(
1135
+						'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
1136
+						'lang_domain'       => 'event_espresso',
1137
+						'checkPeriod'       => $settings['pue_options']['checkPeriod'],
1138
+						'option_key'        => 'ee_site_license_key',
1139
+						'options_page_slug' => 'event_espresso',
1140
+						'plugin_basename'   => $settings['pue_options']['plugin_basename'],
1141
+						// if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
1142
+						'use_wp_update'     => $settings['pue_options']['use_wp_update'],
1143
+					)
1144
+				);
1145
+			}
1146
+		}
1147
+	}
1148
+
1149
+
1150
+	/**
1151
+	 * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
1152
+	 *
1153
+	 * @since 4.4.0
1154
+	 * @return void
1155
+	 * @throws EE_Error
1156
+	 */
1157
+	public static function register_message_types()
1158
+	{
1159
+		foreach (self::$_settings as $settings) {
1160
+			if (! empty($settings['message_types'])) {
1161
+				foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1162
+					EE_Register_Message_Type::register($message_type, $message_type_settings);
1163
+				}
1164
+			}
1165
+		}
1166
+	}
1167
+
1168
+
1169
+	/**
1170
+	 * This deregisters an addon that was previously registered with a specific addon_name.
1171
+	 *
1172
+	 * @param string $addon_name the name for the addon that was previously registered
1173
+	 * @throws DomainException
1174
+	 * @throws InvalidArgumentException
1175
+	 * @throws InvalidDataTypeException
1176
+	 * @throws InvalidInterfaceException
1177
+	 *@since    4.3.0
1178
+	 */
1179
+	public static function deregister($addon_name = '')
1180
+	{
1181
+		if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1182
+			try {
1183
+				do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1184
+				$class_name = self::$_settings[ $addon_name ]['class_name'];
1185
+				if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
1186
+					// setup DMS
1187
+					EE_Register_Data_Migration_Scripts::deregister($addon_name);
1188
+				}
1189
+				if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
1190
+					// register admin page
1191
+					EE_Register_Admin_Page::deregister($addon_name);
1192
+				}
1193
+				if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
1194
+					// add to list of modules to be registered
1195
+					EE_Register_Module::deregister($addon_name);
1196
+				}
1197
+				if (
1198
+					! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
1199
+					|| ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
1200
+				) {
1201
+					// add to list of shortcodes to be registered
1202
+					EE_Register_Shortcode::deregister($addon_name);
1203
+				}
1204
+				if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
1205
+					// if config_class present let's register config.
1206
+					EE_Register_Config::deregister(self::$_settings[ $addon_name ]['config_class']);
1207
+				}
1208
+				if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
1209
+					// add to list of widgets to be registered
1210
+					EE_Register_Widget::deregister($addon_name);
1211
+				}
1212
+				if (
1213
+					! empty(self::$_settings[ $addon_name ]['model_paths'])
1214
+					|| ! empty(self::$_settings[ $addon_name ]['class_paths'])
1215
+				) {
1216
+					// add to list of shortcodes to be registered
1217
+					EE_Register_Model::deregister($addon_name);
1218
+				}
1219
+				if (
1220
+					! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
1221
+					|| ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
1222
+				) {
1223
+					// add to list of shortcodes to be registered
1224
+					EE_Register_Model_Extensions::deregister($addon_name);
1225
+				}
1226
+				if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
1227
+					foreach ((array) self::$_settings[ $addon_name ]['message_types'] as $message_type => $message_type_settings) {
1228
+						EE_Register_Message_Type::deregister($message_type);
1229
+					}
1230
+				}
1231
+				// deregister capabilities for addon
1232
+				if (
1233
+					! empty(self::$_settings[ $addon_name ]['capabilities'])
1234
+					|| ! empty(self::$_settings[ $addon_name ]['capability_maps'])
1235
+				) {
1236
+					EE_Register_Capabilities::deregister($addon_name);
1237
+				}
1238
+				// deregister custom_post_types for addon
1239
+				if (! empty(self::$_settings[ $addon_name ]['custom_post_types'])) {
1240
+					EE_Register_CPT::deregister($addon_name);
1241
+				}
1242
+				if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
1243
+					EE_Register_Payment_Method::deregister($addon_name);
1244
+				}
1245
+				$addon = EE_Registry::instance()->getAddon($class_name);
1246
+				if ($addon instanceof EE_Addon) {
1247
+					remove_action(
1248
+						'deactivate_' . $addon->get_main_plugin_file_basename(),
1249
+						array($addon, 'deactivation')
1250
+					);
1251
+					remove_action(
1252
+						'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1253
+						array($addon, 'initialize_db_if_no_migrations_required')
1254
+					);
1255
+					// remove `after_registration` call
1256
+					remove_action(
1257
+						'AHEE__EE_System__load_espresso_addons__complete',
1258
+						array($addon, 'after_registration'),
1259
+						999
1260
+					);
1261
+				}
1262
+				EE_Registry::instance()->removeAddon($class_name);
1263
+				LoaderFactory::getLoader()->remove($class_name);
1264
+			} catch (OutOfBoundsException $addon_not_yet_registered_exception) {
1265
+				// the add-on was not yet registered in the registry,
1266
+				// so RegistryContainer::__get() throws this exception.
1267
+				// also no need to worry about this or log it,
1268
+				// it's ok to deregister an add-on before its registered in the registry
1269
+			} catch (Exception $e) {
1270
+				new ExceptionLogger($e);
1271
+			}
1272
+			unset(self::$_settings[ $addon_name ]);
1273
+			do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1274
+		}
1275
+	}
1276 1276
 }
Please login to merge, or discard this patch.
Spacing   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -70,15 +70,15 @@  discard block
 block discarded – undo
70 70
         // offsets:    0 . 1 . 2 . 3 . 4
71 71
         $version_parts = explode('.', $min_core_version);
72 72
         // check they specified the micro version (after 2nd period)
73
-        if (! isset($version_parts[2])) {
73
+        if ( ! isset($version_parts[2])) {
74 74
             $version_parts[2] = '0';
75 75
         }
76 76
         // if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
77 77
         // soon we can assume that's 'rc', but this current version is 'alpha'
78
-        if (! isset($version_parts[3])) {
78
+        if ( ! isset($version_parts[3])) {
79 79
             $version_parts[3] = 'dev';
80 80
         }
81
-        if (! isset($version_parts[4])) {
81
+        if ( ! isset($version_parts[4])) {
82 82
             $version_parts[4] = '000';
83 83
         }
84 84
         return implode('.', $version_parts);
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
         EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
266 266
         // does this addon work with this version of core or WordPress ?
267 267
         // does this addon work with this version of core or WordPress ?
268
-        if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
268
+        if ( ! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
269 269
             return;
270 270
         }
271 271
         // register namespaces
@@ -329,7 +329,7 @@  discard block
 block discarded – undo
329 329
                 )
330 330
             );
331 331
         }
332
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
332
+        if ( ! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
333 333
             throw new EE_Error(
334 334
                 sprintf(
335 335
                     esc_html__(
@@ -341,7 +341,7 @@  discard block
 block discarded – undo
341 341
             );
342 342
         }
343 343
         // check that addon has not already been registered with that name
344
-        if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
344
+        if (isset(self::$_settings[$addon_name]) && ! did_action('activate_plugin')) {
345 345
             throw new EE_Error(
346 346
                 sprintf(
347 347
                     esc_html__(
@@ -373,7 +373,7 @@  discard block
 block discarded – undo
373 373
         // check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
374 374
         return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
375 375
             ? $class_name
376
-            : 'EE_' . $class_name;
376
+            : 'EE_'.$class_name;
377 377
     }
378 378
 
379 379
 
@@ -539,9 +539,9 @@  discard block
 block discarded – undo
539 539
         $incompatibility_message = '';
540 540
         // check whether this addon version is compatible with EE core
541 541
         if (
542
-            isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
542
+            isset(EE_Register_Addon::$_incompatible_addons[$addon_name])
543 543
             && ! self::_meets_min_core_version_requirement(
544
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
544
+                EE_Register_Addon::$_incompatible_addons[$addon_name],
545 545
                 $addon_settings['version']
546 546
             )
547 547
         ) {
@@ -552,7 +552,7 @@  discard block
 block discarded – undo
552 552
                 ),
553 553
                 $addon_name,
554 554
                 '<br />',
555
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
555
+                EE_Register_Addon::$_incompatible_addons[$addon_name],
556 556
                 '<span style="font-weight: bold; color: #D54E21;">',
557 557
                 '</span><br />'
558 558
             );
@@ -584,7 +584,7 @@  discard block
 block discarded – undo
584 584
                 '</span><br />'
585 585
             );
586 586
         }
587
-        if (! empty($incompatibility_message)) {
587
+        if ( ! empty($incompatibility_message)) {
588 588
             // remove 'activate' from the REQUEST
589 589
             // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
590 590
             /** @var RequestInterface $request */
@@ -614,11 +614,11 @@  discard block
 block discarded – undo
614 614
      */
615 615
     private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
616 616
     {
617
-        if (! empty($setup_args['pue_options'])) {
618
-            self::$_settings[ $addon_name ]['pue_options'] = array(
617
+        if ( ! empty($setup_args['pue_options'])) {
618
+            self::$_settings[$addon_name]['pue_options'] = array(
619 619
                 'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
620 620
                     ? (string) $setup_args['pue_options']['pue_plugin_slug']
621
-                    : 'espresso_' . strtolower($class_name),
621
+                    : 'espresso_'.strtolower($class_name),
622 622
                 'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
623 623
                     ? (string) $setup_args['pue_options']['plugin_basename']
624 624
                     : plugin_basename($setup_args['main_file_path']),
@@ -677,12 +677,12 @@  discard block
 block discarded – undo
677 677
             // Note: the presence of pue_options in the addon registration options will initialize the $_settings
678 678
             // property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
679 679
             if (
680
-                ! isset(self::$_settings[ $addon_name ])
681
-                || (isset(self::$_settings[ $addon_name ])
682
-                    && ! isset(self::$_settings[ $addon_name ]['class_name'])
680
+                ! isset(self::$_settings[$addon_name])
681
+                || (isset(self::$_settings[$addon_name])
682
+                    && ! isset(self::$_settings[$addon_name]['class_name'])
683 683
                 )
684 684
             ) {
685
-                self::$_settings[ $addon_name ] = $addon_settings;
685
+                self::$_settings[$addon_name] = $addon_settings;
686 686
                 $addon = self::_load_and_init_addon_class($addon_name);
687 687
                 $addon->set_activation_indicator_option();
688 688
                 // dont bother setting up the rest of the addon.
@@ -708,10 +708,10 @@  discard block
 block discarded – undo
708 708
             );
709 709
         }
710 710
         // make sure addon settings are set correctly without overwriting anything existing
711
-        if (isset(self::$_settings[ $addon_name ])) {
712
-            self::$_settings[ $addon_name ] += $addon_settings;
711
+        if (isset(self::$_settings[$addon_name])) {
712
+            self::$_settings[$addon_name] += $addon_settings;
713 713
         } else {
714
-            self::$_settings[ $addon_name ] = $addon_settings;
714
+            self::$_settings[$addon_name] = $addon_settings;
715 715
         }
716 716
         return false;
717 717
     }
@@ -724,13 +724,13 @@  discard block
 block discarded – undo
724 724
      */
725 725
     private static function _setup_autoloaders($addon_name)
726 726
     {
727
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
727
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
728 728
             // setup autoloader for single file
729
-            EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
729
+            EEH_Autoloader::instance()->register_autoloader(self::$_settings[$addon_name]['autoloader_paths']);
730 730
         }
731 731
         // setup autoloaders for folders
732
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
733
-            foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
732
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
733
+            foreach ((array) self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
734 734
                 EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
735 735
             }
736 736
         }
@@ -748,27 +748,27 @@  discard block
 block discarded – undo
748 748
     {
749 749
         // register new models
750 750
         if (
751
-            ! empty(self::$_settings[ $addon_name ]['model_paths'])
752
-            || ! empty(self::$_settings[ $addon_name ]['class_paths'])
751
+            ! empty(self::$_settings[$addon_name]['model_paths'])
752
+            || ! empty(self::$_settings[$addon_name]['class_paths'])
753 753
         ) {
754 754
             EE_Register_Model::register(
755 755
                 $addon_name,
756 756
                 array(
757
-                    'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
758
-                    'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
757
+                    'model_paths' => self::$_settings[$addon_name]['model_paths'],
758
+                    'class_paths' => self::$_settings[$addon_name]['class_paths'],
759 759
                 )
760 760
             );
761 761
         }
762 762
         // register model extensions
763 763
         if (
764
-            ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
765
-            || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
764
+            ! empty(self::$_settings[$addon_name]['model_extension_paths'])
765
+            || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
766 766
         ) {
767 767
             EE_Register_Model_Extensions::register(
768 768
                 $addon_name,
769 769
                 array(
770
-                    'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
771
-                    'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
770
+                    'model_extension_paths' => self::$_settings[$addon_name]['model_extension_paths'],
771
+                    'class_extension_paths' => self::$_settings[$addon_name]['class_extension_paths'],
772 772
                 )
773 773
             );
774 774
         }
@@ -783,10 +783,10 @@  discard block
 block discarded – undo
783 783
     private static function _register_data_migration_scripts($addon_name)
784 784
     {
785 785
         // setup DMS
786
-        if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
786
+        if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
787 787
             EE_Register_Data_Migration_Scripts::register(
788 788
                 $addon_name,
789
-                array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
789
+                array('dms_paths' => self::$_settings[$addon_name]['dms_paths'])
790 790
             );
791 791
         }
792 792
     }
@@ -800,12 +800,12 @@  discard block
 block discarded – undo
800 800
     private static function _register_config($addon_name)
801 801
     {
802 802
         // if config_class is present let's register config.
803
-        if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
803
+        if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
804 804
             EE_Register_Config::register(
805
-                self::$_settings[ $addon_name ]['config_class'],
805
+                self::$_settings[$addon_name]['config_class'],
806 806
                 array(
807
-                    'config_section' => self::$_settings[ $addon_name ]['config_section'],
808
-                    'config_name'    => self::$_settings[ $addon_name ]['config_name'],
807
+                    'config_section' => self::$_settings[$addon_name]['config_section'],
808
+                    'config_name'    => self::$_settings[$addon_name]['config_name'],
809 809
                 )
810 810
             );
811 811
         }
@@ -819,10 +819,10 @@  discard block
 block discarded – undo
819 819
      */
820 820
     private static function _register_admin_pages($addon_name)
821 821
     {
822
-        if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
822
+        if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
823 823
             EE_Register_Admin_Page::register(
824 824
                 $addon_name,
825
-                array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
825
+                array('page_path' => self::$_settings[$addon_name]['admin_path'])
826 826
             );
827 827
         }
828 828
     }
@@ -835,10 +835,10 @@  discard block
 block discarded – undo
835 835
      */
836 836
     private static function _register_modules($addon_name)
837 837
     {
838
-        if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
838
+        if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
839 839
             EE_Register_Module::register(
840 840
                 $addon_name,
841
-                array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
841
+                array('module_paths' => self::$_settings[$addon_name]['module_paths'])
842 842
             );
843 843
         }
844 844
     }
@@ -852,16 +852,16 @@  discard block
 block discarded – undo
852 852
     private static function _register_shortcodes($addon_name)
853 853
     {
854 854
         if (
855
-            ! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
856
-            || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
855
+            ! empty(self::$_settings[$addon_name]['shortcode_paths'])
856
+            || ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
857 857
         ) {
858 858
             EE_Register_Shortcode::register(
859 859
                 $addon_name,
860 860
                 array(
861
-                    'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
862
-                        ? self::$_settings[ $addon_name ]['shortcode_paths'] : array(),
863
-                    'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
864
-                        ? self::$_settings[ $addon_name ]['shortcode_fqcns'] : array(),
861
+                    'shortcode_paths' => isset(self::$_settings[$addon_name]['shortcode_paths'])
862
+                        ? self::$_settings[$addon_name]['shortcode_paths'] : array(),
863
+                    'shortcode_fqcns' => isset(self::$_settings[$addon_name]['shortcode_fqcns'])
864
+                        ? self::$_settings[$addon_name]['shortcode_fqcns'] : array(),
865 865
                 )
866 866
             );
867 867
         }
@@ -875,10 +875,10 @@  discard block
 block discarded – undo
875 875
      */
876 876
     private static function _register_widgets($addon_name)
877 877
     {
878
-        if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
878
+        if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
879 879
             EE_Register_Widget::register(
880 880
                 $addon_name,
881
-                array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
881
+                array('widget_paths' => self::$_settings[$addon_name]['widget_paths'])
882 882
             );
883 883
         }
884 884
     }
@@ -891,12 +891,12 @@  discard block
 block discarded – undo
891 891
      */
892 892
     private static function _register_capabilities($addon_name)
893 893
     {
894
-        if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
894
+        if ( ! empty(self::$_settings[$addon_name]['capabilities'])) {
895 895
             EE_Register_Capabilities::register(
896 896
                 $addon_name,
897 897
                 array(
898
-                    'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
899
-                    'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
898
+                    'capabilities'    => self::$_settings[$addon_name]['capabilities'],
899
+                    'capability_maps' => self::$_settings[$addon_name]['capability_maps'],
900 900
                 )
901 901
             );
902 902
         }
@@ -909,7 +909,7 @@  discard block
 block discarded – undo
909 909
      */
910 910
     private static function _register_message_types($addon_name)
911 911
     {
912
-        if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
912
+        if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
913 913
             add_action(
914 914
                 'EE_Brewing_Regular___messages_caf',
915 915
                 array('EE_Register_Addon', 'register_message_types')
@@ -926,15 +926,15 @@  discard block
 block discarded – undo
926 926
     private static function _register_custom_post_types($addon_name)
927 927
     {
928 928
         if (
929
-            ! empty(self::$_settings[ $addon_name ]['custom_post_types'])
930
-            || ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
929
+            ! empty(self::$_settings[$addon_name]['custom_post_types'])
930
+            || ! empty(self::$_settings[$addon_name]['custom_taxonomies'])
931 931
         ) {
932 932
             EE_Register_CPT::register(
933 933
                 $addon_name,
934 934
                 array(
935
-                    'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
936
-                    'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
937
-                    'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
935
+                    'cpts'          => self::$_settings[$addon_name]['custom_post_types'],
936
+                    'cts'           => self::$_settings[$addon_name]['custom_taxonomies'],
937
+                    'default_terms' => self::$_settings[$addon_name]['default_terms'],
938 938
                 )
939 939
             );
940 940
         }
@@ -952,10 +952,10 @@  discard block
 block discarded – undo
952 952
      */
953 953
     private static function _register_payment_methods($addon_name)
954 954
     {
955
-        if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
955
+        if ( ! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
956 956
             EE_Register_Payment_Method::register(
957 957
                 $addon_name,
958
-                array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
958
+                array('payment_method_paths' => self::$_settings[$addon_name]['payment_method_paths'])
959 959
             );
960 960
         }
961 961
     }
@@ -971,10 +971,10 @@  discard block
 block discarded – undo
971 971
      */
972 972
     private static function registerPrivacyPolicies($addon_name)
973 973
     {
974
-        if (! empty(self::$_settings[ $addon_name ]['privacy_policies'])) {
974
+        if ( ! empty(self::$_settings[$addon_name]['privacy_policies'])) {
975 975
             EE_Register_Privacy_Policy::register(
976 976
                 $addon_name,
977
-                self::$_settings[ $addon_name ]['privacy_policies']
977
+                self::$_settings[$addon_name]['privacy_policies']
978 978
             );
979 979
         }
980 980
     }
@@ -986,10 +986,10 @@  discard block
 block discarded – undo
986 986
      */
987 987
     private static function registerPersonalDataExporters($addon_name)
988 988
     {
989
-        if (! empty(self::$_settings[ $addon_name ]['personal_data_exporters'])) {
989
+        if ( ! empty(self::$_settings[$addon_name]['personal_data_exporters'])) {
990 990
             EE_Register_Personal_Data_Eraser::register(
991 991
                 $addon_name,
992
-                self::$_settings[ $addon_name ]['personal_data_exporters']
992
+                self::$_settings[$addon_name]['personal_data_exporters']
993 993
             );
994 994
         }
995 995
     }
@@ -1001,10 +1001,10 @@  discard block
 block discarded – undo
1001 1001
      */
1002 1002
     private static function registerPersonalDataErasers($addon_name)
1003 1003
     {
1004
-        if (! empty(self::$_settings[ $addon_name ]['personal_data_erasers'])) {
1004
+        if ( ! empty(self::$_settings[$addon_name]['personal_data_erasers'])) {
1005 1005
             EE_Register_Personal_Data_Eraser::register(
1006 1006
                 $addon_name,
1007
-                self::$_settings[ $addon_name ]['personal_data_erasers']
1007
+                self::$_settings[$addon_name]['personal_data_erasers']
1008 1008
             );
1009 1009
         }
1010 1010
     }
@@ -1022,10 +1022,10 @@  discard block
 block discarded – undo
1022 1022
     private static function _load_and_init_addon_class($addon_name)
1023 1023
     {
1024 1024
         $addon = LoaderFactory::getLoader()->getShared(
1025
-            self::$_settings[ $addon_name ]['class_name'],
1025
+            self::$_settings[$addon_name]['class_name'],
1026 1026
             array('EE_Registry::create(addon)' => true)
1027 1027
         );
1028
-        if (! $addon instanceof EE_Addon) {
1028
+        if ( ! $addon instanceof EE_Addon) {
1029 1029
             throw new DomainException(
1030 1030
                 sprintf(
1031 1031
                     esc_html__(
@@ -1044,28 +1044,28 @@  discard block
 block discarded – undo
1044 1044
         EE_Register_Addon::injectAddonDomain($addon_name, $addon);
1045 1045
 
1046 1046
         $addon->set_name($addon_name);
1047
-        $addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
1048
-        $addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
1049
-        $addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
1050
-        $addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
1051
-        $addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
1052
-        $addon->set_version(self::$_settings[ $addon_name ]['version']);
1053
-        $addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
1054
-        $addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
1055
-        $addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
1056
-        $addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
1047
+        $addon->set_plugin_slug(self::$_settings[$addon_name]['plugin_slug']);
1048
+        $addon->set_plugin_basename(self::$_settings[$addon_name]['plugin_basename']);
1049
+        $addon->set_main_plugin_file(self::$_settings[$addon_name]['main_file_path']);
1050
+        $addon->set_plugin_action_slug(self::$_settings[$addon_name]['plugin_action_slug']);
1051
+        $addon->set_plugins_page_row(self::$_settings[$addon_name]['plugins_page_row']);
1052
+        $addon->set_version(self::$_settings[$addon_name]['version']);
1053
+        $addon->set_min_core_version(self::_effective_version(self::$_settings[$addon_name]['min_core_version']));
1054
+        $addon->set_config_section(self::$_settings[$addon_name]['config_section']);
1055
+        $addon->set_config_class(self::$_settings[$addon_name]['config_class']);
1056
+        $addon->set_config_name(self::$_settings[$addon_name]['config_name']);
1057 1057
         // setup the add-on's pue_slug if we have one.
1058
-        if (! empty(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug'])) {
1059
-            $addon->setPueSlug(self::$_settings[ $addon_name ]['pue_options']['pue_plugin_slug']);
1058
+        if ( ! empty(self::$_settings[$addon_name]['pue_options']['pue_plugin_slug'])) {
1059
+            $addon->setPueSlug(self::$_settings[$addon_name]['pue_options']['pue_plugin_slug']);
1060 1060
         }
1061 1061
         // unfortunately this can't be hooked in upon construction,
1062 1062
         // because we don't have the plugin's mainfile path upon construction.
1063 1063
         register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
1064 1064
         // call any additional admin_callback functions during load_admin_controller hook
1065
-        if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
1065
+        if ( ! empty(self::$_settings[$addon_name]['admin_callback'])) {
1066 1066
             add_action(
1067 1067
                 'AHEE__EE_System__load_controllers__load_admin_controllers',
1068
-                array($addon, self::$_settings[ $addon_name ]['admin_callback'])
1068
+                array($addon, self::$_settings[$addon_name]['admin_callback'])
1069 1069
             );
1070 1070
         }
1071 1071
         return $addon;
@@ -1081,19 +1081,19 @@  discard block
 block discarded – undo
1081 1081
     {
1082 1082
         if ($addon instanceof RequiresDomainInterface && $addon->domain() === null) {
1083 1083
             // using supplied Domain object
1084
-            $domain = self::$_settings[ $addon_name ]['domain'] instanceof DomainInterface
1085
-                ? self::$_settings[ $addon_name ]['domain']
1084
+            $domain = self::$_settings[$addon_name]['domain'] instanceof DomainInterface
1085
+                ? self::$_settings[$addon_name]['domain']
1086 1086
                 : null;
1087 1087
             // or construct one using Domain FQCN
1088
-            if ($domain === null && self::$_settings[ $addon_name ]['domain_fqcn'] !== '') {
1088
+            if ($domain === null && self::$_settings[$addon_name]['domain_fqcn'] !== '') {
1089 1089
                 $domain = LoaderFactory::getLoader()->getShared(
1090
-                    self::$_settings[ $addon_name ]['domain_fqcn'],
1090
+                    self::$_settings[$addon_name]['domain_fqcn'],
1091 1091
                     [
1092 1092
                         new EventEspresso\core\domain\values\FilePath(
1093
-                            self::$_settings[ $addon_name ]['main_file_path']
1093
+                            self::$_settings[$addon_name]['main_file_path']
1094 1094
                         ),
1095 1095
                         EventEspresso\core\domain\values\Version::fromString(
1096
-                            self::$_settings[ $addon_name ]['version']
1096
+                            self::$_settings[$addon_name]['version']
1097 1097
                         ),
1098 1098
                     ]
1099 1099
                 );
@@ -1116,11 +1116,11 @@  discard block
 block discarded – undo
1116 1116
     public static function load_pue_update()
1117 1117
     {
1118 1118
         // load PUE client
1119
-        require_once EE_THIRD_PARTY . 'pue/pue-client.php';
1119
+        require_once EE_THIRD_PARTY.'pue/pue-client.php';
1120 1120
         $license_server = defined('PUE_UPDATES_ENDPOINT') ? PUE_UPDATES_ENDPOINT : 'https://eventespresso.com';
1121 1121
         // cycle thru settings
1122 1122
         foreach (self::$_settings as $settings) {
1123
-            if (! empty($settings['pue_options'])) {
1123
+            if ( ! empty($settings['pue_options'])) {
1124 1124
                 // initiate the class and start the plugin update engine!
1125 1125
                 new PluginUpdateEngineChecker(
1126 1126
                     // host file URL
@@ -1128,7 +1128,7 @@  discard block
 block discarded – undo
1128 1128
                     // plugin slug(s)
1129 1129
                     array(
1130 1130
                         'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1131
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1131
+                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'].'-pr'),
1132 1132
                     ),
1133 1133
                     // options
1134 1134
                     array(
@@ -1157,7 +1157,7 @@  discard block
 block discarded – undo
1157 1157
     public static function register_message_types()
1158 1158
     {
1159 1159
         foreach (self::$_settings as $settings) {
1160
-            if (! empty($settings['message_types'])) {
1160
+            if ( ! empty($settings['message_types'])) {
1161 1161
                 foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1162 1162
                     EE_Register_Message_Type::register($message_type, $message_type_settings);
1163 1163
                 }
@@ -1178,74 +1178,74 @@  discard block
 block discarded – undo
1178 1178
      */
1179 1179
     public static function deregister($addon_name = '')
1180 1180
     {
1181
-        if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1181
+        if (isset(self::$_settings[$addon_name]['class_name'])) {
1182 1182
             try {
1183 1183
                 do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1184
-                $class_name = self::$_settings[ $addon_name ]['class_name'];
1185
-                if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
1184
+                $class_name = self::$_settings[$addon_name]['class_name'];
1185
+                if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
1186 1186
                     // setup DMS
1187 1187
                     EE_Register_Data_Migration_Scripts::deregister($addon_name);
1188 1188
                 }
1189
-                if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
1189
+                if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
1190 1190
                     // register admin page
1191 1191
                     EE_Register_Admin_Page::deregister($addon_name);
1192 1192
                 }
1193
-                if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
1193
+                if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
1194 1194
                     // add to list of modules to be registered
1195 1195
                     EE_Register_Module::deregister($addon_name);
1196 1196
                 }
1197 1197
                 if (
1198
-                    ! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
1199
-                    || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
1198
+                    ! empty(self::$_settings[$addon_name]['shortcode_paths'])
1199
+                    || ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
1200 1200
                 ) {
1201 1201
                     // add to list of shortcodes to be registered
1202 1202
                     EE_Register_Shortcode::deregister($addon_name);
1203 1203
                 }
1204
-                if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
1204
+                if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
1205 1205
                     // if config_class present let's register config.
1206
-                    EE_Register_Config::deregister(self::$_settings[ $addon_name ]['config_class']);
1206
+                    EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1207 1207
                 }
1208
-                if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
1208
+                if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
1209 1209
                     // add to list of widgets to be registered
1210 1210
                     EE_Register_Widget::deregister($addon_name);
1211 1211
                 }
1212 1212
                 if (
1213
-                    ! empty(self::$_settings[ $addon_name ]['model_paths'])
1214
-                    || ! empty(self::$_settings[ $addon_name ]['class_paths'])
1213
+                    ! empty(self::$_settings[$addon_name]['model_paths'])
1214
+                    || ! empty(self::$_settings[$addon_name]['class_paths'])
1215 1215
                 ) {
1216 1216
                     // add to list of shortcodes to be registered
1217 1217
                     EE_Register_Model::deregister($addon_name);
1218 1218
                 }
1219 1219
                 if (
1220
-                    ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
1221
-                    || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
1220
+                    ! empty(self::$_settings[$addon_name]['model_extension_paths'])
1221
+                    || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1222 1222
                 ) {
1223 1223
                     // add to list of shortcodes to be registered
1224 1224
                     EE_Register_Model_Extensions::deregister($addon_name);
1225 1225
                 }
1226
-                if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
1227
-                    foreach ((array) self::$_settings[ $addon_name ]['message_types'] as $message_type => $message_type_settings) {
1226
+                if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
1227
+                    foreach ((array) self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
1228 1228
                         EE_Register_Message_Type::deregister($message_type);
1229 1229
                     }
1230 1230
                 }
1231 1231
                 // deregister capabilities for addon
1232 1232
                 if (
1233
-                    ! empty(self::$_settings[ $addon_name ]['capabilities'])
1234
-                    || ! empty(self::$_settings[ $addon_name ]['capability_maps'])
1233
+                    ! empty(self::$_settings[$addon_name]['capabilities'])
1234
+                    || ! empty(self::$_settings[$addon_name]['capability_maps'])
1235 1235
                 ) {
1236 1236
                     EE_Register_Capabilities::deregister($addon_name);
1237 1237
                 }
1238 1238
                 // deregister custom_post_types for addon
1239
-                if (! empty(self::$_settings[ $addon_name ]['custom_post_types'])) {
1239
+                if ( ! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1240 1240
                     EE_Register_CPT::deregister($addon_name);
1241 1241
                 }
1242
-                if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
1242
+                if ( ! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
1243 1243
                     EE_Register_Payment_Method::deregister($addon_name);
1244 1244
                 }
1245 1245
                 $addon = EE_Registry::instance()->getAddon($class_name);
1246 1246
                 if ($addon instanceof EE_Addon) {
1247 1247
                     remove_action(
1248
-                        'deactivate_' . $addon->get_main_plugin_file_basename(),
1248
+                        'deactivate_'.$addon->get_main_plugin_file_basename(),
1249 1249
                         array($addon, 'deactivation')
1250 1250
                     );
1251 1251
                     remove_action(
@@ -1269,7 +1269,7 @@  discard block
 block discarded – undo
1269 1269
             } catch (Exception $e) {
1270 1270
                 new ExceptionLogger($e);
1271 1271
             }
1272
-            unset(self::$_settings[ $addon_name ]);
1272
+            unset(self::$_settings[$addon_name]);
1273 1273
             do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1274 1274
         }
1275 1275
     }
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_CPT.lib.php 2 patches
Indentation   +228 added lines, -228 removed lines patch added patch discarded remove patch
@@ -13,255 +13,255 @@
 block discarded – undo
13 13
 class EE_Register_CPT implements EEI_Plugin_API
14 14
 {
15 15
 
16
-    /**
17
-     * Holds values for registered variations
18
-     *
19
-     * @since 4.5.0
20
-     *
21
-     * @var array[][][]
22
-     */
23
-    protected static $_registry = [];
16
+	/**
17
+	 * Holds values for registered variations
18
+	 *
19
+	 * @since 4.5.0
20
+	 *
21
+	 * @var array[][][]
22
+	 */
23
+	protected static $_registry = [];
24 24
 
25 25
 
26
-    /**
27
-     * Used to register new CPTs and Taxonomies.
28
-     *
29
-     * @param string $identifier              reference used for the addon registering cpts and cts
30
-     * @param array  $setup_args              {
31
-     *                                        An array of required values for registering the cpts and taxonomies
32
-     * @type array   $cpts                    {
33
-     *                                        An array of cpts and their arguments.(short example below)
34
-     * @return void
35
-     * @throws  EE_Error
36
-     * @see CustomPostTypeDefinitions::setDefinitions for a more complete example.
37
-     *                                        'people' => array(
38
-     *                                        'singular_name' => esc_html__('People', 'event_espresso'),
39
-     *                                        'plural_name' => esc_html__('People', 'event_espresso'),
40
-     *                                        'singular_slug' => esc_html__('people', 'event_espresso'),
41
-     *                                        'plural_slug' => esc_html__('peoples', 'event_espresso'),
42
-     *                                        'class_name' => 'EE_People'
43
-     *                                        )
44
-     *                                        },
45
-     * @type array   $cts                     {
46
-     *                                        An array of custom taxonomies and their arguments (short example below).
47
-     * @see CustomTaxonomyDefinitions::setTaxonomies() for a more complete example.
48
-     *                                        'espresso_people_type' => array(
49
-     *                                        'singular_name' => esc_html__('People Type', 'event_espresso'),
50
-     *                                        'plural_name' => esc_html__('People Types', 'event_espresso'),
51
-     *                                        'args' => array()
52
-     *                                        )
53
-     *                                        },
54
-     * @type array   $default_terms           {
55
-     *                                        An array of terms to set as the default for a given taxonomy and the
56
-     *                                        custom post types applied to.
57
-     *                                        'taxonomy_name' => array(
58
-     *                                        'term' => array( 'cpt_a_name', 'cpt_b_name' )
59
-     *                                        )
60
-     *                                        }
61
-     *                                        }
62
-     */
63
-    public static function register($identifier = '', array $setup_args = [])
64
-    {
26
+	/**
27
+	 * Used to register new CPTs and Taxonomies.
28
+	 *
29
+	 * @param string $identifier              reference used for the addon registering cpts and cts
30
+	 * @param array  $setup_args              {
31
+	 *                                        An array of required values for registering the cpts and taxonomies
32
+	 * @type array   $cpts                    {
33
+	 *                                        An array of cpts and their arguments.(short example below)
34
+	 * @return void
35
+	 * @throws  EE_Error
36
+	 * @see CustomPostTypeDefinitions::setDefinitions for a more complete example.
37
+	 *                                        'people' => array(
38
+	 *                                        'singular_name' => esc_html__('People', 'event_espresso'),
39
+	 *                                        'plural_name' => esc_html__('People', 'event_espresso'),
40
+	 *                                        'singular_slug' => esc_html__('people', 'event_espresso'),
41
+	 *                                        'plural_slug' => esc_html__('peoples', 'event_espresso'),
42
+	 *                                        'class_name' => 'EE_People'
43
+	 *                                        )
44
+	 *                                        },
45
+	 * @type array   $cts                     {
46
+	 *                                        An array of custom taxonomies and their arguments (short example below).
47
+	 * @see CustomTaxonomyDefinitions::setTaxonomies() for a more complete example.
48
+	 *                                        'espresso_people_type' => array(
49
+	 *                                        'singular_name' => esc_html__('People Type', 'event_espresso'),
50
+	 *                                        'plural_name' => esc_html__('People Types', 'event_espresso'),
51
+	 *                                        'args' => array()
52
+	 *                                        )
53
+	 *                                        },
54
+	 * @type array   $default_terms           {
55
+	 *                                        An array of terms to set as the default for a given taxonomy and the
56
+	 *                                        custom post types applied to.
57
+	 *                                        'taxonomy_name' => array(
58
+	 *                                        'term' => array( 'cpt_a_name', 'cpt_b_name' )
59
+	 *                                        )
60
+	 *                                        }
61
+	 *                                        }
62
+	 */
63
+	public static function register($identifier = '', array $setup_args = [])
64
+	{
65 65
 
66
-        // check for required params
67
-        if (empty($identifier)) {
68
-            throw new EE_Error(
69
-                esc_html__(
70
-                    'In order to register custom post types and custom taxonomies, you must include a value to reference what had been registered',
71
-                    'event_espresso'
72
-                )
73
-            );
74
-        }
66
+		// check for required params
67
+		if (empty($identifier)) {
68
+			throw new EE_Error(
69
+				esc_html__(
70
+					'In order to register custom post types and custom taxonomies, you must include a value to reference what had been registered',
71
+					'event_espresso'
72
+				)
73
+			);
74
+		}
75 75
 
76
-        if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) {
77
-            throw new EE_Error(
78
-                esc_html__(
79
-                    'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.',
80
-                    'event_espresso'
81
-                )
82
-            );
83
-        }
76
+		if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) {
77
+			throw new EE_Error(
78
+				esc_html__(
79
+					'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.',
80
+					'event_espresso'
81
+				)
82
+			);
83
+		}
84 84
 
85
-        // make sure we don't register twice
86
-        if (isset(self::$_registry[ $identifier ])) {
87
-            return;
88
-        }
85
+		// make sure we don't register twice
86
+		if (isset(self::$_registry[ $identifier ])) {
87
+			return;
88
+		}
89 89
 
90
-        // make sure cpt ref is unique.
91
-        if (isset(self::$_registry[ $identifier ])) {
92
-            $identifier = uniqid() . '_' . $identifier;
93
-        }
90
+		// make sure cpt ref is unique.
91
+		if (isset(self::$_registry[ $identifier ])) {
92
+			$identifier = uniqid() . '_' . $identifier;
93
+		}
94 94
 
95
-        // make sure this was called in the right place!
96
-        if (did_action('AHEE__EE_System__load_CPTs_and_session__complete')) {
97
-            EE_Error::doing_it_wrong(
98
-                __METHOD__,
99
-                sprintf(
100
-                    esc_html__(
101
-                        'EE_Register_CPT has been called and given a reference of "%s".  It may or may not work because it should be called on or before "AHEE__EE_System__load_CPTs_and_session__complete" action hook.',
102
-                        'event_espresso'
103
-                    ),
104
-                    $identifier
105
-                ),
106
-                '4.5.0'
107
-            );
108
-        }
109
-        // validate incoming args
110
-        $validated = [
111
-            'cpts'          => isset($setup_args['cpts'])
112
-                ? (array) $setup_args['cpts']
113
-                : [],
114
-            'cts'           => isset($setup_args['cts'])
115
-                ? (array) $setup_args['cts']
116
-                : [],
117
-            'default_terms' => isset($setup_args['default_terms'])
118
-                ? (array) $setup_args['default_terms']
119
-                : [],
120
-        ];
95
+		// make sure this was called in the right place!
96
+		if (did_action('AHEE__EE_System__load_CPTs_and_session__complete')) {
97
+			EE_Error::doing_it_wrong(
98
+				__METHOD__,
99
+				sprintf(
100
+					esc_html__(
101
+						'EE_Register_CPT has been called and given a reference of "%s".  It may or may not work because it should be called on or before "AHEE__EE_System__load_CPTs_and_session__complete" action hook.',
102
+						'event_espresso'
103
+					),
104
+					$identifier
105
+				),
106
+				'4.5.0'
107
+			);
108
+		}
109
+		// validate incoming args
110
+		$validated = [
111
+			'cpts'          => isset($setup_args['cpts'])
112
+				? (array) $setup_args['cpts']
113
+				: [],
114
+			'cts'           => isset($setup_args['cts'])
115
+				? (array) $setup_args['cts']
116
+				: [],
117
+			'default_terms' => isset($setup_args['default_terms'])
118
+				? (array) $setup_args['default_terms']
119
+				: [],
120
+		];
121 121
 
122
-        self::$_registry[ $identifier ] = $validated;
122
+		self::$_registry[ $identifier ] = $validated;
123 123
 
124
-        // hook into to cpt system
125
-        add_filter(
126
-            'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes',
127
-            [__CLASS__, 'filterCustomPostTypeDefinitions'],
128
-            5
129
-        );
130
-        add_filter(
131
-            'FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies',
132
-            [__CLASS__, 'filterCustomTaxonomyDefinitions'],
133
-            5
134
-        );
135
-        add_action(
136
-            'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end',
137
-            [__CLASS__, 'registerCustomTaxonomyTerm'],
138
-            5
139
-        );
140
-    }
124
+		// hook into to cpt system
125
+		add_filter(
126
+			'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes',
127
+			[__CLASS__, 'filterCustomPostTypeDefinitions'],
128
+			5
129
+		);
130
+		add_filter(
131
+			'FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies',
132
+			[__CLASS__, 'filterCustomTaxonomyDefinitions'],
133
+			5
134
+		);
135
+		add_action(
136
+			'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end',
137
+			[__CLASS__, 'registerCustomTaxonomyTerm'],
138
+			5
139
+		);
140
+	}
141 141
 
142 142
 
143
-    /**
144
-     * Callback for
145
-     * FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes
146
-     * that adds additional custom post types to be registered.
147
-     *
148
-     * @param array $custom_post_type_definitions array of cpts that are already set
149
-     * @return array new array of cpts and their registration information
150
-     */
151
-    public static function filterCustomPostTypeDefinitions(array $custom_post_type_definitions)
152
-    {
153
-        foreach (self::$_registry as $registries) {
154
-            foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
155
-                $custom_post_type_definitions[ $cpt_name ] = $cpt_settings;
156
-            }
157
-        }
158
-        return $custom_post_type_definitions;
159
-    }
143
+	/**
144
+	 * Callback for
145
+	 * FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes
146
+	 * that adds additional custom post types to be registered.
147
+	 *
148
+	 * @param array $custom_post_type_definitions array of cpts that are already set
149
+	 * @return array new array of cpts and their registration information
150
+	 */
151
+	public static function filterCustomPostTypeDefinitions(array $custom_post_type_definitions)
152
+	{
153
+		foreach (self::$_registry as $registries) {
154
+			foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
155
+				$custom_post_type_definitions[ $cpt_name ] = $cpt_settings;
156
+			}
157
+		}
158
+		return $custom_post_type_definitions;
159
+	}
160 160
 
161 161
 
162
-    /**
163
-     * Callback for
164
-     * FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies
165
-     * that adds additional custom taxonomies to be registered.
166
-     *
167
-     * @param array $custom_taxonomy_definitions array of cts that are already set.
168
-     * @return array new array of cts and their registration information.
169
-     */
170
-    public static function filterCustomTaxonomyDefinitions(array $custom_taxonomy_definitions)
171
-    {
172
-        foreach (self::$_registry as $registries) {
173
-            foreach ($registries['cts'] as $ct_name => $ct_settings) {
174
-                $custom_taxonomy_definitions[ $ct_name ] = $ct_settings;
175
-            }
176
-        }
177
-        return $custom_taxonomy_definitions;
178
-    }
162
+	/**
163
+	 * Callback for
164
+	 * FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies
165
+	 * that adds additional custom taxonomies to be registered.
166
+	 *
167
+	 * @param array $custom_taxonomy_definitions array of cts that are already set.
168
+	 * @return array new array of cts and their registration information.
169
+	 */
170
+	public static function filterCustomTaxonomyDefinitions(array $custom_taxonomy_definitions)
171
+	{
172
+		foreach (self::$_registry as $registries) {
173
+			foreach ($registries['cts'] as $ct_name => $ct_settings) {
174
+				$custom_taxonomy_definitions[ $ct_name ] = $ct_settings;
175
+			}
176
+		}
177
+		return $custom_taxonomy_definitions;
178
+	}
179 179
 
180 180
 
181
-    /**
182
-     * Callback for
183
-     * AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end
184
-     * which is used to set the default terms
185
-     *
186
-     * @param RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms
187
-     * @return void
188
-     */
189
-    public static function registerCustomTaxonomyTerm(RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms)
190
-    {
191
-        foreach (self::$_registry as $registries) {
192
-            foreach ($registries['default_terms'] as $taxonomy => $terms) {
193
-                foreach ($terms as $term => $cpts) {
194
-                    $register_custom_taxonomy_terms->registerCustomTaxonomyTerm(
195
-                        $taxonomy,
196
-                        $term,
197
-                        $cpts
198
-                    );
199
-                }
200
-            }
201
-        }
202
-    }
181
+	/**
182
+	 * Callback for
183
+	 * AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end
184
+	 * which is used to set the default terms
185
+	 *
186
+	 * @param RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms
187
+	 * @return void
188
+	 */
189
+	public static function registerCustomTaxonomyTerm(RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms)
190
+	{
191
+		foreach (self::$_registry as $registries) {
192
+			foreach ($registries['default_terms'] as $taxonomy => $terms) {
193
+				foreach ($terms as $term => $cpts) {
194
+					$register_custom_taxonomy_terms->registerCustomTaxonomyTerm(
195
+						$taxonomy,
196
+						$term,
197
+						$cpts
198
+					);
199
+				}
200
+			}
201
+		}
202
+	}
203 203
 
204 204
 
205
-    /**
206
-     * @param array $cpts array of cpts that are already set
207
-     * @return array new array of cpts and their registration information
208
-     * @deprecated 4.9.62.p
209
-     */
210
-    public static function filter_cpts(array $cpts)
211
-    {
212
-        foreach (self::$_registry as $registries) {
213
-            foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
214
-                $cpts[ $cpt_name ] = $cpt_settings;
215
-            }
216
-        }
217
-        return $cpts;
218
-    }
205
+	/**
206
+	 * @param array $cpts array of cpts that are already set
207
+	 * @return array new array of cpts and their registration information
208
+	 * @deprecated 4.9.62.p
209
+	 */
210
+	public static function filter_cpts(array $cpts)
211
+	{
212
+		foreach (self::$_registry as $registries) {
213
+			foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
214
+				$cpts[ $cpt_name ] = $cpt_settings;
215
+			}
216
+		}
217
+		return $cpts;
218
+	}
219 219
 
220 220
 
221
-    /**
222
-     * @param array $cts array of cts that are already set.
223
-     * @return array new array of cts and their registration information.
224
-     * @deprecated 4.9.62.p
225
-     */
226
-    public static function filter_cts(array $cts)
227
-    {
228
-        foreach (self::$_registry as $registries) {
229
-            foreach ($registries['cts'] as $ct_name => $ct_settings) {
230
-                $cts[ $ct_name ] = $ct_settings;
231
-            }
232
-        }
233
-        return $cts;
234
-    }
221
+	/**
222
+	 * @param array $cts array of cts that are already set.
223
+	 * @return array new array of cts and their registration information.
224
+	 * @deprecated 4.9.62.p
225
+	 */
226
+	public static function filter_cts(array $cts)
227
+	{
228
+		foreach (self::$_registry as $registries) {
229
+			foreach ($registries['cts'] as $ct_name => $ct_settings) {
230
+				$cts[ $ct_name ] = $ct_settings;
231
+			}
232
+		}
233
+		return $cts;
234
+	}
235 235
 
236 236
 
237
-    /**
238
-     * @param EE_Register_CPTs $cpt_class
239
-     * @return void
240
-     * @deprecated 4.9.62.p
241
-     */
242
-    public static function default_terms(EE_Register_CPTs $cpt_class)
243
-    {
244
-        foreach (self::$_registry as $registries) {
245
-            foreach ($registries['default_terms'] as $taxonomy => $terms) {
246
-                foreach ($terms as $term => $cpts) {
247
-                    $cpt_class->set_default_term($taxonomy, $term, $cpts);
248
-                }
249
-            }
250
-        }
251
-    }
237
+	/**
238
+	 * @param EE_Register_CPTs $cpt_class
239
+	 * @return void
240
+	 * @deprecated 4.9.62.p
241
+	 */
242
+	public static function default_terms(EE_Register_CPTs $cpt_class)
243
+	{
244
+		foreach (self::$_registry as $registries) {
245
+			foreach ($registries['default_terms'] as $taxonomy => $terms) {
246
+				foreach ($terms as $term => $cpts) {
247
+					$cpt_class->set_default_term($taxonomy, $term, $cpts);
248
+				}
249
+			}
250
+		}
251
+	}
252 252
 
253 253
 
254
-    /**
255
-     * This deregisters whats been registered on this class (for the given slug).
256
-     *
257
-     * @param string $identifier The reference for the item registered to be removed.
258
-     *
259
-     * @return void
260
-     * @since 4.5.0
261
-     *
262
-     */
263
-    public static function deregister($identifier = '')
264
-    {
265
-        unset(self::$_registry[ $identifier ]);
266
-    }
254
+	/**
255
+	 * This deregisters whats been registered on this class (for the given slug).
256
+	 *
257
+	 * @param string $identifier The reference for the item registered to be removed.
258
+	 *
259
+	 * @return void
260
+	 * @since 4.5.0
261
+	 *
262
+	 */
263
+	public static function deregister($identifier = '')
264
+	{
265
+		unset(self::$_registry[ $identifier ]);
266
+	}
267 267
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
             );
74 74
         }
75 75
 
76
-        if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) {
76
+        if ( ! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) {
77 77
             throw new EE_Error(
78 78
                 esc_html__(
79 79
                     'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.',
@@ -83,13 +83,13 @@  discard block
 block discarded – undo
83 83
         }
84 84
 
85 85
         // make sure we don't register twice
86
-        if (isset(self::$_registry[ $identifier ])) {
86
+        if (isset(self::$_registry[$identifier])) {
87 87
             return;
88 88
         }
89 89
 
90 90
         // make sure cpt ref is unique.
91
-        if (isset(self::$_registry[ $identifier ])) {
92
-            $identifier = uniqid() . '_' . $identifier;
91
+        if (isset(self::$_registry[$identifier])) {
92
+            $identifier = uniqid().'_'.$identifier;
93 93
         }
94 94
 
95 95
         // make sure this was called in the right place!
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
                 : [],
120 120
         ];
121 121
 
122
-        self::$_registry[ $identifier ] = $validated;
122
+        self::$_registry[$identifier] = $validated;
123 123
 
124 124
         // hook into to cpt system
125 125
         add_filter(
@@ -152,7 +152,7 @@  discard block
 block discarded – undo
152 152
     {
153 153
         foreach (self::$_registry as $registries) {
154 154
             foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
155
-                $custom_post_type_definitions[ $cpt_name ] = $cpt_settings;
155
+                $custom_post_type_definitions[$cpt_name] = $cpt_settings;
156 156
             }
157 157
         }
158 158
         return $custom_post_type_definitions;
@@ -171,7 +171,7 @@  discard block
 block discarded – undo
171 171
     {
172 172
         foreach (self::$_registry as $registries) {
173 173
             foreach ($registries['cts'] as $ct_name => $ct_settings) {
174
-                $custom_taxonomy_definitions[ $ct_name ] = $ct_settings;
174
+                $custom_taxonomy_definitions[$ct_name] = $ct_settings;
175 175
             }
176 176
         }
177 177
         return $custom_taxonomy_definitions;
@@ -211,7 +211,7 @@  discard block
 block discarded – undo
211 211
     {
212 212
         foreach (self::$_registry as $registries) {
213 213
             foreach ($registries['cpts'] as $cpt_name => $cpt_settings) {
214
-                $cpts[ $cpt_name ] = $cpt_settings;
214
+                $cpts[$cpt_name] = $cpt_settings;
215 215
             }
216 216
         }
217 217
         return $cpts;
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
     {
228 228
         foreach (self::$_registry as $registries) {
229 229
             foreach ($registries['cts'] as $ct_name => $ct_settings) {
230
-                $cts[ $ct_name ] = $ct_settings;
230
+                $cts[$ct_name] = $ct_settings;
231 231
             }
232 232
         }
233 233
         return $cts;
@@ -262,6 +262,6 @@  discard block
 block discarded – undo
262 262
      */
263 263
     public static function deregister($identifier = '')
264 264
     {
265
-        unset(self::$_registry[ $identifier ]);
265
+        unset(self::$_registry[$identifier]);
266 266
     }
267 267
 }
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Admin_Page.lib.php 2 patches
Indentation   +135 added lines, -135 removed lines patch added patch discarded remove patch
@@ -12,139 +12,139 @@
 block discarded – undo
12 12
 {
13 13
 
14 14
 
15
-    /**
16
-     * Holds registered EE_Admin_Pages
17
-     *
18
-     * @var array
19
-     */
20
-    protected static $_ee_admin_page_registry = [];
21
-
22
-
23
-    /**
24
-     * The purpose of this method is to provide an easy way for addons to register their admin pages (using the EE
25
-     * Admin Page loader system).
26
-     *
27
-     * @param string $identifier                                      This string represents the basename of the Admin
28
-     *                                                                Page init. The init file must use this basename
29
-     *                                                                in its name and class (i.e.
30
-     *                                                                {page_basename}_Admin_Page_Init.core.php).
31
-     * @param array  $setup_args                                      {              An array of configuration options
32
-     *                                                                that will be used in different circumstances
33
-     *
34
-     * @type  string $page_path                                       This is the path where the registered admin pages
35
-     *        reside ( used to setup autoloaders).
36
-     *
37
-     *    }
38
-     * @return void
39
-     * @throws EE_Error
40
-     * @since 4.3.0
41
-     *
42
-     */
43
-    public static function register($identifier = '', array $setup_args = [])
44
-    {
45
-
46
-        // check that an admin_page has not already been registered with that name
47
-        if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
48
-            throw new EE_Error(
49
-                sprintf(
50
-                    esc_html__(
51
-                        'An Admin Page with the name "%s" has already been registered and each Admin Page requires a unique name.',
52
-                        'event_espresso'
53
-                    ),
54
-                    $identifier
55
-                )
56
-            );
57
-        }
58
-
59
-        // required fields MUST be present, so let's make sure they are.
60
-        if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['page_path'])) {
61
-            throw new EE_Error(
62
-                esc_html__(
63
-                    'In order to register an Admin Page with EE_Register_Admin_Page::register(), you must include the "page_basename" (the class name of the page), and an array containing the following keys: "page_path" (the path where the registered admin pages reside)',
64
-                    'event_espresso'
65
-                )
66
-            );
67
-        }
68
-
69
-        // make sure we don't register twice
70
-        if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
71
-            return;
72
-        }
73
-
74
-        if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) {
75
-            EE_Error::doing_it_wrong(
76
-                __METHOD__,
77
-                sprintf(
78
-                    esc_html__(
79
-                        'An attempt was made to register "%s" as an EE Admin page has failed because it was not registered at the correct time.  Please use the "AHEE__EE_Admin__loaded" hook to register Admin pages.',
80
-                        'event_espresso'
81
-                    ),
82
-                    $identifier
83
-                ),
84
-                '4.3'
85
-            );
86
-        }
87
-
88
-        // add incoming stuff to our registry property
89
-        self::$_ee_admin_page_registry[ $identifier ] = [
90
-            'page_path' => $setup_args['page_path'],
91
-            'config'    => $setup_args,
92
-        ];
93
-
94
-        // add filters
95
-
96
-        add_filter(
97
-            'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs',
98
-            ['EE_Register_Admin_Page', 'set_page_basename'],
99
-            10
100
-        );
101
-        add_filter('FHEE__EEH_Autoloader__load_admin_core', ['EE_Register_Admin_Page', 'set_page_path'], 10);
102
-    }
103
-
104
-
105
-    /**
106
-     * This deregisters a EE_Admin page that is already registered.  Note, this MUST be loaded after the
107
-     * page being deregistered is loaded.
108
-     *
109
-     * @param string $identifier Use whatever string was used to register the admin page.
110
-     * @return  void
111
-     * @since    4.3.0
112
-     *
113
-     */
114
-    public static function deregister($identifier = '')
115
-    {
116
-        unset(self::$_ee_admin_page_registry[ $identifier ]);
117
-    }
118
-
119
-
120
-    /**
121
-     * set_page_basename
122
-     *
123
-     * @param $installed_refs
124
-     * @return mixed
125
-     */
126
-    public static function set_page_basename($installed_refs)
127
-    {
128
-        if (! empty(self::$_ee_admin_page_registry)) {
129
-            foreach (self::$_ee_admin_page_registry as $basename => $args) {
130
-                $installed_refs[ $basename ] = $args['page_path'];
131
-            }
132
-        }
133
-        return $installed_refs;
134
-    }
135
-
136
-
137
-    /**
138
-     * set_page_path
139
-     *
140
-     * @param $paths
141
-     * @return mixed
142
-     */
143
-    public static function set_page_path($paths)
144
-    {
145
-        foreach (self::$_ee_admin_page_registry as $basename => $args) {
146
-            $paths[ $basename ] = $args['page_path'];
147
-        }
148
-        return $paths;
149
-    }
15
+	/**
16
+	 * Holds registered EE_Admin_Pages
17
+	 *
18
+	 * @var array
19
+	 */
20
+	protected static $_ee_admin_page_registry = [];
21
+
22
+
23
+	/**
24
+	 * The purpose of this method is to provide an easy way for addons to register their admin pages (using the EE
25
+	 * Admin Page loader system).
26
+	 *
27
+	 * @param string $identifier                                      This string represents the basename of the Admin
28
+	 *                                                                Page init. The init file must use this basename
29
+	 *                                                                in its name and class (i.e.
30
+	 *                                                                {page_basename}_Admin_Page_Init.core.php).
31
+	 * @param array  $setup_args                                      {              An array of configuration options
32
+	 *                                                                that will be used in different circumstances
33
+	 *
34
+	 * @type  string $page_path                                       This is the path where the registered admin pages
35
+	 *        reside ( used to setup autoloaders).
36
+	 *
37
+	 *    }
38
+	 * @return void
39
+	 * @throws EE_Error
40
+	 * @since 4.3.0
41
+	 *
42
+	 */
43
+	public static function register($identifier = '', array $setup_args = [])
44
+	{
45
+
46
+		// check that an admin_page has not already been registered with that name
47
+		if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
48
+			throw new EE_Error(
49
+				sprintf(
50
+					esc_html__(
51
+						'An Admin Page with the name "%s" has already been registered and each Admin Page requires a unique name.',
52
+						'event_espresso'
53
+					),
54
+					$identifier
55
+				)
56
+			);
57
+		}
58
+
59
+		// required fields MUST be present, so let's make sure they are.
60
+		if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['page_path'])) {
61
+			throw new EE_Error(
62
+				esc_html__(
63
+					'In order to register an Admin Page with EE_Register_Admin_Page::register(), you must include the "page_basename" (the class name of the page), and an array containing the following keys: "page_path" (the path where the registered admin pages reside)',
64
+					'event_espresso'
65
+				)
66
+			);
67
+		}
68
+
69
+		// make sure we don't register twice
70
+		if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
71
+			return;
72
+		}
73
+
74
+		if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) {
75
+			EE_Error::doing_it_wrong(
76
+				__METHOD__,
77
+				sprintf(
78
+					esc_html__(
79
+						'An attempt was made to register "%s" as an EE Admin page has failed because it was not registered at the correct time.  Please use the "AHEE__EE_Admin__loaded" hook to register Admin pages.',
80
+						'event_espresso'
81
+					),
82
+					$identifier
83
+				),
84
+				'4.3'
85
+			);
86
+		}
87
+
88
+		// add incoming stuff to our registry property
89
+		self::$_ee_admin_page_registry[ $identifier ] = [
90
+			'page_path' => $setup_args['page_path'],
91
+			'config'    => $setup_args,
92
+		];
93
+
94
+		// add filters
95
+
96
+		add_filter(
97
+			'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs',
98
+			['EE_Register_Admin_Page', 'set_page_basename'],
99
+			10
100
+		);
101
+		add_filter('FHEE__EEH_Autoloader__load_admin_core', ['EE_Register_Admin_Page', 'set_page_path'], 10);
102
+	}
103
+
104
+
105
+	/**
106
+	 * This deregisters a EE_Admin page that is already registered.  Note, this MUST be loaded after the
107
+	 * page being deregistered is loaded.
108
+	 *
109
+	 * @param string $identifier Use whatever string was used to register the admin page.
110
+	 * @return  void
111
+	 * @since    4.3.0
112
+	 *
113
+	 */
114
+	public static function deregister($identifier = '')
115
+	{
116
+		unset(self::$_ee_admin_page_registry[ $identifier ]);
117
+	}
118
+
119
+
120
+	/**
121
+	 * set_page_basename
122
+	 *
123
+	 * @param $installed_refs
124
+	 * @return mixed
125
+	 */
126
+	public static function set_page_basename($installed_refs)
127
+	{
128
+		if (! empty(self::$_ee_admin_page_registry)) {
129
+			foreach (self::$_ee_admin_page_registry as $basename => $args) {
130
+				$installed_refs[ $basename ] = $args['page_path'];
131
+			}
132
+		}
133
+		return $installed_refs;
134
+	}
135
+
136
+
137
+	/**
138
+	 * set_page_path
139
+	 *
140
+	 * @param $paths
141
+	 * @return mixed
142
+	 */
143
+	public static function set_page_path($paths)
144
+	{
145
+		foreach (self::$_ee_admin_page_registry as $basename => $args) {
146
+			$paths[ $basename ] = $args['page_path'];
147
+		}
148
+		return $paths;
149
+	}
150 150
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
     {
45 45
 
46 46
         // check that an admin_page has not already been registered with that name
47
-        if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
47
+        if (isset(self::$_ee_admin_page_registry[$identifier])) {
48 48
             throw new EE_Error(
49 49
                 sprintf(
50 50
                     esc_html__(
@@ -67,11 +67,11 @@  discard block
 block discarded – undo
67 67
         }
68 68
 
69 69
         // make sure we don't register twice
70
-        if (isset(self::$_ee_admin_page_registry[ $identifier ])) {
70
+        if (isset(self::$_ee_admin_page_registry[$identifier])) {
71 71
             return;
72 72
         }
73 73
 
74
-        if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) {
74
+        if ( ! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) {
75 75
             EE_Error::doing_it_wrong(
76 76
                 __METHOD__,
77 77
                 sprintf(
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
         }
87 87
 
88 88
         // add incoming stuff to our registry property
89
-        self::$_ee_admin_page_registry[ $identifier ] = [
89
+        self::$_ee_admin_page_registry[$identifier] = [
90 90
             'page_path' => $setup_args['page_path'],
91 91
             'config'    => $setup_args,
92 92
         ];
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
      */
114 114
     public static function deregister($identifier = '')
115 115
     {
116
-        unset(self::$_ee_admin_page_registry[ $identifier ]);
116
+        unset(self::$_ee_admin_page_registry[$identifier]);
117 117
     }
118 118
 
119 119
 
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
      */
126 126
     public static function set_page_basename($installed_refs)
127 127
     {
128
-        if (! empty(self::$_ee_admin_page_registry)) {
128
+        if ( ! empty(self::$_ee_admin_page_registry)) {
129 129
             foreach (self::$_ee_admin_page_registry as $basename => $args) {
130
-                $installed_refs[ $basename ] = $args['page_path'];
130
+                $installed_refs[$basename] = $args['page_path'];
131 131
             }
132 132
         }
133 133
         return $installed_refs;
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
     public static function set_page_path($paths)
144 144
     {
145 145
         foreach (self::$_ee_admin_page_registry as $basename => $args) {
146
-            $paths[ $basename ] = $args['page_path'];
146
+            $paths[$basename] = $args['page_path'];
147 147
         }
148 148
         return $paths;
149 149
     }
Please login to merge, or discard this patch.
core/libraries/shortcodes/EE_Event_Meta_Shortcodes.lib.php 1 patch
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -32,42 +32,42 @@
 block discarded – undo
32 32
 {
33 33
 
34 34
 
35
-    public function __construct()
36
-    {
37
-        parent::__construct();
38
-    }
35
+	public function __construct()
36
+	{
37
+		parent::__construct();
38
+	}
39 39
 
40 40
 
41
-    protected function _init_props()
42
-    {
43
-        $this->label = esc_html__('Event Meta Shortcodes', 'event_espresso');
44
-        $this->description = esc_html__('All shortcodes related to Event Meta data', 'event_espresso');
45
-        $this->_shortcodes = array();
46
-    }
41
+	protected function _init_props()
42
+	{
43
+		$this->label = esc_html__('Event Meta Shortcodes', 'event_espresso');
44
+		$this->description = esc_html__('All shortcodes related to Event Meta data', 'event_espresso');
45
+		$this->_shortcodes = array();
46
+	}
47 47
 
48 48
 
49
-    /**
50
-     * We have to overload the parent parser method because of the dynamic nature of custom event meta
51
-     *
52
-     * @param  string $shortcode Incoming shortcode
53
-     * @param  mixed (array|object) $data      incoming data object/array
54
-     * @return string            parsed code.
55
-     */
56
-    public function parser($shortcode, $data, $extra_data = array())
57
-    {
49
+	/**
50
+	 * We have to overload the parent parser method because of the dynamic nature of custom event meta
51
+	 *
52
+	 * @param  string $shortcode Incoming shortcode
53
+	 * @param  mixed (array|object) $data      incoming data object/array
54
+	 * @return string            parsed code.
55
+	 */
56
+	public function parser($shortcode, $data, $extra_data = array())
57
+	{
58 58
 
59
-        // all shortcodes will be checked in the post_meta table (assuming the shortcode matches the post_meta key);
60
-        if (empty($this->_data['ID'])) {
61
-            return '';
62
-        } // need the event id to do anything!
59
+		// all shortcodes will be checked in the post_meta table (assuming the shortcode matches the post_meta key);
60
+		if (empty($this->_data['ID'])) {
61
+			return '';
62
+		} // need the event id to do anything!
63 63
 
64
-        $meta = get_post_meta($this->_data['ID'], $shortcode, true);
64
+		$meta = get_post_meta($this->_data['ID'], $shortcode, true);
65 65
 
66
-        return ! empty($meta) ? $meta : '';
67
-    }
66
+		return ! empty($meta) ? $meta : '';
67
+	}
68 68
 
69 69
 
70
-    protected function _parser($shortcode)
71
-    {
72
-    }
70
+	protected function _parser($shortcode)
71
+	{
72
+	}
73 73
 }
Please login to merge, or discard this patch.