Completed
Branch models-cleanup/model-relations (db5ca7)
by
unknown
13:03 queued 08:35
created
core/services/container/RegistryContainer.php 2 patches
Indentation   +126 added lines, -126 removed lines patch added patch discarded remove patch
@@ -17,130 +17,130 @@
 block discarded – undo
17 17
 class RegistryContainer implements ArrayAccess, CountableTraversableAggregate
18 18
 {
19 19
 
20
-    /**
21
-     * @var array $container
22
-     */
23
-    private $container;
24
-
25
-    /**
26
-     * RegistryContainer constructor.
27
-     * Container data can be seeded by passing parameters to constructor.
28
-     * Each parameter will become its own element in the container
29
-     */
30
-    public function __construct()
31
-    {
32
-        $this->container = func_get_args();
33
-        if (func_num_args() === 0) {
34
-            $this->container = array();
35
-        }
36
-    }
37
-
38
-
39
-    /**
40
-     * @param mixed $offset
41
-     * @param mixed $value
42
-     */
43
-    public function offsetSet($offset, $value)
44
-    {
45
-        $this->container[ $offset ] = $value;
46
-    }
47
-
48
-
49
-    /**
50
-     * @param mixed $offset
51
-     * @return bool
52
-     */
53
-    public function offsetExists($offset)
54
-    {
55
-        return isset($this->container[ $offset ]);
56
-    }
57
-
58
-
59
-    /**
60
-     * @param mixed $offset
61
-     */
62
-    public function offsetUnset($offset)
63
-    {
64
-        unset($this->container[ $offset ]);
65
-    }
66
-
67
-
68
-    /**
69
-     * @param mixed $offset
70
-     * @return mixed|null
71
-     */
72
-    public function offsetGet($offset)
73
-    {
74
-        return isset($this->container[ $offset ]) ? $this->container[ $offset ] : null;
75
-    }
76
-
77
-
78
-    /**
79
-     * @return int
80
-     */
81
-    public function count()
82
-    {
83
-        return count($this->container);
84
-    }
85
-
86
-
87
-    /**
88
-     * @return ArrayIterator
89
-     */
90
-    public function getIterator()
91
-    {
92
-        return new ArrayIterator($this->container);
93
-    }
94
-
95
-
96
-    /**
97
-     * @param $offset
98
-     * @param $value
99
-     */
100
-    public function __set($offset, $value)
101
-    {
102
-        $this->container[ $offset ] = $value;
103
-    }
104
-
105
-
106
-    /**
107
-     * @param $offset
108
-     * @return mixed
109
-     * @throws OutOfBoundsException
110
-     */
111
-    public function __get($offset)
112
-    {
113
-        if (array_key_exists($offset, $this->container)) {
114
-            return $this->container[ $offset ];
115
-        }
116
-        $trace = debug_backtrace();
117
-        throw new OutOfBoundsException(
118
-            sprintf(
119
-                esc_html__('Invalid offset: %1$s %2$sCalled from %3$s on line %4$d', 'event_espresso'),
120
-                $offset,
121
-                '<br  />',
122
-                $trace[0]['file'],
123
-                $trace[0]['line']
124
-            )
125
-        );
126
-    }
127
-
128
-
129
-    /**
130
-     * @param $offset
131
-     * @return bool
132
-     */
133
-    public function __isset($offset)
134
-    {
135
-        return isset($this->container[ $offset ]);
136
-    }
137
-
138
-
139
-    /**
140
-     * @param $offset
141
-     */
142
-    public function __unset($offset)
143
-    {
144
-        unset($this->container[ $offset ]);
145
-    }
20
+	/**
21
+	 * @var array $container
22
+	 */
23
+	private $container;
24
+
25
+	/**
26
+	 * RegistryContainer constructor.
27
+	 * Container data can be seeded by passing parameters to constructor.
28
+	 * Each parameter will become its own element in the container
29
+	 */
30
+	public function __construct()
31
+	{
32
+		$this->container = func_get_args();
33
+		if (func_num_args() === 0) {
34
+			$this->container = array();
35
+		}
36
+	}
37
+
38
+
39
+	/**
40
+	 * @param mixed $offset
41
+	 * @param mixed $value
42
+	 */
43
+	public function offsetSet($offset, $value)
44
+	{
45
+		$this->container[ $offset ] = $value;
46
+	}
47
+
48
+
49
+	/**
50
+	 * @param mixed $offset
51
+	 * @return bool
52
+	 */
53
+	public function offsetExists($offset)
54
+	{
55
+		return isset($this->container[ $offset ]);
56
+	}
57
+
58
+
59
+	/**
60
+	 * @param mixed $offset
61
+	 */
62
+	public function offsetUnset($offset)
63
+	{
64
+		unset($this->container[ $offset ]);
65
+	}
66
+
67
+
68
+	/**
69
+	 * @param mixed $offset
70
+	 * @return mixed|null
71
+	 */
72
+	public function offsetGet($offset)
73
+	{
74
+		return isset($this->container[ $offset ]) ? $this->container[ $offset ] : null;
75
+	}
76
+
77
+
78
+	/**
79
+	 * @return int
80
+	 */
81
+	public function count()
82
+	{
83
+		return count($this->container);
84
+	}
85
+
86
+
87
+	/**
88
+	 * @return ArrayIterator
89
+	 */
90
+	public function getIterator()
91
+	{
92
+		return new ArrayIterator($this->container);
93
+	}
94
+
95
+
96
+	/**
97
+	 * @param $offset
98
+	 * @param $value
99
+	 */
100
+	public function __set($offset, $value)
101
+	{
102
+		$this->container[ $offset ] = $value;
103
+	}
104
+
105
+
106
+	/**
107
+	 * @param $offset
108
+	 * @return mixed
109
+	 * @throws OutOfBoundsException
110
+	 */
111
+	public function __get($offset)
112
+	{
113
+		if (array_key_exists($offset, $this->container)) {
114
+			return $this->container[ $offset ];
115
+		}
116
+		$trace = debug_backtrace();
117
+		throw new OutOfBoundsException(
118
+			sprintf(
119
+				esc_html__('Invalid offset: %1$s %2$sCalled from %3$s on line %4$d', 'event_espresso'),
120
+				$offset,
121
+				'<br  />',
122
+				$trace[0]['file'],
123
+				$trace[0]['line']
124
+			)
125
+		);
126
+	}
127
+
128
+
129
+	/**
130
+	 * @param $offset
131
+	 * @return bool
132
+	 */
133
+	public function __isset($offset)
134
+	{
135
+		return isset($this->container[ $offset ]);
136
+	}
137
+
138
+
139
+	/**
140
+	 * @param $offset
141
+	 */
142
+	public function __unset($offset)
143
+	{
144
+		unset($this->container[ $offset ]);
145
+	}
146 146
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
      */
43 43
     public function offsetSet($offset, $value)
44 44
     {
45
-        $this->container[ $offset ] = $value;
45
+        $this->container[$offset] = $value;
46 46
     }
47 47
 
48 48
 
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
      */
53 53
     public function offsetExists($offset)
54 54
     {
55
-        return isset($this->container[ $offset ]);
55
+        return isset($this->container[$offset]);
56 56
     }
57 57
 
58 58
 
@@ -61,7 +61,7 @@  discard block
 block discarded – undo
61 61
      */
62 62
     public function offsetUnset($offset)
63 63
     {
64
-        unset($this->container[ $offset ]);
64
+        unset($this->container[$offset]);
65 65
     }
66 66
 
67 67
 
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
      */
72 72
     public function offsetGet($offset)
73 73
     {
74
-        return isset($this->container[ $offset ]) ? $this->container[ $offset ] : null;
74
+        return isset($this->container[$offset]) ? $this->container[$offset] : null;
75 75
     }
76 76
 
77 77
 
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
      */
100 100
     public function __set($offset, $value)
101 101
     {
102
-        $this->container[ $offset ] = $value;
102
+        $this->container[$offset] = $value;
103 103
     }
104 104
 
105 105
 
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
     public function __get($offset)
112 112
     {
113 113
         if (array_key_exists($offset, $this->container)) {
114
-            return $this->container[ $offset ];
114
+            return $this->container[$offset];
115 115
         }
116 116
         $trace = debug_backtrace();
117 117
         throw new OutOfBoundsException(
@@ -132,7 +132,7 @@  discard block
 block discarded – undo
132 132
      */
133 133
     public function __isset($offset)
134 134
     {
135
-        return isset($this->container[ $offset ]);
135
+        return isset($this->container[$offset]);
136 136
     }
137 137
 
138 138
 
@@ -141,6 +141,6 @@  discard block
 block discarded – undo
141 141
      */
142 142
     public function __unset($offset)
143 143
     {
144
-        unset($this->container[ $offset ]);
144
+        unset($this->container[$offset]);
145 145
     }
146 146
 }
Please login to merge, or discard this patch.
core/services/container/Recipe.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
      */
190 190
     public function setIdentifier($identifier)
191 191
     {
192
-        if (! is_string($identifier) || empty($identifier)) {
192
+        if ( ! is_string($identifier) || empty($identifier)) {
193 193
             throw new InvalidIdentifierException(
194 194
                 is_object($identifier) ? get_class($identifier) : gettype($identifier),
195 195
                 __('class identifier (typically a \Fully\Qualified\ClassName)', 'event_espresso')
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
     public function setFqcn($fqcn)
217 217
     {
218 218
         $fqcn = ! empty($fqcn) ? $fqcn : $this->identifier;
219
-        if (! is_string($fqcn)) {
219
+        if ( ! is_string($fqcn)) {
220 220
             throw new InvalidDataTypeException(
221 221
                 '$fqcn',
222 222
                 is_object($fqcn) ? get_class($fqcn) : gettype($fqcn),
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
         if (empty($ingredients)) {
247 247
             return;
248 248
         }
249
-        if (! is_array($ingredients)) {
249
+        if ( ! is_array($ingredients)) {
250 250
             throw new InvalidDataTypeException(
251 251
                 '$ingredients',
252 252
                 is_object($ingredients) ? get_class($ingredients) : gettype($ingredients),
@@ -278,7 +278,7 @@  discard block
 block discarded – undo
278 278
         if (empty($filters)) {
279 279
             return;
280 280
         }
281
-        if (! is_array($filters)) {
281
+        if ( ! is_array($filters)) {
282 282
             throw new InvalidDataTypeException(
283 283
                 '$filters',
284 284
                 is_object($filters) ? get_class($filters) : gettype($filters),
@@ -305,7 +305,7 @@  discard block
 block discarded – undo
305 305
         if (empty($paths)) {
306 306
             return;
307 307
         }
308
-        if (! (is_string($paths) || is_array($paths))) {
308
+        if ( ! (is_string($paths) || is_array($paths))) {
309 309
             throw new InvalidDataTypeException(
310 310
                 '$path',
311 311
                 is_object($paths) ? get_class($paths) : gettype($paths),
Please login to merge, or discard this patch.
Indentation   +307 added lines, -307 removed lines patch added patch discarded remove patch
@@ -19,311 +19,311 @@
 block discarded – undo
19 19
 class Recipe implements RecipeInterface
20 20
 {
21 21
 
22
-    /**
23
-     * A default Recipe to use if none is specified for a class
24
-     */
25
-    const DEFAULT_ID = '*';
26
-
27
-    /**
28
-     * Identifier for the entity class to be constructed.
29
-     * Typically a Fully Qualified Class Name
30
-     *
31
-     * @var string $identifier
32
-     */
33
-    private $identifier;
34
-
35
-    /**
36
-     * Fully Qualified Class Name
37
-     *
38
-     * @var string $fqcn
39
-     */
40
-    private $fqcn;
41
-
42
-    /**
43
-     * a dependency class map array
44
-     * If a Recipe is for a single class (or group of classes that shares the EXACT SAME constructor arguments),
45
-     * and that class type hints for an interface, then this property allows you to configure what dependencies
46
-     * get used when instantiating the class.
47
-     * For example:
48
-     *  There's a class called Coffee, and one of its constructor arguments is BeanInterface
49
-     *  There are two implementations of BeanInterface: HonduranBean, and KenyanBean
50
-     *  We want one Coffee object to use HonduranBean for its BeanInterface,
51
-     *  and the 2nd Coffee object to use KenyanBean for its BeanInterface.
52
-     *  To do this, we need to create two Recipes:
53
-     *      one with an identifier of 'HonduranCoffee' using the following ingredients :
54
-     *          array('BeanInterface' => 'HonduranBean')
55
-     *      and the other with an identifier of 'KenyanCoffee' using the following ingredients :
56
-     *          array('BeanInterface' => 'KenyanBean')
57
-     *  Then, whenever the CoffeeShop brews an instance of HonduranCoffee,
58
-     *  an instance of HonduranBean will get injected for the BeanInterface dependency,
59
-     *  and whenever the CoffeeShop brews an instance of KenyanCoffee,
60
-     *  an instance of KenyanBean will get injected for the BeanInterface dependency
61
-     *
62
-     * @var array $ingredients
63
-     */
64
-    private $ingredients = array();
65
-
66
-    /**
67
-     * one of the class constants from CoffeeShop:
68
-     *  CoffeeMaker::BREW_NEW - creates a new instance
69
-     *  CoffeeMaker::BREW_SHARED - creates a shared instance
70
-     *  CoffeeMaker::BREW_LOAD_ONLY - loads but does not instantiate
71
-     *
72
-     * @var string $type
73
-     */
74
-    private $type;
75
-
76
-    /**
77
-     * class name aliases - typically a Fully Qualified Interface that the class implements
78
-     * identifiers passed to the CoffeeShop will be run through the filters to find the correct class name
79
-     *
80
-     * @var array $filters
81
-     */
82
-    private $filters = array();
83
-
84
-    /**
85
-     * array of full server filepaths to files that may contain the class
86
-     *
87
-     * @var array $paths
88
-     */
89
-    private $paths = array();
90
-
91
-
92
-    /**
93
-     * Recipe constructor.
94
-     *
95
-     * @param string $identifier    class identifier, can be an alias, or FQCN, or whatever
96
-     * @param string $fqcn          \Fully\Qualified\ClassName, optional if $identifier is FQCN
97
-     * @param array  $ingredients   array of dependencies that can not be resolved automatically,
98
-     *                              used for resolving concrete classes for type hinted interfaces
99
-     *                              for the dependencies of THIS class
100
-     * @param string $type          recipe type: one of the class constants on
101
-     *                              \EventEspresso\core\services\container\CoffeeMaker
102
-     * @param array  $filters       array of class aliases, or class interfaces
103
-     *                              this works somewhat opposite to the $ingredients array above,
104
-     *                              in that this array specifies interfaces or aliases
105
-     *                              that this Recipe can be used for when resolving OTHER class's dependencies
106
-     * @param array  $paths         if class can not be loaded via PSR-4 autoloading,
107
-     *                              then supply a filepath, or array of filepaths, so that it can be included
108
-     * @throws InvalidIdentifierException
109
-     * @throws RuntimeException
110
-     * @throws InvalidInterfaceException
111
-     * @throws InvalidClassException
112
-     * @throws InvalidDataTypeException
113
-     */
114
-    public function __construct(
115
-        $identifier,
116
-        $fqcn = '',
117
-        array $filters = array(),
118
-        array $ingredients = array(),
119
-        $type = CoffeeMaker::BREW_NEW,
120
-        array $paths = array()
121
-    ) {
122
-        $this->setIdentifier($identifier);
123
-        $this->setFilters($filters);
124
-        $this->setIngredients($ingredients);
125
-        $this->setType($type);
126
-        $this->setPaths($paths);
127
-        $this->setFqcn($fqcn);
128
-    }
129
-
130
-
131
-    /**
132
-     * @return string
133
-     */
134
-    public function identifier()
135
-    {
136
-        return $this->identifier;
137
-    }
138
-
139
-
140
-    /**
141
-     * @return string
142
-     */
143
-    public function fqcn()
144
-    {
145
-        return $this->fqcn;
146
-    }
147
-
148
-
149
-    /**
150
-     * @return array
151
-     */
152
-    public function filters()
153
-    {
154
-        return $this->filters;
155
-    }
156
-
157
-
158
-    /**
159
-     * @return array
160
-     */
161
-    public function ingredients()
162
-    {
163
-        return $this->ingredients;
164
-    }
165
-
166
-
167
-    /**
168
-     * @return string
169
-     */
170
-    public function type()
171
-    {
172
-        return $this->type;
173
-    }
174
-
175
-
176
-    /**
177
-     * @return array
178
-     */
179
-    public function paths()
180
-    {
181
-        return $this->paths;
182
-    }
183
-
184
-
185
-    /**
186
-     * @param  string $identifier Identifier for the entity class that the Recipe applies to
187
-     *                            Typically a Fully Qualified Class Name
188
-     * @throws InvalidIdentifierException
189
-     */
190
-    public function setIdentifier($identifier)
191
-    {
192
-        if (! is_string($identifier) || empty($identifier)) {
193
-            throw new InvalidIdentifierException(
194
-                is_object($identifier) ? get_class($identifier) : gettype($identifier),
195
-                __('class identifier (typically a \Fully\Qualified\ClassName)', 'event_espresso')
196
-            );
197
-        }
198
-        $this->identifier = $identifier;
199
-    }
200
-
201
-
202
-    /**
203
-     * Ensures incoming string is a valid Fully Qualified Class Name,
204
-     * except if this is the default wildcard Recipe ( * ),
205
-     * or it's NOT an actual FQCN because the Recipe is using filepaths
206
-     * for classes that are not PSR-4 compatible
207
-     * PLZ NOTE:
208
-     *  Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not,
209
-     *  therefore you should always call Recipe::setPaths() before Recipe::setFqcn()
210
-     *
211
-     * @param string $fqcn
212
-     * @throws InvalidDataTypeException
213
-     * @throws InvalidClassException
214
-     * @throws InvalidInterfaceException
215
-     */
216
-    public function setFqcn($fqcn)
217
-    {
218
-        $fqcn = ! empty($fqcn) ? $fqcn : $this->identifier;
219
-        if (! is_string($fqcn)) {
220
-            throw new InvalidDataTypeException(
221
-                '$fqcn',
222
-                is_object($fqcn) ? get_class($fqcn) : gettype($fqcn),
223
-                __('string (Fully\Qualified\ClassName)', 'event_espresso')
224
-            );
225
-        }
226
-        $fqcn = ltrim($fqcn, '\\');
227
-        if (
228
-            $fqcn !== Recipe::DEFAULT_ID
229
-            && ! empty($fqcn)
230
-            && empty($this->paths)
231
-            && ! (class_exists($fqcn) || interface_exists($fqcn))
232
-        ) {
233
-            throw new InvalidClassException($fqcn);
234
-        }
235
-        $this->fqcn = $fqcn;
236
-    }
237
-
238
-
239
-    /**
240
-     * @param array $ingredients    an array of dependencies where keys are the aliases and values are the FQCNs
241
-     *                              example:
242
-     *                              array( 'ClassInterface' => 'Fully\Qualified\ClassName' )
243
-     * @throws InvalidDataTypeException
244
-     */
245
-    public function setIngredients(array $ingredients)
246
-    {
247
-        if (empty($ingredients)) {
248
-            return;
249
-        }
250
-        if (! is_array($ingredients)) {
251
-            throw new InvalidDataTypeException(
252
-                '$ingredients',
253
-                is_object($ingredients) ? get_class($ingredients) : gettype($ingredients),
254
-                __('array of class dependencies', 'event_espresso')
255
-            );
256
-        }
257
-        $this->ingredients = array_merge($this->ingredients, $ingredients);
258
-    }
259
-
260
-
261
-    /**
262
-     * @param string $type one of the class constants returned from CoffeeMaker::getTypes()
263
-     * @throws InvalidIdentifierException
264
-     */
265
-    public function setType($type = CoffeeMaker::BREW_NEW)
266
-    {
267
-        $this->type = CoffeeMaker::validateType($type);
268
-    }
269
-
270
-
271
-    /**
272
-     * @param array $filters    an array of filters where keys are the aliases and values are the FQCNs
273
-     *                          example:
274
-     *                          array( 'ClassInterface' => 'Fully\Qualified\ClassName' )
275
-     * @throws InvalidDataTypeException
276
-     */
277
-    public function setFilters(array $filters)
278
-    {
279
-        if (empty($filters)) {
280
-            return;
281
-        }
282
-        if (! is_array($filters)) {
283
-            throw new InvalidDataTypeException(
284
-                '$filters',
285
-                is_object($filters) ? get_class($filters) : gettype($filters),
286
-                __('array of class aliases', 'event_espresso')
287
-            );
288
-        }
289
-        $this->filters = array_merge($this->filters, $filters);
290
-    }
291
-
292
-
293
-    /**
294
-     * Ensures incoming paths is a valid filepath, or array of valid filepaths,
295
-     * and merges them in with any existing filepaths
296
-     * PLZ NOTE:
297
-     *  Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not,
298
-     *  therefore you should always call Recipe::setPaths() before Recipe::setFqcn()
299
-     *
300
-     * @param string|array $paths
301
-     * @throws RuntimeException
302
-     * @throws InvalidDataTypeException
303
-     */
304
-    public function setPaths($paths = array())
305
-    {
306
-        if (empty($paths)) {
307
-            return;
308
-        }
309
-        if (! (is_string($paths) || is_array($paths))) {
310
-            throw new InvalidDataTypeException(
311
-                '$path',
312
-                is_object($paths) ? get_class($paths) : gettype($paths),
313
-                __('string or array of strings (full server filepath(s))', 'event_espresso')
314
-            );
315
-        }
316
-        $paths = (array) $paths;
317
-        foreach ($paths as $path) {
318
-            if (strpos($path, '*') === false && ! is_readable($path)) {
319
-                throw new RuntimeException(
320
-                    sprintf(
321
-                        __('The following filepath is not readable: "%1$s"', 'event_espresso'),
322
-                        $path
323
-                    )
324
-                );
325
-            }
326
-        }
327
-        $this->paths = array_merge($this->paths, $paths);
328
-    }
22
+	/**
23
+	 * A default Recipe to use if none is specified for a class
24
+	 */
25
+	const DEFAULT_ID = '*';
26
+
27
+	/**
28
+	 * Identifier for the entity class to be constructed.
29
+	 * Typically a Fully Qualified Class Name
30
+	 *
31
+	 * @var string $identifier
32
+	 */
33
+	private $identifier;
34
+
35
+	/**
36
+	 * Fully Qualified Class Name
37
+	 *
38
+	 * @var string $fqcn
39
+	 */
40
+	private $fqcn;
41
+
42
+	/**
43
+	 * a dependency class map array
44
+	 * If a Recipe is for a single class (or group of classes that shares the EXACT SAME constructor arguments),
45
+	 * and that class type hints for an interface, then this property allows you to configure what dependencies
46
+	 * get used when instantiating the class.
47
+	 * For example:
48
+	 *  There's a class called Coffee, and one of its constructor arguments is BeanInterface
49
+	 *  There are two implementations of BeanInterface: HonduranBean, and KenyanBean
50
+	 *  We want one Coffee object to use HonduranBean for its BeanInterface,
51
+	 *  and the 2nd Coffee object to use KenyanBean for its BeanInterface.
52
+	 *  To do this, we need to create two Recipes:
53
+	 *      one with an identifier of 'HonduranCoffee' using the following ingredients :
54
+	 *          array('BeanInterface' => 'HonduranBean')
55
+	 *      and the other with an identifier of 'KenyanCoffee' using the following ingredients :
56
+	 *          array('BeanInterface' => 'KenyanBean')
57
+	 *  Then, whenever the CoffeeShop brews an instance of HonduranCoffee,
58
+	 *  an instance of HonduranBean will get injected for the BeanInterface dependency,
59
+	 *  and whenever the CoffeeShop brews an instance of KenyanCoffee,
60
+	 *  an instance of KenyanBean will get injected for the BeanInterface dependency
61
+	 *
62
+	 * @var array $ingredients
63
+	 */
64
+	private $ingredients = array();
65
+
66
+	/**
67
+	 * one of the class constants from CoffeeShop:
68
+	 *  CoffeeMaker::BREW_NEW - creates a new instance
69
+	 *  CoffeeMaker::BREW_SHARED - creates a shared instance
70
+	 *  CoffeeMaker::BREW_LOAD_ONLY - loads but does not instantiate
71
+	 *
72
+	 * @var string $type
73
+	 */
74
+	private $type;
75
+
76
+	/**
77
+	 * class name aliases - typically a Fully Qualified Interface that the class implements
78
+	 * identifiers passed to the CoffeeShop will be run through the filters to find the correct class name
79
+	 *
80
+	 * @var array $filters
81
+	 */
82
+	private $filters = array();
83
+
84
+	/**
85
+	 * array of full server filepaths to files that may contain the class
86
+	 *
87
+	 * @var array $paths
88
+	 */
89
+	private $paths = array();
90
+
91
+
92
+	/**
93
+	 * Recipe constructor.
94
+	 *
95
+	 * @param string $identifier    class identifier, can be an alias, or FQCN, or whatever
96
+	 * @param string $fqcn          \Fully\Qualified\ClassName, optional if $identifier is FQCN
97
+	 * @param array  $ingredients   array of dependencies that can not be resolved automatically,
98
+	 *                              used for resolving concrete classes for type hinted interfaces
99
+	 *                              for the dependencies of THIS class
100
+	 * @param string $type          recipe type: one of the class constants on
101
+	 *                              \EventEspresso\core\services\container\CoffeeMaker
102
+	 * @param array  $filters       array of class aliases, or class interfaces
103
+	 *                              this works somewhat opposite to the $ingredients array above,
104
+	 *                              in that this array specifies interfaces or aliases
105
+	 *                              that this Recipe can be used for when resolving OTHER class's dependencies
106
+	 * @param array  $paths         if class can not be loaded via PSR-4 autoloading,
107
+	 *                              then supply a filepath, or array of filepaths, so that it can be included
108
+	 * @throws InvalidIdentifierException
109
+	 * @throws RuntimeException
110
+	 * @throws InvalidInterfaceException
111
+	 * @throws InvalidClassException
112
+	 * @throws InvalidDataTypeException
113
+	 */
114
+	public function __construct(
115
+		$identifier,
116
+		$fqcn = '',
117
+		array $filters = array(),
118
+		array $ingredients = array(),
119
+		$type = CoffeeMaker::BREW_NEW,
120
+		array $paths = array()
121
+	) {
122
+		$this->setIdentifier($identifier);
123
+		$this->setFilters($filters);
124
+		$this->setIngredients($ingredients);
125
+		$this->setType($type);
126
+		$this->setPaths($paths);
127
+		$this->setFqcn($fqcn);
128
+	}
129
+
130
+
131
+	/**
132
+	 * @return string
133
+	 */
134
+	public function identifier()
135
+	{
136
+		return $this->identifier;
137
+	}
138
+
139
+
140
+	/**
141
+	 * @return string
142
+	 */
143
+	public function fqcn()
144
+	{
145
+		return $this->fqcn;
146
+	}
147
+
148
+
149
+	/**
150
+	 * @return array
151
+	 */
152
+	public function filters()
153
+	{
154
+		return $this->filters;
155
+	}
156
+
157
+
158
+	/**
159
+	 * @return array
160
+	 */
161
+	public function ingredients()
162
+	{
163
+		return $this->ingredients;
164
+	}
165
+
166
+
167
+	/**
168
+	 * @return string
169
+	 */
170
+	public function type()
171
+	{
172
+		return $this->type;
173
+	}
174
+
175
+
176
+	/**
177
+	 * @return array
178
+	 */
179
+	public function paths()
180
+	{
181
+		return $this->paths;
182
+	}
183
+
184
+
185
+	/**
186
+	 * @param  string $identifier Identifier for the entity class that the Recipe applies to
187
+	 *                            Typically a Fully Qualified Class Name
188
+	 * @throws InvalidIdentifierException
189
+	 */
190
+	public function setIdentifier($identifier)
191
+	{
192
+		if (! is_string($identifier) || empty($identifier)) {
193
+			throw new InvalidIdentifierException(
194
+				is_object($identifier) ? get_class($identifier) : gettype($identifier),
195
+				__('class identifier (typically a \Fully\Qualified\ClassName)', 'event_espresso')
196
+			);
197
+		}
198
+		$this->identifier = $identifier;
199
+	}
200
+
201
+
202
+	/**
203
+	 * Ensures incoming string is a valid Fully Qualified Class Name,
204
+	 * except if this is the default wildcard Recipe ( * ),
205
+	 * or it's NOT an actual FQCN because the Recipe is using filepaths
206
+	 * for classes that are not PSR-4 compatible
207
+	 * PLZ NOTE:
208
+	 *  Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not,
209
+	 *  therefore you should always call Recipe::setPaths() before Recipe::setFqcn()
210
+	 *
211
+	 * @param string $fqcn
212
+	 * @throws InvalidDataTypeException
213
+	 * @throws InvalidClassException
214
+	 * @throws InvalidInterfaceException
215
+	 */
216
+	public function setFqcn($fqcn)
217
+	{
218
+		$fqcn = ! empty($fqcn) ? $fqcn : $this->identifier;
219
+		if (! is_string($fqcn)) {
220
+			throw new InvalidDataTypeException(
221
+				'$fqcn',
222
+				is_object($fqcn) ? get_class($fqcn) : gettype($fqcn),
223
+				__('string (Fully\Qualified\ClassName)', 'event_espresso')
224
+			);
225
+		}
226
+		$fqcn = ltrim($fqcn, '\\');
227
+		if (
228
+			$fqcn !== Recipe::DEFAULT_ID
229
+			&& ! empty($fqcn)
230
+			&& empty($this->paths)
231
+			&& ! (class_exists($fqcn) || interface_exists($fqcn))
232
+		) {
233
+			throw new InvalidClassException($fqcn);
234
+		}
235
+		$this->fqcn = $fqcn;
236
+	}
237
+
238
+
239
+	/**
240
+	 * @param array $ingredients    an array of dependencies where keys are the aliases and values are the FQCNs
241
+	 *                              example:
242
+	 *                              array( 'ClassInterface' => 'Fully\Qualified\ClassName' )
243
+	 * @throws InvalidDataTypeException
244
+	 */
245
+	public function setIngredients(array $ingredients)
246
+	{
247
+		if (empty($ingredients)) {
248
+			return;
249
+		}
250
+		if (! is_array($ingredients)) {
251
+			throw new InvalidDataTypeException(
252
+				'$ingredients',
253
+				is_object($ingredients) ? get_class($ingredients) : gettype($ingredients),
254
+				__('array of class dependencies', 'event_espresso')
255
+			);
256
+		}
257
+		$this->ingredients = array_merge($this->ingredients, $ingredients);
258
+	}
259
+
260
+
261
+	/**
262
+	 * @param string $type one of the class constants returned from CoffeeMaker::getTypes()
263
+	 * @throws InvalidIdentifierException
264
+	 */
265
+	public function setType($type = CoffeeMaker::BREW_NEW)
266
+	{
267
+		$this->type = CoffeeMaker::validateType($type);
268
+	}
269
+
270
+
271
+	/**
272
+	 * @param array $filters    an array of filters where keys are the aliases and values are the FQCNs
273
+	 *                          example:
274
+	 *                          array( 'ClassInterface' => 'Fully\Qualified\ClassName' )
275
+	 * @throws InvalidDataTypeException
276
+	 */
277
+	public function setFilters(array $filters)
278
+	{
279
+		if (empty($filters)) {
280
+			return;
281
+		}
282
+		if (! is_array($filters)) {
283
+			throw new InvalidDataTypeException(
284
+				'$filters',
285
+				is_object($filters) ? get_class($filters) : gettype($filters),
286
+				__('array of class aliases', 'event_espresso')
287
+			);
288
+		}
289
+		$this->filters = array_merge($this->filters, $filters);
290
+	}
291
+
292
+
293
+	/**
294
+	 * Ensures incoming paths is a valid filepath, or array of valid filepaths,
295
+	 * and merges them in with any existing filepaths
296
+	 * PLZ NOTE:
297
+	 *  Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not,
298
+	 *  therefore you should always call Recipe::setPaths() before Recipe::setFqcn()
299
+	 *
300
+	 * @param string|array $paths
301
+	 * @throws RuntimeException
302
+	 * @throws InvalidDataTypeException
303
+	 */
304
+	public function setPaths($paths = array())
305
+	{
306
+		if (empty($paths)) {
307
+			return;
308
+		}
309
+		if (! (is_string($paths) || is_array($paths))) {
310
+			throw new InvalidDataTypeException(
311
+				'$path',
312
+				is_object($paths) ? get_class($paths) : gettype($paths),
313
+				__('string or array of strings (full server filepath(s))', 'event_espresso')
314
+			);
315
+		}
316
+		$paths = (array) $paths;
317
+		foreach ($paths as $path) {
318
+			if (strpos($path, '*') === false && ! is_readable($path)) {
319
+				throw new RuntimeException(
320
+					sprintf(
321
+						__('The following filepath is not readable: "%1$s"', 'event_espresso'),
322
+						$path
323
+					)
324
+				);
325
+			}
326
+		}
327
+		$this->paths = array_merge($this->paths, $paths);
328
+	}
329 329
 }
Please login to merge, or discard this patch.
core/services/formatters/AsciiOnly.php 2 patches
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -15,58 +15,58 @@
 block discarded – undo
15 15
 class AsciiOnly extends FormatterBase
16 16
 {
17 17
 
18
-    /**
19
-     * Removes all non Ascii characters from string
20
-     *
21
-     * @param string|int|float $input anything easily cast into a string
22
-     * @return string
23
-     */
24
-    public function format($input)
25
-    {
26
-        // in case an int or float etc was passed in
27
-        $input = (string) $input;
28
-        $input = $this->convertAscii($input);
29
-        return $input;
30
-    }
18
+	/**
19
+	 * Removes all non Ascii characters from string
20
+	 *
21
+	 * @param string|int|float $input anything easily cast into a string
22
+	 * @return string
23
+	 */
24
+	public function format($input)
25
+	{
26
+		// in case an int or float etc was passed in
27
+		$input = (string) $input;
28
+		$input = $this->convertAscii($input);
29
+		return $input;
30
+	}
31 31
 
32 32
 
33
-    /**
34
-     * Taken from https://gist.github.com/jaywilliams/119517
35
-     *
36
-     * @param $string
37
-     * @return string
38
-     */
39
-    protected function convertAscii($string)
40
-    {
41
-        // Replace Single Curly Quotes
42
-        $search[] = chr(226) . chr(128) . chr(152);
43
-        $replace[] = "'";
44
-        $search[] = chr(226) . chr(128) . chr(153);
45
-        $replace[] = "'";
46
-        // Replace Smart Double Curly Quotes
47
-        $search[] = chr(226) . chr(128) . chr(156);
48
-        $replace[] = '"';
49
-        $search[] = chr(226) . chr(128) . chr(157);
50
-        $replace[] = '"';
51
-        // Replace En Dash
52
-        $search[] = chr(226) . chr(128) . chr(147);
53
-        $replace[] = '--';
54
-        // Replace Em Dash
55
-        $search[] = chr(226) . chr(128) . chr(148);
56
-        $replace[] = '---';
57
-        // Replace Bullet
58
-        $search[] = chr(226) . chr(128) . chr(162);
59
-        $replace[] = '*';
60
-        // Replace Middle Dot
61
-        $search[] = chr(194) . chr(183);
62
-        $replace[] = '*';
63
-        // Replace Ellipsis with three consecutive dots
64
-        $search[] = chr(226) . chr(128) . chr(166);
65
-        $replace[] = '...';
66
-        // Apply Replacements
67
-        $string = str_replace($search, $replace, $string);
68
-        // Remove any non-ASCII Characters
69
-        $string = preg_replace("/[^\x01-\x7F]/", "", $string);
70
-        return $string;
71
-    }
33
+	/**
34
+	 * Taken from https://gist.github.com/jaywilliams/119517
35
+	 *
36
+	 * @param $string
37
+	 * @return string
38
+	 */
39
+	protected function convertAscii($string)
40
+	{
41
+		// Replace Single Curly Quotes
42
+		$search[] = chr(226) . chr(128) . chr(152);
43
+		$replace[] = "'";
44
+		$search[] = chr(226) . chr(128) . chr(153);
45
+		$replace[] = "'";
46
+		// Replace Smart Double Curly Quotes
47
+		$search[] = chr(226) . chr(128) . chr(156);
48
+		$replace[] = '"';
49
+		$search[] = chr(226) . chr(128) . chr(157);
50
+		$replace[] = '"';
51
+		// Replace En Dash
52
+		$search[] = chr(226) . chr(128) . chr(147);
53
+		$replace[] = '--';
54
+		// Replace Em Dash
55
+		$search[] = chr(226) . chr(128) . chr(148);
56
+		$replace[] = '---';
57
+		// Replace Bullet
58
+		$search[] = chr(226) . chr(128) . chr(162);
59
+		$replace[] = '*';
60
+		// Replace Middle Dot
61
+		$search[] = chr(194) . chr(183);
62
+		$replace[] = '*';
63
+		// Replace Ellipsis with three consecutive dots
64
+		$search[] = chr(226) . chr(128) . chr(166);
65
+		$replace[] = '...';
66
+		// Apply Replacements
67
+		$string = str_replace($search, $replace, $string);
68
+		// Remove any non-ASCII Characters
69
+		$string = preg_replace("/[^\x01-\x7F]/", "", $string);
70
+		return $string;
71
+	}
72 72
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -39,29 +39,29 @@
 block discarded – undo
39 39
     protected function convertAscii($string)
40 40
     {
41 41
         // Replace Single Curly Quotes
42
-        $search[] = chr(226) . chr(128) . chr(152);
42
+        $search[] = chr(226).chr(128).chr(152);
43 43
         $replace[] = "'";
44
-        $search[] = chr(226) . chr(128) . chr(153);
44
+        $search[] = chr(226).chr(128).chr(153);
45 45
         $replace[] = "'";
46 46
         // Replace Smart Double Curly Quotes
47
-        $search[] = chr(226) . chr(128) . chr(156);
47
+        $search[] = chr(226).chr(128).chr(156);
48 48
         $replace[] = '"';
49
-        $search[] = chr(226) . chr(128) . chr(157);
49
+        $search[] = chr(226).chr(128).chr(157);
50 50
         $replace[] = '"';
51 51
         // Replace En Dash
52
-        $search[] = chr(226) . chr(128) . chr(147);
52
+        $search[] = chr(226).chr(128).chr(147);
53 53
         $replace[] = '--';
54 54
         // Replace Em Dash
55
-        $search[] = chr(226) . chr(128) . chr(148);
55
+        $search[] = chr(226).chr(128).chr(148);
56 56
         $replace[] = '---';
57 57
         // Replace Bullet
58
-        $search[] = chr(226) . chr(128) . chr(162);
58
+        $search[] = chr(226).chr(128).chr(162);
59 59
         $replace[] = '*';
60 60
         // Replace Middle Dot
61
-        $search[] = chr(194) . chr(183);
61
+        $search[] = chr(194).chr(183);
62 62
         $replace[] = '*';
63 63
         // Replace Ellipsis with three consecutive dots
64
-        $search[] = chr(226) . chr(128) . chr(166);
64
+        $search[] = chr(226).chr(128).chr(166);
65 65
         $replace[] = '...';
66 66
         // Apply Replacements
67 67
         $string = str_replace($search, $replace, $string);
Please login to merge, or discard this patch.
core/services/formatters/Windows1252.php 1 patch
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -17,34 +17,34 @@
 block discarded – undo
17 17
 class Windows1252 extends FormatterBase
18 18
 {
19 19
 
20
-    /**
21
-     * Converts the string to windows-1252 encoding.
22
-     *
23
-     * @param string|int|float $input anything easily cast into a string
24
-     * @return string
25
-     */
26
-    public function format($input)
27
-    {
28
-        // in case an int or float etc was passed in
29
-        $input = (string) $input;
30
-        if (function_exists('iconv')) {
31
-            $input = iconv('utf-8', 'cp1252//TRANSLIT', $input);
32
-        } elseif (WP_DEBUG) {
33
-            trigger_error(
34
-                sprintf(
35
-                // @codingStandardsIgnoreStart
36
-                    esc_html__(
37
-                        '%1$s could not format the string "%2$s" because the function "%3$s" does not exist. Please verify PHP is installed with this function, see %4$s',
38
-                        'event_espresso'
39
-                    ),
40
-                    // @codingStandardsIgnoreEnd
41
-                    get_class($this),
42
-                    $input,
43
-                    'iconv',
44
-                    '<a href="http://php.net/manual/en/iconv.installation.php">http://php.net/manual/en/iconv.installation.php</a>'
45
-                )
46
-            );
47
-        }
48
-        return $input;
49
-    }
20
+	/**
21
+	 * Converts the string to windows-1252 encoding.
22
+	 *
23
+	 * @param string|int|float $input anything easily cast into a string
24
+	 * @return string
25
+	 */
26
+	public function format($input)
27
+	{
28
+		// in case an int or float etc was passed in
29
+		$input = (string) $input;
30
+		if (function_exists('iconv')) {
31
+			$input = iconv('utf-8', 'cp1252//TRANSLIT', $input);
32
+		} elseif (WP_DEBUG) {
33
+			trigger_error(
34
+				sprintf(
35
+				// @codingStandardsIgnoreStart
36
+					esc_html__(
37
+						'%1$s could not format the string "%2$s" because the function "%3$s" does not exist. Please verify PHP is installed with this function, see %4$s',
38
+						'event_espresso'
39
+					),
40
+					// @codingStandardsIgnoreEnd
41
+					get_class($this),
42
+					$input,
43
+					'iconv',
44
+					'<a href="http://php.net/manual/en/iconv.installation.php">http://php.net/manual/en/iconv.installation.php</a>'
45
+				)
46
+			);
47
+		}
48
+		return $input;
49
+	}
50 50
 }
Please login to merge, or discard this patch.
core/services/address/formatters/MultiLineAddressFormatter.php 2 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -15,39 +15,39 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    /**
19
-     * @param string $address
20
-     * @param string $address2
21
-     * @param string $city
22
-     * @param string $state
23
-     * @param string $zip
24
-     * @param string $country
25
-     * @param string $CNT_ISO
26
-     * @return string
27
-     */
28
-    public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
29
-    {
30
-        $address_formats = apply_filters(
31
-            'FHEE__EE_MultiLine_Address_Formatter__address_formats',
32
-            array(
33
-                'CA' => "{address}%{address2}%{city}%{state}%{country}%{zip}",
34
-                'GB' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
-                'US' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
-                'ZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
37
-            )
38
-        );
39
-        // if the incoming country has a set format, use that, else use the default
40
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
41
-            : $address_formats['ZZ'];
42
-        return $this->parse_formatted_address(
43
-            $address,
44
-            $address2,
45
-            $city,
46
-            $state,
47
-            $zip,
48
-            $country,
49
-            $formatted_address,
50
-            '<br />'
51
-        );
52
-    }
18
+	/**
19
+	 * @param string $address
20
+	 * @param string $address2
21
+	 * @param string $city
22
+	 * @param string $state
23
+	 * @param string $zip
24
+	 * @param string $country
25
+	 * @param string $CNT_ISO
26
+	 * @return string
27
+	 */
28
+	public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
29
+	{
30
+		$address_formats = apply_filters(
31
+			'FHEE__EE_MultiLine_Address_Formatter__address_formats',
32
+			array(
33
+				'CA' => "{address}%{address2}%{city}%{state}%{country}%{zip}",
34
+				'GB' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
+				'US' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
+				'ZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
37
+			)
38
+		);
39
+		// if the incoming country has a set format, use that, else use the default
40
+		$formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
41
+			: $address_formats['ZZ'];
42
+		return $this->parse_formatted_address(
43
+			$address,
44
+			$address2,
45
+			$city,
46
+			$state,
47
+			$zip,
48
+			$country,
49
+			$formatted_address,
50
+			'<br />'
51
+		);
52
+	}
53 53
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@
 block discarded – undo
37 37
             )
38 38
         );
39 39
         // if the incoming country has a set format, use that, else use the default
40
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
+        $formatted_address = isset($address_formats[$CNT_ISO]) ? $address_formats[$CNT_ISO]
41 41
             : $address_formats['ZZ'];
42 42
         return $this->parse_formatted_address(
43 43
             $address,
Please login to merge, or discard this patch.
core/services/address/formatters/InlineAddressFormatter.php 2 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -14,39 +14,39 @@
 block discarded – undo
14 14
 class InlineAddressFormatter extends AddressFormatter implements \EEI_Address_Formatter
15 15
 {
16 16
 
17
-    /**
18
-     * @param string $address
19
-     * @param string $address2
20
-     * @param string $city
21
-     * @param string $state
22
-     * @param string $zip
23
-     * @param string $country
24
-     * @param string $CNT_ISO
25
-     * @return string
26
-     */
27
-    public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
28
-    {
29
-        $address_formats = apply_filters(
30
-            'FHEE__EE_Inline_Address_Formatter__address_formats',
31
-            array(
32
-                'CA'  => "{address}%{address2}%{city}%{state}%{country}%{zip}",
33
-                'GB'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
34
-                'US'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
-                'ZZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
-            )
37
-        );
38
-        // if the incoming country has a set format, use that, else use the default
39
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
-            : $address_formats['ZZZ'];
41
-        return $this->parse_formatted_address(
42
-            $address,
43
-            $address2,
44
-            $city,
45
-            $state,
46
-            $zip,
47
-            $country,
48
-            $formatted_address,
49
-            ', '
50
-        );
51
-    }
17
+	/**
18
+	 * @param string $address
19
+	 * @param string $address2
20
+	 * @param string $city
21
+	 * @param string $state
22
+	 * @param string $zip
23
+	 * @param string $country
24
+	 * @param string $CNT_ISO
25
+	 * @return string
26
+	 */
27
+	public function format($address, $address2, $city, $state, $zip, $country, $CNT_ISO)
28
+	{
29
+		$address_formats = apply_filters(
30
+			'FHEE__EE_Inline_Address_Formatter__address_formats',
31
+			array(
32
+				'CA'  => "{address}%{address2}%{city}%{state}%{country}%{zip}",
33
+				'GB'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
34
+				'US'  => "{address}%{address2}%{city}%{state}%{zip}%{country}",
35
+				'ZZZ' => "{address}%{address2}%{city}%{state}%{zip}%{country}",
36
+			)
37
+		);
38
+		// if the incoming country has a set format, use that, else use the default
39
+		$formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
40
+			: $address_formats['ZZZ'];
41
+		return $this->parse_formatted_address(
42
+			$address,
43
+			$address2,
44
+			$city,
45
+			$state,
46
+			$zip,
47
+			$country,
48
+			$formatted_address,
49
+			', '
50
+		);
51
+	}
52 52
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
             )
37 37
         );
38 38
         // if the incoming country has a set format, use that, else use the default
39
-        $formatted_address = isset($address_formats[ $CNT_ISO ]) ? $address_formats[ $CNT_ISO ]
39
+        $formatted_address = isset($address_formats[$CNT_ISO]) ? $address_formats[$CNT_ISO]
40 40
             : $address_formats['ZZZ'];
41 41
         return $this->parse_formatted_address(
42 42
             $address,
Please login to merge, or discard this patch.
core/services/locators/FileLocator.php 2 patches
Indentation   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -17,88 +17,88 @@
 block discarded – undo
17 17
 class FileLocator extends Locator
18 18
 {
19 19
 
20
-    /**
21
-     * @var string $file_mask
22
-     */
23
-    protected $file_mask = '*.php';
20
+	/**
21
+	 * @var string $file_mask
22
+	 */
23
+	protected $file_mask = '*.php';
24 24
 
25
-    /**
26
-     * @var array $filepaths
27
-     */
28
-    protected $filepaths = array();
25
+	/**
26
+	 * @var array $filepaths
27
+	 */
28
+	protected $filepaths = array();
29 29
 
30 30
 
31
-    /**
32
-     * @param string $file_mask
33
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
34
-     */
35
-    public function setFileMask($file_mask)
36
-    {
37
-        if (! is_string($file_mask)) {
38
-            throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39
-        }
40
-        $this->file_mask = $file_mask;
41
-    }
31
+	/**
32
+	 * @param string $file_mask
33
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
34
+	 */
35
+	public function setFileMask($file_mask)
36
+	{
37
+		if (! is_string($file_mask)) {
38
+			throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39
+		}
40
+		$this->file_mask = $file_mask;
41
+	}
42 42
 
43 43
 
44
-    /**
45
-     * @access public
46
-     * @return array
47
-     */
48
-    public function getFilePaths()
49
-    {
50
-        return $this->filepaths;
51
-    }
44
+	/**
45
+	 * @access public
46
+	 * @return array
47
+	 */
48
+	public function getFilePaths()
49
+	{
50
+		return $this->filepaths;
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * @access public
56
-     * @return int
57
-     */
58
-    public function count()
59
-    {
60
-        return count($this->filepaths);
61
-    }
54
+	/**
55
+	 * @access public
56
+	 * @return int
57
+	 */
58
+	public function count()
59
+	{
60
+		return count($this->filepaths);
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * given a path to a valid directory, or an array of valid paths,
66
-     * will find all files that match the provided mask
67
-     *
68
-     * @access public
69
-     * @param array|string $directory_paths
70
-     * @return \FilesystemIterator
71
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
72
-     */
73
-    public function locate($directory_paths)
74
-    {
75
-        if (! (is_string($directory_paths) || is_array($directory_paths))) {
76
-            throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77
-        }
78
-        foreach ((array) $directory_paths as $directory_path) {
79
-            foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
-                $this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
81
-            }
82
-        }
83
-        return $this->filepaths;
84
-    }
64
+	/**
65
+	 * given a path to a valid directory, or an array of valid paths,
66
+	 * will find all files that match the provided mask
67
+	 *
68
+	 * @access public
69
+	 * @param array|string $directory_paths
70
+	 * @return \FilesystemIterator
71
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
72
+	 */
73
+	public function locate($directory_paths)
74
+	{
75
+		if (! (is_string($directory_paths) || is_array($directory_paths))) {
76
+			throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77
+		}
78
+		foreach ((array) $directory_paths as $directory_path) {
79
+			foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
+				$this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
81
+			}
82
+		}
83
+		return $this->filepaths;
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * given a path to a valid directory, will find all files that match the provided mask
89
-     *
90
-     * @access protected
91
-     * @param string $directory_path
92
-     * @return \FilesystemIterator
93
-     */
94
-    protected function findFilesByPath($directory_path = '')
95
-    {
96
-        $iterator = new GlobIterator(
97
-            \EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
98
-        );
99
-        foreach ($this->flags as $flag) {
100
-            $iterator->setFlags($flag);
101
-        }
102
-        return $iterator;
103
-    }
87
+	/**
88
+	 * given a path to a valid directory, will find all files that match the provided mask
89
+	 *
90
+	 * @access protected
91
+	 * @param string $directory_path
92
+	 * @return \FilesystemIterator
93
+	 */
94
+	protected function findFilesByPath($directory_path = '')
95
+	{
96
+		$iterator = new GlobIterator(
97
+			\EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
98
+		);
99
+		foreach ($this->flags as $flag) {
100
+			$iterator->setFlags($flag);
101
+		}
102
+		return $iterator;
103
+	}
104 104
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
      */
35 35
     public function setFileMask($file_mask)
36 36
     {
37
-        if (! is_string($file_mask)) {
37
+        if ( ! is_string($file_mask)) {
38 38
             throw new InvalidDataTypeException('$file_mask', $file_mask, 'string');
39 39
         }
40 40
         $this->file_mask = $file_mask;
@@ -72,12 +72,12 @@  discard block
 block discarded – undo
72 72
      */
73 73
     public function locate($directory_paths)
74 74
     {
75
-        if (! (is_string($directory_paths) || is_array($directory_paths))) {
75
+        if ( ! (is_string($directory_paths) || is_array($directory_paths))) {
76 76
             throw new InvalidDataTypeException('$directory_paths', $directory_paths, 'string or array');
77 77
         }
78 78
         foreach ((array) $directory_paths as $directory_path) {
79 79
             foreach ($this->findFilesByPath($directory_path) as $key => $file) {
80
-                $this->filepaths[ $key ] = \EEH_File::standardise_directory_separators($file);
80
+                $this->filepaths[$key] = \EEH_File::standardise_directory_separators($file);
81 81
             }
82 82
         }
83 83
         return $this->filepaths;
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
     protected function findFilesByPath($directory_path = '')
95 95
     {
96 96
         $iterator = new GlobIterator(
97
-            \EEH_File::end_with_directory_separator($directory_path) . $this->file_mask
97
+            \EEH_File::end_with_directory_separator($directory_path).$this->file_mask
98 98
         );
99 99
         foreach ($this->flags as $flag) {
100 100
             $iterator->setFlags($flag);
Please login to merge, or discard this patch.
core/services/database/TableManager.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
         global $wpdb;
66 66
         $full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67 67
         $columns = $this->getTableColumns($table_name);
68
-        if (! in_array($column_name, $columns)) {
68
+        if ( ! in_array($column_name, $columns)) {
69 69
             $alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70 70
             return $wpdb->query($alter_query);
71 71
         }
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
         global $wpdb;
87 87
         $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88 88
         $field_array = array();
89
-        if (! empty($table_name)) {
89
+        if ( ! empty($table_name)) {
90 90
             $columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91 91
             if ($columns !== false) {
92 92
                 foreach ($columns as $column) {
@@ -132,14 +132,14 @@  discard block
 block discarded – undo
132 132
         foreach ($table_names as $table_name) {
133 133
             $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134 134
             if ($this->getTableAnalysis()->tableExists($table_name)) {
135
-                $tables_to_delete[ $table_name ] = $table_name;
135
+                $tables_to_delete[$table_name] = $table_name;
136 136
             }
137 137
         }
138
-        if (! empty($tables_to_delete)) {
138
+        if ( ! empty($tables_to_delete)) {
139 139
             global $wpdb;
140 140
             // make sure we only have a unique strings in the array.
141 141
             $tables_to_delete = array_unique($tables_to_delete);
142
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
142
+            $wpdb->query('DROP TABLE '.implode(', ', $tables_to_delete));
143 143
         }
144 144
         return $tables_to_delete;
145 145
     }
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
             $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
190 190
             /** @var \wpdb $wpdb */
191 191
             global $wpdb;
192
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
192
+            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} ".$wpdb->get_charset_collate();
193 193
 
194 194
             // get $wpdb to echo errors, but buffer them. This way at least WE know an error
195 195
             // happened. And then we can choose to tell the end user
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
             ob_end_clean();
202 202
             $wpdb->show_errors($old_show_errors_policy);
203 203
             $wpdb->suppress_errors($old_error_suppression_policy);
204
-            if (! empty($output)) {
204
+            if ( ! empty($output)) {
205 205
                 throw new \EE_Error($output);
206 206
             }
207 207
         } else {
@@ -242,7 +242,7 @@  discard block
 block discarded – undo
242 242
         if ($column_name === null) {
243 243
             $column_name = $index_name;
244 244
         }
245
-        if (! $this->getTableAnalysis()->tableExists($table_name)) {
245
+        if ( ! $this->getTableAnalysis()->tableExists($table_name)) {
246 246
             return false;
247 247
         }
248 248
         $index_entries = $this->getTableAnalysis()->showIndexes($table_name, $index_name);
Please login to merge, or discard this patch.
Indentation   +234 added lines, -234 removed lines patch added patch discarded remove patch
@@ -13,257 +13,257 @@
 block discarded – undo
13 13
 class TableManager extends \EE_Base
14 14
 {
15 15
 
16
-    /**
17
-     * @var TableAnalysis $table_analysis
18
-     */
19
-    private $table_analysis;
16
+	/**
17
+	 * @var TableAnalysis $table_analysis
18
+	 */
19
+	private $table_analysis;
20 20
 
21 21
 
22
-    /**
23
-     * TableManager constructor.
24
-     *
25
-     * @param TableAnalysis $TableAnalysis
26
-     */
27
-    public function __construct(TableAnalysis $TableAnalysis)
28
-    {
29
-        $this->table_analysis = $TableAnalysis;
30
-    }
22
+	/**
23
+	 * TableManager constructor.
24
+	 *
25
+	 * @param TableAnalysis $TableAnalysis
26
+	 */
27
+	public function __construct(TableAnalysis $TableAnalysis)
28
+	{
29
+		$this->table_analysis = $TableAnalysis;
30
+	}
31 31
 
32 32
 
33
-    /**
34
-     * Gets the injected table analyzer, or throws an exception
35
-     *
36
-     * @return TableAnalysis
37
-     * @throws \EE_Error
38
-     */
39
-    protected function getTableAnalysis()
40
-    {
41
-        if ($this->table_analysis instanceof TableAnalysis) {
42
-            return $this->table_analysis;
43
-        } else {
44
-            throw new \EE_Error(
45
-                sprintf(
46
-                    __('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
47
-                    get_class($this)
48
-                )
49
-            );
50
-        }
51
-    }
33
+	/**
34
+	 * Gets the injected table analyzer, or throws an exception
35
+	 *
36
+	 * @return TableAnalysis
37
+	 * @throws \EE_Error
38
+	 */
39
+	protected function getTableAnalysis()
40
+	{
41
+		if ($this->table_analysis instanceof TableAnalysis) {
42
+			return $this->table_analysis;
43
+		} else {
44
+			throw new \EE_Error(
45
+				sprintf(
46
+					__('Table analysis class on class %1$s is not set properly.', 'event_espresso'),
47
+					get_class($this)
48
+				)
49
+			);
50
+		}
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * @param string $table_name which can optionally start with $wpdb->prefix or not
56
-     * @param string $column_name
57
-     * @param string $column_info
58
-     * @return bool|false|int
59
-     */
60
-    public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
61
-    {
62
-        if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
63
-            return false;
64
-        }
65
-        global $wpdb;
66
-        $full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67
-        $columns = $this->getTableColumns($table_name);
68
-        if (! in_array($column_name, $columns)) {
69
-            $alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70
-            return $wpdb->query($alter_query);
71
-        }
72
-        return true;
73
-    }
54
+	/**
55
+	 * @param string $table_name which can optionally start with $wpdb->prefix or not
56
+	 * @param string $column_name
57
+	 * @param string $column_info
58
+	 * @return bool|false|int
59
+	 */
60
+	public function addColumn($table_name, $column_name, $column_info = 'INT UNSIGNED NOT NULL')
61
+	{
62
+		if (apply_filters('FHEE__EEH_Activation__add_column_if_it_doesnt_exist__short_circuit', false)) {
63
+			return false;
64
+		}
65
+		global $wpdb;
66
+		$full_table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
67
+		$columns = $this->getTableColumns($table_name);
68
+		if (! in_array($column_name, $columns)) {
69
+			$alter_query = "ALTER TABLE {$full_table_name} ADD {$column_name} {$column_info}";
70
+			return $wpdb->query($alter_query);
71
+		}
72
+		return true;
73
+	}
74 74
 
75 75
 
76
-    /**
77
-     * Gets the name of all columns on the  table. $table_name can
78
-     * optionally start with $wpdb->prefix or not
79
-     *
80
-     * @global \wpdb $wpdb
81
-     * @param string $table_name
82
-     * @return array
83
-     */
84
-    public function getTableColumns($table_name)
85
-    {
86
-        global $wpdb;
87
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88
-        $field_array = array();
89
-        if (! empty($table_name)) {
90
-            $columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91
-            if ($columns !== false) {
92
-                foreach ($columns as $column) {
93
-                    $field_array[] = $column->Field;
94
-                }
95
-            }
96
-        }
97
-        return $field_array;
98
-    }
76
+	/**
77
+	 * Gets the name of all columns on the  table. $table_name can
78
+	 * optionally start with $wpdb->prefix or not
79
+	 *
80
+	 * @global \wpdb $wpdb
81
+	 * @param string $table_name
82
+	 * @return array
83
+	 */
84
+	public function getTableColumns($table_name)
85
+	{
86
+		global $wpdb;
87
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
88
+		$field_array = array();
89
+		if (! empty($table_name)) {
90
+			$columns = $wpdb->get_results("SHOW COLUMNS FROM {$table_name} ");
91
+			if ($columns !== false) {
92
+				foreach ($columns as $column) {
93
+					$field_array[] = $column->Field;
94
+				}
95
+			}
96
+		}
97
+		return $field_array;
98
+	}
99 99
 
100 100
 
101
-    /**
102
-     * Drops the specified table from the database. $table_name can
103
-     * optionally start with $wpdb->prefix or not
104
-     *
105
-     * @global \wpdb $wpdb
106
-     * @param string $table_name
107
-     * @return int
108
-     */
109
-    public function dropTable($table_name)
110
-    {
111
-        global $wpdb;
112
-        if ($this->getTableAnalysis()->tableExists($table_name)) {
113
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
114
-            return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
115
-        }
116
-        return 0;
117
-    }
101
+	/**
102
+	 * Drops the specified table from the database. $table_name can
103
+	 * optionally start with $wpdb->prefix or not
104
+	 *
105
+	 * @global \wpdb $wpdb
106
+	 * @param string $table_name
107
+	 * @return int
108
+	 */
109
+	public function dropTable($table_name)
110
+	{
111
+		global $wpdb;
112
+		if ($this->getTableAnalysis()->tableExists($table_name)) {
113
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
114
+			return $wpdb->query("DROP TABLE IF EXISTS {$table_name}");
115
+		}
116
+		return 0;
117
+	}
118 118
 
119 119
 
120
-    /**
121
-     * Drops all the tables mentioned in a single MYSQL query. Double-checks
122
-     * each table name provided has a wpdb prefix attached, and that it exists.
123
-     * Returns the list actually deleted
124
-     *
125
-     * @global WPDB $wpdb
126
-     * @param array $table_names
127
-     * @return array of table names which we deleted
128
-     */
129
-    public function dropTables($table_names)
130
-    {
131
-        $tables_to_delete = array();
132
-        foreach ($table_names as $table_name) {
133
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134
-            if ($this->getTableAnalysis()->tableExists($table_name)) {
135
-                $tables_to_delete[ $table_name ] = $table_name;
136
-            }
137
-        }
138
-        if (! empty($tables_to_delete)) {
139
-            global $wpdb;
140
-            // make sure we only have a unique strings in the array.
141
-            $tables_to_delete = array_unique($tables_to_delete);
142
-            $wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
143
-        }
144
-        return $tables_to_delete;
145
-    }
120
+	/**
121
+	 * Drops all the tables mentioned in a single MYSQL query. Double-checks
122
+	 * each table name provided has a wpdb prefix attached, and that it exists.
123
+	 * Returns the list actually deleted
124
+	 *
125
+	 * @global WPDB $wpdb
126
+	 * @param array $table_names
127
+	 * @return array of table names which we deleted
128
+	 */
129
+	public function dropTables($table_names)
130
+	{
131
+		$tables_to_delete = array();
132
+		foreach ($table_names as $table_name) {
133
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
134
+			if ($this->getTableAnalysis()->tableExists($table_name)) {
135
+				$tables_to_delete[ $table_name ] = $table_name;
136
+			}
137
+		}
138
+		if (! empty($tables_to_delete)) {
139
+			global $wpdb;
140
+			// make sure we only have a unique strings in the array.
141
+			$tables_to_delete = array_unique($tables_to_delete);
142
+			$wpdb->query('DROP TABLE ' . implode(', ', $tables_to_delete));
143
+		}
144
+		return $tables_to_delete;
145
+	}
146 146
 
147 147
 
148
-    /**
149
-     * Drops the specified index from the specified table. $table_name can
150
-     * optionally start with $wpdb->prefix or not
151
-     *
152
-     * @global \wpdb $wpdb
153
-     * @param string $table_name
154
-     * @param string $index_name
155
-     * @return int the number of indexes dropped. False if there was a datbase error
156
-     */
157
-    public function dropIndex($table_name, $index_name)
158
-    {
159
-        if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
160
-            return 0;
161
-        }
162
-        global $wpdb;
163
-        $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
164
-        $index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
165
-        if (
166
-            $this->getTableAnalysis()->tableExists($table_name)
167
-            && $wpdb->get_var($index_exists_query)
168
-               === $table_name // using get_var with the $index_exists_query returns the table's name
169
-        ) {
170
-            return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
171
-        }
172
-        return 0;
173
-    }
148
+	/**
149
+	 * Drops the specified index from the specified table. $table_name can
150
+	 * optionally start with $wpdb->prefix or not
151
+	 *
152
+	 * @global \wpdb $wpdb
153
+	 * @param string $table_name
154
+	 * @param string $index_name
155
+	 * @return int the number of indexes dropped. False if there was a datbase error
156
+	 */
157
+	public function dropIndex($table_name, $index_name)
158
+	{
159
+		if (apply_filters('FHEE__EEH_Activation__drop_index__short_circuit', false)) {
160
+			return 0;
161
+		}
162
+		global $wpdb;
163
+		$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
164
+		$index_exists_query = "SHOW INDEX FROM {$table_name} WHERE key_name = '{$index_name}'";
165
+		if (
166
+			$this->getTableAnalysis()->tableExists($table_name)
167
+			&& $wpdb->get_var($index_exists_query)
168
+			   === $table_name // using get_var with the $index_exists_query returns the table's name
169
+		) {
170
+			return $wpdb->query("ALTER TABLE {$table_name} DROP INDEX {$index_name}");
171
+		}
172
+		return 0;
173
+	}
174 174
 
175 175
 
176
-    /**
177
-     * Just creates the requested table. $table_name can
178
-     * optionally start with $wpdb->prefix or not
179
-     *
180
-     * @param string $table_name
181
-     * @param string $create_sql defining the table's columns and indexes
182
-     * @param string $engine     (no need to specify "ENGINE=", that's implied)
183
-     * @return void
184
-     * @throws \EE_Error
185
-     */
186
-    public function createTable($table_name, $create_sql, $engine = 'MyISAM')
187
-    {
188
-        $engine = apply_filters(
189
-            'FHEE__EventEspresso_core_services_database_TableManager__createTable__engine',
190
-            $engine,
191
-            $table_name,
192
-            $create_sql
193
-        );
194
-        // does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
195
-        if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
196
-            $table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
197
-            /** @var \wpdb $wpdb */
198
-            global $wpdb;
199
-            $SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
176
+	/**
177
+	 * Just creates the requested table. $table_name can
178
+	 * optionally start with $wpdb->prefix or not
179
+	 *
180
+	 * @param string $table_name
181
+	 * @param string $create_sql defining the table's columns and indexes
182
+	 * @param string $engine     (no need to specify "ENGINE=", that's implied)
183
+	 * @return void
184
+	 * @throws \EE_Error
185
+	 */
186
+	public function createTable($table_name, $create_sql, $engine = 'MyISAM')
187
+	{
188
+		$engine = apply_filters(
189
+			'FHEE__EventEspresso_core_services_database_TableManager__createTable__engine',
190
+			$engine,
191
+			$table_name,
192
+			$create_sql
193
+		);
194
+		// does $sql contain valid column information? ( LPT: https://regex101.com/ is great for working out regex patterns )
195
+		if (preg_match('((((.*?))(,\s))+)', $create_sql, $valid_column_data)) {
196
+			$table_name = $this->getTableAnalysis()->ensureTableNameHasPrefix($table_name);
197
+			/** @var \wpdb $wpdb */
198
+			global $wpdb;
199
+			$SQL = "CREATE TABLE {$table_name} ( {$create_sql} ) ENGINE={$engine} " . $wpdb->get_charset_collate();
200 200
 
201
-            // get $wpdb to echo errors, but buffer them. This way at least WE know an error
202
-            // happened. And then we can choose to tell the end user
203
-            $old_show_errors_policy = $wpdb->show_errors(true);
204
-            $old_error_suppression_policy = $wpdb->suppress_errors(false);
205
-            ob_start();
206
-            dbDelta($SQL);
207
-            $output = ob_get_contents();
208
-            ob_end_clean();
209
-            $wpdb->show_errors($old_show_errors_policy);
210
-            $wpdb->suppress_errors($old_error_suppression_policy);
211
-            if (! empty($output)) {
212
-                throw new \EE_Error($output);
213
-            }
214
-        } else {
215
-            throw new \EE_Error(
216
-                sprintf(
217
-                    __(
218
-                        'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
219
-                        'event_espresso'
220
-                    ),
221
-                    '<br />',
222
-                    $create_sql
223
-                )
224
-            );
225
-        }
226
-    }
201
+			// get $wpdb to echo errors, but buffer them. This way at least WE know an error
202
+			// happened. And then we can choose to tell the end user
203
+			$old_show_errors_policy = $wpdb->show_errors(true);
204
+			$old_error_suppression_policy = $wpdb->suppress_errors(false);
205
+			ob_start();
206
+			dbDelta($SQL);
207
+			$output = ob_get_contents();
208
+			ob_end_clean();
209
+			$wpdb->show_errors($old_show_errors_policy);
210
+			$wpdb->suppress_errors($old_error_suppression_policy);
211
+			if (! empty($output)) {
212
+				throw new \EE_Error($output);
213
+			}
214
+		} else {
215
+			throw new \EE_Error(
216
+				sprintf(
217
+					__(
218
+						'The following table creation SQL does not contain valid information about the table columns: %1$s %2$s',
219
+						'event_espresso'
220
+					),
221
+					'<br />',
222
+					$create_sql
223
+				)
224
+			);
225
+		}
226
+	}
227 227
 
228 228
 
229
-    /**
230
-     * Drops the specified index if it's size differs from $desired_index_size.
231
-     * WordPress' dbdelta method doesn't automatically change index sizes, so this
232
-     * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
233
-     * If the table doesn't exist, or it exists but the index does not, or returns false
234
-     *
235
-     * @param string     $table_name
236
-     * @param string     $index_name
237
-     * @param string     $column_name        if none is provided, we assume the column name matches the index (often
238
-     *                                       true in EE)
239
-     * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
240
-     * @return bool whether an index was dropped or not
241
-     * @throws /EE_Error if table analysis object isn't defined
242
-     */
243
-    public function dropIndexIfSizeNot(
244
-        $table_name,
245
-        $index_name,
246
-        $column_name = null,
247
-        $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 (
261
-                $column_name === $index_entry->Column_name
262
-                && (string) $desired_index_size !== $index_entry->Sub_part
263
-            ) {
264
-                return $this->dropIndex($table_name, $index_name);
265
-            }
266
-        }
267
-        return false;
268
-    }
229
+	/**
230
+	 * Drops the specified index if it's size differs from $desired_index_size.
231
+	 * WordPress' dbdelta method doesn't automatically change index sizes, so this
232
+	 * method can be used to only drop the index if needed, and afterwards dbdelta can be used as normal.
233
+	 * If the table doesn't exist, or it exists but the index does not, or returns false
234
+	 *
235
+	 * @param string     $table_name
236
+	 * @param string     $index_name
237
+	 * @param string     $column_name        if none is provided, we assume the column name matches the index (often
238
+	 *                                       true in EE)
239
+	 * @param string|int $desired_index_size defaults to TableAnalysis::index_col_size, the max for utf8mb4.
240
+	 * @return bool whether an index was dropped or not
241
+	 * @throws /EE_Error if table analysis object isn't defined
242
+	 */
243
+	public function dropIndexIfSizeNot(
244
+		$table_name,
245
+		$index_name,
246
+		$column_name = null,
247
+		$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 (
261
+				$column_name === $index_entry->Column_name
262
+				&& (string) $desired_index_size !== $index_entry->Sub_part
263
+			) {
264
+				return $this->dropIndex($table_name, $index_name);
265
+			}
266
+		}
267
+		return false;
268
+	}
269 269
 }
Please login to merge, or discard this patch.
core/services/commands/CommandHandlerManager.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
         if (empty($command)) {
75 75
             throw new InvalidCommandHandlerException($command);
76 76
         }
77
-        $this->command_handlers[ $command ] = $command_handler;
77
+        $this->command_handlers[$command] = $command_handler;
78 78
     }
79 79
 
80 80
 
@@ -96,14 +96,14 @@  discard block
 block discarded – undo
96 96
         $handler = null;
97 97
         // has a command handler already been set for this class ?
98 98
         // if not, can we find one via the FQCN ?
99
-        if (isset($this->command_handlers[ $command_name ])) {
100
-            $handler = $this->command_handlers[ $command_name ];
99
+        if (isset($this->command_handlers[$command_name])) {
100
+            $handler = $this->command_handlers[$command_name];
101 101
         } elseif (class_exists($command_handler)) {
102 102
             $handler = $this->loader->getShared($command_handler);
103 103
         }
104 104
         // if Handler requires an instance of the CommandBus, but that has not yet been set
105 105
         if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
106
-            if (! $command_bus instanceof CommandBusInterface) {
106
+            if ( ! $command_bus instanceof CommandBusInterface) {
107 107
                 throw new DomainException(
108 108
                     esc_html__(
109 109
                         'CompositeCommandHandler classes require an instance of the CommandBus.',
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -18,83 +18,83 @@  discard block
 block discarded – undo
18 18
 class CommandHandlerManager implements CommandHandlerManagerInterface
19 19
 {
20 20
 
21
-    /**
22
-     * @var CommandHandlerInterface[] $command_handlers
23
-     */
24
-    protected $command_handlers;
21
+	/**
22
+	 * @var CommandHandlerInterface[] $command_handlers
23
+	 */
24
+	protected $command_handlers;
25 25
 
26
-    /**
27
-     * @type LoaderInterface $loader
28
-     */
29
-    private $loader;
26
+	/**
27
+	 * @type LoaderInterface $loader
28
+	 */
29
+	private $loader;
30 30
 
31 31
 
32
-    /**
33
-     * CommandHandlerManager constructor
34
-     *
35
-     * @param LoaderInterface $loader
36
-     */
37
-    public function __construct(LoaderInterface $loader)
38
-    {
39
-        $this->loader = $loader;
40
-    }
32
+	/**
33
+	 * CommandHandlerManager constructor
34
+	 *
35
+	 * @param LoaderInterface $loader
36
+	 */
37
+	public function __construct(LoaderInterface $loader)
38
+	{
39
+		$this->loader = $loader;
40
+	}
41 41
 
42 42
 
43
-    /**
44
-     * By default, Commands and CommandHandlers would normally
45
-     * reside in the same folder under the same namespace,
46
-     * and the names of the two classes would only differ in that
47
-     * one ends in "Command" and the other ends in "CommandHandler".
48
-     * However, if you wanted to utilize a CommandHandler from somewhere else,
49
-     * then this method allows you to add that CommandHandler and specify the FQCN
50
-     * (Fully Qualified ClassName) for the Command class that it should be used for.
51
-     * For example:
52
-     *      by default the "Vendor\some\namespace\DoSomethingCommand"
53
-     *      would resolve to using "Vendor\some\namespace\DoSomethingCommandHandler"
54
-     *      but if you wanted to instead process that commend using:
55
-     *      "Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler"
56
-     *      then the following code:
57
-     *      $CommandHandlerManager = $this->loader->getShared( 'CommandHandlerManagerInterface' );
58
-     *      $CommandHandlerManager->addCommandHandler(
59
-     *          new Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler(),
60
-     *          'Vendor\some\namespace\DoSomethingCommand'
61
-     *      );
62
-     *      would result in the alternate CommandHandler being used to process that Command
63
-     *
64
-     * !!! IMPORTANT !!!
65
-     * If overriding the default CommandHandler for a Command,
66
-     * be sure to also override CommandHandler::verify(),
67
-     * or else an Exception will be thrown when the CommandBus
68
-     * attempts to verify that the incoming Command matches the Handler
69
-     *
70
-     * @param CommandHandlerInterface $command_handler
71
-     * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
72
-     * @return void
73
-     * @throws InvalidCommandHandlerException
74
-     */
75
-    public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
76
-    {
77
-        $command = ! empty($fqcn_for_command)
78
-            ? $fqcn_for_command
79
-            : str_replace('CommandHandler', 'Command', get_class($command_handler));
80
-        if (empty($command)) {
81
-            throw new InvalidCommandHandlerException($command);
82
-        }
83
-        $this->command_handlers[ $command ] = $command_handler;
84
-    }
43
+	/**
44
+	 * By default, Commands and CommandHandlers would normally
45
+	 * reside in the same folder under the same namespace,
46
+	 * and the names of the two classes would only differ in that
47
+	 * one ends in "Command" and the other ends in "CommandHandler".
48
+	 * However, if you wanted to utilize a CommandHandler from somewhere else,
49
+	 * then this method allows you to add that CommandHandler and specify the FQCN
50
+	 * (Fully Qualified ClassName) for the Command class that it should be used for.
51
+	 * For example:
52
+	 *      by default the "Vendor\some\namespace\DoSomethingCommand"
53
+	 *      would resolve to using "Vendor\some\namespace\DoSomethingCommandHandler"
54
+	 *      but if you wanted to instead process that commend using:
55
+	 *      "Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler"
56
+	 *      then the following code:
57
+	 *      $CommandHandlerManager = $this->loader->getShared( 'CommandHandlerManagerInterface' );
58
+	 *      $CommandHandlerManager->addCommandHandler(
59
+	 *          new Vendor\a\totally\different\namespace\for\DoSomethingCommandHandler(),
60
+	 *          'Vendor\some\namespace\DoSomethingCommand'
61
+	 *      );
62
+	 *      would result in the alternate CommandHandler being used to process that Command
63
+	 *
64
+	 * !!! IMPORTANT !!!
65
+	 * If overriding the default CommandHandler for a Command,
66
+	 * be sure to also override CommandHandler::verify(),
67
+	 * or else an Exception will be thrown when the CommandBus
68
+	 * attempts to verify that the incoming Command matches the Handler
69
+	 *
70
+	 * @param CommandHandlerInterface $command_handler
71
+	 * @param string                  $fqcn_for_command Fully Qualified ClassName for Command
72
+	 * @return void
73
+	 * @throws InvalidCommandHandlerException
74
+	 */
75
+	public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '')
76
+	{
77
+		$command = ! empty($fqcn_for_command)
78
+			? $fqcn_for_command
79
+			: str_replace('CommandHandler', 'Command', get_class($command_handler));
80
+		if (empty($command)) {
81
+			throw new InvalidCommandHandlerException($command);
82
+		}
83
+		$this->command_handlers[ $command ] = $command_handler;
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * @param CommandInterface    $command
89
-     * @param CommandBusInterface $command_bus
90
-     * @return mixed
91
-     * @throws DomainException
92
-     * @throws CommandHandlerNotFoundException
93
-     */
94
-    public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
95
-    {
96
-        $command_name = get_class($command);
97
-        /*
87
+	/**
88
+	 * @param CommandInterface    $command
89
+	 * @param CommandBusInterface $command_bus
90
+	 * @return mixed
91
+	 * @throws DomainException
92
+	 * @throws CommandHandlerNotFoundException
93
+	 */
94
+	public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null)
95
+	{
96
+		$command_name = get_class($command);
97
+		/*
98 98
          * Filters the Fully Qualified Class Name for the Command Handler
99 99
          * that will be used to handle the incoming Command
100 100
          *
@@ -107,34 +107,34 @@  discard block
 block discarded – undo
107 107
          * @param string "CommandHandler::class" Fully Qualified Class Name for the Command Handler
108 108
          * @param CommandInterface $command the actual Command instance
109 109
          */
110
-        $command_handler = apply_filters(
111
-            'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
112
-            str_replace('Command', 'CommandHandler', $command_name),
113
-            $command
114
-        );
115
-        $handler = null;
116
-        // has a command handler already been set for this class ?
117
-        // if not, can we find one via the FQCN ?
118
-        if (isset($this->command_handlers[ $command_name ])) {
119
-            $handler = $this->command_handlers[ $command_name ];
120
-        } elseif (class_exists($command_handler)) {
121
-            $handler = $this->loader->getShared($command_handler);
122
-        }
123
-        // if Handler requires an instance of the CommandBus, but that has not yet been set
124
-        if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
125
-            if (! $command_bus instanceof CommandBusInterface) {
126
-                throw new DomainException(
127
-                    esc_html__(
128
-                        'CompositeCommandHandler classes require an instance of the CommandBus.',
129
-                        'event_espresso'
130
-                    )
131
-                );
132
-            }
133
-            $handler->setCommandBus($command_bus);
134
-        }
135
-        if ($handler instanceof CommandHandlerInterface) {
136
-            return $handler;
137
-        }
138
-        throw new CommandHandlerNotFoundException($command_handler);
139
-    }
110
+		$command_handler = apply_filters(
111
+			'FHEE__EventEspresso_core_services_commands_CommandHandlerManager__getCommandHandler__command_handler',
112
+			str_replace('Command', 'CommandHandler', $command_name),
113
+			$command
114
+		);
115
+		$handler = null;
116
+		// has a command handler already been set for this class ?
117
+		// if not, can we find one via the FQCN ?
118
+		if (isset($this->command_handlers[ $command_name ])) {
119
+			$handler = $this->command_handlers[ $command_name ];
120
+		} elseif (class_exists($command_handler)) {
121
+			$handler = $this->loader->getShared($command_handler);
122
+		}
123
+		// if Handler requires an instance of the CommandBus, but that has not yet been set
124
+		if ($handler instanceof CompositeCommandHandler && ! $handler->commandBus() instanceof CommandBusInterface) {
125
+			if (! $command_bus instanceof CommandBusInterface) {
126
+				throw new DomainException(
127
+					esc_html__(
128
+						'CompositeCommandHandler classes require an instance of the CommandBus.',
129
+						'event_espresso'
130
+					)
131
+				);
132
+			}
133
+			$handler->setCommandBus($command_bus);
134
+		}
135
+		if ($handler instanceof CommandHandlerInterface) {
136
+			return $handler;
137
+		}
138
+		throw new CommandHandlerNotFoundException($command_handler);
139
+	}
140 140
 }
Please login to merge, or discard this patch.