Completed
Branch BUG/11325/register-addon-shoul... (9ae6ce)
by
unknown
12:45
created
core/libraries/plugin_api/EE_Register_Addon.lib.php 2 patches
Indentation   +1093 added lines, -1093 removed lines patch added patch discarded remove patch
@@ -24,1154 +24,1154 @@
 block discarded – undo
24 24
 {
25 25
 
26 26
 
27
-    /**
28
-     * possibly truncated version of the EE core version string
29
-     *
30
-     * @var string
31
-     */
32
-    protected static $_core_version = '';
27
+	/**
28
+	 * possibly truncated version of the EE core version string
29
+	 *
30
+	 * @var string
31
+	 */
32
+	protected static $_core_version = '';
33 33
 
34
-    /**
35
-     * Holds values for registered addons
36
-     *
37
-     * @var array
38
-     */
39
-    protected static $_settings = array();
34
+	/**
35
+	 * Holds values for registered addons
36
+	 *
37
+	 * @var array
38
+	 */
39
+	protected static $_settings = array();
40 40
 
41
-    /**
42
-     * @var  array $_incompatible_addons keys are addon SLUGS
43
-     * (first argument passed to EE_Register_Addon::register()), keys are
44
-     * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
45
-     * Generally this should be used sparingly, as we don't want to muddle up
46
-     * EE core with knowledge of ALL the addons out there.
47
-     * If you want NO versions of an addon to run with a certain version of core,
48
-     * it's usually best to define the addon's "min_core_version" as part of its call
49
-     * to EE_Register_Addon::register(), rather than using this array with a super high value for its
50
-     * minimum plugin version.
51
-     * @access    protected
52
-     */
53
-    protected static $_incompatible_addons = array(
54
-        'Multi_Event_Registration' => '2.0.11.rc.002',
55
-        'Promotions'               => '1.0.0.rc.084',
56
-    );
41
+	/**
42
+	 * @var  array $_incompatible_addons keys are addon SLUGS
43
+	 * (first argument passed to EE_Register_Addon::register()), keys are
44
+	 * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
45
+	 * Generally this should be used sparingly, as we don't want to muddle up
46
+	 * EE core with knowledge of ALL the addons out there.
47
+	 * If you want NO versions of an addon to run with a certain version of core,
48
+	 * it's usually best to define the addon's "min_core_version" as part of its call
49
+	 * to EE_Register_Addon::register(), rather than using this array with a super high value for its
50
+	 * minimum plugin version.
51
+	 * @access    protected
52
+	 */
53
+	protected static $_incompatible_addons = array(
54
+		'Multi_Event_Registration' => '2.0.11.rc.002',
55
+		'Promotions'               => '1.0.0.rc.084',
56
+	);
57 57
 
58 58
 
59
-    /**
60
-     * We should always be comparing core to a version like '4.3.0.rc.000',
61
-     * not just '4.3.0'.
62
-     * So if the addon developer doesn't provide that full version string,
63
-     * fill in the blanks for them
64
-     *
65
-     * @param string $min_core_version
66
-     * @return string always like '4.3.0.rc.000'
67
-     */
68
-    protected static function _effective_version($min_core_version)
69
-    {
70
-        // versions: 4 . 3 . 1 . p . 123
71
-        // offsets:    0 . 1 . 2 . 3 . 4
72
-        $version_parts = explode('.', $min_core_version);
73
-        //check they specified the micro version (after 2nd period)
74
-        if (! isset($version_parts[2])) {
75
-            $version_parts[2] = '0';
76
-        }
77
-        //if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
78
-        //soon we can assume that's 'rc', but this current version is 'alpha'
79
-        if (! isset($version_parts[3])) {
80
-            $version_parts[3] = 'dev';
81
-        }
82
-        if (! isset($version_parts[4])) {
83
-            $version_parts[4] = '000';
84
-        }
85
-        return implode('.', $version_parts);
86
-    }
59
+	/**
60
+	 * We should always be comparing core to a version like '4.3.0.rc.000',
61
+	 * not just '4.3.0'.
62
+	 * So if the addon developer doesn't provide that full version string,
63
+	 * fill in the blanks for them
64
+	 *
65
+	 * @param string $min_core_version
66
+	 * @return string always like '4.3.0.rc.000'
67
+	 */
68
+	protected static function _effective_version($min_core_version)
69
+	{
70
+		// versions: 4 . 3 . 1 . p . 123
71
+		// offsets:    0 . 1 . 2 . 3 . 4
72
+		$version_parts = explode('.', $min_core_version);
73
+		//check they specified the micro version (after 2nd period)
74
+		if (! isset($version_parts[2])) {
75
+			$version_parts[2] = '0';
76
+		}
77
+		//if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
78
+		//soon we can assume that's 'rc', but this current version is 'alpha'
79
+		if (! isset($version_parts[3])) {
80
+			$version_parts[3] = 'dev';
81
+		}
82
+		if (! isset($version_parts[4])) {
83
+			$version_parts[4] = '000';
84
+		}
85
+		return implode('.', $version_parts);
86
+	}
87 87
 
88 88
 
89
-    /**
90
-     * Returns whether or not the min core version requirement of the addon is met
91
-     *
92
-     * @param string $min_core_version    the minimum core version required by the addon
93
-     * @param string $actual_core_version the actual core version, optional
94
-     * @return boolean
95
-     */
96
-    public static function _meets_min_core_version_requirement(
97
-        $min_core_version,
98
-        $actual_core_version = EVENT_ESPRESSO_VERSION
99
-    ) {
100
-        return version_compare(
101
-            self::_effective_version($actual_core_version),
102
-            self::_effective_version($min_core_version),
103
-            '>='
104
-        );
105
-    }
89
+	/**
90
+	 * Returns whether or not the min core version requirement of the addon is met
91
+	 *
92
+	 * @param string $min_core_version    the minimum core version required by the addon
93
+	 * @param string $actual_core_version the actual core version, optional
94
+	 * @return boolean
95
+	 */
96
+	public static function _meets_min_core_version_requirement(
97
+		$min_core_version,
98
+		$actual_core_version = EVENT_ESPRESSO_VERSION
99
+	) {
100
+		return version_compare(
101
+			self::_effective_version($actual_core_version),
102
+			self::_effective_version($min_core_version),
103
+			'>='
104
+		);
105
+	}
106 106
 
107 107
 
108
-    /**
109
-     * Method for registering new EE_Addons.
110
-     * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
111
-     * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
112
-     * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
113
-     * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
114
-     * 'activate_plugin', it registers the addon still, but its components are not registered
115
-     * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
116
-     * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
117
-     * (so that we can detect that the addon has activated on the subsequent request)
118
-     *
119
-     * @since    4.3.0
120
-     * @param string                  $addon_name                       the EE_Addon's name. Required.
121
-     * @param  array                  $setup_args                       {
122
-     *                                                                  An array of arguments provided for registering the
123
-     *                                                                  message type.
124
-     * @type  string                  $class_name                       the addon's main file name.
125
-     *                                                                  If left blank, generated from the addon name,
126
-     *                                                                  changes something like "calendar" to "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 string                   $domain_fqcn                      Fully Qualified Class Name
135
-     *                                                                  for the addon's Domain class
136
-     *                                                                  (see EventEspresso\core\domain\Domain)
137
-     * @type string                   $admin_path                       full server path to the folder where the
138
-     *                                                                  addon\'s admin files reside
139
-     * @type string                   $admin_callback                   a method to be called when the EE Admin is
140
-     *                                                                  first invoked, can be used for hooking into
141
-     *                                                                  any admin page
142
-     * @type string                   $config_section                   the section name for this addon's
143
-     *                                                                  configuration settings section
144
-     *                                                                  (defaults to "addons")
145
-     * @type string                   $config_class                     the class name for this addon's
146
-     *                                                                  configuration settings object
147
-     * @type string                   $config_name                      the class name for this addon's
148
-     *                                                                  configuration settings object
149
-     * @type string                   $autoloader_paths                 an array of class names and the full server
150
-     *                                                                  paths to those files. Required.
151
-     * @type string                   $autoloader_folders               an array of  "full server paths" for any
152
-     *                                                                  folders containing classes that might be
153
-     *                                                                  invoked by the addon
154
-     * @type string                   $dms_paths                        an array of full server paths to folders that
155
-     *                                                                  contain data migration scripts. Required.
156
-     * @type string                   $module_paths                     an array of full server paths to any
157
-     *                                                                  EED_Modules used by the addon
158
-     * @type string                   $shortcode_paths                  an array of full server paths to folders
159
-     *                                                                  that contain EES_Shortcodes
160
-     * @type string                   $widget_paths                     an array of full server paths to folders
161
-     *                                                                  that contain WP_Widgets
162
-     * @type string                   $pue_options
163
-     * @type array                    $capabilities                     an array indexed by role name
164
-     *                                                                  (i.e administrator,author ) and the values
165
-     *                                                                  are an array of caps to add to the role.
166
-     *                                                                  'administrator' => array(
167
-     *                                                                  'read_addon',
168
-     *                                                                  'edit_addon',
169
-     *                                                                  etc.
170
-     *                                                                  ).
171
-     * @type EE_Meta_Capability_Map[] $capability_maps                  an array of EE_Meta_Capability_Map object
172
-     *                                                                  for any addons that need to register any
173
-     *                                                                  special meta mapped capabilities.  Should
174
-     *                                                                  be indexed where the key is the
175
-     *                                                                  EE_Meta_Capability_Map class name and the
176
-     *                                                                  values are the arguments sent to the class.
177
-     * @type array                    $model_paths                      array of folders containing DB models
178
-     * @see      EE_Register_Model
179
-     * @type array                    $class_paths                      array of folders containing DB classes
180
-     * @see      EE_Register_Model
181
-     * @type array                    $model_extension_paths            array of folders containing DB model
182
-     *                                                                  extensions
183
-     * @see      EE_Register_Model_Extension
184
-     * @type array                    $class_extension_paths            array of folders containing DB class
185
-     *                                                                  extensions
186
-     * @see      EE_Register_Model_Extension
187
-     * @type array message_types {
188
-     *                                                                  An array of message types with the key as
189
-     *                                                                  the message type name and the values as
190
-     *                                                                  below:
191
-     * @type string                   $mtfilename                       The filename of the message type being
192
-     *                                                                  registered. This will be the main
193
-     *                                                                  EE_{Message Type Name}_message_type class.
194
-     *                                                                  (eg. EE_Declined_Registration_message_type.class.php)
195
-     *                                                                  Required.
196
-     * @type array                    $autoloadpaths                    An array of paths to add to the messages
197
-     *                                                                  autoloader for the new message type.
198
-     *                                                                  Required.
199
-     * @type array                    $messengers_to_activate_with      An array of messengers that this message
200
-     *                                                                  type should activate with. Each value in
201
-     *                                                                  the
202
-     *                                                                  array
203
-     *                                                                  should match the name property of a
204
-     *                                                                  EE_messenger. Optional.
205
-     * @type array                    $messengers_to_validate_with      An array of messengers that this message
206
-     *                                                                  type should validate with. Each value in
207
-     *                                                                  the
208
-     *                                                                  array
209
-     *                                                                  should match the name property of an
210
-     *                                                                  EE_messenger.
211
-     *                                                                  Optional.
212
-     *                                                                  }
213
-     * @type array                    $custom_post_types
214
-     * @type array                    $custom_taxonomies
215
-     * @type array                    $payment_method_paths             each element is the folder containing the
216
-     *                                                                  EE_PMT_Base child class
217
-     *                                                                  (eg,
218
-     *                                                                  '/wp-content/plugins/my_plugin/Payomatic/'
219
-     *                                                                  which contains the files
220
-     *                                                                  EE_PMT_Payomatic.pm.php)
221
-     * @type array                    $default_terms
222
-     * @type array                    $namespace                        {
223
-     *                                                                  An array with two items for registering the
224
-     *                                                                  addon's namespace. (If, for some reason, you
225
-     *                                                                  require additional namespaces,
226
-     *                                                                  use EventEspresso\core\Psr4Autoloader::addNamespace()
227
-     *                                                                  directly)
228
-     * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
229
-     * @type string                   $FQNS                             the namespace prefix
230
-     * @type string                   $DIR                              a base directory for class files in the
231
-     *                                                                  namespace.
232
-     *                                                                  }
233
-     *                                                                  }
234
-     * @return void
235
-     * @throws DomainException
236
-     * @throws EE_Error
237
-     * @throws InvalidArgumentException
238
-     * @throws ReflectionException
239
-     * @throws InvalidDataTypeException
240
-     * @throws InvalidInterfaceException
241
-     */
242
-    public static function register($addon_name = '', $setup_args = array())
243
-    {
244
-        // required fields MUST be present, so let's make sure they are.
245
-        EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
246
-        // get class name for addon
247
-        $class_name = EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
248
-        //setup $_settings array from incoming values.
249
-        $addon_settings = EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
250
-        // setup PUE
251
-        EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
252
-        // does this addon work with this version of core or WordPress ?
253
-        if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
254
-            return;
255
-        }
256
-        // register namespaces
257
-        EE_Register_Addon::_setup_namespaces($addon_settings);
258
-        // check if this is an activation request
259
-        if (EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
260
-            // dont bother setting up the rest of the addon atm
261
-            return;
262
-        }
263
-        // we need cars
264
-        EE_Register_Addon::_setup_autoloaders($addon_name);
265
-        // register new models and extensions
266
-        EE_Register_Addon::_register_models_and_extensions($addon_name);
267
-        // setup DMS
268
-        EE_Register_Addon::_register_data_migration_scripts($addon_name);
269
-        // if config_class is present let's register config.
270
-        EE_Register_Addon::_register_config($addon_name);
271
-        // register admin pages
272
-        EE_Register_Addon::_register_admin_pages($addon_name);
273
-        // add to list of modules to be registered
274
-        EE_Register_Addon::_register_modules($addon_name);
275
-        // add to list of shortcodes to be registered
276
-        EE_Register_Addon::_register_shortcodes($addon_name);
277
-        // add to list of widgets to be registered
278
-        EE_Register_Addon::_register_widgets($addon_name);
279
-        // register capability related stuff.
280
-        EE_Register_Addon::_register_capabilities($addon_name);
281
-        // any message type to register?
282
-        EE_Register_Addon::_register_message_types($addon_name);
283
-        // any custom post type/ custom capabilities or default terms to register
284
-        EE_Register_Addon::_register_custom_post_types($addon_name);
285
-        // and any payment methods
286
-        EE_Register_Addon::_register_payment_methods($addon_name);
287
-        // load and instantiate main addon class
288
-        $addon = EE_Register_Addon::_load_and_init_addon_class($addon_name);
289
-        //delay calling after_registration hook on each addon until after all add-ons have been registered.
290
-        add_action('AHEE__EE_System__load_espresso_addons__complete', array($addon, 'after_registration'), 999);
291
-    }
108
+	/**
109
+	 * Method for registering new EE_Addons.
110
+	 * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
111
+	 * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
112
+	 * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
113
+	 * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
114
+	 * 'activate_plugin', it registers the addon still, but its components are not registered
115
+	 * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
116
+	 * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
117
+	 * (so that we can detect that the addon has activated on the subsequent request)
118
+	 *
119
+	 * @since    4.3.0
120
+	 * @param string                  $addon_name                       the EE_Addon's name. Required.
121
+	 * @param  array                  $setup_args                       {
122
+	 *                                                                  An array of arguments provided for registering the
123
+	 *                                                                  message type.
124
+	 * @type  string                  $class_name                       the addon's main file name.
125
+	 *                                                                  If left blank, generated from the addon name,
126
+	 *                                                                  changes something like "calendar" to "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 string                   $domain_fqcn                      Fully Qualified Class Name
135
+	 *                                                                  for the addon's Domain class
136
+	 *                                                                  (see EventEspresso\core\domain\Domain)
137
+	 * @type string                   $admin_path                       full server path to the folder where the
138
+	 *                                                                  addon\'s admin files reside
139
+	 * @type string                   $admin_callback                   a method to be called when the EE Admin is
140
+	 *                                                                  first invoked, can be used for hooking into
141
+	 *                                                                  any admin page
142
+	 * @type string                   $config_section                   the section name for this addon's
143
+	 *                                                                  configuration settings section
144
+	 *                                                                  (defaults to "addons")
145
+	 * @type string                   $config_class                     the class name for this addon's
146
+	 *                                                                  configuration settings object
147
+	 * @type string                   $config_name                      the class name for this addon's
148
+	 *                                                                  configuration settings object
149
+	 * @type string                   $autoloader_paths                 an array of class names and the full server
150
+	 *                                                                  paths to those files. Required.
151
+	 * @type string                   $autoloader_folders               an array of  "full server paths" for any
152
+	 *                                                                  folders containing classes that might be
153
+	 *                                                                  invoked by the addon
154
+	 * @type string                   $dms_paths                        an array of full server paths to folders that
155
+	 *                                                                  contain data migration scripts. Required.
156
+	 * @type string                   $module_paths                     an array of full server paths to any
157
+	 *                                                                  EED_Modules used by the addon
158
+	 * @type string                   $shortcode_paths                  an array of full server paths to folders
159
+	 *                                                                  that contain EES_Shortcodes
160
+	 * @type string                   $widget_paths                     an array of full server paths to folders
161
+	 *                                                                  that contain WP_Widgets
162
+	 * @type string                   $pue_options
163
+	 * @type array                    $capabilities                     an array indexed by role name
164
+	 *                                                                  (i.e administrator,author ) and the values
165
+	 *                                                                  are an array of caps to add to the role.
166
+	 *                                                                  'administrator' => array(
167
+	 *                                                                  'read_addon',
168
+	 *                                                                  'edit_addon',
169
+	 *                                                                  etc.
170
+	 *                                                                  ).
171
+	 * @type EE_Meta_Capability_Map[] $capability_maps                  an array of EE_Meta_Capability_Map object
172
+	 *                                                                  for any addons that need to register any
173
+	 *                                                                  special meta mapped capabilities.  Should
174
+	 *                                                                  be indexed where the key is the
175
+	 *                                                                  EE_Meta_Capability_Map class name and the
176
+	 *                                                                  values are the arguments sent to the class.
177
+	 * @type array                    $model_paths                      array of folders containing DB models
178
+	 * @see      EE_Register_Model
179
+	 * @type array                    $class_paths                      array of folders containing DB classes
180
+	 * @see      EE_Register_Model
181
+	 * @type array                    $model_extension_paths            array of folders containing DB model
182
+	 *                                                                  extensions
183
+	 * @see      EE_Register_Model_Extension
184
+	 * @type array                    $class_extension_paths            array of folders containing DB class
185
+	 *                                                                  extensions
186
+	 * @see      EE_Register_Model_Extension
187
+	 * @type array message_types {
188
+	 *                                                                  An array of message types with the key as
189
+	 *                                                                  the message type name and the values as
190
+	 *                                                                  below:
191
+	 * @type string                   $mtfilename                       The filename of the message type being
192
+	 *                                                                  registered. This will be the main
193
+	 *                                                                  EE_{Message Type Name}_message_type class.
194
+	 *                                                                  (eg. EE_Declined_Registration_message_type.class.php)
195
+	 *                                                                  Required.
196
+	 * @type array                    $autoloadpaths                    An array of paths to add to the messages
197
+	 *                                                                  autoloader for the new message type.
198
+	 *                                                                  Required.
199
+	 * @type array                    $messengers_to_activate_with      An array of messengers that this message
200
+	 *                                                                  type should activate with. Each value in
201
+	 *                                                                  the
202
+	 *                                                                  array
203
+	 *                                                                  should match the name property of a
204
+	 *                                                                  EE_messenger. Optional.
205
+	 * @type array                    $messengers_to_validate_with      An array of messengers that this message
206
+	 *                                                                  type should validate with. Each value in
207
+	 *                                                                  the
208
+	 *                                                                  array
209
+	 *                                                                  should match the name property of an
210
+	 *                                                                  EE_messenger.
211
+	 *                                                                  Optional.
212
+	 *                                                                  }
213
+	 * @type array                    $custom_post_types
214
+	 * @type array                    $custom_taxonomies
215
+	 * @type array                    $payment_method_paths             each element is the folder containing the
216
+	 *                                                                  EE_PMT_Base child class
217
+	 *                                                                  (eg,
218
+	 *                                                                  '/wp-content/plugins/my_plugin/Payomatic/'
219
+	 *                                                                  which contains the files
220
+	 *                                                                  EE_PMT_Payomatic.pm.php)
221
+	 * @type array                    $default_terms
222
+	 * @type array                    $namespace                        {
223
+	 *                                                                  An array with two items for registering the
224
+	 *                                                                  addon's namespace. (If, for some reason, you
225
+	 *                                                                  require additional namespaces,
226
+	 *                                                                  use EventEspresso\core\Psr4Autoloader::addNamespace()
227
+	 *                                                                  directly)
228
+	 * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
229
+	 * @type string                   $FQNS                             the namespace prefix
230
+	 * @type string                   $DIR                              a base directory for class files in the
231
+	 *                                                                  namespace.
232
+	 *                                                                  }
233
+	 *                                                                  }
234
+	 * @return void
235
+	 * @throws DomainException
236
+	 * @throws EE_Error
237
+	 * @throws InvalidArgumentException
238
+	 * @throws ReflectionException
239
+	 * @throws InvalidDataTypeException
240
+	 * @throws InvalidInterfaceException
241
+	 */
242
+	public static function register($addon_name = '', $setup_args = array())
243
+	{
244
+		// required fields MUST be present, so let's make sure they are.
245
+		EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
246
+		// get class name for addon
247
+		$class_name = EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
248
+		//setup $_settings array from incoming values.
249
+		$addon_settings = EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
250
+		// setup PUE
251
+		EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
252
+		// does this addon work with this version of core or WordPress ?
253
+		if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
254
+			return;
255
+		}
256
+		// register namespaces
257
+		EE_Register_Addon::_setup_namespaces($addon_settings);
258
+		// check if this is an activation request
259
+		if (EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
260
+			// dont bother setting up the rest of the addon atm
261
+			return;
262
+		}
263
+		// we need cars
264
+		EE_Register_Addon::_setup_autoloaders($addon_name);
265
+		// register new models and extensions
266
+		EE_Register_Addon::_register_models_and_extensions($addon_name);
267
+		// setup DMS
268
+		EE_Register_Addon::_register_data_migration_scripts($addon_name);
269
+		// if config_class is present let's register config.
270
+		EE_Register_Addon::_register_config($addon_name);
271
+		// register admin pages
272
+		EE_Register_Addon::_register_admin_pages($addon_name);
273
+		// add to list of modules to be registered
274
+		EE_Register_Addon::_register_modules($addon_name);
275
+		// add to list of shortcodes to be registered
276
+		EE_Register_Addon::_register_shortcodes($addon_name);
277
+		// add to list of widgets to be registered
278
+		EE_Register_Addon::_register_widgets($addon_name);
279
+		// register capability related stuff.
280
+		EE_Register_Addon::_register_capabilities($addon_name);
281
+		// any message type to register?
282
+		EE_Register_Addon::_register_message_types($addon_name);
283
+		// any custom post type/ custom capabilities or default terms to register
284
+		EE_Register_Addon::_register_custom_post_types($addon_name);
285
+		// and any payment methods
286
+		EE_Register_Addon::_register_payment_methods($addon_name);
287
+		// load and instantiate main addon class
288
+		$addon = EE_Register_Addon::_load_and_init_addon_class($addon_name);
289
+		//delay calling after_registration hook on each addon until after all add-ons have been registered.
290
+		add_action('AHEE__EE_System__load_espresso_addons__complete', array($addon, 'after_registration'), 999);
291
+	}
292 292
 
293 293
 
294
-    /**
295
-     * @param string $addon_name
296
-     * @param array  $setup_args
297
-     * @return void
298
-     * @throws EE_Error
299
-     */
300
-    private static function _verify_parameters($addon_name, array $setup_args)
301
-    {
302
-        // required fields MUST be present, so let's make sure they are.
303
-        if (empty($addon_name) || ! is_array($setup_args)) {
304
-            throw new EE_Error(
305
-                __(
306
-                    '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.',
307
-                    'event_espresso'
308
-                )
309
-            );
310
-        }
311
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
312
-            throw new EE_Error(
313
-                sprintf(
314
-                    __(
315
-                        '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',
316
-                        'event_espresso'
317
-                    ),
318
-                    implode(',', array_keys($setup_args))
319
-                )
320
-            );
321
-        }
322
-        // check that addon has not already been registered with that name
323
-        if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
324
-            throw new EE_Error(
325
-                sprintf(
326
-                    __(
327
-                        'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
328
-                        'event_espresso'
329
-                    ),
330
-                    $addon_name
331
-                )
332
-            );
333
-        }
334
-    }
294
+	/**
295
+	 * @param string $addon_name
296
+	 * @param array  $setup_args
297
+	 * @return void
298
+	 * @throws EE_Error
299
+	 */
300
+	private static function _verify_parameters($addon_name, array $setup_args)
301
+	{
302
+		// required fields MUST be present, so let's make sure they are.
303
+		if (empty($addon_name) || ! is_array($setup_args)) {
304
+			throw new EE_Error(
305
+				__(
306
+					'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.',
307
+					'event_espresso'
308
+				)
309
+			);
310
+		}
311
+		if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
312
+			throw new EE_Error(
313
+				sprintf(
314
+					__(
315
+						'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',
316
+						'event_espresso'
317
+					),
318
+					implode(',', array_keys($setup_args))
319
+				)
320
+			);
321
+		}
322
+		// check that addon has not already been registered with that name
323
+		if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
324
+			throw new EE_Error(
325
+				sprintf(
326
+					__(
327
+						'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
328
+						'event_espresso'
329
+					),
330
+					$addon_name
331
+				)
332
+			);
333
+		}
334
+	}
335 335
 
336 336
 
337
-    /**
338
-     * @param string $addon_name
339
-     * @param array  $setup_args
340
-     * @return string
341
-     */
342
-    private static function _parse_class_name($addon_name, array $setup_args)
343
-    {
344
-        if (empty($setup_args['class_name'])) {
345
-            // generate one by first separating name with spaces
346
-            $class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
347
-            //capitalize, then replace spaces with underscores
348
-            $class_name = str_replace(' ', '_', ucwords($class_name));
349
-        } else {
350
-            $class_name = $setup_args['class_name'];
351
-        }
352
-        // check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
353
-        return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
354
-            ? $class_name
355
-            : 'EE_' . $class_name;
356
-    }
337
+	/**
338
+	 * @param string $addon_name
339
+	 * @param array  $setup_args
340
+	 * @return string
341
+	 */
342
+	private static function _parse_class_name($addon_name, array $setup_args)
343
+	{
344
+		if (empty($setup_args['class_name'])) {
345
+			// generate one by first separating name with spaces
346
+			$class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
347
+			//capitalize, then replace spaces with underscores
348
+			$class_name = str_replace(' ', '_', ucwords($class_name));
349
+		} else {
350
+			$class_name = $setup_args['class_name'];
351
+		}
352
+		// check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
353
+		return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
354
+			? $class_name
355
+			: 'EE_' . $class_name;
356
+	}
357 357
 
358 358
 
359
-    /**
360
-     * @param string $class_name
361
-     * @param array  $setup_args
362
-     * @return array
363
-     */
364
-    private static function _get_addon_settings($class_name, array $setup_args)
365
-    {
366
-        //setup $_settings array from incoming values.
367
-        $addon_settings = array(
368
-            // generated from the addon name, changes something like "calendar" to "EE_Calendar"
369
-            'class_name'            => $class_name,
370
-            // the addon slug for use in URLs, etc
371
-            'plugin_slug'           => isset($setup_args['plugin_slug'])
372
-                ? (string) $setup_args['plugin_slug']
373
-                : '',
374
-            // page slug to be used when generating the "Settings" link on the WP plugin page
375
-            'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
376
-                ? (string) $setup_args['plugin_action_slug']
377
-                : '',
378
-            // the "software" version for the addon
379
-            'version'               => isset($setup_args['version'])
380
-                ? (string) $setup_args['version']
381
-                : '',
382
-            // the minimum version of EE Core that the addon will work with
383
-            'min_core_version'      => isset($setup_args['min_core_version'])
384
-                ? (string) $setup_args['min_core_version']
385
-                : '',
386
-            // the minimum version of WordPress that the addon will work with
387
-            'min_wp_version'        => isset($setup_args['min_wp_version'])
388
-                ? (string) $setup_args['min_wp_version']
389
-                : EE_MIN_WP_VER_REQUIRED,
390
-            // full server path to main file (file loaded directly by WP)
391
-            'main_file_path'        => isset($setup_args['main_file_path'])
392
-                ? (string) $setup_args['main_file_path']
393
-                : '',
394
-            // Fully Qualified Class Name for the addon's Domain class
395
-            'domain_fqcn'           => isset($setup_args['domain_fqcn'])
396
-                ? (string) $setup_args['domain_fqcn']
397
-                : '',
398
-            // path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
399
-            'admin_path'            => isset($setup_args['admin_path'])
400
-                ? (string) $setup_args['admin_path'] : '',
401
-            // a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
402
-            'admin_callback'        => isset($setup_args['admin_callback'])
403
-                ? (string) $setup_args['admin_callback']
404
-                : '',
405
-            // the section name for this addon's configuration settings section (defaults to "addons")
406
-            'config_section'        => isset($setup_args['config_section'])
407
-                ? (string) $setup_args['config_section']
408
-                : 'addons',
409
-            // the class name for this addon's configuration settings object
410
-            'config_class'          => isset($setup_args['config_class'])
411
-                ? (string) $setup_args['config_class'] : '',
412
-            //the name given to the config for this addons' configuration settings object (optional)
413
-            'config_name'           => isset($setup_args['config_name'])
414
-                ? (string) $setup_args['config_name'] : '',
415
-            // an array of "class names" => "full server paths" for any classes that might be invoked by the addon
416
-            'autoloader_paths'      => isset($setup_args['autoloader_paths'])
417
-                ? (array) $setup_args['autoloader_paths']
418
-                : array(),
419
-            // an array of  "full server paths" for any folders containing classes that might be invoked by the addon
420
-            'autoloader_folders'    => isset($setup_args['autoloader_folders'])
421
-                ? (array) $setup_args['autoloader_folders']
422
-                : array(),
423
-            // array of full server paths to any EE_DMS data migration scripts used by the addon
424
-            'dms_paths'             => isset($setup_args['dms_paths'])
425
-                ? (array) $setup_args['dms_paths']
426
-                : array(),
427
-            // array of full server paths to any EED_Modules used by the addon
428
-            'module_paths'          => isset($setup_args['module_paths'])
429
-                ? (array) $setup_args['module_paths']
430
-                : array(),
431
-            // array of full server paths to any EES_Shortcodes used by the addon
432
-            'shortcode_paths'       => isset($setup_args['shortcode_paths'])
433
-                ? (array) $setup_args['shortcode_paths']
434
-                : array(),
435
-            'shortcode_fqcns'       => isset($setup_args['shortcode_fqcns'])
436
-                ? (array) $setup_args['shortcode_fqcns']
437
-                : array(),
438
-            // array of full server paths to any WP_Widgets used by the addon
439
-            'widget_paths'          => isset($setup_args['widget_paths'])
440
-                ? (array) $setup_args['widget_paths']
441
-                : array(),
442
-            // array of PUE options used by the addon
443
-            'pue_options'           => isset($setup_args['pue_options'])
444
-                ? (array) $setup_args['pue_options']
445
-                : array(),
446
-            'message_types'         => isset($setup_args['message_types'])
447
-                ? (array) $setup_args['message_types']
448
-                : array(),
449
-            'capabilities'          => isset($setup_args['capabilities'])
450
-                ? (array) $setup_args['capabilities']
451
-                : array(),
452
-            'capability_maps'       => isset($setup_args['capability_maps'])
453
-                ? (array) $setup_args['capability_maps']
454
-                : array(),
455
-            'model_paths'           => isset($setup_args['model_paths'])
456
-                ? (array) $setup_args['model_paths']
457
-                : array(),
458
-            'class_paths'           => isset($setup_args['class_paths'])
459
-                ? (array) $setup_args['class_paths']
460
-                : array(),
461
-            'model_extension_paths' => isset($setup_args['model_extension_paths'])
462
-                ? (array) $setup_args['model_extension_paths']
463
-                : array(),
464
-            'class_extension_paths' => isset($setup_args['class_extension_paths'])
465
-                ? (array) $setup_args['class_extension_paths']
466
-                : array(),
467
-            'custom_post_types'     => isset($setup_args['custom_post_types'])
468
-                ? (array) $setup_args['custom_post_types']
469
-                : array(),
470
-            'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
471
-                ? (array) $setup_args['custom_taxonomies']
472
-                : array(),
473
-            'payment_method_paths'  => isset($setup_args['payment_method_paths'])
474
-                ? (array) $setup_args['payment_method_paths']
475
-                : array(),
476
-            'default_terms'         => isset($setup_args['default_terms'])
477
-                ? (array) $setup_args['default_terms']
478
-                : array(),
479
-            // if not empty, inserts a new table row after this plugin's row on the WP Plugins page
480
-            // that can be used for adding upgrading/marketing info
481
-            'plugins_page_row'      => isset($setup_args['plugins_page_row'])
482
-                ? $setup_args['plugins_page_row']
483
-                : '',
484
-            'namespace'             => isset(
485
-                $setup_args['namespace']['FQNS'],
486
-                $setup_args['namespace']['DIR']
487
-            )
488
-                ? (array) $setup_args['namespace']
489
-                : array(),
490
-        );
491
-        // if plugin_action_slug is NOT set, but an admin page path IS set,
492
-        // then let's just use the plugin_slug since that will be used for linking to the admin page
493
-        $addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
494
-                                                && ! empty($addon_settings['admin_path'])
495
-            ? $addon_settings['plugin_slug']
496
-            : $addon_settings['plugin_action_slug'];
497
-        // full server path to main file (file loaded directly by WP)
498
-        $addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
499
-        return $addon_settings;
500
-    }
359
+	/**
360
+	 * @param string $class_name
361
+	 * @param array  $setup_args
362
+	 * @return array
363
+	 */
364
+	private static function _get_addon_settings($class_name, array $setup_args)
365
+	{
366
+		//setup $_settings array from incoming values.
367
+		$addon_settings = array(
368
+			// generated from the addon name, changes something like "calendar" to "EE_Calendar"
369
+			'class_name'            => $class_name,
370
+			// the addon slug for use in URLs, etc
371
+			'plugin_slug'           => isset($setup_args['plugin_slug'])
372
+				? (string) $setup_args['plugin_slug']
373
+				: '',
374
+			// page slug to be used when generating the "Settings" link on the WP plugin page
375
+			'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
376
+				? (string) $setup_args['plugin_action_slug']
377
+				: '',
378
+			// the "software" version for the addon
379
+			'version'               => isset($setup_args['version'])
380
+				? (string) $setup_args['version']
381
+				: '',
382
+			// the minimum version of EE Core that the addon will work with
383
+			'min_core_version'      => isset($setup_args['min_core_version'])
384
+				? (string) $setup_args['min_core_version']
385
+				: '',
386
+			// the minimum version of WordPress that the addon will work with
387
+			'min_wp_version'        => isset($setup_args['min_wp_version'])
388
+				? (string) $setup_args['min_wp_version']
389
+				: EE_MIN_WP_VER_REQUIRED,
390
+			// full server path to main file (file loaded directly by WP)
391
+			'main_file_path'        => isset($setup_args['main_file_path'])
392
+				? (string) $setup_args['main_file_path']
393
+				: '',
394
+			// Fully Qualified Class Name for the addon's Domain class
395
+			'domain_fqcn'           => isset($setup_args['domain_fqcn'])
396
+				? (string) $setup_args['domain_fqcn']
397
+				: '',
398
+			// path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
399
+			'admin_path'            => isset($setup_args['admin_path'])
400
+				? (string) $setup_args['admin_path'] : '',
401
+			// a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
402
+			'admin_callback'        => isset($setup_args['admin_callback'])
403
+				? (string) $setup_args['admin_callback']
404
+				: '',
405
+			// the section name for this addon's configuration settings section (defaults to "addons")
406
+			'config_section'        => isset($setup_args['config_section'])
407
+				? (string) $setup_args['config_section']
408
+				: 'addons',
409
+			// the class name for this addon's configuration settings object
410
+			'config_class'          => isset($setup_args['config_class'])
411
+				? (string) $setup_args['config_class'] : '',
412
+			//the name given to the config for this addons' configuration settings object (optional)
413
+			'config_name'           => isset($setup_args['config_name'])
414
+				? (string) $setup_args['config_name'] : '',
415
+			// an array of "class names" => "full server paths" for any classes that might be invoked by the addon
416
+			'autoloader_paths'      => isset($setup_args['autoloader_paths'])
417
+				? (array) $setup_args['autoloader_paths']
418
+				: array(),
419
+			// an array of  "full server paths" for any folders containing classes that might be invoked by the addon
420
+			'autoloader_folders'    => isset($setup_args['autoloader_folders'])
421
+				? (array) $setup_args['autoloader_folders']
422
+				: array(),
423
+			// array of full server paths to any EE_DMS data migration scripts used by the addon
424
+			'dms_paths'             => isset($setup_args['dms_paths'])
425
+				? (array) $setup_args['dms_paths']
426
+				: array(),
427
+			// array of full server paths to any EED_Modules used by the addon
428
+			'module_paths'          => isset($setup_args['module_paths'])
429
+				? (array) $setup_args['module_paths']
430
+				: array(),
431
+			// array of full server paths to any EES_Shortcodes used by the addon
432
+			'shortcode_paths'       => isset($setup_args['shortcode_paths'])
433
+				? (array) $setup_args['shortcode_paths']
434
+				: array(),
435
+			'shortcode_fqcns'       => isset($setup_args['shortcode_fqcns'])
436
+				? (array) $setup_args['shortcode_fqcns']
437
+				: array(),
438
+			// array of full server paths to any WP_Widgets used by the addon
439
+			'widget_paths'          => isset($setup_args['widget_paths'])
440
+				? (array) $setup_args['widget_paths']
441
+				: array(),
442
+			// array of PUE options used by the addon
443
+			'pue_options'           => isset($setup_args['pue_options'])
444
+				? (array) $setup_args['pue_options']
445
+				: array(),
446
+			'message_types'         => isset($setup_args['message_types'])
447
+				? (array) $setup_args['message_types']
448
+				: array(),
449
+			'capabilities'          => isset($setup_args['capabilities'])
450
+				? (array) $setup_args['capabilities']
451
+				: array(),
452
+			'capability_maps'       => isset($setup_args['capability_maps'])
453
+				? (array) $setup_args['capability_maps']
454
+				: array(),
455
+			'model_paths'           => isset($setup_args['model_paths'])
456
+				? (array) $setup_args['model_paths']
457
+				: array(),
458
+			'class_paths'           => isset($setup_args['class_paths'])
459
+				? (array) $setup_args['class_paths']
460
+				: array(),
461
+			'model_extension_paths' => isset($setup_args['model_extension_paths'])
462
+				? (array) $setup_args['model_extension_paths']
463
+				: array(),
464
+			'class_extension_paths' => isset($setup_args['class_extension_paths'])
465
+				? (array) $setup_args['class_extension_paths']
466
+				: array(),
467
+			'custom_post_types'     => isset($setup_args['custom_post_types'])
468
+				? (array) $setup_args['custom_post_types']
469
+				: array(),
470
+			'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
471
+				? (array) $setup_args['custom_taxonomies']
472
+				: array(),
473
+			'payment_method_paths'  => isset($setup_args['payment_method_paths'])
474
+				? (array) $setup_args['payment_method_paths']
475
+				: array(),
476
+			'default_terms'         => isset($setup_args['default_terms'])
477
+				? (array) $setup_args['default_terms']
478
+				: array(),
479
+			// if not empty, inserts a new table row after this plugin's row on the WP Plugins page
480
+			// that can be used for adding upgrading/marketing info
481
+			'plugins_page_row'      => isset($setup_args['plugins_page_row'])
482
+				? $setup_args['plugins_page_row']
483
+				: '',
484
+			'namespace'             => isset(
485
+				$setup_args['namespace']['FQNS'],
486
+				$setup_args['namespace']['DIR']
487
+			)
488
+				? (array) $setup_args['namespace']
489
+				: array(),
490
+		);
491
+		// if plugin_action_slug is NOT set, but an admin page path IS set,
492
+		// then let's just use the plugin_slug since that will be used for linking to the admin page
493
+		$addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
494
+												&& ! empty($addon_settings['admin_path'])
495
+			? $addon_settings['plugin_slug']
496
+			: $addon_settings['plugin_action_slug'];
497
+		// full server path to main file (file loaded directly by WP)
498
+		$addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
499
+		return $addon_settings;
500
+	}
501 501
 
502 502
 
503
-    /**
504
-     * @param string $addon_name
505
-     * @param array  $addon_settings
506
-     * @return boolean
507
-     */
508
-    private static function _addon_is_compatible($addon_name, array $addon_settings)
509
-    {
510
-        global $wp_version;
511
-        $incompatibility_message = '';
512
-        //check whether this addon version is compatible with EE core
513
-        if (
514
-            isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
515
-            && ! self::_meets_min_core_version_requirement(
516
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
517
-                $addon_settings['version']
518
-            )
519
-        ) {
520
-            $incompatibility_message = sprintf(
521
-                __(
522
-                    '%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.'
523
-                ),
524
-                $addon_name,
525
-                '<br />',
526
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
527
-                '<span style="font-weight: bold; color: #D54E21;">',
528
-                '</span><br />'
529
-            );
530
-        } elseif (
531
-        ! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
532
-        ) {
533
-            $incompatibility_message = sprintf(
534
-                __(
535
-                    '%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".',
536
-                    'event_espresso'
537
-                ),
538
-                $addon_name,
539
-                self::_effective_version($addon_settings['min_core_version']),
540
-                self::_effective_version(espresso_version()),
541
-                '<br />',
542
-                '<span style="font-weight: bold; color: #D54E21;">',
543
-                '</span><br />'
544
-            );
545
-        } elseif (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
546
-            $incompatibility_message = sprintf(
547
-                __(
548
-                    '%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.',
549
-                    'event_espresso'
550
-                ),
551
-                $addon_name,
552
-                $addon_settings['min_wp_version'],
553
-                '<br />',
554
-                '<span style="font-weight: bold; color: #D54E21;">',
555
-                '</span><br />'
556
-            );
557
-        }
558
-        if (! empty($incompatibility_message)) {
559
-            // remove 'activate' from the REQUEST
560
-            // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
561
-            unset($_GET['activate'], $_REQUEST['activate']);
562
-            if (current_user_can('activate_plugins')) {
563
-                // show an error message indicating the plugin didn't activate properly
564
-                EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
565
-            }
566
-            // BAIL FROM THE ADDON REGISTRATION PROCESS
567
-            return false;
568
-        }
569
-        // addon IS compatible
570
-        return true;
571
-    }
503
+	/**
504
+	 * @param string $addon_name
505
+	 * @param array  $addon_settings
506
+	 * @return boolean
507
+	 */
508
+	private static function _addon_is_compatible($addon_name, array $addon_settings)
509
+	{
510
+		global $wp_version;
511
+		$incompatibility_message = '';
512
+		//check whether this addon version is compatible with EE core
513
+		if (
514
+			isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
515
+			&& ! self::_meets_min_core_version_requirement(
516
+				EE_Register_Addon::$_incompatible_addons[ $addon_name ],
517
+				$addon_settings['version']
518
+			)
519
+		) {
520
+			$incompatibility_message = sprintf(
521
+				__(
522
+					'%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.'
523
+				),
524
+				$addon_name,
525
+				'<br />',
526
+				EE_Register_Addon::$_incompatible_addons[ $addon_name ],
527
+				'<span style="font-weight: bold; color: #D54E21;">',
528
+				'</span><br />'
529
+			);
530
+		} elseif (
531
+		! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
532
+		) {
533
+			$incompatibility_message = sprintf(
534
+				__(
535
+					'%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".',
536
+					'event_espresso'
537
+				),
538
+				$addon_name,
539
+				self::_effective_version($addon_settings['min_core_version']),
540
+				self::_effective_version(espresso_version()),
541
+				'<br />',
542
+				'<span style="font-weight: bold; color: #D54E21;">',
543
+				'</span><br />'
544
+			);
545
+		} elseif (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
546
+			$incompatibility_message = sprintf(
547
+				__(
548
+					'%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.',
549
+					'event_espresso'
550
+				),
551
+				$addon_name,
552
+				$addon_settings['min_wp_version'],
553
+				'<br />',
554
+				'<span style="font-weight: bold; color: #D54E21;">',
555
+				'</span><br />'
556
+			);
557
+		}
558
+		if (! empty($incompatibility_message)) {
559
+			// remove 'activate' from the REQUEST
560
+			// so WP doesn't erroneously tell the user the plugin activated fine when it didn't
561
+			unset($_GET['activate'], $_REQUEST['activate']);
562
+			if (current_user_can('activate_plugins')) {
563
+				// show an error message indicating the plugin didn't activate properly
564
+				EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
565
+			}
566
+			// BAIL FROM THE ADDON REGISTRATION PROCESS
567
+			return false;
568
+		}
569
+		// addon IS compatible
570
+		return true;
571
+	}
572 572
 
573 573
 
574
-    /**
575
-     * if plugin update engine is being used for auto-updates,
576
-     * then let's set that up now before going any further so that ALL addons can be updated
577
-     * (not needed if PUE is not being used)
578
-     *
579
-     * @param string $addon_name
580
-     * @param string $class_name
581
-     * @param array  $setup_args
582
-     * @return void
583
-     */
584
-    private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
585
-    {
586
-        if (! empty($setup_args['pue_options'])) {
587
-            self::$_settings[ $addon_name ]['pue_options'] = array(
588
-                'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
589
-                    ? (string) $setup_args['pue_options']['pue_plugin_slug']
590
-                    : 'espresso_' . strtolower($class_name),
591
-                'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
592
-                    ? (string) $setup_args['pue_options']['plugin_basename']
593
-                    : plugin_basename($setup_args['main_file_path']),
594
-                'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
595
-                    ? (string) $setup_args['pue_options']['checkPeriod']
596
-                    : '24',
597
-                'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
598
-                    ? (string) $setup_args['pue_options']['use_wp_update']
599
-                    : false,
600
-            );
601
-            add_action(
602
-                'AHEE__EE_System__brew_espresso__after_pue_init',
603
-                array('EE_Register_Addon', 'load_pue_update')
604
-            );
605
-        }
606
-    }
574
+	/**
575
+	 * if plugin update engine is being used for auto-updates,
576
+	 * then let's set that up now before going any further so that ALL addons can be updated
577
+	 * (not needed if PUE is not being used)
578
+	 *
579
+	 * @param string $addon_name
580
+	 * @param string $class_name
581
+	 * @param array  $setup_args
582
+	 * @return void
583
+	 */
584
+	private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
585
+	{
586
+		if (! empty($setup_args['pue_options'])) {
587
+			self::$_settings[ $addon_name ]['pue_options'] = array(
588
+				'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
589
+					? (string) $setup_args['pue_options']['pue_plugin_slug']
590
+					: 'espresso_' . strtolower($class_name),
591
+				'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
592
+					? (string) $setup_args['pue_options']['plugin_basename']
593
+					: plugin_basename($setup_args['main_file_path']),
594
+				'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
595
+					? (string) $setup_args['pue_options']['checkPeriod']
596
+					: '24',
597
+				'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
598
+					? (string) $setup_args['pue_options']['use_wp_update']
599
+					: false,
600
+			);
601
+			add_action(
602
+				'AHEE__EE_System__brew_espresso__after_pue_init',
603
+				array('EE_Register_Addon', 'load_pue_update')
604
+			);
605
+		}
606
+	}
607 607
 
608 608
 
609
-    /**
610
-     * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
611
-     *
612
-     * @param array $addon_settings
613
-     * @return void
614
-     */
615
-    private static function _setup_namespaces(array $addon_settings)
616
-    {
617
-        //
618
-        if (
619
-        isset(
620
-            $addon_settings['namespace']['FQNS'],
621
-            $addon_settings['namespace']['DIR']
622
-        )
623
-        ) {
624
-            EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
625
-                $addon_settings['namespace']['FQNS'],
626
-                $addon_settings['namespace']['DIR']
627
-            );
628
-        }
629
-    }
609
+	/**
610
+	 * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
611
+	 *
612
+	 * @param array $addon_settings
613
+	 * @return void
614
+	 */
615
+	private static function _setup_namespaces(array $addon_settings)
616
+	{
617
+		//
618
+		if (
619
+		isset(
620
+			$addon_settings['namespace']['FQNS'],
621
+			$addon_settings['namespace']['DIR']
622
+		)
623
+		) {
624
+			EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
625
+				$addon_settings['namespace']['FQNS'],
626
+				$addon_settings['namespace']['DIR']
627
+			);
628
+		}
629
+	}
630 630
 
631 631
 
632
-    /**
633
-     * @param string $addon_name
634
-     * @param array  $addon_settings
635
-     * @return bool
636
-     * @throws EE_Error
637
-     * @throws InvalidArgumentException
638
-     * @throws ReflectionException
639
-     * @throws InvalidDataTypeException
640
-     * @throws InvalidInterfaceException
641
-     */
642
-    private static function _addon_activation($addon_name, array $addon_settings)
643
-    {
644
-        // this is an activation request
645
-        if (did_action('activate_plugin')) {
646
-            //to find if THIS is the addon that was activated, just check if we have already registered it or not
647
-            //(as the newly-activated addon wasn't around the first time addons were registered).
648
-            //Note: the presence of pue_options in the addon registration options will initialize the $_settings
649
-            //property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
650
-            if (! isset(self::$_settings[ $addon_name ])
651
-                || (isset(self::$_settings[ $addon_name ])
652
-                    && ! isset(self::$_settings[ $addon_name ]['class_name'])
653
-                )
654
-            ) {
655
-                self::$_settings[ $addon_name ] = $addon_settings;
656
-                $addon                          = self::_load_and_init_addon_class($addon_name);
657
-                $addon->set_activation_indicator_option();
658
-                // dont bother setting up the rest of the addon.
659
-                // we know it was just activated and the request will end soon
660
-            }
661
-            return true;
662
-        }
663
-        // make sure this was called in the right place!
664
-        if (
665
-            ! did_action('AHEE__EE_System__load_espresso_addons')
666
-            || did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
667
-        ) {
668
-            EE_Error::doing_it_wrong(
669
-                __METHOD__,
670
-                sprintf(
671
-                    __(
672
-                        '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.',
673
-                        'event_espresso'
674
-                    ),
675
-                    $addon_name
676
-                ),
677
-                '4.3.0'
678
-            );
679
-        }
680
-        // make sure addon settings are set correctly without overwriting anything existing
681
-        if (isset(self::$_settings[ $addon_name ])) {
682
-            self::$_settings[ $addon_name ] += $addon_settings;
683
-        } else {
684
-            self::$_settings[ $addon_name ] = $addon_settings;
685
-        }
686
-        return false;
687
-    }
632
+	/**
633
+	 * @param string $addon_name
634
+	 * @param array  $addon_settings
635
+	 * @return bool
636
+	 * @throws EE_Error
637
+	 * @throws InvalidArgumentException
638
+	 * @throws ReflectionException
639
+	 * @throws InvalidDataTypeException
640
+	 * @throws InvalidInterfaceException
641
+	 */
642
+	private static function _addon_activation($addon_name, array $addon_settings)
643
+	{
644
+		// this is an activation request
645
+		if (did_action('activate_plugin')) {
646
+			//to find if THIS is the addon that was activated, just check if we have already registered it or not
647
+			//(as the newly-activated addon wasn't around the first time addons were registered).
648
+			//Note: the presence of pue_options in the addon registration options will initialize the $_settings
649
+			//property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
650
+			if (! isset(self::$_settings[ $addon_name ])
651
+				|| (isset(self::$_settings[ $addon_name ])
652
+					&& ! isset(self::$_settings[ $addon_name ]['class_name'])
653
+				)
654
+			) {
655
+				self::$_settings[ $addon_name ] = $addon_settings;
656
+				$addon                          = self::_load_and_init_addon_class($addon_name);
657
+				$addon->set_activation_indicator_option();
658
+				// dont bother setting up the rest of the addon.
659
+				// we know it was just activated and the request will end soon
660
+			}
661
+			return true;
662
+		}
663
+		// make sure this was called in the right place!
664
+		if (
665
+			! did_action('AHEE__EE_System__load_espresso_addons')
666
+			|| did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
667
+		) {
668
+			EE_Error::doing_it_wrong(
669
+				__METHOD__,
670
+				sprintf(
671
+					__(
672
+						'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.',
673
+						'event_espresso'
674
+					),
675
+					$addon_name
676
+				),
677
+				'4.3.0'
678
+			);
679
+		}
680
+		// make sure addon settings are set correctly without overwriting anything existing
681
+		if (isset(self::$_settings[ $addon_name ])) {
682
+			self::$_settings[ $addon_name ] += $addon_settings;
683
+		} else {
684
+			self::$_settings[ $addon_name ] = $addon_settings;
685
+		}
686
+		return false;
687
+	}
688 688
 
689 689
 
690
-    /**
691
-     * @param string $addon_name
692
-     * @return void
693
-     * @throws EE_Error
694
-     */
695
-    private static function _setup_autoloaders($addon_name)
696
-    {
697
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
698
-            // setup autoloader for single file
699
-            EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
700
-        }
701
-        // setup autoloaders for folders
702
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
703
-            foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
704
-                EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
705
-            }
706
-        }
707
-    }
690
+	/**
691
+	 * @param string $addon_name
692
+	 * @return void
693
+	 * @throws EE_Error
694
+	 */
695
+	private static function _setup_autoloaders($addon_name)
696
+	{
697
+		if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
698
+			// setup autoloader for single file
699
+			EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
700
+		}
701
+		// setup autoloaders for folders
702
+		if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
703
+			foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
704
+				EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
705
+			}
706
+		}
707
+	}
708 708
 
709 709
 
710
-    /**
711
-     * register new models and extensions
712
-     *
713
-     * @param string $addon_name
714
-     * @return void
715
-     * @throws EE_Error
716
-     */
717
-    private static function _register_models_and_extensions($addon_name)
718
-    {
719
-        // register new models
720
-        if (
721
-            ! empty(self::$_settings[ $addon_name ]['model_paths'])
722
-            || ! empty(self::$_settings[ $addon_name ]['class_paths'])
723
-        ) {
724
-            EE_Register_Model::register(
725
-                $addon_name,
726
-                array(
727
-                    'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
728
-                    'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
729
-                )
730
-            );
731
-        }
732
-        // register model extensions
733
-        if (
734
-            ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
735
-            || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
736
-        ) {
737
-            EE_Register_Model_Extensions::register(
738
-                $addon_name,
739
-                array(
740
-                    'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
741
-                    'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
742
-                )
743
-            );
744
-        }
745
-    }
710
+	/**
711
+	 * register new models and extensions
712
+	 *
713
+	 * @param string $addon_name
714
+	 * @return void
715
+	 * @throws EE_Error
716
+	 */
717
+	private static function _register_models_and_extensions($addon_name)
718
+	{
719
+		// register new models
720
+		if (
721
+			! empty(self::$_settings[ $addon_name ]['model_paths'])
722
+			|| ! empty(self::$_settings[ $addon_name ]['class_paths'])
723
+		) {
724
+			EE_Register_Model::register(
725
+				$addon_name,
726
+				array(
727
+					'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
728
+					'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
729
+				)
730
+			);
731
+		}
732
+		// register model extensions
733
+		if (
734
+			! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
735
+			|| ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
736
+		) {
737
+			EE_Register_Model_Extensions::register(
738
+				$addon_name,
739
+				array(
740
+					'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
741
+					'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
742
+				)
743
+			);
744
+		}
745
+	}
746 746
 
747 747
 
748
-    /**
749
-     * @param string $addon_name
750
-     * @return void
751
-     * @throws EE_Error
752
-     */
753
-    private static function _register_data_migration_scripts($addon_name)
754
-    {
755
-        // setup DMS
756
-        if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
757
-            EE_Register_Data_Migration_Scripts::register(
758
-                $addon_name,
759
-                array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
760
-            );
761
-        }
762
-    }
748
+	/**
749
+	 * @param string $addon_name
750
+	 * @return void
751
+	 * @throws EE_Error
752
+	 */
753
+	private static function _register_data_migration_scripts($addon_name)
754
+	{
755
+		// setup DMS
756
+		if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
757
+			EE_Register_Data_Migration_Scripts::register(
758
+				$addon_name,
759
+				array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
760
+			);
761
+		}
762
+	}
763 763
 
764 764
 
765
-    /**
766
-     * @param string $addon_name
767
-     * @return void
768
-     * @throws EE_Error
769
-     */
770
-    private static function _register_config($addon_name)
771
-    {
772
-        // if config_class is present let's register config.
773
-        if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
774
-            EE_Register_Config::register(
775
-                self::$_settings[ $addon_name ]['config_class'],
776
-                array(
777
-                    'config_section' => self::$_settings[ $addon_name ]['config_section'],
778
-                    'config_name'    => self::$_settings[ $addon_name ]['config_name'],
779
-                )
780
-            );
781
-        }
782
-    }
765
+	/**
766
+	 * @param string $addon_name
767
+	 * @return void
768
+	 * @throws EE_Error
769
+	 */
770
+	private static function _register_config($addon_name)
771
+	{
772
+		// if config_class is present let's register config.
773
+		if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
774
+			EE_Register_Config::register(
775
+				self::$_settings[ $addon_name ]['config_class'],
776
+				array(
777
+					'config_section' => self::$_settings[ $addon_name ]['config_section'],
778
+					'config_name'    => self::$_settings[ $addon_name ]['config_name'],
779
+				)
780
+			);
781
+		}
782
+	}
783 783
 
784 784
 
785
-    /**
786
-     * @param string $addon_name
787
-     * @return void
788
-     * @throws EE_Error
789
-     */
790
-    private static function _register_admin_pages($addon_name)
791
-    {
792
-        if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
793
-            EE_Register_Admin_Page::register(
794
-                $addon_name,
795
-                array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
796
-            );
797
-        }
798
-    }
785
+	/**
786
+	 * @param string $addon_name
787
+	 * @return void
788
+	 * @throws EE_Error
789
+	 */
790
+	private static function _register_admin_pages($addon_name)
791
+	{
792
+		if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
793
+			EE_Register_Admin_Page::register(
794
+				$addon_name,
795
+				array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
796
+			);
797
+		}
798
+	}
799 799
 
800 800
 
801
-    /**
802
-     * @param string $addon_name
803
-     * @return void
804
-     * @throws EE_Error
805
-     */
806
-    private static function _register_modules($addon_name)
807
-    {
808
-        if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
809
-            EE_Register_Module::register(
810
-                $addon_name,
811
-                array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
812
-            );
813
-        }
814
-    }
801
+	/**
802
+	 * @param string $addon_name
803
+	 * @return void
804
+	 * @throws EE_Error
805
+	 */
806
+	private static function _register_modules($addon_name)
807
+	{
808
+		if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
809
+			EE_Register_Module::register(
810
+				$addon_name,
811
+				array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
812
+			);
813
+		}
814
+	}
815 815
 
816 816
 
817
-    /**
818
-     * @param string $addon_name
819
-     * @return void
820
-     * @throws EE_Error
821
-     */
822
-    private static function _register_shortcodes($addon_name)
823
-    {
824
-        if (! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
825
-            || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
826
-        ) {
827
-            EE_Register_Shortcode::register(
828
-                $addon_name,
829
-                array(
830
-                    'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
831
-                        ? self::$_settings[ $addon_name ]['shortcode_paths']
832
-                        : array(),
833
-                    'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
834
-                        ? self::$_settings[ $addon_name ]['shortcode_fqcns']
835
-                        : array(),
836
-                )
837
-            );
838
-        }
839
-    }
817
+	/**
818
+	 * @param string $addon_name
819
+	 * @return void
820
+	 * @throws EE_Error
821
+	 */
822
+	private static function _register_shortcodes($addon_name)
823
+	{
824
+		if (! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
825
+			|| ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
826
+		) {
827
+			EE_Register_Shortcode::register(
828
+				$addon_name,
829
+				array(
830
+					'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
831
+						? self::$_settings[ $addon_name ]['shortcode_paths']
832
+						: array(),
833
+					'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
834
+						? self::$_settings[ $addon_name ]['shortcode_fqcns']
835
+						: array(),
836
+				)
837
+			);
838
+		}
839
+	}
840 840
 
841 841
 
842
-    /**
843
-     * @param string $addon_name
844
-     * @return void
845
-     * @throws EE_Error
846
-     */
847
-    private static function _register_widgets($addon_name)
848
-    {
849
-        if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
850
-            EE_Register_Widget::register(
851
-                $addon_name,
852
-                array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
853
-            );
854
-        }
855
-    }
842
+	/**
843
+	 * @param string $addon_name
844
+	 * @return void
845
+	 * @throws EE_Error
846
+	 */
847
+	private static function _register_widgets($addon_name)
848
+	{
849
+		if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
850
+			EE_Register_Widget::register(
851
+				$addon_name,
852
+				array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
853
+			);
854
+		}
855
+	}
856 856
 
857 857
 
858
-    /**
859
-     * @param string $addon_name
860
-     * @return void
861
-     * @throws EE_Error
862
-     */
863
-    private static function _register_capabilities($addon_name)
864
-    {
865
-        if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
866
-            EE_Register_Capabilities::register(
867
-                $addon_name,
868
-                array(
869
-                    'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
870
-                    'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
871
-                )
872
-            );
873
-        }
874
-    }
858
+	/**
859
+	 * @param string $addon_name
860
+	 * @return void
861
+	 * @throws EE_Error
862
+	 */
863
+	private static function _register_capabilities($addon_name)
864
+	{
865
+		if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
866
+			EE_Register_Capabilities::register(
867
+				$addon_name,
868
+				array(
869
+					'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
870
+					'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
871
+				)
872
+			);
873
+		}
874
+	}
875 875
 
876 876
 
877
-    /**
878
-     * @param string $addon_name
879
-     * @return void
880
-     * @throws EE_Error
881
-     */
882
-    private static function _register_message_types($addon_name)
883
-    {
884
-        if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
885
-            add_action(
886
-                'EE_Brewing_Regular___messages_caf',
887
-                array('EE_Register_Addon', 'register_message_types')
888
-            );
889
-        }
890
-    }
877
+	/**
878
+	 * @param string $addon_name
879
+	 * @return void
880
+	 * @throws EE_Error
881
+	 */
882
+	private static function _register_message_types($addon_name)
883
+	{
884
+		if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
885
+			add_action(
886
+				'EE_Brewing_Regular___messages_caf',
887
+				array('EE_Register_Addon', 'register_message_types')
888
+			);
889
+		}
890
+	}
891 891
 
892 892
 
893
-    /**
894
-     * @param string $addon_name
895
-     * @return void
896
-     * @throws EE_Error
897
-     */
898
-    private static function _register_custom_post_types($addon_name)
899
-    {
900
-        if (
901
-            ! empty(self::$_settings[ $addon_name ]['custom_post_types'])
902
-            || ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
903
-        ) {
904
-            EE_Register_CPT::register(
905
-                $addon_name,
906
-                array(
907
-                    'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
908
-                    'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
909
-                    'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
910
-                )
911
-            );
912
-        }
913
-    }
893
+	/**
894
+	 * @param string $addon_name
895
+	 * @return void
896
+	 * @throws EE_Error
897
+	 */
898
+	private static function _register_custom_post_types($addon_name)
899
+	{
900
+		if (
901
+			! empty(self::$_settings[ $addon_name ]['custom_post_types'])
902
+			|| ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
903
+		) {
904
+			EE_Register_CPT::register(
905
+				$addon_name,
906
+				array(
907
+					'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
908
+					'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
909
+					'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
910
+				)
911
+			);
912
+		}
913
+	}
914 914
 
915 915
 
916
-    /**
917
-     * @param string $addon_name
918
-     * @return void
919
-     * @throws InvalidArgumentException
920
-     * @throws InvalidInterfaceException
921
-     * @throws InvalidDataTypeException
922
-     * @throws DomainException
923
-     * @throws EE_Error
924
-     */
925
-    private static function _register_payment_methods($addon_name)
926
-    {
927
-        if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
928
-            EE_Register_Payment_Method::register(
929
-                $addon_name,
930
-                array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
931
-            );
932
-        }
933
-    }
916
+	/**
917
+	 * @param string $addon_name
918
+	 * @return void
919
+	 * @throws InvalidArgumentException
920
+	 * @throws InvalidInterfaceException
921
+	 * @throws InvalidDataTypeException
922
+	 * @throws DomainException
923
+	 * @throws EE_Error
924
+	 */
925
+	private static function _register_payment_methods($addon_name)
926
+	{
927
+		if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
928
+			EE_Register_Payment_Method::register(
929
+				$addon_name,
930
+				array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
931
+			);
932
+		}
933
+	}
934 934
 
935 935
 
936
-    /**
937
-     * Loads and instantiates the EE_Addon class and adds it onto the registry
938
-     *
939
-     * @param string $addon_name
940
-     * @return EE_Addon
941
-     * @throws InvalidArgumentException
942
-     * @throws InvalidInterfaceException
943
-     * @throws InvalidDataTypeException
944
-     * @throws ReflectionException
945
-     * @throws EE_Error
946
-     */
947
-    private static function _load_and_init_addon_class($addon_name)
948
-    {
949
-        $loader = EventEspresso\core\services\loaders\LoaderFactory::getLoader();
950
-        $addon = $loader->getShared(
951
-            self::$_settings[ $addon_name ]['class_name'],
952
-            array('EE_Registry::create(addon)' => true)
953
-        );
954
-        // setter inject dep map if required
955
-        if($addon instanceof RequiresDependencyMapInterface && $addon->dependencyMap() === null){
956
-            $addon->setDependencyMap($loader->getShared('EE_Dependency_Map'));
957
-        }
958
-        // setter inject domain if required
959
-        if(
960
-            $addon instanceof RequiresDomainInterface
961
-            && self::$_settings[ $addon_name ]['domain_fqcn'] !== ''
962
-            && $addon->domain() === null
963
-        ){
964
-            $addon->setDomain(
965
-                $loader->getShared(
966
-                    self::$_settings[ $addon_name ]['domain_fqcn'],
967
-                    array(
968
-                        self::$_settings[ $addon_name ]['main_file_path'],
969
-                        self::$_settings[ $addon_name ]['version']
970
-                    )
971
-                )
972
-            );
973
-        }
936
+	/**
937
+	 * Loads and instantiates the EE_Addon class and adds it onto the registry
938
+	 *
939
+	 * @param string $addon_name
940
+	 * @return EE_Addon
941
+	 * @throws InvalidArgumentException
942
+	 * @throws InvalidInterfaceException
943
+	 * @throws InvalidDataTypeException
944
+	 * @throws ReflectionException
945
+	 * @throws EE_Error
946
+	 */
947
+	private static function _load_and_init_addon_class($addon_name)
948
+	{
949
+		$loader = EventEspresso\core\services\loaders\LoaderFactory::getLoader();
950
+		$addon = $loader->getShared(
951
+			self::$_settings[ $addon_name ]['class_name'],
952
+			array('EE_Registry::create(addon)' => true)
953
+		);
954
+		// setter inject dep map if required
955
+		if($addon instanceof RequiresDependencyMapInterface && $addon->dependencyMap() === null){
956
+			$addon->setDependencyMap($loader->getShared('EE_Dependency_Map'));
957
+		}
958
+		// setter inject domain if required
959
+		if(
960
+			$addon instanceof RequiresDomainInterface
961
+			&& self::$_settings[ $addon_name ]['domain_fqcn'] !== ''
962
+			&& $addon->domain() === null
963
+		){
964
+			$addon->setDomain(
965
+				$loader->getShared(
966
+					self::$_settings[ $addon_name ]['domain_fqcn'],
967
+					array(
968
+						self::$_settings[ $addon_name ]['main_file_path'],
969
+						self::$_settings[ $addon_name ]['version']
970
+					)
971
+				)
972
+			);
973
+		}
974 974
 
975
-        $addon->set_name($addon_name);
976
-        $addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
977
-        $addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
978
-        $addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
979
-        $addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
980
-        $addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
981
-        $addon->set_version(self::$_settings[ $addon_name ]['version']);
982
-        $addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
983
-        $addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
984
-        $addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
985
-        $addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
986
-        //unfortunately this can't be hooked in upon construction, because we don't have
987
-        //the plugin mainfile's path upon construction.
988
-        register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
989
-        // call any additional admin_callback functions during load_admin_controller hook
990
-        if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
991
-            add_action(
992
-                'AHEE__EE_System__load_controllers__load_admin_controllers',
993
-                array($addon, self::$_settings[ $addon_name ]['admin_callback'])
994
-            );
995
-        }
996
-        return $addon;
997
-    }
975
+		$addon->set_name($addon_name);
976
+		$addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
977
+		$addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
978
+		$addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
979
+		$addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
980
+		$addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
981
+		$addon->set_version(self::$_settings[ $addon_name ]['version']);
982
+		$addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
983
+		$addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
984
+		$addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
985
+		$addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
986
+		//unfortunately this can't be hooked in upon construction, because we don't have
987
+		//the plugin mainfile's path upon construction.
988
+		register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
989
+		// call any additional admin_callback functions during load_admin_controller hook
990
+		if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
991
+			add_action(
992
+				'AHEE__EE_System__load_controllers__load_admin_controllers',
993
+				array($addon, self::$_settings[ $addon_name ]['admin_callback'])
994
+			);
995
+		}
996
+		return $addon;
997
+	}
998 998
 
999 999
 
1000
-    /**
1001
-     *    load_pue_update - Update notifications
1002
-     *
1003
-     * @return void
1004
-     * @throws InvalidArgumentException
1005
-     * @throws InvalidDataTypeException
1006
-     * @throws InvalidInterfaceException
1007
-     */
1008
-    public static function load_pue_update()
1009
-    {
1010
-        // load PUE client
1011
-        require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
1012
-        // cycle thru settings
1013
-        foreach (self::$_settings as $settings) {
1014
-            if (! empty($settings['pue_options'])) {
1015
-                // initiate the class and start the plugin update engine!
1016
-                new PluginUpdateEngineChecker(
1017
-                // host file URL
1018
-                    'https://eventespresso.com',
1019
-                    // plugin slug(s)
1020
-                    array(
1021
-                        'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1022
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1023
-                    ),
1024
-                    // options
1025
-                    array(
1026
-                        'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
1027
-                        'lang_domain'       => 'event_espresso',
1028
-                        'checkPeriod'       => $settings['pue_options']['checkPeriod'],
1029
-                        'option_key'        => 'site_license_key',
1030
-                        'options_page_slug' => 'event_espresso',
1031
-                        'plugin_basename'   => $settings['pue_options']['plugin_basename'],
1032
-                        // if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
1033
-                        'use_wp_update'     => $settings['pue_options']['use_wp_update'],
1034
-                    )
1035
-                );
1036
-            }
1037
-        }
1038
-    }
1000
+	/**
1001
+	 *    load_pue_update - Update notifications
1002
+	 *
1003
+	 * @return void
1004
+	 * @throws InvalidArgumentException
1005
+	 * @throws InvalidDataTypeException
1006
+	 * @throws InvalidInterfaceException
1007
+	 */
1008
+	public static function load_pue_update()
1009
+	{
1010
+		// load PUE client
1011
+		require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
1012
+		// cycle thru settings
1013
+		foreach (self::$_settings as $settings) {
1014
+			if (! empty($settings['pue_options'])) {
1015
+				// initiate the class and start the plugin update engine!
1016
+				new PluginUpdateEngineChecker(
1017
+				// host file URL
1018
+					'https://eventespresso.com',
1019
+					// plugin slug(s)
1020
+					array(
1021
+						'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1022
+						'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1023
+					),
1024
+					// options
1025
+					array(
1026
+						'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
1027
+						'lang_domain'       => 'event_espresso',
1028
+						'checkPeriod'       => $settings['pue_options']['checkPeriod'],
1029
+						'option_key'        => 'site_license_key',
1030
+						'options_page_slug' => 'event_espresso',
1031
+						'plugin_basename'   => $settings['pue_options']['plugin_basename'],
1032
+						// if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
1033
+						'use_wp_update'     => $settings['pue_options']['use_wp_update'],
1034
+					)
1035
+				);
1036
+			}
1037
+		}
1038
+	}
1039 1039
 
1040 1040
 
1041
-    /**
1042
-     * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
1043
-     *
1044
-     * @since 4.4.0
1045
-     * @return void
1046
-     * @throws EE_Error
1047
-     */
1048
-    public static function register_message_types()
1049
-    {
1050
-        foreach (self::$_settings as $addon_name => $settings) {
1051
-            if (! empty($settings['message_types'])) {
1052
-                foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1053
-                    EE_Register_Message_Type::register($message_type, $message_type_settings);
1054
-                }
1055
-            }
1056
-        }
1057
-    }
1041
+	/**
1042
+	 * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
1043
+	 *
1044
+	 * @since 4.4.0
1045
+	 * @return void
1046
+	 * @throws EE_Error
1047
+	 */
1048
+	public static function register_message_types()
1049
+	{
1050
+		foreach (self::$_settings as $addon_name => $settings) {
1051
+			if (! empty($settings['message_types'])) {
1052
+				foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1053
+					EE_Register_Message_Type::register($message_type, $message_type_settings);
1054
+				}
1055
+			}
1056
+		}
1057
+	}
1058 1058
 
1059 1059
 
1060
-    /**
1061
-     * This deregisters an addon that was previously registered with a specific addon_name.
1062
-     *
1063
-     * @since    4.3.0
1064
-     * @param string $addon_name the name for the addon that was previously registered
1065
-     * @throws DomainException
1066
-     * @throws EE_Error
1067
-     * @throws InvalidArgumentException
1068
-     * @throws InvalidDataTypeException
1069
-     * @throws InvalidInterfaceException
1070
-     */
1071
-    public static function deregister($addon_name = null)
1072
-    {
1073
-        if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1074
-            try {
1075
-                do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1076
-                $class_name = self::$_settings[$addon_name]['class_name'];
1077
-                if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
1078
-                    // setup DMS
1079
-                    EE_Register_Data_Migration_Scripts::deregister($addon_name);
1080
-                }
1081
-                if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1082
-                    // register admin page
1083
-                    EE_Register_Admin_Page::deregister($addon_name);
1084
-                }
1085
-                if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1086
-                    // add to list of modules to be registered
1087
-                    EE_Register_Module::deregister($addon_name);
1088
-                }
1089
-                if (! empty(self::$_settings[$addon_name]['shortcode_paths'])
1090
-                    || ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
1091
-                ) {
1092
-                    // add to list of shortcodes to be registered
1093
-                    EE_Register_Shortcode::deregister($addon_name);
1094
-                }
1095
-                if (! empty(self::$_settings[$addon_name]['config_class'])) {
1096
-                    // if config_class present let's register config.
1097
-                    EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1098
-                }
1099
-                if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1100
-                    // add to list of widgets to be registered
1101
-                    EE_Register_Widget::deregister($addon_name);
1102
-                }
1103
-                if (! empty(self::$_settings[$addon_name]['model_paths'])
1104
-                    || ! empty(self::$_settings[$addon_name]['class_paths'])
1105
-                ) {
1106
-                    // add to list of shortcodes to be registered
1107
-                    EE_Register_Model::deregister($addon_name);
1108
-                }
1109
-                if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1110
-                    || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1111
-                ) {
1112
-                    // add to list of shortcodes to be registered
1113
-                    EE_Register_Model_Extensions::deregister($addon_name);
1114
-                }
1115
-                if (! empty(self::$_settings[$addon_name]['message_types'])) {
1116
-                    foreach (
1117
-                        (array)self::$_settings[$addon_name]['message_types'] as $message_type =>
1118
-                        $message_type_settings
1119
-                    ) {
1120
-                        EE_Register_Message_Type::deregister($message_type);
1121
-                    }
1122
-                }
1123
-                //deregister capabilities for addon
1124
-                if (
1125
-                    ! empty(self::$_settings[$addon_name]['capabilities'])
1126
-                    || ! empty(self::$_settings[$addon_name]['capability_maps'])
1127
-                ) {
1128
-                    EE_Register_Capabilities::deregister($addon_name);
1129
-                }
1130
-                //deregister custom_post_types for addon
1131
-                if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1132
-                    EE_Register_CPT::deregister($addon_name);
1133
-                }
1134
-                if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
1135
-                    EE_Register_Payment_Method::deregister($addon_name);
1136
-                }
1137
-                $addon = EE_Registry::instance()->getAddon($class_name);
1138
-                if ($addon instanceof EE_Addon) {
1139
-                    remove_action(
1140
-                        'deactivate_' . $addon->get_main_plugin_file_basename(),
1141
-                        array($addon, 'deactivation')
1142
-                    );
1143
-                    remove_action(
1144
-                        'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1145
-                        array($addon, 'initialize_db_if_no_migrations_required')
1146
-                    );
1147
-                    //remove `after_registration` call
1148
-                    remove_action(
1149
-                        'AHEE__EE_System__load_espresso_addons__complete',
1150
-                        array($addon, 'after_registration'),
1151
-                        999
1152
-                    );
1153
-                }
1154
-                EE_Registry::instance()->removeAddon($class_name);
1155
-            } catch (OutOfBoundsException $addon_not_yet_registered_exception) {
1156
-                //the add-on was not yet registered in the registry, so RegistryContainer::__get() throws this exception.
1157
-                //also no need to worry about this or log it, it's ok to deregister an add-on before its registered in the registry
1158
-            } catch (Exception $e) {
1159
-                EE_Log::instance()->log(
1160
-                    __FILE__,
1161
-                    __FUNCTION__,
1162
-                    sprintf(
1163
-                        esc_html__('Exception of type %1$s caught while deregistering add-on $2$s, its message was "%3$s" and stack trace was "%4$s"', 'event_espresso'),
1164
-                        get_class($e),
1165
-                        $addon_name,
1166
-                        $e->getMessage(),
1167
-                        $e->getTraceAsString()
1168
-                    )
1169
-                );
1170
-             }
1171
-            unset(self::$_settings[ $addon_name ]);
1172
-            do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1173
-        }
1174
-    }
1060
+	/**
1061
+	 * This deregisters an addon that was previously registered with a specific addon_name.
1062
+	 *
1063
+	 * @since    4.3.0
1064
+	 * @param string $addon_name the name for the addon that was previously registered
1065
+	 * @throws DomainException
1066
+	 * @throws EE_Error
1067
+	 * @throws InvalidArgumentException
1068
+	 * @throws InvalidDataTypeException
1069
+	 * @throws InvalidInterfaceException
1070
+	 */
1071
+	public static function deregister($addon_name = null)
1072
+	{
1073
+		if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1074
+			try {
1075
+				do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1076
+				$class_name = self::$_settings[$addon_name]['class_name'];
1077
+				if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
1078
+					// setup DMS
1079
+					EE_Register_Data_Migration_Scripts::deregister($addon_name);
1080
+				}
1081
+				if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1082
+					// register admin page
1083
+					EE_Register_Admin_Page::deregister($addon_name);
1084
+				}
1085
+				if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1086
+					// add to list of modules to be registered
1087
+					EE_Register_Module::deregister($addon_name);
1088
+				}
1089
+				if (! empty(self::$_settings[$addon_name]['shortcode_paths'])
1090
+					|| ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
1091
+				) {
1092
+					// add to list of shortcodes to be registered
1093
+					EE_Register_Shortcode::deregister($addon_name);
1094
+				}
1095
+				if (! empty(self::$_settings[$addon_name]['config_class'])) {
1096
+					// if config_class present let's register config.
1097
+					EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1098
+				}
1099
+				if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1100
+					// add to list of widgets to be registered
1101
+					EE_Register_Widget::deregister($addon_name);
1102
+				}
1103
+				if (! empty(self::$_settings[$addon_name]['model_paths'])
1104
+					|| ! empty(self::$_settings[$addon_name]['class_paths'])
1105
+				) {
1106
+					// add to list of shortcodes to be registered
1107
+					EE_Register_Model::deregister($addon_name);
1108
+				}
1109
+				if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1110
+					|| ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1111
+				) {
1112
+					// add to list of shortcodes to be registered
1113
+					EE_Register_Model_Extensions::deregister($addon_name);
1114
+				}
1115
+				if (! empty(self::$_settings[$addon_name]['message_types'])) {
1116
+					foreach (
1117
+						(array)self::$_settings[$addon_name]['message_types'] as $message_type =>
1118
+						$message_type_settings
1119
+					) {
1120
+						EE_Register_Message_Type::deregister($message_type);
1121
+					}
1122
+				}
1123
+				//deregister capabilities for addon
1124
+				if (
1125
+					! empty(self::$_settings[$addon_name]['capabilities'])
1126
+					|| ! empty(self::$_settings[$addon_name]['capability_maps'])
1127
+				) {
1128
+					EE_Register_Capabilities::deregister($addon_name);
1129
+				}
1130
+				//deregister custom_post_types for addon
1131
+				if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1132
+					EE_Register_CPT::deregister($addon_name);
1133
+				}
1134
+				if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
1135
+					EE_Register_Payment_Method::deregister($addon_name);
1136
+				}
1137
+				$addon = EE_Registry::instance()->getAddon($class_name);
1138
+				if ($addon instanceof EE_Addon) {
1139
+					remove_action(
1140
+						'deactivate_' . $addon->get_main_plugin_file_basename(),
1141
+						array($addon, 'deactivation')
1142
+					);
1143
+					remove_action(
1144
+						'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1145
+						array($addon, 'initialize_db_if_no_migrations_required')
1146
+					);
1147
+					//remove `after_registration` call
1148
+					remove_action(
1149
+						'AHEE__EE_System__load_espresso_addons__complete',
1150
+						array($addon, 'after_registration'),
1151
+						999
1152
+					);
1153
+				}
1154
+				EE_Registry::instance()->removeAddon($class_name);
1155
+			} catch (OutOfBoundsException $addon_not_yet_registered_exception) {
1156
+				//the add-on was not yet registered in the registry, so RegistryContainer::__get() throws this exception.
1157
+				//also no need to worry about this or log it, it's ok to deregister an add-on before its registered in the registry
1158
+			} catch (Exception $e) {
1159
+				EE_Log::instance()->log(
1160
+					__FILE__,
1161
+					__FUNCTION__,
1162
+					sprintf(
1163
+						esc_html__('Exception of type %1$s caught while deregistering add-on $2$s, its message was "%3$s" and stack trace was "%4$s"', 'event_espresso'),
1164
+						get_class($e),
1165
+						$addon_name,
1166
+						$e->getMessage(),
1167
+						$e->getTraceAsString()
1168
+					)
1169
+				);
1170
+			 }
1171
+			unset(self::$_settings[ $addon_name ]);
1172
+			do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1173
+		}
1174
+	}
1175 1175
 
1176 1176
 
1177 1177
 }
Please login to merge, or discard this patch.
Spacing   +101 added lines, -101 removed lines patch added patch discarded remove patch
@@ -71,15 +71,15 @@  discard block
 block discarded – undo
71 71
         // offsets:    0 . 1 . 2 . 3 . 4
72 72
         $version_parts = explode('.', $min_core_version);
73 73
         //check they specified the micro version (after 2nd period)
74
-        if (! isset($version_parts[2])) {
74
+        if ( ! isset($version_parts[2])) {
75 75
             $version_parts[2] = '0';
76 76
         }
77 77
         //if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
78 78
         //soon we can assume that's 'rc', but this current version is 'alpha'
79
-        if (! isset($version_parts[3])) {
79
+        if ( ! isset($version_parts[3])) {
80 80
             $version_parts[3] = 'dev';
81 81
         }
82
-        if (! isset($version_parts[4])) {
82
+        if ( ! isset($version_parts[4])) {
83 83
             $version_parts[4] = '000';
84 84
         }
85 85
         return implode('.', $version_parts);
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
         // setup PUE
251 251
         EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
252 252
         // does this addon work with this version of core or WordPress ?
253
-        if (! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
253
+        if ( ! EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
254 254
             return;
255 255
         }
256 256
         // register namespaces
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
                 )
309 309
             );
310 310
         }
311
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
311
+        if ( ! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
312 312
             throw new EE_Error(
313 313
                 sprintf(
314 314
                     __(
@@ -320,7 +320,7 @@  discard block
 block discarded – undo
320 320
             );
321 321
         }
322 322
         // check that addon has not already been registered with that name
323
-        if (isset(self::$_settings[ $addon_name ]) && ! did_action('activate_plugin')) {
323
+        if (isset(self::$_settings[$addon_name]) && ! did_action('activate_plugin')) {
324 324
             throw new EE_Error(
325 325
                 sprintf(
326 326
                     __(
@@ -352,7 +352,7 @@  discard block
 block discarded – undo
352 352
         // check if classname is fully  qualified or is a legacy classname already prefixed with 'EE_'
353 353
         return strpos($class_name, '\\') || strpos($class_name, 'EE_') === 0
354 354
             ? $class_name
355
-            : 'EE_' . $class_name;
355
+            : 'EE_'.$class_name;
356 356
     }
357 357
 
358 358
 
@@ -511,9 +511,9 @@  discard block
 block discarded – undo
511 511
         $incompatibility_message = '';
512 512
         //check whether this addon version is compatible with EE core
513 513
         if (
514
-            isset(EE_Register_Addon::$_incompatible_addons[ $addon_name ])
514
+            isset(EE_Register_Addon::$_incompatible_addons[$addon_name])
515 515
             && ! self::_meets_min_core_version_requirement(
516
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
516
+                EE_Register_Addon::$_incompatible_addons[$addon_name],
517 517
                 $addon_settings['version']
518 518
             )
519 519
         ) {
@@ -523,7 +523,7 @@  discard block
 block discarded – undo
523 523
                 ),
524 524
                 $addon_name,
525 525
                 '<br />',
526
-                EE_Register_Addon::$_incompatible_addons[ $addon_name ],
526
+                EE_Register_Addon::$_incompatible_addons[$addon_name],
527 527
                 '<span style="font-weight: bold; color: #D54E21;">',
528 528
                 '</span><br />'
529 529
             );
@@ -555,7 +555,7 @@  discard block
 block discarded – undo
555 555
                 '</span><br />'
556 556
             );
557 557
         }
558
-        if (! empty($incompatibility_message)) {
558
+        if ( ! empty($incompatibility_message)) {
559 559
             // remove 'activate' from the REQUEST
560 560
             // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
561 561
             unset($_GET['activate'], $_REQUEST['activate']);
@@ -583,11 +583,11 @@  discard block
 block discarded – undo
583 583
      */
584 584
     private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
585 585
     {
586
-        if (! empty($setup_args['pue_options'])) {
587
-            self::$_settings[ $addon_name ]['pue_options'] = array(
586
+        if ( ! empty($setup_args['pue_options'])) {
587
+            self::$_settings[$addon_name]['pue_options'] = array(
588 588
                 'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
589 589
                     ? (string) $setup_args['pue_options']['pue_plugin_slug']
590
-                    : 'espresso_' . strtolower($class_name),
590
+                    : 'espresso_'.strtolower($class_name),
591 591
                 'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
592 592
                     ? (string) $setup_args['pue_options']['plugin_basename']
593 593
                     : plugin_basename($setup_args['main_file_path']),
@@ -647,12 +647,12 @@  discard block
 block discarded – undo
647 647
             //(as the newly-activated addon wasn't around the first time addons were registered).
648 648
             //Note: the presence of pue_options in the addon registration options will initialize the $_settings
649 649
             //property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
650
-            if (! isset(self::$_settings[ $addon_name ])
651
-                || (isset(self::$_settings[ $addon_name ])
652
-                    && ! isset(self::$_settings[ $addon_name ]['class_name'])
650
+            if ( ! isset(self::$_settings[$addon_name])
651
+                || (isset(self::$_settings[$addon_name])
652
+                    && ! isset(self::$_settings[$addon_name]['class_name'])
653 653
                 )
654 654
             ) {
655
-                self::$_settings[ $addon_name ] = $addon_settings;
655
+                self::$_settings[$addon_name] = $addon_settings;
656 656
                 $addon                          = self::_load_and_init_addon_class($addon_name);
657 657
                 $addon->set_activation_indicator_option();
658 658
                 // dont bother setting up the rest of the addon.
@@ -678,10 +678,10 @@  discard block
 block discarded – undo
678 678
             );
679 679
         }
680 680
         // make sure addon settings are set correctly without overwriting anything existing
681
-        if (isset(self::$_settings[ $addon_name ])) {
682
-            self::$_settings[ $addon_name ] += $addon_settings;
681
+        if (isset(self::$_settings[$addon_name])) {
682
+            self::$_settings[$addon_name] += $addon_settings;
683 683
         } else {
684
-            self::$_settings[ $addon_name ] = $addon_settings;
684
+            self::$_settings[$addon_name] = $addon_settings;
685 685
         }
686 686
         return false;
687 687
     }
@@ -694,13 +694,13 @@  discard block
 block discarded – undo
694 694
      */
695 695
     private static function _setup_autoloaders($addon_name)
696 696
     {
697
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_paths'])) {
697
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
698 698
             // setup autoloader for single file
699
-            EEH_Autoloader::instance()->register_autoloader(self::$_settings[ $addon_name ]['autoloader_paths']);
699
+            EEH_Autoloader::instance()->register_autoloader(self::$_settings[$addon_name]['autoloader_paths']);
700 700
         }
701 701
         // setup autoloaders for folders
702
-        if (! empty(self::$_settings[ $addon_name ]['autoloader_folders'])) {
703
-            foreach ((array) self::$_settings[ $addon_name ]['autoloader_folders'] as $autoloader_folder) {
702
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
703
+            foreach ((array) self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
704 704
                 EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
705 705
             }
706 706
         }
@@ -718,27 +718,27 @@  discard block
 block discarded – undo
718 718
     {
719 719
         // register new models
720 720
         if (
721
-            ! empty(self::$_settings[ $addon_name ]['model_paths'])
722
-            || ! empty(self::$_settings[ $addon_name ]['class_paths'])
721
+            ! empty(self::$_settings[$addon_name]['model_paths'])
722
+            || ! empty(self::$_settings[$addon_name]['class_paths'])
723 723
         ) {
724 724
             EE_Register_Model::register(
725 725
                 $addon_name,
726 726
                 array(
727
-                    'model_paths' => self::$_settings[ $addon_name ]['model_paths'],
728
-                    'class_paths' => self::$_settings[ $addon_name ]['class_paths'],
727
+                    'model_paths' => self::$_settings[$addon_name]['model_paths'],
728
+                    'class_paths' => self::$_settings[$addon_name]['class_paths'],
729 729
                 )
730 730
             );
731 731
         }
732 732
         // register model extensions
733 733
         if (
734
-            ! empty(self::$_settings[ $addon_name ]['model_extension_paths'])
735
-            || ! empty(self::$_settings[ $addon_name ]['class_extension_paths'])
734
+            ! empty(self::$_settings[$addon_name]['model_extension_paths'])
735
+            || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
736 736
         ) {
737 737
             EE_Register_Model_Extensions::register(
738 738
                 $addon_name,
739 739
                 array(
740
-                    'model_extension_paths' => self::$_settings[ $addon_name ]['model_extension_paths'],
741
-                    'class_extension_paths' => self::$_settings[ $addon_name ]['class_extension_paths'],
740
+                    'model_extension_paths' => self::$_settings[$addon_name]['model_extension_paths'],
741
+                    'class_extension_paths' => self::$_settings[$addon_name]['class_extension_paths'],
742 742
                 )
743 743
             );
744 744
         }
@@ -753,10 +753,10 @@  discard block
 block discarded – undo
753 753
     private static function _register_data_migration_scripts($addon_name)
754 754
     {
755 755
         // setup DMS
756
-        if (! empty(self::$_settings[ $addon_name ]['dms_paths'])) {
756
+        if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
757 757
             EE_Register_Data_Migration_Scripts::register(
758 758
                 $addon_name,
759
-                array('dms_paths' => self::$_settings[ $addon_name ]['dms_paths'])
759
+                array('dms_paths' => self::$_settings[$addon_name]['dms_paths'])
760 760
             );
761 761
         }
762 762
     }
@@ -770,12 +770,12 @@  discard block
 block discarded – undo
770 770
     private static function _register_config($addon_name)
771 771
     {
772 772
         // if config_class is present let's register config.
773
-        if (! empty(self::$_settings[ $addon_name ]['config_class'])) {
773
+        if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
774 774
             EE_Register_Config::register(
775
-                self::$_settings[ $addon_name ]['config_class'],
775
+                self::$_settings[$addon_name]['config_class'],
776 776
                 array(
777
-                    'config_section' => self::$_settings[ $addon_name ]['config_section'],
778
-                    'config_name'    => self::$_settings[ $addon_name ]['config_name'],
777
+                    'config_section' => self::$_settings[$addon_name]['config_section'],
778
+                    'config_name'    => self::$_settings[$addon_name]['config_name'],
779 779
                 )
780 780
             );
781 781
         }
@@ -789,10 +789,10 @@  discard block
 block discarded – undo
789 789
      */
790 790
     private static function _register_admin_pages($addon_name)
791 791
     {
792
-        if (! empty(self::$_settings[ $addon_name ]['admin_path'])) {
792
+        if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
793 793
             EE_Register_Admin_Page::register(
794 794
                 $addon_name,
795
-                array('page_path' => self::$_settings[ $addon_name ]['admin_path'])
795
+                array('page_path' => self::$_settings[$addon_name]['admin_path'])
796 796
             );
797 797
         }
798 798
     }
@@ -805,10 +805,10 @@  discard block
 block discarded – undo
805 805
      */
806 806
     private static function _register_modules($addon_name)
807 807
     {
808
-        if (! empty(self::$_settings[ $addon_name ]['module_paths'])) {
808
+        if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
809 809
             EE_Register_Module::register(
810 810
                 $addon_name,
811
-                array('module_paths' => self::$_settings[ $addon_name ]['module_paths'])
811
+                array('module_paths' => self::$_settings[$addon_name]['module_paths'])
812 812
             );
813 813
         }
814 814
     }
@@ -821,17 +821,17 @@  discard block
 block discarded – undo
821 821
      */
822 822
     private static function _register_shortcodes($addon_name)
823 823
     {
824
-        if (! empty(self::$_settings[ $addon_name ]['shortcode_paths'])
825
-            || ! empty(self::$_settings[ $addon_name ]['shortcode_fqcns'])
824
+        if ( ! empty(self::$_settings[$addon_name]['shortcode_paths'])
825
+            || ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
826 826
         ) {
827 827
             EE_Register_Shortcode::register(
828 828
                 $addon_name,
829 829
                 array(
830
-                    'shortcode_paths' => isset(self::$_settings[ $addon_name ]['shortcode_paths'])
831
-                        ? self::$_settings[ $addon_name ]['shortcode_paths']
830
+                    'shortcode_paths' => isset(self::$_settings[$addon_name]['shortcode_paths'])
831
+                        ? self::$_settings[$addon_name]['shortcode_paths']
832 832
                         : array(),
833
-                    'shortcode_fqcns' => isset(self::$_settings[ $addon_name ]['shortcode_fqcns'])
834
-                        ? self::$_settings[ $addon_name ]['shortcode_fqcns']
833
+                    'shortcode_fqcns' => isset(self::$_settings[$addon_name]['shortcode_fqcns'])
834
+                        ? self::$_settings[$addon_name]['shortcode_fqcns']
835 835
                         : array(),
836 836
                 )
837 837
             );
@@ -846,10 +846,10 @@  discard block
 block discarded – undo
846 846
      */
847 847
     private static function _register_widgets($addon_name)
848 848
     {
849
-        if (! empty(self::$_settings[ $addon_name ]['widget_paths'])) {
849
+        if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
850 850
             EE_Register_Widget::register(
851 851
                 $addon_name,
852
-                array('widget_paths' => self::$_settings[ $addon_name ]['widget_paths'])
852
+                array('widget_paths' => self::$_settings[$addon_name]['widget_paths'])
853 853
             );
854 854
         }
855 855
     }
@@ -862,12 +862,12 @@  discard block
 block discarded – undo
862 862
      */
863 863
     private static function _register_capabilities($addon_name)
864 864
     {
865
-        if (! empty(self::$_settings[ $addon_name ]['capabilities'])) {
865
+        if ( ! empty(self::$_settings[$addon_name]['capabilities'])) {
866 866
             EE_Register_Capabilities::register(
867 867
                 $addon_name,
868 868
                 array(
869
-                    'capabilities'    => self::$_settings[ $addon_name ]['capabilities'],
870
-                    'capability_maps' => self::$_settings[ $addon_name ]['capability_maps'],
869
+                    'capabilities'    => self::$_settings[$addon_name]['capabilities'],
870
+                    'capability_maps' => self::$_settings[$addon_name]['capability_maps'],
871 871
                 )
872 872
             );
873 873
         }
@@ -881,7 +881,7 @@  discard block
 block discarded – undo
881 881
      */
882 882
     private static function _register_message_types($addon_name)
883 883
     {
884
-        if (! empty(self::$_settings[ $addon_name ]['message_types'])) {
884
+        if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
885 885
             add_action(
886 886
                 'EE_Brewing_Regular___messages_caf',
887 887
                 array('EE_Register_Addon', 'register_message_types')
@@ -898,15 +898,15 @@  discard block
 block discarded – undo
898 898
     private static function _register_custom_post_types($addon_name)
899 899
     {
900 900
         if (
901
-            ! empty(self::$_settings[ $addon_name ]['custom_post_types'])
902
-            || ! empty(self::$_settings[ $addon_name ]['custom_taxonomies'])
901
+            ! empty(self::$_settings[$addon_name]['custom_post_types'])
902
+            || ! empty(self::$_settings[$addon_name]['custom_taxonomies'])
903 903
         ) {
904 904
             EE_Register_CPT::register(
905 905
                 $addon_name,
906 906
                 array(
907
-                    'cpts'          => self::$_settings[ $addon_name ]['custom_post_types'],
908
-                    'cts'           => self::$_settings[ $addon_name ]['custom_taxonomies'],
909
-                    'default_terms' => self::$_settings[ $addon_name ]['default_terms'],
907
+                    'cpts'          => self::$_settings[$addon_name]['custom_post_types'],
908
+                    'cts'           => self::$_settings[$addon_name]['custom_taxonomies'],
909
+                    'default_terms' => self::$_settings[$addon_name]['default_terms'],
910 910
                 )
911 911
             );
912 912
         }
@@ -924,10 +924,10 @@  discard block
 block discarded – undo
924 924
      */
925 925
     private static function _register_payment_methods($addon_name)
926 926
     {
927
-        if (! empty(self::$_settings[ $addon_name ]['payment_method_paths'])) {
927
+        if ( ! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
928 928
             EE_Register_Payment_Method::register(
929 929
                 $addon_name,
930
-                array('payment_method_paths' => self::$_settings[ $addon_name ]['payment_method_paths'])
930
+                array('payment_method_paths' => self::$_settings[$addon_name]['payment_method_paths'])
931 931
             );
932 932
         }
933 933
     }
@@ -948,49 +948,49 @@  discard block
 block discarded – undo
948 948
     {
949 949
         $loader = EventEspresso\core\services\loaders\LoaderFactory::getLoader();
950 950
         $addon = $loader->getShared(
951
-            self::$_settings[ $addon_name ]['class_name'],
951
+            self::$_settings[$addon_name]['class_name'],
952 952
             array('EE_Registry::create(addon)' => true)
953 953
         );
954 954
         // setter inject dep map if required
955
-        if($addon instanceof RequiresDependencyMapInterface && $addon->dependencyMap() === null){
955
+        if ($addon instanceof RequiresDependencyMapInterface && $addon->dependencyMap() === null) {
956 956
             $addon->setDependencyMap($loader->getShared('EE_Dependency_Map'));
957 957
         }
958 958
         // setter inject domain if required
959
-        if(
959
+        if (
960 960
             $addon instanceof RequiresDomainInterface
961
-            && self::$_settings[ $addon_name ]['domain_fqcn'] !== ''
961
+            && self::$_settings[$addon_name]['domain_fqcn'] !== ''
962 962
             && $addon->domain() === null
963
-        ){
963
+        ) {
964 964
             $addon->setDomain(
965 965
                 $loader->getShared(
966
-                    self::$_settings[ $addon_name ]['domain_fqcn'],
966
+                    self::$_settings[$addon_name]['domain_fqcn'],
967 967
                     array(
968
-                        self::$_settings[ $addon_name ]['main_file_path'],
969
-                        self::$_settings[ $addon_name ]['version']
968
+                        self::$_settings[$addon_name]['main_file_path'],
969
+                        self::$_settings[$addon_name]['version']
970 970
                     )
971 971
                 )
972 972
             );
973 973
         }
974 974
 
975 975
         $addon->set_name($addon_name);
976
-        $addon->set_plugin_slug(self::$_settings[ $addon_name ]['plugin_slug']);
977
-        $addon->set_plugin_basename(self::$_settings[ $addon_name ]['plugin_basename']);
978
-        $addon->set_main_plugin_file(self::$_settings[ $addon_name ]['main_file_path']);
979
-        $addon->set_plugin_action_slug(self::$_settings[ $addon_name ]['plugin_action_slug']);
980
-        $addon->set_plugins_page_row(self::$_settings[ $addon_name ]['plugins_page_row']);
981
-        $addon->set_version(self::$_settings[ $addon_name ]['version']);
982
-        $addon->set_min_core_version(self::_effective_version(self::$_settings[ $addon_name ]['min_core_version']));
983
-        $addon->set_config_section(self::$_settings[ $addon_name ]['config_section']);
984
-        $addon->set_config_class(self::$_settings[ $addon_name ]['config_class']);
985
-        $addon->set_config_name(self::$_settings[ $addon_name ]['config_name']);
976
+        $addon->set_plugin_slug(self::$_settings[$addon_name]['plugin_slug']);
977
+        $addon->set_plugin_basename(self::$_settings[$addon_name]['plugin_basename']);
978
+        $addon->set_main_plugin_file(self::$_settings[$addon_name]['main_file_path']);
979
+        $addon->set_plugin_action_slug(self::$_settings[$addon_name]['plugin_action_slug']);
980
+        $addon->set_plugins_page_row(self::$_settings[$addon_name]['plugins_page_row']);
981
+        $addon->set_version(self::$_settings[$addon_name]['version']);
982
+        $addon->set_min_core_version(self::_effective_version(self::$_settings[$addon_name]['min_core_version']));
983
+        $addon->set_config_section(self::$_settings[$addon_name]['config_section']);
984
+        $addon->set_config_class(self::$_settings[$addon_name]['config_class']);
985
+        $addon->set_config_name(self::$_settings[$addon_name]['config_name']);
986 986
         //unfortunately this can't be hooked in upon construction, because we don't have
987 987
         //the plugin mainfile's path upon construction.
988 988
         register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
989 989
         // call any additional admin_callback functions during load_admin_controller hook
990
-        if (! empty(self::$_settings[ $addon_name ]['admin_callback'])) {
990
+        if ( ! empty(self::$_settings[$addon_name]['admin_callback'])) {
991 991
             add_action(
992 992
                 'AHEE__EE_System__load_controllers__load_admin_controllers',
993
-                array($addon, self::$_settings[ $addon_name ]['admin_callback'])
993
+                array($addon, self::$_settings[$addon_name]['admin_callback'])
994 994
             );
995 995
         }
996 996
         return $addon;
@@ -1008,10 +1008,10 @@  discard block
 block discarded – undo
1008 1008
     public static function load_pue_update()
1009 1009
     {
1010 1010
         // load PUE client
1011
-        require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
1011
+        require_once EE_THIRD_PARTY.'pue'.DS.'pue-client.php';
1012 1012
         // cycle thru settings
1013 1013
         foreach (self::$_settings as $settings) {
1014
-            if (! empty($settings['pue_options'])) {
1014
+            if ( ! empty($settings['pue_options'])) {
1015 1015
                 // initiate the class and start the plugin update engine!
1016 1016
                 new PluginUpdateEngineChecker(
1017 1017
                 // host file URL
@@ -1019,7 +1019,7 @@  discard block
 block discarded – undo
1019 1019
                     // plugin slug(s)
1020 1020
                     array(
1021 1021
                         'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
1022
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
1022
+                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'].'-pr'),
1023 1023
                     ),
1024 1024
                     // options
1025 1025
                     array(
@@ -1048,7 +1048,7 @@  discard block
 block discarded – undo
1048 1048
     public static function register_message_types()
1049 1049
     {
1050 1050
         foreach (self::$_settings as $addon_name => $settings) {
1051
-            if (! empty($settings['message_types'])) {
1051
+            if ( ! empty($settings['message_types'])) {
1052 1052
                 foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
1053 1053
                     EE_Register_Message_Type::register($message_type, $message_type_settings);
1054 1054
                 }
@@ -1070,51 +1070,51 @@  discard block
 block discarded – undo
1070 1070
      */
1071 1071
     public static function deregister($addon_name = null)
1072 1072
     {
1073
-        if (isset(self::$_settings[ $addon_name ]['class_name'])) {
1073
+        if (isset(self::$_settings[$addon_name]['class_name'])) {
1074 1074
             try {
1075 1075
                 do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
1076 1076
                 $class_name = self::$_settings[$addon_name]['class_name'];
1077
-                if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
1077
+                if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
1078 1078
                     // setup DMS
1079 1079
                     EE_Register_Data_Migration_Scripts::deregister($addon_name);
1080 1080
                 }
1081
-                if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1081
+                if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
1082 1082
                     // register admin page
1083 1083
                     EE_Register_Admin_Page::deregister($addon_name);
1084 1084
                 }
1085
-                if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1085
+                if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
1086 1086
                     // add to list of modules to be registered
1087 1087
                     EE_Register_Module::deregister($addon_name);
1088 1088
                 }
1089
-                if (! empty(self::$_settings[$addon_name]['shortcode_paths'])
1089
+                if ( ! empty(self::$_settings[$addon_name]['shortcode_paths'])
1090 1090
                     || ! empty(self::$_settings[$addon_name]['shortcode_fqcns'])
1091 1091
                 ) {
1092 1092
                     // add to list of shortcodes to be registered
1093 1093
                     EE_Register_Shortcode::deregister($addon_name);
1094 1094
                 }
1095
-                if (! empty(self::$_settings[$addon_name]['config_class'])) {
1095
+                if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
1096 1096
                     // if config_class present let's register config.
1097 1097
                     EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1098 1098
                 }
1099
-                if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1099
+                if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
1100 1100
                     // add to list of widgets to be registered
1101 1101
                     EE_Register_Widget::deregister($addon_name);
1102 1102
                 }
1103
-                if (! empty(self::$_settings[$addon_name]['model_paths'])
1103
+                if ( ! empty(self::$_settings[$addon_name]['model_paths'])
1104 1104
                     || ! empty(self::$_settings[$addon_name]['class_paths'])
1105 1105
                 ) {
1106 1106
                     // add to list of shortcodes to be registered
1107 1107
                     EE_Register_Model::deregister($addon_name);
1108 1108
                 }
1109
-                if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1109
+                if ( ! empty(self::$_settings[$addon_name]['model_extension_paths'])
1110 1110
                     || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1111 1111
                 ) {
1112 1112
                     // add to list of shortcodes to be registered
1113 1113
                     EE_Register_Model_Extensions::deregister($addon_name);
1114 1114
                 }
1115
-                if (! empty(self::$_settings[$addon_name]['message_types'])) {
1115
+                if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
1116 1116
                     foreach (
1117
-                        (array)self::$_settings[$addon_name]['message_types'] as $message_type =>
1117
+                        (array) self::$_settings[$addon_name]['message_types'] as $message_type =>
1118 1118
                         $message_type_settings
1119 1119
                     ) {
1120 1120
                         EE_Register_Message_Type::deregister($message_type);
@@ -1128,16 +1128,16 @@  discard block
 block discarded – undo
1128 1128
                     EE_Register_Capabilities::deregister($addon_name);
1129 1129
                 }
1130 1130
                 //deregister custom_post_types for addon
1131
-                if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1131
+                if ( ! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1132 1132
                     EE_Register_CPT::deregister($addon_name);
1133 1133
                 }
1134
-                if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
1134
+                if ( ! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
1135 1135
                     EE_Register_Payment_Method::deregister($addon_name);
1136 1136
                 }
1137 1137
                 $addon = EE_Registry::instance()->getAddon($class_name);
1138 1138
                 if ($addon instanceof EE_Addon) {
1139 1139
                     remove_action(
1140
-                        'deactivate_' . $addon->get_main_plugin_file_basename(),
1140
+                        'deactivate_'.$addon->get_main_plugin_file_basename(),
1141 1141
                         array($addon, 'deactivation')
1142 1142
                     );
1143 1143
                     remove_action(
@@ -1168,7 +1168,7 @@  discard block
 block discarded – undo
1168 1168
                     )
1169 1169
                 );
1170 1170
              }
1171
-            unset(self::$_settings[ $addon_name ]);
1171
+            unset(self::$_settings[$addon_name]);
1172 1172
             do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1173 1173
         }
1174 1174
     }
Please login to merge, or discard this patch.