Completed
Branch BUG-10504-spco-submit-lock (c0988b)
by
unknown
32:07 queued 20:21
created
core/services/collections/Collection.php 1 patch
Indentation   +12 added lines, -13 removed lines patch added patch discarded remove patch
@@ -83,7 +83,6 @@  discard block
 block discarded – undo
83 83
 
84 84
 	 /**
85 85
 	  * setIdentifier
86
-
87 86
 	  * Sets the data associated with an object in the Collection
88 87
 	  * if no $identifier is supplied, then the spl_object_hash() is used
89 88
 	  *
@@ -352,18 +351,18 @@  discard block
 block discarded – undo
352 351
 
353 352
 
354 353
 
355
-     /**
356
-      * detaches ALL objects from the Collection
357
-      */
358
-     public function detachAll()
359
-     {
360
-         $this->rewind();
361
-         while ($this->valid()) {
362
-             $object = $this->current();
363
-             $this->next();
364
-             $this->detach($object);
365
-         }
366
-     }
354
+	 /**
355
+	  * detaches ALL objects from the Collection
356
+	  */
357
+	 public function detachAll()
358
+	 {
359
+		 $this->rewind();
360
+		 while ($this->valid()) {
361
+			 $object = $this->current();
362
+			 $this->next();
363
+			 $this->detach($object);
364
+		 }
365
+	 }
367 366
 
368 367
 
369 368
 
Please login to merge, or discard this patch.
core/services/loaders/Loader.php 2 patches
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -24,140 +24,140 @@
 block discarded – undo
24 24
 {
25 25
 
26 26
 
27
-    /**
28
-     * @var LoaderInterface $new_loader
29
-     */
30
-    private $new_loader;
31
-
32
-
33
-    /**
34
-     * @var LoaderInterface $shared_loader
35
-     */
36
-    private $shared_loader;
37
-
38
-
39
-
40
-    /**
41
-     * Loader constructor.
42
-     *
43
-     * @param LoaderInterface|null $new_loader
44
-     * @param LoaderInterface|null $shared_loader
45
-     * @throws InvalidInterfaceException
46
-     * @throws InvalidArgumentException
47
-     * @throws InvalidDataTypeException
48
-     */
49
-    public function __construct(LoaderInterface $new_loader = null, LoaderInterface $shared_loader = null)
50
-    {
51
-        $this->new_loader = $this->setupNewLoader($new_loader);
52
-        $this->shared_loader = $this->setupSharedLoader($shared_loader);
53
-    }
54
-
55
-
56
-
57
-    /**
58
-     * @param LoaderInterface|null $new_loader
59
-     * @return CoreLoader|LoaderInterface
60
-     * @throws InvalidArgumentException
61
-     */
62
-    private function setupNewLoader(LoaderInterface $new_loader = null)
63
-    {
64
-        // if not already generated, create a standard loader
65
-        if (! $new_loader instanceof LoaderInterface) {
66
-            $new_loader = new CoreLoader(EE_Registry::instance());
67
-        }
68
-        return $new_loader;
69
-    }
70
-
71
-
72
-
73
-    /**
74
-     * @param LoaderInterface|null $shared_loader
75
-     * @return CoreLoader|LoaderInterface
76
-     * @throws InvalidDataTypeException
77
-     * @throws InvalidInterfaceException
78
-     * @throws InvalidArgumentException
79
-     */
80
-    private function setupSharedLoader(LoaderInterface $shared_loader = null)
81
-    {
82
-        // if not already generated, create a caching loader
83
-        if (! $shared_loader instanceof LoaderInterface) {
84
-            $shared_loader = new CachingLoader(
85
-                new CoreLoader(EE_Registry::instance()),
86
-                new LooseCollection('')
87
-            );
88
-        }
89
-        return $shared_loader;
90
-    }
91
-
92
-
93
-
94
-    /**
95
-     * @return LoaderInterface
96
-     */
97
-    public function getNewLoader()
98
-    {
99
-        return $this->new_loader;
100
-    }
101
-
102
-
103
-
104
-    /**
105
-     * @return LoaderInterface
106
-     */
107
-    public function getSharedLoader()
108
-    {
109
-        return $this->shared_loader;
110
-    }
111
-
112
-
113
-
114
-    /**
115
-     * @param string $fqcn
116
-     * @param array  $arguments
117
-     * @param bool   $shared
118
-     * @return mixed
119
-     */
120
-    public function load($fqcn, $arguments = array(), $shared = true)
121
-    {
122
-        return $shared
123
-            ? $this->getSharedLoader()->load($fqcn, $arguments)
124
-            : $this->getNewLoader()->load($fqcn, $arguments);
125
-    }
126
-
127
-
128
-
129
-    /**
130
-     * @param string $fqcn
131
-     * @param array  $arguments
132
-     * @return mixed
133
-     */
134
-    public function getNew($fqcn, $arguments = array())
135
-    {
136
-        return $this->getNewLoader()->load($fqcn, $arguments);
137
-    }
138
-
139
-
140
-
141
-    /**
142
-     * @param string $fqcn
143
-     * @param array  $arguments
144
-     * @return mixed
145
-     */
146
-    public function getShared($fqcn, $arguments = array())
147
-    {
148
-        return $this->getSharedLoader()->load($fqcn, $arguments);
149
-    }
150
-
151
-
152
-
153
-    /**
154
-     * calls reset() on loaders if that method exists
155
-     */
156
-    public function reset()
157
-    {
158
-        $this->new_loader->reset();
159
-        $this->shared_loader->reset();
160
-    }
27
+	/**
28
+	 * @var LoaderInterface $new_loader
29
+	 */
30
+	private $new_loader;
31
+
32
+
33
+	/**
34
+	 * @var LoaderInterface $shared_loader
35
+	 */
36
+	private $shared_loader;
37
+
38
+
39
+
40
+	/**
41
+	 * Loader constructor.
42
+	 *
43
+	 * @param LoaderInterface|null $new_loader
44
+	 * @param LoaderInterface|null $shared_loader
45
+	 * @throws InvalidInterfaceException
46
+	 * @throws InvalidArgumentException
47
+	 * @throws InvalidDataTypeException
48
+	 */
49
+	public function __construct(LoaderInterface $new_loader = null, LoaderInterface $shared_loader = null)
50
+	{
51
+		$this->new_loader = $this->setupNewLoader($new_loader);
52
+		$this->shared_loader = $this->setupSharedLoader($shared_loader);
53
+	}
54
+
55
+
56
+
57
+	/**
58
+	 * @param LoaderInterface|null $new_loader
59
+	 * @return CoreLoader|LoaderInterface
60
+	 * @throws InvalidArgumentException
61
+	 */
62
+	private function setupNewLoader(LoaderInterface $new_loader = null)
63
+	{
64
+		// if not already generated, create a standard loader
65
+		if (! $new_loader instanceof LoaderInterface) {
66
+			$new_loader = new CoreLoader(EE_Registry::instance());
67
+		}
68
+		return $new_loader;
69
+	}
70
+
71
+
72
+
73
+	/**
74
+	 * @param LoaderInterface|null $shared_loader
75
+	 * @return CoreLoader|LoaderInterface
76
+	 * @throws InvalidDataTypeException
77
+	 * @throws InvalidInterfaceException
78
+	 * @throws InvalidArgumentException
79
+	 */
80
+	private function setupSharedLoader(LoaderInterface $shared_loader = null)
81
+	{
82
+		// if not already generated, create a caching loader
83
+		if (! $shared_loader instanceof LoaderInterface) {
84
+			$shared_loader = new CachingLoader(
85
+				new CoreLoader(EE_Registry::instance()),
86
+				new LooseCollection('')
87
+			);
88
+		}
89
+		return $shared_loader;
90
+	}
91
+
92
+
93
+
94
+	/**
95
+	 * @return LoaderInterface
96
+	 */
97
+	public function getNewLoader()
98
+	{
99
+		return $this->new_loader;
100
+	}
101
+
102
+
103
+
104
+	/**
105
+	 * @return LoaderInterface
106
+	 */
107
+	public function getSharedLoader()
108
+	{
109
+		return $this->shared_loader;
110
+	}
111
+
112
+
113
+
114
+	/**
115
+	 * @param string $fqcn
116
+	 * @param array  $arguments
117
+	 * @param bool   $shared
118
+	 * @return mixed
119
+	 */
120
+	public function load($fqcn, $arguments = array(), $shared = true)
121
+	{
122
+		return $shared
123
+			? $this->getSharedLoader()->load($fqcn, $arguments)
124
+			: $this->getNewLoader()->load($fqcn, $arguments);
125
+	}
126
+
127
+
128
+
129
+	/**
130
+	 * @param string $fqcn
131
+	 * @param array  $arguments
132
+	 * @return mixed
133
+	 */
134
+	public function getNew($fqcn, $arguments = array())
135
+	{
136
+		return $this->getNewLoader()->load($fqcn, $arguments);
137
+	}
138
+
139
+
140
+
141
+	/**
142
+	 * @param string $fqcn
143
+	 * @param array  $arguments
144
+	 * @return mixed
145
+	 */
146
+	public function getShared($fqcn, $arguments = array())
147
+	{
148
+		return $this->getSharedLoader()->load($fqcn, $arguments);
149
+	}
150
+
151
+
152
+
153
+	/**
154
+	 * calls reset() on loaders if that method exists
155
+	 */
156
+	public function reset()
157
+	{
158
+		$this->new_loader->reset();
159
+		$this->shared_loader->reset();
160
+	}
161 161
 
162 162
 }
163 163
 // End of file Loader.php
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     private function setupNewLoader(LoaderInterface $new_loader = null)
63 63
     {
64 64
         // if not already generated, create a standard loader
65
-        if (! $new_loader instanceof LoaderInterface) {
65
+        if ( ! $new_loader instanceof LoaderInterface) {
66 66
             $new_loader = new CoreLoader(EE_Registry::instance());
67 67
         }
68 68
         return $new_loader;
@@ -80,7 +80,7 @@  discard block
 block discarded – undo
80 80
     private function setupSharedLoader(LoaderInterface $shared_loader = null)
81 81
     {
82 82
         // if not already generated, create a caching loader
83
-        if (! $shared_loader instanceof LoaderInterface) {
83
+        if ( ! $shared_loader instanceof LoaderInterface) {
84 84
             $shared_loader = new CachingLoader(
85 85
                 new CoreLoader(EE_Registry::instance()),
86 86
                 new LooseCollection('')
Please login to merge, or discard this patch.
core/services/loaders/CachingLoader.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -102,17 +102,17 @@
 block discarded – undo
102 102
         $fqcn = ltrim($fqcn, '\\');
103 103
         // caching can be turned off via the following code:
104 104
         // add_filter('FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache', '__return_true');
105
-        if(
105
+        if (
106 106
             apply_filters(
107 107
                 'FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache',
108 108
                 false,
109 109
                 $this
110 110
             )
111
-        ){
111
+        ) {
112 112
             return $this->loader->load($fqcn, $arguments);
113 113
         }
114
-        $identifier = md5($fqcn . serialize($arguments));
115
-        if($this->cache->has($identifier)){
114
+        $identifier = md5($fqcn.serialize($arguments));
115
+        if ($this->cache->has($identifier)) {
116 116
             return $this->cache->get($identifier);
117 117
         }
118 118
         $object = $this->loader->load($fqcn, $arguments);
Please login to merge, or discard this patch.
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -22,114 +22,114 @@
 block discarded – undo
22 22
 class CachingLoader extends LoaderDecorator
23 23
 {
24 24
 
25
-    /**
26
-     * @var CollectionInterface $cache
27
-     */
28
-    protected $cache;
29
-
30
-    /**
31
-     * @var string $identifier
32
-     */
33
-    protected $identifier;
34
-
35
-
36
-
37
-    /**
38
-     * CachingLoader constructor.
39
-     *
40
-     * @param LoaderInterface     $loader
41
-     * @param CollectionInterface $cache
42
-     * @param string              $identifier
43
-     * @throws InvalidDataTypeException
44
-     */
45
-    public function __construct(LoaderInterface $loader, CollectionInterface $cache, $identifier = '')
46
-    {
47
-        parent::__construct($loader);
48
-        $this->cache = $cache;
49
-        $this->setIdentifier($identifier);
50
-        if ($this->identifier !== '') {
51
-            // to only clear this cache, and assuming an identifier has been set, simply do the following:
52
-            // do_action('AHEE__EventEspresso\core\services\loaders\CachingLoader__resetCache__IDENTIFIER');
53
-            // where "IDENTIFIER" = the string that was set during construction
54
-            add_action(
55
-                "AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache__{$identifier}",
56
-                array($this, 'reset')
57
-            );
58
-        }
59
-        // to clear ALL caches, simply do the following:
60
-        // do_action('AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache');
61
-        add_action(
62
-            'AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache',
63
-            array($this, 'reset')
64
-        );
65
-    }
66
-
67
-
68
-
69
-    /**
70
-     * @return string
71
-     */
72
-    public function identifier()
73
-    {
74
-        return $this->identifier;
75
-    }
76
-
77
-
78
-
79
-    /**
80
-     * @param string $identifier
81
-     * @throws InvalidDataTypeException
82
-     */
83
-    private function setIdentifier($identifier)
84
-    {
85
-        if ( ! is_string($identifier)) {
86
-            throw new InvalidDataTypeException('$identifier', $identifier, 'string');
87
-        }
88
-        $this->identifier = $identifier;
89
-    }
90
-
91
-
92
-
93
-    /**
94
-     * @param string $fqcn
95
-     * @param array  $arguments
96
-     * @return mixed
97
-     * @throws InvalidEntityException
98
-     * @throws ServiceNotFoundException
99
-     */
100
-    public function load($fqcn, $arguments = array())
101
-    {
102
-        $fqcn = ltrim($fqcn, '\\');
103
-        // caching can be turned off via the following code:
104
-        // add_filter('FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache', '__return_true');
105
-        if(
106
-            apply_filters(
107
-                'FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache',
108
-                false,
109
-                $this
110
-            )
111
-        ){
112
-            return $this->loader->load($fqcn, $arguments);
113
-        }
114
-        $identifier = md5($fqcn . serialize($arguments));
115
-        if($this->cache->has($identifier)){
116
-            return $this->cache->get($identifier);
117
-        }
118
-        $object = $this->loader->load($fqcn, $arguments);
119
-        $this->cache->add($object, $identifier);
120
-        return $object;
121
-    }
122
-
123
-
124
-
125
-    /**
126
-     * empties cache and calls reset() on loader if method exists
127
-     */
128
-    public function reset()
129
-    {
130
-        $this->cache->detachAll();
131
-        $this->loader->reset();
132
-    }
25
+	/**
26
+	 * @var CollectionInterface $cache
27
+	 */
28
+	protected $cache;
29
+
30
+	/**
31
+	 * @var string $identifier
32
+	 */
33
+	protected $identifier;
34
+
35
+
36
+
37
+	/**
38
+	 * CachingLoader constructor.
39
+	 *
40
+	 * @param LoaderInterface     $loader
41
+	 * @param CollectionInterface $cache
42
+	 * @param string              $identifier
43
+	 * @throws InvalidDataTypeException
44
+	 */
45
+	public function __construct(LoaderInterface $loader, CollectionInterface $cache, $identifier = '')
46
+	{
47
+		parent::__construct($loader);
48
+		$this->cache = $cache;
49
+		$this->setIdentifier($identifier);
50
+		if ($this->identifier !== '') {
51
+			// to only clear this cache, and assuming an identifier has been set, simply do the following:
52
+			// do_action('AHEE__EventEspresso\core\services\loaders\CachingLoader__resetCache__IDENTIFIER');
53
+			// where "IDENTIFIER" = the string that was set during construction
54
+			add_action(
55
+				"AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache__{$identifier}",
56
+				array($this, 'reset')
57
+			);
58
+		}
59
+		// to clear ALL caches, simply do the following:
60
+		// do_action('AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache');
61
+		add_action(
62
+			'AHEE__EventEspresso_core_services_loaders_CachingLoader__resetCache',
63
+			array($this, 'reset')
64
+		);
65
+	}
66
+
67
+
68
+
69
+	/**
70
+	 * @return string
71
+	 */
72
+	public function identifier()
73
+	{
74
+		return $this->identifier;
75
+	}
76
+
77
+
78
+
79
+	/**
80
+	 * @param string $identifier
81
+	 * @throws InvalidDataTypeException
82
+	 */
83
+	private function setIdentifier($identifier)
84
+	{
85
+		if ( ! is_string($identifier)) {
86
+			throw new InvalidDataTypeException('$identifier', $identifier, 'string');
87
+		}
88
+		$this->identifier = $identifier;
89
+	}
90
+
91
+
92
+
93
+	/**
94
+	 * @param string $fqcn
95
+	 * @param array  $arguments
96
+	 * @return mixed
97
+	 * @throws InvalidEntityException
98
+	 * @throws ServiceNotFoundException
99
+	 */
100
+	public function load($fqcn, $arguments = array())
101
+	{
102
+		$fqcn = ltrim($fqcn, '\\');
103
+		// caching can be turned off via the following code:
104
+		// add_filter('FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache', '__return_true');
105
+		if(
106
+			apply_filters(
107
+				'FHEE__EventEspresso_core_services_loaders_CachingLoader__load__bypass_cache',
108
+				false,
109
+				$this
110
+			)
111
+		){
112
+			return $this->loader->load($fqcn, $arguments);
113
+		}
114
+		$identifier = md5($fqcn . serialize($arguments));
115
+		if($this->cache->has($identifier)){
116
+			return $this->cache->get($identifier);
117
+		}
118
+		$object = $this->loader->load($fqcn, $arguments);
119
+		$this->cache->add($object, $identifier);
120
+		return $object;
121
+	}
122
+
123
+
124
+
125
+	/**
126
+	 * empties cache and calls reset() on loader if method exists
127
+	 */
128
+	public function reset()
129
+	{
130
+		$this->cache->detachAll();
131
+		$this->loader->reset();
132
+	}
133 133
 
134 134
 
135 135
 }
Please login to merge, or discard this patch.
core/services/loaders/LoaderInterface.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -9,19 +9,19 @@
 block discarded – undo
9 9
 interface LoaderInterface
10 10
 {
11 11
 
12
-    /**
13
-     * @param string $fqcn
14
-     * @param array  $arguments
15
-     * @return mixed
16
-     */
17
-    public function load($fqcn, $arguments = array());
12
+	/**
13
+	 * @param string $fqcn
14
+	 * @param array  $arguments
15
+	 * @return mixed
16
+	 */
17
+	public function load($fqcn, $arguments = array());
18 18
 
19 19
 
20 20
 
21
-    /**
22
-     * calls reset() on loader if method exists
23
-     */
24
-    public function reset();
21
+	/**
22
+	 * calls reset() on loader if method exists
23
+	 */
24
+	public function reset();
25 25
 
26 26
 }
27 27
 // End of file LoaderInterface.php
Please login to merge, or discard this patch.
core/data_migration_scripts/EE_DMS_Core_4_9_0.dms.php 1 patch
Indentation   +278 added lines, -278 removed lines patch added patch discarded remove patch
@@ -12,9 +12,9 @@  discard block
 block discarded – undo
12 12
 $stages = glob(EE_CORE . 'data_migration_scripts/4_9_0_stages/*');
13 13
 $class_to_filepath = array();
14 14
 foreach ($stages as $filepath) {
15
-    $matches = array();
16
-    preg_match('~4_9_0_stages/(.*).dmsstage.php~', $filepath, $matches);
17
-    $class_to_filepath[$matches[1]] = $filepath;
15
+	$matches = array();
16
+	preg_match('~4_9_0_stages/(.*).dmsstage.php~', $filepath, $matches);
17
+	$class_to_filepath[$matches[1]] = $filepath;
18 18
 }
19 19
 //give addons a chance to autoload their stages too
20 20
 $class_to_filepath = apply_filters('FHEE__EE_DMS_4_9_0__autoloaded_stages', $class_to_filepath);
@@ -33,68 +33,68 @@  discard block
 block discarded – undo
33 33
 class EE_DMS_Core_4_9_0 extends EE_Data_Migration_Script_Base
34 34
 {
35 35
 
36
-    /**
37
-     * return EE_DMS_Core_4_9_0
38
-     *
39
-     * @param TableManager  $table_manager
40
-     * @param TableAnalysis $table_analysis
41
-     */
42
-    public function __construct(TableManager $table_manager = null, TableAnalysis $table_analysis = null)
43
-    {
44
-        $this->_pretty_name = esc_html__("Data Update to Event Espresso 4.9.0", "event_espresso");
45
-        $this->_priority = 10;
46
-        $this->_migration_stages = array(
47
-            new EE_DMS_4_9_0_Email_System_Question(),
48
-            new EE_DMS_4_9_0_Answers_With_No_Registration(),
49
-        );
50
-        parent::__construct($table_manager, $table_analysis);
51
-    }
36
+	/**
37
+	 * return EE_DMS_Core_4_9_0
38
+	 *
39
+	 * @param TableManager  $table_manager
40
+	 * @param TableAnalysis $table_analysis
41
+	 */
42
+	public function __construct(TableManager $table_manager = null, TableAnalysis $table_analysis = null)
43
+	{
44
+		$this->_pretty_name = esc_html__("Data Update to Event Espresso 4.9.0", "event_espresso");
45
+		$this->_priority = 10;
46
+		$this->_migration_stages = array(
47
+			new EE_DMS_4_9_0_Email_System_Question(),
48
+			new EE_DMS_4_9_0_Answers_With_No_Registration(),
49
+		);
50
+		parent::__construct($table_manager, $table_analysis);
51
+	}
52 52
 
53 53
 
54 54
 
55
-    /**
56
-     * Whether to migrate or not.
57
-     *
58
-     * @param array $version_array
59
-     * @return bool
60
-     */
61
-    public function can_migrate_from_version($version_array)
62
-    {
63
-        $version_string = $version_array['Core'];
64
-        if (version_compare($version_string, '4.9.0', '<=') && version_compare($version_string, '4.8.0', '>=')) {
65
-            //			echo "$version_string can be migrated from";
66
-            return true;
67
-        } elseif ( ! $version_string) {
68
-            //			echo "no version string provided: $version_string";
69
-            //no version string provided... this must be pre 4.3
70
-            return false;//changed mind. dont want people thinking they should migrate yet because they cant
71
-        } else {
72
-            //			echo "$version_string doesnt apply";
73
-            return false;
74
-        }
75
-    }
55
+	/**
56
+	 * Whether to migrate or not.
57
+	 *
58
+	 * @param array $version_array
59
+	 * @return bool
60
+	 */
61
+	public function can_migrate_from_version($version_array)
62
+	{
63
+		$version_string = $version_array['Core'];
64
+		if (version_compare($version_string, '4.9.0', '<=') && version_compare($version_string, '4.8.0', '>=')) {
65
+			//			echo "$version_string can be migrated from";
66
+			return true;
67
+		} elseif ( ! $version_string) {
68
+			//			echo "no version string provided: $version_string";
69
+			//no version string provided... this must be pre 4.3
70
+			return false;//changed mind. dont want people thinking they should migrate yet because they cant
71
+		} else {
72
+			//			echo "$version_string doesnt apply";
73
+			return false;
74
+		}
75
+	}
76 76
 
77 77
 
78 78
 
79
-    /**
80
-     * @return bool
81
-     */
82
-    public function schema_changes_before_migration()
83
-    {
84
-        require_once(EE_HELPERS . 'EEH_Activation.helper.php');
85
-        $now_in_mysql = current_time('mysql', true);
86
-        $table_name = 'esp_answer';
87
-        $sql = " ANS_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
79
+	/**
80
+	 * @return bool
81
+	 */
82
+	public function schema_changes_before_migration()
83
+	{
84
+		require_once(EE_HELPERS . 'EEH_Activation.helper.php');
85
+		$now_in_mysql = current_time('mysql', true);
86
+		$table_name = 'esp_answer';
87
+		$sql = " ANS_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
88 88
 					REG_ID int(10) unsigned NOT NULL,
89 89
 					QST_ID int(10) unsigned NOT NULL,
90 90
 					ANS_value text NOT NULL,
91 91
 					PRIMARY KEY  (ANS_ID),
92 92
 					KEY REG_ID (REG_ID),
93 93
 					KEY QST_ID (QST_ID)";
94
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
95
-        $table_name = 'esp_attendee_meta';
96
-        $this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'ATT_email');
97
-        $sql = "ATTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
94
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
95
+		$table_name = 'esp_attendee_meta';
96
+		$this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'ATT_email');
97
+		$sql = "ATTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
98 98
 				ATT_ID bigint(20) unsigned NOT NULL,
99 99
 				ATT_fname varchar(45) NOT NULL,
100 100
 				ATT_lname varchar(45) NOT NULL,
@@ -111,9 +111,9 @@  discard block
 block discarded – undo
111 111
 				KEY ATT_email (ATT_email(191)),
112 112
 				KEY ATT_lname (ATT_lname),
113 113
 				KEY ATT_fname (ATT_fname)";
114
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
115
-        $table_name = 'esp_checkin';
116
-        $sql = "CHK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
114
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
115
+		$table_name = 'esp_checkin';
116
+		$sql = "CHK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
117 117
 				REG_ID int(10) unsigned NOT NULL,
118 118
 				DTT_ID int(10) unsigned NOT NULL,
119 119
 				CHK_in tinyint(1) unsigned NOT NULL DEFAULT 1,
@@ -121,9 +121,9 @@  discard block
 block discarded – undo
121 121
 				PRIMARY KEY  (CHK_ID),
122 122
 				KEY REG_ID (REG_ID),
123 123
 				KEY DTT_ID (DTT_ID)";
124
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
125
-        $table_name = 'esp_country';
126
-        $sql = "CNT_ISO varchar(2) NOT NULL,
124
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
125
+		$table_name = 'esp_country';
126
+		$sql = "CNT_ISO varchar(2) NOT NULL,
127 127
 				CNT_ISO3 varchar(3) NOT NULL,
128 128
 				RGN_ID tinyint(3) unsigned DEFAULT NULL,
129 129
 				CNT_name varchar(45) NOT NULL,
@@ -139,25 +139,25 @@  discard block
 block discarded – undo
139 139
 				CNT_is_EU tinyint(1) DEFAULT '0',
140 140
 				CNT_active tinyint(1) DEFAULT '0',
141 141
 				PRIMARY KEY  (CNT_ISO)";
142
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
143
-        $table_name = 'esp_currency';
144
-        $sql = "CUR_code varchar(6) NOT NULL,
142
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
143
+		$table_name = 'esp_currency';
144
+		$sql = "CUR_code varchar(6) NOT NULL,
145 145
 				CUR_single varchar(45) DEFAULT 'dollar',
146 146
 				CUR_plural varchar(45) DEFAULT 'dollars',
147 147
 				CUR_sign varchar(45) DEFAULT '$',
148 148
 				CUR_dec_plc varchar(1) NOT NULL DEFAULT '2',
149 149
 				CUR_active tinyint(1) DEFAULT '0',
150 150
 				PRIMARY KEY  (CUR_code)";
151
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
152
-        $table_name = 'esp_currency_payment_method';
153
-        $sql = "CPM_ID int(11) NOT NULL AUTO_INCREMENT,
151
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
152
+		$table_name = 'esp_currency_payment_method';
153
+		$sql = "CPM_ID int(11) NOT NULL AUTO_INCREMENT,
154 154
 				CUR_code varchar(6) NOT NULL,
155 155
 				PMD_ID int(11) NOT NULL,
156 156
 				PRIMARY KEY  (CPM_ID),
157 157
 				KEY PMD_ID (PMD_ID)";
158
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
159
-        $table_name = 'esp_datetime';
160
-        $sql = "DTT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
158
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
159
+		$table_name = 'esp_datetime';
160
+		$sql = "DTT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
161 161
 				EVT_ID bigint(20) unsigned NOT NULL,
162 162
 				DTT_name varchar(255) NOT NULL DEFAULT '',
163 163
 				DTT_description text NOT NULL,
@@ -174,25 +174,25 @@  discard block
 block discarded – undo
174 174
 				KEY DTT_EVT_start (DTT_EVT_start),
175 175
 				KEY EVT_ID (EVT_ID),
176 176
 				KEY DTT_is_primary (DTT_is_primary)";
177
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
178
-        $table_name = "esp_datetime_ticket";
179
-        $sql = "DTK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
177
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
178
+		$table_name = "esp_datetime_ticket";
179
+		$sql = "DTK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
180 180
 				DTT_ID int(10) unsigned NOT NULL,
181 181
 				TKT_ID int(10) unsigned NOT NULL,
182 182
 				PRIMARY KEY  (DTK_ID),
183 183
 				KEY DTT_ID (DTT_ID),
184 184
 				KEY TKT_ID (TKT_ID)";
185
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
186
-        $table_name = 'esp_event_message_template';
187
-        $sql = "EMT_ID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
185
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
186
+		$table_name = 'esp_event_message_template';
187
+		$sql = "EMT_ID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
188 188
 				EVT_ID bigint(20) unsigned NOT NULL DEFAULT 0,
189 189
 				GRP_ID int(10) unsigned NOT NULL DEFAULT 0,
190 190
 				PRIMARY KEY  (EMT_ID),
191 191
 				KEY EVT_ID (EVT_ID),
192 192
 				KEY GRP_ID (GRP_ID)";
193
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
194
-        $table_name = 'esp_event_meta';
195
-        $sql = "EVTM_ID int(10) NOT NULL AUTO_INCREMENT,
193
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
194
+		$table_name = 'esp_event_meta';
195
+		$sql = "EVTM_ID int(10) NOT NULL AUTO_INCREMENT,
196 196
 				EVT_ID bigint(20) unsigned NOT NULL,
197 197
 				EVT_display_desc tinyint(1) unsigned NOT NULL DEFAULT 1,
198 198
 				EVT_display_ticket_selector tinyint(1) unsigned NOT NULL DEFAULT 1,
@@ -207,34 +207,34 @@  discard block
 block discarded – undo
207 207
 				EVT_donations tinyint(1) NULL,
208 208
 				PRIMARY KEY  (EVTM_ID),
209 209
 				KEY EVT_ID (EVT_ID)";
210
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
211
-        $table_name = 'esp_event_question_group';
212
-        $sql = "EQG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
210
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
211
+		$table_name = 'esp_event_question_group';
212
+		$sql = "EQG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
213 213
 				EVT_ID bigint(20) unsigned NOT NULL,
214 214
 				QSG_ID int(10) unsigned NOT NULL,
215 215
 				EQG_primary tinyint(1) unsigned NOT NULL DEFAULT 0,
216 216
 				PRIMARY KEY  (EQG_ID),
217 217
 				KEY EVT_ID (EVT_ID),
218 218
 				KEY QSG_ID (QSG_ID)";
219
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
220
-        $table_name = 'esp_event_venue';
221
-        $sql = "EVV_ID int(11) NOT NULL AUTO_INCREMENT,
219
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
220
+		$table_name = 'esp_event_venue';
221
+		$sql = "EVV_ID int(11) NOT NULL AUTO_INCREMENT,
222 222
 				EVT_ID bigint(20) unsigned NOT NULL,
223 223
 				VNU_ID bigint(20) unsigned NOT NULL,
224 224
 				EVV_primary tinyint(1) unsigned NOT NULL DEFAULT 0,
225 225
 				PRIMARY KEY  (EVV_ID)";
226
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
227
-        $table_name = 'esp_extra_meta';
228
-        $sql = "EXM_ID int(11) NOT NULL AUTO_INCREMENT,
226
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
227
+		$table_name = 'esp_extra_meta';
228
+		$sql = "EXM_ID int(11) NOT NULL AUTO_INCREMENT,
229 229
 				OBJ_ID int(11) DEFAULT NULL,
230 230
 				EXM_type varchar(45) DEFAULT NULL,
231 231
 				EXM_key varchar(45) DEFAULT NULL,
232 232
 				EXM_value text,
233 233
 				PRIMARY KEY  (EXM_ID),
234 234
 				KEY EXM_type (EXM_type,OBJ_ID,EXM_key)";
235
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
236
-        $table_name = 'esp_extra_join';
237
-        $sql = "EXJ_ID int(11) NOT NULL AUTO_INCREMENT,
235
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
236
+		$table_name = 'esp_extra_join';
237
+		$sql = "EXJ_ID int(11) NOT NULL AUTO_INCREMENT,
238 238
 				EXJ_first_model_id varchar(6) NOT NULL,
239 239
 				EXJ_first_model_name varchar(20) NOT NULL,
240 240
 				EXJ_second_model_id varchar(6) NOT NULL,
@@ -242,9 +242,9 @@  discard block
 block discarded – undo
242 242
 				PRIMARY KEY  (EXJ_ID),
243 243
 				KEY first_model (EXJ_first_model_name,EXJ_first_model_id),
244 244
 				KEY second_model (EXJ_second_model_name,EXJ_second_model_id)";
245
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
246
-        $table_name = 'esp_line_item';
247
-        $sql = "LIN_ID int(11) NOT NULL AUTO_INCREMENT,
245
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
246
+		$table_name = 'esp_line_item';
247
+		$sql = "LIN_ID int(11) NOT NULL AUTO_INCREMENT,
248 248
 				LIN_code varchar(245) NOT NULL DEFAULT '',
249 249
 				TXN_ID int(11) DEFAULT NULL,
250 250
 				LIN_name varchar(245) NOT NULL DEFAULT '',
@@ -263,9 +263,9 @@  discard block
 block discarded – undo
263 263
 				PRIMARY KEY  (LIN_ID),
264 264
 				KEY LIN_code (LIN_code(191)),
265 265
 				KEY TXN_ID (TXN_ID)";
266
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
267
-        $table_name = 'esp_log';
268
-        $sql = "LOG_ID int(11) NOT NULL AUTO_INCREMENT,
266
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
267
+		$table_name = 'esp_log';
268
+		$sql = "LOG_ID int(11) NOT NULL AUTO_INCREMENT,
269 269
 				LOG_time datetime DEFAULT NULL,
270 270
 				OBJ_ID varchar(45) DEFAULT NULL,
271 271
 				OBJ_type varchar(45) DEFAULT NULL,
@@ -276,12 +276,12 @@  discard block
 block discarded – undo
276 276
 				KEY LOG_time (LOG_time),
277 277
 				KEY OBJ (OBJ_type,OBJ_ID),
278 278
 				KEY LOG_type (LOG_type)";
279
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
280
-        $table_name = 'esp_message';
281
-        $this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_to');
282
-        $this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_from');
283
-        $this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_subject');
284
-        $sql = "MSG_ID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
279
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
280
+		$table_name = 'esp_message';
281
+		$this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_to');
282
+		$this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_from');
283
+		$this->_get_table_manager()->dropIndexIfSizeNot($table_name, 'MSG_subject');
284
+		$sql = "MSG_ID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
285 285
 				GRP_ID int(10) unsigned NULL,
286 286
 				MSG_token varchar(255) NULL,
287 287
 				TXN_ID int(10) unsigned NULL,
@@ -313,18 +313,18 @@  discard block
 block discarded – undo
313 313
 				KEY STS_ID (STS_ID),
314 314
 				KEY MSG_created (MSG_created),
315 315
 				KEY MSG_modified (MSG_modified)";
316
-        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
317
-        $table_name = 'esp_message_template';
318
-        $sql = "MTP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
316
+		$this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
317
+		$table_name = 'esp_message_template';
318
+		$sql = "MTP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
319 319
 				GRP_ID int(10) unsigned NOT NULL,
320 320
 				MTP_context varchar(50) NOT NULL,
321 321
 				MTP_template_field varchar(30) NOT NULL,
322 322
 				MTP_content text NOT NULL,
323 323
 				PRIMARY KEY  (MTP_ID),
324 324
 				KEY GRP_ID (GRP_ID)";
325
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
326
-        $table_name = 'esp_message_template_group';
327
-        $sql = "GRP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
325
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
326
+		$table_name = 'esp_message_template_group';
327
+		$sql = "GRP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
328 328
 				MTP_user_id int(10) NOT NULL DEFAULT '1',
329 329
 				MTP_name varchar(245) NOT NULL DEFAULT '',
330 330
 				MTP_description varchar(245) NOT NULL DEFAULT '',
@@ -336,9 +336,9 @@  discard block
 block discarded – undo
336 336
 				MTP_is_active tinyint(1) NOT NULL DEFAULT '1',
337 337
 				PRIMARY KEY  (GRP_ID),
338 338
 				KEY MTP_user_id (MTP_user_id)";
339
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
340
-        $table_name = 'esp_payment';
341
-        $sql = "PAY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
339
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
340
+		$table_name = 'esp_payment';
341
+		$sql = "PAY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
342 342
 				TXN_ID int(10) unsigned DEFAULT NULL,
343 343
 				STS_ID varchar(3) DEFAULT NULL,
344 344
 				PAY_timestamp datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
@@ -355,9 +355,9 @@  discard block
 block discarded – undo
355 355
 				PRIMARY KEY  (PAY_ID),
356 356
 				KEY PAY_timestamp (PAY_timestamp),
357 357
 				KEY TXN_ID (TXN_ID)";
358
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
359
-        $table_name = 'esp_payment_method';
360
-        $sql = "PMD_ID int(11) NOT NULL AUTO_INCREMENT,
358
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
359
+		$table_name = 'esp_payment_method';
360
+		$sql = "PMD_ID int(11) NOT NULL AUTO_INCREMENT,
361 361
 				PMD_type varchar(124) DEFAULT NULL,
362 362
 				PMD_name varchar(255) DEFAULT NULL,
363 363
 				PMD_desc text,
@@ -373,24 +373,24 @@  discard block
 block discarded – undo
373 373
 				PRIMARY KEY  (PMD_ID),
374 374
 				UNIQUE KEY PMD_slug_UNIQUE (PMD_slug),
375 375
 				KEY PMD_type (PMD_type)";
376
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
377
-        $table_name = "esp_ticket_price";
378
-        $sql = "TKP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
376
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
377
+		$table_name = "esp_ticket_price";
378
+		$sql = "TKP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
379 379
 				TKT_ID int(10) unsigned NOT NULL,
380 380
 				PRC_ID int(10) unsigned NOT NULL,
381 381
 				PRIMARY KEY  (TKP_ID),
382 382
 				KEY TKT_ID (TKT_ID),
383 383
 				KEY PRC_ID (PRC_ID)";
384
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
385
-        $table_name = "esp_ticket_template";
386
-        $sql = "TTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
384
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
385
+		$table_name = "esp_ticket_template";
386
+		$sql = "TTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
387 387
 				TTM_name varchar(45) NOT NULL,
388 388
 				TTM_description text,
389 389
 				TTM_file varchar(45),
390 390
 				PRIMARY KEY  (TTM_ID)";
391
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
392
-        $table_name = 'esp_question';
393
-        $sql = 'QST_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
391
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
392
+		$table_name = 'esp_question';
393
+		$sql = 'QST_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
394 394
 				QST_display_text text NOT NULL,
395 395
 				QST_admin_label varchar(255) NOT NULL,
396 396
 				QST_system varchar(25) DEFAULT NULL,
@@ -404,18 +404,18 @@  discard block
 block discarded – undo
404 404
 				QST_deleted tinyint(2) unsigned NOT NULL DEFAULT 0,
405 405
 				PRIMARY KEY  (QST_ID),
406 406
 				KEY QST_order (QST_order)';
407
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
408
-        $table_name = 'esp_question_group_question';
409
-        $sql = "QGQ_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
407
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
408
+		$table_name = 'esp_question_group_question';
409
+		$sql = "QGQ_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
410 410
 				QSG_ID int(10) unsigned NOT NULL,
411 411
 				QST_ID int(10) unsigned NOT NULL,
412 412
 				QGQ_order int(10) unsigned NOT NULL DEFAULT 0,
413 413
 				PRIMARY KEY  (QGQ_ID),
414 414
 				KEY QST_ID (QST_ID),
415 415
 				KEY QSG_ID_order (QSG_ID,QGQ_order)";
416
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
417
-        $table_name = 'esp_question_option';
418
-        $sql = "QSO_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
416
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
417
+		$table_name = 'esp_question_option';
418
+		$sql = "QSO_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
419 419
 				QSO_value varchar(255) NOT NULL,
420 420
 				QSO_desc text NOT NULL,
421 421
 				QST_ID int(10) unsigned NOT NULL,
@@ -425,9 +425,9 @@  discard block
 block discarded – undo
425 425
 				PRIMARY KEY  (QSO_ID),
426 426
 				KEY QST_ID (QST_ID),
427 427
 				KEY QSO_order (QSO_order)";
428
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
429
-        $table_name = 'esp_registration';
430
-        $sql = "REG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
428
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
429
+		$table_name = 'esp_registration';
430
+		$sql = "REG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
431 431
 				EVT_ID bigint(20) unsigned NOT NULL,
432 432
 				ATT_ID bigint(20) unsigned NOT NULL,
433 433
 				TXN_ID int(10) unsigned NOT NULL,
@@ -451,18 +451,18 @@  discard block
 block discarded – undo
451 451
 				KEY TKT_ID (TKT_ID),
452 452
 				KEY EVT_ID (EVT_ID),
453 453
 				KEY STS_ID (STS_ID)";
454
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
455
-        $table_name = 'esp_registration_payment';
456
-        $sql = "RPY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
454
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
455
+		$table_name = 'esp_registration_payment';
456
+		$sql = "RPY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
457 457
 					  REG_ID int(10) unsigned NOT NULL,
458 458
 					  PAY_ID int(10) unsigned NULL,
459 459
 					  RPY_amount decimal(12,3) NOT NULL DEFAULT '0.00',
460 460
 					  PRIMARY KEY  (RPY_ID),
461 461
 					  KEY REG_ID (REG_ID),
462 462
 					  KEY PAY_ID (PAY_ID)";
463
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
464
-        $table_name = 'esp_state';
465
-        $sql = "STA_ID smallint(5) unsigned NOT NULL AUTO_INCREMENT,
463
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
464
+		$table_name = 'esp_state';
465
+		$sql = "STA_ID smallint(5) unsigned NOT NULL AUTO_INCREMENT,
466 466
 				CNT_ISO varchar(2) NOT NULL,
467 467
 				STA_abbrev varchar(24) NOT NULL,
468 468
 				STA_name varchar(100) NOT NULL,
@@ -470,9 +470,9 @@  discard block
 block discarded – undo
470 470
 				PRIMARY KEY  (STA_ID),
471 471
 				KEY STA_abbrev (STA_abbrev),
472 472
 				KEY CNT_ISO (CNT_ISO)";
473
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
474
-        $table_name = 'esp_status';
475
-        $sql = "STS_ID varchar(3) NOT NULL,
473
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
474
+		$table_name = 'esp_status';
475
+		$sql = "STS_ID varchar(3) NOT NULL,
476 476
 				STS_code varchar(45) NOT NULL,
477 477
 				STS_type varchar(45) NOT NULL,
478 478
 				STS_can_edit tinyint(1) NOT NULL DEFAULT 0,
@@ -480,9 +480,9 @@  discard block
 block discarded – undo
480 480
 				STS_open tinyint(1) NOT NULL DEFAULT 1,
481 481
 				UNIQUE KEY STS_ID_UNIQUE (STS_ID),
482 482
 				KEY STS_type (STS_type)";
483
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
484
-        $table_name = 'esp_transaction';
485
-        $sql = "TXN_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
483
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
484
+		$table_name = 'esp_transaction';
485
+		$sql = "TXN_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
486 486
 				TXN_timestamp datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
487 487
 				TXN_total decimal(12,3) DEFAULT '0.00',
488 488
 				TXN_paid decimal(12,3) NOT NULL DEFAULT '0.00',
@@ -494,9 +494,9 @@  discard block
 block discarded – undo
494 494
 				PRIMARY KEY  (TXN_ID),
495 495
 				KEY TXN_timestamp (TXN_timestamp),
496 496
 				KEY STS_ID (STS_ID)";
497
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
498
-        $table_name = 'esp_venue_meta';
499
-        $sql = "VNUM_ID int(11) NOT NULL AUTO_INCREMENT,
497
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
498
+		$table_name = 'esp_venue_meta';
499
+		$sql = "VNUM_ID int(11) NOT NULL AUTO_INCREMENT,
500 500
 			VNU_ID bigint(20) unsigned NOT NULL DEFAULT 0,
501 501
 			VNU_address varchar(255) DEFAULT NULL,
502 502
 			VNU_address2 varchar(255) DEFAULT NULL,
@@ -515,10 +515,10 @@  discard block
 block discarded – undo
515 515
 			KEY VNU_ID (VNU_ID),
516 516
 			KEY STA_ID (STA_ID),
517 517
 			KEY CNT_ISO (CNT_ISO)";
518
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
519
-        //modified tables
520
-        $table_name = "esp_price";
521
-        $sql = "PRC_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
518
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
519
+		//modified tables
520
+		$table_name = "esp_price";
521
+		$sql = "PRC_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
522 522
 				PRT_ID tinyint(3) unsigned NOT NULL,
523 523
 				PRC_amount decimal(12,3) NOT NULL DEFAULT '0.00',
524 524
 				PRC_name varchar(245) NOT NULL,
@@ -531,9 +531,9 @@  discard block
 block discarded – undo
531 531
 				PRC_parent int(10) unsigned DEFAULT 0,
532 532
 				PRIMARY KEY  (PRC_ID),
533 533
 				KEY PRT_ID (PRT_ID)";
534
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
535
-        $table_name = "esp_price_type";
536
-        $sql = "PRT_ID tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
534
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
535
+		$table_name = "esp_price_type";
536
+		$sql = "PRT_ID tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
537 537
 				PRT_name varchar(45) NOT NULL,
538 538
 				PBT_ID tinyint(3) unsigned NOT NULL DEFAULT '1',
539 539
 				PRT_is_percent tinyint(1) NOT NULL DEFAULT '0',
@@ -542,9 +542,9 @@  discard block
 block discarded – undo
542 542
 				PRT_deleted tinyint(1) NOT NULL DEFAULT '0',
543 543
 				UNIQUE KEY PRT_name_UNIQUE (PRT_name),
544 544
 				PRIMARY KEY  (PRT_ID)";
545
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
546
-        $table_name = "esp_ticket";
547
-        $sql = "TKT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
545
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB ');
546
+		$table_name = "esp_ticket";
547
+		$sql = "TKT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
548 548
 				TTM_ID int(10) unsigned NOT NULL,
549 549
 				TKT_name varchar(245) NOT NULL DEFAULT '',
550 550
 				TKT_description text NOT NULL,
@@ -567,9 +567,9 @@  discard block
 block discarded – undo
567 567
 				TKT_deleted tinyint(1) NOT NULL DEFAULT '0',
568 568
 				PRIMARY KEY  (TKT_ID),
569 569
 				KEY TKT_start_date (TKT_start_date)";
570
-        $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
571
-        $table_name = 'esp_question_group';
572
-        $sql = 'QSG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
570
+		$this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
571
+		$table_name = 'esp_question_group';
572
+		$sql = 'QSG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
573 573
 				QSG_name varchar(255) NOT NULL,
574 574
 				QSG_identifier varchar(100) NOT NULL,
575 575
 				QSG_desc text NULL,
@@ -582,138 +582,138 @@  discard block
 block discarded – undo
582 582
 				PRIMARY KEY  (QSG_ID),
583 583
 				UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier),
584 584
 				KEY QSG_order (QSG_order)';
585
-        $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
586
-        /** @var EE_DMS_Core_4_1_0 $script_4_1_defaults */
587
-        $script_4_1_defaults = EE_Registry::instance()->load_dms('Core_4_1_0');
588
-        //(because many need to convert old string states to foreign keys into the states table)
589
-        $script_4_1_defaults->insert_default_states();
590
-        $script_4_1_defaults->insert_default_countries();
591
-        /** @var EE_DMS_Core_4_5_0 $script_4_5_defaults */
592
-        $script_4_5_defaults = EE_Registry::instance()->load_dms('Core_4_5_0');
593
-        $script_4_5_defaults->insert_default_price_types();
594
-        $script_4_5_defaults->insert_default_prices();
595
-        $script_4_5_defaults->insert_default_tickets();
596
-        /** @var EE_DMS_Core_4_6_0 $script_4_6_defaults */
597
-        $script_4_6_defaults = EE_Registry::instance()->load_dms('Core_4_6_0');
598
-        $script_4_6_defaults->add_default_admin_only_payments();
599
-        $script_4_6_defaults->insert_default_currencies();
600
-        /** @var EE_DMS_Core_4_8_0 $script_4_8_defaults */
601
-        $script_4_8_defaults = EE_Registry::instance()->load_dms('Core_4_8_0');
602
-        $script_4_8_defaults->verify_new_countries();
603
-        $script_4_8_defaults->verify_new_currencies();
604
-        $this->verify_db_collations();
605
-        $this->verify_db_collations_again();
606
-        return true;
607
-    }
585
+		$this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB');
586
+		/** @var EE_DMS_Core_4_1_0 $script_4_1_defaults */
587
+		$script_4_1_defaults = EE_Registry::instance()->load_dms('Core_4_1_0');
588
+		//(because many need to convert old string states to foreign keys into the states table)
589
+		$script_4_1_defaults->insert_default_states();
590
+		$script_4_1_defaults->insert_default_countries();
591
+		/** @var EE_DMS_Core_4_5_0 $script_4_5_defaults */
592
+		$script_4_5_defaults = EE_Registry::instance()->load_dms('Core_4_5_0');
593
+		$script_4_5_defaults->insert_default_price_types();
594
+		$script_4_5_defaults->insert_default_prices();
595
+		$script_4_5_defaults->insert_default_tickets();
596
+		/** @var EE_DMS_Core_4_6_0 $script_4_6_defaults */
597
+		$script_4_6_defaults = EE_Registry::instance()->load_dms('Core_4_6_0');
598
+		$script_4_6_defaults->add_default_admin_only_payments();
599
+		$script_4_6_defaults->insert_default_currencies();
600
+		/** @var EE_DMS_Core_4_8_0 $script_4_8_defaults */
601
+		$script_4_8_defaults = EE_Registry::instance()->load_dms('Core_4_8_0');
602
+		$script_4_8_defaults->verify_new_countries();
603
+		$script_4_8_defaults->verify_new_currencies();
604
+		$this->verify_db_collations();
605
+		$this->verify_db_collations_again();
606
+		return true;
607
+	}
608 608
 
609 609
 
610 610
 
611
-    /**
612
-     * @return boolean
613
-     */
614
-    public function schema_changes_after_migration()
615
-    {
616
-        return true;
617
-    }
611
+	/**
612
+	 * @return boolean
613
+	 */
614
+	public function schema_changes_after_migration()
615
+	{
616
+		return true;
617
+	}
618 618
 
619 619
 
620 620
 
621
-    public function migration_page_hooks()
622
-    {
623
-    }
621
+	public function migration_page_hooks()
622
+	{
623
+	}
624 624
 
625 625
 
626 626
 
627
-    /**
628
-     * Verify all EE4 models' tables use utf8mb4 collation
629
-     *
630
-     * @return void
631
-     */
632
-    public function verify_db_collations()
633
-    {
634
-        if (get_option('ee_verified_db_collations', false)) {
635
-            return;
636
-        }
637
-        // grab tables from each model
638
-        $tables_to_check = array();
639
-        foreach (EE_Registry::instance()->non_abstract_db_models as $model_name) {
640
-            if (method_exists($model_name, 'instance')) {
641
-                $model_obj = call_user_func(array($model_name, 'instance'));
642
-                if ($model_obj instanceof EEM_Base) {
643
-                    foreach ($model_obj->get_tables() as $table) {
644
-                        if (
645
-                            strpos($table->get_table_name(), 'esp_')
646
-                            && (is_main_site()//for main tables, verify global tables
647
-                                || ! $table->is_global()//if not the main site, then only verify non-global tables (avoid doubling up)
648
-                            )
649
-                            && function_exists('maybe_convert_table_to_utf8mb4')
650
-                        ) {
651
-                            $tables_to_check[] = $table->get_table_name();
652
-                        }
653
-                    }
654
-                }
655
-            }
656
-        }
657
-        //and let's just be sure these addons' tables get migrated too. They already get handled if their addons are active
658
-        //when this code is run, but not otherwise. Once we record what tables EE added, we'll be able to use that instead
659
-        //of hard-coding this
660
-        $addon_tables = array(
661
-            //mailchimp
662
-            'esp_event_mailchimp_list_group',
663
-            'esp_event_question_mailchimp_field',
664
-            //multisite
665
-            'esp_blog_meta',
666
-            //people
667
-            'esp_people_to_post',
668
-            //promotions
669
-            'esp_promotion',
670
-            'esp_promotion_object',
671
-        );
672
-        foreach ($addon_tables as $table_name) {
673
-                $tables_to_check[] = $table_name;
674
-        }
675
-        $this->_verify_db_collations_for_tables(array_unique($tables_to_check));
676
-        //ok and now let's remember this was done (without needing to check the db schemas all over again)
677
-        add_option('ee_verified_db_collations', true, null, 'no');
678
-        //seeing how this ran with the fix from 10435, no need to check again
679
-        add_option('ee_verified_db_collations_again',true,null,'no');
680
-    }
627
+	/**
628
+	 * Verify all EE4 models' tables use utf8mb4 collation
629
+	 *
630
+	 * @return void
631
+	 */
632
+	public function verify_db_collations()
633
+	{
634
+		if (get_option('ee_verified_db_collations', false)) {
635
+			return;
636
+		}
637
+		// grab tables from each model
638
+		$tables_to_check = array();
639
+		foreach (EE_Registry::instance()->non_abstract_db_models as $model_name) {
640
+			if (method_exists($model_name, 'instance')) {
641
+				$model_obj = call_user_func(array($model_name, 'instance'));
642
+				if ($model_obj instanceof EEM_Base) {
643
+					foreach ($model_obj->get_tables() as $table) {
644
+						if (
645
+							strpos($table->get_table_name(), 'esp_')
646
+							&& (is_main_site()//for main tables, verify global tables
647
+								|| ! $table->is_global()//if not the main site, then only verify non-global tables (avoid doubling up)
648
+							)
649
+							&& function_exists('maybe_convert_table_to_utf8mb4')
650
+						) {
651
+							$tables_to_check[] = $table->get_table_name();
652
+						}
653
+					}
654
+				}
655
+			}
656
+		}
657
+		//and let's just be sure these addons' tables get migrated too. They already get handled if their addons are active
658
+		//when this code is run, but not otherwise. Once we record what tables EE added, we'll be able to use that instead
659
+		//of hard-coding this
660
+		$addon_tables = array(
661
+			//mailchimp
662
+			'esp_event_mailchimp_list_group',
663
+			'esp_event_question_mailchimp_field',
664
+			//multisite
665
+			'esp_blog_meta',
666
+			//people
667
+			'esp_people_to_post',
668
+			//promotions
669
+			'esp_promotion',
670
+			'esp_promotion_object',
671
+		);
672
+		foreach ($addon_tables as $table_name) {
673
+				$tables_to_check[] = $table_name;
674
+		}
675
+		$this->_verify_db_collations_for_tables(array_unique($tables_to_check));
676
+		//ok and now let's remember this was done (without needing to check the db schemas all over again)
677
+		add_option('ee_verified_db_collations', true, null, 'no');
678
+		//seeing how this ran with the fix from 10435, no need to check again
679
+		add_option('ee_verified_db_collations_again',true,null,'no');
680
+	}
681 681
 
682 682
 
683 683
 
684
-    /**
685
-     * Verifies DB collations because a bug was discovered on https://events.codebasehq.com/projects/event-espresso/tickets/10435
686
-     * which meant some DB collations might not have been updated
687
-     * @return void
688
-     */
689
-    public function verify_db_collations_again(){
690
-        if (get_option('ee_verified_db_collations_again', false)) {
691
-            return;
692
-        }
693
-        $tables_to_check = array(
694
-            'esp_attendee_meta',
695
-            'esp_message'
696
-        );
697
-        $this->_verify_db_collations_for_tables(array_unique($tables_to_check));
698
-        add_option('ee_verified_db_collations_again',true,null,'no');
699
-    }
684
+	/**
685
+	 * Verifies DB collations because a bug was discovered on https://events.codebasehq.com/projects/event-espresso/tickets/10435
686
+	 * which meant some DB collations might not have been updated
687
+	 * @return void
688
+	 */
689
+	public function verify_db_collations_again(){
690
+		if (get_option('ee_verified_db_collations_again', false)) {
691
+			return;
692
+		}
693
+		$tables_to_check = array(
694
+			'esp_attendee_meta',
695
+			'esp_message'
696
+		);
697
+		$this->_verify_db_collations_for_tables(array_unique($tables_to_check));
698
+		add_option('ee_verified_db_collations_again',true,null,'no');
699
+	}
700 700
 
701 701
 
702 702
 
703
-    /**
704
-     * Runs maybe_convert_table_to_utf8mb4 on the specified tables
705
-     * @param $tables_to_check
706
-     * @return boolean true if logic ran, false if it didn't
707
-     */
708
-    protected function _verify_db_collations_for_tables($tables_to_check)
709
-    {
710
-        foreach ($tables_to_check as $table_name) {
711
-            $table_name = $this->_table_analysis->ensureTableNameHasPrefix($table_name);
712
-            if ( ! apply_filters('FHEE__EE_DMS_Core_4_9_0__verify_db_collations__check_overridden', false, $table_name )
713
-                && $this->_get_table_analysis()->tableExists($table_name)
714
-            ) {
715
-                maybe_convert_table_to_utf8mb4($table_name);
716
-            }
717
-        }
718
-    }
703
+	/**
704
+	 * Runs maybe_convert_table_to_utf8mb4 on the specified tables
705
+	 * @param $tables_to_check
706
+	 * @return boolean true if logic ran, false if it didn't
707
+	 */
708
+	protected function _verify_db_collations_for_tables($tables_to_check)
709
+	{
710
+		foreach ($tables_to_check as $table_name) {
711
+			$table_name = $this->_table_analysis->ensureTableNameHasPrefix($table_name);
712
+			if ( ! apply_filters('FHEE__EE_DMS_Core_4_9_0__verify_db_collations__check_overridden', false, $table_name )
713
+				&& $this->_get_table_analysis()->tableExists($table_name)
714
+			) {
715
+				maybe_convert_table_to_utf8mb4($table_name);
716
+			}
717
+		}
718
+	}
719 719
 }
720 720
\ No newline at end of file
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Addon.lib.php 2 patches
Indentation   +989 added lines, -989 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php if (! defined('EVENT_ESPRESSO_VERSION')) {
2
-    exit('No direct script access allowed');
2
+	exit('No direct script access allowed');
3 3
 }
4 4
 
5 5
 
@@ -19,1048 +19,1048 @@  discard block
 block discarded – undo
19 19
 {
20 20
 
21 21
 
22
-    /**
23
-     * possibly truncated version of the EE core version string
24
-     *
25
-     * @var string
26
-     */
27
-    protected static $_core_version = '';
22
+	/**
23
+	 * possibly truncated version of the EE core version string
24
+	 *
25
+	 * @var string
26
+	 */
27
+	protected static $_core_version = '';
28 28
 
29
-    /**
30
-     * Holds values for registered addons
31
-     *
32
-     * @var array
33
-     */
34
-    protected static $_settings = array();
29
+	/**
30
+	 * Holds values for registered addons
31
+	 *
32
+	 * @var array
33
+	 */
34
+	protected static $_settings = array();
35 35
 
36
-    /**
37
-     * @var  array $_incompatible_addons keys are addon SLUGS
38
-     * (first argument passed to EE_Register_Addon::register()), keys are
39
-     * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
40
-     * Generally this should be used sparingly, as we don't want to muddle up
41
-     * EE core with knowledge of ALL the addons out there.
42
-     * If you want NO versions of an addon to run with a certain version of core,
43
-     * it's usually best to define the addon's "min_core_version" as part of its call
44
-     * to EE_Register_Addon::register(), rather than using this array with a super high value for its
45
-     * minimum plugin version.
46
-     * @access    protected
47
-     */
48
-    protected static $_incompatible_addons = array(
49
-        'Multi_Event_Registration' => '2.0.11.rc.002',
50
-        'Promotions'               => '1.0.0.rc.084',
51
-    );
36
+	/**
37
+	 * @var  array $_incompatible_addons keys are addon SLUGS
38
+	 * (first argument passed to EE_Register_Addon::register()), keys are
39
+	 * their MINIMUM VERSION (with all 5 parts. Eg 1.2.3.rc.004).
40
+	 * Generally this should be used sparingly, as we don't want to muddle up
41
+	 * EE core with knowledge of ALL the addons out there.
42
+	 * If you want NO versions of an addon to run with a certain version of core,
43
+	 * it's usually best to define the addon's "min_core_version" as part of its call
44
+	 * to EE_Register_Addon::register(), rather than using this array with a super high value for its
45
+	 * minimum plugin version.
46
+	 * @access    protected
47
+	 */
48
+	protected static $_incompatible_addons = array(
49
+		'Multi_Event_Registration' => '2.0.11.rc.002',
50
+		'Promotions'               => '1.0.0.rc.084',
51
+	);
52 52
 
53 53
 
54
-    /**
55
-     * We should always be comparing core to a version like '4.3.0.rc.000',
56
-     * not just '4.3.0'.
57
-     * So if the addon developer doesn't provide that full version string,
58
-     * fill in the blanks for them
59
-     *
60
-     * @param string $min_core_version
61
-     * @return string always like '4.3.0.rc.000'
62
-     */
63
-    protected static function _effective_version($min_core_version)
64
-    {
65
-        // versions: 4 . 3 . 1 . p . 123
66
-        // offsets:    0 . 1 . 2 . 3 . 4
67
-        $version_parts = explode('.', $min_core_version);
68
-        //check they specified the micro version (after 2nd period)
69
-        if (! isset($version_parts[2])) {
70
-            $version_parts[2] = '0';
71
-        }
72
-        //if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
73
-        //soon we can assume that's 'rc', but this current version is 'alpha'
74
-        if (! isset($version_parts[3])) {
75
-            $version_parts[3] = 'dev';
76
-        }
77
-        if (! isset($version_parts[4])) {
78
-            $version_parts[4] = '000';
79
-        }
80
-        return implode('.', $version_parts);
81
-    }
54
+	/**
55
+	 * We should always be comparing core to a version like '4.3.0.rc.000',
56
+	 * not just '4.3.0'.
57
+	 * So if the addon developer doesn't provide that full version string,
58
+	 * fill in the blanks for them
59
+	 *
60
+	 * @param string $min_core_version
61
+	 * @return string always like '4.3.0.rc.000'
62
+	 */
63
+	protected static function _effective_version($min_core_version)
64
+	{
65
+		// versions: 4 . 3 . 1 . p . 123
66
+		// offsets:    0 . 1 . 2 . 3 . 4
67
+		$version_parts = explode('.', $min_core_version);
68
+		//check they specified the micro version (after 2nd period)
69
+		if (! isset($version_parts[2])) {
70
+			$version_parts[2] = '0';
71
+		}
72
+		//if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
73
+		//soon we can assume that's 'rc', but this current version is 'alpha'
74
+		if (! isset($version_parts[3])) {
75
+			$version_parts[3] = 'dev';
76
+		}
77
+		if (! isset($version_parts[4])) {
78
+			$version_parts[4] = '000';
79
+		}
80
+		return implode('.', $version_parts);
81
+	}
82 82
 
83 83
 
84
-    /**
85
-     * Returns whether or not the min core version requirement of the addon is met
86
-     *
87
-     * @param string $min_core_version    the minimum core version required by the addon
88
-     * @param string $actual_core_version the actual core version, optional
89
-     * @return boolean
90
-     */
91
-    public static function _meets_min_core_version_requirement(
92
-        $min_core_version,
93
-        $actual_core_version = EVENT_ESPRESSO_VERSION
94
-    ) {
95
-        return version_compare(
96
-            self::_effective_version($actual_core_version),
97
-            self::_effective_version($min_core_version),
98
-            '>='
99
-        );
100
-    }
84
+	/**
85
+	 * Returns whether or not the min core version requirement of the addon is met
86
+	 *
87
+	 * @param string $min_core_version    the minimum core version required by the addon
88
+	 * @param string $actual_core_version the actual core version, optional
89
+	 * @return boolean
90
+	 */
91
+	public static function _meets_min_core_version_requirement(
92
+		$min_core_version,
93
+		$actual_core_version = EVENT_ESPRESSO_VERSION
94
+	) {
95
+		return version_compare(
96
+			self::_effective_version($actual_core_version),
97
+			self::_effective_version($min_core_version),
98
+			'>='
99
+		);
100
+	}
101 101
 
102 102
 
103
-    /**
104
-     *    Method for registering new EE_Addons.
105
-     * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
106
-     * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
107
-     * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
108
-     * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
109
-     * 'activate_plugin', it registers the addon still, but its components are not registered
110
-     * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
111
-     * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
112
-     * (so that we can detect that the addon has activated on the subsequent request)
113
-     *
114
-     * @since    4.3.0
115
-     * @param string                  $addon_name                           the EE_Addon's name. Required.
116
-     * @param  array                  $setup_args                           {                                    An
117
-     *                                                                      array of arguments provided for registering
118
-     *                                                                      the message type.
119
-     * @type  string                  $class_name                           the addon's main file name.
120
-     *                                                                      If left blank, generated from the addon
121
-     *                                                                      name, changes something like "calendar" to
122
-     *                                                                      "EE_Calendar"
123
-     * @type string                   $min_core_version                     the minimum version of EE Core that the
124
-     *       addon will work with. eg "4.8.1.rc.084"
125
-     * @type string                   $version                              the "software" version for the addon. eg
126
-     *       "1.0.0.p" for a first stable release, or "1.0.0.rc.043" for a version in progress
127
-     * @type string                   $main_file_path                       the full server path to the main file
128
-     *       loaded
129
-     *                                                                      directly by WP
130
-     * @type string                   $admin_path                           full server path to the folder where the
131
-     *       addon\'s admin files reside
132
-     * @type string                   $admin_callback                       a method to be called when the EE Admin is
133
-     *       first invoked, can be used for hooking into any admin page
134
-     * @type string                   $config_section                       the section name for this addon's
135
-     *       configuration settings section (defaults to "addons")
136
-     * @type string                   $config_class                         the class name for this addon's
137
-     *       configuration settings object
138
-     * @type string                   $config_name                          the class name for this addon's
139
-     *       configuration settings object
140
-     * @type string                   $autoloader_paths                     an array of class names and the full server
141
-     *       paths to those files. Required.
142
-     * @type string                   $autoloader_folders                   an array of  "full server paths" for any
143
-     *       folders containing classes that might be invoked by the addon
144
-     * @type string                   $dms_paths                            an array of full server paths to folders
145
-     *       that contain data migration scripts. Required.
146
-     * @type string                   $module_paths                         an array of full server paths to any
147
-     *       EED_Modules used by the addon
148
-     * @type string                   $shortcode_paths                      an array of full server paths to folders
149
-     *       that contain EES_Shortcodes
150
-     * @type string                   $widget_paths                         an array of full server paths to folders
151
-     *       that contain WP_Widgets
152
-     * @type string                   $pue_options
153
-     * @type array                    $capabilities                         an array indexed by role name
154
-     *                                                                      (i.e administrator,author ) and the values
155
-     *                                                                      are an array of caps to add to the role.
156
-     *                                                                      'administrator' => array(
157
-     *                                                                      'read_addon', 'edit_addon', etc.
158
-     *                                                                      ).
159
-     * @type EE_Meta_Capability_Map[] $capability_maps                      an array of EE_Meta_Capability_Map object
160
-     *       for any addons that need to register any special meta mapped capabilities.  Should be indexed where the
161
-     *       key is the EE_Meta_Capability_Map class name and the values are the arguments sent to the class.
162
-     * @type array                    $model_paths                          array of folders containing DB models
163
-     * @see      EE_Register_Model
164
-     * @type array                    $class_paths                          array of folders containing DB classes
165
-     * @see      EE_Register_Model
166
-     * @type array                    $model_extension_paths                array of folders containing DB model
167
-     *       extensions
168
-     * @see      EE_Register_Model_Extension
169
-     * @type array                    $class_extension_paths                array of folders containing DB class
170
-     *       extensions
171
-     * @see      EE_Register_Model_Extension
172
-     * @type array message_types {
173
-     *                                                                      An array of message types with the key as
174
-     *                                                                      the message type name and the values as
175
-     *                                                                      below:
176
-     * @type string                   $mtfilename                           The filename of the message type being
177
-     *       registered. This will be the main EE_{Messagetype_Name}_message_type class.
178
-     *                                                                      (eg.
179
-     *                                                                      EE_Declined_Registration_message_type.class.php)
180
-     *                                                                      Required.
181
-     * @type array                    $autoloadpaths                        An array of paths to add to the messages
182
-     *                                                                      autoloader for the new message type.
183
-     *                                                                      Required.
184
-     * @type array                    $messengers_to_activate_with          An array of messengers that this message
185
-     *                                                                      type should activate with. Each value in
186
-     *                                                                      the
187
-     *                                                                      array
188
-     *                                                                      should match the name property of a
189
-     *                                                                      EE_messenger. Optional.
190
-     * @type array                    $messengers_to_validate_with          An array of messengers that this message
191
-     *                                                                      type should validate with. Each value in
192
-     *                                                                      the
193
-     *                                                                      array
194
-     *                                                                      should match the name property of an
195
-     *                                                                      EE_messenger.
196
-     *                                                                      Optional.
197
-     *                                                                      }
198
-     * @type array                    $custom_post_types
199
-     * @type array                    $custom_taxonomies
200
-     * @type array                    $payment_method_paths                 each element is the folder containing the
201
-     *                                                                      EE_PMT_Base child class
202
-     *                                                                      (eg,
203
-     *                                                                      '/wp-content/plugins/my_plugin/Payomatic/'
204
-     *                                                                      which contains the files
205
-     *                                                                      EE_PMT_Payomatic.pm.php)
206
-     * @type array                    $default_terms
207
-     * @type array                    $namespace                            {
208
-     *                                                                      An array with two items for registering the
209
-     *                                                                      addon's namespace. (If, for some reason,
210
-     *                                                                      you
211
-     *                                                                      require additional namespaces, use
212
-     *                                                                      EventEspresso\core\Psr4Autoloader::addNamespace()
213
-     *                                                                      directly)
214
-     * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
215
-     * @type string                   $FQNS                                 the namespace prefix
216
-     * @type string                   $DIR                                  a base directory for class files in the
217
-     *       namespace.
218
-     *                                                                      }
219
-     *                                                                      }
220
-     * @throws EE_Error
221
-     * @return void
222
-     */
223
-    public static function register($addon_name = '', $setup_args = array())
224
-    {
225
-        // required fields MUST be present, so let's make sure they are.
226
-        \EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
227
-        // get class name for addon
228
-        $class_name = \EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
229
-        //setup $_settings array from incoming values.
230
-        $addon_settings = \EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
231
-        // setup PUE
232
-        \EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
233
-        // does this addon work with this version of core or WordPress ?
234
-        if (! \EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
235
-            return;
236
-        }
237
-        // register namespaces
238
-        \EE_Register_Addon::_setup_namespaces($addon_settings);
239
-        // check if this is an activation request
240
-        if (\EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
241
-            // dont bother setting up the rest of the addon atm
242
-            return;
243
-        }
244
-        // we need cars
245
-        \EE_Register_Addon::_setup_autoloaders($addon_name);
246
-        // register new models and extensions
247
-        \EE_Register_Addon::_register_models_and_extensions($addon_name);
248
-        // setup DMS
249
-        \EE_Register_Addon::_register_data_migration_scripts($addon_name);
250
-        // if config_class is present let's register config.
251
-        \EE_Register_Addon::_register_config($addon_name);
252
-        // register admin pages
253
-        \EE_Register_Addon::_register_admin_pages($addon_name);
254
-        // add to list of modules to be registered
255
-        \EE_Register_Addon::_register_modules($addon_name);
256
-        // add to list of shortcodes to be registered
257
-        \EE_Register_Addon::_register_shortcodes($addon_name);
258
-        // add to list of widgets to be registered
259
-        \EE_Register_Addon::_register_widgets($addon_name);
260
-        // register capability related stuff.
261
-        \EE_Register_Addon::_register_capabilities($addon_name);
262
-        // any message type to register?
263
-        \EE_Register_Addon::_register_message_types($addon_name);
264
-        // any custom post type/ custom capabilities or default terms to register
265
-        \EE_Register_Addon::_register_custom_post_types($addon_name);
266
-        // and any payment methods
267
-        \EE_Register_Addon::_register_payment_methods($addon_name);
268
-        // load and instantiate main addon class
269
-        $addon = \EE_Register_Addon::_load_and_init_addon_class($addon_name);
270
-        $addon->after_registration();
271
-    }
103
+	/**
104
+	 *    Method for registering new EE_Addons.
105
+	 * Should be called AFTER AHEE__EE_System__load_espresso_addons but BEFORE
106
+	 * AHEE__EE_System___detect_if_activation_or_upgrade__begin in order to register all its components. However, it
107
+	 * may also be called after the 'activate_plugin' action (when an addon is activated), because an activating addon
108
+	 * won't be loaded by WP until after AHEE__EE_System__load_espresso_addons has fired. If its called after
109
+	 * 'activate_plugin', it registers the addon still, but its components are not registered
110
+	 * (they shouldn't be needed anyways, because it's just an activation request and they won't have a chance to do
111
+	 * anything anyways). Instead, it just sets the newly-activated addon's activation indicator wp option and returns
112
+	 * (so that we can detect that the addon has activated on the subsequent request)
113
+	 *
114
+	 * @since    4.3.0
115
+	 * @param string                  $addon_name                           the EE_Addon's name. Required.
116
+	 * @param  array                  $setup_args                           {                                    An
117
+	 *                                                                      array of arguments provided for registering
118
+	 *                                                                      the message type.
119
+	 * @type  string                  $class_name                           the addon's main file name.
120
+	 *                                                                      If left blank, generated from the addon
121
+	 *                                                                      name, changes something like "calendar" to
122
+	 *                                                                      "EE_Calendar"
123
+	 * @type string                   $min_core_version                     the minimum version of EE Core that the
124
+	 *       addon will work with. eg "4.8.1.rc.084"
125
+	 * @type string                   $version                              the "software" version for the addon. eg
126
+	 *       "1.0.0.p" for a first stable release, or "1.0.0.rc.043" for a version in progress
127
+	 * @type string                   $main_file_path                       the full server path to the main file
128
+	 *       loaded
129
+	 *                                                                      directly by WP
130
+	 * @type string                   $admin_path                           full server path to the folder where the
131
+	 *       addon\'s admin files reside
132
+	 * @type string                   $admin_callback                       a method to be called when the EE Admin is
133
+	 *       first invoked, can be used for hooking into any admin page
134
+	 * @type string                   $config_section                       the section name for this addon's
135
+	 *       configuration settings section (defaults to "addons")
136
+	 * @type string                   $config_class                         the class name for this addon's
137
+	 *       configuration settings object
138
+	 * @type string                   $config_name                          the class name for this addon's
139
+	 *       configuration settings object
140
+	 * @type string                   $autoloader_paths                     an array of class names and the full server
141
+	 *       paths to those files. Required.
142
+	 * @type string                   $autoloader_folders                   an array of  "full server paths" for any
143
+	 *       folders containing classes that might be invoked by the addon
144
+	 * @type string                   $dms_paths                            an array of full server paths to folders
145
+	 *       that contain data migration scripts. Required.
146
+	 * @type string                   $module_paths                         an array of full server paths to any
147
+	 *       EED_Modules used by the addon
148
+	 * @type string                   $shortcode_paths                      an array of full server paths to folders
149
+	 *       that contain EES_Shortcodes
150
+	 * @type string                   $widget_paths                         an array of full server paths to folders
151
+	 *       that contain WP_Widgets
152
+	 * @type string                   $pue_options
153
+	 * @type array                    $capabilities                         an array indexed by role name
154
+	 *                                                                      (i.e administrator,author ) and the values
155
+	 *                                                                      are an array of caps to add to the role.
156
+	 *                                                                      'administrator' => array(
157
+	 *                                                                      'read_addon', 'edit_addon', etc.
158
+	 *                                                                      ).
159
+	 * @type EE_Meta_Capability_Map[] $capability_maps                      an array of EE_Meta_Capability_Map object
160
+	 *       for any addons that need to register any special meta mapped capabilities.  Should be indexed where the
161
+	 *       key is the EE_Meta_Capability_Map class name and the values are the arguments sent to the class.
162
+	 * @type array                    $model_paths                          array of folders containing DB models
163
+	 * @see      EE_Register_Model
164
+	 * @type array                    $class_paths                          array of folders containing DB classes
165
+	 * @see      EE_Register_Model
166
+	 * @type array                    $model_extension_paths                array of folders containing DB model
167
+	 *       extensions
168
+	 * @see      EE_Register_Model_Extension
169
+	 * @type array                    $class_extension_paths                array of folders containing DB class
170
+	 *       extensions
171
+	 * @see      EE_Register_Model_Extension
172
+	 * @type array message_types {
173
+	 *                                                                      An array of message types with the key as
174
+	 *                                                                      the message type name and the values as
175
+	 *                                                                      below:
176
+	 * @type string                   $mtfilename                           The filename of the message type being
177
+	 *       registered. This will be the main EE_{Messagetype_Name}_message_type class.
178
+	 *                                                                      (eg.
179
+	 *                                                                      EE_Declined_Registration_message_type.class.php)
180
+	 *                                                                      Required.
181
+	 * @type array                    $autoloadpaths                        An array of paths to add to the messages
182
+	 *                                                                      autoloader for the new message type.
183
+	 *                                                                      Required.
184
+	 * @type array                    $messengers_to_activate_with          An array of messengers that this message
185
+	 *                                                                      type should activate with. Each value in
186
+	 *                                                                      the
187
+	 *                                                                      array
188
+	 *                                                                      should match the name property of a
189
+	 *                                                                      EE_messenger. Optional.
190
+	 * @type array                    $messengers_to_validate_with          An array of messengers that this message
191
+	 *                                                                      type should validate with. Each value in
192
+	 *                                                                      the
193
+	 *                                                                      array
194
+	 *                                                                      should match the name property of an
195
+	 *                                                                      EE_messenger.
196
+	 *                                                                      Optional.
197
+	 *                                                                      }
198
+	 * @type array                    $custom_post_types
199
+	 * @type array                    $custom_taxonomies
200
+	 * @type array                    $payment_method_paths                 each element is the folder containing the
201
+	 *                                                                      EE_PMT_Base child class
202
+	 *                                                                      (eg,
203
+	 *                                                                      '/wp-content/plugins/my_plugin/Payomatic/'
204
+	 *                                                                      which contains the files
205
+	 *                                                                      EE_PMT_Payomatic.pm.php)
206
+	 * @type array                    $default_terms
207
+	 * @type array                    $namespace                            {
208
+	 *                                                                      An array with two items for registering the
209
+	 *                                                                      addon's namespace. (If, for some reason,
210
+	 *                                                                      you
211
+	 *                                                                      require additional namespaces, use
212
+	 *                                                                      EventEspresso\core\Psr4Autoloader::addNamespace()
213
+	 *                                                                      directly)
214
+	 * @see      EventEspresso\core\Psr4Autoloader::addNamespace()
215
+	 * @type string                   $FQNS                                 the namespace prefix
216
+	 * @type string                   $DIR                                  a base directory for class files in the
217
+	 *       namespace.
218
+	 *                                                                      }
219
+	 *                                                                      }
220
+	 * @throws EE_Error
221
+	 * @return void
222
+	 */
223
+	public static function register($addon_name = '', $setup_args = array())
224
+	{
225
+		// required fields MUST be present, so let's make sure they are.
226
+		\EE_Register_Addon::_verify_parameters($addon_name, $setup_args);
227
+		// get class name for addon
228
+		$class_name = \EE_Register_Addon::_parse_class_name($addon_name, $setup_args);
229
+		//setup $_settings array from incoming values.
230
+		$addon_settings = \EE_Register_Addon::_get_addon_settings($class_name, $setup_args);
231
+		// setup PUE
232
+		\EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
233
+		// does this addon work with this version of core or WordPress ?
234
+		if (! \EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
235
+			return;
236
+		}
237
+		// register namespaces
238
+		\EE_Register_Addon::_setup_namespaces($addon_settings);
239
+		// check if this is an activation request
240
+		if (\EE_Register_Addon::_addon_activation($addon_name, $addon_settings)) {
241
+			// dont bother setting up the rest of the addon atm
242
+			return;
243
+		}
244
+		// we need cars
245
+		\EE_Register_Addon::_setup_autoloaders($addon_name);
246
+		// register new models and extensions
247
+		\EE_Register_Addon::_register_models_and_extensions($addon_name);
248
+		// setup DMS
249
+		\EE_Register_Addon::_register_data_migration_scripts($addon_name);
250
+		// if config_class is present let's register config.
251
+		\EE_Register_Addon::_register_config($addon_name);
252
+		// register admin pages
253
+		\EE_Register_Addon::_register_admin_pages($addon_name);
254
+		// add to list of modules to be registered
255
+		\EE_Register_Addon::_register_modules($addon_name);
256
+		// add to list of shortcodes to be registered
257
+		\EE_Register_Addon::_register_shortcodes($addon_name);
258
+		// add to list of widgets to be registered
259
+		\EE_Register_Addon::_register_widgets($addon_name);
260
+		// register capability related stuff.
261
+		\EE_Register_Addon::_register_capabilities($addon_name);
262
+		// any message type to register?
263
+		\EE_Register_Addon::_register_message_types($addon_name);
264
+		// any custom post type/ custom capabilities or default terms to register
265
+		\EE_Register_Addon::_register_custom_post_types($addon_name);
266
+		// and any payment methods
267
+		\EE_Register_Addon::_register_payment_methods($addon_name);
268
+		// load and instantiate main addon class
269
+		$addon = \EE_Register_Addon::_load_and_init_addon_class($addon_name);
270
+		$addon->after_registration();
271
+	}
272 272
 
273 273
 
274
-    /**
275
-     * @param string $addon_name
276
-     * @param array  $setup_args
277
-     * @return void
278
-     * @throws \EE_Error
279
-     */
280
-    private static function _verify_parameters($addon_name, array $setup_args)
281
-    {
282
-        // required fields MUST be present, so let's make sure they are.
283
-        if (empty($addon_name) || ! is_array($setup_args)) {
284
-            throw new EE_Error(
285
-                __(
286
-                    '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.',
287
-                    'event_espresso'
288
-                )
289
-            );
290
-        }
291
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
292
-            throw new EE_Error(
293
-                sprintf(
294
-                    __(
295
-                        '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',
296
-                        'event_espresso'
297
-                    ),
298
-                    implode(',', array_keys($setup_args))
299
-                )
300
-            );
301
-        }
302
-        // check that addon has not already been registered with that name
303
-        if (isset(self::$_settings[$addon_name]) && ! did_action('activate_plugin')) {
304
-            throw new EE_Error(
305
-                sprintf(
306
-                    __(
307
-                        'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
308
-                        'event_espresso'
309
-                    ),
310
-                    $addon_name
311
-                )
312
-            );
313
-        }
314
-    }
274
+	/**
275
+	 * @param string $addon_name
276
+	 * @param array  $setup_args
277
+	 * @return void
278
+	 * @throws \EE_Error
279
+	 */
280
+	private static function _verify_parameters($addon_name, array $setup_args)
281
+	{
282
+		// required fields MUST be present, so let's make sure they are.
283
+		if (empty($addon_name) || ! is_array($setup_args)) {
284
+			throw new EE_Error(
285
+				__(
286
+					'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.',
287
+					'event_espresso'
288
+				)
289
+			);
290
+		}
291
+		if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
292
+			throw new EE_Error(
293
+				sprintf(
294
+					__(
295
+						'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',
296
+						'event_espresso'
297
+					),
298
+					implode(',', array_keys($setup_args))
299
+				)
300
+			);
301
+		}
302
+		// check that addon has not already been registered with that name
303
+		if (isset(self::$_settings[$addon_name]) && ! did_action('activate_plugin')) {
304
+			throw new EE_Error(
305
+				sprintf(
306
+					__(
307
+						'An EE_Addon with the name "%s" has already been registered and each EE_Addon requires a unique name.',
308
+						'event_espresso'
309
+					),
310
+					$addon_name
311
+				)
312
+			);
313
+		}
314
+	}
315 315
 
316 316
 
317
-    /**
318
-     * @param string $addon_name
319
-     * @param array  $setup_args
320
-     * @return string
321
-     */
322
-    private static function _parse_class_name($addon_name, array $setup_args)
323
-    {
324
-        if (empty($setup_args['class_name'])) {
325
-            // generate one by first separating name with spaces
326
-            $class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
327
-            //capitalize, then replace spaces with underscores
328
-            $class_name = str_replace(' ', '_', ucwords($class_name));
329
-        } else {
330
-            $class_name = $setup_args['class_name'];
331
-        }
332
-        return strpos($class_name, 'EE_') === 0 ? $class_name : 'EE_' . $class_name;
333
-    }
317
+	/**
318
+	 * @param string $addon_name
319
+	 * @param array  $setup_args
320
+	 * @return string
321
+	 */
322
+	private static function _parse_class_name($addon_name, array $setup_args)
323
+	{
324
+		if (empty($setup_args['class_name'])) {
325
+			// generate one by first separating name with spaces
326
+			$class_name = str_replace(array('-', '_'), ' ', trim($addon_name));
327
+			//capitalize, then replace spaces with underscores
328
+			$class_name = str_replace(' ', '_', ucwords($class_name));
329
+		} else {
330
+			$class_name = $setup_args['class_name'];
331
+		}
332
+		return strpos($class_name, 'EE_') === 0 ? $class_name : 'EE_' . $class_name;
333
+	}
334 334
 
335 335
 
336
-    /**
337
-     * @param string $class_name
338
-     * @param array  $setup_args
339
-     * @return array
340
-     */
341
-    private static function _get_addon_settings($class_name, array $setup_args)
342
-    {
343
-        //setup $_settings array from incoming values.
344
-        $addon_settings = array(
345
-            // generated from the addon name, changes something like "calendar" to "EE_Calendar"
346
-            'class_name'            => $class_name,
347
-            // the addon slug for use in URLs, etc
348
-            'plugin_slug'           => isset($setup_args['plugin_slug'])
349
-                ? (string)$setup_args['plugin_slug']
350
-                : '',
351
-            // page slug to be used when generating the "Settings" link on the WP plugin page
352
-            'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
353
-                ? (string)$setup_args['plugin_action_slug']
354
-                : '',
355
-            // the "software" version for the addon
356
-            'version'               => isset($setup_args['version'])
357
-                ? (string)$setup_args['version']
358
-                : '',
359
-            // the minimum version of EE Core that the addon will work with
360
-            'min_core_version'      => isset($setup_args['min_core_version'])
361
-                ? (string)$setup_args['min_core_version']
362
-                : '',
363
-            // the minimum version of WordPress that the addon will work with
364
-            'min_wp_version'        => isset($setup_args['min_wp_version'])
365
-                ? (string)$setup_args['min_wp_version']
366
-                : EE_MIN_WP_VER_REQUIRED,
367
-            // full server path to main file (file loaded directly by WP)
368
-            'main_file_path'        => isset($setup_args['main_file_path'])
369
-                ? (string)$setup_args['main_file_path']
370
-                : '',
371
-            // path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
372
-            'admin_path'            => isset($setup_args['admin_path'])
373
-                ? (string)$setup_args['admin_path'] : '',
374
-            // a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
375
-            'admin_callback'        => isset($setup_args['admin_callback'])
376
-                ? (string)$setup_args['admin_callback']
377
-                : '',
378
-            // the section name for this addon's configuration settings section (defaults to "addons")
379
-            'config_section'        => isset($setup_args['config_section'])
380
-                ? (string)$setup_args['config_section']
381
-                : 'addons',
382
-            // the class name for this addon's configuration settings object
383
-            'config_class'          => isset($setup_args['config_class'])
384
-                ? (string)$setup_args['config_class'] : '',
385
-            //the name given to the config for this addons' configuration settings object (optional)
386
-            'config_name'           => isset($setup_args['config_name'])
387
-                ? (string)$setup_args['config_name'] : '',
388
-            // an array of "class names" => "full server paths" for any classes that might be invoked by the addon
389
-            'autoloader_paths'      => isset($setup_args['autoloader_paths'])
390
-                ? (array)$setup_args['autoloader_paths']
391
-                : array(),
392
-            // an array of  "full server paths" for any folders containing classes that might be invoked by the addon
393
-            'autoloader_folders'    => isset($setup_args['autoloader_folders'])
394
-                ? (array)$setup_args['autoloader_folders']
395
-                : array(),
396
-            // array of full server paths to any EE_DMS data migration scripts used by the addon
397
-            'dms_paths'             => isset($setup_args['dms_paths'])
398
-                ? (array)$setup_args['dms_paths']
399
-                : array(),
400
-            // array of full server paths to any EED_Modules used by the addon
401
-            'module_paths'          => isset($setup_args['module_paths'])
402
-                ? (array)$setup_args['module_paths']
403
-                : array(),
404
-            // array of full server paths to any EES_Shortcodes used by the addon
405
-            'shortcode_paths'       => isset($setup_args['shortcode_paths'])
406
-                ? (array)$setup_args['shortcode_paths']
407
-                : array(),
408
-            // array of full server paths to any WP_Widgets used by the addon
409
-            'widget_paths'          => isset($setup_args['widget_paths'])
410
-                ? (array)$setup_args['widget_paths']
411
-                : array(),
412
-            // array of PUE options used by the addon
413
-            'pue_options'           => isset($setup_args['pue_options'])
414
-                ? (array)$setup_args['pue_options']
415
-                : array(),
416
-            'message_types'         => isset($setup_args['message_types'])
417
-                ? (array)$setup_args['message_types']
418
-                : array(),
419
-            'capabilities'          => isset($setup_args['capabilities'])
420
-                ? (array)$setup_args['capabilities']
421
-                : array(),
422
-            'capability_maps'       => isset($setup_args['capability_maps'])
423
-                ? (array)$setup_args['capability_maps']
424
-                : array(),
425
-            'model_paths'           => isset($setup_args['model_paths'])
426
-                ? (array)$setup_args['model_paths']
427
-                : array(),
428
-            'class_paths'           => isset($setup_args['class_paths'])
429
-                ? (array)$setup_args['class_paths']
430
-                : array(),
431
-            'model_extension_paths' => isset($setup_args['model_extension_paths'])
432
-                ? (array)$setup_args['model_extension_paths']
433
-                : array(),
434
-            'class_extension_paths' => isset($setup_args['class_extension_paths'])
435
-                ? (array)$setup_args['class_extension_paths']
436
-                : array(),
437
-            'custom_post_types'     => isset($setup_args['custom_post_types'])
438
-                ? (array)$setup_args['custom_post_types']
439
-                : array(),
440
-            'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
441
-                ? (array)$setup_args['custom_taxonomies']
442
-                : array(),
443
-            'payment_method_paths'  => isset($setup_args['payment_method_paths'])
444
-                ? (array)$setup_args['payment_method_paths']
445
-                : array(),
446
-            'default_terms'         => isset($setup_args['default_terms'])
447
-                ? (array)$setup_args['default_terms']
448
-                : array(),
449
-            // if not empty, inserts a new table row after this plugin's row on the WP Plugins page
450
-            // that can be used for adding upgrading/marketing info
451
-            'plugins_page_row'      => isset($setup_args['plugins_page_row'])
452
-                ? $setup_args['plugins_page_row']
453
-                : '',
454
-            'namespace'             => isset(
455
-                $setup_args['namespace'],
456
-                $setup_args['namespace']['FQNS'],
457
-                $setup_args['namespace']['DIR']
458
-            )
459
-                ? (array)$setup_args['namespace']
460
-                : array(),
461
-        );
462
-        // if plugin_action_slug is NOT set, but an admin page path IS set,
463
-        // then let's just use the plugin_slug since that will be used for linking to the admin page
464
-        $addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
465
-                                                && ! empty($addon_settings['admin_path'])
466
-            ? $addon_settings['plugin_slug']
467
-            : $addon_settings['plugin_action_slug'];
468
-        // full server path to main file (file loaded directly by WP)
469
-        $addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
470
-        return $addon_settings;
471
-    }
336
+	/**
337
+	 * @param string $class_name
338
+	 * @param array  $setup_args
339
+	 * @return array
340
+	 */
341
+	private static function _get_addon_settings($class_name, array $setup_args)
342
+	{
343
+		//setup $_settings array from incoming values.
344
+		$addon_settings = array(
345
+			// generated from the addon name, changes something like "calendar" to "EE_Calendar"
346
+			'class_name'            => $class_name,
347
+			// the addon slug for use in URLs, etc
348
+			'plugin_slug'           => isset($setup_args['plugin_slug'])
349
+				? (string)$setup_args['plugin_slug']
350
+				: '',
351
+			// page slug to be used when generating the "Settings" link on the WP plugin page
352
+			'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
353
+				? (string)$setup_args['plugin_action_slug']
354
+				: '',
355
+			// the "software" version for the addon
356
+			'version'               => isset($setup_args['version'])
357
+				? (string)$setup_args['version']
358
+				: '',
359
+			// the minimum version of EE Core that the addon will work with
360
+			'min_core_version'      => isset($setup_args['min_core_version'])
361
+				? (string)$setup_args['min_core_version']
362
+				: '',
363
+			// the minimum version of WordPress that the addon will work with
364
+			'min_wp_version'        => isset($setup_args['min_wp_version'])
365
+				? (string)$setup_args['min_wp_version']
366
+				: EE_MIN_WP_VER_REQUIRED,
367
+			// full server path to main file (file loaded directly by WP)
368
+			'main_file_path'        => isset($setup_args['main_file_path'])
369
+				? (string)$setup_args['main_file_path']
370
+				: '',
371
+			// path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
372
+			'admin_path'            => isset($setup_args['admin_path'])
373
+				? (string)$setup_args['admin_path'] : '',
374
+			// a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
375
+			'admin_callback'        => isset($setup_args['admin_callback'])
376
+				? (string)$setup_args['admin_callback']
377
+				: '',
378
+			// the section name for this addon's configuration settings section (defaults to "addons")
379
+			'config_section'        => isset($setup_args['config_section'])
380
+				? (string)$setup_args['config_section']
381
+				: 'addons',
382
+			// the class name for this addon's configuration settings object
383
+			'config_class'          => isset($setup_args['config_class'])
384
+				? (string)$setup_args['config_class'] : '',
385
+			//the name given to the config for this addons' configuration settings object (optional)
386
+			'config_name'           => isset($setup_args['config_name'])
387
+				? (string)$setup_args['config_name'] : '',
388
+			// an array of "class names" => "full server paths" for any classes that might be invoked by the addon
389
+			'autoloader_paths'      => isset($setup_args['autoloader_paths'])
390
+				? (array)$setup_args['autoloader_paths']
391
+				: array(),
392
+			// an array of  "full server paths" for any folders containing classes that might be invoked by the addon
393
+			'autoloader_folders'    => isset($setup_args['autoloader_folders'])
394
+				? (array)$setup_args['autoloader_folders']
395
+				: array(),
396
+			// array of full server paths to any EE_DMS data migration scripts used by the addon
397
+			'dms_paths'             => isset($setup_args['dms_paths'])
398
+				? (array)$setup_args['dms_paths']
399
+				: array(),
400
+			// array of full server paths to any EED_Modules used by the addon
401
+			'module_paths'          => isset($setup_args['module_paths'])
402
+				? (array)$setup_args['module_paths']
403
+				: array(),
404
+			// array of full server paths to any EES_Shortcodes used by the addon
405
+			'shortcode_paths'       => isset($setup_args['shortcode_paths'])
406
+				? (array)$setup_args['shortcode_paths']
407
+				: array(),
408
+			// array of full server paths to any WP_Widgets used by the addon
409
+			'widget_paths'          => isset($setup_args['widget_paths'])
410
+				? (array)$setup_args['widget_paths']
411
+				: array(),
412
+			// array of PUE options used by the addon
413
+			'pue_options'           => isset($setup_args['pue_options'])
414
+				? (array)$setup_args['pue_options']
415
+				: array(),
416
+			'message_types'         => isset($setup_args['message_types'])
417
+				? (array)$setup_args['message_types']
418
+				: array(),
419
+			'capabilities'          => isset($setup_args['capabilities'])
420
+				? (array)$setup_args['capabilities']
421
+				: array(),
422
+			'capability_maps'       => isset($setup_args['capability_maps'])
423
+				? (array)$setup_args['capability_maps']
424
+				: array(),
425
+			'model_paths'           => isset($setup_args['model_paths'])
426
+				? (array)$setup_args['model_paths']
427
+				: array(),
428
+			'class_paths'           => isset($setup_args['class_paths'])
429
+				? (array)$setup_args['class_paths']
430
+				: array(),
431
+			'model_extension_paths' => isset($setup_args['model_extension_paths'])
432
+				? (array)$setup_args['model_extension_paths']
433
+				: array(),
434
+			'class_extension_paths' => isset($setup_args['class_extension_paths'])
435
+				? (array)$setup_args['class_extension_paths']
436
+				: array(),
437
+			'custom_post_types'     => isset($setup_args['custom_post_types'])
438
+				? (array)$setup_args['custom_post_types']
439
+				: array(),
440
+			'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
441
+				? (array)$setup_args['custom_taxonomies']
442
+				: array(),
443
+			'payment_method_paths'  => isset($setup_args['payment_method_paths'])
444
+				? (array)$setup_args['payment_method_paths']
445
+				: array(),
446
+			'default_terms'         => isset($setup_args['default_terms'])
447
+				? (array)$setup_args['default_terms']
448
+				: array(),
449
+			// if not empty, inserts a new table row after this plugin's row on the WP Plugins page
450
+			// that can be used for adding upgrading/marketing info
451
+			'plugins_page_row'      => isset($setup_args['plugins_page_row'])
452
+				? $setup_args['plugins_page_row']
453
+				: '',
454
+			'namespace'             => isset(
455
+				$setup_args['namespace'],
456
+				$setup_args['namespace']['FQNS'],
457
+				$setup_args['namespace']['DIR']
458
+			)
459
+				? (array)$setup_args['namespace']
460
+				: array(),
461
+		);
462
+		// if plugin_action_slug is NOT set, but an admin page path IS set,
463
+		// then let's just use the plugin_slug since that will be used for linking to the admin page
464
+		$addon_settings['plugin_action_slug'] = empty($addon_settings['plugin_action_slug'])
465
+												&& ! empty($addon_settings['admin_path'])
466
+			? $addon_settings['plugin_slug']
467
+			: $addon_settings['plugin_action_slug'];
468
+		// full server path to main file (file loaded directly by WP)
469
+		$addon_settings['plugin_basename'] = plugin_basename($addon_settings['main_file_path']);
470
+		return $addon_settings;
471
+	}
472 472
 
473 473
 
474
-    /**
475
-     * @param string $addon_name
476
-     * @param array  $addon_settings
477
-     * @return boolean
478
-     */
479
-    private static function _addon_is_compatible($addon_name, array $addon_settings)
480
-    {
481
-        global $wp_version;
482
-        $incompatibility_message = '';
483
-        //check whether this addon version is compatible with EE core
484
-        if (
485
-            isset(EE_Register_Addon::$_incompatible_addons[$addon_name])
486
-            && ! self::_meets_min_core_version_requirement(
487
-                EE_Register_Addon::$_incompatible_addons[$addon_name],
488
-                $addon_settings['version']
489
-            )
490
-        ) {
491
-            $incompatibility_message = sprintf(
492
-                __(
493
-                    '%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.'
494
-                ),
495
-                $addon_name,
496
-                '<br />',
497
-                EE_Register_Addon::$_incompatible_addons[$addon_name],
498
-                '<span style="font-weight: bold; color: #D54E21;">',
499
-                '</span><br />'
500
-            );
501
-        } else if (
502
-        ! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
503
-        ) {
504
-            $incompatibility_message = sprintf(
505
-                __(
506
-                    '%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".',
507
-                    'event_espresso'
508
-                ),
509
-                $addon_name,
510
-                self::_effective_version($addon_settings['min_core_version']),
511
-                self::_effective_version(espresso_version()),
512
-                '<br />',
513
-                '<span style="font-weight: bold; color: #D54E21;">',
514
-                '</span><br />'
515
-            );
516
-        } else if (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
517
-            $incompatibility_message = sprintf(
518
-                __(
519
-                    '%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.',
520
-                    'event_espresso'
521
-                ),
522
-                $addon_name,
523
-                $addon_settings['min_wp_version'],
524
-                '<br />',
525
-                '<span style="font-weight: bold; color: #D54E21;">',
526
-                '</span><br />'
527
-            );
528
-        }
529
-        if (! empty($incompatibility_message)) {
530
-            // remove 'activate' from the REQUEST
531
-            // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
532
-            unset($_GET['activate'], $_REQUEST['activate']);
533
-            if (current_user_can('activate_plugins')) {
534
-                // show an error message indicating the plugin didn't activate properly
535
-                EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
536
-            }
537
-            // BAIL FROM THE ADDON REGISTRATION PROCESS
538
-            return false;
539
-        }
540
-        // addon IS compatible
541
-        return true;
542
-    }
474
+	/**
475
+	 * @param string $addon_name
476
+	 * @param array  $addon_settings
477
+	 * @return boolean
478
+	 */
479
+	private static function _addon_is_compatible($addon_name, array $addon_settings)
480
+	{
481
+		global $wp_version;
482
+		$incompatibility_message = '';
483
+		//check whether this addon version is compatible with EE core
484
+		if (
485
+			isset(EE_Register_Addon::$_incompatible_addons[$addon_name])
486
+			&& ! self::_meets_min_core_version_requirement(
487
+				EE_Register_Addon::$_incompatible_addons[$addon_name],
488
+				$addon_settings['version']
489
+			)
490
+		) {
491
+			$incompatibility_message = sprintf(
492
+				__(
493
+					'%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.'
494
+				),
495
+				$addon_name,
496
+				'<br />',
497
+				EE_Register_Addon::$_incompatible_addons[$addon_name],
498
+				'<span style="font-weight: bold; color: #D54E21;">',
499
+				'</span><br />'
500
+			);
501
+		} else if (
502
+		! self::_meets_min_core_version_requirement($addon_settings['min_core_version'], espresso_version())
503
+		) {
504
+			$incompatibility_message = sprintf(
505
+				__(
506
+					'%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".',
507
+					'event_espresso'
508
+				),
509
+				$addon_name,
510
+				self::_effective_version($addon_settings['min_core_version']),
511
+				self::_effective_version(espresso_version()),
512
+				'<br />',
513
+				'<span style="font-weight: bold; color: #D54E21;">',
514
+				'</span><br />'
515
+			);
516
+		} else if (version_compare($wp_version, $addon_settings['min_wp_version'], '<')) {
517
+			$incompatibility_message = sprintf(
518
+				__(
519
+					'%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.',
520
+					'event_espresso'
521
+				),
522
+				$addon_name,
523
+				$addon_settings['min_wp_version'],
524
+				'<br />',
525
+				'<span style="font-weight: bold; color: #D54E21;">',
526
+				'</span><br />'
527
+			);
528
+		}
529
+		if (! empty($incompatibility_message)) {
530
+			// remove 'activate' from the REQUEST
531
+			// so WP doesn't erroneously tell the user the plugin activated fine when it didn't
532
+			unset($_GET['activate'], $_REQUEST['activate']);
533
+			if (current_user_can('activate_plugins')) {
534
+				// show an error message indicating the plugin didn't activate properly
535
+				EE_Error::add_error($incompatibility_message, __FILE__, __FUNCTION__, __LINE__);
536
+			}
537
+			// BAIL FROM THE ADDON REGISTRATION PROCESS
538
+			return false;
539
+		}
540
+		// addon IS compatible
541
+		return true;
542
+	}
543 543
 
544 544
 
545
-    /**
546
-     * if plugin update engine is being used for auto-updates,
547
-     * then let's set that up now before going any further so that ALL addons can be updated
548
-     * (not needed if PUE is not being used)
549
-     *
550
-     * @param string $addon_name
551
-     * @param string $class_name
552
-     * @param array  $setup_args
553
-     * @return void
554
-     */
555
-    private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
556
-    {
557
-        if (! empty($setup_args['pue_options'])) {
558
-            self::$_settings[$addon_name]['pue_options'] = array(
559
-                'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
560
-                    ? (string)$setup_args['pue_options']['pue_plugin_slug']
561
-                    : 'espresso_' . strtolower($class_name),
562
-                'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
563
-                    ? (string)$setup_args['pue_options']['plugin_basename']
564
-                    : plugin_basename($setup_args['main_file_path']),
565
-                'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
566
-                    ? (string)$setup_args['pue_options']['checkPeriod']
567
-                    : '24',
568
-                'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
569
-                    ? (string)$setup_args['pue_options']['use_wp_update']
570
-                    : false,
571
-            );
572
-            add_action(
573
-                'AHEE__EE_System__brew_espresso__after_pue_init',
574
-                array('EE_Register_Addon', 'load_pue_update')
575
-            );
576
-        }
577
-    }
545
+	/**
546
+	 * if plugin update engine is being used for auto-updates,
547
+	 * then let's set that up now before going any further so that ALL addons can be updated
548
+	 * (not needed if PUE is not being used)
549
+	 *
550
+	 * @param string $addon_name
551
+	 * @param string $class_name
552
+	 * @param array  $setup_args
553
+	 * @return void
554
+	 */
555
+	private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
556
+	{
557
+		if (! empty($setup_args['pue_options'])) {
558
+			self::$_settings[$addon_name]['pue_options'] = array(
559
+				'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
560
+					? (string)$setup_args['pue_options']['pue_plugin_slug']
561
+					: 'espresso_' . strtolower($class_name),
562
+				'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
563
+					? (string)$setup_args['pue_options']['plugin_basename']
564
+					: plugin_basename($setup_args['main_file_path']),
565
+				'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
566
+					? (string)$setup_args['pue_options']['checkPeriod']
567
+					: '24',
568
+				'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
569
+					? (string)$setup_args['pue_options']['use_wp_update']
570
+					: false,
571
+			);
572
+			add_action(
573
+				'AHEE__EE_System__brew_espresso__after_pue_init',
574
+				array('EE_Register_Addon', 'load_pue_update')
575
+			);
576
+		}
577
+	}
578 578
 
579 579
 
580
-    /**
581
-     * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
582
-     *
583
-     * @param array $addon_settings
584
-     * @return void
585
-     */
586
-    private static function _setup_namespaces(array $addon_settings)
587
-    {
588
-        //
589
-        if (
590
-        isset(
591
-            $addon_settings['namespace'],
592
-            $addon_settings['namespace']['FQNS'],
593
-            $addon_settings['namespace']['DIR']
594
-        )
595
-        ) {
596
-            EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
597
-                $addon_settings['namespace']['FQNS'],
598
-                $addon_settings['namespace']['DIR']
599
-            );
600
-        }
601
-    }
580
+	/**
581
+	 * register namespaces right away before any other files or classes get loaded, but AFTER the version checks
582
+	 *
583
+	 * @param array $addon_settings
584
+	 * @return void
585
+	 */
586
+	private static function _setup_namespaces(array $addon_settings)
587
+	{
588
+		//
589
+		if (
590
+		isset(
591
+			$addon_settings['namespace'],
592
+			$addon_settings['namespace']['FQNS'],
593
+			$addon_settings['namespace']['DIR']
594
+		)
595
+		) {
596
+			EE_Psr4AutoloaderInit::psr4_loader()->addNamespace(
597
+				$addon_settings['namespace']['FQNS'],
598
+				$addon_settings['namespace']['DIR']
599
+			);
600
+		}
601
+	}
602 602
 
603 603
 
604
-    /**
605
-     * @param string $addon_name
606
-     * @param array  $addon_settings
607
-     * @return bool
608
-     */
609
-    private static function _addon_activation($addon_name, array $addon_settings)
610
-    {
611
-        // this is an activation request
612
-        if (did_action('activate_plugin')) {
613
-            //to find if THIS is the addon that was activated, just check if we have already registered it or not
614
-            //(as the newly-activated addon wasn't around the first time addons were registered).
615
-            //Note: the presence of pue_options in the addon registration options will initialize the $_settings
616
-            //property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
617
-            if (! isset(self::$_settings[$addon_name])
618
-                || (isset(self::$_settings[$addon_name])
619
-                    && ! isset(self::$_settings[$addon_name]['class_name'])
620
-                )
621
-            ) {
622
-                self::$_settings[$addon_name] = $addon_settings;
623
-                $addon                        = self::_load_and_init_addon_class($addon_name);
624
-                $addon->set_activation_indicator_option();
625
-                // dont bother setting up the rest of the addon.
626
-                // we know it was just activated and the request will end soon
627
-            }
628
-            return true;
629
-        } else {
630
-            // make sure this was called in the right place!
631
-            if (
632
-                ! did_action('AHEE__EE_System__load_espresso_addons')
633
-                || did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
634
-            ) {
635
-                EE_Error::doing_it_wrong(
636
-                    __METHOD__,
637
-                    sprintf(
638
-                        __(
639
-                            '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.',
640
-                            'event_espresso'
641
-                        ),
642
-                        $addon_name
643
-                    ),
644
-                    '4.3.0'
645
-                );
646
-            }
647
-            // make sure addon settings are set correctly without overwriting anything existing
648
-            if (isset(self::$_settings[$addon_name])) {
649
-                self::$_settings[$addon_name] += $addon_settings;
650
-            } else {
651
-                self::$_settings[$addon_name] = $addon_settings;
652
-            }
653
-        }
654
-        return false;
655
-    }
604
+	/**
605
+	 * @param string $addon_name
606
+	 * @param array  $addon_settings
607
+	 * @return bool
608
+	 */
609
+	private static function _addon_activation($addon_name, array $addon_settings)
610
+	{
611
+		// this is an activation request
612
+		if (did_action('activate_plugin')) {
613
+			//to find if THIS is the addon that was activated, just check if we have already registered it or not
614
+			//(as the newly-activated addon wasn't around the first time addons were registered).
615
+			//Note: the presence of pue_options in the addon registration options will initialize the $_settings
616
+			//property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
617
+			if (! isset(self::$_settings[$addon_name])
618
+				|| (isset(self::$_settings[$addon_name])
619
+					&& ! isset(self::$_settings[$addon_name]['class_name'])
620
+				)
621
+			) {
622
+				self::$_settings[$addon_name] = $addon_settings;
623
+				$addon                        = self::_load_and_init_addon_class($addon_name);
624
+				$addon->set_activation_indicator_option();
625
+				// dont bother setting up the rest of the addon.
626
+				// we know it was just activated and the request will end soon
627
+			}
628
+			return true;
629
+		} else {
630
+			// make sure this was called in the right place!
631
+			if (
632
+				! did_action('AHEE__EE_System__load_espresso_addons')
633
+				|| did_action('AHEE__EE_System___detect_if_activation_or_upgrade__begin')
634
+			) {
635
+				EE_Error::doing_it_wrong(
636
+					__METHOD__,
637
+					sprintf(
638
+						__(
639
+							'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.',
640
+							'event_espresso'
641
+						),
642
+						$addon_name
643
+					),
644
+					'4.3.0'
645
+				);
646
+			}
647
+			// make sure addon settings are set correctly without overwriting anything existing
648
+			if (isset(self::$_settings[$addon_name])) {
649
+				self::$_settings[$addon_name] += $addon_settings;
650
+			} else {
651
+				self::$_settings[$addon_name] = $addon_settings;
652
+			}
653
+		}
654
+		return false;
655
+	}
656 656
 
657 657
 
658
-    /**
659
-     * @param string $addon_name
660
-     * @return void
661
-     * @throws \EE_Error
662
-     */
663
-    private static function _setup_autoloaders($addon_name)
664
-    {
665
-        if (! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
666
-            // setup autoloader for single file
667
-            EEH_Autoloader::instance()->register_autoloader(self::$_settings[$addon_name]['autoloader_paths']);
668
-        }
669
-        // setup autoloaders for folders
670
-        if (! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
671
-            foreach ((array)self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
672
-                EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
673
-            }
674
-        }
675
-    }
658
+	/**
659
+	 * @param string $addon_name
660
+	 * @return void
661
+	 * @throws \EE_Error
662
+	 */
663
+	private static function _setup_autoloaders($addon_name)
664
+	{
665
+		if (! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
666
+			// setup autoloader for single file
667
+			EEH_Autoloader::instance()->register_autoloader(self::$_settings[$addon_name]['autoloader_paths']);
668
+		}
669
+		// setup autoloaders for folders
670
+		if (! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
671
+			foreach ((array)self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
672
+				EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
673
+			}
674
+		}
675
+	}
676 676
 
677 677
 
678
-    /**
679
-     * register new models and extensions
680
-     *
681
-     * @param string $addon_name
682
-     * @return void
683
-     * @throws \EE_Error
684
-     */
685
-    private static function _register_models_and_extensions($addon_name)
686
-    {
687
-        // register new models
688
-        if (
689
-            ! empty(self::$_settings[$addon_name]['model_paths'])
690
-            || ! empty(self::$_settings[$addon_name]['class_paths'])
691
-        ) {
692
-            EE_Register_Model::register(
693
-                $addon_name,
694
-                array(
695
-                    'model_paths' => self::$_settings[$addon_name]['model_paths'],
696
-                    'class_paths' => self::$_settings[$addon_name]['class_paths'],
697
-                )
698
-            );
699
-        }
700
-        // register model extensions
701
-        if (
702
-            ! empty(self::$_settings[$addon_name]['model_extension_paths'])
703
-            || ! empty(self::$_settings[$addon_name]['class_extension_paths'])
704
-        ) {
705
-            EE_Register_Model_Extensions::register(
706
-                $addon_name,
707
-                array(
708
-                    'model_extension_paths' => self::$_settings[$addon_name]['model_extension_paths'],
709
-                    'class_extension_paths' => self::$_settings[$addon_name]['class_extension_paths'],
710
-                )
711
-            );
712
-        }
713
-    }
678
+	/**
679
+	 * register new models and extensions
680
+	 *
681
+	 * @param string $addon_name
682
+	 * @return void
683
+	 * @throws \EE_Error
684
+	 */
685
+	private static function _register_models_and_extensions($addon_name)
686
+	{
687
+		// register new models
688
+		if (
689
+			! empty(self::$_settings[$addon_name]['model_paths'])
690
+			|| ! empty(self::$_settings[$addon_name]['class_paths'])
691
+		) {
692
+			EE_Register_Model::register(
693
+				$addon_name,
694
+				array(
695
+					'model_paths' => self::$_settings[$addon_name]['model_paths'],
696
+					'class_paths' => self::$_settings[$addon_name]['class_paths'],
697
+				)
698
+			);
699
+		}
700
+		// register model extensions
701
+		if (
702
+			! empty(self::$_settings[$addon_name]['model_extension_paths'])
703
+			|| ! empty(self::$_settings[$addon_name]['class_extension_paths'])
704
+		) {
705
+			EE_Register_Model_Extensions::register(
706
+				$addon_name,
707
+				array(
708
+					'model_extension_paths' => self::$_settings[$addon_name]['model_extension_paths'],
709
+					'class_extension_paths' => self::$_settings[$addon_name]['class_extension_paths'],
710
+				)
711
+			);
712
+		}
713
+	}
714 714
 
715 715
 
716
-    /**
717
-     * @param string $addon_name
718
-     * @return void
719
-     * @throws \EE_Error
720
-     */
721
-    private static function _register_data_migration_scripts($addon_name)
722
-    {
723
-        // setup DMS
724
-        if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
725
-            EE_Register_Data_Migration_Scripts::register(
726
-                $addon_name,
727
-                array('dms_paths' => self::$_settings[$addon_name]['dms_paths'])
728
-            );
729
-        }
730
-    }
716
+	/**
717
+	 * @param string $addon_name
718
+	 * @return void
719
+	 * @throws \EE_Error
720
+	 */
721
+	private static function _register_data_migration_scripts($addon_name)
722
+	{
723
+		// setup DMS
724
+		if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
725
+			EE_Register_Data_Migration_Scripts::register(
726
+				$addon_name,
727
+				array('dms_paths' => self::$_settings[$addon_name]['dms_paths'])
728
+			);
729
+		}
730
+	}
731 731
 
732 732
 
733
-    /**
734
-     * @param string $addon_name
735
-     * @return void
736
-     * @throws \EE_Error
737
-     */
738
-    private static function _register_config($addon_name)
739
-    {
740
-        // if config_class is present let's register config.
741
-        if (! empty(self::$_settings[$addon_name]['config_class'])) {
742
-            EE_Register_Config::register(
743
-                self::$_settings[$addon_name]['config_class'],
744
-                array(
745
-                    'config_section' => self::$_settings[$addon_name]['config_section'],
746
-                    'config_name'    => self::$_settings[$addon_name]['config_name'],
747
-                )
748
-            );
749
-        }
750
-    }
733
+	/**
734
+	 * @param string $addon_name
735
+	 * @return void
736
+	 * @throws \EE_Error
737
+	 */
738
+	private static function _register_config($addon_name)
739
+	{
740
+		// if config_class is present let's register config.
741
+		if (! empty(self::$_settings[$addon_name]['config_class'])) {
742
+			EE_Register_Config::register(
743
+				self::$_settings[$addon_name]['config_class'],
744
+				array(
745
+					'config_section' => self::$_settings[$addon_name]['config_section'],
746
+					'config_name'    => self::$_settings[$addon_name]['config_name'],
747
+				)
748
+			);
749
+		}
750
+	}
751 751
 
752 752
 
753
-    /**
754
-     * @param string $addon_name
755
-     * @return void
756
-     * @throws \EE_Error
757
-     */
758
-    private static function _register_admin_pages($addon_name)
759
-    {
760
-        if (! empty(self::$_settings[$addon_name]['admin_path'])) {
761
-            EE_Register_Admin_Page::register(
762
-                $addon_name,
763
-                array('page_path' => self::$_settings[$addon_name]['admin_path'])
764
-            );
765
-        }
766
-    }
753
+	/**
754
+	 * @param string $addon_name
755
+	 * @return void
756
+	 * @throws \EE_Error
757
+	 */
758
+	private static function _register_admin_pages($addon_name)
759
+	{
760
+		if (! empty(self::$_settings[$addon_name]['admin_path'])) {
761
+			EE_Register_Admin_Page::register(
762
+				$addon_name,
763
+				array('page_path' => self::$_settings[$addon_name]['admin_path'])
764
+			);
765
+		}
766
+	}
767 767
 
768 768
 
769
-    /**
770
-     * @param string $addon_name
771
-     * @return void
772
-     * @throws \EE_Error
773
-     */
774
-    private static function _register_modules($addon_name)
775
-    {
776
-        if (! empty(self::$_settings[$addon_name]['module_paths'])) {
777
-            EE_Register_Module::register(
778
-                $addon_name,
779
-                array('module_paths' => self::$_settings[$addon_name]['module_paths'])
780
-            );
781
-        }
782
-    }
769
+	/**
770
+	 * @param string $addon_name
771
+	 * @return void
772
+	 * @throws \EE_Error
773
+	 */
774
+	private static function _register_modules($addon_name)
775
+	{
776
+		if (! empty(self::$_settings[$addon_name]['module_paths'])) {
777
+			EE_Register_Module::register(
778
+				$addon_name,
779
+				array('module_paths' => self::$_settings[$addon_name]['module_paths'])
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_shortcodes($addon_name)
791
-    {
792
-        if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
793
-            EE_Register_Shortcode::register(
794
-                $addon_name,
795
-                array('shortcode_paths' => self::$_settings[$addon_name]['shortcode_paths'])
796
-            );
797
-        }
798
-    }
785
+	/**
786
+	 * @param string $addon_name
787
+	 * @return void
788
+	 * @throws \EE_Error
789
+	 */
790
+	private static function _register_shortcodes($addon_name)
791
+	{
792
+		if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
793
+			EE_Register_Shortcode::register(
794
+				$addon_name,
795
+				array('shortcode_paths' => self::$_settings[$addon_name]['shortcode_paths'])
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_widgets($addon_name)
807
-    {
808
-        if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
809
-            EE_Register_Widget::register(
810
-                $addon_name,
811
-                array('widget_paths' => self::$_settings[$addon_name]['widget_paths'])
812
-            );
813
-        }
814
-    }
801
+	/**
802
+	 * @param string $addon_name
803
+	 * @return void
804
+	 * @throws \EE_Error
805
+	 */
806
+	private static function _register_widgets($addon_name)
807
+	{
808
+		if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
809
+			EE_Register_Widget::register(
810
+				$addon_name,
811
+				array('widget_paths' => self::$_settings[$addon_name]['widget_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_capabilities($addon_name)
823
-    {
824
-        if (! empty(self::$_settings[$addon_name]['capabilities'])) {
825
-            EE_Register_Capabilities::register(
826
-                $addon_name,
827
-                array(
828
-                    'capabilities'    => self::$_settings[$addon_name]['capabilities'],
829
-                    'capability_maps' => self::$_settings[$addon_name]['capability_maps'],
830
-                )
831
-            );
832
-        }
833
-    }
817
+	/**
818
+	 * @param string $addon_name
819
+	 * @return void
820
+	 * @throws \EE_Error
821
+	 */
822
+	private static function _register_capabilities($addon_name)
823
+	{
824
+		if (! empty(self::$_settings[$addon_name]['capabilities'])) {
825
+			EE_Register_Capabilities::register(
826
+				$addon_name,
827
+				array(
828
+					'capabilities'    => self::$_settings[$addon_name]['capabilities'],
829
+					'capability_maps' => self::$_settings[$addon_name]['capability_maps'],
830
+				)
831
+			);
832
+		}
833
+	}
834 834
 
835 835
 
836
-    /**
837
-     * @param string $addon_name
838
-     * @return void
839
-     * @throws \EE_Error
840
-     */
841
-    private static function _register_message_types($addon_name)
842
-    {
843
-        if (! empty(self::$_settings[$addon_name]['message_types'])) {
844
-            add_action(
845
-                'EE_Brewing_Regular___messages_caf',
846
-                array('EE_Register_Addon', 'register_message_types')
847
-            );
848
-        }
849
-    }
836
+	/**
837
+	 * @param string $addon_name
838
+	 * @return void
839
+	 * @throws \EE_Error
840
+	 */
841
+	private static function _register_message_types($addon_name)
842
+	{
843
+		if (! empty(self::$_settings[$addon_name]['message_types'])) {
844
+			add_action(
845
+				'EE_Brewing_Regular___messages_caf',
846
+				array('EE_Register_Addon', 'register_message_types')
847
+			);
848
+		}
849
+	}
850 850
 
851 851
 
852
-    /**
853
-     * @param string $addon_name
854
-     * @return void
855
-     * @throws \EE_Error
856
-     */
857
-    private static function _register_custom_post_types($addon_name)
858
-    {
859
-        if (
860
-            ! empty(self::$_settings[$addon_name]['custom_post_types'])
861
-            || ! empty(self::$_settings[$addon_name]['custom_taxonomies'])
862
-        ) {
863
-            EE_Register_CPT::register(
864
-                $addon_name,
865
-                array(
866
-                    'cpts'          => self::$_settings[$addon_name]['custom_post_types'],
867
-                    'cts'           => self::$_settings[$addon_name]['custom_taxonomies'],
868
-                    'default_terms' => self::$_settings[$addon_name]['default_terms'],
869
-                )
870
-            );
871
-        }
872
-    }
852
+	/**
853
+	 * @param string $addon_name
854
+	 * @return void
855
+	 * @throws \EE_Error
856
+	 */
857
+	private static function _register_custom_post_types($addon_name)
858
+	{
859
+		if (
860
+			! empty(self::$_settings[$addon_name]['custom_post_types'])
861
+			|| ! empty(self::$_settings[$addon_name]['custom_taxonomies'])
862
+		) {
863
+			EE_Register_CPT::register(
864
+				$addon_name,
865
+				array(
866
+					'cpts'          => self::$_settings[$addon_name]['custom_post_types'],
867
+					'cts'           => self::$_settings[$addon_name]['custom_taxonomies'],
868
+					'default_terms' => self::$_settings[$addon_name]['default_terms'],
869
+				)
870
+			);
871
+		}
872
+	}
873 873
 
874 874
 
875
-    /**
876
-     * @param string $addon_name
877
-     * @return void
878
-     * @throws \EE_Error
879
-     */
880
-    private static function _register_payment_methods($addon_name)
881
-    {
882
-        if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
883
-            EE_Register_Payment_Method::register(
884
-                $addon_name,
885
-                array('payment_method_paths' => self::$_settings[$addon_name]['payment_method_paths'])
886
-            );
887
-        }
888
-    }
875
+	/**
876
+	 * @param string $addon_name
877
+	 * @return void
878
+	 * @throws \EE_Error
879
+	 */
880
+	private static function _register_payment_methods($addon_name)
881
+	{
882
+		if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
883
+			EE_Register_Payment_Method::register(
884
+				$addon_name,
885
+				array('payment_method_paths' => self::$_settings[$addon_name]['payment_method_paths'])
886
+			);
887
+		}
888
+	}
889 889
 
890 890
 
891
-    /**
892
-     * Loads and instantiates the EE_Addon class and adds it onto the registry
893
-     *
894
-     * @param string $addon_name
895
-     * @return EE_Addon
896
-     */
897
-    private static function _load_and_init_addon_class($addon_name)
898
-    {
899
-        $addon = EE_Registry::instance()->load_addon(
900
-            dirname(self::$_settings[$addon_name]['main_file_path']),
901
-            self::$_settings[$addon_name]['class_name']
902
-        );
903
-        $addon->set_name($addon_name);
904
-        $addon->set_plugin_slug(self::$_settings[$addon_name]['plugin_slug']);
905
-        $addon->set_plugin_basename(self::$_settings[$addon_name]['plugin_basename']);
906
-        $addon->set_main_plugin_file(self::$_settings[$addon_name]['main_file_path']);
907
-        $addon->set_plugin_action_slug(self::$_settings[$addon_name]['plugin_action_slug']);
908
-        $addon->set_plugins_page_row(self::$_settings[$addon_name]['plugins_page_row']);
909
-        $addon->set_version(self::$_settings[$addon_name]['version']);
910
-        $addon->set_min_core_version(self::_effective_version(self::$_settings[$addon_name]['min_core_version']));
911
-        $addon->set_config_section(self::$_settings[$addon_name]['config_section']);
912
-        $addon->set_config_class(self::$_settings[$addon_name]['config_class']);
913
-        $addon->set_config_name(self::$_settings[$addon_name]['config_name']);
914
-        //unfortunately this can't be hooked in upon construction, because we don't have
915
-        //the plugin mainfile's path upon construction.
916
-        register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
917
-        // call any additional admin_callback functions during load_admin_controller hook
918
-        if (! empty(self::$_settings[$addon_name]['admin_callback'])) {
919
-            add_action(
920
-                'AHEE__EE_System__load_controllers__load_admin_controllers',
921
-                array($addon, self::$_settings[$addon_name]['admin_callback'])
922
-            );
923
-        }
924
-        return $addon;
925
-    }
891
+	/**
892
+	 * Loads and instantiates the EE_Addon class and adds it onto the registry
893
+	 *
894
+	 * @param string $addon_name
895
+	 * @return EE_Addon
896
+	 */
897
+	private static function _load_and_init_addon_class($addon_name)
898
+	{
899
+		$addon = EE_Registry::instance()->load_addon(
900
+			dirname(self::$_settings[$addon_name]['main_file_path']),
901
+			self::$_settings[$addon_name]['class_name']
902
+		);
903
+		$addon->set_name($addon_name);
904
+		$addon->set_plugin_slug(self::$_settings[$addon_name]['plugin_slug']);
905
+		$addon->set_plugin_basename(self::$_settings[$addon_name]['plugin_basename']);
906
+		$addon->set_main_plugin_file(self::$_settings[$addon_name]['main_file_path']);
907
+		$addon->set_plugin_action_slug(self::$_settings[$addon_name]['plugin_action_slug']);
908
+		$addon->set_plugins_page_row(self::$_settings[$addon_name]['plugins_page_row']);
909
+		$addon->set_version(self::$_settings[$addon_name]['version']);
910
+		$addon->set_min_core_version(self::_effective_version(self::$_settings[$addon_name]['min_core_version']));
911
+		$addon->set_config_section(self::$_settings[$addon_name]['config_section']);
912
+		$addon->set_config_class(self::$_settings[$addon_name]['config_class']);
913
+		$addon->set_config_name(self::$_settings[$addon_name]['config_name']);
914
+		//unfortunately this can't be hooked in upon construction, because we don't have
915
+		//the plugin mainfile's path upon construction.
916
+		register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
917
+		// call any additional admin_callback functions during load_admin_controller hook
918
+		if (! empty(self::$_settings[$addon_name]['admin_callback'])) {
919
+			add_action(
920
+				'AHEE__EE_System__load_controllers__load_admin_controllers',
921
+				array($addon, self::$_settings[$addon_name]['admin_callback'])
922
+			);
923
+		}
924
+		return $addon;
925
+	}
926 926
 
927 927
 
928
-    /**
929
-     *    load_pue_update - Update notifications
930
-     *
931
-     * @return    void
932
-     */
933
-    public static function load_pue_update()
934
-    {
935
-        // load PUE client
936
-        require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
937
-        // cycle thru settings
938
-        foreach (self::$_settings as $settings) {
939
-            if (! empty($settings['pue_options'])) {
940
-                // initiate the class and start the plugin update engine!
941
-                new PluginUpdateEngineChecker(
942
-                // host file URL
943
-                    'https://eventespresso.com',
944
-                    // plugin slug(s)
945
-                    array(
946
-                        'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
947
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
948
-                    ),
949
-                    // options
950
-                    array(
951
-                        'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
952
-                        'lang_domain'       => 'event_espresso',
953
-                        'checkPeriod'       => $settings['pue_options']['checkPeriod'],
954
-                        'option_key'        => 'site_license_key',
955
-                        'options_page_slug' => 'event_espresso',
956
-                        'plugin_basename'   => $settings['pue_options']['plugin_basename'],
957
-                        // if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
958
-                        'use_wp_update'     => $settings['pue_options']['use_wp_update'],
959
-                    )
960
-                );
961
-            }
962
-        }
963
-    }
928
+	/**
929
+	 *    load_pue_update - Update notifications
930
+	 *
931
+	 * @return    void
932
+	 */
933
+	public static function load_pue_update()
934
+	{
935
+		// load PUE client
936
+		require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
937
+		// cycle thru settings
938
+		foreach (self::$_settings as $settings) {
939
+			if (! empty($settings['pue_options'])) {
940
+				// initiate the class and start the plugin update engine!
941
+				new PluginUpdateEngineChecker(
942
+				// host file URL
943
+					'https://eventespresso.com',
944
+					// plugin slug(s)
945
+					array(
946
+						'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
947
+						'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
948
+					),
949
+					// options
950
+					array(
951
+						'apikey'            => EE_Registry::instance()->NET_CFG->core->site_license_key,
952
+						'lang_domain'       => 'event_espresso',
953
+						'checkPeriod'       => $settings['pue_options']['checkPeriod'],
954
+						'option_key'        => 'site_license_key',
955
+						'options_page_slug' => 'event_espresso',
956
+						'plugin_basename'   => $settings['pue_options']['plugin_basename'],
957
+						// if use_wp_update is TRUE it means you want FREE versions of the plugin to be updated from WP
958
+						'use_wp_update'     => $settings['pue_options']['use_wp_update'],
959
+					)
960
+				);
961
+			}
962
+		}
963
+	}
964 964
 
965 965
 
966
-    /**
967
-     * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
968
-     *
969
-     * @since 4.4.0
970
-     * @return void
971
-     * @throws \EE_Error
972
-     */
973
-    public static function register_message_types()
974
-    {
975
-        foreach (self::$_settings as $addon_name => $settings) {
976
-            if (! empty($settings['message_types'])) {
977
-                foreach ((array)$settings['message_types'] as $message_type => $message_type_settings) {
978
-                    EE_Register_Message_Type::register($message_type, $message_type_settings);
979
-                }
980
-            }
981
-        }
982
-    }
966
+	/**
967
+	 * Callback for EE_Brewing_Regular__messages_caf hook used to register message types.
968
+	 *
969
+	 * @since 4.4.0
970
+	 * @return void
971
+	 * @throws \EE_Error
972
+	 */
973
+	public static function register_message_types()
974
+	{
975
+		foreach (self::$_settings as $addon_name => $settings) {
976
+			if (! empty($settings['message_types'])) {
977
+				foreach ((array)$settings['message_types'] as $message_type => $message_type_settings) {
978
+					EE_Register_Message_Type::register($message_type, $message_type_settings);
979
+				}
980
+			}
981
+		}
982
+	}
983 983
 
984 984
 
985
-    /**
986
-     * This deregisters an addon that was previously registered with a specific addon_name.
987
-     *
988
-     * @since    4.3.0
989
-     * @param string $addon_name the name for the addon that was previously registered
990
-     * @throws EE_Error
991
-     * @return void
992
-     */
993
-    public static function deregister($addon_name = null)
994
-    {
995
-        if (isset(self::$_settings[$addon_name], self::$_settings[$addon_name]['class_name'])) {
996
-            do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
997
-            $class_name = self::$_settings[$addon_name]['class_name'];
998
-            if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
999
-                // setup DMS
1000
-                EE_Register_Data_Migration_Scripts::deregister($addon_name);
1001
-            }
1002
-            if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1003
-                // register admin page
1004
-                EE_Register_Admin_Page::deregister($addon_name);
1005
-            }
1006
-            if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1007
-                // add to list of modules to be registered
1008
-                EE_Register_Module::deregister($addon_name);
1009
-            }
1010
-            if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
1011
-                // add to list of shortcodes to be registered
1012
-                EE_Register_Shortcode::deregister($addon_name);
1013
-            }
1014
-            if (! empty(self::$_settings[$addon_name]['config_class'])) {
1015
-                // if config_class present let's register config.
1016
-                EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1017
-            }
1018
-            if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1019
-                // add to list of widgets to be registered
1020
-                EE_Register_Widget::deregister($addon_name);
1021
-            }
1022
-            if (! empty(self::$_settings[$addon_name]['model_paths'])
1023
-                ||
1024
-                ! empty(self::$_settings[$addon_name]['class_paths'])
1025
-            ) {
1026
-                // add to list of shortcodes to be registered
1027
-                EE_Register_Model::deregister($addon_name);
1028
-            }
1029
-            if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1030
-                ||
1031
-                ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1032
-            ) {
1033
-                // add to list of shortcodes to be registered
1034
-                EE_Register_Model_Extensions::deregister($addon_name);
1035
-            }
1036
-            if (! empty(self::$_settings[$addon_name]['message_types'])) {
1037
-                foreach ((array)self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
1038
-                    EE_Register_Message_Type::deregister($message_type);
1039
-                }
1040
-            }
1041
-            //deregister capabilities for addon
1042
-            if (
1043
-                ! empty(self::$_settings[$addon_name]['capabilities'])
1044
-                || ! empty(self::$_settings[$addon_name]['capability_maps'])
1045
-            ) {
1046
-                EE_Register_Capabilities::deregister($addon_name);
1047
-            }
1048
-            //deregister custom_post_types for addon
1049
-            if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1050
-                EE_Register_CPT::deregister($addon_name);
1051
-            }
1052
-            remove_action(
1053
-                'deactivate_' . EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(),
1054
-                array(EE_Registry::instance()->addons->{$class_name}, 'deactivation')
1055
-            );
1056
-            remove_action(
1057
-                'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1058
-                array(EE_Registry::instance()->addons->{$class_name}, 'initialize_db_if_no_migrations_required')
1059
-            );
1060
-            unset(EE_Registry::instance()->addons->{$class_name}, self::$_settings[$addon_name]);
1061
-            do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1062
-        }
1063
-    }
985
+	/**
986
+	 * This deregisters an addon that was previously registered with a specific addon_name.
987
+	 *
988
+	 * @since    4.3.0
989
+	 * @param string $addon_name the name for the addon that was previously registered
990
+	 * @throws EE_Error
991
+	 * @return void
992
+	 */
993
+	public static function deregister($addon_name = null)
994
+	{
995
+		if (isset(self::$_settings[$addon_name], self::$_settings[$addon_name]['class_name'])) {
996
+			do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
997
+			$class_name = self::$_settings[$addon_name]['class_name'];
998
+			if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
999
+				// setup DMS
1000
+				EE_Register_Data_Migration_Scripts::deregister($addon_name);
1001
+			}
1002
+			if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1003
+				// register admin page
1004
+				EE_Register_Admin_Page::deregister($addon_name);
1005
+			}
1006
+			if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1007
+				// add to list of modules to be registered
1008
+				EE_Register_Module::deregister($addon_name);
1009
+			}
1010
+			if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
1011
+				// add to list of shortcodes to be registered
1012
+				EE_Register_Shortcode::deregister($addon_name);
1013
+			}
1014
+			if (! empty(self::$_settings[$addon_name]['config_class'])) {
1015
+				// if config_class present let's register config.
1016
+				EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1017
+			}
1018
+			if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1019
+				// add to list of widgets to be registered
1020
+				EE_Register_Widget::deregister($addon_name);
1021
+			}
1022
+			if (! empty(self::$_settings[$addon_name]['model_paths'])
1023
+				||
1024
+				! empty(self::$_settings[$addon_name]['class_paths'])
1025
+			) {
1026
+				// add to list of shortcodes to be registered
1027
+				EE_Register_Model::deregister($addon_name);
1028
+			}
1029
+			if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1030
+				||
1031
+				! empty(self::$_settings[$addon_name]['class_extension_paths'])
1032
+			) {
1033
+				// add to list of shortcodes to be registered
1034
+				EE_Register_Model_Extensions::deregister($addon_name);
1035
+			}
1036
+			if (! empty(self::$_settings[$addon_name]['message_types'])) {
1037
+				foreach ((array)self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
1038
+					EE_Register_Message_Type::deregister($message_type);
1039
+				}
1040
+			}
1041
+			//deregister capabilities for addon
1042
+			if (
1043
+				! empty(self::$_settings[$addon_name]['capabilities'])
1044
+				|| ! empty(self::$_settings[$addon_name]['capability_maps'])
1045
+			) {
1046
+				EE_Register_Capabilities::deregister($addon_name);
1047
+			}
1048
+			//deregister custom_post_types for addon
1049
+			if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1050
+				EE_Register_CPT::deregister($addon_name);
1051
+			}
1052
+			remove_action(
1053
+				'deactivate_' . EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(),
1054
+				array(EE_Registry::instance()->addons->{$class_name}, 'deactivation')
1055
+			);
1056
+			remove_action(
1057
+				'AHEE__EE_System__perform_activations_upgrades_and_migrations',
1058
+				array(EE_Registry::instance()->addons->{$class_name}, 'initialize_db_if_no_migrations_required')
1059
+			);
1060
+			unset(EE_Registry::instance()->addons->{$class_name}, self::$_settings[$addon_name]);
1061
+			do_action('AHEE__EE_Register_Addon__deregister__after', $addon_name);
1062
+		}
1063
+	}
1064 1064
 
1065 1065
 
1066 1066
 }
Please login to merge, or discard this patch.
Spacing   +75 added lines, -75 removed lines patch added patch discarded remove patch
@@ -1,4 +1,4 @@  discard block
 block discarded – undo
1
-<?php if (! defined('EVENT_ESPRESSO_VERSION')) {
1
+<?php if ( ! defined('EVENT_ESPRESSO_VERSION')) {
2 2
     exit('No direct script access allowed');
3 3
 }
4 4
 
@@ -66,15 +66,15 @@  discard block
 block discarded – undo
66 66
         // offsets:    0 . 1 . 2 . 3 . 4
67 67
         $version_parts = explode('.', $min_core_version);
68 68
         //check they specified the micro version (after 2nd period)
69
-        if (! isset($version_parts[2])) {
69
+        if ( ! isset($version_parts[2])) {
70 70
             $version_parts[2] = '0';
71 71
         }
72 72
         //if they didn't specify the 'p', or 'rc' part. Just assume the lowest possible
73 73
         //soon we can assume that's 'rc', but this current version is 'alpha'
74
-        if (! isset($version_parts[3])) {
74
+        if ( ! isset($version_parts[3])) {
75 75
             $version_parts[3] = 'dev';
76 76
         }
77
-        if (! isset($version_parts[4])) {
77
+        if ( ! isset($version_parts[4])) {
78 78
             $version_parts[4] = '000';
79 79
         }
80 80
         return implode('.', $version_parts);
@@ -231,7 +231,7 @@  discard block
 block discarded – undo
231 231
         // setup PUE
232 232
         \EE_Register_Addon::_parse_pue_options($addon_name, $class_name, $setup_args);
233 233
         // does this addon work with this version of core or WordPress ?
234
-        if (! \EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
234
+        if ( ! \EE_Register_Addon::_addon_is_compatible($addon_name, $addon_settings)) {
235 235
             return;
236 236
         }
237 237
         // register namespaces
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
                 )
289 289
             );
290 290
         }
291
-        if (! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
291
+        if ( ! isset($setup_args['main_file_path']) || empty($setup_args['main_file_path'])) {
292 292
             throw new EE_Error(
293 293
                 sprintf(
294 294
                     __(
@@ -329,7 +329,7 @@  discard block
 block discarded – undo
329 329
         } else {
330 330
             $class_name = $setup_args['class_name'];
331 331
         }
332
-        return strpos($class_name, 'EE_') === 0 ? $class_name : 'EE_' . $class_name;
332
+        return strpos($class_name, 'EE_') === 0 ? $class_name : 'EE_'.$class_name;
333 333
     }
334 334
 
335 335
 
@@ -346,105 +346,105 @@  discard block
 block discarded – undo
346 346
             'class_name'            => $class_name,
347 347
             // the addon slug for use in URLs, etc
348 348
             'plugin_slug'           => isset($setup_args['plugin_slug'])
349
-                ? (string)$setup_args['plugin_slug']
349
+                ? (string) $setup_args['plugin_slug']
350 350
                 : '',
351 351
             // page slug to be used when generating the "Settings" link on the WP plugin page
352 352
             'plugin_action_slug'    => isset($setup_args['plugin_action_slug'])
353
-                ? (string)$setup_args['plugin_action_slug']
353
+                ? (string) $setup_args['plugin_action_slug']
354 354
                 : '',
355 355
             // the "software" version for the addon
356 356
             'version'               => isset($setup_args['version'])
357
-                ? (string)$setup_args['version']
357
+                ? (string) $setup_args['version']
358 358
                 : '',
359 359
             // the minimum version of EE Core that the addon will work with
360 360
             'min_core_version'      => isset($setup_args['min_core_version'])
361
-                ? (string)$setup_args['min_core_version']
361
+                ? (string) $setup_args['min_core_version']
362 362
                 : '',
363 363
             // the minimum version of WordPress that the addon will work with
364 364
             'min_wp_version'        => isset($setup_args['min_wp_version'])
365
-                ? (string)$setup_args['min_wp_version']
365
+                ? (string) $setup_args['min_wp_version']
366 366
                 : EE_MIN_WP_VER_REQUIRED,
367 367
             // full server path to main file (file loaded directly by WP)
368 368
             'main_file_path'        => isset($setup_args['main_file_path'])
369
-                ? (string)$setup_args['main_file_path']
369
+                ? (string) $setup_args['main_file_path']
370 370
                 : '',
371 371
             // path to folder containing files for integrating with the EE core admin and/or setting up EE admin pages
372 372
             'admin_path'            => isset($setup_args['admin_path'])
373
-                ? (string)$setup_args['admin_path'] : '',
373
+                ? (string) $setup_args['admin_path'] : '',
374 374
             // a method to be called when the EE Admin is first invoked, can be used for hooking into any admin page
375 375
             'admin_callback'        => isset($setup_args['admin_callback'])
376
-                ? (string)$setup_args['admin_callback']
376
+                ? (string) $setup_args['admin_callback']
377 377
                 : '',
378 378
             // the section name for this addon's configuration settings section (defaults to "addons")
379 379
             'config_section'        => isset($setup_args['config_section'])
380
-                ? (string)$setup_args['config_section']
380
+                ? (string) $setup_args['config_section']
381 381
                 : 'addons',
382 382
             // the class name for this addon's configuration settings object
383 383
             'config_class'          => isset($setup_args['config_class'])
384
-                ? (string)$setup_args['config_class'] : '',
384
+                ? (string) $setup_args['config_class'] : '',
385 385
             //the name given to the config for this addons' configuration settings object (optional)
386 386
             'config_name'           => isset($setup_args['config_name'])
387
-                ? (string)$setup_args['config_name'] : '',
387
+                ? (string) $setup_args['config_name'] : '',
388 388
             // an array of "class names" => "full server paths" for any classes that might be invoked by the addon
389 389
             'autoloader_paths'      => isset($setup_args['autoloader_paths'])
390
-                ? (array)$setup_args['autoloader_paths']
390
+                ? (array) $setup_args['autoloader_paths']
391 391
                 : array(),
392 392
             // an array of  "full server paths" for any folders containing classes that might be invoked by the addon
393 393
             'autoloader_folders'    => isset($setup_args['autoloader_folders'])
394
-                ? (array)$setup_args['autoloader_folders']
394
+                ? (array) $setup_args['autoloader_folders']
395 395
                 : array(),
396 396
             // array of full server paths to any EE_DMS data migration scripts used by the addon
397 397
             'dms_paths'             => isset($setup_args['dms_paths'])
398
-                ? (array)$setup_args['dms_paths']
398
+                ? (array) $setup_args['dms_paths']
399 399
                 : array(),
400 400
             // array of full server paths to any EED_Modules used by the addon
401 401
             'module_paths'          => isset($setup_args['module_paths'])
402
-                ? (array)$setup_args['module_paths']
402
+                ? (array) $setup_args['module_paths']
403 403
                 : array(),
404 404
             // array of full server paths to any EES_Shortcodes used by the addon
405 405
             'shortcode_paths'       => isset($setup_args['shortcode_paths'])
406
-                ? (array)$setup_args['shortcode_paths']
406
+                ? (array) $setup_args['shortcode_paths']
407 407
                 : array(),
408 408
             // array of full server paths to any WP_Widgets used by the addon
409 409
             'widget_paths'          => isset($setup_args['widget_paths'])
410
-                ? (array)$setup_args['widget_paths']
410
+                ? (array) $setup_args['widget_paths']
411 411
                 : array(),
412 412
             // array of PUE options used by the addon
413 413
             'pue_options'           => isset($setup_args['pue_options'])
414
-                ? (array)$setup_args['pue_options']
414
+                ? (array) $setup_args['pue_options']
415 415
                 : array(),
416 416
             'message_types'         => isset($setup_args['message_types'])
417
-                ? (array)$setup_args['message_types']
417
+                ? (array) $setup_args['message_types']
418 418
                 : array(),
419 419
             'capabilities'          => isset($setup_args['capabilities'])
420
-                ? (array)$setup_args['capabilities']
420
+                ? (array) $setup_args['capabilities']
421 421
                 : array(),
422 422
             'capability_maps'       => isset($setup_args['capability_maps'])
423
-                ? (array)$setup_args['capability_maps']
423
+                ? (array) $setup_args['capability_maps']
424 424
                 : array(),
425 425
             'model_paths'           => isset($setup_args['model_paths'])
426
-                ? (array)$setup_args['model_paths']
426
+                ? (array) $setup_args['model_paths']
427 427
                 : array(),
428 428
             'class_paths'           => isset($setup_args['class_paths'])
429
-                ? (array)$setup_args['class_paths']
429
+                ? (array) $setup_args['class_paths']
430 430
                 : array(),
431 431
             'model_extension_paths' => isset($setup_args['model_extension_paths'])
432
-                ? (array)$setup_args['model_extension_paths']
432
+                ? (array) $setup_args['model_extension_paths']
433 433
                 : array(),
434 434
             'class_extension_paths' => isset($setup_args['class_extension_paths'])
435
-                ? (array)$setup_args['class_extension_paths']
435
+                ? (array) $setup_args['class_extension_paths']
436 436
                 : array(),
437 437
             'custom_post_types'     => isset($setup_args['custom_post_types'])
438
-                ? (array)$setup_args['custom_post_types']
438
+                ? (array) $setup_args['custom_post_types']
439 439
                 : array(),
440 440
             'custom_taxonomies'     => isset($setup_args['custom_taxonomies'])
441
-                ? (array)$setup_args['custom_taxonomies']
441
+                ? (array) $setup_args['custom_taxonomies']
442 442
                 : array(),
443 443
             'payment_method_paths'  => isset($setup_args['payment_method_paths'])
444
-                ? (array)$setup_args['payment_method_paths']
444
+                ? (array) $setup_args['payment_method_paths']
445 445
                 : array(),
446 446
             'default_terms'         => isset($setup_args['default_terms'])
447
-                ? (array)$setup_args['default_terms']
447
+                ? (array) $setup_args['default_terms']
448 448
                 : array(),
449 449
             // if not empty, inserts a new table row after this plugin's row on the WP Plugins page
450 450
             // that can be used for adding upgrading/marketing info
@@ -456,7 +456,7 @@  discard block
 block discarded – undo
456 456
                 $setup_args['namespace']['FQNS'],
457 457
                 $setup_args['namespace']['DIR']
458 458
             )
459
-                ? (array)$setup_args['namespace']
459
+                ? (array) $setup_args['namespace']
460 460
                 : array(),
461 461
         );
462 462
         // if plugin_action_slug is NOT set, but an admin page path IS set,
@@ -526,7 +526,7 @@  discard block
 block discarded – undo
526 526
                 '</span><br />'
527 527
             );
528 528
         }
529
-        if (! empty($incompatibility_message)) {
529
+        if ( ! empty($incompatibility_message)) {
530 530
             // remove 'activate' from the REQUEST
531 531
             // so WP doesn't erroneously tell the user the plugin activated fine when it didn't
532 532
             unset($_GET['activate'], $_REQUEST['activate']);
@@ -554,19 +554,19 @@  discard block
 block discarded – undo
554 554
      */
555 555
     private static function _parse_pue_options($addon_name, $class_name, array $setup_args)
556 556
     {
557
-        if (! empty($setup_args['pue_options'])) {
557
+        if ( ! empty($setup_args['pue_options'])) {
558 558
             self::$_settings[$addon_name]['pue_options'] = array(
559 559
                 'pue_plugin_slug' => isset($setup_args['pue_options']['pue_plugin_slug'])
560
-                    ? (string)$setup_args['pue_options']['pue_plugin_slug']
561
-                    : 'espresso_' . strtolower($class_name),
560
+                    ? (string) $setup_args['pue_options']['pue_plugin_slug']
561
+                    : 'espresso_'.strtolower($class_name),
562 562
                 'plugin_basename' => isset($setup_args['pue_options']['plugin_basename'])
563
-                    ? (string)$setup_args['pue_options']['plugin_basename']
563
+                    ? (string) $setup_args['pue_options']['plugin_basename']
564 564
                     : plugin_basename($setup_args['main_file_path']),
565 565
                 'checkPeriod'     => isset($setup_args['pue_options']['checkPeriod'])
566
-                    ? (string)$setup_args['pue_options']['checkPeriod']
566
+                    ? (string) $setup_args['pue_options']['checkPeriod']
567 567
                     : '24',
568 568
                 'use_wp_update'   => isset($setup_args['pue_options']['use_wp_update'])
569
-                    ? (string)$setup_args['pue_options']['use_wp_update']
569
+                    ? (string) $setup_args['pue_options']['use_wp_update']
570 570
                     : false,
571 571
             );
572 572
             add_action(
@@ -614,7 +614,7 @@  discard block
 block discarded – undo
614 614
             //(as the newly-activated addon wasn't around the first time addons were registered).
615 615
             //Note: the presence of pue_options in the addon registration options will initialize the $_settings
616 616
             //property for the add-on, but the add-on is only partially initialized.  Hence, the additional check.
617
-            if (! isset(self::$_settings[$addon_name])
617
+            if ( ! isset(self::$_settings[$addon_name])
618 618
                 || (isset(self::$_settings[$addon_name])
619 619
                     && ! isset(self::$_settings[$addon_name]['class_name'])
620 620
                 )
@@ -662,13 +662,13 @@  discard block
 block discarded – undo
662 662
      */
663 663
     private static function _setup_autoloaders($addon_name)
664 664
     {
665
-        if (! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
665
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_paths'])) {
666 666
             // setup autoloader for single file
667 667
             EEH_Autoloader::instance()->register_autoloader(self::$_settings[$addon_name]['autoloader_paths']);
668 668
         }
669 669
         // setup autoloaders for folders
670
-        if (! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
671
-            foreach ((array)self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
670
+        if ( ! empty(self::$_settings[$addon_name]['autoloader_folders'])) {
671
+            foreach ((array) self::$_settings[$addon_name]['autoloader_folders'] as $autoloader_folder) {
672 672
                 EEH_Autoloader::register_autoloaders_for_each_file_in_folder($autoloader_folder);
673 673
             }
674 674
         }
@@ -721,7 +721,7 @@  discard block
 block discarded – undo
721 721
     private static function _register_data_migration_scripts($addon_name)
722 722
     {
723 723
         // setup DMS
724
-        if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
724
+        if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
725 725
             EE_Register_Data_Migration_Scripts::register(
726 726
                 $addon_name,
727 727
                 array('dms_paths' => self::$_settings[$addon_name]['dms_paths'])
@@ -738,7 +738,7 @@  discard block
 block discarded – undo
738 738
     private static function _register_config($addon_name)
739 739
     {
740 740
         // if config_class is present let's register config.
741
-        if (! empty(self::$_settings[$addon_name]['config_class'])) {
741
+        if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
742 742
             EE_Register_Config::register(
743 743
                 self::$_settings[$addon_name]['config_class'],
744 744
                 array(
@@ -757,7 +757,7 @@  discard block
 block discarded – undo
757 757
      */
758 758
     private static function _register_admin_pages($addon_name)
759 759
     {
760
-        if (! empty(self::$_settings[$addon_name]['admin_path'])) {
760
+        if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
761 761
             EE_Register_Admin_Page::register(
762 762
                 $addon_name,
763 763
                 array('page_path' => self::$_settings[$addon_name]['admin_path'])
@@ -773,7 +773,7 @@  discard block
 block discarded – undo
773 773
      */
774 774
     private static function _register_modules($addon_name)
775 775
     {
776
-        if (! empty(self::$_settings[$addon_name]['module_paths'])) {
776
+        if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
777 777
             EE_Register_Module::register(
778 778
                 $addon_name,
779 779
                 array('module_paths' => self::$_settings[$addon_name]['module_paths'])
@@ -789,7 +789,7 @@  discard block
 block discarded – undo
789 789
      */
790 790
     private static function _register_shortcodes($addon_name)
791 791
     {
792
-        if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
792
+        if ( ! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
793 793
             EE_Register_Shortcode::register(
794 794
                 $addon_name,
795 795
                 array('shortcode_paths' => self::$_settings[$addon_name]['shortcode_paths'])
@@ -805,7 +805,7 @@  discard block
 block discarded – undo
805 805
      */
806 806
     private static function _register_widgets($addon_name)
807 807
     {
808
-        if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
808
+        if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
809 809
             EE_Register_Widget::register(
810 810
                 $addon_name,
811 811
                 array('widget_paths' => self::$_settings[$addon_name]['widget_paths'])
@@ -821,7 +821,7 @@  discard block
 block discarded – undo
821 821
      */
822 822
     private static function _register_capabilities($addon_name)
823 823
     {
824
-        if (! empty(self::$_settings[$addon_name]['capabilities'])) {
824
+        if ( ! empty(self::$_settings[$addon_name]['capabilities'])) {
825 825
             EE_Register_Capabilities::register(
826 826
                 $addon_name,
827 827
                 array(
@@ -840,7 +840,7 @@  discard block
 block discarded – undo
840 840
      */
841 841
     private static function _register_message_types($addon_name)
842 842
     {
843
-        if (! empty(self::$_settings[$addon_name]['message_types'])) {
843
+        if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
844 844
             add_action(
845 845
                 'EE_Brewing_Regular___messages_caf',
846 846
                 array('EE_Register_Addon', 'register_message_types')
@@ -879,7 +879,7 @@  discard block
 block discarded – undo
879 879
      */
880 880
     private static function _register_payment_methods($addon_name)
881 881
     {
882
-        if (! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
882
+        if ( ! empty(self::$_settings[$addon_name]['payment_method_paths'])) {
883 883
             EE_Register_Payment_Method::register(
884 884
                 $addon_name,
885 885
                 array('payment_method_paths' => self::$_settings[$addon_name]['payment_method_paths'])
@@ -915,7 +915,7 @@  discard block
 block discarded – undo
915 915
         //the plugin mainfile's path upon construction.
916 916
         register_deactivation_hook($addon->get_main_plugin_file(), array($addon, 'deactivation'));
917 917
         // call any additional admin_callback functions during load_admin_controller hook
918
-        if (! empty(self::$_settings[$addon_name]['admin_callback'])) {
918
+        if ( ! empty(self::$_settings[$addon_name]['admin_callback'])) {
919 919
             add_action(
920 920
                 'AHEE__EE_System__load_controllers__load_admin_controllers',
921 921
                 array($addon, self::$_settings[$addon_name]['admin_callback'])
@@ -933,10 +933,10 @@  discard block
 block discarded – undo
933 933
     public static function load_pue_update()
934 934
     {
935 935
         // load PUE client
936
-        require_once EE_THIRD_PARTY . 'pue' . DS . 'pue-client.php';
936
+        require_once EE_THIRD_PARTY.'pue'.DS.'pue-client.php';
937 937
         // cycle thru settings
938 938
         foreach (self::$_settings as $settings) {
939
-            if (! empty($settings['pue_options'])) {
939
+            if ( ! empty($settings['pue_options'])) {
940 940
                 // initiate the class and start the plugin update engine!
941 941
                 new PluginUpdateEngineChecker(
942 942
                 // host file URL
@@ -944,7 +944,7 @@  discard block
 block discarded – undo
944 944
                     // plugin slug(s)
945 945
                     array(
946 946
                         'premium'    => array('p' => $settings['pue_options']['pue_plugin_slug']),
947
-                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'] . '-pr'),
947
+                        'prerelease' => array('beta' => $settings['pue_options']['pue_plugin_slug'].'-pr'),
948 948
                     ),
949 949
                     // options
950 950
                     array(
@@ -973,8 +973,8 @@  discard block
 block discarded – undo
973 973
     public static function register_message_types()
974 974
     {
975 975
         foreach (self::$_settings as $addon_name => $settings) {
976
-            if (! empty($settings['message_types'])) {
977
-                foreach ((array)$settings['message_types'] as $message_type => $message_type_settings) {
976
+            if ( ! empty($settings['message_types'])) {
977
+                foreach ((array) $settings['message_types'] as $message_type => $message_type_settings) {
978 978
                     EE_Register_Message_Type::register($message_type, $message_type_settings);
979 979
                 }
980 980
             }
@@ -995,46 +995,46 @@  discard block
 block discarded – undo
995 995
         if (isset(self::$_settings[$addon_name], self::$_settings[$addon_name]['class_name'])) {
996 996
             do_action('AHEE__EE_Register_Addon__deregister__before', $addon_name);
997 997
             $class_name = self::$_settings[$addon_name]['class_name'];
998
-            if (! empty(self::$_settings[$addon_name]['dms_paths'])) {
998
+            if ( ! empty(self::$_settings[$addon_name]['dms_paths'])) {
999 999
                 // setup DMS
1000 1000
                 EE_Register_Data_Migration_Scripts::deregister($addon_name);
1001 1001
             }
1002
-            if (! empty(self::$_settings[$addon_name]['admin_path'])) {
1002
+            if ( ! empty(self::$_settings[$addon_name]['admin_path'])) {
1003 1003
                 // register admin page
1004 1004
                 EE_Register_Admin_Page::deregister($addon_name);
1005 1005
             }
1006
-            if (! empty(self::$_settings[$addon_name]['module_paths'])) {
1006
+            if ( ! empty(self::$_settings[$addon_name]['module_paths'])) {
1007 1007
                 // add to list of modules to be registered
1008 1008
                 EE_Register_Module::deregister($addon_name);
1009 1009
             }
1010
-            if (! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
1010
+            if ( ! empty(self::$_settings[$addon_name]['shortcode_paths'])) {
1011 1011
                 // add to list of shortcodes to be registered
1012 1012
                 EE_Register_Shortcode::deregister($addon_name);
1013 1013
             }
1014
-            if (! empty(self::$_settings[$addon_name]['config_class'])) {
1014
+            if ( ! empty(self::$_settings[$addon_name]['config_class'])) {
1015 1015
                 // if config_class present let's register config.
1016 1016
                 EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
1017 1017
             }
1018
-            if (! empty(self::$_settings[$addon_name]['widget_paths'])) {
1018
+            if ( ! empty(self::$_settings[$addon_name]['widget_paths'])) {
1019 1019
                 // add to list of widgets to be registered
1020 1020
                 EE_Register_Widget::deregister($addon_name);
1021 1021
             }
1022
-            if (! empty(self::$_settings[$addon_name]['model_paths'])
1022
+            if ( ! empty(self::$_settings[$addon_name]['model_paths'])
1023 1023
                 ||
1024 1024
                 ! empty(self::$_settings[$addon_name]['class_paths'])
1025 1025
             ) {
1026 1026
                 // add to list of shortcodes to be registered
1027 1027
                 EE_Register_Model::deregister($addon_name);
1028 1028
             }
1029
-            if (! empty(self::$_settings[$addon_name]['model_extension_paths'])
1029
+            if ( ! empty(self::$_settings[$addon_name]['model_extension_paths'])
1030 1030
                 ||
1031 1031
                 ! empty(self::$_settings[$addon_name]['class_extension_paths'])
1032 1032
             ) {
1033 1033
                 // add to list of shortcodes to be registered
1034 1034
                 EE_Register_Model_Extensions::deregister($addon_name);
1035 1035
             }
1036
-            if (! empty(self::$_settings[$addon_name]['message_types'])) {
1037
-                foreach ((array)self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
1036
+            if ( ! empty(self::$_settings[$addon_name]['message_types'])) {
1037
+                foreach ((array) self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
1038 1038
                     EE_Register_Message_Type::deregister($message_type);
1039 1039
                 }
1040 1040
             }
@@ -1046,11 +1046,11 @@  discard block
 block discarded – undo
1046 1046
                 EE_Register_Capabilities::deregister($addon_name);
1047 1047
             }
1048 1048
             //deregister custom_post_types for addon
1049
-            if (! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1049
+            if ( ! empty(self::$_settings[$addon_name]['custom_post_types'])) {
1050 1050
                 EE_Register_CPT::deregister($addon_name);
1051 1051
             }
1052 1052
             remove_action(
1053
-                'deactivate_' . EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(),
1053
+                'deactivate_'.EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(),
1054 1054
                 array(EE_Registry::instance()->addons->{$class_name}, 'deactivation')
1055 1055
             );
1056 1056
             remove_action(
Please login to merge, or discard this patch.
core/libraries/plugin_api/EE_Register_Message_Type.lib.php 1 patch
Indentation   +432 added lines, -432 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  * @since           4.3.0
8 8
  */
9 9
 if (! defined('EVENT_ESPRESSO_VERSION')) {
10
-    exit('No direct script access allowed');
10
+	exit('No direct script access allowed');
11 11
 }
12 12
 
13 13
 /**
@@ -22,461 +22,461 @@  discard block
 block discarded – undo
22 22
 {
23 23
 
24 24
 
25
-    /**
26
-     * Holds values for registered message types
27
-     *
28
-     * @var array
29
-     */
30
-    protected static $_ee_message_type_registry = array();
25
+	/**
26
+	 * Holds values for registered message types
27
+	 *
28
+	 * @var array
29
+	 */
30
+	protected static $_ee_message_type_registry = array();
31 31
 
32 32
 
33
-    /**
34
-     * Method for registering new message types in the EE_messages system.
35
-     * Note:  All message types must have the following files in order to work:
36
-     * Template files for default templates getting setup.
37
-     * See /core/libraries/messages/defaults/default/ for examples
38
-     * (note that template files match a specific naming schema).
39
-     * These templates will need to be registered with the default template pack.
40
-     * - EE_Messages_Validator extended class(es).  See /core/libraries/messages/validators/email/
41
-     *      for examples.  Note for any new message types, there will need to be a validator for each
42
-     *      messenger combo this message type can activate with.
43
-     * - And of course the main EE_{Message_Type_Name}_message_type class that defines the new
44
-     *      message type and its properties.
45
-     *
46
-     * @since    4.3.0
47
-     * @param string $mt_name       Whatever is defined for the $name property of
48
-     *                              the message type you are registering (eg.
49
-     *                              declined_registration). Required.
50
-     * @param  array $setup_args    An array of arguments provided for registering the message type.
51
-     *                              @see inline docs in the register method for what can be passed in as arguments.
52
-     * @throws \EE_Error
53
-     *                              }
54
-     */
55
-    public static function register($mt_name = null, $setup_args = array())
56
-    {
57
-        //required fields MUST be present, so let's make sure they are.
58
-        if (
59
-            ! isset($mt_name)
60
-            || ! is_array($setup_args)
61
-            || empty($setup_args['mtfilename']) || empty($setup_args['autoloadpaths'])
62
-        ) {
63
-            throw new EE_Error(
64
-                __('In order to register a message type with EE_Register_Message_Type::register, you must include a unique name for the message type, plus an array containing the following keys: "mtfilename", "autoloadpaths"',
65
-                    'event_espresso')
66
-            );
67
-        }
33
+	/**
34
+	 * Method for registering new message types in the EE_messages system.
35
+	 * Note:  All message types must have the following files in order to work:
36
+	 * Template files for default templates getting setup.
37
+	 * See /core/libraries/messages/defaults/default/ for examples
38
+	 * (note that template files match a specific naming schema).
39
+	 * These templates will need to be registered with the default template pack.
40
+	 * - EE_Messages_Validator extended class(es).  See /core/libraries/messages/validators/email/
41
+	 *      for examples.  Note for any new message types, there will need to be a validator for each
42
+	 *      messenger combo this message type can activate with.
43
+	 * - And of course the main EE_{Message_Type_Name}_message_type class that defines the new
44
+	 *      message type and its properties.
45
+	 *
46
+	 * @since    4.3.0
47
+	 * @param string $mt_name       Whatever is defined for the $name property of
48
+	 *                              the message type you are registering (eg.
49
+	 *                              declined_registration). Required.
50
+	 * @param  array $setup_args    An array of arguments provided for registering the message type.
51
+	 *                              @see inline docs in the register method for what can be passed in as arguments.
52
+	 * @throws \EE_Error
53
+	 *                              }
54
+	 */
55
+	public static function register($mt_name = null, $setup_args = array())
56
+	{
57
+		//required fields MUST be present, so let's make sure they are.
58
+		if (
59
+			! isset($mt_name)
60
+			|| ! is_array($setup_args)
61
+			|| empty($setup_args['mtfilename']) || empty($setup_args['autoloadpaths'])
62
+		) {
63
+			throw new EE_Error(
64
+				__('In order to register a message type with EE_Register_Message_Type::register, you must include a unique name for the message type, plus an array containing the following keys: "mtfilename", "autoloadpaths"',
65
+					'event_espresso')
66
+			);
67
+		}
68 68
 
69
-        //make sure we don't register twice
70
-        if (isset(self::$_ee_message_type_registry[$mt_name])) {
71
-            return;
72
-        }
69
+		//make sure we don't register twice
70
+		if (isset(self::$_ee_message_type_registry[$mt_name])) {
71
+			return;
72
+		}
73 73
 
74
-        //make sure this was called in the right place!
75
-        if (
76
-            ! did_action('EE_Brewing_Regular___messages_caf')
77
-            || did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations')
78
-        ) {
79
-            EE_Error::doing_it_wrong(
80
-                __METHOD__,
81
-                sprintf(
82
-                    __('A message type named "%s" has been attempted to be registered with the EE Messages System.  It may or may not work because it should be only called on the "EE_Brewing_Regular___messages_caf" hook.',
83
-                        'event_espresso'),
84
-                    $mt_name
85
-                ),
86
-                '4.3.0'
87
-            );
88
-        }
89
-        //setup $__ee_message_type_registry array from incoming values.
90
-        self::$_ee_message_type_registry[$mt_name] = array(
91
-            /**
92
-             * The file name for the message type being registered.
93
-             * Required.
94
-             * @type string
95
-             */
96
-            'mtfilename'                  => (string)$setup_args['mtfilename'],
97
-            /**
98
-             * Autoload paths for classes used by the message type.
99
-             * Required.
100
-             * @type array
101
-             */
102
-            'autoloadpaths'               => (array)$setup_args['autoloadpaths'],
103
-            /**
104
-             * Messengers that the message type should be able to activate with.
105
-             * Use messenger slugs.
106
-             * @type array
107
-             */
108
-            'messengers_to_activate_with' => ! empty($setup_args['messengers_to_activate_with'])
109
-                ? (array)$setup_args['messengers_to_activate_with']
110
-                : array(),
111
-            /**
112
-             * Messengers that the message type should validate with.
113
-             * Use messenger slugs.
114
-             * @type array
115
-             */
116
-            'messengers_to_validate_with' => ! empty($setup_args['messengers_to_validate_with'])
117
-                ? (array)$setup_args['messengers_to_validate_with']
118
-                : array(),
119
-            /**
120
-             * Whether to force activate this message type the first time it is registered.
121
-             * @type bool   False means its not activated by default and left up to the end user to activate.
122
-             */
123
-            'force_activation'            => ! empty($setup_args['force_activation'])
124
-                ? (bool)$setup_args['force_activation']
125
-                : false,
126
-            /**
127
-             * What messengers this message type supports the default template pack for.
128
-             * Note: If you do not set this (or any of the following template pack/variation related arguments) to true,
129
-             * then it is expected that the message type being registered is doing its own custom default template
130
-             * pack/variation registration.
131
-             *
132
-             * If this is set and has values, then it is expected that the following arguments are also set in the incoming options
133
-             * $setup_arguments array as well:
134
-             * - 'base_path_for_default_templates'
135
-             *
136
-             * @type array   Expect an array of messengers this supports default template packs for.
137
-             */
138
-            'messengers_supporting_default_template_pack_with' => isset($setup_args['messengers_supporting_default_template_pack_with'])
139
-                ? (array)$setup_args['messengers_supporting_default_template_pack_with']
140
-                : array(),
141
-            /**
142
-             * The base path where the default templates for this message type can be found.
143
-             * @type string
144
-             */
145
-            'base_path_for_default_templates' => isset($setup_args['base_path_for_default_templates'])
146
-                ? $setup_args['base_path_for_default_templates']
147
-                : '',
148
-            /**
149
-             * The base path where the default variations for this message type can be found.
150
-             * @type string
151
-             */
152
-            'base_path_for_default_variation' => isset($setup_args['base_path_for_default_variation'])
153
-                ? $setup_args['base_path_for_default_variation']
154
-                : '',
155
-            /**
156
-             * The base url for the default variations for this message type.
157
-             * @type string
158
-             */
159
-            'base_url_for_default_variation' => isset($setup_args['base_url_for_default_variation'])
160
-                ? $setup_args['base_url_for_default_variation']
161
-                : ''
162
-        );
163
-        //add filters but only if they haven't already been set (these filters only need to be registered ONCE because
164
-        //the callback handles all registered message types.
165
-        if ( false === has_filter(
166
-            'FHEE__EED_Messages___set_messages_paths___MSG_PATHS',
167
-            array('EE_Register_Message_Type', 'register_msgs_autoload_paths')
168
-        )) {
169
-            add_filter(
170
-                'FHEE__EED_Messages___set_messages_paths___MSG_PATHS',
171
-                array('EE_Register_Message_Type', 'register_msgs_autoload_paths'),
172
-                10
173
-            );
174
-            add_filter(
175
-                'FHEE__EE_messages__get_installed__messagetype_files',
176
-                array('EE_Register_Message_Type', 'register_messagetype_files'),
177
-                10,
178
-                1
179
-            );
180
-            add_filter(
181
-                'FHEE__EE_messenger__get_default_message_types__default_types',
182
-                array('EE_Register_Message_Type', 'register_messengers_to_activate_mt_with'),
183
-                10,
184
-                2
185
-            );
186
-            add_filter(
187
-                'FHEE__EE_messenger__get_valid_message_types__valid_types',
188
-                array('EE_Register_Message_Type', 'register_messengers_to_validate_mt_with'),
189
-                10,
190
-                2
191
-            );
192
-            //actions
193
-            add_action(
194
-                'AHEE__EE_Addon__initialize_default_data__begin',
195
-                array('EE_Register_Message_Type', 'set_defaults')
196
-            );
74
+		//make sure this was called in the right place!
75
+		if (
76
+			! did_action('EE_Brewing_Regular___messages_caf')
77
+			|| did_action('AHEE__EE_System__perform_activations_upgrades_and_migrations')
78
+		) {
79
+			EE_Error::doing_it_wrong(
80
+				__METHOD__,
81
+				sprintf(
82
+					__('A message type named "%s" has been attempted to be registered with the EE Messages System.  It may or may not work because it should be only called on the "EE_Brewing_Regular___messages_caf" hook.',
83
+						'event_espresso'),
84
+					$mt_name
85
+				),
86
+				'4.3.0'
87
+			);
88
+		}
89
+		//setup $__ee_message_type_registry array from incoming values.
90
+		self::$_ee_message_type_registry[$mt_name] = array(
91
+			/**
92
+			 * The file name for the message type being registered.
93
+			 * Required.
94
+			 * @type string
95
+			 */
96
+			'mtfilename'                  => (string)$setup_args['mtfilename'],
97
+			/**
98
+			 * Autoload paths for classes used by the message type.
99
+			 * Required.
100
+			 * @type array
101
+			 */
102
+			'autoloadpaths'               => (array)$setup_args['autoloadpaths'],
103
+			/**
104
+			 * Messengers that the message type should be able to activate with.
105
+			 * Use messenger slugs.
106
+			 * @type array
107
+			 */
108
+			'messengers_to_activate_with' => ! empty($setup_args['messengers_to_activate_with'])
109
+				? (array)$setup_args['messengers_to_activate_with']
110
+				: array(),
111
+			/**
112
+			 * Messengers that the message type should validate with.
113
+			 * Use messenger slugs.
114
+			 * @type array
115
+			 */
116
+			'messengers_to_validate_with' => ! empty($setup_args['messengers_to_validate_with'])
117
+				? (array)$setup_args['messengers_to_validate_with']
118
+				: array(),
119
+			/**
120
+			 * Whether to force activate this message type the first time it is registered.
121
+			 * @type bool   False means its not activated by default and left up to the end user to activate.
122
+			 */
123
+			'force_activation'            => ! empty($setup_args['force_activation'])
124
+				? (bool)$setup_args['force_activation']
125
+				: false,
126
+			/**
127
+			 * What messengers this message type supports the default template pack for.
128
+			 * Note: If you do not set this (or any of the following template pack/variation related arguments) to true,
129
+			 * then it is expected that the message type being registered is doing its own custom default template
130
+			 * pack/variation registration.
131
+			 *
132
+			 * If this is set and has values, then it is expected that the following arguments are also set in the incoming options
133
+			 * $setup_arguments array as well:
134
+			 * - 'base_path_for_default_templates'
135
+			 *
136
+			 * @type array   Expect an array of messengers this supports default template packs for.
137
+			 */
138
+			'messengers_supporting_default_template_pack_with' => isset($setup_args['messengers_supporting_default_template_pack_with'])
139
+				? (array)$setup_args['messengers_supporting_default_template_pack_with']
140
+				: array(),
141
+			/**
142
+			 * The base path where the default templates for this message type can be found.
143
+			 * @type string
144
+			 */
145
+			'base_path_for_default_templates' => isset($setup_args['base_path_for_default_templates'])
146
+				? $setup_args['base_path_for_default_templates']
147
+				: '',
148
+			/**
149
+			 * The base path where the default variations for this message type can be found.
150
+			 * @type string
151
+			 */
152
+			'base_path_for_default_variation' => isset($setup_args['base_path_for_default_variation'])
153
+				? $setup_args['base_path_for_default_variation']
154
+				: '',
155
+			/**
156
+			 * The base url for the default variations for this message type.
157
+			 * @type string
158
+			 */
159
+			'base_url_for_default_variation' => isset($setup_args['base_url_for_default_variation'])
160
+				? $setup_args['base_url_for_default_variation']
161
+				: ''
162
+		);
163
+		//add filters but only if they haven't already been set (these filters only need to be registered ONCE because
164
+		//the callback handles all registered message types.
165
+		if ( false === has_filter(
166
+			'FHEE__EED_Messages___set_messages_paths___MSG_PATHS',
167
+			array('EE_Register_Message_Type', 'register_msgs_autoload_paths')
168
+		)) {
169
+			add_filter(
170
+				'FHEE__EED_Messages___set_messages_paths___MSG_PATHS',
171
+				array('EE_Register_Message_Type', 'register_msgs_autoload_paths'),
172
+				10
173
+			);
174
+			add_filter(
175
+				'FHEE__EE_messages__get_installed__messagetype_files',
176
+				array('EE_Register_Message_Type', 'register_messagetype_files'),
177
+				10,
178
+				1
179
+			);
180
+			add_filter(
181
+				'FHEE__EE_messenger__get_default_message_types__default_types',
182
+				array('EE_Register_Message_Type', 'register_messengers_to_activate_mt_with'),
183
+				10,
184
+				2
185
+			);
186
+			add_filter(
187
+				'FHEE__EE_messenger__get_valid_message_types__valid_types',
188
+				array('EE_Register_Message_Type', 'register_messengers_to_validate_mt_with'),
189
+				10,
190
+				2
191
+			);
192
+			//actions
193
+			add_action(
194
+				'AHEE__EE_Addon__initialize_default_data__begin',
195
+				array('EE_Register_Message_Type', 'set_defaults')
196
+			);
197 197
 
198
-            //default template packs and variations related
199
-            add_filter(
200
-                'FHEE__EE_Messages_Template_Pack_Default__get_supports',
201
-                array('EE_Register_Message_Type', 'register_default_template_pack_supports')
202
-            );
203
-            add_filter(
204
-                'FHEE__EE_Template_Pack___get_specific_template__filtered_base_path',
205
-                array('EE_Register_Message_Type', 'register_base_template_path'),
206
-                10,
207
-                6
208
-            );
209
-            add_filter(
210
-                'FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url',
211
-                array('EE_Register_Message_Type', 'register_variation_base_path_or_url'),
212
-                10,
213
-                8
214
-            );
215
-            add_filter(
216
-                'FHEE__EE_Messages_Template_Pack__get_variation__base_path',
217
-                array('EE_Register_Message_Type', 'register_variation_base_path_or_url'),
218
-                10,
219
-                8
220
-            );
221
-        }
222
-    }
198
+			//default template packs and variations related
199
+			add_filter(
200
+				'FHEE__EE_Messages_Template_Pack_Default__get_supports',
201
+				array('EE_Register_Message_Type', 'register_default_template_pack_supports')
202
+			);
203
+			add_filter(
204
+				'FHEE__EE_Template_Pack___get_specific_template__filtered_base_path',
205
+				array('EE_Register_Message_Type', 'register_base_template_path'),
206
+				10,
207
+				6
208
+			);
209
+			add_filter(
210
+				'FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url',
211
+				array('EE_Register_Message_Type', 'register_variation_base_path_or_url'),
212
+				10,
213
+				8
214
+			);
215
+			add_filter(
216
+				'FHEE__EE_Messages_Template_Pack__get_variation__base_path',
217
+				array('EE_Register_Message_Type', 'register_variation_base_path_or_url'),
218
+				10,
219
+				8
220
+			);
221
+		}
222
+	}
223 223
 
224 224
 
225
-    /**
226
-     * This just ensures that when an addon registers a message type that on initial activation/reactivation the
227
-     * defaults the addon sets are taken care of.
228
-     */
229
-    public static function set_defaults()
230
-    {
231
-        /** @type EE_Message_Resource_Manager $message_resource_manager */
232
-        $message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
225
+	/**
226
+	 * This just ensures that when an addon registers a message type that on initial activation/reactivation the
227
+	 * defaults the addon sets are taken care of.
228
+	 */
229
+	public static function set_defaults()
230
+	{
231
+		/** @type EE_Message_Resource_Manager $message_resource_manager */
232
+		$message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
233 233
 
234
-        //for any message types with force activation, let's ensure they are activated
235
-        foreach (self::$_ee_message_type_registry as $message_type_name => $settings) {
236
-            if ($settings['force_activation']) {
237
-                foreach ($settings['messengers_to_activate_with'] as $messenger) {
238
-                    //DO not force activation if this message type has already been activated in the system
239
-                    if (! $message_resource_manager->has_message_type_been_activated_for_messenger($message_type_name,
240
-                        $messenger)
241
-                    ) {
242
-                        $message_resource_manager->ensure_message_type_is_active($message_type_name, $messenger);
243
-                    }
244
-                }
245
-            }
246
-        }
247
-    }
234
+		//for any message types with force activation, let's ensure they are activated
235
+		foreach (self::$_ee_message_type_registry as $message_type_name => $settings) {
236
+			if ($settings['force_activation']) {
237
+				foreach ($settings['messengers_to_activate_with'] as $messenger) {
238
+					//DO not force activation if this message type has already been activated in the system
239
+					if (! $message_resource_manager->has_message_type_been_activated_for_messenger($message_type_name,
240
+						$messenger)
241
+					) {
242
+						$message_resource_manager->ensure_message_type_is_active($message_type_name, $messenger);
243
+					}
244
+				}
245
+			}
246
+		}
247
+	}
248 248
 
249 249
 
250
-    /**
251
-     * This deregisters a message type that was previously registered with a specific message_type_name.
252
-     *
253
-     * @since    4.3.0
254
-     * @param string $message_type_name the name for the message type that was previously registered
255
-     * @return void
256
-     */
257
-    public static function deregister($message_type_name = null)
258
-    {
259
-        if (! empty(self::$_ee_message_type_registry[$message_type_name])) {
260
-            //let's make sure that we remove any place this message type was made active
261
-            /** @var EE_Message_Resource_Manager $Message_Resource_Manager */
262
-            $Message_Resource_Manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
263
-            //ensures that if this message type is registered again that it retains its previous active state vs
264
-            //remaining inactive.
265
-            $Message_Resource_Manager->remove_message_type_has_been_activated_from_all_messengers(
266
-                $message_type_name,
267
-                true
268
-            );
269
-            $Message_Resource_Manager->deactivate_message_type($message_type_name, false);
270
-            unset(self::$_ee_message_type_registry[$message_type_name]);
271
-        }
272
-    }
250
+	/**
251
+	 * This deregisters a message type that was previously registered with a specific message_type_name.
252
+	 *
253
+	 * @since    4.3.0
254
+	 * @param string $message_type_name the name for the message type that was previously registered
255
+	 * @return void
256
+	 */
257
+	public static function deregister($message_type_name = null)
258
+	{
259
+		if (! empty(self::$_ee_message_type_registry[$message_type_name])) {
260
+			//let's make sure that we remove any place this message type was made active
261
+			/** @var EE_Message_Resource_Manager $Message_Resource_Manager */
262
+			$Message_Resource_Manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
263
+			//ensures that if this message type is registered again that it retains its previous active state vs
264
+			//remaining inactive.
265
+			$Message_Resource_Manager->remove_message_type_has_been_activated_from_all_messengers(
266
+				$message_type_name,
267
+				true
268
+			);
269
+			$Message_Resource_Manager->deactivate_message_type($message_type_name, false);
270
+			unset(self::$_ee_message_type_registry[$message_type_name]);
271
+		}
272
+	}
273 273
 
274 274
 
275
-    /**
276
-     * callback for FHEE__EE_messages__get_installed__messagetype_files filter.
277
-     *
278
-     * @since   4.3.0
279
-     * @param  array $messagetype_files The current array of message type file names
280
-     * @return  array                                 Array of message type file names
281
-     */
282
-    public static function register_messagetype_files($messagetype_files)
283
-    {
284
-        if (empty(self::$_ee_message_type_registry)) {
285
-            return $messagetype_files;
286
-        }
287
-        foreach (self::$_ee_message_type_registry as $mt_reg) {
288
-            if (empty($mt_reg['mtfilename'])) {
289
-                continue;
290
-            }
291
-            $messagetype_files[] = $mt_reg['mtfilename'];
292
-        }
293
-        return $messagetype_files;
294
-    }
275
+	/**
276
+	 * callback for FHEE__EE_messages__get_installed__messagetype_files filter.
277
+	 *
278
+	 * @since   4.3.0
279
+	 * @param  array $messagetype_files The current array of message type file names
280
+	 * @return  array                                 Array of message type file names
281
+	 */
282
+	public static function register_messagetype_files($messagetype_files)
283
+	{
284
+		if (empty(self::$_ee_message_type_registry)) {
285
+			return $messagetype_files;
286
+		}
287
+		foreach (self::$_ee_message_type_registry as $mt_reg) {
288
+			if (empty($mt_reg['mtfilename'])) {
289
+				continue;
290
+			}
291
+			$messagetype_files[] = $mt_reg['mtfilename'];
292
+		}
293
+		return $messagetype_files;
294
+	}
295 295
 
296 296
 
297
-    /**
298
-     * callback for FHEE__EED_Messages___set_messages_paths___MSG_PATHS filter.
299
-     *
300
-     * @since    4.3.0
301
-     * @param array $paths array of paths to be checked by EE_messages autoloader.
302
-     * @return array
303
-     */
304
-    public static function register_msgs_autoload_paths($paths)
305
-    {
306
-        if (! empty(self::$_ee_message_type_registry)) {
307
-            foreach (self::$_ee_message_type_registry as $mt_reg) {
308
-                if (empty($mt_reg['autoloadpaths'])) {
309
-                    continue;
310
-                }
311
-                $paths = array_merge($paths, $mt_reg['autoloadpaths']);
312
-            }
313
-        }
314
-        return $paths;
315
-    }
297
+	/**
298
+	 * callback for FHEE__EED_Messages___set_messages_paths___MSG_PATHS filter.
299
+	 *
300
+	 * @since    4.3.0
301
+	 * @param array $paths array of paths to be checked by EE_messages autoloader.
302
+	 * @return array
303
+	 */
304
+	public static function register_msgs_autoload_paths($paths)
305
+	{
306
+		if (! empty(self::$_ee_message_type_registry)) {
307
+			foreach (self::$_ee_message_type_registry as $mt_reg) {
308
+				if (empty($mt_reg['autoloadpaths'])) {
309
+					continue;
310
+				}
311
+				$paths = array_merge($paths, $mt_reg['autoloadpaths']);
312
+			}
313
+		}
314
+		return $paths;
315
+	}
316 316
 
317 317
 
318
-    /**
319
-     * callback for FHEE__EE_messenger__get_default_message_types__default_types filter.
320
-     *
321
-     * @since  4.3.0
322
-     * @param  array        $default_types  array of message types activated with messenger (
323
-     *                                      corresponds to the $name property of message type)
324
-     * @param  EE_messenger $messenger      The EE_messenger the filter is called from.
325
-     * @return array
326
-     */
327
-    public static function register_messengers_to_activate_mt_with($default_types, EE_messenger $messenger)
328
-    {
329
-        if (empty(self::$_ee_message_type_registry)) {
330
-            return $default_types;
331
-        }
332
-        foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
333
-            if (empty($mt_reg['messengers_to_activate_with']) || empty($mt_reg['mtfilename'])) {
334
-                continue;
335
-            }
336
-            // loop through each of the messengers and if it matches the loaded class
337
-            // then we add this message type to the
338
-            foreach ($mt_reg['messengers_to_activate_with'] as $msgr) {
339
-                if ($messenger->name == $msgr) {
340
-                    $default_types[] = $message_type_name;
341
-                }
342
-            }
343
-        }
318
+	/**
319
+	 * callback for FHEE__EE_messenger__get_default_message_types__default_types filter.
320
+	 *
321
+	 * @since  4.3.0
322
+	 * @param  array        $default_types  array of message types activated with messenger (
323
+	 *                                      corresponds to the $name property of message type)
324
+	 * @param  EE_messenger $messenger      The EE_messenger the filter is called from.
325
+	 * @return array
326
+	 */
327
+	public static function register_messengers_to_activate_mt_with($default_types, EE_messenger $messenger)
328
+	{
329
+		if (empty(self::$_ee_message_type_registry)) {
330
+			return $default_types;
331
+		}
332
+		foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
333
+			if (empty($mt_reg['messengers_to_activate_with']) || empty($mt_reg['mtfilename'])) {
334
+				continue;
335
+			}
336
+			// loop through each of the messengers and if it matches the loaded class
337
+			// then we add this message type to the
338
+			foreach ($mt_reg['messengers_to_activate_with'] as $msgr) {
339
+				if ($messenger->name == $msgr) {
340
+					$default_types[] = $message_type_name;
341
+				}
342
+			}
343
+		}
344 344
 
345
-        return $default_types;
346
-    }
345
+		return $default_types;
346
+	}
347 347
 
348 348
 
349
-    /**
350
-     * callback for FHEE__EE_messenger__get_valid_message_types__default_types filter.
351
-     *
352
-     * @since   4.3.0
353
-     * @param  array        $valid_types    array of message types valid with messenger (
354
-     *                                      corresponds to the $name property of message type)
355
-     * @param  EE_messenger $messenger      The EE_messenger the filter is called from.
356
-     * @return  array
357
-     */
358
-    public static function register_messengers_to_validate_mt_with($valid_types, EE_messenger $messenger)
359
-    {
360
-        if (empty(self::$_ee_message_type_registry)) {
361
-            return $valid_types;
362
-        }
363
-        foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
364
-            if (empty($mt_reg['messengers_to_validate_with']) || empty($mt_reg['mtfilename'])) {
365
-                continue;
366
-            }
367
-            // loop through each of the messengers and if it matches the loaded class
368
-            // then we add this message type to the
369
-            foreach ($mt_reg['messengers_to_validate_with'] as $msgr) {
370
-                if ($messenger->name == $msgr) {
371
-                    $valid_types[] = $message_type_name;
372
-                }
373
-            }
374
-        }
349
+	/**
350
+	 * callback for FHEE__EE_messenger__get_valid_message_types__default_types filter.
351
+	 *
352
+	 * @since   4.3.0
353
+	 * @param  array        $valid_types    array of message types valid with messenger (
354
+	 *                                      corresponds to the $name property of message type)
355
+	 * @param  EE_messenger $messenger      The EE_messenger the filter is called from.
356
+	 * @return  array
357
+	 */
358
+	public static function register_messengers_to_validate_mt_with($valid_types, EE_messenger $messenger)
359
+	{
360
+		if (empty(self::$_ee_message_type_registry)) {
361
+			return $valid_types;
362
+		}
363
+		foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
364
+			if (empty($mt_reg['messengers_to_validate_with']) || empty($mt_reg['mtfilename'])) {
365
+				continue;
366
+			}
367
+			// loop through each of the messengers and if it matches the loaded class
368
+			// then we add this message type to the
369
+			foreach ($mt_reg['messengers_to_validate_with'] as $msgr) {
370
+				if ($messenger->name == $msgr) {
371
+					$valid_types[] = $message_type_name;
372
+				}
373
+			}
374
+		}
375 375
 
376
-        return $valid_types;
377
-    }
376
+		return $valid_types;
377
+	}
378 378
 
379 379
 
380
-    /**
381
-     * Callback for `FHEE__EE_Messages_Template_Pack_Default__get_supports` filter to register this message type as
382
-     * supporting the default template pack
383
-     *
384
-     * @param array $supports
385
-     *
386
-     * @return array
387
-     */
388
-    public static function register_default_template_pack_supports($supports)
389
-    {
390
-        foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
391
-            if (empty($mt_reg['messengers_supporting_default_template_pack_with'])) {
392
-                continue;
393
-            }
394
-            foreach ($mt_reg['messengers_supporting_default_template_pack_with'] as $messenger_slug) {
395
-                $supports[$messenger_slug][] = $message_type_name;
396
-            }
397
-        }
398
-        return $supports;
399
-    }
380
+	/**
381
+	 * Callback for `FHEE__EE_Messages_Template_Pack_Default__get_supports` filter to register this message type as
382
+	 * supporting the default template pack
383
+	 *
384
+	 * @param array $supports
385
+	 *
386
+	 * @return array
387
+	 */
388
+	public static function register_default_template_pack_supports($supports)
389
+	{
390
+		foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
391
+			if (empty($mt_reg['messengers_supporting_default_template_pack_with'])) {
392
+				continue;
393
+			}
394
+			foreach ($mt_reg['messengers_supporting_default_template_pack_with'] as $messenger_slug) {
395
+				$supports[$messenger_slug][] = $message_type_name;
396
+			}
397
+		}
398
+		return $supports;
399
+	}
400 400
 
401 401
 
402
-    /**
403
-     * Callback for FHEE__EE_Template_Pack___get_specific_template__filtered_base_path
404
-     *
405
-     * @param string $base_path The original base path for message templates
406
-     * @param EE_messenger $messenger
407
-     * @param EE_message_type $message_type
408
-     * @param string $field  The field requesting a template
409
-     * @param string $context  The context requesting a template
410
-     * @param EE_Messages_Template_Pack $template_pack
411
-     *
412
-     * @return string
413
-     */
414
-    public static function register_base_template_path(
415
-        $base_path,
416
-        $messenger,
417
-        $message_type,
418
-        $field,
419
-        $context,
420
-        $template_pack
421
-    ) {
422
-        if (! $template_pack instanceof EE_Messages_Template_Pack_Default
423
-            || ! $message_type instanceof EE_message_type
424
-        ) {
425
-            return $base_path;
426
-        }
427
-        foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
428
-            if ($message_type->name === $message_type_name
429
-                && ! empty($mt_reg['base_path_for_default_templates'])
430
-            ) {
431
-                return $mt_reg['base_path_for_default_templates'];
432
-            }
433
-        }
434
-        return $base_path;
435
-    }
402
+	/**
403
+	 * Callback for FHEE__EE_Template_Pack___get_specific_template__filtered_base_path
404
+	 *
405
+	 * @param string $base_path The original base path for message templates
406
+	 * @param EE_messenger $messenger
407
+	 * @param EE_message_type $message_type
408
+	 * @param string $field  The field requesting a template
409
+	 * @param string $context  The context requesting a template
410
+	 * @param EE_Messages_Template_Pack $template_pack
411
+	 *
412
+	 * @return string
413
+	 */
414
+	public static function register_base_template_path(
415
+		$base_path,
416
+		$messenger,
417
+		$message_type,
418
+		$field,
419
+		$context,
420
+		$template_pack
421
+	) {
422
+		if (! $template_pack instanceof EE_Messages_Template_Pack_Default
423
+			|| ! $message_type instanceof EE_message_type
424
+		) {
425
+			return $base_path;
426
+		}
427
+		foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
428
+			if ($message_type->name === $message_type_name
429
+				&& ! empty($mt_reg['base_path_for_default_templates'])
430
+			) {
431
+				return $mt_reg['base_path_for_default_templates'];
432
+			}
433
+		}
434
+		return $base_path;
435
+	}
436 436
 
437 437
 
438
-    /**
439
-     * Callback for FHEE__EE_Messages_Template_Pack__get_variation__base_path and
440
-     * FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url hooks
441
-     *
442
-     * @param string $base_path_or_url       The original incoming base url or path
443
-     * @param string $messenger_slug      The slug of the messenger the template is being generated for.
444
-     * @param string $message_type_slug The slug of the message type the template is being generated for.
445
-     * @param string $type             The "type" of css being requested.
446
-     * @param string $variation      The variation being requested.
447
-     * @param string $file_extension What file extension is expected for the variation file.
448
-     * @param bool $url whether a url or path is being requested.
449
-     * @param EE_Messages_Template_Pack $template_pack
450
-     *
451
-     * @return string
452
-     */
453
-    public static function register_variation_base_path_or_url(
454
-        $base_path_or_url,
455
-        $messenger_slug,
456
-        $message_type_slug,
457
-        $type,
458
-        $variation,
459
-        $url,
460
-        $file_extension,
461
-        $template_pack
462
-    ) {
463
-        if (! $template_pack instanceof EE_Messages_Template_Pack_Default) {
464
-            return $base_path_or_url;
465
-        }
466
-        foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
467
-            if ($message_type_name === $message_type_slug
468
-            ) {
469
-                if ($url
470
-                    && ! empty($mt_reg['base_url_for_default_variation'])
471
-                ) {
472
-                    return $mt_reg['base_url_for_default_variation'];
473
-                } elseif (! $url
474
-                    && ! empty($mt_reg['base_path_for_default_variation'])
475
-                ) {
476
-                    return $mt_reg['base_path_for_default_variation'];
477
-                }
478
-            }
479
-        }
480
-        return $base_path_or_url;
481
-    }
438
+	/**
439
+	 * Callback for FHEE__EE_Messages_Template_Pack__get_variation__base_path and
440
+	 * FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url hooks
441
+	 *
442
+	 * @param string $base_path_or_url       The original incoming base url or path
443
+	 * @param string $messenger_slug      The slug of the messenger the template is being generated for.
444
+	 * @param string $message_type_slug The slug of the message type the template is being generated for.
445
+	 * @param string $type             The "type" of css being requested.
446
+	 * @param string $variation      The variation being requested.
447
+	 * @param string $file_extension What file extension is expected for the variation file.
448
+	 * @param bool $url whether a url or path is being requested.
449
+	 * @param EE_Messages_Template_Pack $template_pack
450
+	 *
451
+	 * @return string
452
+	 */
453
+	public static function register_variation_base_path_or_url(
454
+		$base_path_or_url,
455
+		$messenger_slug,
456
+		$message_type_slug,
457
+		$type,
458
+		$variation,
459
+		$url,
460
+		$file_extension,
461
+		$template_pack
462
+	) {
463
+		if (! $template_pack instanceof EE_Messages_Template_Pack_Default) {
464
+			return $base_path_or_url;
465
+		}
466
+		foreach (self::$_ee_message_type_registry as $message_type_name => $mt_reg) {
467
+			if ($message_type_name === $message_type_slug
468
+			) {
469
+				if ($url
470
+					&& ! empty($mt_reg['base_url_for_default_variation'])
471
+				) {
472
+					return $mt_reg['base_url_for_default_variation'];
473
+				} elseif (! $url
474
+					&& ! empty($mt_reg['base_path_for_default_variation'])
475
+				) {
476
+					return $mt_reg['base_path_for_default_variation'];
477
+				}
478
+			}
479
+		}
480
+		return $base_path_or_url;
481
+	}
482 482
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_Message_Resource_Manager.lib.php 2 patches
Spacing   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (! defined('EVENT_ESPRESSO_VERSION')) {
3
+if ( ! defined('EVENT_ESPRESSO_VERSION')) {
4 4
     exit('No direct script access allowed');
5 5
 }
6 6
 
@@ -276,7 +276,7 @@  discard block
 block discarded – undo
276 276
     public function is_message_type_active_for_messenger($messenger_name, $message_type_name)
277 277
     {
278 278
         $this->_initialize_collections();
279
-        return ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
279
+        return ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]);
280 280
     }
281 281
 
282 282
 
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
     {
305 305
         $settings = array();
306 306
         if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
307
-            $settings = isset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'])
308
-                ? $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings']
307
+            $settings = isset($this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]['settings'])
308
+                ? $this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]['settings']
309 309
                 : array();
310 310
         }
311 311
         return $settings;
@@ -324,7 +324,7 @@  discard block
 block discarded – undo
324 324
         $this->_initialize_collections();
325 325
         return
326 326
             ! empty($this->_active_message_types[$messenger_name])
327
-            && ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types']);
327
+            && ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types']);
328 328
     }
329 329
 
330 330
 
@@ -339,7 +339,7 @@  discard block
 block discarded – undo
339 339
     public function get_active_message_types_for_messenger($messenger_name)
340 340
     {
341 341
         $message_types = array();
342
-        if (! $this->messenger_has_active_message_types($messenger_name)) {
342
+        if ( ! $this->messenger_has_active_message_types($messenger_name)) {
343 343
             return $message_types;
344 344
         }
345 345
         $installed_message_types = $this->installed_message_types();
@@ -364,11 +364,11 @@  discard block
 block discarded – undo
364 364
         $active_message_type_names = array();
365 365
         $this->_initialize_collections();
366 366
         foreach ($this->_active_message_types as $messenger => $messenger_settings) {
367
-            if (! isset($messenger_settings['settings'][$messenger . '-message_types'])) {
367
+            if ( ! isset($messenger_settings['settings'][$messenger.'-message_types'])) {
368 368
                 continue;
369 369
             }
370
-            foreach ($messenger_settings['settings'][$messenger . '-message_types'] as $message_type_name => $message_type_config) {
371
-                if (! in_array($message_type_name, $active_message_type_names)) {
370
+            foreach ($messenger_settings['settings'][$messenger.'-message_types'] as $message_type_name => $message_type_config) {
371
+                if ( ! in_array($message_type_name, $active_message_type_names)) {
372 372
                     $active_message_type_names[] = $message_type_name;
373 373
                 }
374 374
             }
@@ -444,7 +444,7 @@  discard block
 block discarded – undo
444 444
     public function valid_message_type_for_messenger(EE_messenger $messenger, $message_type_name)
445 445
     {
446 446
         $valid_message_types = $messenger->get_valid_message_types();
447
-        if (! in_array($message_type_name, $valid_message_types)) {
447
+        if ( ! in_array($message_type_name, $valid_message_types)) {
448 448
             throw new EE_Error(
449 449
                 sprintf(
450 450
                     __(
@@ -567,7 +567,7 @@  discard block
 block discarded – undo
567 567
      */
568 568
     public function ensure_messenger_is_active($messenger_name, $update_option = true)
569 569
     {
570
-        if (! isset($this->_active_messengers[$messenger_name])) {
570
+        if ( ! isset($this->_active_messengers[$messenger_name])) {
571 571
             try {
572 572
                 $this->activate_messenger($messenger_name, array(), $update_option);
573 573
             } catch (EE_Error $e) {
@@ -612,7 +612,7 @@  discard block
 block discarded – undo
612 612
             $this->ensure_messenger_is_active($messenger_name, $update_option);
613 613
         }
614 614
 
615
-        if (! empty($not_installed_messenger)) {
615
+        if ( ! empty($not_installed_messenger)) {
616 616
             EE_Error::add_error(
617 617
                 sprintf(
618 618
                     __('The following messengers are either not installed or are invalid:%1$s %2$s', 'event_espresso'),
@@ -643,7 +643,7 @@  discard block
 block discarded – undo
643 643
             //ensure messenger is active (that's an inherent coupling between active message types and the
644 644
             //messenger they are being activated for.
645 645
             try {
646
-                if (! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
646
+                if ( ! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
647 647
                     //all is good so let's just get it active
648 648
                     $this->activate_messenger($messenger_name, array($message_type_name), $update_option);
649 649
                 }
@@ -671,7 +671,7 @@  discard block
 block discarded – undo
671 671
      */
672 672
     public function ensure_message_types_are_active($message_type_names, $messenger_name, $update_option = true)
673 673
     {
674
-        $message_type_names = (array)$message_type_names;
674
+        $message_type_names = (array) $message_type_names;
675 675
         foreach ($message_type_names as $message_type_name) {
676 676
             // note, intentionally not updating option here because we're in a loop.
677 677
             // We'll follow the instructions of the incoming $update_option argument after the loop.
@@ -717,7 +717,7 @@  discard block
 block discarded – undo
717 717
             //generate new templates if necessary and ensure all related templates that are already in the database are
718 718
             //marked active.  Note, this will also deactivate a message type for a messenger if the template
719 719
             //cannot be successfully created during its attempt (only happens for global template attempts).
720
-            if (! empty($message_type_names)) {
720
+            if ( ! empty($message_type_names)) {
721 721
                 $templates = EEH_MSG_Template::generate_new_templates($messenger->name, $message_type_names, 0, true);
722 722
                 EEH_MSG_Template::update_to_active(array($messenger->name), $message_type_names);
723 723
             }
@@ -743,10 +743,10 @@  discard block
 block discarded – undo
743 743
         //only override _active_message_types when an explicit array of $message_type_names has been provided.
744 744
         $message_type_names = empty($message_type_names) && ! isset($this->_active_message_types[$messenger->name])
745 745
             ? $messenger->get_default_message_types()
746
-            : (array)$message_type_names;
746
+            : (array) $message_type_names;
747 747
 
748 748
         //now we ALWAYS need to make sure that the messenger is active for the message types we're activating!
749
-        if (! isset($this->_active_message_types[$messenger->name])) {
749
+        if ( ! isset($this->_active_message_types[$messenger->name])) {
750 750
             $this->_active_message_types[$messenger->name]['settings'] = array();
751 751
         }
752 752
 
@@ -792,12 +792,12 @@  discard block
 block discarded – undo
792 792
                     $existing_settings[$field] = $new_settings[$field];
793 793
                     continue;
794 794
                 }
795
-                if (! isset($existing_settings[$field])) {
795
+                if ( ! isset($existing_settings[$field])) {
796 796
                     $existing_settings[$field] = $values['default'];
797 797
                 }
798 798
             }
799 799
         }
800
-        $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'] = $existing_settings;
800
+        $this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]['settings'] = $existing_settings;
801 801
     }
802 802
 
803 803
 
@@ -818,11 +818,11 @@  discard block
 block discarded – undo
818 818
         }
819 819
 
820 820
         // make sure this messenger has a record in the has_activated array
821
-        if (! isset($this->_has_activated_messengers_and_message_types[$messenger->name])) {
821
+        if ( ! isset($this->_has_activated_messengers_and_message_types[$messenger->name])) {
822 822
             $this->_has_activated_messengers_and_message_types[$messenger->name] = array();
823 823
         }
824 824
         // check if message type has already been added
825
-        if (! in_array($message_type_name, $this->_has_activated_messengers_and_message_types[$messenger->name])) {
825
+        if ( ! in_array($message_type_name, $this->_has_activated_messengers_and_message_types[$messenger->name])) {
826 826
             $this->_has_activated_messengers_and_message_types[$messenger->name][] = $message_type_name;
827 827
         }
828 828
     }
@@ -841,7 +841,7 @@  discard block
 block discarded – undo
841 841
         $messenger = $this->get_messenger($messenger_name);
842 842
         if ($messenger instanceof EE_messenger) {
843 843
             $msgr_settings = $messenger->get_admin_settings_fields();
844
-            if (! empty($msgr_settings)) {
844
+            if ( ! empty($msgr_settings)) {
845 845
                 foreach ($msgr_settings as $field => $value) {
846 846
                     //is there a new setting for this?
847 847
                     if (isset($new_settings[$field])) {
@@ -849,7 +849,7 @@  discard block
 block discarded – undo
849 849
                         continue;
850 850
                     }
851 851
                     //only set the default if it isn't already set.
852
-                    if (! isset($this->_active_message_types[$messenger->name]['settings'][$field])) {
852
+                    if ( ! isset($this->_active_message_types[$messenger->name]['settings'][$field])) {
853 853
                         $this->_active_message_types[$messenger->name]['settings'][$field] = $value;
854 854
                     }
855 855
                 }
@@ -893,7 +893,7 @@  discard block
 block discarded – undo
893 893
         }
894 894
         foreach ($this->_active_message_types as $messenger_name => $settings) {
895 895
             unset(
896
-                $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]
896
+                $this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]
897 897
             );
898 898
 
899 899
             //we always record (even on deactivation) that a message type has been activated because there should at
@@ -919,7 +919,7 @@  discard block
 block discarded – undo
919 919
     {
920 920
         $this->_initialize_collections();
921 921
         if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
922
-            unset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
922
+            unset($this->_active_message_types[$messenger_name]['settings'][$messenger_name.'-message_types'][$message_type_name]);
923 923
         }
924 924
         $this->_message_template_group_model->deactivate_message_template_groups_for(array($messenger_name),
925 925
             array($message_type_name));
@@ -1013,7 +1013,7 @@  discard block
 block discarded – undo
1013 1013
         $all_message_types_valid           = true;
1014 1014
         //loop through list of active message types and verify they are installed.
1015 1015
         foreach ($list_of_active_message_type_names as $message_type_name) {
1016
-            if (! isset($installed_message_types[$message_type_name])) {
1016
+            if ( ! isset($installed_message_types[$message_type_name])) {
1017 1017
                 $this->remove_message_type_has_been_activated_from_all_messengers(
1018 1018
                     $message_type_name,
1019 1019
                     true
@@ -1087,7 +1087,7 @@  discard block
 block discarded – undo
1087 1087
         $message_type_name,
1088 1088
         $consider_current_state = false
1089 1089
     ) {
1090
-        foreach(array_keys($this->get_has_activated_messengers_option()) as $messenger_name) {
1090
+        foreach (array_keys($this->get_has_activated_messengers_option()) as $messenger_name) {
1091 1091
             $this->remove_message_type_has_been_activated_for_messenger(
1092 1092
                 $message_type_name,
1093 1093
                 $messenger_name,
Please login to merge, or discard this patch.
Indentation   +1112 added lines, -1112 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (! defined('EVENT_ESPRESSO_VERSION')) {
4
-    exit('No direct script access allowed');
4
+	exit('No direct script access allowed');
5 5
 }
6 6
 
7 7
 
@@ -17,1117 +17,1117 @@  discard block
 block discarded – undo
17 17
 class EE_Message_Resource_Manager
18 18
 {
19 19
 
20
-    /**
21
-     * This option in the database is used to keep a record of message types that have been activated for a messenger
22
-     * at some point in the history of the site.  It is utilized by the implementation of the 'force' flag in
23
-     * EE_Register_Message_Type.  The force flag is an indication of whether a message type should be activated by
24
-     * default when the message type is registered.  However, if a user has explicitly deactivated a message type, then
25
-     * the force flag is ignored.  The method by which the code knows whether to ignore this flag is via this option.
26
-     * Note, that this is NOT a historical record.  Its entirely possible for a message type to have been activated for
27
-     * a messenger and yet not have a record in this option.  This occurs when a message type is inactivated through an
28
-     * automated process (when an add-on registering the message type deactivates, or when some other code calls the
29
-     * EE_Registery_Message_Type::deregister method) and the related record(s) is(are) removed from this option to ensure
30
-     * the "force" flag is respected if that message type is later re-registered.
31
-     *
32
-     * This option should NOT be used to determine the current "active" state of a message type for a given messenger.
33
-     *
34
-     * The name of this option (and related methods/properties) is due to matching the original intended purpose for the
35
-     * option that got superseded by later behaviour requirements.
36
-     */
37
-    const HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME = 'ee_has_activated_messenger';
38
-
39
-    /**
40
-     * @type boolean $_initialized
41
-     */
42
-    protected $_initialized = false;
43
-
44
-    /**
45
-     * @type EE_Messenger_Collection $_messenger_collection_loader
46
-     */
47
-    protected $_messenger_collection_loader;
48
-
49
-    /**
50
-     * @type EE_Message_Type_Collection $_message_type_collection_loader
51
-     */
52
-    protected $_message_type_collection_loader;
53
-
54
-    /**
55
-     * @type EEM_Message_Template_Group $_message_template_group_model
56
-     */
57
-    protected $_message_template_group_model;
58
-
59
-    /**
60
-     * @type EE_messenger[]
61
-     */
62
-    protected $_installed_messengers = array();
63
-
64
-    /**
65
-     * @type EE_message_type[]
66
-     */
67
-    protected $_installed_message_types = array();
68
-
69
-    /**
70
-     * Array of active messengers.
71
-     * Format is this:
72
-     * array(
73
-     *      'messenger_name' => EE_messenger
74
-     * )
75
-     *
76
-     * @type EE_messenger[]
77
-     */
78
-    protected $_active_messengers = array();
79
-
80
-    /**
81
-     * Formatted array of active message types grouped per messenger.
82
-     * Format is this:
83
-     * array(
84
-     *      'messenger_name' => array(
85
-     *          'settings' => array(
86
-     *              '{messenger_name}-message_types' => array(
87
-     *                  'message_type_name' => array() //variable array of settings corresponding to message type.
88
-     *              )
89
-     *          )
90
-     *      )
91
-     * )
92
-     *
93
-     * @type array
94
-     */
95
-    protected $_active_message_types = array();
96
-
97
-
98
-    /**
99
-     * This holds the array of messengers and their corresponding message types that have
100
-     * been activated on a site at some point.  This is an important record that helps the messages system
101
-     * not accidentally reactivate something that was intentionally deactivated by a user.
102
-     *
103
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
104
-     *
105
-     * @type array
106
-     */
107
-    protected $_has_activated_messengers_and_message_types = array();
108
-
109
-    /**
110
-     * An array of unique message type contexts across all active message types.
111
-     * The array will be indexed by either 'slugs' or 'all'.
112
-     * The slugs index contains an array indexed by unique context slugs with the latest label representation for that
113
-     * slug. array(
114
-     *      'context_slug' => 'localized label for context obtained from latest message type in the loop'.
115
-     * );
116
-     * The all index returns an array in this format:
117
-     * array(
118
-     *      'message_type_name' => array(
119
-     *          'context_slug' => array(
120
-     *              'label' => 'localized label for context',
121
-     *              'description' => 'localized description for context'
122
-     *          )
123
-     *      )
124
-     * );
125
-     *
126
-     * @type array
127
-     */
128
-    protected $_contexts = array();
129
-
130
-
131
-    /**
132
-     * EE_Message_Resource_Manager constructor.
133
-     *
134
-     * @param \EE_Messenger_Collection_Loader    $Messenger_Collection_Loader
135
-     * @param \EE_Message_Type_Collection_Loader $Message_Type_Collection_Loader
136
-     * @param \EEM_Message_Template_Group        $Message_Template_Group_Model
137
-     */
138
-    function __construct(
139
-        EE_Messenger_Collection_Loader $Messenger_Collection_Loader,
140
-        EE_Message_Type_Collection_Loader $Message_Type_Collection_Loader,
141
-        EEM_Message_Template_Group $Message_Template_Group_Model
142
-    ) {
143
-        $this->_messenger_collection_loader    = $Messenger_Collection_Loader;
144
-        $this->_message_type_collection_loader = $Message_Type_Collection_Loader;
145
-        $this->_message_template_group_model   = $Message_Template_Group_Model;
146
-    }
147
-
148
-
149
-    /**
150
-     * @return void
151
-     */
152
-    protected function _initialize_collections()
153
-    {
154
-        if ($this->_initialized) {
155
-            return;
156
-        }
157
-        $this->_initialized = true;
158
-        $this->_messenger_collection_loader->load_messengers_from_folder();
159
-        $this->_message_type_collection_loader->load_message_types_from_folder();
160
-        $this->get_has_activated_messengers_option(true);
161
-        $this->_set_active_messengers_and_message_types();
162
-    }
163
-
164
-
165
-    /**
166
-     * @return EE_Messenger_Collection
167
-     */
168
-    public function messenger_collection()
169
-    {
170
-        $this->_initialize_collections();
171
-        return $this->_messenger_collection_loader->messenger_collection();
172
-    }
173
-
174
-
175
-    /**
176
-     * @return EE_messenger[]
177
-     */
178
-    public function active_messengers()
179
-    {
180
-        $this->_initialize_collections();
181
-        return $this->_active_messengers;
182
-    }
183
-
184
-
185
-    /**
186
-     * @param string $messenger_name
187
-     * @return \EE_messenger
188
-     */
189
-    public function get_messenger($messenger_name)
190
-    {
191
-        return $this->messenger_collection()->get_by_info($messenger_name);
192
-    }
193
-
194
-
195
-    /**
196
-     * This returns the corresponding EE_messenger object for the given string if it is active.
197
-     *
198
-     * @param string $messenger
199
-     * @return EE_messenger | null
200
-     */
201
-    public function get_active_messenger($messenger)
202
-    {
203
-        $this->_initialize_collections();
204
-        return ! empty($this->_active_messengers[$messenger]) ? $this->_active_messengers[$messenger] : null;
205
-    }
206
-
207
-
208
-    /**
209
-     * @return \EE_messenger[]
210
-     */
211
-    public function installed_messengers()
212
-    {
213
-        if (empty($this->_installed_messengers)) {
214
-            $this->_installed_messengers = array();
215
-            $this->messenger_collection()->rewind();
216
-            while ($this->messenger_collection()->valid()) {
217
-                $this->_installed_messengers[$this->messenger_collection()->current()->name] = $this->messenger_collection()->current();
218
-                $this->messenger_collection()->next();
219
-            }
220
-        }
221
-        return $this->_installed_messengers;
222
-    }
223
-
224
-
225
-    /**
226
-     * @param string $messenger_name
227
-     * @return \EE_messenger
228
-     * @throws \EE_Error
229
-     */
230
-    public function valid_messenger($messenger_name)
231
-    {
232
-        $messenger = $this->get_messenger($messenger_name);
233
-        if ($messenger instanceof EE_messenger) {
234
-            return $messenger;
235
-        }
236
-        throw new EE_Error(
237
-            sprintf(
238
-                __('The "%1$s" messenger is either invalid or not installed', 'event_espresso'),
239
-                $messenger_name
240
-            )
241
-        );
242
-    }
243
-
244
-
245
-    /**
246
-     * @return EE_Message_Type_Collection
247
-     */
248
-    public function message_type_collection()
249
-    {
250
-        $this->_initialize_collections();
251
-        return $this->_message_type_collection_loader->message_type_collection();
252
-    }
253
-
254
-
255
-    /**
256
-     * @return array
257
-     */
258
-    public function active_message_types()
259
-    {
260
-        $this->_initialize_collections();
261
-        return $this->_active_message_types;
262
-    }
263
-
264
-
265
-    /**
266
-     * @param string $message_type_name
267
-     * @return \EE_message_type
268
-     */
269
-    public function get_message_type($message_type_name)
270
-    {
271
-        return $this->message_type_collection()->get_by_info($message_type_name);
272
-    }
273
-
274
-
275
-    /**
276
-     * This returns the EE_message_type from the active message types array ( if present );
277
-     *
278
-     * @param string $messenger_name
279
-     * @param string $message_type_name
280
-     * @return \EE_message_type|null
281
-     */
282
-    public function get_active_message_type_for_messenger($messenger_name, $message_type_name)
283
-    {
284
-        return $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)
285
-            ? $this->get_message_type($message_type_name)
286
-            : null;
287
-    }
288
-
289
-
290
-    /**
291
-     * Returns whether the given message type is active for the given messenger.
292
-     *
293
-     * @param string $messenger_name
294
-     * @param string $message_type_name
295
-     * @return bool
296
-     */
297
-    public function is_message_type_active_for_messenger($messenger_name, $message_type_name)
298
-    {
299
-        $this->_initialize_collections();
300
-        return ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
301
-    }
302
-
303
-
304
-    /**
305
-     * Returns whether the given messenger is active.
306
-     *
307
-     * @param string $messenger_name the name of the messenger to check if active.
308
-     * @return bool
309
-     */
310
-    public function is_messenger_active($messenger_name)
311
-    {
312
-        $this->_initialize_collections();
313
-        return ! empty($this->_active_message_types[$messenger_name]);
314
-    }
315
-
316
-
317
-    /**
318
-     * This returns any settings that might be on a message type for a messenger
319
-     *
320
-     * @param string $messenger_name    The slug of the messenger
321
-     * @param string $message_type_name The slug of the message type getting the settings for.
322
-     * @return array
323
-     */
324
-    public function get_message_type_settings_for_messenger($messenger_name, $message_type_name)
325
-    {
326
-        $settings = array();
327
-        if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
328
-            $settings = isset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'])
329
-                ? $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings']
330
-                : array();
331
-        }
332
-        return $settings;
333
-    }
334
-
335
-
336
-    /**
337
-     * Returns whether the given messenger name has active message types on it.
338
-     * Infers whether the messenger is active or not as well.
339
-     *
340
-     * @param string $messenger_name
341
-     * @return bool
342
-     */
343
-    public function messenger_has_active_message_types($messenger_name)
344
-    {
345
-        $this->_initialize_collections();
346
-        return
347
-            ! empty($this->_active_message_types[$messenger_name])
348
-            && ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types']);
349
-    }
350
-
351
-
352
-    /**
353
-     * This checks the _active_message_types property for any active message types
354
-     * that are present for the given messenger and returns them.
355
-     *
356
-     * @since 4.9.0
357
-     * @param string $messenger_name The messenger being checked
358
-     * @return EE_message_type[]|array    (empty array if no active_message_types)
359
-     */
360
-    public function get_active_message_types_for_messenger($messenger_name)
361
-    {
362
-        $message_types = array();
363
-        if (! $this->messenger_has_active_message_types($messenger_name)) {
364
-            return $message_types;
365
-        }
366
-        $installed_message_types = $this->installed_message_types();
367
-        foreach ($installed_message_types as $message_type_name => $message_type) {
368
-            if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
369
-                $message_types[$message_type_name] = $message_type;
370
-            }
371
-        }
372
-        return $message_types;
373
-    }
374
-
375
-
376
-    /**
377
-     * This does NOT return the _active_message_types property but
378
-     * simply returns an array of active message type names from that property.
379
-     * (The _active_message_types property is indexed by messenger and active message_types per messenger).
380
-     *
381
-     * @return array message_type references (string)
382
-     */
383
-    public function list_of_active_message_types()
384
-    {
385
-        $active_message_type_names = array();
386
-        $this->_initialize_collections();
387
-        foreach ($this->_active_message_types as $messenger => $messenger_settings) {
388
-            if (! isset($messenger_settings['settings'][$messenger . '-message_types'])) {
389
-                continue;
390
-            }
391
-            foreach ($messenger_settings['settings'][$messenger . '-message_types'] as $message_type_name => $message_type_config) {
392
-                if (! in_array($message_type_name, $active_message_type_names)) {
393
-                    $active_message_type_names[] = $message_type_name;
394
-                }
395
-            }
396
-        }
397
-        return $active_message_type_names;
398
-    }
399
-
400
-
401
-    /**
402
-     * Same as list_of_active_message_types() except this returns actual EE_message_type objects
403
-     *
404
-     * @since 4.9.0
405
-     * @return \EE_message_type[]
406
-     */
407
-    public function get_active_message_type_objects()
408
-    {
409
-        $active_message_types      = array();
410
-        $installed_message_types   = $this->installed_message_types();
411
-        $active_message_type_names = $this->list_of_active_message_types();
412
-        foreach ($active_message_type_names as $active_message_type_name) {
413
-            if (isset($installed_message_types[$active_message_type_name])) {
414
-                $active_message_types[$active_message_type_name] = $installed_message_types[$active_message_type_name];
415
-            }
416
-        }
417
-        return $active_message_types;
418
-    }
419
-
420
-
421
-    /**
422
-     * @return \EE_message_type[]
423
-     */
424
-    public function installed_message_types()
425
-    {
426
-        if (empty($this->_installed_message_types)) {
427
-            $this->message_type_collection()->rewind();
428
-            while ($this->message_type_collection()->valid()) {
429
-                $this->_installed_message_types[$this->message_type_collection()->current()->name] = $this->message_type_collection()->current();
430
-                $this->message_type_collection()->next();
431
-            }
432
-        }
433
-        return $this->_installed_message_types;
434
-    }
435
-
436
-
437
-    /**
438
-     * @param string $message_type_name
439
-     * @return \EE_message_type
440
-     * @throws \EE_Error
441
-     */
442
-    public function valid_message_type($message_type_name)
443
-    {
444
-        $message_type = $this->get_message_type($message_type_name);
445
-        if ($message_type instanceof EE_message_type) {
446
-            return $message_type;
447
-        }
448
-        throw new EE_Error(
449
-            sprintf(
450
-                __('The "%1$s" message type is either invalid or not installed', 'event_espresso'),
451
-                $message_type_name
452
-            )
453
-        );
454
-    }
455
-
456
-
457
-    /**
458
-     * valid_message_type_for_messenger
459
-     *
460
-     * @param EE_messenger $messenger
461
-     * @param string       $message_type_name
462
-     * @return boolean
463
-     * @throws \EE_Error
464
-     */
465
-    public function valid_message_type_for_messenger(EE_messenger $messenger, $message_type_name)
466
-    {
467
-        $valid_message_types = $messenger->get_valid_message_types();
468
-        if (! in_array($message_type_name, $valid_message_types)) {
469
-            throw new EE_Error(
470
-                sprintf(
471
-                    __(
472
-                        'The message type (%1$s) sent to "%2$s" is not valid for the "%3$s" messenger.  Double-check the spelling and verify that message type has been registered as a valid type with the messenger.',
473
-                        'event_espresso'
474
-                    ),
475
-                    $message_type_name,
476
-                    __METHOD__,
477
-                    $messenger->name
478
-                )
479
-            );
480
-        }
481
-        return true;
482
-    }
483
-
484
-
485
-    /**
486
-     * Used to return active messengers array stored in the wp options table.
487
-     * If no value is present in the option then an empty array is returned.
488
-     *
489
-     * @param   bool $reset     If true then we ignore whether the option is cached on the _active_message_types
490
-     *                          property and pull directly from the db.  Otherwise whatever is currently on the
491
-     *                          $_active_message_types property is pulled.
492
-     * @return array
493
-     */
494
-    public function get_active_messengers_option($reset = false)
495
-    {
496
-        if ($reset) {
497
-            $this->_active_message_types = get_option('ee_active_messengers', array());
498
-        }
499
-        return $this->_active_message_types;
500
-    }
501
-
502
-
503
-    /**
504
-     * Used to update the active messengers array stored in the wp options table.
505
-     *
506
-     * @param array $active_messenger_settings Incoming data to save.  If empty, then the internal cached property
507
-     *                                         representing this data is used.
508
-     * @return bool FALSE if not updated, TRUE if updated.
509
-     */
510
-    public function update_active_messengers_option($active_messenger_settings = array())
511
-    {
512
-        $active_messenger_settings = empty($active_messenger_settings) ? $this->_active_message_types : $active_messenger_settings;
513
-        //make sure _active_message_types is updated (this is the internal cache for the settings).
514
-        $this->_active_message_types = $active_messenger_settings;
515
-        return update_option('ee_active_messengers', $active_messenger_settings);
516
-    }
517
-
518
-
519
-    /**
520
-     * Used to return has activated message types for messengers array stored in the wp options table.
521
-     * If no value is present in the option then an empty array is returned.
522
-     * The value is cached on the $_has_activated_messengers_and_message_types property for future calls.
523
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
524
-     *
525
-     * @param   bool $reset Used to indicate that any cached value should be ignored.
526
-     * @return array
527
-     */
528
-    public function get_has_activated_messengers_option($reset = false)
529
-    {
530
-        if ($reset || empty($this->_has_activated_messengers_and_message_types)) {
531
-            $this->_has_activated_messengers_and_message_types = get_option(self::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME, array());
532
-        }
533
-        return $this->_has_activated_messengers_and_message_types;
534
-    }
535
-
536
-
537
-    /**
538
-     * Used to update the has activated option in the db.
539
-     *
540
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
541
-     *
542
-     * @param array $has_activated_messengers Incoming data to save.  If empty, then the internal cached property
543
-     *                                        representing this data is used.
544
-     * @return bool FALSE if not updated, TRUE if updated.
545
-     */
546
-    public function update_has_activated_messengers_option($has_activated_messengers = array())
547
-    {
548
-        //make sure the option has been retrieved from first so we don't overwrite it accidentally.
549
-        if (empty($has_activated_messengers) && empty($this->_has_activated_messengers_and_message_types)) {
550
-            $this->get_has_activated_messengers_option();
551
-        }
552
-        $has_activated_messengers = empty($has_activated_messengers)
553
-            ? $this->_has_activated_messengers_and_message_types
554
-            : $has_activated_messengers;
555
-        return update_option(self::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME, $has_activated_messengers);
556
-    }
557
-
558
-
559
-    /**
560
-     * wrapper for _set_active_messengers_and_message_types()
561
-     */
562
-    public function reset_active_messengers_and_message_types()
563
-    {
564
-        $this->_set_active_messengers_and_message_types();
565
-    }
566
-
567
-
568
-    /**
569
-     * Generate list of active messengers and message types from collection.
570
-     * This sets up the active messengers from what is present in the database.
571
-     */
572
-    protected function _set_active_messengers_and_message_types()
573
-    {
574
-        //echo "\n\n " . __LINE__ . ") " . __METHOD__ . "() \n";
575
-        // list of activated messengers as set via the admin
576
-        // note calling `get_active_messengers_options` also initializes the _active_message_types property.
577
-        $this->get_active_messengers_option(true);
578
-        $this->ensure_messengers_are_active(array(), false, true);
579
-        $this->update_active_messengers_option();
580
-        $this->update_has_activated_messengers_option();
581
-    }
582
-
583
-
584
-    /**
585
-     * Ensures that the specified messenger is currently active.
586
-     * If not, activates it and its default message types.
587
-     *
588
-     * @param string $messenger_name
589
-     * @param bool   $update_option Whether to update the option in the db or not.
590
-     * @return boolean true if either already active or successfully activated.
591
-     */
592
-    public function ensure_messenger_is_active($messenger_name, $update_option = true)
593
-    {
594
-        if (! isset($this->_active_messengers[$messenger_name])) {
595
-            try {
596
-                $this->activate_messenger($messenger_name, array(), $update_option);
597
-            } catch (EE_Error $e) {
598
-                EE_Error::add_error(
599
-                    $e->getMessage(),
600
-                    __FILE__,
601
-                    __FUNCTION__,
602
-                    __LINE__
603
-                );
604
-                return false;
605
-            }
606
-        }
607
-        return true;
608
-    }
609
-
610
-
611
-    /**
612
-     * This ensures the given array of messenger names is active in the system.
613
-     * Note, this method will not activate any NEW message types for the messenger when it is called. Instead,
614
-     * it will automatically activate the default message types for the messenger if its not active.
615
-     *
616
-     * @param array $messenger_names  Array of messenger names for messengers to be activated.  If an empty array
617
-     *                                (default) then will attempt to set the active messengers from the
618
-     *                                activated_messengers option
619
-     *                                (stored in $_active_message_types property).
620
-     * @param bool  $update_option    Whether to update the related active messengers option.
621
-     * @param bool  $verify           Whether to verify the messengers are installed before activating. Note if this is
622
-     *                                set to true and a messenger is indicated as active, but is NOT installed, then it
623
-     *                                will automatically be deactivated.
624
-     */
625
-    public function ensure_messengers_are_active($messenger_names = array(), $update_option = true, $verify = false)
626
-    {
627
-        $messenger_names = empty($messenger_names) ? array_keys($this->_active_message_types) : $messenger_names;
628
-
629
-        $not_installed = array();
630
-        foreach ($messenger_names as $messenger_name) {
631
-            if ($verify && ! $this->messenger_collection()->has_by_name($messenger_name)) {
632
-                $not_installed[] = $messenger_name;
633
-                $this->deactivate_messenger($messenger_name);
634
-                continue;
635
-            }
636
-            $this->ensure_messenger_is_active($messenger_name, $update_option);
637
-        }
638
-
639
-        if (! empty($not_installed_messenger)) {
640
-            EE_Error::add_error(
641
-                sprintf(
642
-                    __('The following messengers are either not installed or are invalid:%1$s %2$s', 'event_espresso'),
643
-                    '<br />',
644
-                    implode(', ', $not_installed_messenger)
645
-                ),
646
-                __FILE__, __FUNCTION__, __LINE__
647
-            );
648
-        }
649
-    }
650
-
651
-
652
-    /**
653
-     * Ensures that the specified message type for the given messenger is currently active, if not activates it.
654
-     * This ALSO ensures that the given messenger is active as well!
655
-     *
656
-     * @param string $message_type_name message type name.
657
-     * @param        $messenger_name
658
-     * @param bool   $update_option     Whether to update the option in the db or not.
659
-     * @return bool  Returns true if already is active or if was activated successfully.
660
-     * @throws \EE_Error
661
-     */
662
-    public function ensure_message_type_is_active($message_type_name, $messenger_name, $update_option = true)
663
-    {
664
-        // grab the messenger to work with.
665
-        $messenger = $this->valid_messenger($messenger_name);
666
-        if ($this->valid_message_type_for_messenger($messenger, $message_type_name)) {
667
-            //ensure messenger is active (that's an inherent coupling between active message types and the
668
-            //messenger they are being activated for.
669
-            try {
670
-                if (! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
671
-                    //all is good so let's just get it active
672
-                    $this->activate_messenger($messenger_name, array($message_type_name), $update_option);
673
-                }
674
-            } catch (EE_Error $e) {
675
-                EE_Error::add_error(
676
-                    $e->getMessage(),
677
-                    __FILE__,
678
-                    __FUNCTION__,
679
-                    __LINE__
680
-                );
681
-                return false;
682
-            }
683
-        }
684
-        return true;
685
-    }
686
-
687
-
688
-    /**
689
-     * This is a wrapper for `ensure_message_type_is_active` that will handle ensuring multiple message types for a
690
-     * messenger are active in one go.
691
-     *
692
-     * @param array  $message_type_names Array of message type names to ensure are active.
693
-     * @param string $messenger_name     The name of the messenger that the message types are to be activated on.
694
-     * @param bool   $update_option      Whether to persist the activation to the database or not (default true).
695
-     */
696
-    public function ensure_message_types_are_active($message_type_names, $messenger_name, $update_option = true)
697
-    {
698
-        $message_type_names = (array)$message_type_names;
699
-        foreach ($message_type_names as $message_type_name) {
700
-            // note, intentionally not updating option here because we're in a loop.
701
-            // We'll follow the instructions of the incoming $update_option argument after the loop.
702
-            $this->ensure_message_type_is_active($message_type_name, $messenger_name, false);
703
-        }
704
-        if ($update_option) {
705
-            $this->update_active_messengers_option();
706
-            $this->update_has_activated_messengers_option();
707
-        }
708
-    }
709
-
710
-
711
-    /**
712
-     * Activates the specified messenger.
713
-     *
714
-     * @param string $messenger_name
715
-     * @param array  $message_type_names        An array of message type names to activate with this messenger.
716
-     *                                          If included we do NOT setup the default message types
717
-     *                                          (assuming they are already setup.)
718
-     * @param bool   $update_active_messengers_option
719
-     * @return array of generated templates
720
-     * @throws \EE_Error
721
-     */
722
-    public function activate_messenger(
723
-        $messenger_name,
724
-        $message_type_names = array(),
725
-        $update_active_messengers_option = true
726
-    ) {
727
-        $templates = array();
728
-        // grab the messenger to work with.
729
-        $messenger = $this->messenger_collection()->get_by_info($messenger_name);
730
-        // it's inactive. Activate it.
731
-        if ($messenger instanceof EE_messenger) {
732
-            $this->_active_messengers[$messenger->name] = $messenger;
733
-            //activate incoming message types set to be activated with messenger.
734
-            $message_type_names = $this->_activate_message_types($messenger, $message_type_names);
735
-            // setup any initial settings for the messenger if necessary.
736
-            $this->add_settings_for_messenger($messenger->name);
737
-            if ($update_active_messengers_option) {
738
-                $this->update_active_messengers_option();
739
-                $this->update_has_activated_messengers_option();
740
-            }
741
-            //generate new templates if necessary and ensure all related templates that are already in the database are
742
-            //marked active.  Note, this will also deactivate a message type for a messenger if the template
743
-            //cannot be successfully created during its attempt (only happens for global template attempts).
744
-            if (! empty($message_type_names)) {
745
-                $templates = EEH_MSG_Template::generate_new_templates($messenger->name, $message_type_names, 0, true);
746
-                EEH_MSG_Template::update_to_active(array($messenger->name), $message_type_names);
747
-            }
748
-        }
749
-        return $templates;
750
-    }
751
-
752
-
753
-    /**
754
-     * Activates given message types for the given EE_messenger object.
755
-     * Note: (very important) This method does not persist the activation to the database.
756
-     * See code implementing this method in this class for examples of how to persist.
757
-     *
758
-     * @param \EE_messenger $messenger
759
-     * @param  array        $message_type_names
760
-     * @return array
761
-     */
762
-    protected function _activate_message_types(EE_messenger $messenger, $message_type_names = array())
763
-    {
764
-        //If $message_type_names is empty, AND $this->_active_message_types is empty, then that means
765
-        //things have never been initialized (which should happen on EEH_Activation::generate_message_templates).
766
-        //So ONLY then do we need to actually grab defaults and cycle through them.  Otherwise we
767
-        //only override _active_message_types when an explicit array of $message_type_names has been provided.
768
-        $message_type_names = empty($message_type_names) && ! isset($this->_active_message_types[$messenger->name])
769
-            ? $messenger->get_default_message_types()
770
-            : (array)$message_type_names;
771
-
772
-        //now we ALWAYS need to make sure that the messenger is active for the message types we're activating!
773
-        if (! isset($this->_active_message_types[$messenger->name])) {
774
-            $this->_active_message_types[$messenger->name]['settings'] = array();
775
-        }
776
-
777
-        if ($message_type_names) {
778
-            // cycle thru message types
779
-            foreach ($message_type_names as $message_type_name) {
780
-                //only register the message type as active IF it isn't already active
781
-                //and if its actually installed.
782
-                if (
783
-                ! $this->is_message_type_active_for_messenger($messenger->name, $message_type_name)
784
-                ) {
785
-                    $this->add_settings_for_message_type($messenger->name, $message_type_name);
786
-                    $this->_set_messenger_has_activated_message_type(
787
-                        $messenger,
788
-                        $message_type_name
789
-                    );
790
-                }
791
-            }
792
-        }
793
-        return $message_type_names;
794
-    }
795
-
796
-
797
-    /**
798
-     * add_settings_for_message_type
799
-     * NOTE This does NOT automatically persist any settings to the db.  Client code should call
800
-     * $this->update_active_messengers_option to persist.
801
-     *
802
-     * @param  string $messenger_name    The name of the messenger adding the settings for
803
-     * @param  string $message_type_name The name of the message type adding the settings for
804
-     * @param  array  $new_settings      Any new settings being set for the message type and messenger
805
-     */
806
-    public function add_settings_for_message_type($messenger_name, $message_type_name, $new_settings = array())
807
-    {
808
-        // get installed message type from collection
809
-        $message_type      = $this->message_type_collection()->get_by_info($message_type_name);
810
-        $existing_settings = $this->get_message_type_settings_for_messenger($messenger_name, $message_type_name);
811
-        //we need to setup any initial settings for message types
812
-        if ($message_type instanceof EE_message_type) {
813
-            $default_settings = $message_type->get_admin_settings_fields();
814
-            foreach ($default_settings as $field => $values) {
815
-                if (isset($new_settings[$field])) {
816
-                    $existing_settings[$field] = $new_settings[$field];
817
-                    continue;
818
-                }
819
-                if (! isset($existing_settings[$field])) {
820
-                    $existing_settings[$field] = $values['default'];
821
-                }
822
-            }
823
-        }
824
-        $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'] = $existing_settings;
825
-    }
826
-
827
-
828
-    /**
829
-     * Updates the internal cached _has_activated_messengers_and_message_types property with the given messenger
830
-     * and message type.
831
-     *
832
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
833
-     *
834
-     * @access protected
835
-     * @param \EE_messenger $messenger
836
-     * @param string        $message_type_name
837
-     */
838
-    protected function _set_messenger_has_activated_message_type(EE_messenger $messenger, $message_type_name)
839
-    {
840
-
841
-        //if _has_activated_messengers_and_message_types is empty then lets ensure its initialized
842
-        if (empty($this->_has_activated_messengers_and_message_types)) {
843
-            $this->get_has_activated_messengers_option();
844
-        }
845
-
846
-        // make sure this messenger has a record in the has_activated array
847
-        if (! isset($this->_has_activated_messengers_and_message_types[$messenger->name])) {
848
-            $this->_has_activated_messengers_and_message_types[$messenger->name] = array();
849
-        }
850
-        // check if message type has already been added
851
-        if (! in_array($message_type_name, $this->_has_activated_messengers_and_message_types[$messenger->name])) {
852
-            $this->_has_activated_messengers_and_message_types[$messenger->name][] = $message_type_name;
853
-        }
854
-    }
855
-
856
-
857
-    /**
858
-     * add_settings_for_messenger
859
-     * NOTE This does NOT automatically persist any settings to the db.  Client code should call
860
-     * $this->update_active_messengers_option to persist.
861
-     *
862
-     * @param string $messenger_name The name of the messenger the settings is being added for.
863
-     * @param array  $new_settings   An array of settings to update the existing settings.
864
-     */
865
-    public function add_settings_for_messenger($messenger_name, $new_settings = array())
866
-    {
867
-        $messenger = $this->get_messenger($messenger_name);
868
-        if ($messenger instanceof EE_messenger) {
869
-            $msgr_settings = $messenger->get_admin_settings_fields();
870
-            if (! empty($msgr_settings)) {
871
-                foreach ($msgr_settings as $field => $value) {
872
-                    //is there a new setting for this?
873
-                    if (isset($new_settings[$field])) {
874
-                        $this->_active_message_types[$messenger->name]['settings'][$field] = $new_settings[$field];
875
-                        continue;
876
-                    }
877
-                    //only set the default if it isn't already set.
878
-                    if (! isset($this->_active_message_types[$messenger->name]['settings'][$field])) {
879
-                        $this->_active_message_types[$messenger->name]['settings'][$field] = $value;
880
-                    }
881
-                }
882
-            }
883
-        }
884
-    }
885
-
886
-
887
-    /**
888
-     * deactivate_messenger
889
-     *
890
-     * @param  string|EE_messenger $messenger_name name of messenger
891
-     * @return void
892
-     */
893
-    public function deactivate_messenger($messenger_name)
894
-    {
895
-        $this->_initialize_collections();
896
-        if ($messenger_name instanceof EE_messenger) {
897
-            $messenger_name = $messenger_name->name;
898
-        }
899
-        unset($this->_active_messengers[$messenger_name]);
900
-        unset($this->_active_message_types[$messenger_name]);
901
-        $this->_message_template_group_model->deactivate_message_template_groups_for($messenger_name);
902
-        $this->update_active_messengers_option();
903
-    }
904
-
905
-
906
-    /**
907
-     * Deactivates a message type (note this will deactivate across all messenger's it is active on.
908
-     *
909
-     * @param  string $message_type_name     name of message type being deactivated
910
-     * @param bool    $set_has_active_record By default we always record the has_active record when deactivating a message
911
-     *                                       type.  However, this can be overridden if we don't want this set (usually when
912
-     *                                       this is called as a part of deregistration of a custom message type)
913
-     */
914
-    public function deactivate_message_type($message_type_name, $set_has_active_record = true)
915
-    {
916
-        $this->_initialize_collections();
917
-        if ($message_type_name instanceof EE_message_type) {
918
-            $message_type_name = $message_type_name->name;
919
-        }
920
-        foreach ($this->_active_message_types as $messenger_name => $settings) {
921
-            unset(
922
-                $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]
923
-            );
924
-
925
-            //we always record (even on deactivation) that a message type has been activated because there should at
926
-            //least be a record in the "has_activated" option that it WAS active at one point.
927
-            if ($set_has_active_record) {
928
-                $messenger = $this->get_messenger($messenger_name);
929
-                $this->_set_messenger_has_activated_message_type($messenger, $message_type_name);
930
-            }
931
-        }
932
-        $this->_message_template_group_model->deactivate_message_template_groups_for('', $message_type_name);
933
-        $this->update_active_messengers_option();
934
-        $this->update_has_activated_messengers_option();
935
-    }
936
-
937
-
938
-    /**
939
-     * Deactivates a message type for a specific messenger as opposed to all messengers.
940
-     *
941
-     * @param string $message_type_name Name of message type being deactivated.
942
-     * @param string $messenger_name    Name of messenger the message type is being deactivated for.
943
-     */
944
-    public function deactivate_message_type_for_messenger($message_type_name, $messenger_name)
945
-    {
946
-        $this->_initialize_collections();
947
-        if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
948
-            unset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
949
-        }
950
-        $this->_message_template_group_model->deactivate_message_template_groups_for(array($messenger_name),
951
-            array($message_type_name));
952
-        $this->update_active_messengers_option();
953
-    }
954
-
955
-
956
-    /**
957
-     * Used to verify if a message can be sent for the given messenger and message type
958
-     * and that it is a generating messenger (used for generating message templates).
959
-     *
960
-     * @param EE_messenger    $messenger    messenger used in trigger
961
-     * @param EE_message_type $message_type message type used in trigger
962
-     * @return bool true is a generating messenger and can be sent OR FALSE meaning cannot send.
963
-     */
964
-    public function is_generating_messenger_and_active(EE_messenger $messenger, EE_message_type $message_type)
965
-    {
966
-        //get the $messengers the message type says it can be used with.
967
-        foreach ($message_type->with_messengers() as $generating_messenger => $secondary_messengers) {
968
-            if (
969
-                $messenger->name === $generating_messenger
970
-                && $this->is_message_type_active_for_messenger($messenger->name, $message_type->name)
971
-            ) {
972
-                return true;
973
-            }
974
-        }
975
-        return false;
976
-    }
977
-
978
-
979
-    /**
980
-     * This returns all the contexts that are registered by all message types.
981
-     * If $slugs_only is true,
982
-     * then just an array indexed by unique context slugs with the latest label representation for that slug.
983
-     * array(
984
-     *      'context_slug' => 'localized label for context obtained from latest message type in the loop'.
985
-     * );
986
-     * If $slugs_only is false, then the format is:
987
-     * array(
988
-     *      'message_type_name' => array(
989
-     *          'context_slug' => array(
990
-     *              'label' => 'localized label for context',
991
-     *              'description' => 'localized description for context'
992
-     *          )
993
-     *      )
994
-     * );
995
-     * Keep in mind that although different message types may share the same context slugs,
996
-     * it is possible that the context is described differently by the message type.
997
-     *
998
-     * @since 4.9.0
999
-     * @param   bool $slugs_only Whether to return an array of just slugs and labels (true)
1000
-     *                           or all contexts indexed by message type.
1001
-     * @return array
1002
-     */
1003
-    public function get_all_contexts($slugs_only = true)
1004
-    {
1005
-        $key = $slugs_only ? 'slugs' : 'all';
1006
-        // check if contexts has been setup yet.
1007
-        if (empty($this->_contexts[$key])) {
1008
-            // So let's get all active message type objects and loop through to get all unique contexts
1009
-            foreach ($this->get_active_message_type_objects() as $message_type) {
1010
-                if ($message_type instanceof EE_message_type) {
1011
-                    $message_type_contexts = $message_type->get_contexts();
1012
-                    if ($slugs_only) {
1013
-                        foreach ($message_type_contexts as $context => $context_details) {
1014
-                            $this->_contexts[$key][$context] = $context_details['label'];
1015
-                        }
1016
-                    } else {
1017
-                        $this->_contexts[$key][$message_type->name] = $message_type_contexts;
1018
-                    }
1019
-                }
1020
-            }
1021
-        }
1022
-        return ! empty($this->_contexts[$key]) ? $this->_contexts[$key] : array();
1023
-    }
1024
-
1025
-
1026
-    /**
1027
-     * This checks the internal record of what message types are considered "active" and verifies that
1028
-     * there is an installed class definition for that message type.  If the active message type does not have a
1029
-     * corresponding accessible message type class then it will be deactivated from all messengers it is active on and
1030
-     * any related message templates will be inactivated as well.
1031
-     *
1032
-     * @return bool   true means all active message types are valid, false means at least one message type was
1033
-     *                deactivated.
1034
-     */
1035
-    public function validate_active_message_types_are_installed()
1036
-    {
1037
-        $list_of_active_message_type_names = $this->list_of_active_message_types();
1038
-        $installed_message_types           = $this->installed_message_types();
1039
-        $all_message_types_valid           = true;
1040
-        //loop through list of active message types and verify they are installed.
1041
-        foreach ($list_of_active_message_type_names as $message_type_name) {
1042
-            if (! isset($installed_message_types[$message_type_name])) {
1043
-                $this->remove_message_type_has_been_activated_from_all_messengers(
1044
-                    $message_type_name,
1045
-                    true
1046
-                );
1047
-                $this->deactivate_message_type($message_type_name, false);
1048
-                $all_message_types_valid = false;
1049
-            }
1050
-        }
1051
-        return $all_message_types_valid;
1052
-    }
1053
-
1054
-
1055
-    /**
1056
-     * This method checks the `ee_has_activated_messenger` option to see if the message type has ever been
1057
-     * activated for the given messenger.  This can be called by client code on plugin updates etc to determine whether
1058
-     * to attempt automatically reactivating message types that should be activated by default or not.
1059
-     *
1060
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1061
-     *
1062
-     * @param $message_type_name
1063
-     * @param $messenger_name
1064
-     * @return bool
1065
-     */
1066
-    public function has_message_type_been_activated_for_messenger($message_type_name, $messenger_name)
1067
-    {
1068
-        $has_activated = $this->get_has_activated_messengers_option();
1069
-        return isset($has_activated[$messenger_name])
1070
-               && in_array($message_type_name, $has_activated[$messenger_name]);
1071
-    }
1072
-
1073
-
1074
-    /**
1075
-     * This method unsets a message type from the given messenger has activated option.
1076
-     *
1077
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1078
-     *
1079
-     * @param string $message_type_name
1080
-     * @param string $messenger_name
1081
-     * @param bool   $consider_current_state  Whether to consider whether the  message type is currently active or not.
1082
-     *                                        If it is currently active, then remove.  Otherwise leave it alone.
1083
-     */
1084
-    public function remove_message_type_has_been_activated_for_messenger(
1085
-        $message_type_name,
1086
-        $messenger_name,
1087
-        $consider_current_state = false
1088
-    ) {
1089
-        if ($consider_current_state
1090
-            && ! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)
1091
-        ) {
1092
-            //when consider current state is true, this means we don't want to change anything on the "has_activated"
1093
-            //record if the message type is currently active for this messenger.  This is used when we want to retain
1094
-            //the record for user initiated inactivations of the message type.
1095
-            return;
1096
-        }
1097
-        $has_activated = $this->get_has_activated_messengers_option();
1098
-        $key_for_message_type = isset($has_activated[$messenger_name])
1099
-            ? array_search($message_type_name, $has_activated[$messenger_name], true)
1100
-            : false;
1101
-        if ($key_for_message_type !== false) {
1102
-            unset($has_activated[$messenger_name][$key_for_message_type]);
1103
-            $this->update_has_activated_messengers_option($has_activated);
1104
-            //reset the internal cached property
1105
-            $this->get_has_activated_messengers_option(true);
1106
-        }
1107
-    }
1108
-
1109
-
1110
-    /**
1111
-     * Removes a message type active record from all messengers it is attached to.
1112
-     *
1113
-     * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1114
-     *
1115
-     * @param      $message_type_name
1116
-     * @param bool $consider_current_state  Whether to consider whether the  message type is currently active or not.
1117
-     *                                      If it is currently active, then remove.  Otherwise leave it alone.
1118
-     */
1119
-    public function remove_message_type_has_been_activated_from_all_messengers(
1120
-        $message_type_name,
1121
-        $consider_current_state = false
1122
-    ) {
1123
-        foreach(array_keys($this->get_has_activated_messengers_option()) as $messenger_name) {
1124
-            $this->remove_message_type_has_been_activated_for_messenger(
1125
-                $message_type_name,
1126
-                $messenger_name,
1127
-                $consider_current_state
1128
-            );
1129
-        }
1130
-    }
20
+	/**
21
+	 * This option in the database is used to keep a record of message types that have been activated for a messenger
22
+	 * at some point in the history of the site.  It is utilized by the implementation of the 'force' flag in
23
+	 * EE_Register_Message_Type.  The force flag is an indication of whether a message type should be activated by
24
+	 * default when the message type is registered.  However, if a user has explicitly deactivated a message type, then
25
+	 * the force flag is ignored.  The method by which the code knows whether to ignore this flag is via this option.
26
+	 * Note, that this is NOT a historical record.  Its entirely possible for a message type to have been activated for
27
+	 * a messenger and yet not have a record in this option.  This occurs when a message type is inactivated through an
28
+	 * automated process (when an add-on registering the message type deactivates, or when some other code calls the
29
+	 * EE_Registery_Message_Type::deregister method) and the related record(s) is(are) removed from this option to ensure
30
+	 * the "force" flag is respected if that message type is later re-registered.
31
+	 *
32
+	 * This option should NOT be used to determine the current "active" state of a message type for a given messenger.
33
+	 *
34
+	 * The name of this option (and related methods/properties) is due to matching the original intended purpose for the
35
+	 * option that got superseded by later behaviour requirements.
36
+	 */
37
+	const HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME = 'ee_has_activated_messenger';
38
+
39
+	/**
40
+	 * @type boolean $_initialized
41
+	 */
42
+	protected $_initialized = false;
43
+
44
+	/**
45
+	 * @type EE_Messenger_Collection $_messenger_collection_loader
46
+	 */
47
+	protected $_messenger_collection_loader;
48
+
49
+	/**
50
+	 * @type EE_Message_Type_Collection $_message_type_collection_loader
51
+	 */
52
+	protected $_message_type_collection_loader;
53
+
54
+	/**
55
+	 * @type EEM_Message_Template_Group $_message_template_group_model
56
+	 */
57
+	protected $_message_template_group_model;
58
+
59
+	/**
60
+	 * @type EE_messenger[]
61
+	 */
62
+	protected $_installed_messengers = array();
63
+
64
+	/**
65
+	 * @type EE_message_type[]
66
+	 */
67
+	protected $_installed_message_types = array();
68
+
69
+	/**
70
+	 * Array of active messengers.
71
+	 * Format is this:
72
+	 * array(
73
+	 *      'messenger_name' => EE_messenger
74
+	 * )
75
+	 *
76
+	 * @type EE_messenger[]
77
+	 */
78
+	protected $_active_messengers = array();
79
+
80
+	/**
81
+	 * Formatted array of active message types grouped per messenger.
82
+	 * Format is this:
83
+	 * array(
84
+	 *      'messenger_name' => array(
85
+	 *          'settings' => array(
86
+	 *              '{messenger_name}-message_types' => array(
87
+	 *                  'message_type_name' => array() //variable array of settings corresponding to message type.
88
+	 *              )
89
+	 *          )
90
+	 *      )
91
+	 * )
92
+	 *
93
+	 * @type array
94
+	 */
95
+	protected $_active_message_types = array();
96
+
97
+
98
+	/**
99
+	 * This holds the array of messengers and their corresponding message types that have
100
+	 * been activated on a site at some point.  This is an important record that helps the messages system
101
+	 * not accidentally reactivate something that was intentionally deactivated by a user.
102
+	 *
103
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
104
+	 *
105
+	 * @type array
106
+	 */
107
+	protected $_has_activated_messengers_and_message_types = array();
108
+
109
+	/**
110
+	 * An array of unique message type contexts across all active message types.
111
+	 * The array will be indexed by either 'slugs' or 'all'.
112
+	 * The slugs index contains an array indexed by unique context slugs with the latest label representation for that
113
+	 * slug. array(
114
+	 *      'context_slug' => 'localized label for context obtained from latest message type in the loop'.
115
+	 * );
116
+	 * The all index returns an array in this format:
117
+	 * array(
118
+	 *      'message_type_name' => array(
119
+	 *          'context_slug' => array(
120
+	 *              'label' => 'localized label for context',
121
+	 *              'description' => 'localized description for context'
122
+	 *          )
123
+	 *      )
124
+	 * );
125
+	 *
126
+	 * @type array
127
+	 */
128
+	protected $_contexts = array();
129
+
130
+
131
+	/**
132
+	 * EE_Message_Resource_Manager constructor.
133
+	 *
134
+	 * @param \EE_Messenger_Collection_Loader    $Messenger_Collection_Loader
135
+	 * @param \EE_Message_Type_Collection_Loader $Message_Type_Collection_Loader
136
+	 * @param \EEM_Message_Template_Group        $Message_Template_Group_Model
137
+	 */
138
+	function __construct(
139
+		EE_Messenger_Collection_Loader $Messenger_Collection_Loader,
140
+		EE_Message_Type_Collection_Loader $Message_Type_Collection_Loader,
141
+		EEM_Message_Template_Group $Message_Template_Group_Model
142
+	) {
143
+		$this->_messenger_collection_loader    = $Messenger_Collection_Loader;
144
+		$this->_message_type_collection_loader = $Message_Type_Collection_Loader;
145
+		$this->_message_template_group_model   = $Message_Template_Group_Model;
146
+	}
147
+
148
+
149
+	/**
150
+	 * @return void
151
+	 */
152
+	protected function _initialize_collections()
153
+	{
154
+		if ($this->_initialized) {
155
+			return;
156
+		}
157
+		$this->_initialized = true;
158
+		$this->_messenger_collection_loader->load_messengers_from_folder();
159
+		$this->_message_type_collection_loader->load_message_types_from_folder();
160
+		$this->get_has_activated_messengers_option(true);
161
+		$this->_set_active_messengers_and_message_types();
162
+	}
163
+
164
+
165
+	/**
166
+	 * @return EE_Messenger_Collection
167
+	 */
168
+	public function messenger_collection()
169
+	{
170
+		$this->_initialize_collections();
171
+		return $this->_messenger_collection_loader->messenger_collection();
172
+	}
173
+
174
+
175
+	/**
176
+	 * @return EE_messenger[]
177
+	 */
178
+	public function active_messengers()
179
+	{
180
+		$this->_initialize_collections();
181
+		return $this->_active_messengers;
182
+	}
183
+
184
+
185
+	/**
186
+	 * @param string $messenger_name
187
+	 * @return \EE_messenger
188
+	 */
189
+	public function get_messenger($messenger_name)
190
+	{
191
+		return $this->messenger_collection()->get_by_info($messenger_name);
192
+	}
193
+
194
+
195
+	/**
196
+	 * This returns the corresponding EE_messenger object for the given string if it is active.
197
+	 *
198
+	 * @param string $messenger
199
+	 * @return EE_messenger | null
200
+	 */
201
+	public function get_active_messenger($messenger)
202
+	{
203
+		$this->_initialize_collections();
204
+		return ! empty($this->_active_messengers[$messenger]) ? $this->_active_messengers[$messenger] : null;
205
+	}
206
+
207
+
208
+	/**
209
+	 * @return \EE_messenger[]
210
+	 */
211
+	public function installed_messengers()
212
+	{
213
+		if (empty($this->_installed_messengers)) {
214
+			$this->_installed_messengers = array();
215
+			$this->messenger_collection()->rewind();
216
+			while ($this->messenger_collection()->valid()) {
217
+				$this->_installed_messengers[$this->messenger_collection()->current()->name] = $this->messenger_collection()->current();
218
+				$this->messenger_collection()->next();
219
+			}
220
+		}
221
+		return $this->_installed_messengers;
222
+	}
223
+
224
+
225
+	/**
226
+	 * @param string $messenger_name
227
+	 * @return \EE_messenger
228
+	 * @throws \EE_Error
229
+	 */
230
+	public function valid_messenger($messenger_name)
231
+	{
232
+		$messenger = $this->get_messenger($messenger_name);
233
+		if ($messenger instanceof EE_messenger) {
234
+			return $messenger;
235
+		}
236
+		throw new EE_Error(
237
+			sprintf(
238
+				__('The "%1$s" messenger is either invalid or not installed', 'event_espresso'),
239
+				$messenger_name
240
+			)
241
+		);
242
+	}
243
+
244
+
245
+	/**
246
+	 * @return EE_Message_Type_Collection
247
+	 */
248
+	public function message_type_collection()
249
+	{
250
+		$this->_initialize_collections();
251
+		return $this->_message_type_collection_loader->message_type_collection();
252
+	}
253
+
254
+
255
+	/**
256
+	 * @return array
257
+	 */
258
+	public function active_message_types()
259
+	{
260
+		$this->_initialize_collections();
261
+		return $this->_active_message_types;
262
+	}
263
+
264
+
265
+	/**
266
+	 * @param string $message_type_name
267
+	 * @return \EE_message_type
268
+	 */
269
+	public function get_message_type($message_type_name)
270
+	{
271
+		return $this->message_type_collection()->get_by_info($message_type_name);
272
+	}
273
+
274
+
275
+	/**
276
+	 * This returns the EE_message_type from the active message types array ( if present );
277
+	 *
278
+	 * @param string $messenger_name
279
+	 * @param string $message_type_name
280
+	 * @return \EE_message_type|null
281
+	 */
282
+	public function get_active_message_type_for_messenger($messenger_name, $message_type_name)
283
+	{
284
+		return $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)
285
+			? $this->get_message_type($message_type_name)
286
+			: null;
287
+	}
288
+
289
+
290
+	/**
291
+	 * Returns whether the given message type is active for the given messenger.
292
+	 *
293
+	 * @param string $messenger_name
294
+	 * @param string $message_type_name
295
+	 * @return bool
296
+	 */
297
+	public function is_message_type_active_for_messenger($messenger_name, $message_type_name)
298
+	{
299
+		$this->_initialize_collections();
300
+		return ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
301
+	}
302
+
303
+
304
+	/**
305
+	 * Returns whether the given messenger is active.
306
+	 *
307
+	 * @param string $messenger_name the name of the messenger to check if active.
308
+	 * @return bool
309
+	 */
310
+	public function is_messenger_active($messenger_name)
311
+	{
312
+		$this->_initialize_collections();
313
+		return ! empty($this->_active_message_types[$messenger_name]);
314
+	}
315
+
316
+
317
+	/**
318
+	 * This returns any settings that might be on a message type for a messenger
319
+	 *
320
+	 * @param string $messenger_name    The slug of the messenger
321
+	 * @param string $message_type_name The slug of the message type getting the settings for.
322
+	 * @return array
323
+	 */
324
+	public function get_message_type_settings_for_messenger($messenger_name, $message_type_name)
325
+	{
326
+		$settings = array();
327
+		if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
328
+			$settings = isset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'])
329
+				? $this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings']
330
+				: array();
331
+		}
332
+		return $settings;
333
+	}
334
+
335
+
336
+	/**
337
+	 * Returns whether the given messenger name has active message types on it.
338
+	 * Infers whether the messenger is active or not as well.
339
+	 *
340
+	 * @param string $messenger_name
341
+	 * @return bool
342
+	 */
343
+	public function messenger_has_active_message_types($messenger_name)
344
+	{
345
+		$this->_initialize_collections();
346
+		return
347
+			! empty($this->_active_message_types[$messenger_name])
348
+			&& ! empty($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types']);
349
+	}
350
+
351
+
352
+	/**
353
+	 * This checks the _active_message_types property for any active message types
354
+	 * that are present for the given messenger and returns them.
355
+	 *
356
+	 * @since 4.9.0
357
+	 * @param string $messenger_name The messenger being checked
358
+	 * @return EE_message_type[]|array    (empty array if no active_message_types)
359
+	 */
360
+	public function get_active_message_types_for_messenger($messenger_name)
361
+	{
362
+		$message_types = array();
363
+		if (! $this->messenger_has_active_message_types($messenger_name)) {
364
+			return $message_types;
365
+		}
366
+		$installed_message_types = $this->installed_message_types();
367
+		foreach ($installed_message_types as $message_type_name => $message_type) {
368
+			if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
369
+				$message_types[$message_type_name] = $message_type;
370
+			}
371
+		}
372
+		return $message_types;
373
+	}
374
+
375
+
376
+	/**
377
+	 * This does NOT return the _active_message_types property but
378
+	 * simply returns an array of active message type names from that property.
379
+	 * (The _active_message_types property is indexed by messenger and active message_types per messenger).
380
+	 *
381
+	 * @return array message_type references (string)
382
+	 */
383
+	public function list_of_active_message_types()
384
+	{
385
+		$active_message_type_names = array();
386
+		$this->_initialize_collections();
387
+		foreach ($this->_active_message_types as $messenger => $messenger_settings) {
388
+			if (! isset($messenger_settings['settings'][$messenger . '-message_types'])) {
389
+				continue;
390
+			}
391
+			foreach ($messenger_settings['settings'][$messenger . '-message_types'] as $message_type_name => $message_type_config) {
392
+				if (! in_array($message_type_name, $active_message_type_names)) {
393
+					$active_message_type_names[] = $message_type_name;
394
+				}
395
+			}
396
+		}
397
+		return $active_message_type_names;
398
+	}
399
+
400
+
401
+	/**
402
+	 * Same as list_of_active_message_types() except this returns actual EE_message_type objects
403
+	 *
404
+	 * @since 4.9.0
405
+	 * @return \EE_message_type[]
406
+	 */
407
+	public function get_active_message_type_objects()
408
+	{
409
+		$active_message_types      = array();
410
+		$installed_message_types   = $this->installed_message_types();
411
+		$active_message_type_names = $this->list_of_active_message_types();
412
+		foreach ($active_message_type_names as $active_message_type_name) {
413
+			if (isset($installed_message_types[$active_message_type_name])) {
414
+				$active_message_types[$active_message_type_name] = $installed_message_types[$active_message_type_name];
415
+			}
416
+		}
417
+		return $active_message_types;
418
+	}
419
+
420
+
421
+	/**
422
+	 * @return \EE_message_type[]
423
+	 */
424
+	public function installed_message_types()
425
+	{
426
+		if (empty($this->_installed_message_types)) {
427
+			$this->message_type_collection()->rewind();
428
+			while ($this->message_type_collection()->valid()) {
429
+				$this->_installed_message_types[$this->message_type_collection()->current()->name] = $this->message_type_collection()->current();
430
+				$this->message_type_collection()->next();
431
+			}
432
+		}
433
+		return $this->_installed_message_types;
434
+	}
435
+
436
+
437
+	/**
438
+	 * @param string $message_type_name
439
+	 * @return \EE_message_type
440
+	 * @throws \EE_Error
441
+	 */
442
+	public function valid_message_type($message_type_name)
443
+	{
444
+		$message_type = $this->get_message_type($message_type_name);
445
+		if ($message_type instanceof EE_message_type) {
446
+			return $message_type;
447
+		}
448
+		throw new EE_Error(
449
+			sprintf(
450
+				__('The "%1$s" message type is either invalid or not installed', 'event_espresso'),
451
+				$message_type_name
452
+			)
453
+		);
454
+	}
455
+
456
+
457
+	/**
458
+	 * valid_message_type_for_messenger
459
+	 *
460
+	 * @param EE_messenger $messenger
461
+	 * @param string       $message_type_name
462
+	 * @return boolean
463
+	 * @throws \EE_Error
464
+	 */
465
+	public function valid_message_type_for_messenger(EE_messenger $messenger, $message_type_name)
466
+	{
467
+		$valid_message_types = $messenger->get_valid_message_types();
468
+		if (! in_array($message_type_name, $valid_message_types)) {
469
+			throw new EE_Error(
470
+				sprintf(
471
+					__(
472
+						'The message type (%1$s) sent to "%2$s" is not valid for the "%3$s" messenger.  Double-check the spelling and verify that message type has been registered as a valid type with the messenger.',
473
+						'event_espresso'
474
+					),
475
+					$message_type_name,
476
+					__METHOD__,
477
+					$messenger->name
478
+				)
479
+			);
480
+		}
481
+		return true;
482
+	}
483
+
484
+
485
+	/**
486
+	 * Used to return active messengers array stored in the wp options table.
487
+	 * If no value is present in the option then an empty array is returned.
488
+	 *
489
+	 * @param   bool $reset     If true then we ignore whether the option is cached on the _active_message_types
490
+	 *                          property and pull directly from the db.  Otherwise whatever is currently on the
491
+	 *                          $_active_message_types property is pulled.
492
+	 * @return array
493
+	 */
494
+	public function get_active_messengers_option($reset = false)
495
+	{
496
+		if ($reset) {
497
+			$this->_active_message_types = get_option('ee_active_messengers', array());
498
+		}
499
+		return $this->_active_message_types;
500
+	}
501
+
502
+
503
+	/**
504
+	 * Used to update the active messengers array stored in the wp options table.
505
+	 *
506
+	 * @param array $active_messenger_settings Incoming data to save.  If empty, then the internal cached property
507
+	 *                                         representing this data is used.
508
+	 * @return bool FALSE if not updated, TRUE if updated.
509
+	 */
510
+	public function update_active_messengers_option($active_messenger_settings = array())
511
+	{
512
+		$active_messenger_settings = empty($active_messenger_settings) ? $this->_active_message_types : $active_messenger_settings;
513
+		//make sure _active_message_types is updated (this is the internal cache for the settings).
514
+		$this->_active_message_types = $active_messenger_settings;
515
+		return update_option('ee_active_messengers', $active_messenger_settings);
516
+	}
517
+
518
+
519
+	/**
520
+	 * Used to return has activated message types for messengers array stored in the wp options table.
521
+	 * If no value is present in the option then an empty array is returned.
522
+	 * The value is cached on the $_has_activated_messengers_and_message_types property for future calls.
523
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
524
+	 *
525
+	 * @param   bool $reset Used to indicate that any cached value should be ignored.
526
+	 * @return array
527
+	 */
528
+	public function get_has_activated_messengers_option($reset = false)
529
+	{
530
+		if ($reset || empty($this->_has_activated_messengers_and_message_types)) {
531
+			$this->_has_activated_messengers_and_message_types = get_option(self::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME, array());
532
+		}
533
+		return $this->_has_activated_messengers_and_message_types;
534
+	}
535
+
536
+
537
+	/**
538
+	 * Used to update the has activated option in the db.
539
+	 *
540
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
541
+	 *
542
+	 * @param array $has_activated_messengers Incoming data to save.  If empty, then the internal cached property
543
+	 *                                        representing this data is used.
544
+	 * @return bool FALSE if not updated, TRUE if updated.
545
+	 */
546
+	public function update_has_activated_messengers_option($has_activated_messengers = array())
547
+	{
548
+		//make sure the option has been retrieved from first so we don't overwrite it accidentally.
549
+		if (empty($has_activated_messengers) && empty($this->_has_activated_messengers_and_message_types)) {
550
+			$this->get_has_activated_messengers_option();
551
+		}
552
+		$has_activated_messengers = empty($has_activated_messengers)
553
+			? $this->_has_activated_messengers_and_message_types
554
+			: $has_activated_messengers;
555
+		return update_option(self::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME, $has_activated_messengers);
556
+	}
557
+
558
+
559
+	/**
560
+	 * wrapper for _set_active_messengers_and_message_types()
561
+	 */
562
+	public function reset_active_messengers_and_message_types()
563
+	{
564
+		$this->_set_active_messengers_and_message_types();
565
+	}
566
+
567
+
568
+	/**
569
+	 * Generate list of active messengers and message types from collection.
570
+	 * This sets up the active messengers from what is present in the database.
571
+	 */
572
+	protected function _set_active_messengers_and_message_types()
573
+	{
574
+		//echo "\n\n " . __LINE__ . ") " . __METHOD__ . "() \n";
575
+		// list of activated messengers as set via the admin
576
+		// note calling `get_active_messengers_options` also initializes the _active_message_types property.
577
+		$this->get_active_messengers_option(true);
578
+		$this->ensure_messengers_are_active(array(), false, true);
579
+		$this->update_active_messengers_option();
580
+		$this->update_has_activated_messengers_option();
581
+	}
582
+
583
+
584
+	/**
585
+	 * Ensures that the specified messenger is currently active.
586
+	 * If not, activates it and its default message types.
587
+	 *
588
+	 * @param string $messenger_name
589
+	 * @param bool   $update_option Whether to update the option in the db or not.
590
+	 * @return boolean true if either already active or successfully activated.
591
+	 */
592
+	public function ensure_messenger_is_active($messenger_name, $update_option = true)
593
+	{
594
+		if (! isset($this->_active_messengers[$messenger_name])) {
595
+			try {
596
+				$this->activate_messenger($messenger_name, array(), $update_option);
597
+			} catch (EE_Error $e) {
598
+				EE_Error::add_error(
599
+					$e->getMessage(),
600
+					__FILE__,
601
+					__FUNCTION__,
602
+					__LINE__
603
+				);
604
+				return false;
605
+			}
606
+		}
607
+		return true;
608
+	}
609
+
610
+
611
+	/**
612
+	 * This ensures the given array of messenger names is active in the system.
613
+	 * Note, this method will not activate any NEW message types for the messenger when it is called. Instead,
614
+	 * it will automatically activate the default message types for the messenger if its not active.
615
+	 *
616
+	 * @param array $messenger_names  Array of messenger names for messengers to be activated.  If an empty array
617
+	 *                                (default) then will attempt to set the active messengers from the
618
+	 *                                activated_messengers option
619
+	 *                                (stored in $_active_message_types property).
620
+	 * @param bool  $update_option    Whether to update the related active messengers option.
621
+	 * @param bool  $verify           Whether to verify the messengers are installed before activating. Note if this is
622
+	 *                                set to true and a messenger is indicated as active, but is NOT installed, then it
623
+	 *                                will automatically be deactivated.
624
+	 */
625
+	public function ensure_messengers_are_active($messenger_names = array(), $update_option = true, $verify = false)
626
+	{
627
+		$messenger_names = empty($messenger_names) ? array_keys($this->_active_message_types) : $messenger_names;
628
+
629
+		$not_installed = array();
630
+		foreach ($messenger_names as $messenger_name) {
631
+			if ($verify && ! $this->messenger_collection()->has_by_name($messenger_name)) {
632
+				$not_installed[] = $messenger_name;
633
+				$this->deactivate_messenger($messenger_name);
634
+				continue;
635
+			}
636
+			$this->ensure_messenger_is_active($messenger_name, $update_option);
637
+		}
638
+
639
+		if (! empty($not_installed_messenger)) {
640
+			EE_Error::add_error(
641
+				sprintf(
642
+					__('The following messengers are either not installed or are invalid:%1$s %2$s', 'event_espresso'),
643
+					'<br />',
644
+					implode(', ', $not_installed_messenger)
645
+				),
646
+				__FILE__, __FUNCTION__, __LINE__
647
+			);
648
+		}
649
+	}
650
+
651
+
652
+	/**
653
+	 * Ensures that the specified message type for the given messenger is currently active, if not activates it.
654
+	 * This ALSO ensures that the given messenger is active as well!
655
+	 *
656
+	 * @param string $message_type_name message type name.
657
+	 * @param        $messenger_name
658
+	 * @param bool   $update_option     Whether to update the option in the db or not.
659
+	 * @return bool  Returns true if already is active or if was activated successfully.
660
+	 * @throws \EE_Error
661
+	 */
662
+	public function ensure_message_type_is_active($message_type_name, $messenger_name, $update_option = true)
663
+	{
664
+		// grab the messenger to work with.
665
+		$messenger = $this->valid_messenger($messenger_name);
666
+		if ($this->valid_message_type_for_messenger($messenger, $message_type_name)) {
667
+			//ensure messenger is active (that's an inherent coupling between active message types and the
668
+			//messenger they are being activated for.
669
+			try {
670
+				if (! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
671
+					//all is good so let's just get it active
672
+					$this->activate_messenger($messenger_name, array($message_type_name), $update_option);
673
+				}
674
+			} catch (EE_Error $e) {
675
+				EE_Error::add_error(
676
+					$e->getMessage(),
677
+					__FILE__,
678
+					__FUNCTION__,
679
+					__LINE__
680
+				);
681
+				return false;
682
+			}
683
+		}
684
+		return true;
685
+	}
686
+
687
+
688
+	/**
689
+	 * This is a wrapper for `ensure_message_type_is_active` that will handle ensuring multiple message types for a
690
+	 * messenger are active in one go.
691
+	 *
692
+	 * @param array  $message_type_names Array of message type names to ensure are active.
693
+	 * @param string $messenger_name     The name of the messenger that the message types are to be activated on.
694
+	 * @param bool   $update_option      Whether to persist the activation to the database or not (default true).
695
+	 */
696
+	public function ensure_message_types_are_active($message_type_names, $messenger_name, $update_option = true)
697
+	{
698
+		$message_type_names = (array)$message_type_names;
699
+		foreach ($message_type_names as $message_type_name) {
700
+			// note, intentionally not updating option here because we're in a loop.
701
+			// We'll follow the instructions of the incoming $update_option argument after the loop.
702
+			$this->ensure_message_type_is_active($message_type_name, $messenger_name, false);
703
+		}
704
+		if ($update_option) {
705
+			$this->update_active_messengers_option();
706
+			$this->update_has_activated_messengers_option();
707
+		}
708
+	}
709
+
710
+
711
+	/**
712
+	 * Activates the specified messenger.
713
+	 *
714
+	 * @param string $messenger_name
715
+	 * @param array  $message_type_names        An array of message type names to activate with this messenger.
716
+	 *                                          If included we do NOT setup the default message types
717
+	 *                                          (assuming they are already setup.)
718
+	 * @param bool   $update_active_messengers_option
719
+	 * @return array of generated templates
720
+	 * @throws \EE_Error
721
+	 */
722
+	public function activate_messenger(
723
+		$messenger_name,
724
+		$message_type_names = array(),
725
+		$update_active_messengers_option = true
726
+	) {
727
+		$templates = array();
728
+		// grab the messenger to work with.
729
+		$messenger = $this->messenger_collection()->get_by_info($messenger_name);
730
+		// it's inactive. Activate it.
731
+		if ($messenger instanceof EE_messenger) {
732
+			$this->_active_messengers[$messenger->name] = $messenger;
733
+			//activate incoming message types set to be activated with messenger.
734
+			$message_type_names = $this->_activate_message_types($messenger, $message_type_names);
735
+			// setup any initial settings for the messenger if necessary.
736
+			$this->add_settings_for_messenger($messenger->name);
737
+			if ($update_active_messengers_option) {
738
+				$this->update_active_messengers_option();
739
+				$this->update_has_activated_messengers_option();
740
+			}
741
+			//generate new templates if necessary and ensure all related templates that are already in the database are
742
+			//marked active.  Note, this will also deactivate a message type for a messenger if the template
743
+			//cannot be successfully created during its attempt (only happens for global template attempts).
744
+			if (! empty($message_type_names)) {
745
+				$templates = EEH_MSG_Template::generate_new_templates($messenger->name, $message_type_names, 0, true);
746
+				EEH_MSG_Template::update_to_active(array($messenger->name), $message_type_names);
747
+			}
748
+		}
749
+		return $templates;
750
+	}
751
+
752
+
753
+	/**
754
+	 * Activates given message types for the given EE_messenger object.
755
+	 * Note: (very important) This method does not persist the activation to the database.
756
+	 * See code implementing this method in this class for examples of how to persist.
757
+	 *
758
+	 * @param \EE_messenger $messenger
759
+	 * @param  array        $message_type_names
760
+	 * @return array
761
+	 */
762
+	protected function _activate_message_types(EE_messenger $messenger, $message_type_names = array())
763
+	{
764
+		//If $message_type_names is empty, AND $this->_active_message_types is empty, then that means
765
+		//things have never been initialized (which should happen on EEH_Activation::generate_message_templates).
766
+		//So ONLY then do we need to actually grab defaults and cycle through them.  Otherwise we
767
+		//only override _active_message_types when an explicit array of $message_type_names has been provided.
768
+		$message_type_names = empty($message_type_names) && ! isset($this->_active_message_types[$messenger->name])
769
+			? $messenger->get_default_message_types()
770
+			: (array)$message_type_names;
771
+
772
+		//now we ALWAYS need to make sure that the messenger is active for the message types we're activating!
773
+		if (! isset($this->_active_message_types[$messenger->name])) {
774
+			$this->_active_message_types[$messenger->name]['settings'] = array();
775
+		}
776
+
777
+		if ($message_type_names) {
778
+			// cycle thru message types
779
+			foreach ($message_type_names as $message_type_name) {
780
+				//only register the message type as active IF it isn't already active
781
+				//and if its actually installed.
782
+				if (
783
+				! $this->is_message_type_active_for_messenger($messenger->name, $message_type_name)
784
+				) {
785
+					$this->add_settings_for_message_type($messenger->name, $message_type_name);
786
+					$this->_set_messenger_has_activated_message_type(
787
+						$messenger,
788
+						$message_type_name
789
+					);
790
+				}
791
+			}
792
+		}
793
+		return $message_type_names;
794
+	}
795
+
796
+
797
+	/**
798
+	 * add_settings_for_message_type
799
+	 * NOTE This does NOT automatically persist any settings to the db.  Client code should call
800
+	 * $this->update_active_messengers_option to persist.
801
+	 *
802
+	 * @param  string $messenger_name    The name of the messenger adding the settings for
803
+	 * @param  string $message_type_name The name of the message type adding the settings for
804
+	 * @param  array  $new_settings      Any new settings being set for the message type and messenger
805
+	 */
806
+	public function add_settings_for_message_type($messenger_name, $message_type_name, $new_settings = array())
807
+	{
808
+		// get installed message type from collection
809
+		$message_type      = $this->message_type_collection()->get_by_info($message_type_name);
810
+		$existing_settings = $this->get_message_type_settings_for_messenger($messenger_name, $message_type_name);
811
+		//we need to setup any initial settings for message types
812
+		if ($message_type instanceof EE_message_type) {
813
+			$default_settings = $message_type->get_admin_settings_fields();
814
+			foreach ($default_settings as $field => $values) {
815
+				if (isset($new_settings[$field])) {
816
+					$existing_settings[$field] = $new_settings[$field];
817
+					continue;
818
+				}
819
+				if (! isset($existing_settings[$field])) {
820
+					$existing_settings[$field] = $values['default'];
821
+				}
822
+			}
823
+		}
824
+		$this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]['settings'] = $existing_settings;
825
+	}
826
+
827
+
828
+	/**
829
+	 * Updates the internal cached _has_activated_messengers_and_message_types property with the given messenger
830
+	 * and message type.
831
+	 *
832
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
833
+	 *
834
+	 * @access protected
835
+	 * @param \EE_messenger $messenger
836
+	 * @param string        $message_type_name
837
+	 */
838
+	protected function _set_messenger_has_activated_message_type(EE_messenger $messenger, $message_type_name)
839
+	{
840
+
841
+		//if _has_activated_messengers_and_message_types is empty then lets ensure its initialized
842
+		if (empty($this->_has_activated_messengers_and_message_types)) {
843
+			$this->get_has_activated_messengers_option();
844
+		}
845
+
846
+		// make sure this messenger has a record in the has_activated array
847
+		if (! isset($this->_has_activated_messengers_and_message_types[$messenger->name])) {
848
+			$this->_has_activated_messengers_and_message_types[$messenger->name] = array();
849
+		}
850
+		// check if message type has already been added
851
+		if (! in_array($message_type_name, $this->_has_activated_messengers_and_message_types[$messenger->name])) {
852
+			$this->_has_activated_messengers_and_message_types[$messenger->name][] = $message_type_name;
853
+		}
854
+	}
855
+
856
+
857
+	/**
858
+	 * add_settings_for_messenger
859
+	 * NOTE This does NOT automatically persist any settings to the db.  Client code should call
860
+	 * $this->update_active_messengers_option to persist.
861
+	 *
862
+	 * @param string $messenger_name The name of the messenger the settings is being added for.
863
+	 * @param array  $new_settings   An array of settings to update the existing settings.
864
+	 */
865
+	public function add_settings_for_messenger($messenger_name, $new_settings = array())
866
+	{
867
+		$messenger = $this->get_messenger($messenger_name);
868
+		if ($messenger instanceof EE_messenger) {
869
+			$msgr_settings = $messenger->get_admin_settings_fields();
870
+			if (! empty($msgr_settings)) {
871
+				foreach ($msgr_settings as $field => $value) {
872
+					//is there a new setting for this?
873
+					if (isset($new_settings[$field])) {
874
+						$this->_active_message_types[$messenger->name]['settings'][$field] = $new_settings[$field];
875
+						continue;
876
+					}
877
+					//only set the default if it isn't already set.
878
+					if (! isset($this->_active_message_types[$messenger->name]['settings'][$field])) {
879
+						$this->_active_message_types[$messenger->name]['settings'][$field] = $value;
880
+					}
881
+				}
882
+			}
883
+		}
884
+	}
885
+
886
+
887
+	/**
888
+	 * deactivate_messenger
889
+	 *
890
+	 * @param  string|EE_messenger $messenger_name name of messenger
891
+	 * @return void
892
+	 */
893
+	public function deactivate_messenger($messenger_name)
894
+	{
895
+		$this->_initialize_collections();
896
+		if ($messenger_name instanceof EE_messenger) {
897
+			$messenger_name = $messenger_name->name;
898
+		}
899
+		unset($this->_active_messengers[$messenger_name]);
900
+		unset($this->_active_message_types[$messenger_name]);
901
+		$this->_message_template_group_model->deactivate_message_template_groups_for($messenger_name);
902
+		$this->update_active_messengers_option();
903
+	}
904
+
905
+
906
+	/**
907
+	 * Deactivates a message type (note this will deactivate across all messenger's it is active on.
908
+	 *
909
+	 * @param  string $message_type_name     name of message type being deactivated
910
+	 * @param bool    $set_has_active_record By default we always record the has_active record when deactivating a message
911
+	 *                                       type.  However, this can be overridden if we don't want this set (usually when
912
+	 *                                       this is called as a part of deregistration of a custom message type)
913
+	 */
914
+	public function deactivate_message_type($message_type_name, $set_has_active_record = true)
915
+	{
916
+		$this->_initialize_collections();
917
+		if ($message_type_name instanceof EE_message_type) {
918
+			$message_type_name = $message_type_name->name;
919
+		}
920
+		foreach ($this->_active_message_types as $messenger_name => $settings) {
921
+			unset(
922
+				$this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]
923
+			);
924
+
925
+			//we always record (even on deactivation) that a message type has been activated because there should at
926
+			//least be a record in the "has_activated" option that it WAS active at one point.
927
+			if ($set_has_active_record) {
928
+				$messenger = $this->get_messenger($messenger_name);
929
+				$this->_set_messenger_has_activated_message_type($messenger, $message_type_name);
930
+			}
931
+		}
932
+		$this->_message_template_group_model->deactivate_message_template_groups_for('', $message_type_name);
933
+		$this->update_active_messengers_option();
934
+		$this->update_has_activated_messengers_option();
935
+	}
936
+
937
+
938
+	/**
939
+	 * Deactivates a message type for a specific messenger as opposed to all messengers.
940
+	 *
941
+	 * @param string $message_type_name Name of message type being deactivated.
942
+	 * @param string $messenger_name    Name of messenger the message type is being deactivated for.
943
+	 */
944
+	public function deactivate_message_type_for_messenger($message_type_name, $messenger_name)
945
+	{
946
+		$this->_initialize_collections();
947
+		if ($this->is_message_type_active_for_messenger($messenger_name, $message_type_name)) {
948
+			unset($this->_active_message_types[$messenger_name]['settings'][$messenger_name . '-message_types'][$message_type_name]);
949
+		}
950
+		$this->_message_template_group_model->deactivate_message_template_groups_for(array($messenger_name),
951
+			array($message_type_name));
952
+		$this->update_active_messengers_option();
953
+	}
954
+
955
+
956
+	/**
957
+	 * Used to verify if a message can be sent for the given messenger and message type
958
+	 * and that it is a generating messenger (used for generating message templates).
959
+	 *
960
+	 * @param EE_messenger    $messenger    messenger used in trigger
961
+	 * @param EE_message_type $message_type message type used in trigger
962
+	 * @return bool true is a generating messenger and can be sent OR FALSE meaning cannot send.
963
+	 */
964
+	public function is_generating_messenger_and_active(EE_messenger $messenger, EE_message_type $message_type)
965
+	{
966
+		//get the $messengers the message type says it can be used with.
967
+		foreach ($message_type->with_messengers() as $generating_messenger => $secondary_messengers) {
968
+			if (
969
+				$messenger->name === $generating_messenger
970
+				&& $this->is_message_type_active_for_messenger($messenger->name, $message_type->name)
971
+			) {
972
+				return true;
973
+			}
974
+		}
975
+		return false;
976
+	}
977
+
978
+
979
+	/**
980
+	 * This returns all the contexts that are registered by all message types.
981
+	 * If $slugs_only is true,
982
+	 * then just an array indexed by unique context slugs with the latest label representation for that slug.
983
+	 * array(
984
+	 *      'context_slug' => 'localized label for context obtained from latest message type in the loop'.
985
+	 * );
986
+	 * If $slugs_only is false, then the format is:
987
+	 * array(
988
+	 *      'message_type_name' => array(
989
+	 *          'context_slug' => array(
990
+	 *              'label' => 'localized label for context',
991
+	 *              'description' => 'localized description for context'
992
+	 *          )
993
+	 *      )
994
+	 * );
995
+	 * Keep in mind that although different message types may share the same context slugs,
996
+	 * it is possible that the context is described differently by the message type.
997
+	 *
998
+	 * @since 4.9.0
999
+	 * @param   bool $slugs_only Whether to return an array of just slugs and labels (true)
1000
+	 *                           or all contexts indexed by message type.
1001
+	 * @return array
1002
+	 */
1003
+	public function get_all_contexts($slugs_only = true)
1004
+	{
1005
+		$key = $slugs_only ? 'slugs' : 'all';
1006
+		// check if contexts has been setup yet.
1007
+		if (empty($this->_contexts[$key])) {
1008
+			// So let's get all active message type objects and loop through to get all unique contexts
1009
+			foreach ($this->get_active_message_type_objects() as $message_type) {
1010
+				if ($message_type instanceof EE_message_type) {
1011
+					$message_type_contexts = $message_type->get_contexts();
1012
+					if ($slugs_only) {
1013
+						foreach ($message_type_contexts as $context => $context_details) {
1014
+							$this->_contexts[$key][$context] = $context_details['label'];
1015
+						}
1016
+					} else {
1017
+						$this->_contexts[$key][$message_type->name] = $message_type_contexts;
1018
+					}
1019
+				}
1020
+			}
1021
+		}
1022
+		return ! empty($this->_contexts[$key]) ? $this->_contexts[$key] : array();
1023
+	}
1024
+
1025
+
1026
+	/**
1027
+	 * This checks the internal record of what message types are considered "active" and verifies that
1028
+	 * there is an installed class definition for that message type.  If the active message type does not have a
1029
+	 * corresponding accessible message type class then it will be deactivated from all messengers it is active on and
1030
+	 * any related message templates will be inactivated as well.
1031
+	 *
1032
+	 * @return bool   true means all active message types are valid, false means at least one message type was
1033
+	 *                deactivated.
1034
+	 */
1035
+	public function validate_active_message_types_are_installed()
1036
+	{
1037
+		$list_of_active_message_type_names = $this->list_of_active_message_types();
1038
+		$installed_message_types           = $this->installed_message_types();
1039
+		$all_message_types_valid           = true;
1040
+		//loop through list of active message types and verify they are installed.
1041
+		foreach ($list_of_active_message_type_names as $message_type_name) {
1042
+			if (! isset($installed_message_types[$message_type_name])) {
1043
+				$this->remove_message_type_has_been_activated_from_all_messengers(
1044
+					$message_type_name,
1045
+					true
1046
+				);
1047
+				$this->deactivate_message_type($message_type_name, false);
1048
+				$all_message_types_valid = false;
1049
+			}
1050
+		}
1051
+		return $all_message_types_valid;
1052
+	}
1053
+
1054
+
1055
+	/**
1056
+	 * This method checks the `ee_has_activated_messenger` option to see if the message type has ever been
1057
+	 * activated for the given messenger.  This can be called by client code on plugin updates etc to determine whether
1058
+	 * to attempt automatically reactivating message types that should be activated by default or not.
1059
+	 *
1060
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1061
+	 *
1062
+	 * @param $message_type_name
1063
+	 * @param $messenger_name
1064
+	 * @return bool
1065
+	 */
1066
+	public function has_message_type_been_activated_for_messenger($message_type_name, $messenger_name)
1067
+	{
1068
+		$has_activated = $this->get_has_activated_messengers_option();
1069
+		return isset($has_activated[$messenger_name])
1070
+			   && in_array($message_type_name, $has_activated[$messenger_name]);
1071
+	}
1072
+
1073
+
1074
+	/**
1075
+	 * This method unsets a message type from the given messenger has activated option.
1076
+	 *
1077
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1078
+	 *
1079
+	 * @param string $message_type_name
1080
+	 * @param string $messenger_name
1081
+	 * @param bool   $consider_current_state  Whether to consider whether the  message type is currently active or not.
1082
+	 *                                        If it is currently active, then remove.  Otherwise leave it alone.
1083
+	 */
1084
+	public function remove_message_type_has_been_activated_for_messenger(
1085
+		$message_type_name,
1086
+		$messenger_name,
1087
+		$consider_current_state = false
1088
+	) {
1089
+		if ($consider_current_state
1090
+			&& ! $this->is_message_type_active_for_messenger($messenger_name, $message_type_name)
1091
+		) {
1092
+			//when consider current state is true, this means we don't want to change anything on the "has_activated"
1093
+			//record if the message type is currently active for this messenger.  This is used when we want to retain
1094
+			//the record for user initiated inactivations of the message type.
1095
+			return;
1096
+		}
1097
+		$has_activated = $this->get_has_activated_messengers_option();
1098
+		$key_for_message_type = isset($has_activated[$messenger_name])
1099
+			? array_search($message_type_name, $has_activated[$messenger_name], true)
1100
+			: false;
1101
+		if ($key_for_message_type !== false) {
1102
+			unset($has_activated[$messenger_name][$key_for_message_type]);
1103
+			$this->update_has_activated_messengers_option($has_activated);
1104
+			//reset the internal cached property
1105
+			$this->get_has_activated_messengers_option(true);
1106
+		}
1107
+	}
1108
+
1109
+
1110
+	/**
1111
+	 * Removes a message type active record from all messengers it is attached to.
1112
+	 *
1113
+	 * @see phpdocs on EE_Message_Resource_Manager::HAS_ACTIVATED_MESSAGE_TYPE_FOR_MESSENGER_OPTION_NAME for more details.
1114
+	 *
1115
+	 * @param      $message_type_name
1116
+	 * @param bool $consider_current_state  Whether to consider whether the  message type is currently active or not.
1117
+	 *                                      If it is currently active, then remove.  Otherwise leave it alone.
1118
+	 */
1119
+	public function remove_message_type_has_been_activated_from_all_messengers(
1120
+		$message_type_name,
1121
+		$consider_current_state = false
1122
+	) {
1123
+		foreach(array_keys($this->get_has_activated_messengers_option()) as $messenger_name) {
1124
+			$this->remove_message_type_has_been_activated_for_messenger(
1125
+				$message_type_name,
1126
+				$messenger_name,
1127
+				$consider_current_state
1128
+			);
1129
+		}
1130
+	}
1131 1131
 }
1132 1132
 // End of file EE_Message_Resource_Manager.lib.php
1133 1133
 // Location: /EE_Message_Resource_Manager.lib.php
1134 1134
\ No newline at end of file
Please login to merge, or discard this patch.
core/services/database/TableManager.php 2 patches
Indentation   +245 added lines, -247 removed lines patch added patch discarded remove patch
@@ -17,254 +17,252 @@
 block discarded – undo
17 17
 class TableManager extends \EE_Base
18 18
 {
19 19
 
20
-    /**
21
-     * @var TableAnalysis $table_analysis
22
-     */
23
-    private $table_analysis;
24
-
25
-
26
-
27
-    /**
28
-     * TableManager constructor.
29
-     *
30
-     * @param TableAnalysis $TableAnalysis
31
-     */
32
-    public function __construct(TableAnalysis $TableAnalysis)
33
-    {
34
-        $this->table_analysis = $TableAnalysis;
35
-    }
36
-
37
-
38
-
39
-    /**
40
-     * Gets the injected table analyzer, or throws an exception
41
-     *
42
-     * @return TableAnalysis
43
-     * @throws \EE_Error
44
-     */
45
-    protected function getTableAnalysis()
46
-    {
47
-        if ($this->table_analysis instanceof TableAnalysis) {
48
-            return $this->table_analysis;
49
-        } else {
50
-            throw new \EE_Error(
51
-                sprintf(
52
-                    __('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
53
-                    get_class($this)
54
-                )
55
-            );
56
-        }
57
-    }
58
-
59
-
60
-
61
-    /**
62
-     * @param string $table_name which can optionally start with $wpdb->prefix or not
63
-     * @param string $column_name
64
-     * @param string $column_info
65
-     * @return bool|false|int
66
-     */
67
-    public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
68
-    {
69
-        if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
70
-            return false;
71
-        }
72
-        global $wpdb;
73
-        $full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
74
-        $columns = $this->getTableColumns($table_name);
75
-        if ( ! in_array($column_name, $columns)) {
76
-            $alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
77
-            return $wpdb->query($alter_query);
78
-        }
79
-        return true;
80
-    }
81
-
82
-
83
-
84
-    /**
85
-     * Gets the name of all columns on the  table. $table_name can
86
-     * optionally start with $wpdb->prefix or not
87
-     *
88
-     * @global \wpdb $wpdb
89
-     * @param string $table_name
90
-     * @return array
91
-     */
92
-    public function getTableColumns($table_name)
93
-    {
94
-        global $wpdb;
95
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
96
-        $field_array = array();
97
-        if ( ! empty($table_name)) {
98
-            $columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
99
-            if ($columns !== false) {
100
-                foreach ($columns as $column) {
101
-                    $field_array[] = $column->Field;
102
-                }
103
-            }
104
-        }
105
-        return $field_array;
106
-    }
107
-
108
-
109
-
110
-    /**
111
-     * Drops the specified table from the database. $table_name can
112
-     * optionally start with $wpdb->prefix or not
113
-     *
114
-     * @global \wpdb $wpdb
115
-     * @param string $table_name
116
-     * @return int
117
-     */
118
-    public function dropTable($table_name)
119
-    {
120
-        global $wpdb;
121
-        if ($this->getTableAnalysis()->tableExists($table_name)) {
122
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
123
-            return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
124
-        }
125
-        return 0;
126
-    }
127
-
128
-
129
-
130
-    /**
131
-     * Drops all the tables mentioned in a single MYSQL query. Double-checks
132
-     * each table name provided has a wpdb prefix attached, and that it exists.
133
-     * Returns the list actually deleted
134
-     *
135
-     * @global WPDB $wpdb
136
-     * @param array $table_names
137
-     * @return array of table names which we deleted
138
-     */
139
-    public function dropTables($table_names)
140
-    {
141
-        $tables_to_delete = array();
142
-        foreach ($table_names as $table_name) {
143
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
144
-            if ($this->getTableAnalysis()->tableExists($table_name)) {
145
-                $tables_to_delete[] = $table_name;
146
-            }
147
-        }
148
-        if( ! empty( $tables_to_delete ) ) {
149
-            global $wpdb;
150
-            //make sure we only have a unique strings in the array.
151
-            $tables_to_delete = array_unique($tables_to_delete);
152
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
153
-        }
154
-        return $tables_to_delete;
155
-    }
156
-
157
-
158
-
159
-    /**
160
-     * Drops the specified index from the specified table. $table_name can
161
-     * optionally start with $wpdb->prefix or not
162
-
163
-     *
20
+	/**
21
+	 * @var TableAnalysis $table_analysis
22
+	 */
23
+	private $table_analysis;
24
+
25
+
26
+
27
+	/**
28
+	 * TableManager constructor.
29
+	 *
30
+	 * @param TableAnalysis $TableAnalysis
31
+	 */
32
+	public function __construct(TableAnalysis $TableAnalysis)
33
+	{
34
+		$this->table_analysis = $TableAnalysis;
35
+	}
36
+
37
+
38
+
39
+	/**
40
+	 * Gets the injected table analyzer, or throws an exception
41
+	 *
42
+	 * @return TableAnalysis
43
+	 * @throws \EE_Error
44
+	 */
45
+	protected function getTableAnalysis()
46
+	{
47
+		if ($this->table_analysis instanceof TableAnalysis) {
48
+			return $this->table_analysis;
49
+		} else {
50
+			throw new \EE_Error(
51
+				sprintf(
52
+					__('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
53
+					get_class($this)
54
+				)
55
+			);
56
+		}
57
+	}
58
+
59
+
60
+
61
+	/**
62
+	 * @param string $table_name which can optionally start with $wpdb->prefix or not
63
+	 * @param string $column_name
64
+	 * @param string $column_info
65
+	 * @return bool|false|int
66
+	 */
67
+	public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
68
+	{
69
+		if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
70
+			return false;
71
+		}
72
+		global $wpdb;
73
+		$full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
74
+		$columns = $this->getTableColumns($table_name);
75
+		if ( ! in_array($column_name, $columns)) {
76
+			$alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
77
+			return $wpdb->query($alter_query);
78
+		}
79
+		return true;
80
+	}
81
+
82
+
83
+
84
+	/**
85
+	 * Gets the name of all columns on the  table. $table_name can
86
+	 * optionally start with $wpdb->prefix or not
87
+	 *
88
+	 * @global \wpdb $wpdb
89
+	 * @param string $table_name
90
+	 * @return array
91
+	 */
92
+	public function getTableColumns($table_name)
93
+	{
94
+		global $wpdb;
95
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
96
+		$field_array = array();
97
+		if ( ! empty($table_name)) {
98
+			$columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
99
+			if ($columns !== false) {
100
+				foreach ($columns as $column) {
101
+					$field_array[] = $column->Field;
102
+				}
103
+			}
104
+		}
105
+		return $field_array;
106
+	}
107
+
108
+
109
+
110
+	/**
111
+	 * Drops the specified table from the database. $table_name can
112
+	 * optionally start with $wpdb->prefix or not
113
+	 *
114
+	 * @global \wpdb $wpdb
115
+	 * @param string $table_name
116
+	 * @return int
117
+	 */
118
+	public function dropTable($table_name)
119
+	{
120
+		global $wpdb;
121
+		if ($this->getTableAnalysis()->tableExists($table_name)) {
122
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
123
+			return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
124
+		}
125
+		return 0;
126
+	}
127
+
128
+
129
+
130
+	/**
131
+	 * Drops all the tables mentioned in a single MYSQL query. Double-checks
132
+	 * each table name provided has a wpdb prefix attached, and that it exists.
133
+	 * Returns the list actually deleted
134
+	 *
135
+	 * @global WPDB $wpdb
136
+	 * @param array $table_names
137
+	 * @return array of table names which we deleted
138
+	 */
139
+	public function dropTables($table_names)
140
+	{
141
+		$tables_to_delete = array();
142
+		foreach ($table_names as $table_name) {
143
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
144
+			if ($this->getTableAnalysis()->tableExists($table_name)) {
145
+				$tables_to_delete[] = $table_name;
146
+			}
147
+		}
148
+		if( ! empty( $tables_to_delete ) ) {
149
+			global $wpdb;
150
+			//make sure we only have a unique strings in the array.
151
+			$tables_to_delete = array_unique($tables_to_delete);
152
+			$wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
153
+		}
154
+		return $tables_to_delete;
155
+	}
156
+
157
+
158
+
159
+	/**
160
+	 * Drops the specified index from the specified table. $table_name can
161
+	 * optionally start with $wpdb->prefix or not
162
+	 *
164 163
 *@global \wpdb       $wpdb
165
-     * @param string $table_name
166
-     * @param string $index_name
167
-     * @return int the number of indexes dropped. False if there was a datbase error
168
-     */
169
-    public function dropIndex($table_name, $index_name)
170
-    {
171
-        if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
172
-            return 0;
173
-        }
174
-        global $wpdb;
175
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
176
-        $index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
177
-        if (
178
-            $this->getTableAnalysis()->tableExists($table_name)
179
-            && $wpdb->get_var($index_exists_query)
180
-               === $table_name //using get_var with the $index_exists_query returns the table's name
181
-        ) {
182
-            return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
183
-        }
184
-        return 0;
185
-    }
186
-
187
-
188
-
189
-    /**
190
-     * Just creates the requested table. $table_name can
191
-     * optionally start with $wpdb->prefix or not
192
-
193
-     *
164
+	 * @param string $table_name
165
+	 * @param string $index_name
166
+	 * @return int the number of indexes dropped. False if there was a datbase error
167
+	 */
168
+	public function dropIndex($table_name, $index_name)
169
+	{
170
+		if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
171
+			return 0;
172
+		}
173
+		global $wpdb;
174
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
175
+		$index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
176
+		if (
177
+			$this->getTableAnalysis()->tableExists($table_name)
178
+			&& $wpdb->get_var($index_exists_query)
179
+			   === $table_name //using get_var with the $index_exists_query returns the table's name
180
+		) {
181
+			return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
182
+		}
183
+		return 0;
184
+	}
185
+
186
+
187
+
188
+	/**
189
+	 * Just creates the requested table. $table_name can
190
+	 * optionally start with $wpdb->prefix or not
191
+	 *
194 192
 *@param string       $table_name
195
-     * @param string $create_sql defining the table's columns and indexes
196
-     * @param string $engine     (no need to specify "ENGINE=", that's implied)
197
-     * @return void
198
-     * @throws \EE_Error
199
-     */
200
-    public function createTable($table_name, $create_sql, $engine = 'MyISAM')
201
-    {
202
-        // does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
203
-        if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
204
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
205
-            /** @var \wpdb $wpdb */
206
-            global $wpdb;
207
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
208
-
209
-            //get $wpdb to echo errors, but buffer them. This way at least WE know an error
210
-            //happened. And then we can choose to tell the end user
211
-            $old_show_errors_policy = $wpdb->show_errors(true);
212
-            $old_error_suppression_policy = $wpdb->suppress_errors(false);
213
-            ob_start();
214
-            dbDelta($SQL);
215
-            $output = ob_get_contents();
216
-            ob_end_clean();
217
-            $wpdb->show_errors($old_show_errors_policy);
218
-            $wpdb->suppress_errors($old_error_suppression_policy);
219
-            if ( ! empty($output)) {
220
-                throw new \EE_Error($output);
221
-            }
222
-        } else {
223
-            throw new \EE_Error(
224
-                sprintf(
225
-                    __('The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
226
-                        'event_espresso'),
227
-                    '<br />',
228
-                    $create_sql
229
-                )
230
-            );
231
-        }
232
-    }
233
-
234
-
235
-
236
-    /**
237
-     * Drops the specified index if it's size differs from $desired_index_size.
238
-     * WordPress' dbdelta method doesn't automatically change index sizes, so this
239
-     * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
240
-     * If the table doesn't exist, or it exists but the index does not, or returns false
241
-     *
242
-     * @param string $table_name
243
-     * @param string $index_name
244
-     * @param string $column_name if none is provided, we assume the column name matches the index (often true in EE)
245
-     * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
246
-     * @return bool whether an index was dropped or not
247
-     * @throws /EE_Error if table analysis object isn't defined
248
-     */
249
-    public function dropIndexIfSizeNot($table_name, $index_name, $column_name = null, $desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE)
250
-    {
251
-        if($column_name === null){
252
-            $column_name = $index_name;
253
-        }
254
-        if(!$this->getTableAnalysis()->tableExists($table_name)){
255
-            return false;
256
-        }
257
-        $index_entries = $this->getTableAnalysis()->showIndexes($table_name,$index_name);
258
-        if(empty($index_entries)){
259
-            return false;
260
-        }
261
-        foreach($index_entries as $index_entry){
262
-            if( $column_name === $index_entry->Column_name
263
-                && (string)$desired_index_size !== $index_entry->Sub_part){
264
-                return $this->dropIndex($table_name,$index_name);
265
-            }
266
-        }
267
-        return false;
268
-    }
193
+	 * @param string $create_sql defining the table's columns and indexes
194
+	 * @param string $engine     (no need to specify "ENGINE=", that's implied)
195
+	 * @return void
196
+	 * @throws \EE_Error
197
+	 */
198
+	public function createTable($table_name, $create_sql, $engine = 'MyISAM')
199
+	{
200
+		// does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
201
+		if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
202
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
203
+			/** @var \wpdb $wpdb */
204
+			global $wpdb;
205
+			$SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
206
+
207
+			//get $wpdb to echo errors, but buffer them. This way at least WE know an error
208
+			//happened. And then we can choose to tell the end user
209
+			$old_show_errors_policy = $wpdb->show_errors(true);
210
+			$old_error_suppression_policy = $wpdb->suppress_errors(false);
211
+			ob_start();
212
+			dbDelta($SQL);
213
+			$output = ob_get_contents();
214
+			ob_end_clean();
215
+			$wpdb->show_errors($old_show_errors_policy);
216
+			$wpdb->suppress_errors($old_error_suppression_policy);
217
+			if ( ! empty($output)) {
218
+				throw new \EE_Error($output);
219
+			}
220
+		} else {
221
+			throw new \EE_Error(
222
+				sprintf(
223
+					__('The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
224
+						'event_espresso'),
225
+					'<br />',
226
+					$create_sql
227
+				)
228
+			);
229
+		}
230
+	}
231
+
232
+
233
+
234
+	/**
235
+	 * Drops the specified index if it's size differs from $desired_index_size.
236
+	 * WordPress' dbdelta method doesn't automatically change index sizes, so this
237
+	 * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
238
+	 * If the table doesn't exist, or it exists but the index does not, or returns false
239
+	 *
240
+	 * @param string $table_name
241
+	 * @param string $index_name
242
+	 * @param string $column_name if none is provided, we assume the column name matches the index (often true in EE)
243
+	 * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
244
+	 * @return bool whether an index was dropped or not
245
+	 * @throws /EE_Error if table analysis object isn't defined
246
+	 */
247
+	public function dropIndexIfSizeNot($table_name, $index_name, $column_name = null, $desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE)
248
+	{
249
+		if($column_name === null){
250
+			$column_name = $index_name;
251
+		}
252
+		if(!$this->getTableAnalysis()->tableExists($table_name)){
253
+			return false;
254
+		}
255
+		$index_entries = $this->getTableAnalysis()->showIndexes($table_name,$index_name);
256
+		if(empty($index_entries)){
257
+			return false;
258
+		}
259
+		foreach($index_entries as $index_entry){
260
+			if( $column_name === $index_entry->Column_name
261
+				&& (string)$desired_index_size !== $index_entry->Sub_part){
262
+				return $this->dropIndex($table_name,$index_name);
263
+			}
264
+		}
265
+		return false;
266
+	}
269 267
 
270 268
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -145,11 +145,11 @@  discard block
 block discarded – undo
145 145
                 $tables_to_delete[] = $table_name;
146 146
             }
147 147
         }
148
-        if( ! empty( $tables_to_delete ) ) {
148
+        if ( ! empty($tables_to_delete)) {
149 149
             global $wpdb;
150 150
             //make sure we only have a unique strings in the array.
151 151
             $tables_to_delete = array_unique($tables_to_delete);
152
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
152
+            $wpdb->query('DROP TABLE '.implode(', ', $tables_to_delete));
153 153
         }
154 154
         return $tables_to_delete;
155 155
     }
@@ -204,7 +204,7 @@  discard block
 block discarded – undo
204 204
             $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
205 205
             /** @var \wpdb $wpdb */
206 206
             global $wpdb;
207
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
207
+            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} ".$wpdb->get_charset_collate();
208 208
 
209 209
             //get $wpdb to echo errors, but buffer them. This way at least WE know an error
210 210
             //happened. And then we can choose to tell the end user
@@ -248,20 +248,20 @@  discard block
 block discarded – undo
248 248
      */
249 249
     public function dropIndexIfSizeNot($table_name, $index_name, $column_name = null, $desired_index_size = TableAnalysis::INDEX_COLUMN_SIZE)
250 250
     {
251
-        if($column_name === null){
251
+        if ($column_name === null) {
252 252
             $column_name = $index_name;
253 253
         }
254
-        if(!$this->getTableAnalysis()->tableExists($table_name)){
254
+        if ( ! $this->getTableAnalysis()->tableExists($table_name)) {
255 255
             return false;
256 256
         }
257
-        $index_entries = $this->getTableAnalysis()->showIndexes($table_name,$index_name);
258
-        if(empty($index_entries)){
257
+        $index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
258
+        if (empty($index_entries)) {
259 259
             return false;
260 260
         }
261
-        foreach($index_entries as $index_entry){
262
-            if( $column_name === $index_entry->Column_name
263
-                && (string)$desired_index_size !== $index_entry->Sub_part){
264
-                return $this->dropIndex($table_name,$index_name);
261
+        foreach ($index_entries as $index_entry) {
262
+            if ($column_name === $index_entry->Column_name
263
+                && (string) $desired_index_size !== $index_entry->Sub_part) {
264
+                return $this->dropIndex($table_name, $index_name);
265 265
             }
266 266
         }
267 267
         return false;
Please login to merge, or discard this patch.