@@ -308,7 +308,7 @@ discard block |
||
308 | 308 | * _find_common_base_path |
309 | 309 | * given two paths, this determines if there is a common base path between the two |
310 | 310 | * |
311 | - * @param array $paths |
|
311 | + * @param string[] $paths |
|
312 | 312 | * @return string |
313 | 313 | */ |
314 | 314 | protected static function _find_common_base_path($paths) |
@@ -338,7 +338,7 @@ discard block |
||
338 | 338 | * @param boolean $return_string whether to send output immediately to screen, or capture and return as a string |
339 | 339 | * @param bool $throw_exceptions if set to true, will throw an exception if the template is either |
340 | 340 | * not found or is not readable |
341 | - * @return mixed string |
|
341 | + * @return string string |
|
342 | 342 | * @throws \DomainException |
343 | 343 | */ |
344 | 344 | public static function display_template( |
@@ -5,35 +5,35 @@ discard block |
||
5 | 5 | use EventEspresso\core\services\loaders\LoaderFactory; |
6 | 6 | |
7 | 7 | if (! function_exists('espresso_get_template_part')) { |
8 | - /** |
|
9 | - * espresso_get_template_part |
|
10 | - * basically a copy of the WordPress get_template_part() function but uses EEH_Template::locate_template() instead, and doesn't add base versions of files |
|
11 | - * so not a very useful function at all except that it adds familiarity PLUS filtering based off of the entire template part name |
|
12 | - * |
|
13 | - * @param string $slug The slug name for the generic template. |
|
14 | - * @param string $name The name of the specialised template. |
|
15 | - * @return string the html output for the formatted money value |
|
16 | - */ |
|
17 | - function espresso_get_template_part($slug = null, $name = null) |
|
18 | - { |
|
19 | - EEH_Template::get_template_part($slug, $name); |
|
20 | - } |
|
8 | + /** |
|
9 | + * espresso_get_template_part |
|
10 | + * basically a copy of the WordPress get_template_part() function but uses EEH_Template::locate_template() instead, and doesn't add base versions of files |
|
11 | + * so not a very useful function at all except that it adds familiarity PLUS filtering based off of the entire template part name |
|
12 | + * |
|
13 | + * @param string $slug The slug name for the generic template. |
|
14 | + * @param string $name The name of the specialised template. |
|
15 | + * @return string the html output for the formatted money value |
|
16 | + */ |
|
17 | + function espresso_get_template_part($slug = null, $name = null) |
|
18 | + { |
|
19 | + EEH_Template::get_template_part($slug, $name); |
|
20 | + } |
|
21 | 21 | } |
22 | 22 | |
23 | 23 | |
24 | 24 | if (! function_exists('espresso_get_object_css_class')) { |
25 | - /** |
|
26 | - * espresso_get_object_css_class - attempts to generate a css class based on the type of EE object passed |
|
27 | - * |
|
28 | - * @param EE_Base_Class $object the EE object the css class is being generated for |
|
29 | - * @param string $prefix added to the beginning of the generated class |
|
30 | - * @param string $suffix added to the end of the generated class |
|
31 | - * @return string |
|
32 | - */ |
|
33 | - function espresso_get_object_css_class($object = null, $prefix = '', $suffix = '') |
|
34 | - { |
|
35 | - return EEH_Template::get_object_css_class($object, $prefix, $suffix); |
|
36 | - } |
|
25 | + /** |
|
26 | + * espresso_get_object_css_class - attempts to generate a css class based on the type of EE object passed |
|
27 | + * |
|
28 | + * @param EE_Base_Class $object the EE object the css class is being generated for |
|
29 | + * @param string $prefix added to the beginning of the generated class |
|
30 | + * @param string $suffix added to the end of the generated class |
|
31 | + * @return string |
|
32 | + */ |
|
33 | + function espresso_get_object_css_class($object = null, $prefix = '', $suffix = '') |
|
34 | + { |
|
35 | + return EEH_Template::get_object_css_class($object, $prefix, $suffix); |
|
36 | + } |
|
37 | 37 | } |
38 | 38 | |
39 | 39 | |
@@ -48,672 +48,672 @@ discard block |
||
48 | 48 | class EEH_Template |
49 | 49 | { |
50 | 50 | |
51 | - private static $_espresso_themes = array(); |
|
52 | - |
|
53 | - |
|
54 | - /** |
|
55 | - * is_espresso_theme - returns TRUE or FALSE on whether the currently active WP theme is an espresso theme |
|
56 | - * |
|
57 | - * @return boolean |
|
58 | - */ |
|
59 | - public static function is_espresso_theme() |
|
60 | - { |
|
61 | - return wp_get_theme()->get('TextDomain') == 'event_espresso' ? true : false; |
|
62 | - } |
|
63 | - |
|
64 | - /** |
|
65 | - * load_espresso_theme_functions - if current theme is an espresso theme, or uses ee theme template parts, then |
|
66 | - * load it's functions.php file ( if not already loaded ) |
|
67 | - * |
|
68 | - * @return void |
|
69 | - */ |
|
70 | - public static function load_espresso_theme_functions() |
|
71 | - { |
|
72 | - if (! defined('EE_THEME_FUNCTIONS_LOADED')) { |
|
73 | - if (is_readable(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php')) { |
|
74 | - require_once(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php'); |
|
75 | - } |
|
76 | - } |
|
77 | - } |
|
78 | - |
|
79 | - |
|
80 | - /** |
|
81 | - * get_espresso_themes - returns an array of Espresso Child themes located in the /templates/ directory |
|
82 | - * |
|
83 | - * @return array |
|
84 | - */ |
|
85 | - public static function get_espresso_themes() |
|
86 | - { |
|
87 | - if (empty(EEH_Template::$_espresso_themes)) { |
|
88 | - $espresso_themes = glob(EE_PUBLIC . '*', GLOB_ONLYDIR); |
|
89 | - if (empty($espresso_themes)) { |
|
90 | - return array(); |
|
91 | - } |
|
92 | - if (($key = array_search('global_assets', $espresso_themes)) !== false) { |
|
93 | - unset($espresso_themes[ $key ]); |
|
94 | - } |
|
95 | - EEH_Template::$_espresso_themes = array(); |
|
96 | - foreach ($espresso_themes as $espresso_theme) { |
|
97 | - EEH_Template::$_espresso_themes[ basename($espresso_theme) ] = $espresso_theme; |
|
98 | - } |
|
99 | - } |
|
100 | - return EEH_Template::$_espresso_themes; |
|
101 | - } |
|
102 | - |
|
103 | - |
|
104 | - /** |
|
105 | - * EEH_Template::get_template_part |
|
106 | - * basically a copy of the WordPress get_template_part() function but uses EEH_Template::locate_template() instead, |
|
107 | - * and doesn't add base versions of files so not a very useful function at all except that it adds familiarity PLUS |
|
108 | - * filtering based off of the entire template part name |
|
109 | - * |
|
110 | - * @param string $slug The slug name for the generic template. |
|
111 | - * @param string $name The name of the specialised template. |
|
112 | - * @param array $template_args |
|
113 | - * @param bool $return_string |
|
114 | - * @return string the html output for the formatted money value |
|
115 | - */ |
|
116 | - public static function get_template_part( |
|
117 | - $slug = null, |
|
118 | - $name = null, |
|
119 | - $template_args = array(), |
|
120 | - $return_string = false |
|
121 | - ) { |
|
122 | - do_action("get_template_part_{$slug}-{$name}", $slug, $name); |
|
123 | - $templates = array(); |
|
124 | - $name = (string) $name; |
|
125 | - if ($name != '') { |
|
126 | - $templates[] = "{$slug}-{$name}.php"; |
|
127 | - } |
|
128 | - // allow template parts to be turned off via something like: add_filter( 'FHEE__content_espresso_events_tickets_template__display_datetimes', '__return_false' ); |
|
129 | - if (apply_filters("FHEE__EEH_Template__get_template_part__display__{$slug}_{$name}", true)) { |
|
130 | - EEH_Template::locate_template($templates, $template_args, true, $return_string); |
|
131 | - } |
|
132 | - } |
|
133 | - |
|
134 | - |
|
135 | - /** |
|
136 | - * locate_template |
|
137 | - * locate a template file by looking in the following places, in the following order: |
|
138 | - * <server path up to>/wp-content/themes/<current active WordPress theme>/ |
|
139 | - * <assumed full absolute server path> |
|
140 | - * <server path up to>/wp-content/uploads/espresso/templates/<current EE theme>/ |
|
141 | - * <server path up to>/wp-content/uploads/espresso/templates/ |
|
142 | - * <server path up to>/wp-content/plugins/<EE4 folder>/public/<current EE theme>/ |
|
143 | - * <server path up to>/wp-content/plugins/<EE4 folder>/core/templates/<current EE theme>/ |
|
144 | - * <server path up to>/wp-content/plugins/<EE4 folder>/ |
|
145 | - * as soon as the template is found in one of these locations, it will be returned or loaded |
|
146 | - * Example: |
|
147 | - * You are using the WordPress Twenty Sixteen theme, |
|
148 | - * and you want to customize the "some-event.template.php" template, |
|
149 | - * which is located in the "/relative/path/to/" folder relative to the main EE plugin folder. |
|
150 | - * Assuming WP is installed on your server in the "/home/public_html/" folder, |
|
151 | - * EEH_Template::locate_template() will look at the following paths in order until the template is found: |
|
152 | - * /home/public_html/wp-content/themes/twentysixteen/some-event.template.php |
|
153 | - * /relative/path/to/some-event.template.php |
|
154 | - * /home/public_html/wp-content/uploads/espresso/templates/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
155 | - * /home/public_html/wp-content/uploads/espresso/templates/relative/path/to/some-event.template.php |
|
156 | - * /home/public_html/wp-content/plugins/event-espresso-core-reg/public/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
157 | - * /home/public_html/wp-content/plugins/event-espresso-core-reg/core/templates/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
158 | - * /home/public_html/wp-content/plugins/event-espresso-core-reg/relative/path/to/some-event.template.php |
|
159 | - * Had you passed an absolute path to your template that was in some other location, |
|
160 | - * ie: "/absolute/path/to/some-event.template.php" |
|
161 | - * then the search would have been : |
|
162 | - * /home/public_html/wp-content/themes/twentysixteen/some-event.template.php |
|
163 | - * /absolute/path/to/some-event.template.php |
|
164 | - * and stopped there upon finding it in the second location |
|
165 | - * |
|
166 | - * @param array|string $templates array of template file names including extension (or just a single string) |
|
167 | - * @param array $template_args an array of arguments to be extracted for use in the template |
|
168 | - * @param boolean $load whether to pass the located template path on to the |
|
169 | - * EEH_Template::display_template() method or simply return it |
|
170 | - * @param boolean $return_string whether to send output immediately to screen, or capture and return as a |
|
171 | - * string |
|
172 | - * @param boolean $check_if_custom If TRUE, this flags this method to return boolean for whether this will |
|
173 | - * generate a custom template or not. Used in places where you don't actually |
|
174 | - * load the template, you just want to know if there's a custom version of it. |
|
175 | - * @return mixed |
|
176 | - * @throws DomainException |
|
177 | - * @throws InvalidArgumentException |
|
178 | - * @throws InvalidDataTypeException |
|
179 | - * @throws InvalidInterfaceException |
|
180 | - */ |
|
181 | - public static function locate_template( |
|
182 | - $templates = array(), |
|
183 | - $template_args = array(), |
|
184 | - $load = true, |
|
185 | - $return_string = true, |
|
186 | - $check_if_custom = false |
|
187 | - ) { |
|
188 | - // first use WP locate_template to check for template in the current theme folder |
|
189 | - $template_path = locate_template($templates); |
|
190 | - |
|
191 | - if ($check_if_custom && ! empty($template_path)) { |
|
192 | - return true; |
|
193 | - } |
|
194 | - |
|
195 | - // not in the theme |
|
196 | - if (empty($template_path)) { |
|
197 | - // not even a template to look for ? |
|
198 | - if (empty($templates)) { |
|
199 | - // get post_type |
|
200 | - $post_type = EE_Registry::instance()->REQ->get('post_type'); |
|
201 | - /** @var EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions $custom_post_types */ |
|
202 | - $custom_post_types = LoaderFactory::getLoader()->getShared( |
|
203 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' |
|
204 | - ); |
|
205 | - // get array of EE Custom Post Types |
|
206 | - $EE_CPTs = $custom_post_types->getDefinitions(); |
|
207 | - // build template name based on request |
|
208 | - if (isset($EE_CPTs[ $post_type ])) { |
|
209 | - $archive_or_single = is_archive() ? 'archive' : ''; |
|
210 | - $archive_or_single = is_single() ? 'single' : $archive_or_single; |
|
211 | - $templates = $archive_or_single . '-' . $post_type . '.php'; |
|
212 | - } |
|
213 | - } |
|
214 | - // currently active EE template theme |
|
215 | - $current_theme = EE_Config::get_current_theme(); |
|
216 | - |
|
217 | - // array of paths to folders that may contain templates |
|
218 | - $template_folder_paths = array( |
|
219 | - // first check the /wp-content/uploads/espresso/templates/(current EE theme)/ folder for an EE theme template file |
|
220 | - EVENT_ESPRESSO_TEMPLATE_DIR . $current_theme, |
|
221 | - // then in the root of the /wp-content/uploads/espresso/templates/ folder |
|
222 | - EVENT_ESPRESSO_TEMPLATE_DIR, |
|
223 | - ); |
|
224 | - |
|
225 | - // add core plugin folders for checking only if we're not $check_if_custom |
|
226 | - if (! $check_if_custom) { |
|
227 | - $core_paths = array( |
|
228 | - // in the /wp-content/plugins/(EE4 folder)/public/(current EE theme)/ folder within the plugin |
|
229 | - EE_PUBLIC . $current_theme, |
|
230 | - // in the /wp-content/plugins/(EE4 folder)/core/templates/(current EE theme)/ folder within the plugin |
|
231 | - EE_TEMPLATES . $current_theme, |
|
232 | - // or maybe relative from the plugin root: /wp-content/plugins/(EE4 folder)/ |
|
233 | - EE_PLUGIN_DIR_PATH, |
|
234 | - ); |
|
235 | - $template_folder_paths = array_merge($template_folder_paths, $core_paths); |
|
236 | - } |
|
237 | - |
|
238 | - // now filter that array |
|
239 | - $template_folder_paths = apply_filters( |
|
240 | - 'FHEE__EEH_Template__locate_template__template_folder_paths', |
|
241 | - $template_folder_paths |
|
242 | - ); |
|
243 | - $templates = is_array($templates) ? $templates : array($templates); |
|
244 | - $template_folder_paths = is_array($template_folder_paths) ? $template_folder_paths : array($template_folder_paths); |
|
245 | - // array to hold all possible template paths |
|
246 | - $full_template_paths = array(); |
|
247 | - |
|
248 | - // loop through $templates |
|
249 | - foreach ($templates as $template) { |
|
250 | - // normalize directory separators |
|
251 | - $template = EEH_File::standardise_directory_separators($template); |
|
252 | - $file_name = basename($template); |
|
253 | - $template_path_minus_file_name = substr($template, 0, (strlen($file_name) * -1)); |
|
254 | - // while looping through all template folder paths |
|
255 | - foreach ($template_folder_paths as $template_folder_path) { |
|
256 | - // normalize directory separators |
|
257 | - $template_folder_path = EEH_File::standardise_directory_separators($template_folder_path); |
|
258 | - // determine if any common base path exists between the two paths |
|
259 | - $common_base_path = EEH_Template::_find_common_base_path( |
|
260 | - array($template_folder_path, $template_path_minus_file_name) |
|
261 | - ); |
|
262 | - if ($common_base_path !== '') { |
|
263 | - // both paths have a common base, so just tack the filename onto our search path |
|
264 | - $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $file_name; |
|
265 | - } else { |
|
266 | - // no common base path, so let's just concatenate |
|
267 | - $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $template; |
|
268 | - } |
|
269 | - // build up our template locations array by adding our resolved paths |
|
270 | - $full_template_paths[] = $resolved_path; |
|
271 | - } |
|
272 | - // if $template is an absolute path, then we'll tack it onto the start of our array so that it gets searched first |
|
273 | - array_unshift($full_template_paths, $template); |
|
274 | - // path to the directory of the current theme: /wp-content/themes/(current WP theme)/ |
|
275 | - array_unshift($full_template_paths, get_stylesheet_directory() . '/' . $file_name); |
|
276 | - } |
|
277 | - // filter final array of full template paths |
|
278 | - $full_template_paths = apply_filters( |
|
279 | - 'FHEE__EEH_Template__locate_template__full_template_paths', |
|
280 | - $full_template_paths, |
|
281 | - $file_name |
|
282 | - ); |
|
283 | - // now loop through our final array of template location paths and check each location |
|
284 | - foreach ((array) $full_template_paths as $full_template_path) { |
|
285 | - if (is_readable($full_template_path)) { |
|
286 | - $template_path = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, $full_template_path); |
|
287 | - break; |
|
288 | - } |
|
289 | - } |
|
290 | - } |
|
291 | - |
|
292 | - // hook that can be used to display the full template path that will be used |
|
293 | - do_action('AHEE__EEH_Template__locate_template__full_template_path', $template_path); |
|
294 | - |
|
295 | - // if we got it and you want to see it... |
|
296 | - if ($template_path && $load && ! $check_if_custom) { |
|
297 | - if ($return_string) { |
|
298 | - return EEH_Template::display_template($template_path, $template_args, true); |
|
299 | - } else { |
|
300 | - EEH_Template::display_template($template_path, $template_args, false); |
|
301 | - } |
|
302 | - } |
|
303 | - return $check_if_custom && ! empty($template_path) ? true : $template_path; |
|
304 | - } |
|
305 | - |
|
306 | - |
|
307 | - /** |
|
308 | - * _find_common_base_path |
|
309 | - * given two paths, this determines if there is a common base path between the two |
|
310 | - * |
|
311 | - * @param array $paths |
|
312 | - * @return string |
|
313 | - */ |
|
314 | - protected static function _find_common_base_path($paths) |
|
315 | - { |
|
316 | - $last_offset = 0; |
|
317 | - $common_base_path = ''; |
|
318 | - while (($index = strpos($paths[0], '/', $last_offset)) !== false) { |
|
319 | - $dir_length = $index - $last_offset + 1; |
|
320 | - $directory = substr($paths[0], $last_offset, $dir_length); |
|
321 | - foreach ($paths as $path) { |
|
322 | - if (substr($path, $last_offset, $dir_length) != $directory) { |
|
323 | - return $common_base_path; |
|
324 | - } |
|
325 | - } |
|
326 | - $common_base_path .= $directory; |
|
327 | - $last_offset = $index + 1; |
|
328 | - } |
|
329 | - return substr($common_base_path, 0, -1); |
|
330 | - } |
|
331 | - |
|
332 | - |
|
333 | - /** |
|
334 | - * load and display a template |
|
335 | - * |
|
336 | - * @param bool|string $template_path server path to the file to be loaded, including file name and extension |
|
337 | - * @param array $template_args an array of arguments to be extracted for use in the template |
|
338 | - * @param boolean $return_string whether to send output immediately to screen, or capture and return as a string |
|
339 | - * @param bool $throw_exceptions if set to true, will throw an exception if the template is either |
|
340 | - * not found or is not readable |
|
341 | - * @return mixed string |
|
342 | - * @throws \DomainException |
|
343 | - */ |
|
344 | - public static function display_template( |
|
345 | - $template_path = false, |
|
346 | - $template_args = array(), |
|
347 | - $return_string = false, |
|
348 | - $throw_exceptions = false |
|
349 | - ) { |
|
350 | - |
|
351 | - /** |
|
352 | - * These two filters are intended for last minute changes to templates being loaded and/or template arg |
|
353 | - * modifications. NOTE... modifying these things can cause breakage as most templates running through |
|
354 | - * the display_template method are templates we DON'T want modified (usually because of js |
|
355 | - * dependencies etc). So unless you know what you are doing, do NOT filter templates or template args |
|
356 | - * using this. |
|
357 | - * |
|
358 | - * @since 4.6.0 |
|
359 | - */ |
|
360 | - $template_path = (string) apply_filters('FHEE__EEH_Template__display_template__template_path', $template_path); |
|
361 | - $template_args = (array) apply_filters('FHEE__EEH_Template__display_template__template_args', $template_args); |
|
362 | - |
|
363 | - // you gimme nuttin - YOU GET NUTTIN !! |
|
364 | - if (! $template_path || ! is_readable($template_path)) { |
|
365 | - return ''; |
|
366 | - } |
|
367 | - // if $template_args are not in an array, then make it so |
|
368 | - if (! is_array($template_args) && ! is_object($template_args)) { |
|
369 | - $template_args = array($template_args); |
|
370 | - } |
|
371 | - extract($template_args, EXTR_SKIP); |
|
372 | - // ignore whether template is accessible ? |
|
373 | - if ($throw_exceptions && ! is_readable($template_path)) { |
|
374 | - throw new \DomainException( |
|
375 | - esc_html__( |
|
376 | - 'Invalid, unreadable, or missing file.', |
|
377 | - 'event_espresso' |
|
378 | - ) |
|
379 | - ); |
|
380 | - } |
|
381 | - |
|
382 | - |
|
383 | - if ($return_string) { |
|
384 | - // because we want to return a string, we are going to capture the output |
|
385 | - ob_start(); |
|
386 | - include($template_path); |
|
387 | - return ob_get_clean(); |
|
388 | - } else { |
|
389 | - include($template_path); |
|
390 | - } |
|
391 | - return ''; |
|
392 | - } |
|
393 | - |
|
394 | - |
|
395 | - /** |
|
396 | - * get_object_css_class - attempts to generate a css class based on the type of EE object passed |
|
397 | - * |
|
398 | - * @param EE_Base_Class $object the EE object the css class is being generated for |
|
399 | - * @param string $prefix added to the beginning of the generated class |
|
400 | - * @param string $suffix added to the end of the generated class |
|
401 | - * @return string |
|
402 | - */ |
|
403 | - public static function get_object_css_class($object = null, $prefix = '', $suffix = '') |
|
404 | - { |
|
405 | - // in the beginning... |
|
406 | - $prefix = ! empty($prefix) ? rtrim($prefix, '-') . '-' : ''; |
|
407 | - // da muddle |
|
408 | - $class = ''; |
|
409 | - // the end |
|
410 | - $suffix = ! empty($suffix) ? '-' . ltrim($suffix, '-') : ''; |
|
411 | - // is the passed object an EE object ? |
|
412 | - if ($object instanceof EE_Base_Class) { |
|
413 | - // grab the exact type of object |
|
414 | - $obj_class = get_class($object); |
|
415 | - // depending on the type of object... |
|
416 | - switch ($obj_class) { |
|
417 | - // no specifics just yet... |
|
418 | - default: |
|
419 | - $class = strtolower(str_replace('_', '-', $obj_class)); |
|
420 | - $class .= method_exists($obj_class, 'name') ? '-' . sanitize_title($object->name()) : ''; |
|
421 | - } |
|
422 | - } |
|
423 | - return $prefix . $class . $suffix; |
|
424 | - } |
|
425 | - |
|
426 | - |
|
427 | - |
|
428 | - /** |
|
429 | - * EEH_Template::format_currency |
|
430 | - * This helper takes a raw float value and formats it according to the default config country currency settings, or |
|
431 | - * the country currency settings from the supplied country ISO code |
|
432 | - * |
|
433 | - * @param float $amount raw money value |
|
434 | - * @param boolean $return_raw whether to return the formatted float value only with no currency sign or code |
|
435 | - * @param boolean $display_code whether to display the country code (USD). Default = TRUE |
|
436 | - * @param string $CNT_ISO 2 letter ISO code for a country |
|
437 | - * @param string $cur_code_span_class |
|
438 | - * @return string the html output for the formatted money value |
|
439 | - * @throws \EE_Error |
|
440 | - */ |
|
441 | - public static function format_currency( |
|
442 | - $amount = null, |
|
443 | - $return_raw = false, |
|
444 | - $display_code = true, |
|
445 | - $CNT_ISO = '', |
|
446 | - $cur_code_span_class = 'currency-code' |
|
447 | - ) { |
|
448 | - // ensure amount was received |
|
449 | - if ($amount === null) { |
|
450 | - $msg = __('In order to format currency, an amount needs to be passed.', 'event_espresso'); |
|
451 | - EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__); |
|
452 | - return ''; |
|
453 | - } |
|
454 | - // ensure amount is float |
|
455 | - $amount = apply_filters('FHEE__EEH_Template__format_currency__raw_amount', (float) $amount); |
|
456 | - $CNT_ISO = apply_filters('FHEE__EEH_Template__format_currency__CNT_ISO', $CNT_ISO, $amount); |
|
457 | - // filter raw amount (allows 0.00 to be changed to "free" for example) |
|
458 | - $amount_formatted = apply_filters('FHEE__EEH_Template__format_currency__amount', $amount, $return_raw); |
|
459 | - // still a number or was amount converted to a string like "free" ? |
|
460 | - if (is_float($amount_formatted)) { |
|
461 | - // was a country ISO code passed ? if so generate currency config object for that country |
|
462 | - $mny = $CNT_ISO !== '' ? new EE_Currency_Config($CNT_ISO) : null; |
|
463 | - // verify results |
|
464 | - if (! $mny instanceof EE_Currency_Config) { |
|
465 | - // set default config country currency settings |
|
466 | - $mny = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config |
|
467 | - ? EE_Registry::instance()->CFG->currency |
|
468 | - : new EE_Currency_Config(); |
|
469 | - } |
|
470 | - // format float |
|
471 | - $amount_formatted = number_format($amount, $mny->dec_plc, $mny->dec_mrk, $mny->thsnds); |
|
472 | - // add formatting ? |
|
473 | - if (! $return_raw) { |
|
474 | - // add currency sign |
|
475 | - if ($mny->sign_b4) { |
|
476 | - if ($amount >= 0) { |
|
477 | - $amount_formatted = $mny->sign . $amount_formatted; |
|
478 | - } else { |
|
479 | - $amount_formatted = '-' . $mny->sign . str_replace('-', '', $amount_formatted); |
|
480 | - } |
|
481 | - } else { |
|
482 | - $amount_formatted = $amount_formatted . $mny->sign; |
|
483 | - } |
|
484 | - |
|
485 | - // filter to allow global setting of display_code |
|
486 | - $display_code = apply_filters('FHEE__EEH_Template__format_currency__display_code', $display_code); |
|
487 | - |
|
488 | - // add currency code ? |
|
489 | - $amount_formatted = $display_code ? $amount_formatted . ' <span class="' . $cur_code_span_class . '">(' . $mny->code . ')</span>' : $amount_formatted; |
|
490 | - } |
|
491 | - // filter results |
|
492 | - $amount_formatted = apply_filters( |
|
493 | - 'FHEE__EEH_Template__format_currency__amount_formatted', |
|
494 | - $amount_formatted, |
|
495 | - $mny, |
|
496 | - $return_raw |
|
497 | - ); |
|
498 | - } |
|
499 | - // clean up vars |
|
500 | - unset($mny); |
|
501 | - // return formatted currency amount |
|
502 | - return $amount_formatted; |
|
503 | - } |
|
504 | - |
|
505 | - |
|
506 | - /** |
|
507 | - * This function is used for outputting the localized label for a given status id in the schema requested (and |
|
508 | - * possibly plural). The intended use of this function is only for cases where wanting a label outside of a |
|
509 | - * related status model or model object (i.e. in documentation etc.) |
|
510 | - * |
|
511 | - * @param string $status_id Status ID matching a registered status in the esp_status table. If there is no |
|
512 | - * match, then 'Unknown' will be returned. |
|
513 | - * @param boolean $plural Whether to return plural or not |
|
514 | - * @param string $schema 'UPPER', 'lower', or 'Sentence' |
|
515 | - * @return string The localized label for the status id. |
|
516 | - */ |
|
517 | - public static function pretty_status($status_id, $plural = false, $schema = 'upper') |
|
518 | - { |
|
519 | - /** @type EEM_Status $EEM_Status */ |
|
520 | - $EEM_Status = EE_Registry::instance()->load_model('Status'); |
|
521 | - $status = $EEM_Status->localized_status( |
|
522 | - array($status_id => __('unknown', 'event_espresso')), |
|
523 | - $plural, |
|
524 | - $schema |
|
525 | - ); |
|
526 | - return $status[ $status_id ]; |
|
527 | - } |
|
528 | - |
|
529 | - |
|
530 | - /** |
|
531 | - * This helper just returns a button or link for the given parameters |
|
532 | - * |
|
533 | - * @param string $url the url for the link, note that `esc_url` will be called on it |
|
534 | - * @param string $label What is the label you want displayed for the button |
|
535 | - * @param string $class what class is used for the button (defaults to 'button-primary') |
|
536 | - * @param string $icon |
|
537 | - * @param string $title |
|
538 | - * @return string the html output for the button |
|
539 | - */ |
|
540 | - public static function get_button_or_link($url, $label, $class = 'button-primary', $icon = '', $title = '') |
|
541 | - { |
|
542 | - $icon_html = ''; |
|
543 | - if (! empty($icon)) { |
|
544 | - $dashicons = preg_split("(ee-icon |dashicons )", $icon); |
|
545 | - $dashicons = array_filter($dashicons); |
|
546 | - $count = count($dashicons); |
|
547 | - $icon_html .= $count > 1 ? '<span class="ee-composite-dashicon">' : ''; |
|
548 | - foreach ($dashicons as $dashicon) { |
|
549 | - $type = strpos($dashicon, 'ee-icon') !== false ? 'ee-icon ' : 'dashicons '; |
|
550 | - $icon_html .= '<span class="' . $type . $dashicon . '"></span>'; |
|
551 | - } |
|
552 | - $icon_html .= $count > 1 ? '</span>' : ''; |
|
553 | - } |
|
554 | - $label = ! empty($icon) ? $icon_html . $label : $label; |
|
555 | - $button = '<a id="' . sanitize_title_with_dashes($label) . '" href="' . esc_url($url) . '" class="' . $class . '" title="' . $title . '">' . $label . '</a>'; |
|
556 | - return $button; |
|
557 | - } |
|
558 | - |
|
559 | - |
|
560 | - /** |
|
561 | - * This returns a generated link that will load the related help tab on admin pages. |
|
562 | - * |
|
563 | - * @param string $help_tab_id the id for the connected help tab |
|
564 | - * @param bool|string $page The page identifier for the page the help tab is on |
|
565 | - * @param bool|string $action The action (route) for the admin page the help tab is on. |
|
566 | - * @param bool|string $icon_style (optional) include css class for the style you want to use for the help icon. |
|
567 | - * @param bool|string $help_text (optional) send help text you want to use for the link if default not to be used |
|
568 | - * @return string generated link |
|
569 | - */ |
|
570 | - public static function get_help_tab_link( |
|
571 | - $help_tab_id, |
|
572 | - $page = false, |
|
573 | - $action = false, |
|
574 | - $icon_style = false, |
|
575 | - $help_text = false |
|
576 | - ) { |
|
577 | - |
|
578 | - if (! $page) { |
|
579 | - $page = isset($_REQUEST['page']) && ! empty($_REQUEST['page']) ? sanitize_key($_REQUEST['page']) : $page; |
|
580 | - } |
|
581 | - |
|
582 | - if (! $action) { |
|
583 | - $action = isset($_REQUEST['action']) && ! empty($_REQUEST['action']) ? sanitize_key($_REQUEST['action']) : $action; |
|
584 | - } |
|
585 | - |
|
586 | - $action = empty($action) ? 'default' : $action; |
|
587 | - |
|
588 | - |
|
589 | - $help_tab_lnk = $page . '-' . $action . '-' . $help_tab_id; |
|
590 | - $icon = ! $icon_style ? ' dashicons-editor-help' : $icon_style; |
|
591 | - $help_text = ! $help_text ? '' : $help_text; |
|
592 | - return '<a id="' . $help_tab_lnk . '" class="ee-clickable dashicons espresso-help-tab-lnk ee-icon-size-22' . $icon . '" title="' . esc_attr__( |
|
593 | - 'Click to open the \'Help\' tab for more information about this feature.', |
|
594 | - 'event_espresso' |
|
595 | - ) . '" > ' . $help_text . ' </a>'; |
|
596 | - } |
|
597 | - |
|
598 | - |
|
599 | - /** |
|
600 | - * This helper generates the html structure for the jquery joyride plugin with the given params. |
|
601 | - * |
|
602 | - * @link http://zurb.com/playground/jquery-joyride-feature-tour-plugin |
|
603 | - * @see EE_Admin_Page->_stop_callback() for the construct expected for the $stops param. |
|
604 | - * @param EE_Help_Tour |
|
605 | - * @return string html |
|
606 | - */ |
|
607 | - public static function help_tour_stops_generator(EE_Help_Tour $tour) |
|
608 | - { |
|
609 | - $id = $tour->get_slug(); |
|
610 | - $stops = $tour->get_stops(); |
|
611 | - |
|
612 | - $content = '<ol style="display:none" id="' . $id . '">'; |
|
613 | - |
|
614 | - foreach ($stops as $stop) { |
|
615 | - $data_id = ! empty($stop['id']) ? ' data-id="' . $stop['id'] . '"' : ''; |
|
616 | - $data_class = empty($data_id) && ! empty($stop['class']) ? ' data-class="' . $stop['class'] . '"' : ''; |
|
617 | - |
|
618 | - // if container is set to modal then let's make sure we set the options accordingly |
|
619 | - if (empty($data_id) && empty($data_class)) { |
|
620 | - $stop['options']['modal'] = true; |
|
621 | - $stop['options']['expose'] = true; |
|
622 | - } |
|
623 | - |
|
624 | - $custom_class = ! empty($stop['custom_class']) ? ' class="' . $stop['custom_class'] . '"' : ''; |
|
625 | - $button_text = ! empty($stop['button_text']) ? ' data-button="' . $stop['button_text'] . '"' : ''; |
|
626 | - $inner_content = isset($stop['content']) ? $stop['content'] : ''; |
|
627 | - |
|
628 | - // options |
|
629 | - if (isset($stop['options']) && is_array($stop['options'])) { |
|
630 | - $options = ' data-options="'; |
|
631 | - foreach ($stop['options'] as $option => $value) { |
|
632 | - $options .= $option . ':' . $value . ';'; |
|
633 | - } |
|
634 | - $options .= '"'; |
|
635 | - } else { |
|
636 | - $options = ''; |
|
637 | - } |
|
638 | - |
|
639 | - // let's put all together |
|
640 | - $content .= '<li' . $data_id . $data_class . $custom_class . $button_text . $options . '>' . $inner_content . '</li>'; |
|
641 | - } |
|
642 | - |
|
643 | - $content .= '</ol>'; |
|
644 | - return $content; |
|
645 | - } |
|
646 | - |
|
647 | - |
|
648 | - /** |
|
649 | - * This is a helper method to generate a status legend for a given status array. |
|
650 | - * Note this will only work if the incoming statuses have a key in the EEM_Status->localized_status() methods |
|
651 | - * status_array. |
|
652 | - * |
|
653 | - * @param array $status_array array of statuses that will make up the legend. In format: |
|
654 | - * array( |
|
655 | - * 'status_item' => 'status_name' |
|
656 | - * ) |
|
657 | - * @param string $active_status This is used to indicate what the active status is IF that is to be highlighted in |
|
658 | - * the legend. |
|
659 | - * @throws EE_Error |
|
660 | - * @return string html structure for status. |
|
661 | - */ |
|
662 | - public static function status_legend($status_array, $active_status = '') |
|
663 | - { |
|
664 | - if (! is_array($status_array)) { |
|
665 | - throw new EE_Error(esc_html__( |
|
666 | - 'The EEH_Template::status_legend helper required the incoming status_array argument to be an array!', |
|
667 | - 'event_espresso' |
|
668 | - )); |
|
669 | - } |
|
670 | - |
|
671 | - $setup_array = array(); |
|
672 | - foreach ($status_array as $item => $status) { |
|
673 | - $setup_array[ $item ] = array( |
|
674 | - 'class' => 'ee-status-legend ee-status-legend-' . $status, |
|
675 | - 'desc' => EEH_Template::pretty_status($status, false, 'sentence'), |
|
676 | - 'status' => $status, |
|
677 | - ); |
|
678 | - } |
|
679 | - |
|
680 | - $content = '<div class="ee-list-table-legend-container">' . "\n"; |
|
681 | - $content .= '<h4 class="status-legend-title">' . esc_html__('Status Legend', 'event_espresso') . '</h4>' . "\n"; |
|
682 | - $content .= '<dl class="ee-list-table-legend">' . "\n\t"; |
|
683 | - foreach ($setup_array as $item => $details) { |
|
684 | - $active_class = $active_status == $details['status'] ? ' class="ee-is-active-status"' : ''; |
|
685 | - $content .= '<dt id="ee-legend-item-tooltip-' . $item . '"' . $active_class . '>' . "\n\t\t"; |
|
686 | - $content .= '<span class="ee-legend-item-wrap"><span class="' . $details['class'] . '"></span></span>' . "\n\t\t"; |
|
687 | - $content .= '<span class="ee-legend-description">' . $details['desc'] . '</span>' . "\n\t"; |
|
688 | - $content .= '</dt>' . "\n"; |
|
689 | - } |
|
690 | - $content .= '</dl>' . "\n"; |
|
691 | - $content .= '</div>' . "\n"; |
|
692 | - return $content; |
|
693 | - } |
|
694 | - |
|
695 | - |
|
696 | - /** |
|
697 | - * Gets HTML for laying out a deeply-nested array (and objects) in a format |
|
698 | - * that's nice for presenting in the wp admin |
|
699 | - * |
|
700 | - * @param mixed $data |
|
701 | - * @return string |
|
702 | - */ |
|
703 | - public static function layout_array_as_table($data) |
|
704 | - { |
|
705 | - if (is_object($data) || $data instanceof __PHP_Incomplete_Class) { |
|
706 | - $data = (array) $data; |
|
707 | - } |
|
708 | - ob_start(); |
|
709 | - if (is_array($data)) { |
|
710 | - if (EEH_Array::is_associative_array($data)) { |
|
711 | - ?> |
|
51 | + private static $_espresso_themes = array(); |
|
52 | + |
|
53 | + |
|
54 | + /** |
|
55 | + * is_espresso_theme - returns TRUE or FALSE on whether the currently active WP theme is an espresso theme |
|
56 | + * |
|
57 | + * @return boolean |
|
58 | + */ |
|
59 | + public static function is_espresso_theme() |
|
60 | + { |
|
61 | + return wp_get_theme()->get('TextDomain') == 'event_espresso' ? true : false; |
|
62 | + } |
|
63 | + |
|
64 | + /** |
|
65 | + * load_espresso_theme_functions - if current theme is an espresso theme, or uses ee theme template parts, then |
|
66 | + * load it's functions.php file ( if not already loaded ) |
|
67 | + * |
|
68 | + * @return void |
|
69 | + */ |
|
70 | + public static function load_espresso_theme_functions() |
|
71 | + { |
|
72 | + if (! defined('EE_THEME_FUNCTIONS_LOADED')) { |
|
73 | + if (is_readable(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php')) { |
|
74 | + require_once(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php'); |
|
75 | + } |
|
76 | + } |
|
77 | + } |
|
78 | + |
|
79 | + |
|
80 | + /** |
|
81 | + * get_espresso_themes - returns an array of Espresso Child themes located in the /templates/ directory |
|
82 | + * |
|
83 | + * @return array |
|
84 | + */ |
|
85 | + public static function get_espresso_themes() |
|
86 | + { |
|
87 | + if (empty(EEH_Template::$_espresso_themes)) { |
|
88 | + $espresso_themes = glob(EE_PUBLIC . '*', GLOB_ONLYDIR); |
|
89 | + if (empty($espresso_themes)) { |
|
90 | + return array(); |
|
91 | + } |
|
92 | + if (($key = array_search('global_assets', $espresso_themes)) !== false) { |
|
93 | + unset($espresso_themes[ $key ]); |
|
94 | + } |
|
95 | + EEH_Template::$_espresso_themes = array(); |
|
96 | + foreach ($espresso_themes as $espresso_theme) { |
|
97 | + EEH_Template::$_espresso_themes[ basename($espresso_theme) ] = $espresso_theme; |
|
98 | + } |
|
99 | + } |
|
100 | + return EEH_Template::$_espresso_themes; |
|
101 | + } |
|
102 | + |
|
103 | + |
|
104 | + /** |
|
105 | + * EEH_Template::get_template_part |
|
106 | + * basically a copy of the WordPress get_template_part() function but uses EEH_Template::locate_template() instead, |
|
107 | + * and doesn't add base versions of files so not a very useful function at all except that it adds familiarity PLUS |
|
108 | + * filtering based off of the entire template part name |
|
109 | + * |
|
110 | + * @param string $slug The slug name for the generic template. |
|
111 | + * @param string $name The name of the specialised template. |
|
112 | + * @param array $template_args |
|
113 | + * @param bool $return_string |
|
114 | + * @return string the html output for the formatted money value |
|
115 | + */ |
|
116 | + public static function get_template_part( |
|
117 | + $slug = null, |
|
118 | + $name = null, |
|
119 | + $template_args = array(), |
|
120 | + $return_string = false |
|
121 | + ) { |
|
122 | + do_action("get_template_part_{$slug}-{$name}", $slug, $name); |
|
123 | + $templates = array(); |
|
124 | + $name = (string) $name; |
|
125 | + if ($name != '') { |
|
126 | + $templates[] = "{$slug}-{$name}.php"; |
|
127 | + } |
|
128 | + // allow template parts to be turned off via something like: add_filter( 'FHEE__content_espresso_events_tickets_template__display_datetimes', '__return_false' ); |
|
129 | + if (apply_filters("FHEE__EEH_Template__get_template_part__display__{$slug}_{$name}", true)) { |
|
130 | + EEH_Template::locate_template($templates, $template_args, true, $return_string); |
|
131 | + } |
|
132 | + } |
|
133 | + |
|
134 | + |
|
135 | + /** |
|
136 | + * locate_template |
|
137 | + * locate a template file by looking in the following places, in the following order: |
|
138 | + * <server path up to>/wp-content/themes/<current active WordPress theme>/ |
|
139 | + * <assumed full absolute server path> |
|
140 | + * <server path up to>/wp-content/uploads/espresso/templates/<current EE theme>/ |
|
141 | + * <server path up to>/wp-content/uploads/espresso/templates/ |
|
142 | + * <server path up to>/wp-content/plugins/<EE4 folder>/public/<current EE theme>/ |
|
143 | + * <server path up to>/wp-content/plugins/<EE4 folder>/core/templates/<current EE theme>/ |
|
144 | + * <server path up to>/wp-content/plugins/<EE4 folder>/ |
|
145 | + * as soon as the template is found in one of these locations, it will be returned or loaded |
|
146 | + * Example: |
|
147 | + * You are using the WordPress Twenty Sixteen theme, |
|
148 | + * and you want to customize the "some-event.template.php" template, |
|
149 | + * which is located in the "/relative/path/to/" folder relative to the main EE plugin folder. |
|
150 | + * Assuming WP is installed on your server in the "/home/public_html/" folder, |
|
151 | + * EEH_Template::locate_template() will look at the following paths in order until the template is found: |
|
152 | + * /home/public_html/wp-content/themes/twentysixteen/some-event.template.php |
|
153 | + * /relative/path/to/some-event.template.php |
|
154 | + * /home/public_html/wp-content/uploads/espresso/templates/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
155 | + * /home/public_html/wp-content/uploads/espresso/templates/relative/path/to/some-event.template.php |
|
156 | + * /home/public_html/wp-content/plugins/event-espresso-core-reg/public/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
157 | + * /home/public_html/wp-content/plugins/event-espresso-core-reg/core/templates/Espresso_Arabica_2014/relative/path/to/some-event.template.php |
|
158 | + * /home/public_html/wp-content/plugins/event-espresso-core-reg/relative/path/to/some-event.template.php |
|
159 | + * Had you passed an absolute path to your template that was in some other location, |
|
160 | + * ie: "/absolute/path/to/some-event.template.php" |
|
161 | + * then the search would have been : |
|
162 | + * /home/public_html/wp-content/themes/twentysixteen/some-event.template.php |
|
163 | + * /absolute/path/to/some-event.template.php |
|
164 | + * and stopped there upon finding it in the second location |
|
165 | + * |
|
166 | + * @param array|string $templates array of template file names including extension (or just a single string) |
|
167 | + * @param array $template_args an array of arguments to be extracted for use in the template |
|
168 | + * @param boolean $load whether to pass the located template path on to the |
|
169 | + * EEH_Template::display_template() method or simply return it |
|
170 | + * @param boolean $return_string whether to send output immediately to screen, or capture and return as a |
|
171 | + * string |
|
172 | + * @param boolean $check_if_custom If TRUE, this flags this method to return boolean for whether this will |
|
173 | + * generate a custom template or not. Used in places where you don't actually |
|
174 | + * load the template, you just want to know if there's a custom version of it. |
|
175 | + * @return mixed |
|
176 | + * @throws DomainException |
|
177 | + * @throws InvalidArgumentException |
|
178 | + * @throws InvalidDataTypeException |
|
179 | + * @throws InvalidInterfaceException |
|
180 | + */ |
|
181 | + public static function locate_template( |
|
182 | + $templates = array(), |
|
183 | + $template_args = array(), |
|
184 | + $load = true, |
|
185 | + $return_string = true, |
|
186 | + $check_if_custom = false |
|
187 | + ) { |
|
188 | + // first use WP locate_template to check for template in the current theme folder |
|
189 | + $template_path = locate_template($templates); |
|
190 | + |
|
191 | + if ($check_if_custom && ! empty($template_path)) { |
|
192 | + return true; |
|
193 | + } |
|
194 | + |
|
195 | + // not in the theme |
|
196 | + if (empty($template_path)) { |
|
197 | + // not even a template to look for ? |
|
198 | + if (empty($templates)) { |
|
199 | + // get post_type |
|
200 | + $post_type = EE_Registry::instance()->REQ->get('post_type'); |
|
201 | + /** @var EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions $custom_post_types */ |
|
202 | + $custom_post_types = LoaderFactory::getLoader()->getShared( |
|
203 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' |
|
204 | + ); |
|
205 | + // get array of EE Custom Post Types |
|
206 | + $EE_CPTs = $custom_post_types->getDefinitions(); |
|
207 | + // build template name based on request |
|
208 | + if (isset($EE_CPTs[ $post_type ])) { |
|
209 | + $archive_or_single = is_archive() ? 'archive' : ''; |
|
210 | + $archive_or_single = is_single() ? 'single' : $archive_or_single; |
|
211 | + $templates = $archive_or_single . '-' . $post_type . '.php'; |
|
212 | + } |
|
213 | + } |
|
214 | + // currently active EE template theme |
|
215 | + $current_theme = EE_Config::get_current_theme(); |
|
216 | + |
|
217 | + // array of paths to folders that may contain templates |
|
218 | + $template_folder_paths = array( |
|
219 | + // first check the /wp-content/uploads/espresso/templates/(current EE theme)/ folder for an EE theme template file |
|
220 | + EVENT_ESPRESSO_TEMPLATE_DIR . $current_theme, |
|
221 | + // then in the root of the /wp-content/uploads/espresso/templates/ folder |
|
222 | + EVENT_ESPRESSO_TEMPLATE_DIR, |
|
223 | + ); |
|
224 | + |
|
225 | + // add core plugin folders for checking only if we're not $check_if_custom |
|
226 | + if (! $check_if_custom) { |
|
227 | + $core_paths = array( |
|
228 | + // in the /wp-content/plugins/(EE4 folder)/public/(current EE theme)/ folder within the plugin |
|
229 | + EE_PUBLIC . $current_theme, |
|
230 | + // in the /wp-content/plugins/(EE4 folder)/core/templates/(current EE theme)/ folder within the plugin |
|
231 | + EE_TEMPLATES . $current_theme, |
|
232 | + // or maybe relative from the plugin root: /wp-content/plugins/(EE4 folder)/ |
|
233 | + EE_PLUGIN_DIR_PATH, |
|
234 | + ); |
|
235 | + $template_folder_paths = array_merge($template_folder_paths, $core_paths); |
|
236 | + } |
|
237 | + |
|
238 | + // now filter that array |
|
239 | + $template_folder_paths = apply_filters( |
|
240 | + 'FHEE__EEH_Template__locate_template__template_folder_paths', |
|
241 | + $template_folder_paths |
|
242 | + ); |
|
243 | + $templates = is_array($templates) ? $templates : array($templates); |
|
244 | + $template_folder_paths = is_array($template_folder_paths) ? $template_folder_paths : array($template_folder_paths); |
|
245 | + // array to hold all possible template paths |
|
246 | + $full_template_paths = array(); |
|
247 | + |
|
248 | + // loop through $templates |
|
249 | + foreach ($templates as $template) { |
|
250 | + // normalize directory separators |
|
251 | + $template = EEH_File::standardise_directory_separators($template); |
|
252 | + $file_name = basename($template); |
|
253 | + $template_path_minus_file_name = substr($template, 0, (strlen($file_name) * -1)); |
|
254 | + // while looping through all template folder paths |
|
255 | + foreach ($template_folder_paths as $template_folder_path) { |
|
256 | + // normalize directory separators |
|
257 | + $template_folder_path = EEH_File::standardise_directory_separators($template_folder_path); |
|
258 | + // determine if any common base path exists between the two paths |
|
259 | + $common_base_path = EEH_Template::_find_common_base_path( |
|
260 | + array($template_folder_path, $template_path_minus_file_name) |
|
261 | + ); |
|
262 | + if ($common_base_path !== '') { |
|
263 | + // both paths have a common base, so just tack the filename onto our search path |
|
264 | + $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $file_name; |
|
265 | + } else { |
|
266 | + // no common base path, so let's just concatenate |
|
267 | + $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $template; |
|
268 | + } |
|
269 | + // build up our template locations array by adding our resolved paths |
|
270 | + $full_template_paths[] = $resolved_path; |
|
271 | + } |
|
272 | + // if $template is an absolute path, then we'll tack it onto the start of our array so that it gets searched first |
|
273 | + array_unshift($full_template_paths, $template); |
|
274 | + // path to the directory of the current theme: /wp-content/themes/(current WP theme)/ |
|
275 | + array_unshift($full_template_paths, get_stylesheet_directory() . '/' . $file_name); |
|
276 | + } |
|
277 | + // filter final array of full template paths |
|
278 | + $full_template_paths = apply_filters( |
|
279 | + 'FHEE__EEH_Template__locate_template__full_template_paths', |
|
280 | + $full_template_paths, |
|
281 | + $file_name |
|
282 | + ); |
|
283 | + // now loop through our final array of template location paths and check each location |
|
284 | + foreach ((array) $full_template_paths as $full_template_path) { |
|
285 | + if (is_readable($full_template_path)) { |
|
286 | + $template_path = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, $full_template_path); |
|
287 | + break; |
|
288 | + } |
|
289 | + } |
|
290 | + } |
|
291 | + |
|
292 | + // hook that can be used to display the full template path that will be used |
|
293 | + do_action('AHEE__EEH_Template__locate_template__full_template_path', $template_path); |
|
294 | + |
|
295 | + // if we got it and you want to see it... |
|
296 | + if ($template_path && $load && ! $check_if_custom) { |
|
297 | + if ($return_string) { |
|
298 | + return EEH_Template::display_template($template_path, $template_args, true); |
|
299 | + } else { |
|
300 | + EEH_Template::display_template($template_path, $template_args, false); |
|
301 | + } |
|
302 | + } |
|
303 | + return $check_if_custom && ! empty($template_path) ? true : $template_path; |
|
304 | + } |
|
305 | + |
|
306 | + |
|
307 | + /** |
|
308 | + * _find_common_base_path |
|
309 | + * given two paths, this determines if there is a common base path between the two |
|
310 | + * |
|
311 | + * @param array $paths |
|
312 | + * @return string |
|
313 | + */ |
|
314 | + protected static function _find_common_base_path($paths) |
|
315 | + { |
|
316 | + $last_offset = 0; |
|
317 | + $common_base_path = ''; |
|
318 | + while (($index = strpos($paths[0], '/', $last_offset)) !== false) { |
|
319 | + $dir_length = $index - $last_offset + 1; |
|
320 | + $directory = substr($paths[0], $last_offset, $dir_length); |
|
321 | + foreach ($paths as $path) { |
|
322 | + if (substr($path, $last_offset, $dir_length) != $directory) { |
|
323 | + return $common_base_path; |
|
324 | + } |
|
325 | + } |
|
326 | + $common_base_path .= $directory; |
|
327 | + $last_offset = $index + 1; |
|
328 | + } |
|
329 | + return substr($common_base_path, 0, -1); |
|
330 | + } |
|
331 | + |
|
332 | + |
|
333 | + /** |
|
334 | + * load and display a template |
|
335 | + * |
|
336 | + * @param bool|string $template_path server path to the file to be loaded, including file name and extension |
|
337 | + * @param array $template_args an array of arguments to be extracted for use in the template |
|
338 | + * @param boolean $return_string whether to send output immediately to screen, or capture and return as a string |
|
339 | + * @param bool $throw_exceptions if set to true, will throw an exception if the template is either |
|
340 | + * not found or is not readable |
|
341 | + * @return mixed string |
|
342 | + * @throws \DomainException |
|
343 | + */ |
|
344 | + public static function display_template( |
|
345 | + $template_path = false, |
|
346 | + $template_args = array(), |
|
347 | + $return_string = false, |
|
348 | + $throw_exceptions = false |
|
349 | + ) { |
|
350 | + |
|
351 | + /** |
|
352 | + * These two filters are intended for last minute changes to templates being loaded and/or template arg |
|
353 | + * modifications. NOTE... modifying these things can cause breakage as most templates running through |
|
354 | + * the display_template method are templates we DON'T want modified (usually because of js |
|
355 | + * dependencies etc). So unless you know what you are doing, do NOT filter templates or template args |
|
356 | + * using this. |
|
357 | + * |
|
358 | + * @since 4.6.0 |
|
359 | + */ |
|
360 | + $template_path = (string) apply_filters('FHEE__EEH_Template__display_template__template_path', $template_path); |
|
361 | + $template_args = (array) apply_filters('FHEE__EEH_Template__display_template__template_args', $template_args); |
|
362 | + |
|
363 | + // you gimme nuttin - YOU GET NUTTIN !! |
|
364 | + if (! $template_path || ! is_readable($template_path)) { |
|
365 | + return ''; |
|
366 | + } |
|
367 | + // if $template_args are not in an array, then make it so |
|
368 | + if (! is_array($template_args) && ! is_object($template_args)) { |
|
369 | + $template_args = array($template_args); |
|
370 | + } |
|
371 | + extract($template_args, EXTR_SKIP); |
|
372 | + // ignore whether template is accessible ? |
|
373 | + if ($throw_exceptions && ! is_readable($template_path)) { |
|
374 | + throw new \DomainException( |
|
375 | + esc_html__( |
|
376 | + 'Invalid, unreadable, or missing file.', |
|
377 | + 'event_espresso' |
|
378 | + ) |
|
379 | + ); |
|
380 | + } |
|
381 | + |
|
382 | + |
|
383 | + if ($return_string) { |
|
384 | + // because we want to return a string, we are going to capture the output |
|
385 | + ob_start(); |
|
386 | + include($template_path); |
|
387 | + return ob_get_clean(); |
|
388 | + } else { |
|
389 | + include($template_path); |
|
390 | + } |
|
391 | + return ''; |
|
392 | + } |
|
393 | + |
|
394 | + |
|
395 | + /** |
|
396 | + * get_object_css_class - attempts to generate a css class based on the type of EE object passed |
|
397 | + * |
|
398 | + * @param EE_Base_Class $object the EE object the css class is being generated for |
|
399 | + * @param string $prefix added to the beginning of the generated class |
|
400 | + * @param string $suffix added to the end of the generated class |
|
401 | + * @return string |
|
402 | + */ |
|
403 | + public static function get_object_css_class($object = null, $prefix = '', $suffix = '') |
|
404 | + { |
|
405 | + // in the beginning... |
|
406 | + $prefix = ! empty($prefix) ? rtrim($prefix, '-') . '-' : ''; |
|
407 | + // da muddle |
|
408 | + $class = ''; |
|
409 | + // the end |
|
410 | + $suffix = ! empty($suffix) ? '-' . ltrim($suffix, '-') : ''; |
|
411 | + // is the passed object an EE object ? |
|
412 | + if ($object instanceof EE_Base_Class) { |
|
413 | + // grab the exact type of object |
|
414 | + $obj_class = get_class($object); |
|
415 | + // depending on the type of object... |
|
416 | + switch ($obj_class) { |
|
417 | + // no specifics just yet... |
|
418 | + default: |
|
419 | + $class = strtolower(str_replace('_', '-', $obj_class)); |
|
420 | + $class .= method_exists($obj_class, 'name') ? '-' . sanitize_title($object->name()) : ''; |
|
421 | + } |
|
422 | + } |
|
423 | + return $prefix . $class . $suffix; |
|
424 | + } |
|
425 | + |
|
426 | + |
|
427 | + |
|
428 | + /** |
|
429 | + * EEH_Template::format_currency |
|
430 | + * This helper takes a raw float value and formats it according to the default config country currency settings, or |
|
431 | + * the country currency settings from the supplied country ISO code |
|
432 | + * |
|
433 | + * @param float $amount raw money value |
|
434 | + * @param boolean $return_raw whether to return the formatted float value only with no currency sign or code |
|
435 | + * @param boolean $display_code whether to display the country code (USD). Default = TRUE |
|
436 | + * @param string $CNT_ISO 2 letter ISO code for a country |
|
437 | + * @param string $cur_code_span_class |
|
438 | + * @return string the html output for the formatted money value |
|
439 | + * @throws \EE_Error |
|
440 | + */ |
|
441 | + public static function format_currency( |
|
442 | + $amount = null, |
|
443 | + $return_raw = false, |
|
444 | + $display_code = true, |
|
445 | + $CNT_ISO = '', |
|
446 | + $cur_code_span_class = 'currency-code' |
|
447 | + ) { |
|
448 | + // ensure amount was received |
|
449 | + if ($amount === null) { |
|
450 | + $msg = __('In order to format currency, an amount needs to be passed.', 'event_espresso'); |
|
451 | + EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__); |
|
452 | + return ''; |
|
453 | + } |
|
454 | + // ensure amount is float |
|
455 | + $amount = apply_filters('FHEE__EEH_Template__format_currency__raw_amount', (float) $amount); |
|
456 | + $CNT_ISO = apply_filters('FHEE__EEH_Template__format_currency__CNT_ISO', $CNT_ISO, $amount); |
|
457 | + // filter raw amount (allows 0.00 to be changed to "free" for example) |
|
458 | + $amount_formatted = apply_filters('FHEE__EEH_Template__format_currency__amount', $amount, $return_raw); |
|
459 | + // still a number or was amount converted to a string like "free" ? |
|
460 | + if (is_float($amount_formatted)) { |
|
461 | + // was a country ISO code passed ? if so generate currency config object for that country |
|
462 | + $mny = $CNT_ISO !== '' ? new EE_Currency_Config($CNT_ISO) : null; |
|
463 | + // verify results |
|
464 | + if (! $mny instanceof EE_Currency_Config) { |
|
465 | + // set default config country currency settings |
|
466 | + $mny = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config |
|
467 | + ? EE_Registry::instance()->CFG->currency |
|
468 | + : new EE_Currency_Config(); |
|
469 | + } |
|
470 | + // format float |
|
471 | + $amount_formatted = number_format($amount, $mny->dec_plc, $mny->dec_mrk, $mny->thsnds); |
|
472 | + // add formatting ? |
|
473 | + if (! $return_raw) { |
|
474 | + // add currency sign |
|
475 | + if ($mny->sign_b4) { |
|
476 | + if ($amount >= 0) { |
|
477 | + $amount_formatted = $mny->sign . $amount_formatted; |
|
478 | + } else { |
|
479 | + $amount_formatted = '-' . $mny->sign . str_replace('-', '', $amount_formatted); |
|
480 | + } |
|
481 | + } else { |
|
482 | + $amount_formatted = $amount_formatted . $mny->sign; |
|
483 | + } |
|
484 | + |
|
485 | + // filter to allow global setting of display_code |
|
486 | + $display_code = apply_filters('FHEE__EEH_Template__format_currency__display_code', $display_code); |
|
487 | + |
|
488 | + // add currency code ? |
|
489 | + $amount_formatted = $display_code ? $amount_formatted . ' <span class="' . $cur_code_span_class . '">(' . $mny->code . ')</span>' : $amount_formatted; |
|
490 | + } |
|
491 | + // filter results |
|
492 | + $amount_formatted = apply_filters( |
|
493 | + 'FHEE__EEH_Template__format_currency__amount_formatted', |
|
494 | + $amount_formatted, |
|
495 | + $mny, |
|
496 | + $return_raw |
|
497 | + ); |
|
498 | + } |
|
499 | + // clean up vars |
|
500 | + unset($mny); |
|
501 | + // return formatted currency amount |
|
502 | + return $amount_formatted; |
|
503 | + } |
|
504 | + |
|
505 | + |
|
506 | + /** |
|
507 | + * This function is used for outputting the localized label for a given status id in the schema requested (and |
|
508 | + * possibly plural). The intended use of this function is only for cases where wanting a label outside of a |
|
509 | + * related status model or model object (i.e. in documentation etc.) |
|
510 | + * |
|
511 | + * @param string $status_id Status ID matching a registered status in the esp_status table. If there is no |
|
512 | + * match, then 'Unknown' will be returned. |
|
513 | + * @param boolean $plural Whether to return plural or not |
|
514 | + * @param string $schema 'UPPER', 'lower', or 'Sentence' |
|
515 | + * @return string The localized label for the status id. |
|
516 | + */ |
|
517 | + public static function pretty_status($status_id, $plural = false, $schema = 'upper') |
|
518 | + { |
|
519 | + /** @type EEM_Status $EEM_Status */ |
|
520 | + $EEM_Status = EE_Registry::instance()->load_model('Status'); |
|
521 | + $status = $EEM_Status->localized_status( |
|
522 | + array($status_id => __('unknown', 'event_espresso')), |
|
523 | + $plural, |
|
524 | + $schema |
|
525 | + ); |
|
526 | + return $status[ $status_id ]; |
|
527 | + } |
|
528 | + |
|
529 | + |
|
530 | + /** |
|
531 | + * This helper just returns a button or link for the given parameters |
|
532 | + * |
|
533 | + * @param string $url the url for the link, note that `esc_url` will be called on it |
|
534 | + * @param string $label What is the label you want displayed for the button |
|
535 | + * @param string $class what class is used for the button (defaults to 'button-primary') |
|
536 | + * @param string $icon |
|
537 | + * @param string $title |
|
538 | + * @return string the html output for the button |
|
539 | + */ |
|
540 | + public static function get_button_or_link($url, $label, $class = 'button-primary', $icon = '', $title = '') |
|
541 | + { |
|
542 | + $icon_html = ''; |
|
543 | + if (! empty($icon)) { |
|
544 | + $dashicons = preg_split("(ee-icon |dashicons )", $icon); |
|
545 | + $dashicons = array_filter($dashicons); |
|
546 | + $count = count($dashicons); |
|
547 | + $icon_html .= $count > 1 ? '<span class="ee-composite-dashicon">' : ''; |
|
548 | + foreach ($dashicons as $dashicon) { |
|
549 | + $type = strpos($dashicon, 'ee-icon') !== false ? 'ee-icon ' : 'dashicons '; |
|
550 | + $icon_html .= '<span class="' . $type . $dashicon . '"></span>'; |
|
551 | + } |
|
552 | + $icon_html .= $count > 1 ? '</span>' : ''; |
|
553 | + } |
|
554 | + $label = ! empty($icon) ? $icon_html . $label : $label; |
|
555 | + $button = '<a id="' . sanitize_title_with_dashes($label) . '" href="' . esc_url($url) . '" class="' . $class . '" title="' . $title . '">' . $label . '</a>'; |
|
556 | + return $button; |
|
557 | + } |
|
558 | + |
|
559 | + |
|
560 | + /** |
|
561 | + * This returns a generated link that will load the related help tab on admin pages. |
|
562 | + * |
|
563 | + * @param string $help_tab_id the id for the connected help tab |
|
564 | + * @param bool|string $page The page identifier for the page the help tab is on |
|
565 | + * @param bool|string $action The action (route) for the admin page the help tab is on. |
|
566 | + * @param bool|string $icon_style (optional) include css class for the style you want to use for the help icon. |
|
567 | + * @param bool|string $help_text (optional) send help text you want to use for the link if default not to be used |
|
568 | + * @return string generated link |
|
569 | + */ |
|
570 | + public static function get_help_tab_link( |
|
571 | + $help_tab_id, |
|
572 | + $page = false, |
|
573 | + $action = false, |
|
574 | + $icon_style = false, |
|
575 | + $help_text = false |
|
576 | + ) { |
|
577 | + |
|
578 | + if (! $page) { |
|
579 | + $page = isset($_REQUEST['page']) && ! empty($_REQUEST['page']) ? sanitize_key($_REQUEST['page']) : $page; |
|
580 | + } |
|
581 | + |
|
582 | + if (! $action) { |
|
583 | + $action = isset($_REQUEST['action']) && ! empty($_REQUEST['action']) ? sanitize_key($_REQUEST['action']) : $action; |
|
584 | + } |
|
585 | + |
|
586 | + $action = empty($action) ? 'default' : $action; |
|
587 | + |
|
588 | + |
|
589 | + $help_tab_lnk = $page . '-' . $action . '-' . $help_tab_id; |
|
590 | + $icon = ! $icon_style ? ' dashicons-editor-help' : $icon_style; |
|
591 | + $help_text = ! $help_text ? '' : $help_text; |
|
592 | + return '<a id="' . $help_tab_lnk . '" class="ee-clickable dashicons espresso-help-tab-lnk ee-icon-size-22' . $icon . '" title="' . esc_attr__( |
|
593 | + 'Click to open the \'Help\' tab for more information about this feature.', |
|
594 | + 'event_espresso' |
|
595 | + ) . '" > ' . $help_text . ' </a>'; |
|
596 | + } |
|
597 | + |
|
598 | + |
|
599 | + /** |
|
600 | + * This helper generates the html structure for the jquery joyride plugin with the given params. |
|
601 | + * |
|
602 | + * @link http://zurb.com/playground/jquery-joyride-feature-tour-plugin |
|
603 | + * @see EE_Admin_Page->_stop_callback() for the construct expected for the $stops param. |
|
604 | + * @param EE_Help_Tour |
|
605 | + * @return string html |
|
606 | + */ |
|
607 | + public static function help_tour_stops_generator(EE_Help_Tour $tour) |
|
608 | + { |
|
609 | + $id = $tour->get_slug(); |
|
610 | + $stops = $tour->get_stops(); |
|
611 | + |
|
612 | + $content = '<ol style="display:none" id="' . $id . '">'; |
|
613 | + |
|
614 | + foreach ($stops as $stop) { |
|
615 | + $data_id = ! empty($stop['id']) ? ' data-id="' . $stop['id'] . '"' : ''; |
|
616 | + $data_class = empty($data_id) && ! empty($stop['class']) ? ' data-class="' . $stop['class'] . '"' : ''; |
|
617 | + |
|
618 | + // if container is set to modal then let's make sure we set the options accordingly |
|
619 | + if (empty($data_id) && empty($data_class)) { |
|
620 | + $stop['options']['modal'] = true; |
|
621 | + $stop['options']['expose'] = true; |
|
622 | + } |
|
623 | + |
|
624 | + $custom_class = ! empty($stop['custom_class']) ? ' class="' . $stop['custom_class'] . '"' : ''; |
|
625 | + $button_text = ! empty($stop['button_text']) ? ' data-button="' . $stop['button_text'] . '"' : ''; |
|
626 | + $inner_content = isset($stop['content']) ? $stop['content'] : ''; |
|
627 | + |
|
628 | + // options |
|
629 | + if (isset($stop['options']) && is_array($stop['options'])) { |
|
630 | + $options = ' data-options="'; |
|
631 | + foreach ($stop['options'] as $option => $value) { |
|
632 | + $options .= $option . ':' . $value . ';'; |
|
633 | + } |
|
634 | + $options .= '"'; |
|
635 | + } else { |
|
636 | + $options = ''; |
|
637 | + } |
|
638 | + |
|
639 | + // let's put all together |
|
640 | + $content .= '<li' . $data_id . $data_class . $custom_class . $button_text . $options . '>' . $inner_content . '</li>'; |
|
641 | + } |
|
642 | + |
|
643 | + $content .= '</ol>'; |
|
644 | + return $content; |
|
645 | + } |
|
646 | + |
|
647 | + |
|
648 | + /** |
|
649 | + * This is a helper method to generate a status legend for a given status array. |
|
650 | + * Note this will only work if the incoming statuses have a key in the EEM_Status->localized_status() methods |
|
651 | + * status_array. |
|
652 | + * |
|
653 | + * @param array $status_array array of statuses that will make up the legend. In format: |
|
654 | + * array( |
|
655 | + * 'status_item' => 'status_name' |
|
656 | + * ) |
|
657 | + * @param string $active_status This is used to indicate what the active status is IF that is to be highlighted in |
|
658 | + * the legend. |
|
659 | + * @throws EE_Error |
|
660 | + * @return string html structure for status. |
|
661 | + */ |
|
662 | + public static function status_legend($status_array, $active_status = '') |
|
663 | + { |
|
664 | + if (! is_array($status_array)) { |
|
665 | + throw new EE_Error(esc_html__( |
|
666 | + 'The EEH_Template::status_legend helper required the incoming status_array argument to be an array!', |
|
667 | + 'event_espresso' |
|
668 | + )); |
|
669 | + } |
|
670 | + |
|
671 | + $setup_array = array(); |
|
672 | + foreach ($status_array as $item => $status) { |
|
673 | + $setup_array[ $item ] = array( |
|
674 | + 'class' => 'ee-status-legend ee-status-legend-' . $status, |
|
675 | + 'desc' => EEH_Template::pretty_status($status, false, 'sentence'), |
|
676 | + 'status' => $status, |
|
677 | + ); |
|
678 | + } |
|
679 | + |
|
680 | + $content = '<div class="ee-list-table-legend-container">' . "\n"; |
|
681 | + $content .= '<h4 class="status-legend-title">' . esc_html__('Status Legend', 'event_espresso') . '</h4>' . "\n"; |
|
682 | + $content .= '<dl class="ee-list-table-legend">' . "\n\t"; |
|
683 | + foreach ($setup_array as $item => $details) { |
|
684 | + $active_class = $active_status == $details['status'] ? ' class="ee-is-active-status"' : ''; |
|
685 | + $content .= '<dt id="ee-legend-item-tooltip-' . $item . '"' . $active_class . '>' . "\n\t\t"; |
|
686 | + $content .= '<span class="ee-legend-item-wrap"><span class="' . $details['class'] . '"></span></span>' . "\n\t\t"; |
|
687 | + $content .= '<span class="ee-legend-description">' . $details['desc'] . '</span>' . "\n\t"; |
|
688 | + $content .= '</dt>' . "\n"; |
|
689 | + } |
|
690 | + $content .= '</dl>' . "\n"; |
|
691 | + $content .= '</div>' . "\n"; |
|
692 | + return $content; |
|
693 | + } |
|
694 | + |
|
695 | + |
|
696 | + /** |
|
697 | + * Gets HTML for laying out a deeply-nested array (and objects) in a format |
|
698 | + * that's nice for presenting in the wp admin |
|
699 | + * |
|
700 | + * @param mixed $data |
|
701 | + * @return string |
|
702 | + */ |
|
703 | + public static function layout_array_as_table($data) |
|
704 | + { |
|
705 | + if (is_object($data) || $data instanceof __PHP_Incomplete_Class) { |
|
706 | + $data = (array) $data; |
|
707 | + } |
|
708 | + ob_start(); |
|
709 | + if (is_array($data)) { |
|
710 | + if (EEH_Array::is_associative_array($data)) { |
|
711 | + ?> |
|
712 | 712 | <table class="widefat"> |
713 | 713 | <tbody> |
714 | 714 | <?php |
715 | - foreach ($data as $data_key => $data_values) { |
|
716 | - ?> |
|
715 | + foreach ($data as $data_key => $data_values) { |
|
716 | + ?> |
|
717 | 717 | <tr> |
718 | 718 | <td> |
719 | 719 | <?php echo $data_key; ?> |
@@ -723,293 +723,293 @@ discard block |
||
723 | 723 | </td> |
724 | 724 | </tr> |
725 | 725 | <?php |
726 | - } ?> |
|
726 | + } ?> |
|
727 | 727 | </tbody> |
728 | 728 | </table> |
729 | 729 | <?php |
730 | - } else { |
|
731 | - ?> |
|
730 | + } else { |
|
731 | + ?> |
|
732 | 732 | <ul> |
733 | 733 | <?php |
734 | - foreach ($data as $datum) { |
|
735 | - echo "<li>"; |
|
736 | - echo self::layout_array_as_table($datum); |
|
737 | - echo "</li>"; |
|
738 | - } ?> |
|
734 | + foreach ($data as $datum) { |
|
735 | + echo "<li>"; |
|
736 | + echo self::layout_array_as_table($datum); |
|
737 | + echo "</li>"; |
|
738 | + } ?> |
|
739 | 739 | </ul> |
740 | 740 | <?php |
741 | - } |
|
742 | - } else { |
|
743 | - // simple value |
|
744 | - echo esc_html($data); |
|
745 | - } |
|
746 | - return ob_get_clean(); |
|
747 | - } |
|
748 | - |
|
749 | - |
|
750 | - /** |
|
751 | - * wrapper for self::get_paging_html() that simply echos the generated paging html |
|
752 | - * |
|
753 | - * @since 4.4.0 |
|
754 | - * @see self:get_paging_html() for argument docs. |
|
755 | - * @param $total_items |
|
756 | - * @param $current |
|
757 | - * @param $per_page |
|
758 | - * @param $url |
|
759 | - * @param bool $show_num_field |
|
760 | - * @param string $paged_arg_name |
|
761 | - * @param array $items_label |
|
762 | - * @return string |
|
763 | - */ |
|
764 | - public static function paging_html( |
|
765 | - $total_items, |
|
766 | - $current, |
|
767 | - $per_page, |
|
768 | - $url, |
|
769 | - $show_num_field = true, |
|
770 | - $paged_arg_name = 'paged', |
|
771 | - $items_label = array() |
|
772 | - ) { |
|
773 | - echo self::get_paging_html( |
|
774 | - $total_items, |
|
775 | - $current, |
|
776 | - $per_page, |
|
777 | - $url, |
|
778 | - $show_num_field, |
|
779 | - $paged_arg_name, |
|
780 | - $items_label |
|
781 | - ); |
|
782 | - } |
|
783 | - |
|
784 | - |
|
785 | - /** |
|
786 | - * A method for generating paging similar to WP_List_Table |
|
787 | - * |
|
788 | - * @since 4.4.0 |
|
789 | - * @see wp-admin/includes/class-wp-list-table.php WP_List_Table::pagination() |
|
790 | - * @param integer $total_items How many total items there are to page. |
|
791 | - * @param integer $current What the current page is. |
|
792 | - * @param integer $per_page How many items per page. |
|
793 | - * @param string $url What the base url for page links is. |
|
794 | - * @param boolean $show_num_field Whether to show the input for changing page number. |
|
795 | - * @param string $paged_arg_name The name of the key for the paged query argument. |
|
796 | - * @param array $items_label An array of singular/plural values for the items label: |
|
797 | - * array( |
|
798 | - * 'single' => 'item', |
|
799 | - * 'plural' => 'items' |
|
800 | - * ) |
|
801 | - * @return string |
|
802 | - */ |
|
803 | - public static function get_paging_html( |
|
804 | - $total_items, |
|
805 | - $current, |
|
806 | - $per_page, |
|
807 | - $url, |
|
808 | - $show_num_field = true, |
|
809 | - $paged_arg_name = 'paged', |
|
810 | - $items_label = array() |
|
811 | - ) { |
|
812 | - $page_links = array(); |
|
813 | - $disable_first = $disable_last = ''; |
|
814 | - $total_items = (int) $total_items; |
|
815 | - $per_page = (int) $per_page; |
|
816 | - $current = (int) $current; |
|
817 | - $paged_arg_name = empty($paged_arg_name) ? 'paged' : sanitize_key($paged_arg_name); |
|
818 | - |
|
819 | - // filter items_label |
|
820 | - $items_label = apply_filters( |
|
821 | - 'FHEE__EEH_Template__get_paging_html__items_label', |
|
822 | - $items_label |
|
823 | - ); |
|
824 | - |
|
825 | - if ( |
|
826 | - empty($items_label) |
|
827 | - || ! is_array($items_label) |
|
828 | - || ! isset($items_label['single']) |
|
829 | - || ! isset($items_label['plural']) |
|
830 | - ) { |
|
831 | - $items_label = array( |
|
832 | - 'single' => __('1 item', 'event_espresso'), |
|
833 | - 'plural' => __('%s items', 'event_espresso'), |
|
834 | - ); |
|
835 | - } else { |
|
836 | - $items_label = array( |
|
837 | - 'single' => '1 ' . esc_html($items_label['single']), |
|
838 | - 'plural' => '%s ' . esc_html($items_label['plural']), |
|
839 | - ); |
|
840 | - } |
|
841 | - |
|
842 | - $total_pages = ceil($total_items / $per_page); |
|
843 | - |
|
844 | - if ($total_pages <= 1) { |
|
845 | - return ''; |
|
846 | - } |
|
847 | - |
|
848 | - $item_label = $total_items > 1 ? sprintf($items_label['plural'], $total_items) : $items_label['single']; |
|
849 | - |
|
850 | - $output = '<span class="displaying-num">' . $item_label . '</span>'; |
|
851 | - |
|
852 | - if ($current === 1) { |
|
853 | - $disable_first = ' disabled'; |
|
854 | - } |
|
855 | - if ($current == $total_pages) { |
|
856 | - $disable_last = ' disabled'; |
|
857 | - } |
|
858 | - |
|
859 | - $page_links[] = sprintf( |
|
860 | - "<a class='%s' title='%s' href='%s'>%s</a>", |
|
861 | - 'first-page' . $disable_first, |
|
862 | - esc_attr__('Go to the first page', 'event_espresso'), |
|
863 | - esc_url(remove_query_arg($paged_arg_name, $url)), |
|
864 | - '«' |
|
865 | - ); |
|
866 | - |
|
867 | - $page_links[] = sprintf( |
|
868 | - '<a class="%s" title="%s" href="%s">%s</a>', |
|
869 | - 'prev-page' . $disable_first, |
|
870 | - esc_attr__('Go to the previous page', 'event_espresso'), |
|
871 | - esc_url(add_query_arg($paged_arg_name, max(1, $current - 1), $url)), |
|
872 | - '‹' |
|
873 | - ); |
|
874 | - |
|
875 | - if (! $show_num_field) { |
|
876 | - $html_current_page = $current; |
|
877 | - } else { |
|
878 | - $html_current_page = sprintf( |
|
879 | - "<input class='current-page' title='%s' type='text' name=$paged_arg_name value='%s' size='%d' />", |
|
880 | - esc_attr__('Current page', 'event_espresso'), |
|
881 | - $current, |
|
882 | - strlen($total_pages) |
|
883 | - ); |
|
884 | - } |
|
885 | - |
|
886 | - $html_total_pages = sprintf( |
|
887 | - '<span class="total-pages">%s</span>', |
|
888 | - number_format_i18n($total_pages) |
|
889 | - ); |
|
890 | - $page_links[] = sprintf( |
|
891 | - _x('%3$s%1$s of %2$s%4$s', 'paging', 'event_espresso'), |
|
892 | - $html_current_page, |
|
893 | - $html_total_pages, |
|
894 | - '<span class="paging-input">', |
|
895 | - '</span>' |
|
896 | - ); |
|
897 | - |
|
898 | - $page_links[] = sprintf( |
|
899 | - '<a class="%s" title="%s" href="%s">%s</a>', |
|
900 | - 'next-page' . $disable_last, |
|
901 | - esc_attr__('Go to the next page', 'event_espresso'), |
|
902 | - esc_url(add_query_arg($paged_arg_name, min($total_pages, $current + 1), $url)), |
|
903 | - '›' |
|
904 | - ); |
|
905 | - |
|
906 | - $page_links[] = sprintf( |
|
907 | - '<a class="%s" title="%s" href="%s">%s</a>', |
|
908 | - 'last-page' . $disable_last, |
|
909 | - esc_attr__('Go to the last page', 'event_espresso'), |
|
910 | - esc_url(add_query_arg($paged_arg_name, $total_pages, $url)), |
|
911 | - '»' |
|
912 | - ); |
|
913 | - |
|
914 | - $output .= "\n" . '<span class="pagination-links">' . join("\n", $page_links) . '</span>'; |
|
915 | - // set page class |
|
916 | - if ($total_pages) { |
|
917 | - $page_class = $total_pages < 2 ? ' one-page' : ''; |
|
918 | - } else { |
|
919 | - $page_class = ' no-pages'; |
|
920 | - } |
|
921 | - |
|
922 | - return '<div class="tablenav"><div class="tablenav-pages' . $page_class . '">' . $output . '</div></div>'; |
|
923 | - } |
|
924 | - |
|
925 | - |
|
926 | - /** |
|
927 | - * @param string $wrap_class |
|
928 | - * @param string $wrap_id |
|
929 | - * @return string |
|
930 | - */ |
|
931 | - public static function powered_by_event_espresso($wrap_class = '', $wrap_id = '', array $query_args = array()) |
|
932 | - { |
|
933 | - $admin = is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX); |
|
934 | - if ( |
|
935 | - ! $admin && |
|
936 | - ! apply_filters( |
|
937 | - 'FHEE__EEH_Template__powered_by_event_espresso__show_reg_footer', |
|
938 | - EE_Registry::instance()->CFG->admin->show_reg_footer |
|
939 | - ) |
|
940 | - ) { |
|
941 | - return ''; |
|
942 | - } |
|
943 | - $tag = $admin ? 'span' : 'div'; |
|
944 | - $attributes = ! empty($wrap_id) ? " id=\"{$wrap_id}\"" : ''; |
|
945 | - $wrap_class = $admin ? "{$wrap_class} float-left" : $wrap_class; |
|
946 | - $attributes .= ! empty($wrap_class) |
|
947 | - ? " class=\"{$wrap_class} powered-by-event-espresso-credit\"" |
|
948 | - : ' class="powered-by-event-espresso-credit"'; |
|
949 | - $query_args = array_merge( |
|
950 | - array( |
|
951 | - 'ap_id' => EE_Registry::instance()->CFG->admin->affiliate_id(), |
|
952 | - 'utm_source' => 'powered_by_event_espresso', |
|
953 | - 'utm_medium' => 'link', |
|
954 | - 'utm_campaign' => 'powered_by', |
|
955 | - ), |
|
956 | - $query_args |
|
957 | - ); |
|
958 | - $powered_by = apply_filters( |
|
959 | - 'FHEE__EEH_Template__powered_by_event_espresso_text', |
|
960 | - $admin ? 'Event Espresso - ' . EVENT_ESPRESSO_VERSION : 'Event Espresso' |
|
961 | - ); |
|
962 | - $url = add_query_arg($query_args, 'https://eventespresso.com/'); |
|
963 | - $url = apply_filters('FHEE__EEH_Template__powered_by_event_espresso__url', $url); |
|
964 | - return (string) apply_filters( |
|
965 | - 'FHEE__EEH_Template__powered_by_event_espresso__html', |
|
966 | - sprintf( |
|
967 | - esc_html_x( |
|
968 | - '%3$s%1$sOnline event registration and ticketing powered by %2$s%3$s', |
|
969 | - 'Online event registration and ticketing powered by [link to eventespresso.com]', |
|
970 | - 'event_espresso' |
|
971 | - ), |
|
972 | - "<{$tag}{$attributes}>", |
|
973 | - "<a href=\"{$url}\" target=\"_blank\" rel=\"nofollow\">{$powered_by}</a></{$tag}>", |
|
974 | - $admin ? '' : '<br />' |
|
975 | - ), |
|
976 | - $wrap_class, |
|
977 | - $wrap_id |
|
978 | - ); |
|
979 | - } |
|
741 | + } |
|
742 | + } else { |
|
743 | + // simple value |
|
744 | + echo esc_html($data); |
|
745 | + } |
|
746 | + return ob_get_clean(); |
|
747 | + } |
|
748 | + |
|
749 | + |
|
750 | + /** |
|
751 | + * wrapper for self::get_paging_html() that simply echos the generated paging html |
|
752 | + * |
|
753 | + * @since 4.4.0 |
|
754 | + * @see self:get_paging_html() for argument docs. |
|
755 | + * @param $total_items |
|
756 | + * @param $current |
|
757 | + * @param $per_page |
|
758 | + * @param $url |
|
759 | + * @param bool $show_num_field |
|
760 | + * @param string $paged_arg_name |
|
761 | + * @param array $items_label |
|
762 | + * @return string |
|
763 | + */ |
|
764 | + public static function paging_html( |
|
765 | + $total_items, |
|
766 | + $current, |
|
767 | + $per_page, |
|
768 | + $url, |
|
769 | + $show_num_field = true, |
|
770 | + $paged_arg_name = 'paged', |
|
771 | + $items_label = array() |
|
772 | + ) { |
|
773 | + echo self::get_paging_html( |
|
774 | + $total_items, |
|
775 | + $current, |
|
776 | + $per_page, |
|
777 | + $url, |
|
778 | + $show_num_field, |
|
779 | + $paged_arg_name, |
|
780 | + $items_label |
|
781 | + ); |
|
782 | + } |
|
783 | + |
|
784 | + |
|
785 | + /** |
|
786 | + * A method for generating paging similar to WP_List_Table |
|
787 | + * |
|
788 | + * @since 4.4.0 |
|
789 | + * @see wp-admin/includes/class-wp-list-table.php WP_List_Table::pagination() |
|
790 | + * @param integer $total_items How many total items there are to page. |
|
791 | + * @param integer $current What the current page is. |
|
792 | + * @param integer $per_page How many items per page. |
|
793 | + * @param string $url What the base url for page links is. |
|
794 | + * @param boolean $show_num_field Whether to show the input for changing page number. |
|
795 | + * @param string $paged_arg_name The name of the key for the paged query argument. |
|
796 | + * @param array $items_label An array of singular/plural values for the items label: |
|
797 | + * array( |
|
798 | + * 'single' => 'item', |
|
799 | + * 'plural' => 'items' |
|
800 | + * ) |
|
801 | + * @return string |
|
802 | + */ |
|
803 | + public static function get_paging_html( |
|
804 | + $total_items, |
|
805 | + $current, |
|
806 | + $per_page, |
|
807 | + $url, |
|
808 | + $show_num_field = true, |
|
809 | + $paged_arg_name = 'paged', |
|
810 | + $items_label = array() |
|
811 | + ) { |
|
812 | + $page_links = array(); |
|
813 | + $disable_first = $disable_last = ''; |
|
814 | + $total_items = (int) $total_items; |
|
815 | + $per_page = (int) $per_page; |
|
816 | + $current = (int) $current; |
|
817 | + $paged_arg_name = empty($paged_arg_name) ? 'paged' : sanitize_key($paged_arg_name); |
|
818 | + |
|
819 | + // filter items_label |
|
820 | + $items_label = apply_filters( |
|
821 | + 'FHEE__EEH_Template__get_paging_html__items_label', |
|
822 | + $items_label |
|
823 | + ); |
|
824 | + |
|
825 | + if ( |
|
826 | + empty($items_label) |
|
827 | + || ! is_array($items_label) |
|
828 | + || ! isset($items_label['single']) |
|
829 | + || ! isset($items_label['plural']) |
|
830 | + ) { |
|
831 | + $items_label = array( |
|
832 | + 'single' => __('1 item', 'event_espresso'), |
|
833 | + 'plural' => __('%s items', 'event_espresso'), |
|
834 | + ); |
|
835 | + } else { |
|
836 | + $items_label = array( |
|
837 | + 'single' => '1 ' . esc_html($items_label['single']), |
|
838 | + 'plural' => '%s ' . esc_html($items_label['plural']), |
|
839 | + ); |
|
840 | + } |
|
841 | + |
|
842 | + $total_pages = ceil($total_items / $per_page); |
|
843 | + |
|
844 | + if ($total_pages <= 1) { |
|
845 | + return ''; |
|
846 | + } |
|
847 | + |
|
848 | + $item_label = $total_items > 1 ? sprintf($items_label['plural'], $total_items) : $items_label['single']; |
|
849 | + |
|
850 | + $output = '<span class="displaying-num">' . $item_label . '</span>'; |
|
851 | + |
|
852 | + if ($current === 1) { |
|
853 | + $disable_first = ' disabled'; |
|
854 | + } |
|
855 | + if ($current == $total_pages) { |
|
856 | + $disable_last = ' disabled'; |
|
857 | + } |
|
858 | + |
|
859 | + $page_links[] = sprintf( |
|
860 | + "<a class='%s' title='%s' href='%s'>%s</a>", |
|
861 | + 'first-page' . $disable_first, |
|
862 | + esc_attr__('Go to the first page', 'event_espresso'), |
|
863 | + esc_url(remove_query_arg($paged_arg_name, $url)), |
|
864 | + '«' |
|
865 | + ); |
|
866 | + |
|
867 | + $page_links[] = sprintf( |
|
868 | + '<a class="%s" title="%s" href="%s">%s</a>', |
|
869 | + 'prev-page' . $disable_first, |
|
870 | + esc_attr__('Go to the previous page', 'event_espresso'), |
|
871 | + esc_url(add_query_arg($paged_arg_name, max(1, $current - 1), $url)), |
|
872 | + '‹' |
|
873 | + ); |
|
874 | + |
|
875 | + if (! $show_num_field) { |
|
876 | + $html_current_page = $current; |
|
877 | + } else { |
|
878 | + $html_current_page = sprintf( |
|
879 | + "<input class='current-page' title='%s' type='text' name=$paged_arg_name value='%s' size='%d' />", |
|
880 | + esc_attr__('Current page', 'event_espresso'), |
|
881 | + $current, |
|
882 | + strlen($total_pages) |
|
883 | + ); |
|
884 | + } |
|
885 | + |
|
886 | + $html_total_pages = sprintf( |
|
887 | + '<span class="total-pages">%s</span>', |
|
888 | + number_format_i18n($total_pages) |
|
889 | + ); |
|
890 | + $page_links[] = sprintf( |
|
891 | + _x('%3$s%1$s of %2$s%4$s', 'paging', 'event_espresso'), |
|
892 | + $html_current_page, |
|
893 | + $html_total_pages, |
|
894 | + '<span class="paging-input">', |
|
895 | + '</span>' |
|
896 | + ); |
|
897 | + |
|
898 | + $page_links[] = sprintf( |
|
899 | + '<a class="%s" title="%s" href="%s">%s</a>', |
|
900 | + 'next-page' . $disable_last, |
|
901 | + esc_attr__('Go to the next page', 'event_espresso'), |
|
902 | + esc_url(add_query_arg($paged_arg_name, min($total_pages, $current + 1), $url)), |
|
903 | + '›' |
|
904 | + ); |
|
905 | + |
|
906 | + $page_links[] = sprintf( |
|
907 | + '<a class="%s" title="%s" href="%s">%s</a>', |
|
908 | + 'last-page' . $disable_last, |
|
909 | + esc_attr__('Go to the last page', 'event_espresso'), |
|
910 | + esc_url(add_query_arg($paged_arg_name, $total_pages, $url)), |
|
911 | + '»' |
|
912 | + ); |
|
913 | + |
|
914 | + $output .= "\n" . '<span class="pagination-links">' . join("\n", $page_links) . '</span>'; |
|
915 | + // set page class |
|
916 | + if ($total_pages) { |
|
917 | + $page_class = $total_pages < 2 ? ' one-page' : ''; |
|
918 | + } else { |
|
919 | + $page_class = ' no-pages'; |
|
920 | + } |
|
921 | + |
|
922 | + return '<div class="tablenav"><div class="tablenav-pages' . $page_class . '">' . $output . '</div></div>'; |
|
923 | + } |
|
924 | + |
|
925 | + |
|
926 | + /** |
|
927 | + * @param string $wrap_class |
|
928 | + * @param string $wrap_id |
|
929 | + * @return string |
|
930 | + */ |
|
931 | + public static function powered_by_event_espresso($wrap_class = '', $wrap_id = '', array $query_args = array()) |
|
932 | + { |
|
933 | + $admin = is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX); |
|
934 | + if ( |
|
935 | + ! $admin && |
|
936 | + ! apply_filters( |
|
937 | + 'FHEE__EEH_Template__powered_by_event_espresso__show_reg_footer', |
|
938 | + EE_Registry::instance()->CFG->admin->show_reg_footer |
|
939 | + ) |
|
940 | + ) { |
|
941 | + return ''; |
|
942 | + } |
|
943 | + $tag = $admin ? 'span' : 'div'; |
|
944 | + $attributes = ! empty($wrap_id) ? " id=\"{$wrap_id}\"" : ''; |
|
945 | + $wrap_class = $admin ? "{$wrap_class} float-left" : $wrap_class; |
|
946 | + $attributes .= ! empty($wrap_class) |
|
947 | + ? " class=\"{$wrap_class} powered-by-event-espresso-credit\"" |
|
948 | + : ' class="powered-by-event-espresso-credit"'; |
|
949 | + $query_args = array_merge( |
|
950 | + array( |
|
951 | + 'ap_id' => EE_Registry::instance()->CFG->admin->affiliate_id(), |
|
952 | + 'utm_source' => 'powered_by_event_espresso', |
|
953 | + 'utm_medium' => 'link', |
|
954 | + 'utm_campaign' => 'powered_by', |
|
955 | + ), |
|
956 | + $query_args |
|
957 | + ); |
|
958 | + $powered_by = apply_filters( |
|
959 | + 'FHEE__EEH_Template__powered_by_event_espresso_text', |
|
960 | + $admin ? 'Event Espresso - ' . EVENT_ESPRESSO_VERSION : 'Event Espresso' |
|
961 | + ); |
|
962 | + $url = add_query_arg($query_args, 'https://eventespresso.com/'); |
|
963 | + $url = apply_filters('FHEE__EEH_Template__powered_by_event_espresso__url', $url); |
|
964 | + return (string) apply_filters( |
|
965 | + 'FHEE__EEH_Template__powered_by_event_espresso__html', |
|
966 | + sprintf( |
|
967 | + esc_html_x( |
|
968 | + '%3$s%1$sOnline event registration and ticketing powered by %2$s%3$s', |
|
969 | + 'Online event registration and ticketing powered by [link to eventespresso.com]', |
|
970 | + 'event_espresso' |
|
971 | + ), |
|
972 | + "<{$tag}{$attributes}>", |
|
973 | + "<a href=\"{$url}\" target=\"_blank\" rel=\"nofollow\">{$powered_by}</a></{$tag}>", |
|
974 | + $admin ? '' : '<br />' |
|
975 | + ), |
|
976 | + $wrap_class, |
|
977 | + $wrap_id |
|
978 | + ); |
|
979 | + } |
|
980 | 980 | } |
981 | 981 | |
982 | 982 | |
983 | 983 | |
984 | 984 | |
985 | 985 | if (! function_exists('espresso_pagination')) { |
986 | - /** |
|
987 | - * espresso_pagination |
|
988 | - * |
|
989 | - * @access public |
|
990 | - * @return void |
|
991 | - */ |
|
992 | - function espresso_pagination() |
|
993 | - { |
|
994 | - global $wp_query; |
|
995 | - $big = 999999999; // need an unlikely integer |
|
996 | - $pagination = paginate_links( |
|
997 | - array( |
|
998 | - 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), |
|
999 | - 'format' => '?paged=%#%', |
|
1000 | - 'current' => max(1, get_query_var('paged')), |
|
1001 | - 'total' => $wp_query->max_num_pages, |
|
1002 | - 'show_all' => true, |
|
1003 | - 'end_size' => 10, |
|
1004 | - 'mid_size' => 6, |
|
1005 | - 'prev_next' => true, |
|
1006 | - 'prev_text' => __('‹ PREV', 'event_espresso'), |
|
1007 | - 'next_text' => __('NEXT ›', 'event_espresso'), |
|
1008 | - 'type' => 'plain', |
|
1009 | - 'add_args' => false, |
|
1010 | - 'add_fragment' => '', |
|
1011 | - ) |
|
1012 | - ); |
|
1013 | - echo ! empty($pagination) ? '<div class="ee-pagination-dv ee-clear-float">' . $pagination . '</div>' : ''; |
|
1014 | - } |
|
986 | + /** |
|
987 | + * espresso_pagination |
|
988 | + * |
|
989 | + * @access public |
|
990 | + * @return void |
|
991 | + */ |
|
992 | + function espresso_pagination() |
|
993 | + { |
|
994 | + global $wp_query; |
|
995 | + $big = 999999999; // need an unlikely integer |
|
996 | + $pagination = paginate_links( |
|
997 | + array( |
|
998 | + 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), |
|
999 | + 'format' => '?paged=%#%', |
|
1000 | + 'current' => max(1, get_query_var('paged')), |
|
1001 | + 'total' => $wp_query->max_num_pages, |
|
1002 | + 'show_all' => true, |
|
1003 | + 'end_size' => 10, |
|
1004 | + 'mid_size' => 6, |
|
1005 | + 'prev_next' => true, |
|
1006 | + 'prev_text' => __('‹ PREV', 'event_espresso'), |
|
1007 | + 'next_text' => __('NEXT ›', 'event_espresso'), |
|
1008 | + 'type' => 'plain', |
|
1009 | + 'add_args' => false, |
|
1010 | + 'add_fragment' => '', |
|
1011 | + ) |
|
1012 | + ); |
|
1013 | + echo ! empty($pagination) ? '<div class="ee-pagination-dv ee-clear-float">' . $pagination . '</div>' : ''; |
|
1014 | + } |
|
1015 | 1015 | } |
1016 | 1016 | \ No newline at end of file |
@@ -4,7 +4,7 @@ discard block |
||
4 | 4 | use EventEspresso\core\exceptions\InvalidInterfaceException; |
5 | 5 | use EventEspresso\core\services\loaders\LoaderFactory; |
6 | 6 | |
7 | -if (! function_exists('espresso_get_template_part')) { |
|
7 | +if ( ! function_exists('espresso_get_template_part')) { |
|
8 | 8 | /** |
9 | 9 | * espresso_get_template_part |
10 | 10 | * basically a copy of the WordPress get_template_part() function but uses EEH_Template::locate_template() instead, and doesn't add base versions of files |
@@ -21,7 +21,7 @@ discard block |
||
21 | 21 | } |
22 | 22 | |
23 | 23 | |
24 | -if (! function_exists('espresso_get_object_css_class')) { |
|
24 | +if ( ! function_exists('espresso_get_object_css_class')) { |
|
25 | 25 | /** |
26 | 26 | * espresso_get_object_css_class - attempts to generate a css class based on the type of EE object passed |
27 | 27 | * |
@@ -69,9 +69,9 @@ discard block |
||
69 | 69 | */ |
70 | 70 | public static function load_espresso_theme_functions() |
71 | 71 | { |
72 | - if (! defined('EE_THEME_FUNCTIONS_LOADED')) { |
|
73 | - if (is_readable(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php')) { |
|
74 | - require_once(EE_PUBLIC . EE_Config::get_current_theme() . '/functions.php'); |
|
72 | + if ( ! defined('EE_THEME_FUNCTIONS_LOADED')) { |
|
73 | + if (is_readable(EE_PUBLIC.EE_Config::get_current_theme().'/functions.php')) { |
|
74 | + require_once(EE_PUBLIC.EE_Config::get_current_theme().'/functions.php'); |
|
75 | 75 | } |
76 | 76 | } |
77 | 77 | } |
@@ -85,16 +85,16 @@ discard block |
||
85 | 85 | public static function get_espresso_themes() |
86 | 86 | { |
87 | 87 | if (empty(EEH_Template::$_espresso_themes)) { |
88 | - $espresso_themes = glob(EE_PUBLIC . '*', GLOB_ONLYDIR); |
|
88 | + $espresso_themes = glob(EE_PUBLIC.'*', GLOB_ONLYDIR); |
|
89 | 89 | if (empty($espresso_themes)) { |
90 | 90 | return array(); |
91 | 91 | } |
92 | 92 | if (($key = array_search('global_assets', $espresso_themes)) !== false) { |
93 | - unset($espresso_themes[ $key ]); |
|
93 | + unset($espresso_themes[$key]); |
|
94 | 94 | } |
95 | 95 | EEH_Template::$_espresso_themes = array(); |
96 | 96 | foreach ($espresso_themes as $espresso_theme) { |
97 | - EEH_Template::$_espresso_themes[ basename($espresso_theme) ] = $espresso_theme; |
|
97 | + EEH_Template::$_espresso_themes[basename($espresso_theme)] = $espresso_theme; |
|
98 | 98 | } |
99 | 99 | } |
100 | 100 | return EEH_Template::$_espresso_themes; |
@@ -205,10 +205,10 @@ discard block |
||
205 | 205 | // get array of EE Custom Post Types |
206 | 206 | $EE_CPTs = $custom_post_types->getDefinitions(); |
207 | 207 | // build template name based on request |
208 | - if (isset($EE_CPTs[ $post_type ])) { |
|
208 | + if (isset($EE_CPTs[$post_type])) { |
|
209 | 209 | $archive_or_single = is_archive() ? 'archive' : ''; |
210 | 210 | $archive_or_single = is_single() ? 'single' : $archive_or_single; |
211 | - $templates = $archive_or_single . '-' . $post_type . '.php'; |
|
211 | + $templates = $archive_or_single.'-'.$post_type.'.php'; |
|
212 | 212 | } |
213 | 213 | } |
214 | 214 | // currently active EE template theme |
@@ -217,18 +217,18 @@ discard block |
||
217 | 217 | // array of paths to folders that may contain templates |
218 | 218 | $template_folder_paths = array( |
219 | 219 | // first check the /wp-content/uploads/espresso/templates/(current EE theme)/ folder for an EE theme template file |
220 | - EVENT_ESPRESSO_TEMPLATE_DIR . $current_theme, |
|
220 | + EVENT_ESPRESSO_TEMPLATE_DIR.$current_theme, |
|
221 | 221 | // then in the root of the /wp-content/uploads/espresso/templates/ folder |
222 | 222 | EVENT_ESPRESSO_TEMPLATE_DIR, |
223 | 223 | ); |
224 | 224 | |
225 | 225 | // add core plugin folders for checking only if we're not $check_if_custom |
226 | - if (! $check_if_custom) { |
|
227 | - $core_paths = array( |
|
226 | + if ( ! $check_if_custom) { |
|
227 | + $core_paths = array( |
|
228 | 228 | // in the /wp-content/plugins/(EE4 folder)/public/(current EE theme)/ folder within the plugin |
229 | - EE_PUBLIC . $current_theme, |
|
229 | + EE_PUBLIC.$current_theme, |
|
230 | 230 | // in the /wp-content/plugins/(EE4 folder)/core/templates/(current EE theme)/ folder within the plugin |
231 | - EE_TEMPLATES . $current_theme, |
|
231 | + EE_TEMPLATES.$current_theme, |
|
232 | 232 | // or maybe relative from the plugin root: /wp-content/plugins/(EE4 folder)/ |
233 | 233 | EE_PLUGIN_DIR_PATH, |
234 | 234 | ); |
@@ -261,10 +261,10 @@ discard block |
||
261 | 261 | ); |
262 | 262 | if ($common_base_path !== '') { |
263 | 263 | // both paths have a common base, so just tack the filename onto our search path |
264 | - $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $file_name; |
|
264 | + $resolved_path = EEH_File::end_with_directory_separator($template_folder_path).$file_name; |
|
265 | 265 | } else { |
266 | 266 | // no common base path, so let's just concatenate |
267 | - $resolved_path = EEH_File::end_with_directory_separator($template_folder_path) . $template; |
|
267 | + $resolved_path = EEH_File::end_with_directory_separator($template_folder_path).$template; |
|
268 | 268 | } |
269 | 269 | // build up our template locations array by adding our resolved paths |
270 | 270 | $full_template_paths[] = $resolved_path; |
@@ -272,7 +272,7 @@ discard block |
||
272 | 272 | // if $template is an absolute path, then we'll tack it onto the start of our array so that it gets searched first |
273 | 273 | array_unshift($full_template_paths, $template); |
274 | 274 | // path to the directory of the current theme: /wp-content/themes/(current WP theme)/ |
275 | - array_unshift($full_template_paths, get_stylesheet_directory() . '/' . $file_name); |
|
275 | + array_unshift($full_template_paths, get_stylesheet_directory().'/'.$file_name); |
|
276 | 276 | } |
277 | 277 | // filter final array of full template paths |
278 | 278 | $full_template_paths = apply_filters( |
@@ -361,11 +361,11 @@ discard block |
||
361 | 361 | $template_args = (array) apply_filters('FHEE__EEH_Template__display_template__template_args', $template_args); |
362 | 362 | |
363 | 363 | // you gimme nuttin - YOU GET NUTTIN !! |
364 | - if (! $template_path || ! is_readable($template_path)) { |
|
364 | + if ( ! $template_path || ! is_readable($template_path)) { |
|
365 | 365 | return ''; |
366 | 366 | } |
367 | 367 | // if $template_args are not in an array, then make it so |
368 | - if (! is_array($template_args) && ! is_object($template_args)) { |
|
368 | + if ( ! is_array($template_args) && ! is_object($template_args)) { |
|
369 | 369 | $template_args = array($template_args); |
370 | 370 | } |
371 | 371 | extract($template_args, EXTR_SKIP); |
@@ -403,11 +403,11 @@ discard block |
||
403 | 403 | public static function get_object_css_class($object = null, $prefix = '', $suffix = '') |
404 | 404 | { |
405 | 405 | // in the beginning... |
406 | - $prefix = ! empty($prefix) ? rtrim($prefix, '-') . '-' : ''; |
|
406 | + $prefix = ! empty($prefix) ? rtrim($prefix, '-').'-' : ''; |
|
407 | 407 | // da muddle |
408 | 408 | $class = ''; |
409 | 409 | // the end |
410 | - $suffix = ! empty($suffix) ? '-' . ltrim($suffix, '-') : ''; |
|
410 | + $suffix = ! empty($suffix) ? '-'.ltrim($suffix, '-') : ''; |
|
411 | 411 | // is the passed object an EE object ? |
412 | 412 | if ($object instanceof EE_Base_Class) { |
413 | 413 | // grab the exact type of object |
@@ -417,10 +417,10 @@ discard block |
||
417 | 417 | // no specifics just yet... |
418 | 418 | default: |
419 | 419 | $class = strtolower(str_replace('_', '-', $obj_class)); |
420 | - $class .= method_exists($obj_class, 'name') ? '-' . sanitize_title($object->name()) : ''; |
|
420 | + $class .= method_exists($obj_class, 'name') ? '-'.sanitize_title($object->name()) : ''; |
|
421 | 421 | } |
422 | 422 | } |
423 | - return $prefix . $class . $suffix; |
|
423 | + return $prefix.$class.$suffix; |
|
424 | 424 | } |
425 | 425 | |
426 | 426 | |
@@ -461,7 +461,7 @@ discard block |
||
461 | 461 | // was a country ISO code passed ? if so generate currency config object for that country |
462 | 462 | $mny = $CNT_ISO !== '' ? new EE_Currency_Config($CNT_ISO) : null; |
463 | 463 | // verify results |
464 | - if (! $mny instanceof EE_Currency_Config) { |
|
464 | + if ( ! $mny instanceof EE_Currency_Config) { |
|
465 | 465 | // set default config country currency settings |
466 | 466 | $mny = EE_Registry::instance()->CFG->currency instanceof EE_Currency_Config |
467 | 467 | ? EE_Registry::instance()->CFG->currency |
@@ -470,23 +470,23 @@ discard block |
||
470 | 470 | // format float |
471 | 471 | $amount_formatted = number_format($amount, $mny->dec_plc, $mny->dec_mrk, $mny->thsnds); |
472 | 472 | // add formatting ? |
473 | - if (! $return_raw) { |
|
473 | + if ( ! $return_raw) { |
|
474 | 474 | // add currency sign |
475 | 475 | if ($mny->sign_b4) { |
476 | 476 | if ($amount >= 0) { |
477 | - $amount_formatted = $mny->sign . $amount_formatted; |
|
477 | + $amount_formatted = $mny->sign.$amount_formatted; |
|
478 | 478 | } else { |
479 | - $amount_formatted = '-' . $mny->sign . str_replace('-', '', $amount_formatted); |
|
479 | + $amount_formatted = '-'.$mny->sign.str_replace('-', '', $amount_formatted); |
|
480 | 480 | } |
481 | 481 | } else { |
482 | - $amount_formatted = $amount_formatted . $mny->sign; |
|
482 | + $amount_formatted = $amount_formatted.$mny->sign; |
|
483 | 483 | } |
484 | 484 | |
485 | 485 | // filter to allow global setting of display_code |
486 | 486 | $display_code = apply_filters('FHEE__EEH_Template__format_currency__display_code', $display_code); |
487 | 487 | |
488 | 488 | // add currency code ? |
489 | - $amount_formatted = $display_code ? $amount_formatted . ' <span class="' . $cur_code_span_class . '">(' . $mny->code . ')</span>' : $amount_formatted; |
|
489 | + $amount_formatted = $display_code ? $amount_formatted.' <span class="'.$cur_code_span_class.'">('.$mny->code.')</span>' : $amount_formatted; |
|
490 | 490 | } |
491 | 491 | // filter results |
492 | 492 | $amount_formatted = apply_filters( |
@@ -523,7 +523,7 @@ discard block |
||
523 | 523 | $plural, |
524 | 524 | $schema |
525 | 525 | ); |
526 | - return $status[ $status_id ]; |
|
526 | + return $status[$status_id]; |
|
527 | 527 | } |
528 | 528 | |
529 | 529 | |
@@ -540,19 +540,19 @@ discard block |
||
540 | 540 | public static function get_button_or_link($url, $label, $class = 'button-primary', $icon = '', $title = '') |
541 | 541 | { |
542 | 542 | $icon_html = ''; |
543 | - if (! empty($icon)) { |
|
543 | + if ( ! empty($icon)) { |
|
544 | 544 | $dashicons = preg_split("(ee-icon |dashicons )", $icon); |
545 | 545 | $dashicons = array_filter($dashicons); |
546 | 546 | $count = count($dashicons); |
547 | 547 | $icon_html .= $count > 1 ? '<span class="ee-composite-dashicon">' : ''; |
548 | 548 | foreach ($dashicons as $dashicon) { |
549 | 549 | $type = strpos($dashicon, 'ee-icon') !== false ? 'ee-icon ' : 'dashicons '; |
550 | - $icon_html .= '<span class="' . $type . $dashicon . '"></span>'; |
|
550 | + $icon_html .= '<span class="'.$type.$dashicon.'"></span>'; |
|
551 | 551 | } |
552 | 552 | $icon_html .= $count > 1 ? '</span>' : ''; |
553 | 553 | } |
554 | - $label = ! empty($icon) ? $icon_html . $label : $label; |
|
555 | - $button = '<a id="' . sanitize_title_with_dashes($label) . '" href="' . esc_url($url) . '" class="' . $class . '" title="' . $title . '">' . $label . '</a>'; |
|
554 | + $label = ! empty($icon) ? $icon_html.$label : $label; |
|
555 | + $button = '<a id="'.sanitize_title_with_dashes($label).'" href="'.esc_url($url).'" class="'.$class.'" title="'.$title.'">'.$label.'</a>'; |
|
556 | 556 | return $button; |
557 | 557 | } |
558 | 558 | |
@@ -575,24 +575,24 @@ discard block |
||
575 | 575 | $help_text = false |
576 | 576 | ) { |
577 | 577 | |
578 | - if (! $page) { |
|
578 | + if ( ! $page) { |
|
579 | 579 | $page = isset($_REQUEST['page']) && ! empty($_REQUEST['page']) ? sanitize_key($_REQUEST['page']) : $page; |
580 | 580 | } |
581 | 581 | |
582 | - if (! $action) { |
|
582 | + if ( ! $action) { |
|
583 | 583 | $action = isset($_REQUEST['action']) && ! empty($_REQUEST['action']) ? sanitize_key($_REQUEST['action']) : $action; |
584 | 584 | } |
585 | 585 | |
586 | 586 | $action = empty($action) ? 'default' : $action; |
587 | 587 | |
588 | 588 | |
589 | - $help_tab_lnk = $page . '-' . $action . '-' . $help_tab_id; |
|
589 | + $help_tab_lnk = $page.'-'.$action.'-'.$help_tab_id; |
|
590 | 590 | $icon = ! $icon_style ? ' dashicons-editor-help' : $icon_style; |
591 | 591 | $help_text = ! $help_text ? '' : $help_text; |
592 | - return '<a id="' . $help_tab_lnk . '" class="ee-clickable dashicons espresso-help-tab-lnk ee-icon-size-22' . $icon . '" title="' . esc_attr__( |
|
592 | + return '<a id="'.$help_tab_lnk.'" class="ee-clickable dashicons espresso-help-tab-lnk ee-icon-size-22'.$icon.'" title="'.esc_attr__( |
|
593 | 593 | 'Click to open the \'Help\' tab for more information about this feature.', |
594 | 594 | 'event_espresso' |
595 | - ) . '" > ' . $help_text . ' </a>'; |
|
595 | + ).'" > '.$help_text.' </a>'; |
|
596 | 596 | } |
597 | 597 | |
598 | 598 | |
@@ -609,11 +609,11 @@ discard block |
||
609 | 609 | $id = $tour->get_slug(); |
610 | 610 | $stops = $tour->get_stops(); |
611 | 611 | |
612 | - $content = '<ol style="display:none" id="' . $id . '">'; |
|
612 | + $content = '<ol style="display:none" id="'.$id.'">'; |
|
613 | 613 | |
614 | 614 | foreach ($stops as $stop) { |
615 | - $data_id = ! empty($stop['id']) ? ' data-id="' . $stop['id'] . '"' : ''; |
|
616 | - $data_class = empty($data_id) && ! empty($stop['class']) ? ' data-class="' . $stop['class'] . '"' : ''; |
|
615 | + $data_id = ! empty($stop['id']) ? ' data-id="'.$stop['id'].'"' : ''; |
|
616 | + $data_class = empty($data_id) && ! empty($stop['class']) ? ' data-class="'.$stop['class'].'"' : ''; |
|
617 | 617 | |
618 | 618 | // if container is set to modal then let's make sure we set the options accordingly |
619 | 619 | if (empty($data_id) && empty($data_class)) { |
@@ -621,15 +621,15 @@ discard block |
||
621 | 621 | $stop['options']['expose'] = true; |
622 | 622 | } |
623 | 623 | |
624 | - $custom_class = ! empty($stop['custom_class']) ? ' class="' . $stop['custom_class'] . '"' : ''; |
|
625 | - $button_text = ! empty($stop['button_text']) ? ' data-button="' . $stop['button_text'] . '"' : ''; |
|
624 | + $custom_class = ! empty($stop['custom_class']) ? ' class="'.$stop['custom_class'].'"' : ''; |
|
625 | + $button_text = ! empty($stop['button_text']) ? ' data-button="'.$stop['button_text'].'"' : ''; |
|
626 | 626 | $inner_content = isset($stop['content']) ? $stop['content'] : ''; |
627 | 627 | |
628 | 628 | // options |
629 | 629 | if (isset($stop['options']) && is_array($stop['options'])) { |
630 | 630 | $options = ' data-options="'; |
631 | 631 | foreach ($stop['options'] as $option => $value) { |
632 | - $options .= $option . ':' . $value . ';'; |
|
632 | + $options .= $option.':'.$value.';'; |
|
633 | 633 | } |
634 | 634 | $options .= '"'; |
635 | 635 | } else { |
@@ -637,7 +637,7 @@ discard block |
||
637 | 637 | } |
638 | 638 | |
639 | 639 | // let's put all together |
640 | - $content .= '<li' . $data_id . $data_class . $custom_class . $button_text . $options . '>' . $inner_content . '</li>'; |
|
640 | + $content .= '<li'.$data_id.$data_class.$custom_class.$button_text.$options.'>'.$inner_content.'</li>'; |
|
641 | 641 | } |
642 | 642 | |
643 | 643 | $content .= '</ol>'; |
@@ -661,7 +661,7 @@ discard block |
||
661 | 661 | */ |
662 | 662 | public static function status_legend($status_array, $active_status = '') |
663 | 663 | { |
664 | - if (! is_array($status_array)) { |
|
664 | + if ( ! is_array($status_array)) { |
|
665 | 665 | throw new EE_Error(esc_html__( |
666 | 666 | 'The EEH_Template::status_legend helper required the incoming status_array argument to be an array!', |
667 | 667 | 'event_espresso' |
@@ -670,25 +670,25 @@ discard block |
||
670 | 670 | |
671 | 671 | $setup_array = array(); |
672 | 672 | foreach ($status_array as $item => $status) { |
673 | - $setup_array[ $item ] = array( |
|
674 | - 'class' => 'ee-status-legend ee-status-legend-' . $status, |
|
673 | + $setup_array[$item] = array( |
|
674 | + 'class' => 'ee-status-legend ee-status-legend-'.$status, |
|
675 | 675 | 'desc' => EEH_Template::pretty_status($status, false, 'sentence'), |
676 | 676 | 'status' => $status, |
677 | 677 | ); |
678 | 678 | } |
679 | 679 | |
680 | - $content = '<div class="ee-list-table-legend-container">' . "\n"; |
|
681 | - $content .= '<h4 class="status-legend-title">' . esc_html__('Status Legend', 'event_espresso') . '</h4>' . "\n"; |
|
682 | - $content .= '<dl class="ee-list-table-legend">' . "\n\t"; |
|
680 | + $content = '<div class="ee-list-table-legend-container">'."\n"; |
|
681 | + $content .= '<h4 class="status-legend-title">'.esc_html__('Status Legend', 'event_espresso').'</h4>'."\n"; |
|
682 | + $content .= '<dl class="ee-list-table-legend">'."\n\t"; |
|
683 | 683 | foreach ($setup_array as $item => $details) { |
684 | 684 | $active_class = $active_status == $details['status'] ? ' class="ee-is-active-status"' : ''; |
685 | - $content .= '<dt id="ee-legend-item-tooltip-' . $item . '"' . $active_class . '>' . "\n\t\t"; |
|
686 | - $content .= '<span class="ee-legend-item-wrap"><span class="' . $details['class'] . '"></span></span>' . "\n\t\t"; |
|
687 | - $content .= '<span class="ee-legend-description">' . $details['desc'] . '</span>' . "\n\t"; |
|
688 | - $content .= '</dt>' . "\n"; |
|
685 | + $content .= '<dt id="ee-legend-item-tooltip-'.$item.'"'.$active_class.'>'."\n\t\t"; |
|
686 | + $content .= '<span class="ee-legend-item-wrap"><span class="'.$details['class'].'"></span></span>'."\n\t\t"; |
|
687 | + $content .= '<span class="ee-legend-description">'.$details['desc'].'</span>'."\n\t"; |
|
688 | + $content .= '</dt>'."\n"; |
|
689 | 689 | } |
690 | - $content .= '</dl>' . "\n"; |
|
691 | - $content .= '</div>' . "\n"; |
|
690 | + $content .= '</dl>'."\n"; |
|
691 | + $content .= '</div>'."\n"; |
|
692 | 692 | return $content; |
693 | 693 | } |
694 | 694 | |
@@ -834,8 +834,8 @@ discard block |
||
834 | 834 | ); |
835 | 835 | } else { |
836 | 836 | $items_label = array( |
837 | - 'single' => '1 ' . esc_html($items_label['single']), |
|
838 | - 'plural' => '%s ' . esc_html($items_label['plural']), |
|
837 | + 'single' => '1 '.esc_html($items_label['single']), |
|
838 | + 'plural' => '%s '.esc_html($items_label['plural']), |
|
839 | 839 | ); |
840 | 840 | } |
841 | 841 | |
@@ -847,7 +847,7 @@ discard block |
||
847 | 847 | |
848 | 848 | $item_label = $total_items > 1 ? sprintf($items_label['plural'], $total_items) : $items_label['single']; |
849 | 849 | |
850 | - $output = '<span class="displaying-num">' . $item_label . '</span>'; |
|
850 | + $output = '<span class="displaying-num">'.$item_label.'</span>'; |
|
851 | 851 | |
852 | 852 | if ($current === 1) { |
853 | 853 | $disable_first = ' disabled'; |
@@ -858,7 +858,7 @@ discard block |
||
858 | 858 | |
859 | 859 | $page_links[] = sprintf( |
860 | 860 | "<a class='%s' title='%s' href='%s'>%s</a>", |
861 | - 'first-page' . $disable_first, |
|
861 | + 'first-page'.$disable_first, |
|
862 | 862 | esc_attr__('Go to the first page', 'event_espresso'), |
863 | 863 | esc_url(remove_query_arg($paged_arg_name, $url)), |
864 | 864 | '«' |
@@ -866,13 +866,13 @@ discard block |
||
866 | 866 | |
867 | 867 | $page_links[] = sprintf( |
868 | 868 | '<a class="%s" title="%s" href="%s">%s</a>', |
869 | - 'prev-page' . $disable_first, |
|
869 | + 'prev-page'.$disable_first, |
|
870 | 870 | esc_attr__('Go to the previous page', 'event_espresso'), |
871 | 871 | esc_url(add_query_arg($paged_arg_name, max(1, $current - 1), $url)), |
872 | 872 | '‹' |
873 | 873 | ); |
874 | 874 | |
875 | - if (! $show_num_field) { |
|
875 | + if ( ! $show_num_field) { |
|
876 | 876 | $html_current_page = $current; |
877 | 877 | } else { |
878 | 878 | $html_current_page = sprintf( |
@@ -887,7 +887,7 @@ discard block |
||
887 | 887 | '<span class="total-pages">%s</span>', |
888 | 888 | number_format_i18n($total_pages) |
889 | 889 | ); |
890 | - $page_links[] = sprintf( |
|
890 | + $page_links[] = sprintf( |
|
891 | 891 | _x('%3$s%1$s of %2$s%4$s', 'paging', 'event_espresso'), |
892 | 892 | $html_current_page, |
893 | 893 | $html_total_pages, |
@@ -897,7 +897,7 @@ discard block |
||
897 | 897 | |
898 | 898 | $page_links[] = sprintf( |
899 | 899 | '<a class="%s" title="%s" href="%s">%s</a>', |
900 | - 'next-page' . $disable_last, |
|
900 | + 'next-page'.$disable_last, |
|
901 | 901 | esc_attr__('Go to the next page', 'event_espresso'), |
902 | 902 | esc_url(add_query_arg($paged_arg_name, min($total_pages, $current + 1), $url)), |
903 | 903 | '›' |
@@ -905,13 +905,13 @@ discard block |
||
905 | 905 | |
906 | 906 | $page_links[] = sprintf( |
907 | 907 | '<a class="%s" title="%s" href="%s">%s</a>', |
908 | - 'last-page' . $disable_last, |
|
908 | + 'last-page'.$disable_last, |
|
909 | 909 | esc_attr__('Go to the last page', 'event_espresso'), |
910 | 910 | esc_url(add_query_arg($paged_arg_name, $total_pages, $url)), |
911 | 911 | '»' |
912 | 912 | ); |
913 | 913 | |
914 | - $output .= "\n" . '<span class="pagination-links">' . join("\n", $page_links) . '</span>'; |
|
914 | + $output .= "\n".'<span class="pagination-links">'.join("\n", $page_links).'</span>'; |
|
915 | 915 | // set page class |
916 | 916 | if ($total_pages) { |
917 | 917 | $page_class = $total_pages < 2 ? ' one-page' : ''; |
@@ -919,7 +919,7 @@ discard block |
||
919 | 919 | $page_class = ' no-pages'; |
920 | 920 | } |
921 | 921 | |
922 | - return '<div class="tablenav"><div class="tablenav-pages' . $page_class . '">' . $output . '</div></div>'; |
|
922 | + return '<div class="tablenav"><div class="tablenav-pages'.$page_class.'">'.$output.'</div></div>'; |
|
923 | 923 | } |
924 | 924 | |
925 | 925 | |
@@ -957,7 +957,7 @@ discard block |
||
957 | 957 | ); |
958 | 958 | $powered_by = apply_filters( |
959 | 959 | 'FHEE__EEH_Template__powered_by_event_espresso_text', |
960 | - $admin ? 'Event Espresso - ' . EVENT_ESPRESSO_VERSION : 'Event Espresso' |
|
960 | + $admin ? 'Event Espresso - '.EVENT_ESPRESSO_VERSION : 'Event Espresso' |
|
961 | 961 | ); |
962 | 962 | $url = add_query_arg($query_args, 'https://eventespresso.com/'); |
963 | 963 | $url = apply_filters('FHEE__EEH_Template__powered_by_event_espresso__url', $url); |
@@ -982,7 +982,7 @@ discard block |
||
982 | 982 | |
983 | 983 | |
984 | 984 | |
985 | -if (! function_exists('espresso_pagination')) { |
|
985 | +if ( ! function_exists('espresso_pagination')) { |
|
986 | 986 | /** |
987 | 987 | * espresso_pagination |
988 | 988 | * |
@@ -1010,6 +1010,6 @@ discard block |
||
1010 | 1010 | 'add_fragment' => '', |
1011 | 1011 | ) |
1012 | 1012 | ); |
1013 | - echo ! empty($pagination) ? '<div class="ee-pagination-dv ee-clear-float">' . $pagination . '</div>' : ''; |
|
1013 | + echo ! empty($pagination) ? '<div class="ee-pagination-dv ee-clear-float">'.$pagination.'</div>' : ''; |
|
1014 | 1014 | } |
1015 | 1015 | } |
1016 | 1016 | \ No newline at end of file |
@@ -130,7 +130,7 @@ discard block |
||
130 | 130 | /** |
131 | 131 | * For verifying that a variable is indeed an array, else throw an EE_Error |
132 | 132 | * @param type $variable_to_test |
133 | - * @param type $variable_name |
|
133 | + * @param string $variable_name |
|
134 | 134 | * @param type $allow_empty one of 'allow_empty' or 'do_not_allow_empty' |
135 | 135 | * @return void |
136 | 136 | * @throws EE_Error |
@@ -161,7 +161,7 @@ discard block |
||
161 | 161 | * for verifying that a variable is one of the string optiosn supplied |
162 | 162 | * @param mixed $variable_to_test |
163 | 163 | * @param mixed $variable_name the name you've given the variable. Eg, '$foo'. THis helps in producing better error messages |
164 | - * @param array $string_options an array of acceptable values |
|
164 | + * @param string[] $string_options an array of acceptable values |
|
165 | 165 | * @return void |
166 | 166 | * @throws EE_Error |
167 | 167 | */ |
@@ -29,152 +29,152 @@ |
||
29 | 29 | |
30 | 30 | |
31 | 31 | |
32 | - /** |
|
33 | - * Throws an EE_Error if $variabel_to_test isn't an array of objects of class $class_name |
|
34 | - * @param mixed $variable_to_test |
|
35 | - * @param string $name_of_variable helpful in throwing intelligent errors |
|
36 | - * @param string $class_name eg EE_Answer, EE_Transaction, etc. |
|
37 | - * @param string $allow_null one of 'allow_null', or 'do_not_allow_null' |
|
38 | - * @return void |
|
39 | - * @throws EE_Error (indirectly) |
|
40 | - */ |
|
41 | - public static function verify_is_array_of($variable_to_test, $name_of_variable, $class_name, $allow_null = 'allow_null') |
|
42 | - { |
|
43 | - if (!WP_DEBUG) { |
|
44 | - return; |
|
45 | - } |
|
46 | - self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
47 | - if ('allow_null' == $allow_null && is_null($variable_to_test)) { |
|
48 | - return; |
|
49 | - } |
|
50 | - self::verify_is_array($variable_to_test, $name_of_variable); |
|
51 | - foreach ($variable_to_test as $key => $array_element) { |
|
52 | - self::verify_instanceof($array_element, $key, $class_name); |
|
53 | - } |
|
54 | - } |
|
55 | - |
|
56 | - |
|
57 | - |
|
58 | - |
|
59 | - |
|
60 | - /** |
|
61 | - * throws an EE_Error if $variable_to_test is null |
|
62 | - * @param mixed $variable_to_test |
|
63 | - * @param string $name_of_variable helpful for throwing intelligent errors |
|
64 | - * @return void |
|
65 | - * @throws EE_Error |
|
66 | - */ |
|
67 | - public static function verify_isnt_null($variable_to_test, $name_of_variable) |
|
68 | - { |
|
69 | - if (!WP_DEBUG) { |
|
70 | - return; |
|
71 | - } |
|
72 | - if ($variable_to_test == null && $variable_to_test != 0 && $variable_to_test != false) { |
|
73 | - $error[] = __('Variable named %s is null.', 'event_espresso'); |
|
74 | - $error[] = __("Consider looking at the stack trace to see why it wasn't set.", 'event_espresso'); |
|
75 | - throw new EE_Error(sprintf(implode(",", $error), $name_of_variable, $name_of_variable)); |
|
76 | - } |
|
77 | - } |
|
78 | - |
|
79 | - /** |
|
80 | - * When WP_DEBUG is activted, throws an error if $expression_to_test is false. |
|
81 | - * @param boolean $expression_to_test |
|
82 | - * @param string $expression_string_representation a string representation of your expression |
|
83 | - * for example, if your expression were $var1==23, then this should be '$var1==23' |
|
84 | - * @return void |
|
85 | - * @throws EE_Error |
|
86 | - */ |
|
87 | - public static function verify_is_true($expression_to_test, $expression_string_representation) |
|
88 | - { |
|
89 | - if (!WP_DEBUG) { |
|
90 | - return; |
|
91 | - } |
|
92 | - if (!$expression_to_test) { |
|
93 | - $error[] = __('Template error.', 'event_espresso'); |
|
94 | - $error[] = __("%s evaluated to false, but it must be true!", 'event_espresso'); |
|
95 | - throw new EE_Error(sprintf(implode(",", $error), $expression_string_representation)); |
|
96 | - } |
|
97 | - } |
|
98 | - |
|
99 | - |
|
100 | - |
|
101 | - |
|
102 | - |
|
103 | - /** |
|
104 | - * For verifying that a variable is indeed an object of class $class_name |
|
105 | - * @param mixed $variable_to_test |
|
106 | - * @param string $name_of_variable helpful when throwing errors |
|
107 | - * @param string $class_name eg, EE_Answer, |
|
108 | - * @return void |
|
109 | - * @throws EE_Error |
|
110 | - */ |
|
111 | - public static function verify_instanceof($variable_to_test, $name_of_variable, $class_name, $allow_null = 'do_not_allow_null') |
|
112 | - { |
|
113 | - if (!WP_DEBUG) { |
|
114 | - return; |
|
115 | - } |
|
116 | - self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
117 | - if ($allow_null == 'allow_null' && is_null($variable_to_test)) { |
|
118 | - return; |
|
119 | - } |
|
120 | - if ($variable_to_test == null || ! ( $variable_to_test instanceof $class_name )) { |
|
121 | - $msg[] = __('Variable %s is not of the correct type.', 'event_espresso'); |
|
122 | - $msg[] = __("It should be of type %s", 'event_espresso'); |
|
123 | - throw new EE_Error(sprintf(implode(",", $msg), $name_of_variable, $name_of_variable, $class_name)); |
|
124 | - } |
|
125 | - } |
|
126 | - |
|
127 | - |
|
128 | - |
|
129 | - |
|
130 | - |
|
131 | - /** |
|
132 | - * For verifying that a variable is indeed an array, else throw an EE_Error |
|
133 | - * @param type $variable_to_test |
|
134 | - * @param type $variable_name |
|
135 | - * @param type $allow_empty one of 'allow_empty' or 'do_not_allow_empty' |
|
136 | - * @return void |
|
137 | - * @throws EE_Error |
|
138 | - */ |
|
139 | - public static function verify_is_array($variable_to_test, $variable_name, $allow_empty = 'allow_empty') |
|
140 | - { |
|
141 | - if (!WP_DEBUG) { |
|
142 | - return; |
|
143 | - } |
|
144 | - self::verify_argument_is_one_of($allow_empty, $variable_name, array('allow_empty','do_not_allow_empty')); |
|
145 | - if (empty($variable_to_test) && 'allow_empty' == $allow_empty) { |
|
146 | - return; |
|
147 | - } |
|
148 | - if (!is_array($variable_to_test)) { |
|
149 | - $error[] = __('Variable %s should be an array, but it is not.', 'event_espresso'); |
|
150 | - $error[] = __("Its value is, instead '%s'", 'event_espresso'); |
|
151 | - throw new EE_Error(sprintf(implode(",", $error), $variable_name, $variable_name, $variable_to_test)); |
|
152 | - } |
|
153 | - } |
|
154 | - |
|
155 | - |
|
156 | - |
|
157 | - |
|
158 | - |
|
159 | - |
|
160 | - |
|
161 | - /** |
|
162 | - * for verifying that a variable is one of the string optiosn supplied |
|
163 | - * @param mixed $variable_to_test |
|
164 | - * @param mixed $variable_name the name you've given the variable. Eg, '$foo'. THis helps in producing better error messages |
|
165 | - * @param array $string_options an array of acceptable values |
|
166 | - * @return void |
|
167 | - * @throws EE_Error |
|
168 | - */ |
|
169 | - public static function verify_argument_is_one_of($variable_to_test, $variable_name, $string_options) |
|
170 | - { |
|
171 | - if (!WP_DEBUG) { |
|
172 | - return; |
|
173 | - } |
|
174 | - if (!in_array($variable_to_test, $string_options)) { |
|
175 | - $msg[0] = __('Malconfigured template.', 'event_espresso'); |
|
176 | - $msg[1] = __("Variable named '%s' was set to '%s'. It can only be one of '%s'", 'event_espresso'); |
|
177 | - throw new EE_Error(sprintf(implode("||", $msg), $variable_name, $variable_to_test, implode("', '", $string_options))); |
|
178 | - } |
|
179 | - } |
|
32 | + /** |
|
33 | + * Throws an EE_Error if $variabel_to_test isn't an array of objects of class $class_name |
|
34 | + * @param mixed $variable_to_test |
|
35 | + * @param string $name_of_variable helpful in throwing intelligent errors |
|
36 | + * @param string $class_name eg EE_Answer, EE_Transaction, etc. |
|
37 | + * @param string $allow_null one of 'allow_null', or 'do_not_allow_null' |
|
38 | + * @return void |
|
39 | + * @throws EE_Error (indirectly) |
|
40 | + */ |
|
41 | + public static function verify_is_array_of($variable_to_test, $name_of_variable, $class_name, $allow_null = 'allow_null') |
|
42 | + { |
|
43 | + if (!WP_DEBUG) { |
|
44 | + return; |
|
45 | + } |
|
46 | + self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
47 | + if ('allow_null' == $allow_null && is_null($variable_to_test)) { |
|
48 | + return; |
|
49 | + } |
|
50 | + self::verify_is_array($variable_to_test, $name_of_variable); |
|
51 | + foreach ($variable_to_test as $key => $array_element) { |
|
52 | + self::verify_instanceof($array_element, $key, $class_name); |
|
53 | + } |
|
54 | + } |
|
55 | + |
|
56 | + |
|
57 | + |
|
58 | + |
|
59 | + |
|
60 | + /** |
|
61 | + * throws an EE_Error if $variable_to_test is null |
|
62 | + * @param mixed $variable_to_test |
|
63 | + * @param string $name_of_variable helpful for throwing intelligent errors |
|
64 | + * @return void |
|
65 | + * @throws EE_Error |
|
66 | + */ |
|
67 | + public static function verify_isnt_null($variable_to_test, $name_of_variable) |
|
68 | + { |
|
69 | + if (!WP_DEBUG) { |
|
70 | + return; |
|
71 | + } |
|
72 | + if ($variable_to_test == null && $variable_to_test != 0 && $variable_to_test != false) { |
|
73 | + $error[] = __('Variable named %s is null.', 'event_espresso'); |
|
74 | + $error[] = __("Consider looking at the stack trace to see why it wasn't set.", 'event_espresso'); |
|
75 | + throw new EE_Error(sprintf(implode(",", $error), $name_of_variable, $name_of_variable)); |
|
76 | + } |
|
77 | + } |
|
78 | + |
|
79 | + /** |
|
80 | + * When WP_DEBUG is activted, throws an error if $expression_to_test is false. |
|
81 | + * @param boolean $expression_to_test |
|
82 | + * @param string $expression_string_representation a string representation of your expression |
|
83 | + * for example, if your expression were $var1==23, then this should be '$var1==23' |
|
84 | + * @return void |
|
85 | + * @throws EE_Error |
|
86 | + */ |
|
87 | + public static function verify_is_true($expression_to_test, $expression_string_representation) |
|
88 | + { |
|
89 | + if (!WP_DEBUG) { |
|
90 | + return; |
|
91 | + } |
|
92 | + if (!$expression_to_test) { |
|
93 | + $error[] = __('Template error.', 'event_espresso'); |
|
94 | + $error[] = __("%s evaluated to false, but it must be true!", 'event_espresso'); |
|
95 | + throw new EE_Error(sprintf(implode(",", $error), $expression_string_representation)); |
|
96 | + } |
|
97 | + } |
|
98 | + |
|
99 | + |
|
100 | + |
|
101 | + |
|
102 | + |
|
103 | + /** |
|
104 | + * For verifying that a variable is indeed an object of class $class_name |
|
105 | + * @param mixed $variable_to_test |
|
106 | + * @param string $name_of_variable helpful when throwing errors |
|
107 | + * @param string $class_name eg, EE_Answer, |
|
108 | + * @return void |
|
109 | + * @throws EE_Error |
|
110 | + */ |
|
111 | + public static function verify_instanceof($variable_to_test, $name_of_variable, $class_name, $allow_null = 'do_not_allow_null') |
|
112 | + { |
|
113 | + if (!WP_DEBUG) { |
|
114 | + return; |
|
115 | + } |
|
116 | + self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
117 | + if ($allow_null == 'allow_null' && is_null($variable_to_test)) { |
|
118 | + return; |
|
119 | + } |
|
120 | + if ($variable_to_test == null || ! ( $variable_to_test instanceof $class_name )) { |
|
121 | + $msg[] = __('Variable %s is not of the correct type.', 'event_espresso'); |
|
122 | + $msg[] = __("It should be of type %s", 'event_espresso'); |
|
123 | + throw new EE_Error(sprintf(implode(",", $msg), $name_of_variable, $name_of_variable, $class_name)); |
|
124 | + } |
|
125 | + } |
|
126 | + |
|
127 | + |
|
128 | + |
|
129 | + |
|
130 | + |
|
131 | + /** |
|
132 | + * For verifying that a variable is indeed an array, else throw an EE_Error |
|
133 | + * @param type $variable_to_test |
|
134 | + * @param type $variable_name |
|
135 | + * @param type $allow_empty one of 'allow_empty' or 'do_not_allow_empty' |
|
136 | + * @return void |
|
137 | + * @throws EE_Error |
|
138 | + */ |
|
139 | + public static function verify_is_array($variable_to_test, $variable_name, $allow_empty = 'allow_empty') |
|
140 | + { |
|
141 | + if (!WP_DEBUG) { |
|
142 | + return; |
|
143 | + } |
|
144 | + self::verify_argument_is_one_of($allow_empty, $variable_name, array('allow_empty','do_not_allow_empty')); |
|
145 | + if (empty($variable_to_test) && 'allow_empty' == $allow_empty) { |
|
146 | + return; |
|
147 | + } |
|
148 | + if (!is_array($variable_to_test)) { |
|
149 | + $error[] = __('Variable %s should be an array, but it is not.', 'event_espresso'); |
|
150 | + $error[] = __("Its value is, instead '%s'", 'event_espresso'); |
|
151 | + throw new EE_Error(sprintf(implode(",", $error), $variable_name, $variable_name, $variable_to_test)); |
|
152 | + } |
|
153 | + } |
|
154 | + |
|
155 | + |
|
156 | + |
|
157 | + |
|
158 | + |
|
159 | + |
|
160 | + |
|
161 | + /** |
|
162 | + * for verifying that a variable is one of the string optiosn supplied |
|
163 | + * @param mixed $variable_to_test |
|
164 | + * @param mixed $variable_name the name you've given the variable. Eg, '$foo'. THis helps in producing better error messages |
|
165 | + * @param array $string_options an array of acceptable values |
|
166 | + * @return void |
|
167 | + * @throws EE_Error |
|
168 | + */ |
|
169 | + public static function verify_argument_is_one_of($variable_to_test, $variable_name, $string_options) |
|
170 | + { |
|
171 | + if (!WP_DEBUG) { |
|
172 | + return; |
|
173 | + } |
|
174 | + if (!in_array($variable_to_test, $string_options)) { |
|
175 | + $msg[0] = __('Malconfigured template.', 'event_espresso'); |
|
176 | + $msg[1] = __("Variable named '%s' was set to '%s'. It can only be one of '%s'", 'event_espresso'); |
|
177 | + throw new EE_Error(sprintf(implode("||", $msg), $variable_name, $variable_to_test, implode("', '", $string_options))); |
|
178 | + } |
|
179 | + } |
|
180 | 180 | } |
@@ -40,10 +40,10 @@ discard block |
||
40 | 40 | */ |
41 | 41 | public static function verify_is_array_of($variable_to_test, $name_of_variable, $class_name, $allow_null = 'allow_null') |
42 | 42 | { |
43 | - if (!WP_DEBUG) { |
|
43 | + if ( ! WP_DEBUG) { |
|
44 | 44 | return; |
45 | 45 | } |
46 | - self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
46 | + self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null', 'do_not_allow_null')); |
|
47 | 47 | if ('allow_null' == $allow_null && is_null($variable_to_test)) { |
48 | 48 | return; |
49 | 49 | } |
@@ -66,7 +66,7 @@ discard block |
||
66 | 66 | */ |
67 | 67 | public static function verify_isnt_null($variable_to_test, $name_of_variable) |
68 | 68 | { |
69 | - if (!WP_DEBUG) { |
|
69 | + if ( ! WP_DEBUG) { |
|
70 | 70 | return; |
71 | 71 | } |
72 | 72 | if ($variable_to_test == null && $variable_to_test != 0 && $variable_to_test != false) { |
@@ -86,10 +86,10 @@ discard block |
||
86 | 86 | */ |
87 | 87 | public static function verify_is_true($expression_to_test, $expression_string_representation) |
88 | 88 | { |
89 | - if (!WP_DEBUG) { |
|
89 | + if ( ! WP_DEBUG) { |
|
90 | 90 | return; |
91 | 91 | } |
92 | - if (!$expression_to_test) { |
|
92 | + if ( ! $expression_to_test) { |
|
93 | 93 | $error[] = __('Template error.', 'event_espresso'); |
94 | 94 | $error[] = __("%s evaluated to false, but it must be true!", 'event_espresso'); |
95 | 95 | throw new EE_Error(sprintf(implode(",", $error), $expression_string_representation)); |
@@ -110,14 +110,14 @@ discard block |
||
110 | 110 | */ |
111 | 111 | public static function verify_instanceof($variable_to_test, $name_of_variable, $class_name, $allow_null = 'do_not_allow_null') |
112 | 112 | { |
113 | - if (!WP_DEBUG) { |
|
113 | + if ( ! WP_DEBUG) { |
|
114 | 114 | return; |
115 | 115 | } |
116 | - self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null','do_not_allow_null')); |
|
116 | + self::verify_argument_is_one_of($allow_null, 'allow_null', array('allow_null', 'do_not_allow_null')); |
|
117 | 117 | if ($allow_null == 'allow_null' && is_null($variable_to_test)) { |
118 | 118 | return; |
119 | 119 | } |
120 | - if ($variable_to_test == null || ! ( $variable_to_test instanceof $class_name )) { |
|
120 | + if ($variable_to_test == null || ! ($variable_to_test instanceof $class_name)) { |
|
121 | 121 | $msg[] = __('Variable %s is not of the correct type.', 'event_espresso'); |
122 | 122 | $msg[] = __("It should be of type %s", 'event_espresso'); |
123 | 123 | throw new EE_Error(sprintf(implode(",", $msg), $name_of_variable, $name_of_variable, $class_name)); |
@@ -138,14 +138,14 @@ discard block |
||
138 | 138 | */ |
139 | 139 | public static function verify_is_array($variable_to_test, $variable_name, $allow_empty = 'allow_empty') |
140 | 140 | { |
141 | - if (!WP_DEBUG) { |
|
141 | + if ( ! WP_DEBUG) { |
|
142 | 142 | return; |
143 | 143 | } |
144 | - self::verify_argument_is_one_of($allow_empty, $variable_name, array('allow_empty','do_not_allow_empty')); |
|
144 | + self::verify_argument_is_one_of($allow_empty, $variable_name, array('allow_empty', 'do_not_allow_empty')); |
|
145 | 145 | if (empty($variable_to_test) && 'allow_empty' == $allow_empty) { |
146 | 146 | return; |
147 | 147 | } |
148 | - if (!is_array($variable_to_test)) { |
|
148 | + if ( ! is_array($variable_to_test)) { |
|
149 | 149 | $error[] = __('Variable %s should be an array, but it is not.', 'event_espresso'); |
150 | 150 | $error[] = __("Its value is, instead '%s'", 'event_espresso'); |
151 | 151 | throw new EE_Error(sprintf(implode(",", $error), $variable_name, $variable_name, $variable_to_test)); |
@@ -168,10 +168,10 @@ discard block |
||
168 | 168 | */ |
169 | 169 | public static function verify_argument_is_one_of($variable_to_test, $variable_name, $string_options) |
170 | 170 | { |
171 | - if (!WP_DEBUG) { |
|
171 | + if ( ! WP_DEBUG) { |
|
172 | 172 | return; |
173 | 173 | } |
174 | - if (!in_array($variable_to_test, $string_options)) { |
|
174 | + if ( ! in_array($variable_to_test, $string_options)) { |
|
175 | 175 | $msg[0] = __('Malconfigured template.', 'event_espresso'); |
176 | 176 | $msg[1] = __("Variable named '%s' was set to '%s'. It can only be one of '%s'", 'event_espresso'); |
177 | 177 | throw new EE_Error(sprintf(implode("||", $msg), $variable_name, $variable_to_test, implode("', '", $string_options))); |
@@ -87,7 +87,7 @@ |
||
87 | 87 | * Checks if that value is the one selected |
88 | 88 | * |
89 | 89 | * @param string|int $option_value unnormalized value option (string). How it will appear in the HTML. |
90 | - * @return string |
|
90 | + * @return boolean |
|
91 | 91 | */ |
92 | 92 | protected function _check_if_option_selected($option_value) |
93 | 93 | { |
@@ -15,78 +15,78 @@ |
||
15 | 15 | class EE_Select_Display_Strategy extends EE_Display_Strategy_Base |
16 | 16 | { |
17 | 17 | |
18 | - /** |
|
19 | - * |
|
20 | - * @throws EE_Error |
|
21 | - * @return string of html to display the field |
|
22 | - */ |
|
23 | - public function display() |
|
24 | - { |
|
25 | - if (! $this->_input instanceof EE_Form_Input_With_Options_Base) { |
|
26 | - throw new EE_Error(sprintf(__('Cannot use Select Display Strategy with an input that doesn\'t have options', 'event_espresso'))); |
|
27 | - } |
|
18 | + /** |
|
19 | + * |
|
20 | + * @throws EE_Error |
|
21 | + * @return string of html to display the field |
|
22 | + */ |
|
23 | + public function display() |
|
24 | + { |
|
25 | + if (! $this->_input instanceof EE_Form_Input_With_Options_Base) { |
|
26 | + throw new EE_Error(sprintf(__('Cannot use Select Display Strategy with an input that doesn\'t have options', 'event_espresso'))); |
|
27 | + } |
|
28 | 28 | |
29 | - $html = EEH_HTML::nl(0, 'select'); |
|
30 | - $html .= '<select'; |
|
31 | - $html .= $this->_attributes_string( |
|
32 | - $this->_standard_attributes_array() |
|
33 | - ); |
|
34 | - $html .= '>'; |
|
29 | + $html = EEH_HTML::nl(0, 'select'); |
|
30 | + $html .= '<select'; |
|
31 | + $html .= $this->_attributes_string( |
|
32 | + $this->_standard_attributes_array() |
|
33 | + ); |
|
34 | + $html .= '>'; |
|
35 | 35 | |
36 | - if (EEH_Array::is_multi_dimensional_array($this->_input->options())) { |
|
37 | - EEH_HTML::indent(1, 'optgroup'); |
|
38 | - foreach ($this->_input->options() as $opt_group_label => $opt_group) { |
|
39 | - if (! empty($opt_group_label)) { |
|
40 | - $html .= EEH_HTML::nl(0, 'optgroup') . '<optgroup label="' . esc_attr($opt_group_label) . '">'; |
|
41 | - } |
|
42 | - EEH_HTML::indent(1, 'option'); |
|
43 | - $html .= $this->_display_options($opt_group); |
|
44 | - EEH_HTML::indent(-1, 'option'); |
|
45 | - if (! empty($opt_group_label)) { |
|
46 | - $html .= EEH_HTML::nl(0, 'optgroup') . '</optgroup>'; |
|
47 | - } |
|
48 | - } |
|
49 | - EEH_HTML::indent(-1, 'optgroup'); |
|
50 | - } else { |
|
51 | - $html .= $this->_display_options($this->_input->options()); |
|
52 | - } |
|
36 | + if (EEH_Array::is_multi_dimensional_array($this->_input->options())) { |
|
37 | + EEH_HTML::indent(1, 'optgroup'); |
|
38 | + foreach ($this->_input->options() as $opt_group_label => $opt_group) { |
|
39 | + if (! empty($opt_group_label)) { |
|
40 | + $html .= EEH_HTML::nl(0, 'optgroup') . '<optgroup label="' . esc_attr($opt_group_label) . '">'; |
|
41 | + } |
|
42 | + EEH_HTML::indent(1, 'option'); |
|
43 | + $html .= $this->_display_options($opt_group); |
|
44 | + EEH_HTML::indent(-1, 'option'); |
|
45 | + if (! empty($opt_group_label)) { |
|
46 | + $html .= EEH_HTML::nl(0, 'optgroup') . '</optgroup>'; |
|
47 | + } |
|
48 | + } |
|
49 | + EEH_HTML::indent(-1, 'optgroup'); |
|
50 | + } else { |
|
51 | + $html .= $this->_display_options($this->_input->options()); |
|
52 | + } |
|
53 | 53 | |
54 | - $html .= EEH_HTML::nl(0, 'select') . '</select>'; |
|
55 | - return $html; |
|
56 | - } |
|
54 | + $html .= EEH_HTML::nl(0, 'select') . '</select>'; |
|
55 | + return $html; |
|
56 | + } |
|
57 | 57 | |
58 | 58 | |
59 | 59 | |
60 | - /** |
|
61 | - * Displays a flat list of options as option tags |
|
62 | - * @param array $options |
|
63 | - * @return string |
|
64 | - */ |
|
65 | - protected function _display_options($options) |
|
66 | - { |
|
67 | - $html = ''; |
|
68 | - EEH_HTML::indent(1, 'option'); |
|
69 | - foreach ($options as $value => $display_text) { |
|
70 | - // even if this input uses EE_Text_Normalization if one of the array keys is a numeric string, like "123", |
|
71 | - // PHP will have converted it to a PHP integer (eg 123). So we need to make sure it's a string |
|
72 | - $unnormalized_value = $this->_input->get_normalization_strategy()->unnormalize_one($value); |
|
73 | - $selected = $this->_check_if_option_selected($unnormalized_value) ? ' selected="selected"' : ''; |
|
74 | - $html .= EEH_HTML::nl(0, 'option') . '<option value="' . esc_attr($unnormalized_value) . '"' . $selected . '>' . $display_text . '</option>'; |
|
75 | - } |
|
76 | - EEH_HTML::indent(-1, 'option'); |
|
77 | - return $html; |
|
78 | - } |
|
60 | + /** |
|
61 | + * Displays a flat list of options as option tags |
|
62 | + * @param array $options |
|
63 | + * @return string |
|
64 | + */ |
|
65 | + protected function _display_options($options) |
|
66 | + { |
|
67 | + $html = ''; |
|
68 | + EEH_HTML::indent(1, 'option'); |
|
69 | + foreach ($options as $value => $display_text) { |
|
70 | + // even if this input uses EE_Text_Normalization if one of the array keys is a numeric string, like "123", |
|
71 | + // PHP will have converted it to a PHP integer (eg 123). So we need to make sure it's a string |
|
72 | + $unnormalized_value = $this->_input->get_normalization_strategy()->unnormalize_one($value); |
|
73 | + $selected = $this->_check_if_option_selected($unnormalized_value) ? ' selected="selected"' : ''; |
|
74 | + $html .= EEH_HTML::nl(0, 'option') . '<option value="' . esc_attr($unnormalized_value) . '"' . $selected . '>' . $display_text . '</option>'; |
|
75 | + } |
|
76 | + EEH_HTML::indent(-1, 'option'); |
|
77 | + return $html; |
|
78 | + } |
|
79 | 79 | |
80 | 80 | |
81 | 81 | |
82 | - /** |
|
83 | - * Checks if that value is the one selected |
|
84 | - * |
|
85 | - * @param string|int $option_value unnormalized value option (string). How it will appear in the HTML. |
|
86 | - * @return string |
|
87 | - */ |
|
88 | - protected function _check_if_option_selected($option_value) |
|
89 | - { |
|
90 | - return $option_value === $this->_input->raw_value(); |
|
91 | - } |
|
82 | + /** |
|
83 | + * Checks if that value is the one selected |
|
84 | + * |
|
85 | + * @param string|int $option_value unnormalized value option (string). How it will appear in the HTML. |
|
86 | + * @return string |
|
87 | + */ |
|
88 | + protected function _check_if_option_selected($option_value) |
|
89 | + { |
|
90 | + return $option_value === $this->_input->raw_value(); |
|
91 | + } |
|
92 | 92 | } |
@@ -22,7 +22,7 @@ discard block |
||
22 | 22 | */ |
23 | 23 | public function display() |
24 | 24 | { |
25 | - if (! $this->_input instanceof EE_Form_Input_With_Options_Base) { |
|
25 | + if ( ! $this->_input instanceof EE_Form_Input_With_Options_Base) { |
|
26 | 26 | throw new EE_Error(sprintf(__('Cannot use Select Display Strategy with an input that doesn\'t have options', 'event_espresso'))); |
27 | 27 | } |
28 | 28 | |
@@ -36,14 +36,14 @@ discard block |
||
36 | 36 | if (EEH_Array::is_multi_dimensional_array($this->_input->options())) { |
37 | 37 | EEH_HTML::indent(1, 'optgroup'); |
38 | 38 | foreach ($this->_input->options() as $opt_group_label => $opt_group) { |
39 | - if (! empty($opt_group_label)) { |
|
40 | - $html .= EEH_HTML::nl(0, 'optgroup') . '<optgroup label="' . esc_attr($opt_group_label) . '">'; |
|
39 | + if ( ! empty($opt_group_label)) { |
|
40 | + $html .= EEH_HTML::nl(0, 'optgroup').'<optgroup label="'.esc_attr($opt_group_label).'">'; |
|
41 | 41 | } |
42 | 42 | EEH_HTML::indent(1, 'option'); |
43 | 43 | $html .= $this->_display_options($opt_group); |
44 | 44 | EEH_HTML::indent(-1, 'option'); |
45 | - if (! empty($opt_group_label)) { |
|
46 | - $html .= EEH_HTML::nl(0, 'optgroup') . '</optgroup>'; |
|
45 | + if ( ! empty($opt_group_label)) { |
|
46 | + $html .= EEH_HTML::nl(0, 'optgroup').'</optgroup>'; |
|
47 | 47 | } |
48 | 48 | } |
49 | 49 | EEH_HTML::indent(-1, 'optgroup'); |
@@ -51,7 +51,7 @@ discard block |
||
51 | 51 | $html .= $this->_display_options($this->_input->options()); |
52 | 52 | } |
53 | 53 | |
54 | - $html .= EEH_HTML::nl(0, 'select') . '</select>'; |
|
54 | + $html .= EEH_HTML::nl(0, 'select').'</select>'; |
|
55 | 55 | return $html; |
56 | 56 | } |
57 | 57 | |
@@ -71,7 +71,7 @@ discard block |
||
71 | 71 | // PHP will have converted it to a PHP integer (eg 123). So we need to make sure it's a string |
72 | 72 | $unnormalized_value = $this->_input->get_normalization_strategy()->unnormalize_one($value); |
73 | 73 | $selected = $this->_check_if_option_selected($unnormalized_value) ? ' selected="selected"' : ''; |
74 | - $html .= EEH_HTML::nl(0, 'option') . '<option value="' . esc_attr($unnormalized_value) . '"' . $selected . '>' . $display_text . '</option>'; |
|
74 | + $html .= EEH_HTML::nl(0, 'option').'<option value="'.esc_attr($unnormalized_value).'"'.$selected.'>'.$display_text.'</option>'; |
|
75 | 75 | } |
76 | 76 | EEH_HTML::indent(-1, 'option'); |
77 | 77 | return $html; |
@@ -27,7 +27,7 @@ |
||
27 | 27 | /** |
28 | 28 | * |
29 | 29 | * @param $normalized_value |
30 | - * @return bool |
|
30 | + * @return boolean|null |
|
31 | 31 | */ |
32 | 32 | public function validate($normalized_value) |
33 | 33 | { |
@@ -12,36 +12,36 @@ |
||
12 | 12 | class EE_Float_Validation_Strategy extends EE_Validation_Strategy_Base |
13 | 13 | { |
14 | 14 | |
15 | - /** |
|
16 | - * @param null $validation_error_message |
|
17 | - */ |
|
18 | - public function __construct($validation_error_message = null) |
|
19 | - { |
|
20 | - if (! $validation_error_message) { |
|
21 | - $validation_error_message = sprintf(__("Only numeric characters, commas, periods, and spaces, please!", "event_espresso")); |
|
22 | - } |
|
23 | - parent::__construct($validation_error_message); |
|
24 | - } |
|
25 | - |
|
26 | - |
|
27 | - |
|
28 | - /** |
|
29 | - * |
|
30 | - * @param $normalized_value |
|
31 | - * @return bool |
|
32 | - */ |
|
33 | - public function validate($normalized_value) |
|
34 | - { |
|
35 | - // errors should have been detected by the normalization strategy |
|
36 | - } |
|
37 | - |
|
38 | - |
|
39 | - |
|
40 | - /** |
|
41 | - * @return array |
|
42 | - */ |
|
43 | - public function get_jquery_validation_rule_array() |
|
44 | - { |
|
45 | - return array('number' => true, 'messages' => array( 'number' => $this->get_validation_error_message() ) ); |
|
46 | - } |
|
15 | + /** |
|
16 | + * @param null $validation_error_message |
|
17 | + */ |
|
18 | + public function __construct($validation_error_message = null) |
|
19 | + { |
|
20 | + if (! $validation_error_message) { |
|
21 | + $validation_error_message = sprintf(__("Only numeric characters, commas, periods, and spaces, please!", "event_espresso")); |
|
22 | + } |
|
23 | + parent::__construct($validation_error_message); |
|
24 | + } |
|
25 | + |
|
26 | + |
|
27 | + |
|
28 | + /** |
|
29 | + * |
|
30 | + * @param $normalized_value |
|
31 | + * @return bool |
|
32 | + */ |
|
33 | + public function validate($normalized_value) |
|
34 | + { |
|
35 | + // errors should have been detected by the normalization strategy |
|
36 | + } |
|
37 | + |
|
38 | + |
|
39 | + |
|
40 | + /** |
|
41 | + * @return array |
|
42 | + */ |
|
43 | + public function get_jquery_validation_rule_array() |
|
44 | + { |
|
45 | + return array('number' => true, 'messages' => array( 'number' => $this->get_validation_error_message() ) ); |
|
46 | + } |
|
47 | 47 | } |
@@ -17,7 +17,7 @@ discard block |
||
17 | 17 | */ |
18 | 18 | public function __construct($validation_error_message = null) |
19 | 19 | { |
20 | - if (! $validation_error_message) { |
|
20 | + if ( ! $validation_error_message) { |
|
21 | 21 | $validation_error_message = sprintf(__("Only numeric characters, commas, periods, and spaces, please!", "event_espresso")); |
22 | 22 | } |
23 | 23 | parent::__construct($validation_error_message); |
@@ -42,6 +42,6 @@ discard block |
||
42 | 42 | */ |
43 | 43 | public function get_jquery_validation_rule_array() |
44 | 44 | { |
45 | - return array('number' => true, 'messages' => array( 'number' => $this->get_validation_error_message() ) ); |
|
45 | + return array('number' => true, 'messages' => array('number' => $this->get_validation_error_message())); |
|
46 | 46 | } |
47 | 47 | } |
@@ -49,7 +49,7 @@ discard block |
||
49 | 49 | * This is used to output a single |
50 | 50 | * @param EE_Line_Item $line_item |
51 | 51 | * @param array $options |
52 | - * @return mixed |
|
52 | + * @return string |
|
53 | 53 | */ |
54 | 54 | public function display_line_item(EE_Line_Item $line_item, $options = array()) |
55 | 55 | { |
@@ -166,7 +166,7 @@ discard block |
||
166 | 166 | * |
167 | 167 | * @param EE_Line_Item $line_item |
168 | 168 | * @param array $options |
169 | - * @return mixed |
|
169 | + * @return string |
|
170 | 170 | */ |
171 | 171 | protected function _item_row(EE_Line_Item $line_item, $options = array()) |
172 | 172 | { |
@@ -264,7 +264,7 @@ discard block |
||
264 | 264 | * |
265 | 265 | * @param EE_Line_Item $line_item |
266 | 266 | * @param array $options |
267 | - * @return mixed |
|
267 | + * @return string |
|
268 | 268 | */ |
269 | 269 | protected function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
270 | 270 | { |
@@ -279,7 +279,7 @@ discard block |
||
279 | 279 | * |
280 | 280 | * @param EE_Line_Item $line_item |
281 | 281 | * @param array $options |
282 | - * @return mixed |
|
282 | + * @return string |
|
283 | 283 | */ |
284 | 284 | protected function _tax_row(EE_Line_Item $line_item, $options = array()) |
285 | 285 | { |
@@ -303,7 +303,7 @@ discard block |
||
303 | 303 | * @param EE_Line_Item $line_item |
304 | 304 | * @param string $text |
305 | 305 | * @param array $options |
306 | - * @return mixed |
|
306 | + * @return string |
|
307 | 307 | */ |
308 | 308 | protected function _sub_total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
309 | 309 | { |
@@ -318,7 +318,7 @@ discard block |
||
318 | 318 | * |
319 | 319 | * @param EE_Line_Item $line_item |
320 | 320 | * @param array $options |
321 | - * @return mixed |
|
321 | + * @return string |
|
322 | 322 | */ |
323 | 323 | protected function _total_row(EE_Line_Item $line_item, $options = array()) |
324 | 324 | { |
@@ -14,332 +14,332 @@ |
||
14 | 14 | { |
15 | 15 | |
16 | 16 | |
17 | - /** |
|
18 | - * whether to display the taxes row or not |
|
19 | - * @type bool $_show_taxes |
|
20 | - */ |
|
21 | - protected $_show_taxes = false; |
|
22 | - |
|
23 | - /** |
|
24 | - * html for any tax rows |
|
25 | - * @type string $_show_taxes |
|
26 | - */ |
|
27 | - protected $_taxes_html = ''; |
|
28 | - |
|
29 | - |
|
30 | - /** |
|
31 | - * total amount including tax we can bill for at this time |
|
32 | - * @type float $_grand_total |
|
33 | - */ |
|
34 | - protected $_grand_total = 0.00; |
|
35 | - |
|
36 | - |
|
37 | - |
|
38 | - /** |
|
39 | - * @return float |
|
40 | - */ |
|
41 | - public function grand_total() |
|
42 | - { |
|
43 | - return $this->_grand_total; |
|
44 | - } |
|
45 | - |
|
46 | - |
|
47 | - |
|
48 | - /** |
|
49 | - * This is used to output a single |
|
50 | - * @param EE_Line_Item $line_item |
|
51 | - * @param array $options |
|
52 | - * @return mixed |
|
53 | - */ |
|
54 | - public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
55 | - { |
|
56 | - |
|
57 | - $html = ''; |
|
58 | - // set some default options and merge with incoming |
|
59 | - $default_options = array( |
|
60 | - 'odd' => true, |
|
61 | - 'use_table_wrapper' => true, |
|
62 | - 'table_css_class' => 'admin-primary-mbox-tbl', |
|
63 | - 'taxes_tr_css_class' => 'admin-primary-mbox-taxes-tr', |
|
64 | - 'total_tr_css_class' => 'admin-primary-mbox-total-tr' |
|
65 | - ); |
|
66 | - $options = array_merge($default_options, (array) $options); |
|
67 | - |
|
68 | - switch ($line_item->type()) { |
|
69 | - case EEM_Line_Item::type_line_item: |
|
70 | - // item row |
|
71 | - $html .= $this->_item_row($line_item, $options); |
|
72 | - break; |
|
73 | - |
|
74 | - case EEM_Line_Item::type_sub_line_item: |
|
75 | - $html .= $this->_sub_item_row($line_item, $options); |
|
76 | - break; |
|
77 | - |
|
78 | - case EEM_Line_Item::type_sub_total: |
|
79 | - if ($line_item->quantity() === 0) { |
|
80 | - return $html; |
|
81 | - } |
|
82 | - // loop through children |
|
83 | - $child_line_items = $line_item->children(); |
|
84 | - // loop through children |
|
85 | - foreach ($child_line_items as $child_line_item) { |
|
86 | - // recursively feed children back into this method |
|
87 | - $html .= $this->display_line_item($child_line_item, $options); |
|
88 | - } |
|
89 | - $html .= $this->_sub_total_row($line_item, $options); |
|
90 | - break; |
|
91 | - |
|
92 | - case EEM_Line_Item::type_tax: |
|
93 | - if ($this->_show_taxes) { |
|
94 | - $this->_taxes_html .= $this->_tax_row($line_item, $options); |
|
95 | - } |
|
96 | - break; |
|
97 | - |
|
98 | - case EEM_Line_Item::type_tax_sub_total: |
|
99 | - foreach ($line_item->children() as $child_line_item) { |
|
100 | - if ($child_line_item->type() == EEM_Line_Item::type_tax) { |
|
101 | - $this->display_line_item($child_line_item, $options); |
|
102 | - } |
|
103 | - } |
|
104 | - break; |
|
105 | - |
|
106 | - case EEM_Line_Item::type_total: |
|
107 | - // determine whether to display taxes or not |
|
108 | - $this->_show_taxes = $line_item->get_total_tax() > 0 ? true : false; |
|
109 | - // get all child line items |
|
110 | - $children = $line_item->children(); |
|
111 | - |
|
112 | - // loop thru all non-tax child line items |
|
113 | - foreach ($children as $child_line_item) { |
|
114 | - $html .= $this->display_line_item($child_line_item, $options); |
|
115 | - } |
|
116 | - |
|
117 | - $html .= $this->_taxes_html; |
|
118 | - $html .= $this->_total_row($line_item, $options); |
|
119 | - if ($options['use_table_wrapper']) { |
|
120 | - $html = $this->_table_header($options) . $html . $this->_table_footer($options); |
|
121 | - } |
|
122 | - break; |
|
123 | - } |
|
124 | - |
|
125 | - return $html; |
|
126 | - } |
|
127 | - |
|
128 | - |
|
129 | - |
|
130 | - /** |
|
131 | - * Table header for display. |
|
132 | - * @since 4.8 |
|
133 | - * @param array $options |
|
134 | - * @return string |
|
135 | - */ |
|
136 | - protected function _table_header($options) |
|
137 | - { |
|
138 | - $html = EEH_HTML::table('', '', $options['table_css_class']); |
|
139 | - $html .= EEH_HTML::thead(); |
|
140 | - $html .= EEH_HTML::tr(); |
|
141 | - $html .= EEH_HTML::th(__('Name', 'event_espresso'), '', 'jst-left'); |
|
142 | - $html .= EEH_HTML::th(__('Type', 'event_espresso'), '', 'jst-left'); |
|
143 | - $html .= EEH_HTML::th(__('Amount', 'event_espresso'), '', 'jst-cntr'); |
|
144 | - $html .= EEH_HTML::th(__('Qty', 'event_espresso'), '', 'jst-cntr'); |
|
145 | - $html .= EEH_HTML::th(__('Line Total', 'event_espresso'), '', 'jst-cntr'); |
|
146 | - $html .= EEH_HTML::tbody(); |
|
147 | - return $html; |
|
148 | - } |
|
149 | - |
|
150 | - |
|
151 | - /** |
|
152 | - * Table footer for display |
|
153 | - * @since 4.8 |
|
154 | - * @param array $options array of options for the table. |
|
155 | - * @return string |
|
156 | - */ |
|
157 | - protected function _table_footer($options) |
|
158 | - { |
|
159 | - return EEH_HTML::tbodyx() . EEH_HTML::tablex(); |
|
160 | - } |
|
161 | - |
|
162 | - |
|
163 | - |
|
164 | - /** |
|
165 | - * _item_row |
|
166 | - * |
|
167 | - * @param EE_Line_Item $line_item |
|
168 | - * @param array $options |
|
169 | - * @return mixed |
|
170 | - */ |
|
171 | - protected function _item_row(EE_Line_Item $line_item, $options = array()) |
|
172 | - { |
|
173 | - $line_item_related_object = $line_item->get_object(); |
|
174 | - $parent_line_item_related_object = $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->get_object() : null; |
|
175 | - // start of row |
|
176 | - $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
177 | - $html = EEH_HTML::tr('', '', $row_class); |
|
178 | - |
|
179 | - |
|
180 | - // Name Column |
|
181 | - $name_link = $line_item_related_object instanceof EEI_Admin_Links ? $line_item_related_object->get_admin_details_link() : ''; |
|
182 | - |
|
183 | - // related object scope. |
|
184 | - $parent_related_object_name = $parent_line_item_related_object instanceof EEI_Line_Item_Object ? $parent_line_item_related_object->name() : ''; |
|
185 | - $parent_related_object_name = empty($parent_related_object_name) && $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->name() : $parent_related_object_name; |
|
186 | - $parent_related_object_link = $parent_line_item_related_object instanceof EEI_Admin_Links ? $parent_line_item_related_object->get_admin_details_link() : ''; |
|
187 | - |
|
188 | - |
|
189 | - $name_html = $line_item_related_object instanceof EEI_Line_Item_Object ? $line_item_related_object->name() : $line_item->name(); |
|
190 | - $name_html = $name_link ? '<a href="' . $name_link . '">' . $name_html . '</a>' : $name_html; |
|
191 | - $name_html .= $line_item->is_taxable() ? ' *' : ''; |
|
192 | - // maybe preface with icon? |
|
193 | - $name_html = $line_item_related_object instanceof EEI_Has_Icon ? $line_item_related_object->get_icon() . $name_html : $name_html; |
|
194 | - $name_html = '<span class="ee-line-item-name linked">' . $name_html . '</span><br>'; |
|
195 | - $name_html .= sprintf( |
|
196 | - _x('%1$sfor the %2$s: %3$s%4$s', 'eg. "for the Event: My Cool Event"', 'event_espresso'), |
|
197 | - '<span class="ee-line-item-related-parent-object">', |
|
198 | - $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->OBJ_type_i18n() : __('Item:', 'event_espresso'), |
|
199 | - $parent_related_object_link ? '<a href="' . $parent_related_object_link . '">' . $parent_related_object_name . '</a>' : $parent_related_object_name, |
|
200 | - '</span>' |
|
201 | - ); |
|
202 | - |
|
203 | - $name_html = apply_filters( |
|
204 | - 'FHEE__EE_Admin_Table_Line_Item_Display_Strategy___item_row__name_html', |
|
205 | - $name_html, |
|
206 | - $line_item, |
|
207 | - $options |
|
208 | - ); |
|
209 | - |
|
210 | - $html .= EEH_HTML::td($name_html, '', 'jst-left'); |
|
211 | - // Type Column |
|
212 | - $type_html = $line_item->OBJ_type() ? $line_item->OBJ_type_i18n() : ''; |
|
213 | - $type_html .= $this->_get_cancellations($line_item); |
|
214 | - $type_html .= $line_item->OBJ_type() ? '<br />' : ''; |
|
215 | - $code = $line_item_related_object instanceof EEI_Has_Code ? $line_item_related_object->code() : ''; |
|
216 | - $type_html .= ! empty($code) ? '<span class="ee-line-item-id">' . sprintf(__('Code: %s', 'event_espresso'), $code) . '</span>' : ''; |
|
217 | - $html .= EEH_HTML::td($type_html, '', 'jst-left'); |
|
218 | - |
|
219 | - |
|
220 | - // Amount Column |
|
221 | - if ($line_item->is_percent()) { |
|
222 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'jst-rght'); |
|
223 | - } else { |
|
224 | - $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'jst-rght'); |
|
225 | - } |
|
226 | - |
|
227 | - // QTY column |
|
228 | - $html .= EEH_HTML::td($line_item->quantity(), '', 'jst-rght'); |
|
229 | - |
|
230 | - // total column |
|
231 | - $html .= EEH_HTML::td(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
232 | - |
|
233 | - // finish things off and return |
|
234 | - $html .= EEH_HTML::trx(); |
|
235 | - return $html; |
|
236 | - } |
|
237 | - |
|
238 | - |
|
239 | - |
|
240 | - /** |
|
241 | - * _get_cancellations |
|
242 | - * |
|
243 | - * @param EE_Line_Item $line_item |
|
244 | - * @return string |
|
245 | - */ |
|
246 | - protected function _get_cancellations(EE_Line_Item $line_item) |
|
247 | - { |
|
248 | - $html = ''; |
|
249 | - $cancellations = $line_item->get_cancellations(); |
|
250 | - $cancellation = reset($cancellations); |
|
251 | - // \EEH_Debug_Tools::printr( $cancellation, '$cancellation', __FILE__, __LINE__ ); |
|
252 | - if ($cancellation instanceof EE_Line_Item) { |
|
253 | - $html .= ' <span class="ee-line-item-id">'; |
|
254 | - $html .= sprintf( |
|
255 | - _n( |
|
256 | - '(%1$s Cancellation)', |
|
257 | - '(%1$s Cancellations)', |
|
258 | - $cancellation->quantity(), |
|
259 | - 'event_espresso' |
|
260 | - ), |
|
261 | - $cancellation->quantity() |
|
262 | - ); |
|
263 | - $html .= '</span>'; |
|
264 | - } |
|
265 | - return $html; |
|
266 | - } |
|
267 | - |
|
268 | - |
|
269 | - |
|
270 | - /** |
|
271 | - * _sub_item_row |
|
272 | - * |
|
273 | - * @param EE_Line_Item $line_item |
|
274 | - * @param array $options |
|
275 | - * @return mixed |
|
276 | - */ |
|
277 | - protected function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
278 | - { |
|
279 | - // for now we're not showing sub-items |
|
280 | - return ''; |
|
281 | - } |
|
282 | - |
|
283 | - |
|
284 | - |
|
285 | - /** |
|
286 | - * _tax_row |
|
287 | - * |
|
288 | - * @param EE_Line_Item $line_item |
|
289 | - * @param array $options |
|
290 | - * @return mixed |
|
291 | - */ |
|
292 | - protected function _tax_row(EE_Line_Item $line_item, $options = array()) |
|
293 | - { |
|
294 | - // start of row |
|
295 | - $html = EEH_HTML::tr('', 'admin-primary-mbox-taxes-tr'); |
|
296 | - // name th |
|
297 | - $html .= EEH_HTML::th($line_item->name() . '(' . $line_item->get_pretty('LIN_percent') . '%)', '', 'jst-rght', '', ' colspan="4"'); |
|
298 | - // total th |
|
299 | - $html .= EEH_HTML::th(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
300 | - // end of row |
|
301 | - $html .= EEH_HTML::trx(); |
|
302 | - return $html; |
|
303 | - } |
|
304 | - |
|
305 | - |
|
306 | - |
|
307 | - |
|
308 | - /** |
|
309 | - * _total_row |
|
310 | - * |
|
311 | - * @param EE_Line_Item $line_item |
|
312 | - * @param string $text |
|
313 | - * @param array $options |
|
314 | - * @return mixed |
|
315 | - */ |
|
316 | - protected function _sub_total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
|
317 | - { |
|
318 | - // currently not showing subtotal row |
|
319 | - return ''; |
|
320 | - } |
|
321 | - |
|
322 | - |
|
323 | - |
|
324 | - /** |
|
325 | - * _total_row |
|
326 | - * |
|
327 | - * @param EE_Line_Item $line_item |
|
328 | - * @param array $options |
|
329 | - * @return mixed |
|
330 | - */ |
|
331 | - protected function _total_row(EE_Line_Item $line_item, $options = array()) |
|
332 | - { |
|
333 | - // start of row |
|
334 | - $html = EEH_HTML::tr('', '', 'admin-primary-mbox-total-tr'); |
|
335 | - // Total th label |
|
336 | - $total_label = sprintf(__('Transaction Total %s', 'event_espresso'), '(' . EE_Registry::instance()->CFG->currency->code . ')'); |
|
337 | - $html .= EEH_HTML::th($total_label, '', 'jst-rght', '', ' colspan="4"'); |
|
338 | - // total th |
|
339 | - |
|
340 | - $html .= EEH_HTML::th(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
341 | - // end of row |
|
342 | - $html .= EEH_HTML::trx(); |
|
343 | - return $html; |
|
344 | - } |
|
17 | + /** |
|
18 | + * whether to display the taxes row or not |
|
19 | + * @type bool $_show_taxes |
|
20 | + */ |
|
21 | + protected $_show_taxes = false; |
|
22 | + |
|
23 | + /** |
|
24 | + * html for any tax rows |
|
25 | + * @type string $_show_taxes |
|
26 | + */ |
|
27 | + protected $_taxes_html = ''; |
|
28 | + |
|
29 | + |
|
30 | + /** |
|
31 | + * total amount including tax we can bill for at this time |
|
32 | + * @type float $_grand_total |
|
33 | + */ |
|
34 | + protected $_grand_total = 0.00; |
|
35 | + |
|
36 | + |
|
37 | + |
|
38 | + /** |
|
39 | + * @return float |
|
40 | + */ |
|
41 | + public function grand_total() |
|
42 | + { |
|
43 | + return $this->_grand_total; |
|
44 | + } |
|
45 | + |
|
46 | + |
|
47 | + |
|
48 | + /** |
|
49 | + * This is used to output a single |
|
50 | + * @param EE_Line_Item $line_item |
|
51 | + * @param array $options |
|
52 | + * @return mixed |
|
53 | + */ |
|
54 | + public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
55 | + { |
|
56 | + |
|
57 | + $html = ''; |
|
58 | + // set some default options and merge with incoming |
|
59 | + $default_options = array( |
|
60 | + 'odd' => true, |
|
61 | + 'use_table_wrapper' => true, |
|
62 | + 'table_css_class' => 'admin-primary-mbox-tbl', |
|
63 | + 'taxes_tr_css_class' => 'admin-primary-mbox-taxes-tr', |
|
64 | + 'total_tr_css_class' => 'admin-primary-mbox-total-tr' |
|
65 | + ); |
|
66 | + $options = array_merge($default_options, (array) $options); |
|
67 | + |
|
68 | + switch ($line_item->type()) { |
|
69 | + case EEM_Line_Item::type_line_item: |
|
70 | + // item row |
|
71 | + $html .= $this->_item_row($line_item, $options); |
|
72 | + break; |
|
73 | + |
|
74 | + case EEM_Line_Item::type_sub_line_item: |
|
75 | + $html .= $this->_sub_item_row($line_item, $options); |
|
76 | + break; |
|
77 | + |
|
78 | + case EEM_Line_Item::type_sub_total: |
|
79 | + if ($line_item->quantity() === 0) { |
|
80 | + return $html; |
|
81 | + } |
|
82 | + // loop through children |
|
83 | + $child_line_items = $line_item->children(); |
|
84 | + // loop through children |
|
85 | + foreach ($child_line_items as $child_line_item) { |
|
86 | + // recursively feed children back into this method |
|
87 | + $html .= $this->display_line_item($child_line_item, $options); |
|
88 | + } |
|
89 | + $html .= $this->_sub_total_row($line_item, $options); |
|
90 | + break; |
|
91 | + |
|
92 | + case EEM_Line_Item::type_tax: |
|
93 | + if ($this->_show_taxes) { |
|
94 | + $this->_taxes_html .= $this->_tax_row($line_item, $options); |
|
95 | + } |
|
96 | + break; |
|
97 | + |
|
98 | + case EEM_Line_Item::type_tax_sub_total: |
|
99 | + foreach ($line_item->children() as $child_line_item) { |
|
100 | + if ($child_line_item->type() == EEM_Line_Item::type_tax) { |
|
101 | + $this->display_line_item($child_line_item, $options); |
|
102 | + } |
|
103 | + } |
|
104 | + break; |
|
105 | + |
|
106 | + case EEM_Line_Item::type_total: |
|
107 | + // determine whether to display taxes or not |
|
108 | + $this->_show_taxes = $line_item->get_total_tax() > 0 ? true : false; |
|
109 | + // get all child line items |
|
110 | + $children = $line_item->children(); |
|
111 | + |
|
112 | + // loop thru all non-tax child line items |
|
113 | + foreach ($children as $child_line_item) { |
|
114 | + $html .= $this->display_line_item($child_line_item, $options); |
|
115 | + } |
|
116 | + |
|
117 | + $html .= $this->_taxes_html; |
|
118 | + $html .= $this->_total_row($line_item, $options); |
|
119 | + if ($options['use_table_wrapper']) { |
|
120 | + $html = $this->_table_header($options) . $html . $this->_table_footer($options); |
|
121 | + } |
|
122 | + break; |
|
123 | + } |
|
124 | + |
|
125 | + return $html; |
|
126 | + } |
|
127 | + |
|
128 | + |
|
129 | + |
|
130 | + /** |
|
131 | + * Table header for display. |
|
132 | + * @since 4.8 |
|
133 | + * @param array $options |
|
134 | + * @return string |
|
135 | + */ |
|
136 | + protected function _table_header($options) |
|
137 | + { |
|
138 | + $html = EEH_HTML::table('', '', $options['table_css_class']); |
|
139 | + $html .= EEH_HTML::thead(); |
|
140 | + $html .= EEH_HTML::tr(); |
|
141 | + $html .= EEH_HTML::th(__('Name', 'event_espresso'), '', 'jst-left'); |
|
142 | + $html .= EEH_HTML::th(__('Type', 'event_espresso'), '', 'jst-left'); |
|
143 | + $html .= EEH_HTML::th(__('Amount', 'event_espresso'), '', 'jst-cntr'); |
|
144 | + $html .= EEH_HTML::th(__('Qty', 'event_espresso'), '', 'jst-cntr'); |
|
145 | + $html .= EEH_HTML::th(__('Line Total', 'event_espresso'), '', 'jst-cntr'); |
|
146 | + $html .= EEH_HTML::tbody(); |
|
147 | + return $html; |
|
148 | + } |
|
149 | + |
|
150 | + |
|
151 | + /** |
|
152 | + * Table footer for display |
|
153 | + * @since 4.8 |
|
154 | + * @param array $options array of options for the table. |
|
155 | + * @return string |
|
156 | + */ |
|
157 | + protected function _table_footer($options) |
|
158 | + { |
|
159 | + return EEH_HTML::tbodyx() . EEH_HTML::tablex(); |
|
160 | + } |
|
161 | + |
|
162 | + |
|
163 | + |
|
164 | + /** |
|
165 | + * _item_row |
|
166 | + * |
|
167 | + * @param EE_Line_Item $line_item |
|
168 | + * @param array $options |
|
169 | + * @return mixed |
|
170 | + */ |
|
171 | + protected function _item_row(EE_Line_Item $line_item, $options = array()) |
|
172 | + { |
|
173 | + $line_item_related_object = $line_item->get_object(); |
|
174 | + $parent_line_item_related_object = $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->get_object() : null; |
|
175 | + // start of row |
|
176 | + $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
177 | + $html = EEH_HTML::tr('', '', $row_class); |
|
178 | + |
|
179 | + |
|
180 | + // Name Column |
|
181 | + $name_link = $line_item_related_object instanceof EEI_Admin_Links ? $line_item_related_object->get_admin_details_link() : ''; |
|
182 | + |
|
183 | + // related object scope. |
|
184 | + $parent_related_object_name = $parent_line_item_related_object instanceof EEI_Line_Item_Object ? $parent_line_item_related_object->name() : ''; |
|
185 | + $parent_related_object_name = empty($parent_related_object_name) && $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->name() : $parent_related_object_name; |
|
186 | + $parent_related_object_link = $parent_line_item_related_object instanceof EEI_Admin_Links ? $parent_line_item_related_object->get_admin_details_link() : ''; |
|
187 | + |
|
188 | + |
|
189 | + $name_html = $line_item_related_object instanceof EEI_Line_Item_Object ? $line_item_related_object->name() : $line_item->name(); |
|
190 | + $name_html = $name_link ? '<a href="' . $name_link . '">' . $name_html . '</a>' : $name_html; |
|
191 | + $name_html .= $line_item->is_taxable() ? ' *' : ''; |
|
192 | + // maybe preface with icon? |
|
193 | + $name_html = $line_item_related_object instanceof EEI_Has_Icon ? $line_item_related_object->get_icon() . $name_html : $name_html; |
|
194 | + $name_html = '<span class="ee-line-item-name linked">' . $name_html . '</span><br>'; |
|
195 | + $name_html .= sprintf( |
|
196 | + _x('%1$sfor the %2$s: %3$s%4$s', 'eg. "for the Event: My Cool Event"', 'event_espresso'), |
|
197 | + '<span class="ee-line-item-related-parent-object">', |
|
198 | + $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->OBJ_type_i18n() : __('Item:', 'event_espresso'), |
|
199 | + $parent_related_object_link ? '<a href="' . $parent_related_object_link . '">' . $parent_related_object_name . '</a>' : $parent_related_object_name, |
|
200 | + '</span>' |
|
201 | + ); |
|
202 | + |
|
203 | + $name_html = apply_filters( |
|
204 | + 'FHEE__EE_Admin_Table_Line_Item_Display_Strategy___item_row__name_html', |
|
205 | + $name_html, |
|
206 | + $line_item, |
|
207 | + $options |
|
208 | + ); |
|
209 | + |
|
210 | + $html .= EEH_HTML::td($name_html, '', 'jst-left'); |
|
211 | + // Type Column |
|
212 | + $type_html = $line_item->OBJ_type() ? $line_item->OBJ_type_i18n() : ''; |
|
213 | + $type_html .= $this->_get_cancellations($line_item); |
|
214 | + $type_html .= $line_item->OBJ_type() ? '<br />' : ''; |
|
215 | + $code = $line_item_related_object instanceof EEI_Has_Code ? $line_item_related_object->code() : ''; |
|
216 | + $type_html .= ! empty($code) ? '<span class="ee-line-item-id">' . sprintf(__('Code: %s', 'event_espresso'), $code) . '</span>' : ''; |
|
217 | + $html .= EEH_HTML::td($type_html, '', 'jst-left'); |
|
218 | + |
|
219 | + |
|
220 | + // Amount Column |
|
221 | + if ($line_item->is_percent()) { |
|
222 | + $html .= EEH_HTML::td($line_item->percent() . '%', '', 'jst-rght'); |
|
223 | + } else { |
|
224 | + $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'jst-rght'); |
|
225 | + } |
|
226 | + |
|
227 | + // QTY column |
|
228 | + $html .= EEH_HTML::td($line_item->quantity(), '', 'jst-rght'); |
|
229 | + |
|
230 | + // total column |
|
231 | + $html .= EEH_HTML::td(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
232 | + |
|
233 | + // finish things off and return |
|
234 | + $html .= EEH_HTML::trx(); |
|
235 | + return $html; |
|
236 | + } |
|
237 | + |
|
238 | + |
|
239 | + |
|
240 | + /** |
|
241 | + * _get_cancellations |
|
242 | + * |
|
243 | + * @param EE_Line_Item $line_item |
|
244 | + * @return string |
|
245 | + */ |
|
246 | + protected function _get_cancellations(EE_Line_Item $line_item) |
|
247 | + { |
|
248 | + $html = ''; |
|
249 | + $cancellations = $line_item->get_cancellations(); |
|
250 | + $cancellation = reset($cancellations); |
|
251 | + // \EEH_Debug_Tools::printr( $cancellation, '$cancellation', __FILE__, __LINE__ ); |
|
252 | + if ($cancellation instanceof EE_Line_Item) { |
|
253 | + $html .= ' <span class="ee-line-item-id">'; |
|
254 | + $html .= sprintf( |
|
255 | + _n( |
|
256 | + '(%1$s Cancellation)', |
|
257 | + '(%1$s Cancellations)', |
|
258 | + $cancellation->quantity(), |
|
259 | + 'event_espresso' |
|
260 | + ), |
|
261 | + $cancellation->quantity() |
|
262 | + ); |
|
263 | + $html .= '</span>'; |
|
264 | + } |
|
265 | + return $html; |
|
266 | + } |
|
267 | + |
|
268 | + |
|
269 | + |
|
270 | + /** |
|
271 | + * _sub_item_row |
|
272 | + * |
|
273 | + * @param EE_Line_Item $line_item |
|
274 | + * @param array $options |
|
275 | + * @return mixed |
|
276 | + */ |
|
277 | + protected function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
278 | + { |
|
279 | + // for now we're not showing sub-items |
|
280 | + return ''; |
|
281 | + } |
|
282 | + |
|
283 | + |
|
284 | + |
|
285 | + /** |
|
286 | + * _tax_row |
|
287 | + * |
|
288 | + * @param EE_Line_Item $line_item |
|
289 | + * @param array $options |
|
290 | + * @return mixed |
|
291 | + */ |
|
292 | + protected function _tax_row(EE_Line_Item $line_item, $options = array()) |
|
293 | + { |
|
294 | + // start of row |
|
295 | + $html = EEH_HTML::tr('', 'admin-primary-mbox-taxes-tr'); |
|
296 | + // name th |
|
297 | + $html .= EEH_HTML::th($line_item->name() . '(' . $line_item->get_pretty('LIN_percent') . '%)', '', 'jst-rght', '', ' colspan="4"'); |
|
298 | + // total th |
|
299 | + $html .= EEH_HTML::th(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
300 | + // end of row |
|
301 | + $html .= EEH_HTML::trx(); |
|
302 | + return $html; |
|
303 | + } |
|
304 | + |
|
305 | + |
|
306 | + |
|
307 | + |
|
308 | + /** |
|
309 | + * _total_row |
|
310 | + * |
|
311 | + * @param EE_Line_Item $line_item |
|
312 | + * @param string $text |
|
313 | + * @param array $options |
|
314 | + * @return mixed |
|
315 | + */ |
|
316 | + protected function _sub_total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
|
317 | + { |
|
318 | + // currently not showing subtotal row |
|
319 | + return ''; |
|
320 | + } |
|
321 | + |
|
322 | + |
|
323 | + |
|
324 | + /** |
|
325 | + * _total_row |
|
326 | + * |
|
327 | + * @param EE_Line_Item $line_item |
|
328 | + * @param array $options |
|
329 | + * @return mixed |
|
330 | + */ |
|
331 | + protected function _total_row(EE_Line_Item $line_item, $options = array()) |
|
332 | + { |
|
333 | + // start of row |
|
334 | + $html = EEH_HTML::tr('', '', 'admin-primary-mbox-total-tr'); |
|
335 | + // Total th label |
|
336 | + $total_label = sprintf(__('Transaction Total %s', 'event_espresso'), '(' . EE_Registry::instance()->CFG->currency->code . ')'); |
|
337 | + $html .= EEH_HTML::th($total_label, '', 'jst-rght', '', ' colspan="4"'); |
|
338 | + // total th |
|
339 | + |
|
340 | + $html .= EEH_HTML::th(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
|
341 | + // end of row |
|
342 | + $html .= EEH_HTML::trx(); |
|
343 | + return $html; |
|
344 | + } |
|
345 | 345 | } |
@@ -117,7 +117,7 @@ discard block |
||
117 | 117 | $html .= $this->_taxes_html; |
118 | 118 | $html .= $this->_total_row($line_item, $options); |
119 | 119 | if ($options['use_table_wrapper']) { |
120 | - $html = $this->_table_header($options) . $html . $this->_table_footer($options); |
|
120 | + $html = $this->_table_header($options).$html.$this->_table_footer($options); |
|
121 | 121 | } |
122 | 122 | break; |
123 | 123 | } |
@@ -156,7 +156,7 @@ discard block |
||
156 | 156 | */ |
157 | 157 | protected function _table_footer($options) |
158 | 158 | { |
159 | - return EEH_HTML::tbodyx() . EEH_HTML::tablex(); |
|
159 | + return EEH_HTML::tbodyx().EEH_HTML::tablex(); |
|
160 | 160 | } |
161 | 161 | |
162 | 162 | |
@@ -187,16 +187,16 @@ discard block |
||
187 | 187 | |
188 | 188 | |
189 | 189 | $name_html = $line_item_related_object instanceof EEI_Line_Item_Object ? $line_item_related_object->name() : $line_item->name(); |
190 | - $name_html = $name_link ? '<a href="' . $name_link . '">' . $name_html . '</a>' : $name_html; |
|
190 | + $name_html = $name_link ? '<a href="'.$name_link.'">'.$name_html.'</a>' : $name_html; |
|
191 | 191 | $name_html .= $line_item->is_taxable() ? ' *' : ''; |
192 | 192 | // maybe preface with icon? |
193 | - $name_html = $line_item_related_object instanceof EEI_Has_Icon ? $line_item_related_object->get_icon() . $name_html : $name_html; |
|
194 | - $name_html = '<span class="ee-line-item-name linked">' . $name_html . '</span><br>'; |
|
195 | - $name_html .= sprintf( |
|
193 | + $name_html = $line_item_related_object instanceof EEI_Has_Icon ? $line_item_related_object->get_icon().$name_html : $name_html; |
|
194 | + $name_html = '<span class="ee-line-item-name linked">'.$name_html.'</span><br>'; |
|
195 | + $name_html .= sprintf( |
|
196 | 196 | _x('%1$sfor the %2$s: %3$s%4$s', 'eg. "for the Event: My Cool Event"', 'event_espresso'), |
197 | 197 | '<span class="ee-line-item-related-parent-object">', |
198 | 198 | $line_item->parent() instanceof EE_Line_Item ? $line_item->parent()->OBJ_type_i18n() : __('Item:', 'event_espresso'), |
199 | - $parent_related_object_link ? '<a href="' . $parent_related_object_link . '">' . $parent_related_object_name . '</a>' : $parent_related_object_name, |
|
199 | + $parent_related_object_link ? '<a href="'.$parent_related_object_link.'">'.$parent_related_object_name.'</a>' : $parent_related_object_name, |
|
200 | 200 | '</span>' |
201 | 201 | ); |
202 | 202 | |
@@ -213,13 +213,13 @@ discard block |
||
213 | 213 | $type_html .= $this->_get_cancellations($line_item); |
214 | 214 | $type_html .= $line_item->OBJ_type() ? '<br />' : ''; |
215 | 215 | $code = $line_item_related_object instanceof EEI_Has_Code ? $line_item_related_object->code() : ''; |
216 | - $type_html .= ! empty($code) ? '<span class="ee-line-item-id">' . sprintf(__('Code: %s', 'event_espresso'), $code) . '</span>' : ''; |
|
216 | + $type_html .= ! empty($code) ? '<span class="ee-line-item-id">'.sprintf(__('Code: %s', 'event_espresso'), $code).'</span>' : ''; |
|
217 | 217 | $html .= EEH_HTML::td($type_html, '', 'jst-left'); |
218 | 218 | |
219 | 219 | |
220 | 220 | // Amount Column |
221 | 221 | if ($line_item->is_percent()) { |
222 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'jst-rght'); |
|
222 | + $html .= EEH_HTML::td($line_item->percent().'%', '', 'jst-rght'); |
|
223 | 223 | } else { |
224 | 224 | $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'jst-rght'); |
225 | 225 | } |
@@ -294,7 +294,7 @@ discard block |
||
294 | 294 | // start of row |
295 | 295 | $html = EEH_HTML::tr('', 'admin-primary-mbox-taxes-tr'); |
296 | 296 | // name th |
297 | - $html .= EEH_HTML::th($line_item->name() . '(' . $line_item->get_pretty('LIN_percent') . '%)', '', 'jst-rght', '', ' colspan="4"'); |
|
297 | + $html .= EEH_HTML::th($line_item->name().'('.$line_item->get_pretty('LIN_percent').'%)', '', 'jst-rght', '', ' colspan="4"'); |
|
298 | 298 | // total th |
299 | 299 | $html .= EEH_HTML::th(EEH_Template::format_currency($line_item->total(), false, false), '', 'jst-rght'); |
300 | 300 | // end of row |
@@ -333,7 +333,7 @@ discard block |
||
333 | 333 | // start of row |
334 | 334 | $html = EEH_HTML::tr('', '', 'admin-primary-mbox-total-tr'); |
335 | 335 | // Total th label |
336 | - $total_label = sprintf(__('Transaction Total %s', 'event_espresso'), '(' . EE_Registry::instance()->CFG->currency->code . ')'); |
|
336 | + $total_label = sprintf(__('Transaction Total %s', 'event_espresso'), '('.EE_Registry::instance()->CFG->currency->code.')'); |
|
337 | 337 | $html .= EEH_HTML::th($total_label, '', 'jst-rght', '', ' colspan="4"'); |
338 | 338 | // total th |
339 | 339 |
@@ -58,7 +58,7 @@ discard block |
||
58 | 58 | /** |
59 | 59 | * @param EE_Line_Item $line_item |
60 | 60 | * @param array $options |
61 | - * @return mixed |
|
61 | + * @return string |
|
62 | 62 | */ |
63 | 63 | public function display_line_item(EE_Line_Item $line_item, $options = array()) |
64 | 64 | { |
@@ -134,7 +134,7 @@ discard block |
||
134 | 134 | * |
135 | 135 | * @param EE_Line_Item $line_item |
136 | 136 | * @param array $options |
137 | - * @return mixed |
|
137 | + * @return string |
|
138 | 138 | */ |
139 | 139 | private function _item_row(EE_Line_Item $line_item, $options = array()) |
140 | 140 | { |
@@ -189,7 +189,7 @@ discard block |
||
189 | 189 | * |
190 | 190 | * @param EE_Line_Item $line_item |
191 | 191 | * @param array $options |
192 | - * @return mixed |
|
192 | + * @return string |
|
193 | 193 | */ |
194 | 194 | private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
195 | 195 | { |
@@ -1,225 +1,225 @@ |
||
1 | 1 | <?php |
2 | 2 | /** |
3 | - * |
|
4 | - * Class EE_Default_Line_Item_Display_Strategy |
|
5 | - * |
|
6 | - * Description |
|
7 | - * |
|
8 | - * @package Event Espresso |
|
9 | - * @subpackage core |
|
10 | - * @author Brent Christensen |
|
11 | - * |
|
12 | - * |
|
13 | - */ |
|
3 | + * |
|
4 | + * Class EE_Default_Line_Item_Display_Strategy |
|
5 | + * |
|
6 | + * Description |
|
7 | + * |
|
8 | + * @package Event Espresso |
|
9 | + * @subpackage core |
|
10 | + * @author Brent Christensen |
|
11 | + * |
|
12 | + * |
|
13 | + */ |
|
14 | 14 | |
15 | 15 | class EE_Default_Line_Item_Display_Strategy implements EEI_Line_Item_Display |
16 | 16 | { |
17 | 17 | |
18 | - /** |
|
19 | - * total amount of tax to apply |
|
20 | - * @type float $_tax_rate |
|
21 | - */ |
|
22 | - private $_tax_rate = 0; |
|
23 | - |
|
24 | - /** |
|
25 | - * total amount including tax we can bill for at this time |
|
26 | - * @type float $_grand_total |
|
27 | - */ |
|
28 | - private $_grand_total = 0.00; |
|
29 | - |
|
30 | - /** |
|
31 | - * total number of items being billed for |
|
32 | - * @type int $_total_items |
|
33 | - */ |
|
34 | - private $_total_items = 0; |
|
35 | - |
|
36 | - |
|
37 | - |
|
38 | - /** |
|
39 | - * @return float |
|
40 | - */ |
|
41 | - public function grand_total() |
|
42 | - { |
|
43 | - return $this->_grand_total; |
|
44 | - } |
|
45 | - |
|
46 | - |
|
47 | - |
|
48 | - /** |
|
49 | - * @return int |
|
50 | - */ |
|
51 | - public function total_items() |
|
52 | - { |
|
53 | - return $this->_total_items; |
|
54 | - } |
|
55 | - |
|
56 | - |
|
57 | - |
|
58 | - /** |
|
59 | - * @param EE_Line_Item $line_item |
|
60 | - * @param array $options |
|
61 | - * @return mixed |
|
62 | - */ |
|
63 | - public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
64 | - { |
|
65 | - |
|
66 | - $html = ''; |
|
67 | - // set some default options and merge with incoming |
|
68 | - $default_options = array( |
|
69 | - 'show_desc' => true, // TRUE FALSE |
|
70 | - 'odd' => false |
|
71 | - ); |
|
72 | - $options = array_merge($default_options, (array) $options); |
|
73 | - |
|
74 | - switch ($line_item->type()) { |
|
75 | - case EEM_Line_Item::type_line_item: |
|
76 | - // item row |
|
77 | - $html .= $this->_item_row($line_item, $options); |
|
78 | - // got any kids? |
|
79 | - foreach ($line_item->children() as $child_line_item) { |
|
80 | - $this->display_line_item($child_line_item, $options); |
|
81 | - } |
|
82 | - break; |
|
83 | - |
|
84 | - case EEM_Line_Item::type_sub_line_item: |
|
85 | - $html .= $this->_sub_item_row($line_item, $options); |
|
86 | - break; |
|
87 | - |
|
88 | - case EEM_Line_Item::type_sub_total: |
|
89 | - break; |
|
90 | - |
|
91 | - case EEM_Line_Item::type_tax: |
|
92 | - $this->_tax_rate += $line_item->percent(); |
|
93 | - break; |
|
94 | - |
|
95 | - case EEM_Line_Item::type_tax_sub_total: |
|
96 | - foreach ($line_item->children() as $child_line_item) { |
|
97 | - if ($child_line_item->type() == EEM_Line_Item::type_tax) { |
|
98 | - // recursively feed children back into this method |
|
99 | - $this->display_line_item($child_line_item, $options); |
|
100 | - } |
|
101 | - } |
|
102 | - break; |
|
103 | - |
|
104 | - case EEM_Line_Item::type_total: |
|
105 | - // get all child line items |
|
106 | - $children = $line_item->children(); |
|
107 | - if ($options['set_tax_rate'] === true) { |
|
108 | - // loop thru tax child line items just to determine tax rate |
|
109 | - foreach ($children as $child_line_item) { |
|
110 | - if ($child_line_item->type() == EEM_Line_Item::type_tax_sub_total) { |
|
111 | - // recursively feed children back into this method |
|
112 | - $this->display_line_item($child_line_item, $options); |
|
113 | - } |
|
114 | - } |
|
115 | - } else { |
|
116 | - // now loop thru all non-tax child line items |
|
117 | - foreach ($children as $child_line_item) { |
|
118 | - if ($child_line_item->type() != EEM_Line_Item::type_tax_sub_total) { |
|
119 | - // recursively feed children back into this method |
|
120 | - $html .= $this->display_line_item($child_line_item, $options); |
|
121 | - } |
|
122 | - } |
|
123 | - } |
|
124 | - break; |
|
125 | - } |
|
126 | - |
|
127 | - return $html; |
|
128 | - } |
|
129 | - |
|
130 | - |
|
131 | - |
|
132 | - /** |
|
133 | - * _total_row |
|
134 | - * |
|
135 | - * @param EE_Line_Item $line_item |
|
136 | - * @param array $options |
|
137 | - * @return mixed |
|
138 | - */ |
|
139 | - private function _item_row(EE_Line_Item $line_item, $options = array()) |
|
140 | - { |
|
141 | - // start of row |
|
142 | - $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
143 | - $html = EEH_HTML::tr('', '', $row_class); |
|
144 | - // name && desc |
|
145 | - $name_and_desc = apply_filters( |
|
146 | - 'FHEE__EE_Default_Line_Item_Display_Strategy__item_row__name', |
|
147 | - $line_item->name(), |
|
148 | - $line_item |
|
149 | - ); |
|
150 | - $name_and_desc .= apply_filters( |
|
151 | - 'FHEE__EE_Default_Line_Item_Display_Strategy__item_row__desc', |
|
152 | - ( $options['show_desc'] ? '<span class="line-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : '' ), |
|
153 | - $line_item, |
|
154 | - $options |
|
155 | - ); |
|
156 | - if ($line_item->is_taxable()) { |
|
157 | - $ticket_price_includes_taxes = EE_Registry::instance()->CFG->tax_settings->prices_displayed_including_taxes |
|
158 | - ? esc_html__('* price includes taxes', 'event_espresso') |
|
159 | - : esc_html__('* price does not include taxes', 'event_espresso'); |
|
160 | - $name_and_desc .= '<span class="smaller-text lt-grey-text" style="margin:0 0 0 2em;">' |
|
161 | - . $ticket_price_includes_taxes |
|
162 | - . '</span>'; |
|
163 | - } |
|
164 | - |
|
165 | - // name td |
|
166 | - $html .= EEH_HTML::td($name_and_desc, '', 'item_l'); |
|
167 | - // quantity td |
|
168 | - $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l jst-rght'); |
|
169 | - $tax_rate = $line_item->is_taxable() |
|
170 | - && EE_Registry::instance()->CFG->tax_settings->prices_displayed_including_taxes |
|
171 | - ? 1 + ( $this->_tax_rate / 100 ) |
|
172 | - : 1; |
|
173 | - // price td |
|
174 | - $unit_price = apply_filters( |
|
175 | - 'FHEE__EE_Default_Line_Item_Display_Strategy___item_row__unit_price', |
|
176 | - EEH_Template::format_currency($line_item->unit_price() * $tax_rate, false, false), |
|
177 | - $line_item, |
|
178 | - $tax_rate |
|
179 | - ); |
|
180 | - $html .= EEH_HTML::td($unit_price, '', 'item_c jst-rght'); |
|
181 | - // total td |
|
182 | - $total = apply_filters( |
|
183 | - 'FHEE__EE_Default_Line_Item_Display_Strategy___item_row__total', |
|
184 | - EEH_Template::format_currency($line_item->unit_price() * $line_item->quantity() * $tax_rate, false, false), |
|
185 | - $line_item, |
|
186 | - $tax_rate |
|
187 | - ); |
|
188 | - $html .= EEH_HTML::td($total, '', 'item_r jst-rght'); |
|
189 | - // end of row |
|
190 | - $html .= EEH_HTML::trx(); |
|
191 | - |
|
192 | - return $html; |
|
193 | - } |
|
194 | - |
|
195 | - |
|
196 | - |
|
197 | - /** |
|
198 | - * _sub_item_row |
|
199 | - * |
|
200 | - * @param EE_Line_Item $line_item |
|
201 | - * @param array $options |
|
202 | - * @return mixed |
|
203 | - */ |
|
204 | - private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
205 | - { |
|
206 | - // start of row |
|
207 | - $html = EEH_HTML::tr('', 'item sub-item-row'); |
|
208 | - // name && desc |
|
209 | - $name_and_desc = $line_item->name(); |
|
210 | - $name_and_desc .= $options['show_desc'] ? '<span class="line-sub-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : ''; |
|
211 | - // name td |
|
212 | - $html .= EEH_HTML::td(/*__FUNCTION__ .*/ $name_and_desc, '', 'item_l sub-item'); |
|
213 | - // discount/surcharge td |
|
214 | - if ($line_item->is_percent()) { |
|
215 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
216 | - } else { |
|
217 | - $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c jst-rght'); |
|
218 | - } |
|
219 | - // total td |
|
220 | - $html .= EEH_HTML::td(EEH_Template::format_currency($line_item->total(), false, false), '', 'item_r jst-rght'); |
|
221 | - // end of row |
|
222 | - $html .= EEH_HTML::trx(); |
|
223 | - return $html; |
|
224 | - } |
|
18 | + /** |
|
19 | + * total amount of tax to apply |
|
20 | + * @type float $_tax_rate |
|
21 | + */ |
|
22 | + private $_tax_rate = 0; |
|
23 | + |
|
24 | + /** |
|
25 | + * total amount including tax we can bill for at this time |
|
26 | + * @type float $_grand_total |
|
27 | + */ |
|
28 | + private $_grand_total = 0.00; |
|
29 | + |
|
30 | + /** |
|
31 | + * total number of items being billed for |
|
32 | + * @type int $_total_items |
|
33 | + */ |
|
34 | + private $_total_items = 0; |
|
35 | + |
|
36 | + |
|
37 | + |
|
38 | + /** |
|
39 | + * @return float |
|
40 | + */ |
|
41 | + public function grand_total() |
|
42 | + { |
|
43 | + return $this->_grand_total; |
|
44 | + } |
|
45 | + |
|
46 | + |
|
47 | + |
|
48 | + /** |
|
49 | + * @return int |
|
50 | + */ |
|
51 | + public function total_items() |
|
52 | + { |
|
53 | + return $this->_total_items; |
|
54 | + } |
|
55 | + |
|
56 | + |
|
57 | + |
|
58 | + /** |
|
59 | + * @param EE_Line_Item $line_item |
|
60 | + * @param array $options |
|
61 | + * @return mixed |
|
62 | + */ |
|
63 | + public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
64 | + { |
|
65 | + |
|
66 | + $html = ''; |
|
67 | + // set some default options and merge with incoming |
|
68 | + $default_options = array( |
|
69 | + 'show_desc' => true, // TRUE FALSE |
|
70 | + 'odd' => false |
|
71 | + ); |
|
72 | + $options = array_merge($default_options, (array) $options); |
|
73 | + |
|
74 | + switch ($line_item->type()) { |
|
75 | + case EEM_Line_Item::type_line_item: |
|
76 | + // item row |
|
77 | + $html .= $this->_item_row($line_item, $options); |
|
78 | + // got any kids? |
|
79 | + foreach ($line_item->children() as $child_line_item) { |
|
80 | + $this->display_line_item($child_line_item, $options); |
|
81 | + } |
|
82 | + break; |
|
83 | + |
|
84 | + case EEM_Line_Item::type_sub_line_item: |
|
85 | + $html .= $this->_sub_item_row($line_item, $options); |
|
86 | + break; |
|
87 | + |
|
88 | + case EEM_Line_Item::type_sub_total: |
|
89 | + break; |
|
90 | + |
|
91 | + case EEM_Line_Item::type_tax: |
|
92 | + $this->_tax_rate += $line_item->percent(); |
|
93 | + break; |
|
94 | + |
|
95 | + case EEM_Line_Item::type_tax_sub_total: |
|
96 | + foreach ($line_item->children() as $child_line_item) { |
|
97 | + if ($child_line_item->type() == EEM_Line_Item::type_tax) { |
|
98 | + // recursively feed children back into this method |
|
99 | + $this->display_line_item($child_line_item, $options); |
|
100 | + } |
|
101 | + } |
|
102 | + break; |
|
103 | + |
|
104 | + case EEM_Line_Item::type_total: |
|
105 | + // get all child line items |
|
106 | + $children = $line_item->children(); |
|
107 | + if ($options['set_tax_rate'] === true) { |
|
108 | + // loop thru tax child line items just to determine tax rate |
|
109 | + foreach ($children as $child_line_item) { |
|
110 | + if ($child_line_item->type() == EEM_Line_Item::type_tax_sub_total) { |
|
111 | + // recursively feed children back into this method |
|
112 | + $this->display_line_item($child_line_item, $options); |
|
113 | + } |
|
114 | + } |
|
115 | + } else { |
|
116 | + // now loop thru all non-tax child line items |
|
117 | + foreach ($children as $child_line_item) { |
|
118 | + if ($child_line_item->type() != EEM_Line_Item::type_tax_sub_total) { |
|
119 | + // recursively feed children back into this method |
|
120 | + $html .= $this->display_line_item($child_line_item, $options); |
|
121 | + } |
|
122 | + } |
|
123 | + } |
|
124 | + break; |
|
125 | + } |
|
126 | + |
|
127 | + return $html; |
|
128 | + } |
|
129 | + |
|
130 | + |
|
131 | + |
|
132 | + /** |
|
133 | + * _total_row |
|
134 | + * |
|
135 | + * @param EE_Line_Item $line_item |
|
136 | + * @param array $options |
|
137 | + * @return mixed |
|
138 | + */ |
|
139 | + private function _item_row(EE_Line_Item $line_item, $options = array()) |
|
140 | + { |
|
141 | + // start of row |
|
142 | + $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
143 | + $html = EEH_HTML::tr('', '', $row_class); |
|
144 | + // name && desc |
|
145 | + $name_and_desc = apply_filters( |
|
146 | + 'FHEE__EE_Default_Line_Item_Display_Strategy__item_row__name', |
|
147 | + $line_item->name(), |
|
148 | + $line_item |
|
149 | + ); |
|
150 | + $name_and_desc .= apply_filters( |
|
151 | + 'FHEE__EE_Default_Line_Item_Display_Strategy__item_row__desc', |
|
152 | + ( $options['show_desc'] ? '<span class="line-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : '' ), |
|
153 | + $line_item, |
|
154 | + $options |
|
155 | + ); |
|
156 | + if ($line_item->is_taxable()) { |
|
157 | + $ticket_price_includes_taxes = EE_Registry::instance()->CFG->tax_settings->prices_displayed_including_taxes |
|
158 | + ? esc_html__('* price includes taxes', 'event_espresso') |
|
159 | + : esc_html__('* price does not include taxes', 'event_espresso'); |
|
160 | + $name_and_desc .= '<span class="smaller-text lt-grey-text" style="margin:0 0 0 2em;">' |
|
161 | + . $ticket_price_includes_taxes |
|
162 | + . '</span>'; |
|
163 | + } |
|
164 | + |
|
165 | + // name td |
|
166 | + $html .= EEH_HTML::td($name_and_desc, '', 'item_l'); |
|
167 | + // quantity td |
|
168 | + $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l jst-rght'); |
|
169 | + $tax_rate = $line_item->is_taxable() |
|
170 | + && EE_Registry::instance()->CFG->tax_settings->prices_displayed_including_taxes |
|
171 | + ? 1 + ( $this->_tax_rate / 100 ) |
|
172 | + : 1; |
|
173 | + // price td |
|
174 | + $unit_price = apply_filters( |
|
175 | + 'FHEE__EE_Default_Line_Item_Display_Strategy___item_row__unit_price', |
|
176 | + EEH_Template::format_currency($line_item->unit_price() * $tax_rate, false, false), |
|
177 | + $line_item, |
|
178 | + $tax_rate |
|
179 | + ); |
|
180 | + $html .= EEH_HTML::td($unit_price, '', 'item_c jst-rght'); |
|
181 | + // total td |
|
182 | + $total = apply_filters( |
|
183 | + 'FHEE__EE_Default_Line_Item_Display_Strategy___item_row__total', |
|
184 | + EEH_Template::format_currency($line_item->unit_price() * $line_item->quantity() * $tax_rate, false, false), |
|
185 | + $line_item, |
|
186 | + $tax_rate |
|
187 | + ); |
|
188 | + $html .= EEH_HTML::td($total, '', 'item_r jst-rght'); |
|
189 | + // end of row |
|
190 | + $html .= EEH_HTML::trx(); |
|
191 | + |
|
192 | + return $html; |
|
193 | + } |
|
194 | + |
|
195 | + |
|
196 | + |
|
197 | + /** |
|
198 | + * _sub_item_row |
|
199 | + * |
|
200 | + * @param EE_Line_Item $line_item |
|
201 | + * @param array $options |
|
202 | + * @return mixed |
|
203 | + */ |
|
204 | + private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
205 | + { |
|
206 | + // start of row |
|
207 | + $html = EEH_HTML::tr('', 'item sub-item-row'); |
|
208 | + // name && desc |
|
209 | + $name_and_desc = $line_item->name(); |
|
210 | + $name_and_desc .= $options['show_desc'] ? '<span class="line-sub-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : ''; |
|
211 | + // name td |
|
212 | + $html .= EEH_HTML::td(/*__FUNCTION__ .*/ $name_and_desc, '', 'item_l sub-item'); |
|
213 | + // discount/surcharge td |
|
214 | + if ($line_item->is_percent()) { |
|
215 | + $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
216 | + } else { |
|
217 | + $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c jst-rght'); |
|
218 | + } |
|
219 | + // total td |
|
220 | + $html .= EEH_HTML::td(EEH_Template::format_currency($line_item->total(), false, false), '', 'item_r jst-rght'); |
|
221 | + // end of row |
|
222 | + $html .= EEH_HTML::trx(); |
|
223 | + return $html; |
|
224 | + } |
|
225 | 225 | } |
@@ -66,7 +66,7 @@ discard block |
||
66 | 66 | $html = ''; |
67 | 67 | // set some default options and merge with incoming |
68 | 68 | $default_options = array( |
69 | - 'show_desc' => true, // TRUE FALSE |
|
69 | + 'show_desc' => true, // TRUE FALSE |
|
70 | 70 | 'odd' => false |
71 | 71 | ); |
72 | 72 | $options = array_merge($default_options, (array) $options); |
@@ -149,7 +149,7 @@ discard block |
||
149 | 149 | ); |
150 | 150 | $name_and_desc .= apply_filters( |
151 | 151 | 'FHEE__EE_Default_Line_Item_Display_Strategy__item_row__desc', |
152 | - ( $options['show_desc'] ? '<span class="line-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : '' ), |
|
152 | + ($options['show_desc'] ? '<span class="line-item-desc-spn smaller-text">: '.$line_item->desc().'</span>' : ''), |
|
153 | 153 | $line_item, |
154 | 154 | $options |
155 | 155 | ); |
@@ -168,7 +168,7 @@ discard block |
||
168 | 168 | $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l jst-rght'); |
169 | 169 | $tax_rate = $line_item->is_taxable() |
170 | 170 | && EE_Registry::instance()->CFG->tax_settings->prices_displayed_including_taxes |
171 | - ? 1 + ( $this->_tax_rate / 100 ) |
|
171 | + ? 1 + ($this->_tax_rate / 100) |
|
172 | 172 | : 1; |
173 | 173 | // price td |
174 | 174 | $unit_price = apply_filters( |
@@ -207,12 +207,12 @@ discard block |
||
207 | 207 | $html = EEH_HTML::tr('', 'item sub-item-row'); |
208 | 208 | // name && desc |
209 | 209 | $name_and_desc = $line_item->name(); |
210 | - $name_and_desc .= $options['show_desc'] ? '<span class="line-sub-item-desc-spn smaller-text">: ' . $line_item->desc() . '</span>' : ''; |
|
210 | + $name_and_desc .= $options['show_desc'] ? '<span class="line-sub-item-desc-spn smaller-text">: '.$line_item->desc().'</span>' : ''; |
|
211 | 211 | // name td |
212 | 212 | $html .= EEH_HTML::td(/*__FUNCTION__ .*/ $name_and_desc, '', 'item_l sub-item'); |
213 | 213 | // discount/surcharge td |
214 | 214 | if ($line_item->is_percent()) { |
215 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
215 | + $html .= EEH_HTML::td($line_item->percent().'%', '', 'item_c'); |
|
216 | 216 | } else { |
217 | 217 | $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c jst-rght'); |
218 | 218 | } |
@@ -17,7 +17,7 @@ discard block |
||
17 | 17 | /** |
18 | 18 | * @param EE_Line_Item $line_item |
19 | 19 | * @param array $options |
20 | - * @return mixed |
|
20 | + * @return string |
|
21 | 21 | */ |
22 | 22 | public function display_line_item(EE_Line_Item $line_item, $options = array()) |
23 | 23 | { |
@@ -92,7 +92,7 @@ discard block |
||
92 | 92 | * |
93 | 93 | * @param EE_Line_Item $line_item |
94 | 94 | * @param array $options |
95 | - * @return mixed |
|
95 | + * @return string |
|
96 | 96 | */ |
97 | 97 | private function _item_row(EE_Line_Item $line_item, $options = array()) |
98 | 98 | { |
@@ -122,7 +122,7 @@ discard block |
||
122 | 122 | * |
123 | 123 | * @param EE_Line_Item $line_item |
124 | 124 | * @param array $options |
125 | - * @return mixed |
|
125 | + * @return string |
|
126 | 126 | */ |
127 | 127 | private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
128 | 128 | { |
@@ -153,7 +153,7 @@ discard block |
||
153 | 153 | * |
154 | 154 | * @param EE_Line_Item $line_item |
155 | 155 | * @param array $options |
156 | - * @return mixed |
|
156 | + * @return string |
|
157 | 157 | */ |
158 | 158 | private function _tax_row(EE_Line_Item $line_item, $options = array()) |
159 | 159 | { |
@@ -180,7 +180,7 @@ discard block |
||
180 | 180 | * @param EE_Line_Item $line_item |
181 | 181 | * @param string $text |
182 | 182 | * @param array $options |
183 | - * @return mixed |
|
183 | + * @return string |
|
184 | 184 | */ |
185 | 185 | private function _total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
186 | 186 | { |
@@ -205,7 +205,7 @@ discard block |
||
205 | 205 | * _separator_row |
206 | 206 | * |
207 | 207 | * @param array $options |
208 | - * @return mixed |
|
208 | + * @return string |
|
209 | 209 | */ |
210 | 210 | private function _separator_row($options = array()) |
211 | 211 | { |
@@ -1,222 +1,222 @@ |
||
1 | 1 | <?php |
2 | 2 | /** |
3 | - * |
|
4 | - * Class EE_Invoice_Line_Item_Display_Strategy |
|
5 | - * |
|
6 | - * Description |
|
7 | - * |
|
8 | - * @package Event Espresso |
|
9 | - * @subpackage core |
|
10 | - * @author Brent Christensen |
|
11 | - * |
|
12 | - * |
|
13 | - */ |
|
3 | + * |
|
4 | + * Class EE_Invoice_Line_Item_Display_Strategy |
|
5 | + * |
|
6 | + * Description |
|
7 | + * |
|
8 | + * @package Event Espresso |
|
9 | + * @subpackage core |
|
10 | + * @author Brent Christensen |
|
11 | + * |
|
12 | + * |
|
13 | + */ |
|
14 | 14 | class EE_Invoice_Line_Item_Display_Strategy implements EEI_Line_Item_Display |
15 | 15 | { |
16 | 16 | |
17 | - /** |
|
18 | - * @param EE_Line_Item $line_item |
|
19 | - * @param array $options |
|
20 | - * @return mixed |
|
21 | - */ |
|
22 | - public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
23 | - { |
|
24 | - |
|
25 | - $html = ''; |
|
26 | - // set some default options and merge with incoming |
|
27 | - $default_options = array( |
|
28 | - 'show_desc' => true, |
|
29 | - 'odd' => false |
|
30 | - ); |
|
31 | - $options = array_merge($default_options, (array) $options); |
|
32 | - |
|
33 | - switch ($line_item->type()) { |
|
34 | - case EEM_Line_Item::type_total: |
|
35 | - // loop thru children |
|
36 | - foreach ($line_item->children() as $child_line_item) { |
|
37 | - // recursively feed children back into this method |
|
38 | - $html .= $this->display_line_item($child_line_item, $options); |
|
39 | - } |
|
40 | - $html .= $this->_separator_row($options); |
|
41 | - $html .= $this->_total_row($line_item, __('Total', 'event_espresso'), $options); |
|
42 | - break; |
|
43 | - |
|
44 | - |
|
45 | - case EEM_Line_Item::type_sub_total: |
|
46 | - // loop thru children |
|
47 | - foreach ($line_item->children() as $child_line_item) { |
|
48 | - // recursively feed children back into this method |
|
49 | - $html .= $this->display_line_item($child_line_item, $options); |
|
50 | - } |
|
51 | - $html .= $this->_total_row($line_item, __('Sub-Total', 'event_espresso'), $options); |
|
52 | - break; |
|
53 | - |
|
54 | - |
|
55 | - case EEM_Line_Item::type_tax_sub_total: |
|
56 | - // loop thru children |
|
57 | - foreach ($line_item->children() as $child_line_item) { |
|
58 | - // recursively feed children back into this method |
|
59 | - $html .= $this->display_line_item($child_line_item, $options); |
|
60 | - } |
|
61 | - $html .= $this->_total_row($line_item, __('Tax Total', 'event_espresso'), $options); |
|
62 | - break; |
|
63 | - |
|
64 | - |
|
65 | - case EEM_Line_Item::type_line_item: |
|
66 | - // item row |
|
67 | - $html .= $this->_item_row($line_item, $options); |
|
68 | - // got any kids? |
|
69 | - foreach ($line_item->children() as $child_line_item) { |
|
70 | - $this->display_line_item($child_line_item, $options); |
|
71 | - } |
|
72 | - break; |
|
73 | - |
|
74 | - |
|
75 | - case EEM_Line_Item::type_sub_line_item: |
|
76 | - $html .= $this->_sub_item_row($line_item, $options); |
|
77 | - break; |
|
78 | - |
|
79 | - |
|
80 | - case EEM_Line_Item::type_tax: |
|
81 | - $html .= $this->_tax_row($line_item, $options); |
|
82 | - break; |
|
83 | - } |
|
84 | - |
|
85 | - return $html; |
|
86 | - } |
|
87 | - |
|
88 | - |
|
89 | - |
|
90 | - /** |
|
91 | - * _total_row |
|
92 | - * |
|
93 | - * @param EE_Line_Item $line_item |
|
94 | - * @param array $options |
|
95 | - * @return mixed |
|
96 | - */ |
|
97 | - private function _item_row(EE_Line_Item $line_item, $options = array()) |
|
98 | - { |
|
99 | - // start of row |
|
100 | - $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
101 | - $html = EEH_HTML::tr('', $row_class); |
|
102 | - // name td |
|
103 | - $html .= EEH_HTML::td($line_item->name(), '', 'item_l'); |
|
104 | - // desc td |
|
105 | - $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
106 | - // quantity td |
|
107 | - $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l'); |
|
108 | - // price td |
|
109 | - $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
|
110 | - // total td |
|
111 | - $total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code(); |
|
112 | - $html .= EEH_HTML::td($total, '', 'item_r'); |
|
113 | - // end of row |
|
114 | - $html .= EEH_HTML::trx(); |
|
115 | - return $html; |
|
116 | - } |
|
117 | - |
|
118 | - |
|
119 | - |
|
120 | - /** |
|
121 | - * _sub_item_row |
|
122 | - * |
|
123 | - * @param EE_Line_Item $line_item |
|
124 | - * @param array $options |
|
125 | - * @return mixed |
|
126 | - */ |
|
127 | - private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
128 | - { |
|
129 | - // start of row |
|
130 | - $html = EEH_HTML::tr('', 'item sub-item-row'); |
|
131 | - // name td |
|
132 | - $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item'); |
|
133 | - // desc td |
|
134 | - $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
135 | - $html .= EEH_HTML::td() . EEH_HTML::tdx(); |
|
136 | - // discount/surcharge td |
|
137 | - if ($line_item->is_percent()) { |
|
138 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
139 | - } else { |
|
140 | - $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
|
141 | - } |
|
142 | - // total td |
|
143 | - $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r'); |
|
144 | - // end of row |
|
145 | - $html .= EEH_HTML::trx(); |
|
146 | - return $html; |
|
147 | - } |
|
148 | - |
|
149 | - |
|
150 | - |
|
151 | - /** |
|
152 | - * _tax_row |
|
153 | - * |
|
154 | - * @param EE_Line_Item $line_item |
|
155 | - * @param array $options |
|
156 | - * @return mixed |
|
157 | - */ |
|
158 | - private function _tax_row(EE_Line_Item $line_item, $options = array()) |
|
159 | - { |
|
160 | - // start of row |
|
161 | - $html = EEH_HTML::tr('', 'item sub-item tax-total'); |
|
162 | - // name td |
|
163 | - $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item'); |
|
164 | - // desc td |
|
165 | - $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
166 | - // percent td |
|
167 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"'); |
|
168 | - // total td |
|
169 | - $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r'); |
|
170 | - // end of row |
|
171 | - $html .= EEH_HTML::trx(); |
|
172 | - return $html; |
|
173 | - } |
|
174 | - |
|
175 | - |
|
176 | - |
|
177 | - /** |
|
178 | - * _total_row |
|
179 | - * |
|
180 | - * @param EE_Line_Item $line_item |
|
181 | - * @param string $text |
|
182 | - * @param array $options |
|
183 | - * @return mixed |
|
184 | - */ |
|
185 | - private function _total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
|
186 | - { |
|
187 | - // colspan |
|
188 | - $colspan = $options['show_desc'] ? ' colspan="2"' : ''; |
|
189 | - // start of row |
|
190 | - $html = EEH_HTML::tr('', '', 'total_tr odd'); |
|
191 | - // empty td |
|
192 | - $html .= EEH_HTML::td(EEH_HTML::nbsp(), '', '', '', $colspan); |
|
193 | - // total td |
|
194 | - $html .= EEH_HTML::td($text, '', 'total_currency total', '', $colspan); |
|
195 | - // total td |
|
196 | - $html .= EEH_HTML::td($line_item->total_no_code(), '', 'total'); |
|
197 | - // end of row |
|
198 | - $html .= EEH_HTML::trx(); |
|
199 | - return $html; |
|
200 | - } |
|
201 | - |
|
202 | - |
|
203 | - |
|
204 | - /** |
|
205 | - * _separator_row |
|
206 | - * |
|
207 | - * @param array $options |
|
208 | - * @return mixed |
|
209 | - */ |
|
210 | - private function _separator_row($options = array()) |
|
211 | - { |
|
212 | - // colspan |
|
213 | - $colspan = $options['show_desc'] ? ' colspan="5"' : ' colspan="4"'; |
|
214 | - // start of row |
|
215 | - $html = EEH_HTML::tr(EEH_HTML::td('<hr>', '', '', '', $colspan)); |
|
17 | + /** |
|
18 | + * @param EE_Line_Item $line_item |
|
19 | + * @param array $options |
|
20 | + * @return mixed |
|
21 | + */ |
|
22 | + public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
23 | + { |
|
24 | + |
|
25 | + $html = ''; |
|
26 | + // set some default options and merge with incoming |
|
27 | + $default_options = array( |
|
28 | + 'show_desc' => true, |
|
29 | + 'odd' => false |
|
30 | + ); |
|
31 | + $options = array_merge($default_options, (array) $options); |
|
32 | + |
|
33 | + switch ($line_item->type()) { |
|
34 | + case EEM_Line_Item::type_total: |
|
35 | + // loop thru children |
|
36 | + foreach ($line_item->children() as $child_line_item) { |
|
37 | + // recursively feed children back into this method |
|
38 | + $html .= $this->display_line_item($child_line_item, $options); |
|
39 | + } |
|
40 | + $html .= $this->_separator_row($options); |
|
41 | + $html .= $this->_total_row($line_item, __('Total', 'event_espresso'), $options); |
|
42 | + break; |
|
43 | + |
|
44 | + |
|
45 | + case EEM_Line_Item::type_sub_total: |
|
46 | + // loop thru children |
|
47 | + foreach ($line_item->children() as $child_line_item) { |
|
48 | + // recursively feed children back into this method |
|
49 | + $html .= $this->display_line_item($child_line_item, $options); |
|
50 | + } |
|
51 | + $html .= $this->_total_row($line_item, __('Sub-Total', 'event_espresso'), $options); |
|
52 | + break; |
|
53 | + |
|
54 | + |
|
55 | + case EEM_Line_Item::type_tax_sub_total: |
|
56 | + // loop thru children |
|
57 | + foreach ($line_item->children() as $child_line_item) { |
|
58 | + // recursively feed children back into this method |
|
59 | + $html .= $this->display_line_item($child_line_item, $options); |
|
60 | + } |
|
61 | + $html .= $this->_total_row($line_item, __('Tax Total', 'event_espresso'), $options); |
|
62 | + break; |
|
63 | + |
|
64 | + |
|
65 | + case EEM_Line_Item::type_line_item: |
|
66 | + // item row |
|
67 | + $html .= $this->_item_row($line_item, $options); |
|
68 | + // got any kids? |
|
69 | + foreach ($line_item->children() as $child_line_item) { |
|
70 | + $this->display_line_item($child_line_item, $options); |
|
71 | + } |
|
72 | + break; |
|
73 | + |
|
74 | + |
|
75 | + case EEM_Line_Item::type_sub_line_item: |
|
76 | + $html .= $this->_sub_item_row($line_item, $options); |
|
77 | + break; |
|
78 | + |
|
79 | + |
|
80 | + case EEM_Line_Item::type_tax: |
|
81 | + $html .= $this->_tax_row($line_item, $options); |
|
82 | + break; |
|
83 | + } |
|
84 | + |
|
85 | + return $html; |
|
86 | + } |
|
87 | + |
|
88 | + |
|
89 | + |
|
90 | + /** |
|
91 | + * _total_row |
|
92 | + * |
|
93 | + * @param EE_Line_Item $line_item |
|
94 | + * @param array $options |
|
95 | + * @return mixed |
|
96 | + */ |
|
97 | + private function _item_row(EE_Line_Item $line_item, $options = array()) |
|
98 | + { |
|
99 | + // start of row |
|
100 | + $row_class = $options['odd'] ? 'item odd' : 'item'; |
|
101 | + $html = EEH_HTML::tr('', $row_class); |
|
102 | + // name td |
|
103 | + $html .= EEH_HTML::td($line_item->name(), '', 'item_l'); |
|
104 | + // desc td |
|
105 | + $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
106 | + // quantity td |
|
107 | + $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l'); |
|
108 | + // price td |
|
109 | + $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
|
110 | + // total td |
|
111 | + $total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code(); |
|
112 | + $html .= EEH_HTML::td($total, '', 'item_r'); |
|
113 | + // end of row |
|
114 | + $html .= EEH_HTML::trx(); |
|
115 | + return $html; |
|
116 | + } |
|
117 | + |
|
118 | + |
|
119 | + |
|
120 | + /** |
|
121 | + * _sub_item_row |
|
122 | + * |
|
123 | + * @param EE_Line_Item $line_item |
|
124 | + * @param array $options |
|
125 | + * @return mixed |
|
126 | + */ |
|
127 | + private function _sub_item_row(EE_Line_Item $line_item, $options = array()) |
|
128 | + { |
|
129 | + // start of row |
|
130 | + $html = EEH_HTML::tr('', 'item sub-item-row'); |
|
131 | + // name td |
|
132 | + $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item'); |
|
133 | + // desc td |
|
134 | + $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
135 | + $html .= EEH_HTML::td() . EEH_HTML::tdx(); |
|
136 | + // discount/surcharge td |
|
137 | + if ($line_item->is_percent()) { |
|
138 | + $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
139 | + } else { |
|
140 | + $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
|
141 | + } |
|
142 | + // total td |
|
143 | + $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r'); |
|
144 | + // end of row |
|
145 | + $html .= EEH_HTML::trx(); |
|
146 | + return $html; |
|
147 | + } |
|
148 | + |
|
149 | + |
|
150 | + |
|
151 | + /** |
|
152 | + * _tax_row |
|
153 | + * |
|
154 | + * @param EE_Line_Item $line_item |
|
155 | + * @param array $options |
|
156 | + * @return mixed |
|
157 | + */ |
|
158 | + private function _tax_row(EE_Line_Item $line_item, $options = array()) |
|
159 | + { |
|
160 | + // start of row |
|
161 | + $html = EEH_HTML::tr('', 'item sub-item tax-total'); |
|
162 | + // name td |
|
163 | + $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item'); |
|
164 | + // desc td |
|
165 | + $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
|
166 | + // percent td |
|
167 | + $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"'); |
|
168 | + // total td |
|
169 | + $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r'); |
|
170 | + // end of row |
|
171 | + $html .= EEH_HTML::trx(); |
|
172 | + return $html; |
|
173 | + } |
|
174 | + |
|
175 | + |
|
176 | + |
|
177 | + /** |
|
178 | + * _total_row |
|
179 | + * |
|
180 | + * @param EE_Line_Item $line_item |
|
181 | + * @param string $text |
|
182 | + * @param array $options |
|
183 | + * @return mixed |
|
184 | + */ |
|
185 | + private function _total_row(EE_Line_Item $line_item, $text = '', $options = array()) |
|
186 | + { |
|
187 | + // colspan |
|
188 | + $colspan = $options['show_desc'] ? ' colspan="2"' : ''; |
|
189 | + // start of row |
|
190 | + $html = EEH_HTML::tr('', '', 'total_tr odd'); |
|
191 | + // empty td |
|
192 | + $html .= EEH_HTML::td(EEH_HTML::nbsp(), '', '', '', $colspan); |
|
193 | + // total td |
|
194 | + $html .= EEH_HTML::td($text, '', 'total_currency total', '', $colspan); |
|
195 | + // total td |
|
196 | + $html .= EEH_HTML::td($line_item->total_no_code(), '', 'total'); |
|
197 | + // end of row |
|
198 | + $html .= EEH_HTML::trx(); |
|
199 | + return $html; |
|
200 | + } |
|
201 | + |
|
202 | + |
|
203 | + |
|
204 | + /** |
|
205 | + * _separator_row |
|
206 | + * |
|
207 | + * @param array $options |
|
208 | + * @return mixed |
|
209 | + */ |
|
210 | + private function _separator_row($options = array()) |
|
211 | + { |
|
212 | + // colspan |
|
213 | + $colspan = $options['show_desc'] ? ' colspan="5"' : ' colspan="4"'; |
|
214 | + // start of row |
|
215 | + $html = EEH_HTML::tr(EEH_HTML::td('<hr>', '', '', '', $colspan)); |
|
216 | 216 | // // separator td |
217 | 217 | // $html .= EEH_HTML::td( '<hr>', '', '', '', $colspan ); |
218 | 218 | // // end of row |
219 | 219 | // $html .= EEH_HTML::trx(); |
220 | - return $html; |
|
221 | - } |
|
220 | + return $html; |
|
221 | + } |
|
222 | 222 | } |
@@ -108,7 +108,7 @@ discard block |
||
108 | 108 | // price td |
109 | 109 | $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
110 | 110 | // total td |
111 | - $total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code(); |
|
111 | + $total = $line_item->is_taxable() ? $line_item->total_no_code().'*' : $line_item->total_no_code(); |
|
112 | 112 | $html .= EEH_HTML::td($total, '', 'item_r'); |
113 | 113 | // end of row |
114 | 114 | $html .= EEH_HTML::trx(); |
@@ -132,10 +132,10 @@ discard block |
||
132 | 132 | $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item'); |
133 | 133 | // desc td |
134 | 134 | $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
135 | - $html .= EEH_HTML::td() . EEH_HTML::tdx(); |
|
135 | + $html .= EEH_HTML::td().EEH_HTML::tdx(); |
|
136 | 136 | // discount/surcharge td |
137 | 137 | if ($line_item->is_percent()) { |
138 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c'); |
|
138 | + $html .= EEH_HTML::td($line_item->percent().'%', '', 'item_c'); |
|
139 | 139 | } else { |
140 | 140 | $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c'); |
141 | 141 | } |
@@ -164,7 +164,7 @@ discard block |
||
164 | 164 | // desc td |
165 | 165 | $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : ''; |
166 | 166 | // percent td |
167 | - $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"'); |
|
167 | + $html .= EEH_HTML::td($line_item->percent().'%', '', 'item_c', '', ' colspan="2"'); |
|
168 | 168 | // total td |
169 | 169 | $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r'); |
170 | 170 | // end of row |
@@ -32,7 +32,7 @@ |
||
32 | 32 | /** |
33 | 33 | * @param EE_Line_Item $line_item |
34 | 34 | * @param array $options |
35 | - * @return mixed |
|
35 | + * @return string |
|
36 | 36 | */ |
37 | 37 | public function display_line_item(EE_Line_Item $line_item, $options = array()) |
38 | 38 | { |
@@ -14,88 +14,88 @@ |
||
14 | 14 | * ------------------------------------------------------------------------ |
15 | 15 | */ |
16 | 16 | /** |
17 | - * |
|
18 | - * Class EE_Receipt_Line_Item_Display_Strategy |
|
19 | - * |
|
20 | - * Description |
|
21 | - * |
|
22 | - * @package Event Espresso |
|
23 | - * @subpackage core |
|
24 | - * @author Brent Christensen |
|
25 | - * |
|
26 | - * |
|
27 | - */ |
|
17 | + * |
|
18 | + * Class EE_Receipt_Line_Item_Display_Strategy |
|
19 | + * |
|
20 | + * Description |
|
21 | + * |
|
22 | + * @package Event Espresso |
|
23 | + * @subpackage core |
|
24 | + * @author Brent Christensen |
|
25 | + * |
|
26 | + * |
|
27 | + */ |
|
28 | 28 | |
29 | 29 | class EE_Receipt_Line_Item_Display_Strategy implements EEI_Line_Item_Display |
30 | 30 | { |
31 | 31 | |
32 | - /** |
|
33 | - * @param EE_Line_Item $line_item |
|
34 | - * @param array $options |
|
35 | - * @return mixed |
|
36 | - */ |
|
37 | - public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
38 | - { |
|
32 | + /** |
|
33 | + * @param EE_Line_Item $line_item |
|
34 | + * @param array $options |
|
35 | + * @return mixed |
|
36 | + */ |
|
37 | + public function display_line_item(EE_Line_Item $line_item, $options = array()) |
|
38 | + { |
|
39 | 39 | |
40 | - $html = ''; |
|
41 | - // set some default options and merge with incoming |
|
42 | - $default_options = array( |
|
43 | - 'show_desc' => true, |
|
44 | - 'odd' => false |
|
45 | - ); |
|
46 | - $options = array_merge($default_options, (array) $options); |
|
47 | - switch ($line_item->type()) { |
|
48 | - case EEM_Line_Item::type_total: |
|
49 | - // loop thru children |
|
50 | - foreach ($line_item->children() as $child_line_item) { |
|
51 | - // recursively feed children back into this method |
|
40 | + $html = ''; |
|
41 | + // set some default options and merge with incoming |
|
42 | + $default_options = array( |
|
43 | + 'show_desc' => true, |
|
44 | + 'odd' => false |
|
45 | + ); |
|
46 | + $options = array_merge($default_options, (array) $options); |
|
47 | + switch ($line_item->type()) { |
|
48 | + case EEM_Line_Item::type_total: |
|
49 | + // loop thru children |
|
50 | + foreach ($line_item->children() as $child_line_item) { |
|
51 | + // recursively feed children back into this method |
|
52 | 52 | // $html .= $this->display_line_item( $child_line_item, $options ); |
53 | - } |
|
53 | + } |
|
54 | 54 | // $html .= $this->_separator_row( $options ); |
55 | 55 | // $html .= $this->_total_row( $line_item, __('Total', 'event_espresso'), $options ); |
56 | - break; |
|
56 | + break; |
|
57 | 57 | |
58 | 58 | |
59 | - case EEM_Line_Item::type_sub_total: |
|
60 | - // loop thru children |
|
61 | - foreach ($line_item->children() as $child_line_item) { |
|
62 | - // recursively feed children back into this method |
|
59 | + case EEM_Line_Item::type_sub_total: |
|
60 | + // loop thru children |
|
61 | + foreach ($line_item->children() as $child_line_item) { |
|
62 | + // recursively feed children back into this method |
|
63 | 63 | // $html .= $this->display_line_item( $child_line_item, $options ); |
64 | - } |
|
64 | + } |
|
65 | 65 | // $html .= $this->_total_row( $line_item, __('Sub-Total', 'event_espresso'), $options ); |
66 | - break; |
|
66 | + break; |
|
67 | 67 | |
68 | 68 | |
69 | - case EEM_Line_Item::type_tax_sub_total: |
|
70 | - // loop thru children |
|
71 | - foreach ($line_item->children() as $child_line_item) { |
|
72 | - // recursively feed children back into this method |
|
69 | + case EEM_Line_Item::type_tax_sub_total: |
|
70 | + // loop thru children |
|
71 | + foreach ($line_item->children() as $child_line_item) { |
|
72 | + // recursively feed children back into this method |
|
73 | 73 | // $html .= $this->display_line_item( $child_line_item, $options ); |
74 | - } |
|
74 | + } |
|
75 | 75 | // $html .= $this->_total_row( $line_item, __('Tax Total', 'event_espresso'), $options ); |
76 | - break; |
|
76 | + break; |
|
77 | 77 | |
78 | 78 | |
79 | - case EEM_Line_Item::type_line_item: |
|
80 | - // item row |
|
79 | + case EEM_Line_Item::type_line_item: |
|
80 | + // item row |
|
81 | 81 | // $html .= $this->_item_row( $line_item, $options ); |
82 | - // got any kids? |
|
83 | - foreach ($line_item->children() as $child_line_item) { |
|
82 | + // got any kids? |
|
83 | + foreach ($line_item->children() as $child_line_item) { |
|
84 | 84 | // $this->display_line_item( $child_line_item, $options ); |
85 | - } |
|
86 | - break; |
|
85 | + } |
|
86 | + break; |
|
87 | 87 | |
88 | 88 | |
89 | - case EEM_Line_Item::type_sub_line_item: |
|
89 | + case EEM_Line_Item::type_sub_line_item: |
|
90 | 90 | // $html .= $this->_sub_item_row( $line_item, $options ); |
91 | - break; |
|
91 | + break; |
|
92 | 92 | |
93 | 93 | |
94 | - case EEM_Line_Item::type_tax: |
|
94 | + case EEM_Line_Item::type_tax: |
|
95 | 95 | // $html .= $this->_tax_row( $line_item, $options ); |
96 | - break; |
|
97 | - } |
|
96 | + break; |
|
97 | + } |
|
98 | 98 | |
99 | - return $html; |
|
100 | - } |
|
99 | + return $html; |
|
100 | + } |
|
101 | 101 | } |
@@ -310,6 +310,7 @@ |
||
310 | 310 | * @param EE_message_type $message_type |
311 | 311 | * @param string $field The field reference for the specific template being looked up. |
312 | 312 | * @param string $context The context reference for the specific template being looked up |
313 | + * @param EE_Messages_Template_Pack_Default|null $default_pack |
|
313 | 314 | * |
314 | 315 | * @return string The template contents. |
315 | 316 | */ |
@@ -14,511 +14,511 @@ |
||
14 | 14 | { |
15 | 15 | |
16 | 16 | |
17 | - /** |
|
18 | - * This defines the base_path where the templates are located. |
|
19 | - * |
|
20 | - * @since 4.5.0 |
|
21 | - * |
|
22 | - * @var string |
|
23 | - */ |
|
24 | - protected $_base_path; |
|
17 | + /** |
|
18 | + * This defines the base_path where the templates are located. |
|
19 | + * |
|
20 | + * @since 4.5.0 |
|
21 | + * |
|
22 | + * @var string |
|
23 | + */ |
|
24 | + protected $_base_path; |
|
25 | 25 | |
26 | 26 | |
27 | 27 | |
28 | 28 | |
29 | - /** |
|
30 | - * This defines the base_url where things are found for this template pack (possibly variations). |
|
31 | - * |
|
32 | - * @since 4.5.0 |
|
33 | - * |
|
34 | - * @var string |
|
35 | - */ |
|
36 | - protected $_base_url; |
|
29 | + /** |
|
30 | + * This defines the base_url where things are found for this template pack (possibly variations). |
|
31 | + * |
|
32 | + * @since 4.5.0 |
|
33 | + * |
|
34 | + * @var string |
|
35 | + */ |
|
36 | + protected $_base_url; |
|
37 | 37 | |
38 | 38 | |
39 | 39 | |
40 | - /** |
|
41 | - * localized label for this template pack |
|
42 | - * |
|
43 | - * @since 4.5.0 |
|
44 | - * |
|
45 | - * @var string |
|
46 | - */ |
|
47 | - public $label; |
|
40 | + /** |
|
41 | + * localized label for this template pack |
|
42 | + * |
|
43 | + * @since 4.5.0 |
|
44 | + * |
|
45 | + * @var string |
|
46 | + */ |
|
47 | + public $label; |
|
48 | 48 | |
49 | 49 | |
50 | 50 | |
51 | 51 | |
52 | - /** |
|
53 | - * used to contain a description for the template pack. |
|
54 | - * |
|
55 | - * @since 4.5.0 |
|
56 | - * |
|
57 | - * @var string |
|
58 | - */ |
|
59 | - public $description; |
|
52 | + /** |
|
53 | + * used to contain a description for the template pack. |
|
54 | + * |
|
55 | + * @since 4.5.0 |
|
56 | + * |
|
57 | + * @var string |
|
58 | + */ |
|
59 | + public $description; |
|
60 | 60 | |
61 | 61 | |
62 | 62 | |
63 | 63 | |
64 | - /** |
|
65 | - * How this template is referenced in the db |
|
66 | - * |
|
67 | - * @since 4.5.0 |
|
68 | - * |
|
69 | - * @var string |
|
70 | - */ |
|
71 | - public $dbref; |
|
64 | + /** |
|
65 | + * How this template is referenced in the db |
|
66 | + * |
|
67 | + * @since 4.5.0 |
|
68 | + * |
|
69 | + * @var string |
|
70 | + */ |
|
71 | + public $dbref; |
|
72 | 72 | |
73 | 73 | |
74 | 74 | |
75 | 75 | |
76 | - /** |
|
77 | - * This is an array indexed by messenger and with an array of message types as values that indicate what messenger and message type this template pack supports by default. It is possible for this to be modified by plugins via filters, but out of the box, this is what the template pack supports. |
|
78 | - * |
|
79 | - * @since 4.5.0 |
|
80 | - * |
|
81 | - * @var array. |
|
82 | - */ |
|
83 | - protected $_supports = array(); |
|
76 | + /** |
|
77 | + * This is an array indexed by messenger and with an array of message types as values that indicate what messenger and message type this template pack supports by default. It is possible for this to be modified by plugins via filters, but out of the box, this is what the template pack supports. |
|
78 | + * |
|
79 | + * @since 4.5.0 |
|
80 | + * |
|
81 | + * @var array. |
|
82 | + */ |
|
83 | + protected $_supports = array(); |
|
84 | 84 | |
85 | 85 | |
86 | 86 | |
87 | 87 | |
88 | 88 | |
89 | - /** |
|
90 | - * Holds the retrieved default templates for this template pack in a multidimensional array indexed by context and field, for a given messenger and message type. Example format: |
|
91 | - * |
|
92 | - * $templates = array( |
|
93 | - * 'email' => array( |
|
94 | - * 'registration' => array( |
|
95 | - * 'admin' => array( |
|
96 | - * 'to' => 'contents', |
|
97 | - * 'from' => 'contents', |
|
98 | - * 'subject' => 'contents', |
|
99 | - * 'content' => 'contents', |
|
100 | - * 'event_list' => 'contents', |
|
101 | - * 'attendee_list' => 'contents' |
|
102 | - * ), |
|
103 | - * 'attendee' => array( |
|
104 | - * 'to' => 'contents', |
|
105 | - * 'from' => 'contents', |
|
106 | - * 'subject' => 'contents', |
|
107 | - * 'content' => 'contents', |
|
108 | - * 'event_list' => 'contents', |
|
109 | - * 'attendee_list' => 'contents', |
|
110 | - * ), |
|
111 | - * ) |
|
112 | - * ) |
|
113 | - * ) |
|
114 | - * |
|
115 | - * @since 4.5.0 |
|
116 | - * |
|
117 | - * @var array |
|
118 | - */ |
|
119 | - protected $_templates = array(); |
|
89 | + /** |
|
90 | + * Holds the retrieved default templates for this template pack in a multidimensional array indexed by context and field, for a given messenger and message type. Example format: |
|
91 | + * |
|
92 | + * $templates = array( |
|
93 | + * 'email' => array( |
|
94 | + * 'registration' => array( |
|
95 | + * 'admin' => array( |
|
96 | + * 'to' => 'contents', |
|
97 | + * 'from' => 'contents', |
|
98 | + * 'subject' => 'contents', |
|
99 | + * 'content' => 'contents', |
|
100 | + * 'event_list' => 'contents', |
|
101 | + * 'attendee_list' => 'contents' |
|
102 | + * ), |
|
103 | + * 'attendee' => array( |
|
104 | + * 'to' => 'contents', |
|
105 | + * 'from' => 'contents', |
|
106 | + * 'subject' => 'contents', |
|
107 | + * 'content' => 'contents', |
|
108 | + * 'event_list' => 'contents', |
|
109 | + * 'attendee_list' => 'contents', |
|
110 | + * ), |
|
111 | + * ) |
|
112 | + * ) |
|
113 | + * ) |
|
114 | + * |
|
115 | + * @since 4.5.0 |
|
116 | + * |
|
117 | + * @var array |
|
118 | + */ |
|
119 | + protected $_templates = array(); |
|
120 | 120 | |
121 | 121 | |
122 | 122 | |
123 | 123 | |
124 | 124 | |
125 | 125 | |
126 | - /** |
|
127 | - * Template Packs must ALWAYS have a default variation defined. This property allow one to override the default variation labels per messenger. |
|
128 | - * example: |
|
129 | - * $this->_default_variation_labels = array( 'email' => __('Default', 'event_espresso' ) ); |
|
130 | - * |
|
131 | - * @var array |
|
132 | - */ |
|
133 | - protected $_default_variation_labels = array(); |
|
126 | + /** |
|
127 | + * Template Packs must ALWAYS have a default variation defined. This property allow one to override the default variation labels per messenger. |
|
128 | + * example: |
|
129 | + * $this->_default_variation_labels = array( 'email' => __('Default', 'event_espresso' ) ); |
|
130 | + * |
|
131 | + * @var array |
|
132 | + */ |
|
133 | + protected $_default_variation_labels = array(); |
|
134 | 134 | |
135 | 135 | |
136 | 136 | |
137 | 137 | |
138 | - /** |
|
139 | - * This is an array of extra css variations for message templates indexed by messenger with the values as an array or message types the variations apply to as the key and then values are an array with variation slugs as the key and label as the value. Note the default variation is not included in this array. So the structure is: |
|
140 | - * array( |
|
141 | - * 'email' => array( |
|
142 | - * ) |
|
143 | - * ) |
|
144 | - * |
|
145 | - * Keep in mind that this property is used both for indicating valid variations for a given message type and messenger but the variation files themselves are ONLY unique to the messenger. So if you have a variation for the html messenger referenced by the slug "sunset_red" Then the variation file for the main type will be html_main_sunset_red.css. All the array in this property allows you to do, is indicate that with certain message types the sunset_red variation is available but for other message types its not. But you could NOT have a sunset_red variation file for one messenger/message_type and a different one for another messenger/message_type. If you want different css looks then you can define a different structural layout for the template , messenger, message type combination and in the same sunset_red.css variation file just add css specific to that layout. |
|
146 | - * |
|
147 | - * @since 4.5.0 |
|
148 | - * |
|
149 | - * @var array |
|
150 | - */ |
|
151 | - public $_variations = array(); |
|
152 | - |
|
153 | - |
|
154 | - |
|
155 | - |
|
156 | - /** |
|
157 | - * Template pack constructor |
|
158 | - * |
|
159 | - * @since 4.5.0 |
|
160 | - */ |
|
161 | - public function __construct() |
|
162 | - { |
|
163 | - $this->_set_props(); |
|
164 | - // make sure classname is correct |
|
165 | - $classname = get_class($this); |
|
166 | - // make sure required props have been set |
|
167 | - |
|
168 | - // if label is empty then throw an error because we should have it defined by now. |
|
169 | - if (! isset($this->label)) { |
|
170 | - throw new EE_Error(sprintf(__('The label property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
171 | - } |
|
172 | - |
|
173 | - |
|
174 | - // the reference for this template pack |
|
175 | - if (! isset($this->dbref)) { |
|
176 | - throw new EE_Error(sprintf(__('The dbref property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
177 | - } |
|
178 | - |
|
179 | - // make sure dbref is safe |
|
180 | - $this->dbref = str_replace('-', '_', sanitize_key($this->dbref)); |
|
181 | - |
|
182 | - $should_be = 'EE_Messages_Template_Pack_' . str_replace(' ', '_', ucwords(str_replace('_', ' ', $this->dbref))); |
|
183 | - |
|
184 | - if ($should_be !== $classname) { |
|
185 | - throw new EE_Error(sprintf(__('The name of the template pack instantiated class is "%s". It should be "%s". Make sure that the name of the template pack class matches is prepended with "EE_Messages_Template_Pack_" and appended with a sentence case iteration of the value for your template pack\'s dbref property.', 'event_espresso'), $classname, $should_be)); |
|
186 | - } |
|
187 | - |
|
188 | - // if _base_path is not set then throw an error because a base path string is needed. |
|
189 | - if (empty($this->_base_path)) { |
|
190 | - throw new EE_Error(sprintf(__('The _base_path property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
191 | - } |
|
192 | - |
|
193 | - |
|
194 | - // if _base_url is not set then throw an error because a string is needed for variations. |
|
195 | - if (empty($this->_base_url)) { |
|
196 | - throw new EE_Error(sprintf(__('The _base_url property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
197 | - } |
|
198 | - |
|
199 | - |
|
200 | - // if $supports is not set then throw an error because that effectively means this template_pack does not have any templates! |
|
201 | - if (empty($this->_supports)) { |
|
202 | - throw new EE_Error(sprintf(__('The supports property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
203 | - } |
|
204 | - } |
|
205 | - |
|
206 | - |
|
207 | - |
|
208 | - /** |
|
209 | - * This method should be used to define the following properties: |
|
210 | - * - label |
|
211 | - * - dbref |
|
212 | - * - description |
|
213 | - * - _base_path |
|
214 | - * - _base_url |
|
215 | - * - supports |
|
216 | - * - variations |
|
217 | - * |
|
218 | - * @since 4.5.0 |
|
219 | - * @return void. |
|
220 | - * @abstract |
|
221 | - */ |
|
222 | - abstract protected function _set_props(); |
|
223 | - |
|
224 | - |
|
225 | - |
|
226 | - |
|
227 | - /** |
|
228 | - * Wrapper for get_templates() ( @see get_templates() for documentation) |
|
229 | - * |
|
230 | - * @since 4.5.0 |
|
231 | - * |
|
232 | - * @param EE_messenger $messenger |
|
233 | - * @param EE_message_type $message_type |
|
234 | - * |
|
235 | - * @return array |
|
236 | - */ |
|
237 | - public function get_templates(EE_messenger $messenger, EE_message_type $message_type) |
|
238 | - { |
|
239 | - return isset($this->_templates[ $messenger->name ][ $message_type->name ]) ? $this->_templates[ $messenger->name ][ $message_type->name ] : $this->_get_templates($messenger, $message_type); |
|
240 | - } |
|
241 | - |
|
242 | - |
|
243 | - |
|
244 | - |
|
245 | - /** |
|
246 | - * This takes the incoming messenger and message type objects, uses them to get the set fields and contexts, then attempts to retrieve the templates matching those for this given template pack. |
|
247 | - * |
|
248 | - * @since 4.5.0 |
|
249 | - * |
|
250 | - * @param EE_messenger $messenger |
|
251 | - * @param EE_message_type $message_type |
|
252 | - * |
|
253 | - * @return array Returns an multi-level associative array indexed by template context and field in the format: |
|
254 | - * array( 'context' => array( 'field' => 'value', 'another-field', 'value' ) ); |
|
255 | - */ |
|
256 | - protected function _get_templates(EE_messenger $messenger, EE_message_type $message_type) |
|
257 | - { |
|
258 | - $templates = array(); |
|
259 | - |
|
260 | - /** |
|
261 | - * Retrieving the default pack for later usage of default templates for template packs that |
|
262 | - * are NOT the default pack ( or an extension of the default pack ). |
|
263 | - * We ONLY set this variable to be the default pack IF the loaded class is NOT the default |
|
264 | - * pack. This prevents recursion in _get_specific_template(). The intention is that for |
|
265 | - * template packs that are NOT default packs, we use the default template pack to provide |
|
266 | - * the final fallback templates if there aren't any defined for the called template pack. |
|
267 | - * |
|
268 | - * @type EE_Messages_Template_Pack_Default | null $default_pack |
|
269 | - */ |
|
270 | - $default_pack = ! $this instanceof EE_Messages_Template_Pack_Default ? new EE_Messages_Template_Pack_Default() : null; |
|
271 | - |
|
272 | - $fields = $messenger->get_template_fields(); |
|
273 | - $contexts = $message_type->get_contexts(); |
|
274 | - |
|
275 | - |
|
276 | - foreach ($contexts as $context => $details) { |
|
277 | - foreach ($fields as $field => $field_details) { |
|
278 | - if (empty($field_details)) { |
|
279 | - continue; |
|
280 | - } |
|
281 | - /** |
|
282 | - * is this a field array (linked to a main field)? |
|
283 | - */ |
|
284 | - if ($field == 'extra') { |
|
285 | - foreach ($field_details as $main_field => $sub_fields) { |
|
286 | - foreach ($sub_fields as $sub_field => $sub_field_details) { |
|
287 | - // make sure that the template_field_ref matches what the main template field is for this template group. |
|
288 | - $template_field_ref = $sub_field == 'main' ? $main_field : $sub_field; |
|
289 | - $templates[ $context ][ $main_field ][ $sub_field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $template_field_ref, $context); |
|
290 | - } |
|
291 | - } |
|
292 | - } else { |
|
293 | - $templates[ $context ][ $field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $field, $context); |
|
294 | - } |
|
295 | - } |
|
296 | - } |
|
297 | - |
|
298 | - $templates = apply_filters('FHEE__EE_Template_Pack___get_templates__templates', $templates, $messenger, $message_type, $this); |
|
299 | - |
|
300 | - $this->_templates[ $messenger->name ][ $message_type->name ] = $templates; |
|
301 | - return $templates; |
|
302 | - } |
|
303 | - |
|
304 | - |
|
305 | - /** |
|
306 | - * Utility method for retrieving a specific template matching the given parameters |
|
307 | - * |
|
308 | - * @param null | EE_Messages_Template_Pack_Default $default_pack |
|
309 | - * @param EE_messenger $messenger |
|
310 | - * @param EE_message_type $message_type |
|
311 | - * @param string $field The field reference for the specific template being looked up. |
|
312 | - * @param string $context The context reference for the specific template being looked up |
|
313 | - * |
|
314 | - * @return string The template contents. |
|
315 | - */ |
|
316 | - protected function _get_specific_template($default_pack, EE_messenger $messenger, EE_message_type $message_type, $field, $context) |
|
317 | - { |
|
318 | - |
|
319 | - // default templates |
|
320 | - $default_templates = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_templates($messenger, $message_type) : array(); |
|
321 | - |
|
322 | - // first we allow for the $_base_path to be filtered. However, we assign this to a new variable so that we have the original base_path as a fallback. |
|
323 | - $filtered_base_path = apply_filters('FHEE__EE_Template_Pack___get_specific_template__filtered_base_path', $this->_base_path, $messenger, $message_type, $field, $context, $this); |
|
324 | - |
|
325 | - $master_templates = $message_type->get_master_templates(); |
|
326 | - $master_templates_mt = isset($master_templates[ $messenger->name ]) ? $master_templates[ $messenger->name ] : $message_type->name; |
|
327 | - $full_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '_' . $context . '.template.php'; |
|
328 | - $fallback_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '.template.php'; |
|
329 | - $mt_defined_full_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
330 | - $mt_defined_fallback_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
331 | - $base_defined_full_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
332 | - $base_defined_fallback_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
333 | - |
|
334 | - /** |
|
335 | - * Template checks are done hierarchically in the following order: |
|
336 | - * |
|
337 | - * - a match for the full messenger name, message type, context and field in the full path for the given template pack. |
|
338 | - * - a match for the full messenger name, message type, field in the full path for the given template pack. |
|
339 | - * - a match for the full messenger name, message type, field, context in the path grabbed for the related message type defined in the _master_templates property for the message type (i.e. all registration message types share the same template as the main registration message type). |
|
340 | - * - match for the full messenger name, message type, field for the related message type defined in the _master templates property for the message type |
|
341 | - * - a match for a default template matching the messenger, name, context, field (as set by the default template packs). |
|
342 | - * - empty string. |
|
343 | - */ |
|
344 | - |
|
345 | - |
|
346 | - if (is_readable($full_path)) { |
|
347 | - $actual_path = $full_path; |
|
348 | - } elseif (is_readable($fallback_path)) { |
|
349 | - $actual_path = $fallback_path; |
|
350 | - } elseif (is_readable($mt_defined_full_path)) { |
|
351 | - $actual_path = $mt_defined_full_path; |
|
352 | - } elseif (is_readable($mt_defined_fallback_path)) { |
|
353 | - $actual_path = $mt_defined_fallback_path; |
|
354 | - } elseif (is_readable($base_defined_full_path)) { |
|
355 | - $actual_path = $base_defined_full_path; |
|
356 | - } elseif (is_readable($base_defined_fallback_path)) { |
|
357 | - $actual_path = $base_defined_fallback_path; |
|
358 | - } else { |
|
359 | - $actual_path = ''; |
|
360 | - } |
|
361 | - if (empty($actual_path)) { |
|
362 | - $contents = isset($default_templates[ $context ][ $field ]) ? $default_templates[ $context ][ $field ] : ''; |
|
363 | - } else { |
|
364 | - $contents = EEH_Template::display_template($actual_path, array(), true); |
|
365 | - } |
|
366 | - |
|
367 | - return apply_filters('FHEE__EE_Messages_Template_Pack__get_specific_template__contents', $contents, $actual_path, $messenger, $message_type, $field, $context, $this); |
|
368 | - } |
|
369 | - |
|
370 | - |
|
371 | - |
|
372 | - |
|
373 | - |
|
374 | - /** |
|
375 | - * Return filtered _supports property. |
|
376 | - * |
|
377 | - * @since 4.5.0 |
|
378 | - * |
|
379 | - * @return array |
|
380 | - */ |
|
381 | - public function get_supports() |
|
382 | - { |
|
383 | - $supports = apply_filters('FHEE__' . get_class($this) . '__get_supports', $this->_supports); |
|
384 | - return apply_filters('FHEE__EE_Messages_Template_Pack__get_supports', $supports, $this); |
|
385 | - } |
|
386 | - |
|
387 | - |
|
388 | - |
|
389 | - |
|
390 | - /** |
|
391 | - * This simply returns the $_default_variation_labels property value. |
|
392 | - * |
|
393 | - * @since 4.5.0 |
|
394 | - * |
|
395 | - * @param string $messenger if the messenger slug is returned then the default label for the specific messenger is retrieved. If it doesn't exist then the __('Default', 'event_espresso') is returned. If NO value is provided then whatever is set on the _default_variation_labels property is returned. |
|
396 | - * |
|
397 | - * @return array|string |
|
398 | - */ |
|
399 | - public function get_default_variation_labels($messenger = '') |
|
400 | - { |
|
401 | - $label = empty($messenger) ? $this->_default_variation_labels : array(); |
|
402 | - $label = empty($label) && ! empty($this->_default_variation_labels[ $messenger ]) ? $this->_default_variation_labels[ $messenger ] : __('Default', 'event_espresso'); |
|
403 | - |
|
404 | - return apply_filters('FHEE__EE_Messages_Template_Pack__get_default_variation_labels', $label, $this->_default_variation_labels, $messenger); |
|
405 | - } |
|
406 | - |
|
407 | - |
|
408 | - |
|
409 | - |
|
410 | - |
|
411 | - /** |
|
412 | - * This simply returns the _variations property. |
|
413 | - * |
|
414 | - * @since 4.5.0 |
|
415 | - * |
|
416 | - * @param string $messenger if included then css variations matching the messenger are returned. Otherwise, just the default variation is included. If both message type AND messenger are empty then all variations are returned. |
|
417 | - * @param string $message_type if included then css variations matching the message_type are returned (must have $messenger set). Otherwise the array of variations per message type are returned. If message_type is provided but NOT the messenger, then just all variations for all messengers are returned. |
|
418 | - * @return array |
|
419 | - */ |
|
420 | - public function get_variations($messenger = '', $message_type = '') |
|
421 | - { |
|
422 | - $messenger_variations = ! empty($messenger) && isset($this->_variations[ $messenger ]) ? $this->_variations[ $messenger ] : array(); |
|
423 | - |
|
424 | - // message_type provided? IF so, then we've requested a specific set of variations, so we need to make sure we set it as empty if that's not present. |
|
425 | - $variations = !empty($messenger) && !empty($message_type) && isset($messenger_variations[ $message_type ]) ? $messenger_variations[ $message_type ] : array(); |
|
426 | - |
|
427 | - // now let's account for the possibility we just want all the variations for a messenger (which is indicated by providing the messenger but not the message type). |
|
428 | - $variations = empty($variations) && !empty($messenger) && empty($message_type) ? $messenger_variations : $variations; |
|
429 | - |
|
430 | - // filter per template pack and globally. |
|
431 | - $variations = apply_filters('FHEE__' . get_class($this) . '__get_variations', $variations, $messenger, $message_type); |
|
432 | - $variations = apply_filters('FHEE__EE_Messages_Template_Pack__get_variations', $variations, $messenger, $message_type, $this); |
|
433 | - |
|
434 | - // prepend the _default_variation, but ONLY if we're returning the fully validated array. |
|
435 | - if (!empty($messenger) && !empty($message_type) && ! empty($variations)) { |
|
436 | - $variations = array( 'default' => $this->get_default_variation_labels($messenger) ) + $variations; |
|
437 | - } |
|
438 | - |
|
439 | - return empty($variations) ? array( 'default' => $this->get_default_variation_labels('dft') ) : $variations; |
|
440 | - } |
|
441 | - |
|
442 | - |
|
443 | - |
|
444 | - |
|
445 | - /** |
|
446 | - * This is typically called by EE_messenger objects to get the specific css variation defined for the messenger, message_type and type (i.e. inline, wpeditor, preview etc.) |
|
447 | - * |
|
448 | - * @since 4.5.0 |
|
449 | - * |
|
450 | - * @param string $messenger messenger slug |
|
451 | - * @param string $message_type message_type slug |
|
452 | - * @param string $type variation type (i.e. inline, base, wpeditor, preview etc. //this varies per messenger). |
|
453 | - * @param string $variation this should match one of the defined variations in the _variations property on this class. |
|
454 | - * @param string $file_extension What type of file the variation file is (defaults to css) |
|
455 | - * @param bool $url if true then return the url otherwise path. |
|
456 | - * @param bool $skip_filters This should not be set directly, its used internally to skip filters when the default template pack is called internally as the fallback. |
|
457 | - * |
|
458 | - * @return string The variation path or url (typically css reference) |
|
459 | - */ |
|
460 | - public function get_variation($messenger, $message_type, $type, $variation, $url = true, $file_extension = '.css', $skip_filters = false) |
|
461 | - { |
|
138 | + /** |
|
139 | + * This is an array of extra css variations for message templates indexed by messenger with the values as an array or message types the variations apply to as the key and then values are an array with variation slugs as the key and label as the value. Note the default variation is not included in this array. So the structure is: |
|
140 | + * array( |
|
141 | + * 'email' => array( |
|
142 | + * ) |
|
143 | + * ) |
|
144 | + * |
|
145 | + * Keep in mind that this property is used both for indicating valid variations for a given message type and messenger but the variation files themselves are ONLY unique to the messenger. So if you have a variation for the html messenger referenced by the slug "sunset_red" Then the variation file for the main type will be html_main_sunset_red.css. All the array in this property allows you to do, is indicate that with certain message types the sunset_red variation is available but for other message types its not. But you could NOT have a sunset_red variation file for one messenger/message_type and a different one for another messenger/message_type. If you want different css looks then you can define a different structural layout for the template , messenger, message type combination and in the same sunset_red.css variation file just add css specific to that layout. |
|
146 | + * |
|
147 | + * @since 4.5.0 |
|
148 | + * |
|
149 | + * @var array |
|
150 | + */ |
|
151 | + public $_variations = array(); |
|
152 | + |
|
153 | + |
|
154 | + |
|
155 | + |
|
156 | + /** |
|
157 | + * Template pack constructor |
|
158 | + * |
|
159 | + * @since 4.5.0 |
|
160 | + */ |
|
161 | + public function __construct() |
|
162 | + { |
|
163 | + $this->_set_props(); |
|
164 | + // make sure classname is correct |
|
165 | + $classname = get_class($this); |
|
166 | + // make sure required props have been set |
|
167 | + |
|
168 | + // if label is empty then throw an error because we should have it defined by now. |
|
169 | + if (! isset($this->label)) { |
|
170 | + throw new EE_Error(sprintf(__('The label property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
171 | + } |
|
172 | + |
|
173 | + |
|
174 | + // the reference for this template pack |
|
175 | + if (! isset($this->dbref)) { |
|
176 | + throw new EE_Error(sprintf(__('The dbref property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
177 | + } |
|
178 | + |
|
179 | + // make sure dbref is safe |
|
180 | + $this->dbref = str_replace('-', '_', sanitize_key($this->dbref)); |
|
181 | + |
|
182 | + $should_be = 'EE_Messages_Template_Pack_' . str_replace(' ', '_', ucwords(str_replace('_', ' ', $this->dbref))); |
|
183 | + |
|
184 | + if ($should_be !== $classname) { |
|
185 | + throw new EE_Error(sprintf(__('The name of the template pack instantiated class is "%s". It should be "%s". Make sure that the name of the template pack class matches is prepended with "EE_Messages_Template_Pack_" and appended with a sentence case iteration of the value for your template pack\'s dbref property.', 'event_espresso'), $classname, $should_be)); |
|
186 | + } |
|
187 | + |
|
188 | + // if _base_path is not set then throw an error because a base path string is needed. |
|
189 | + if (empty($this->_base_path)) { |
|
190 | + throw new EE_Error(sprintf(__('The _base_path property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
191 | + } |
|
192 | + |
|
193 | + |
|
194 | + // if _base_url is not set then throw an error because a string is needed for variations. |
|
195 | + if (empty($this->_base_url)) { |
|
196 | + throw new EE_Error(sprintf(__('The _base_url property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
197 | + } |
|
198 | + |
|
199 | + |
|
200 | + // if $supports is not set then throw an error because that effectively means this template_pack does not have any templates! |
|
201 | + if (empty($this->_supports)) { |
|
202 | + throw new EE_Error(sprintf(__('The supports property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
|
203 | + } |
|
204 | + } |
|
205 | + |
|
206 | + |
|
207 | + |
|
208 | + /** |
|
209 | + * This method should be used to define the following properties: |
|
210 | + * - label |
|
211 | + * - dbref |
|
212 | + * - description |
|
213 | + * - _base_path |
|
214 | + * - _base_url |
|
215 | + * - supports |
|
216 | + * - variations |
|
217 | + * |
|
218 | + * @since 4.5.0 |
|
219 | + * @return void. |
|
220 | + * @abstract |
|
221 | + */ |
|
222 | + abstract protected function _set_props(); |
|
223 | + |
|
224 | + |
|
225 | + |
|
226 | + |
|
227 | + /** |
|
228 | + * Wrapper for get_templates() ( @see get_templates() for documentation) |
|
229 | + * |
|
230 | + * @since 4.5.0 |
|
231 | + * |
|
232 | + * @param EE_messenger $messenger |
|
233 | + * @param EE_message_type $message_type |
|
234 | + * |
|
235 | + * @return array |
|
236 | + */ |
|
237 | + public function get_templates(EE_messenger $messenger, EE_message_type $message_type) |
|
238 | + { |
|
239 | + return isset($this->_templates[ $messenger->name ][ $message_type->name ]) ? $this->_templates[ $messenger->name ][ $message_type->name ] : $this->_get_templates($messenger, $message_type); |
|
240 | + } |
|
241 | + |
|
242 | + |
|
243 | + |
|
244 | + |
|
245 | + /** |
|
246 | + * This takes the incoming messenger and message type objects, uses them to get the set fields and contexts, then attempts to retrieve the templates matching those for this given template pack. |
|
247 | + * |
|
248 | + * @since 4.5.0 |
|
249 | + * |
|
250 | + * @param EE_messenger $messenger |
|
251 | + * @param EE_message_type $message_type |
|
252 | + * |
|
253 | + * @return array Returns an multi-level associative array indexed by template context and field in the format: |
|
254 | + * array( 'context' => array( 'field' => 'value', 'another-field', 'value' ) ); |
|
255 | + */ |
|
256 | + protected function _get_templates(EE_messenger $messenger, EE_message_type $message_type) |
|
257 | + { |
|
258 | + $templates = array(); |
|
259 | + |
|
260 | + /** |
|
261 | + * Retrieving the default pack for later usage of default templates for template packs that |
|
262 | + * are NOT the default pack ( or an extension of the default pack ). |
|
263 | + * We ONLY set this variable to be the default pack IF the loaded class is NOT the default |
|
264 | + * pack. This prevents recursion in _get_specific_template(). The intention is that for |
|
265 | + * template packs that are NOT default packs, we use the default template pack to provide |
|
266 | + * the final fallback templates if there aren't any defined for the called template pack. |
|
267 | + * |
|
268 | + * @type EE_Messages_Template_Pack_Default | null $default_pack |
|
269 | + */ |
|
270 | + $default_pack = ! $this instanceof EE_Messages_Template_Pack_Default ? new EE_Messages_Template_Pack_Default() : null; |
|
271 | + |
|
272 | + $fields = $messenger->get_template_fields(); |
|
273 | + $contexts = $message_type->get_contexts(); |
|
274 | + |
|
275 | + |
|
276 | + foreach ($contexts as $context => $details) { |
|
277 | + foreach ($fields as $field => $field_details) { |
|
278 | + if (empty($field_details)) { |
|
279 | + continue; |
|
280 | + } |
|
281 | + /** |
|
282 | + * is this a field array (linked to a main field)? |
|
283 | + */ |
|
284 | + if ($field == 'extra') { |
|
285 | + foreach ($field_details as $main_field => $sub_fields) { |
|
286 | + foreach ($sub_fields as $sub_field => $sub_field_details) { |
|
287 | + // make sure that the template_field_ref matches what the main template field is for this template group. |
|
288 | + $template_field_ref = $sub_field == 'main' ? $main_field : $sub_field; |
|
289 | + $templates[ $context ][ $main_field ][ $sub_field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $template_field_ref, $context); |
|
290 | + } |
|
291 | + } |
|
292 | + } else { |
|
293 | + $templates[ $context ][ $field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $field, $context); |
|
294 | + } |
|
295 | + } |
|
296 | + } |
|
297 | + |
|
298 | + $templates = apply_filters('FHEE__EE_Template_Pack___get_templates__templates', $templates, $messenger, $message_type, $this); |
|
299 | + |
|
300 | + $this->_templates[ $messenger->name ][ $message_type->name ] = $templates; |
|
301 | + return $templates; |
|
302 | + } |
|
303 | + |
|
304 | + |
|
305 | + /** |
|
306 | + * Utility method for retrieving a specific template matching the given parameters |
|
307 | + * |
|
308 | + * @param null | EE_Messages_Template_Pack_Default $default_pack |
|
309 | + * @param EE_messenger $messenger |
|
310 | + * @param EE_message_type $message_type |
|
311 | + * @param string $field The field reference for the specific template being looked up. |
|
312 | + * @param string $context The context reference for the specific template being looked up |
|
313 | + * |
|
314 | + * @return string The template contents. |
|
315 | + */ |
|
316 | + protected function _get_specific_template($default_pack, EE_messenger $messenger, EE_message_type $message_type, $field, $context) |
|
317 | + { |
|
318 | + |
|
319 | + // default templates |
|
320 | + $default_templates = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_templates($messenger, $message_type) : array(); |
|
321 | + |
|
322 | + // first we allow for the $_base_path to be filtered. However, we assign this to a new variable so that we have the original base_path as a fallback. |
|
323 | + $filtered_base_path = apply_filters('FHEE__EE_Template_Pack___get_specific_template__filtered_base_path', $this->_base_path, $messenger, $message_type, $field, $context, $this); |
|
324 | + |
|
325 | + $master_templates = $message_type->get_master_templates(); |
|
326 | + $master_templates_mt = isset($master_templates[ $messenger->name ]) ? $master_templates[ $messenger->name ] : $message_type->name; |
|
327 | + $full_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '_' . $context . '.template.php'; |
|
328 | + $fallback_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '.template.php'; |
|
329 | + $mt_defined_full_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
330 | + $mt_defined_fallback_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
331 | + $base_defined_full_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
332 | + $base_defined_fallback_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
333 | + |
|
334 | + /** |
|
335 | + * Template checks are done hierarchically in the following order: |
|
336 | + * |
|
337 | + * - a match for the full messenger name, message type, context and field in the full path for the given template pack. |
|
338 | + * - a match for the full messenger name, message type, field in the full path for the given template pack. |
|
339 | + * - a match for the full messenger name, message type, field, context in the path grabbed for the related message type defined in the _master_templates property for the message type (i.e. all registration message types share the same template as the main registration message type). |
|
340 | + * - match for the full messenger name, message type, field for the related message type defined in the _master templates property for the message type |
|
341 | + * - a match for a default template matching the messenger, name, context, field (as set by the default template packs). |
|
342 | + * - empty string. |
|
343 | + */ |
|
344 | + |
|
345 | + |
|
346 | + if (is_readable($full_path)) { |
|
347 | + $actual_path = $full_path; |
|
348 | + } elseif (is_readable($fallback_path)) { |
|
349 | + $actual_path = $fallback_path; |
|
350 | + } elseif (is_readable($mt_defined_full_path)) { |
|
351 | + $actual_path = $mt_defined_full_path; |
|
352 | + } elseif (is_readable($mt_defined_fallback_path)) { |
|
353 | + $actual_path = $mt_defined_fallback_path; |
|
354 | + } elseif (is_readable($base_defined_full_path)) { |
|
355 | + $actual_path = $base_defined_full_path; |
|
356 | + } elseif (is_readable($base_defined_fallback_path)) { |
|
357 | + $actual_path = $base_defined_fallback_path; |
|
358 | + } else { |
|
359 | + $actual_path = ''; |
|
360 | + } |
|
361 | + if (empty($actual_path)) { |
|
362 | + $contents = isset($default_templates[ $context ][ $field ]) ? $default_templates[ $context ][ $field ] : ''; |
|
363 | + } else { |
|
364 | + $contents = EEH_Template::display_template($actual_path, array(), true); |
|
365 | + } |
|
366 | + |
|
367 | + return apply_filters('FHEE__EE_Messages_Template_Pack__get_specific_template__contents', $contents, $actual_path, $messenger, $message_type, $field, $context, $this); |
|
368 | + } |
|
369 | + |
|
370 | + |
|
371 | + |
|
372 | + |
|
373 | + |
|
374 | + /** |
|
375 | + * Return filtered _supports property. |
|
376 | + * |
|
377 | + * @since 4.5.0 |
|
378 | + * |
|
379 | + * @return array |
|
380 | + */ |
|
381 | + public function get_supports() |
|
382 | + { |
|
383 | + $supports = apply_filters('FHEE__' . get_class($this) . '__get_supports', $this->_supports); |
|
384 | + return apply_filters('FHEE__EE_Messages_Template_Pack__get_supports', $supports, $this); |
|
385 | + } |
|
386 | + |
|
387 | + |
|
388 | + |
|
389 | + |
|
390 | + /** |
|
391 | + * This simply returns the $_default_variation_labels property value. |
|
392 | + * |
|
393 | + * @since 4.5.0 |
|
394 | + * |
|
395 | + * @param string $messenger if the messenger slug is returned then the default label for the specific messenger is retrieved. If it doesn't exist then the __('Default', 'event_espresso') is returned. If NO value is provided then whatever is set on the _default_variation_labels property is returned. |
|
396 | + * |
|
397 | + * @return array|string |
|
398 | + */ |
|
399 | + public function get_default_variation_labels($messenger = '') |
|
400 | + { |
|
401 | + $label = empty($messenger) ? $this->_default_variation_labels : array(); |
|
402 | + $label = empty($label) && ! empty($this->_default_variation_labels[ $messenger ]) ? $this->_default_variation_labels[ $messenger ] : __('Default', 'event_espresso'); |
|
403 | + |
|
404 | + return apply_filters('FHEE__EE_Messages_Template_Pack__get_default_variation_labels', $label, $this->_default_variation_labels, $messenger); |
|
405 | + } |
|
406 | + |
|
407 | + |
|
408 | + |
|
409 | + |
|
410 | + |
|
411 | + /** |
|
412 | + * This simply returns the _variations property. |
|
413 | + * |
|
414 | + * @since 4.5.0 |
|
415 | + * |
|
416 | + * @param string $messenger if included then css variations matching the messenger are returned. Otherwise, just the default variation is included. If both message type AND messenger are empty then all variations are returned. |
|
417 | + * @param string $message_type if included then css variations matching the message_type are returned (must have $messenger set). Otherwise the array of variations per message type are returned. If message_type is provided but NOT the messenger, then just all variations for all messengers are returned. |
|
418 | + * @return array |
|
419 | + */ |
|
420 | + public function get_variations($messenger = '', $message_type = '') |
|
421 | + { |
|
422 | + $messenger_variations = ! empty($messenger) && isset($this->_variations[ $messenger ]) ? $this->_variations[ $messenger ] : array(); |
|
423 | + |
|
424 | + // message_type provided? IF so, then we've requested a specific set of variations, so we need to make sure we set it as empty if that's not present. |
|
425 | + $variations = !empty($messenger) && !empty($message_type) && isset($messenger_variations[ $message_type ]) ? $messenger_variations[ $message_type ] : array(); |
|
426 | + |
|
427 | + // now let's account for the possibility we just want all the variations for a messenger (which is indicated by providing the messenger but not the message type). |
|
428 | + $variations = empty($variations) && !empty($messenger) && empty($message_type) ? $messenger_variations : $variations; |
|
429 | + |
|
430 | + // filter per template pack and globally. |
|
431 | + $variations = apply_filters('FHEE__' . get_class($this) . '__get_variations', $variations, $messenger, $message_type); |
|
432 | + $variations = apply_filters('FHEE__EE_Messages_Template_Pack__get_variations', $variations, $messenger, $message_type, $this); |
|
433 | + |
|
434 | + // prepend the _default_variation, but ONLY if we're returning the fully validated array. |
|
435 | + if (!empty($messenger) && !empty($message_type) && ! empty($variations)) { |
|
436 | + $variations = array( 'default' => $this->get_default_variation_labels($messenger) ) + $variations; |
|
437 | + } |
|
438 | + |
|
439 | + return empty($variations) ? array( 'default' => $this->get_default_variation_labels('dft') ) : $variations; |
|
440 | + } |
|
441 | + |
|
442 | + |
|
443 | + |
|
444 | + |
|
445 | + /** |
|
446 | + * This is typically called by EE_messenger objects to get the specific css variation defined for the messenger, message_type and type (i.e. inline, wpeditor, preview etc.) |
|
447 | + * |
|
448 | + * @since 4.5.0 |
|
449 | + * |
|
450 | + * @param string $messenger messenger slug |
|
451 | + * @param string $message_type message_type slug |
|
452 | + * @param string $type variation type (i.e. inline, base, wpeditor, preview etc. //this varies per messenger). |
|
453 | + * @param string $variation this should match one of the defined variations in the _variations property on this class. |
|
454 | + * @param string $file_extension What type of file the variation file is (defaults to css) |
|
455 | + * @param bool $url if true then return the url otherwise path. |
|
456 | + * @param bool $skip_filters This should not be set directly, its used internally to skip filters when the default template pack is called internally as the fallback. |
|
457 | + * |
|
458 | + * @return string The variation path or url (typically css reference) |
|
459 | + */ |
|
460 | + public function get_variation($messenger, $message_type, $type, $variation, $url = true, $file_extension = '.css', $skip_filters = false) |
|
461 | + { |
|
462 | 462 | |
463 | - $base = $url ? $this->_base_url : $this->_base_path; |
|
464 | - $base_path = $this->_base_path; |
|
463 | + $base = $url ? $this->_base_url : $this->_base_path; |
|
464 | + $base_path = $this->_base_path; |
|
465 | 465 | |
466 | - if (! $skip_filters) { |
|
467 | - $base = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url', $base, $messenger, $message_type, $type, $variation, $url, $file_extension, $this); |
|
468 | - $base_path = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path', $base_path, $messenger, $message_type, $type, $variation, false, $file_extension, $this); |
|
469 | - } |
|
466 | + if (! $skip_filters) { |
|
467 | + $base = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url', $base, $messenger, $message_type, $type, $variation, $url, $file_extension, $this); |
|
468 | + $base_path = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path', $base_path, $messenger, $message_type, $type, $variation, false, $file_extension, $this); |
|
469 | + } |
|
470 | 470 | |
471 | - $default_pack = get_class($this) != 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : $this; |
|
472 | - |
|
473 | - // possible variation paths considering whether message type is present or not in the file name. |
|
474 | - $path_string = 'variations/' . $messenger . '_' . $message_type . '_' . $type . '_' . $variation . $file_extension; |
|
475 | - $default_path_string = 'variations/' . $messenger . '_' . $type . '_' . $variation . $file_extension; |
|
476 | - |
|
477 | - // first see if fully validated file exists. |
|
478 | - if (is_readable($base_path . $path_string)) { |
|
479 | - $variation_path = $base . $path_string; |
|
480 | - // otherwise see if default exists. |
|
481 | - } elseif (is_readable($base_path . $default_path_string)) { |
|
482 | - $variation_path = $base . $default_path_string; |
|
483 | - } else { |
|
484 | - $variation_path = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_default_variation($messenger, $message_type, $type, $url, $file_extension) : ''; |
|
485 | - } |
|
471 | + $default_pack = get_class($this) != 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : $this; |
|
472 | + |
|
473 | + // possible variation paths considering whether message type is present or not in the file name. |
|
474 | + $path_string = 'variations/' . $messenger . '_' . $message_type . '_' . $type . '_' . $variation . $file_extension; |
|
475 | + $default_path_string = 'variations/' . $messenger . '_' . $type . '_' . $variation . $file_extension; |
|
476 | + |
|
477 | + // first see if fully validated file exists. |
|
478 | + if (is_readable($base_path . $path_string)) { |
|
479 | + $variation_path = $base . $path_string; |
|
480 | + // otherwise see if default exists. |
|
481 | + } elseif (is_readable($base_path . $default_path_string)) { |
|
482 | + $variation_path = $base . $default_path_string; |
|
483 | + } else { |
|
484 | + $variation_path = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_default_variation($messenger, $message_type, $type, $url, $file_extension) : ''; |
|
485 | + } |
|
486 | 486 | |
487 | - if ($skip_filters) { |
|
488 | - return $variation_path; |
|
489 | - } |
|
490 | - |
|
491 | - // filter result |
|
492 | - $variation_path = apply_filters('FHEE__' . get_class($this) . '__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url); |
|
493 | - return apply_filters('FHEE__EE_Messages_Template_Pack__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url, $this); |
|
494 | - } |
|
495 | - |
|
496 | - |
|
497 | - |
|
498 | - |
|
499 | - |
|
500 | - /** |
|
501 | - * This method is used to return the wrapper template for the given template pack. If the given template pack does not include any wrapper templates then the default is used. |
|
502 | - * |
|
503 | - * @param string $messenger What messenger the wrapper is for. |
|
504 | - * @param string $type What type of wrapper is being returned ( for messengers that may have more than one wrapper ) |
|
505 | - * |
|
506 | - * @return string returns the path for the requested wrapper template. |
|
507 | - */ |
|
508 | - public function get_wrapper($messenger, $type = 'main') |
|
509 | - { |
|
510 | - $default_pack = get_class($this) !== 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : null; |
|
511 | - |
|
512 | - $path_string = $this->_base_path . $messenger . '_' . $type . '_wrapper.template.php'; |
|
513 | - |
|
514 | - if (is_readable($path_string)) { |
|
515 | - $template = $path_string; |
|
516 | - } else { |
|
517 | - $template = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_wrapper($messenger, $type) : ''; |
|
518 | - } |
|
519 | - |
|
520 | - // filter |
|
521 | - $template = apply_filters('FHEE__' . get_class($this) . '__get_wrapper', $template, $messenger, $type); |
|
522 | - return apply_filters('FHEE__EE_Messages_Template_Pack__get_wrapper', $template, $messenger, $type, $this); |
|
523 | - } |
|
487 | + if ($skip_filters) { |
|
488 | + return $variation_path; |
|
489 | + } |
|
490 | + |
|
491 | + // filter result |
|
492 | + $variation_path = apply_filters('FHEE__' . get_class($this) . '__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url); |
|
493 | + return apply_filters('FHEE__EE_Messages_Template_Pack__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url, $this); |
|
494 | + } |
|
495 | + |
|
496 | + |
|
497 | + |
|
498 | + |
|
499 | + |
|
500 | + /** |
|
501 | + * This method is used to return the wrapper template for the given template pack. If the given template pack does not include any wrapper templates then the default is used. |
|
502 | + * |
|
503 | + * @param string $messenger What messenger the wrapper is for. |
|
504 | + * @param string $type What type of wrapper is being returned ( for messengers that may have more than one wrapper ) |
|
505 | + * |
|
506 | + * @return string returns the path for the requested wrapper template. |
|
507 | + */ |
|
508 | + public function get_wrapper($messenger, $type = 'main') |
|
509 | + { |
|
510 | + $default_pack = get_class($this) !== 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : null; |
|
511 | + |
|
512 | + $path_string = $this->_base_path . $messenger . '_' . $type . '_wrapper.template.php'; |
|
513 | + |
|
514 | + if (is_readable($path_string)) { |
|
515 | + $template = $path_string; |
|
516 | + } else { |
|
517 | + $template = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_wrapper($messenger, $type) : ''; |
|
518 | + } |
|
519 | + |
|
520 | + // filter |
|
521 | + $template = apply_filters('FHEE__' . get_class($this) . '__get_wrapper', $template, $messenger, $type); |
|
522 | + return apply_filters('FHEE__EE_Messages_Template_Pack__get_wrapper', $template, $messenger, $type, $this); |
|
523 | + } |
|
524 | 524 | } |
@@ -166,20 +166,20 @@ discard block |
||
166 | 166 | // make sure required props have been set |
167 | 167 | |
168 | 168 | // if label is empty then throw an error because we should have it defined by now. |
169 | - if (! isset($this->label)) { |
|
169 | + if ( ! isset($this->label)) { |
|
170 | 170 | throw new EE_Error(sprintf(__('The label property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
171 | 171 | } |
172 | 172 | |
173 | 173 | |
174 | 174 | // the reference for this template pack |
175 | - if (! isset($this->dbref)) { |
|
175 | + if ( ! isset($this->dbref)) { |
|
176 | 176 | throw new EE_Error(sprintf(__('The dbref property is not set for %s. Please ensure that is set for the class.', 'event_espresso'), $classname)); |
177 | 177 | } |
178 | 178 | |
179 | 179 | // make sure dbref is safe |
180 | 180 | $this->dbref = str_replace('-', '_', sanitize_key($this->dbref)); |
181 | 181 | |
182 | - $should_be = 'EE_Messages_Template_Pack_' . str_replace(' ', '_', ucwords(str_replace('_', ' ', $this->dbref))); |
|
182 | + $should_be = 'EE_Messages_Template_Pack_'.str_replace(' ', '_', ucwords(str_replace('_', ' ', $this->dbref))); |
|
183 | 183 | |
184 | 184 | if ($should_be !== $classname) { |
185 | 185 | throw new EE_Error(sprintf(__('The name of the template pack instantiated class is "%s". It should be "%s". Make sure that the name of the template pack class matches is prepended with "EE_Messages_Template_Pack_" and appended with a sentence case iteration of the value for your template pack\'s dbref property.', 'event_espresso'), $classname, $should_be)); |
@@ -236,7 +236,7 @@ discard block |
||
236 | 236 | */ |
237 | 237 | public function get_templates(EE_messenger $messenger, EE_message_type $message_type) |
238 | 238 | { |
239 | - return isset($this->_templates[ $messenger->name ][ $message_type->name ]) ? $this->_templates[ $messenger->name ][ $message_type->name ] : $this->_get_templates($messenger, $message_type); |
|
239 | + return isset($this->_templates[$messenger->name][$message_type->name]) ? $this->_templates[$messenger->name][$message_type->name] : $this->_get_templates($messenger, $message_type); |
|
240 | 240 | } |
241 | 241 | |
242 | 242 | |
@@ -286,18 +286,18 @@ discard block |
||
286 | 286 | foreach ($sub_fields as $sub_field => $sub_field_details) { |
287 | 287 | // make sure that the template_field_ref matches what the main template field is for this template group. |
288 | 288 | $template_field_ref = $sub_field == 'main' ? $main_field : $sub_field; |
289 | - $templates[ $context ][ $main_field ][ $sub_field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $template_field_ref, $context); |
|
289 | + $templates[$context][$main_field][$sub_field] = $this->_get_specific_template($default_pack, $messenger, $message_type, $template_field_ref, $context); |
|
290 | 290 | } |
291 | 291 | } |
292 | 292 | } else { |
293 | - $templates[ $context ][ $field ] = $this->_get_specific_template($default_pack, $messenger, $message_type, $field, $context); |
|
293 | + $templates[$context][$field] = $this->_get_specific_template($default_pack, $messenger, $message_type, $field, $context); |
|
294 | 294 | } |
295 | 295 | } |
296 | 296 | } |
297 | 297 | |
298 | 298 | $templates = apply_filters('FHEE__EE_Template_Pack___get_templates__templates', $templates, $messenger, $message_type, $this); |
299 | 299 | |
300 | - $this->_templates[ $messenger->name ][ $message_type->name ] = $templates; |
|
300 | + $this->_templates[$messenger->name][$message_type->name] = $templates; |
|
301 | 301 | return $templates; |
302 | 302 | } |
303 | 303 | |
@@ -323,13 +323,13 @@ discard block |
||
323 | 323 | $filtered_base_path = apply_filters('FHEE__EE_Template_Pack___get_specific_template__filtered_base_path', $this->_base_path, $messenger, $message_type, $field, $context, $this); |
324 | 324 | |
325 | 325 | $master_templates = $message_type->get_master_templates(); |
326 | - $master_templates_mt = isset($master_templates[ $messenger->name ]) ? $master_templates[ $messenger->name ] : $message_type->name; |
|
327 | - $full_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '_' . $context . '.template.php'; |
|
328 | - $fallback_path = $filtered_base_path . $messenger->name . '_' . $message_type->name . '_' . $field . '.template.php'; |
|
329 | - $mt_defined_full_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
330 | - $mt_defined_fallback_path = $filtered_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
331 | - $base_defined_full_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '_' . $context . '.template.php'; |
|
332 | - $base_defined_fallback_path = $this->_base_path . $messenger->name . '_' . $master_templates_mt . '_' . $field . '.template.php'; |
|
326 | + $master_templates_mt = isset($master_templates[$messenger->name]) ? $master_templates[$messenger->name] : $message_type->name; |
|
327 | + $full_path = $filtered_base_path.$messenger->name.'_'.$message_type->name.'_'.$field.'_'.$context.'.template.php'; |
|
328 | + $fallback_path = $filtered_base_path.$messenger->name.'_'.$message_type->name.'_'.$field.'.template.php'; |
|
329 | + $mt_defined_full_path = $filtered_base_path.$messenger->name.'_'.$master_templates_mt.'_'.$field.'_'.$context.'.template.php'; |
|
330 | + $mt_defined_fallback_path = $filtered_base_path.$messenger->name.'_'.$master_templates_mt.'_'.$field.'.template.php'; |
|
331 | + $base_defined_full_path = $this->_base_path.$messenger->name.'_'.$master_templates_mt.'_'.$field.'_'.$context.'.template.php'; |
|
332 | + $base_defined_fallback_path = $this->_base_path.$messenger->name.'_'.$master_templates_mt.'_'.$field.'.template.php'; |
|
333 | 333 | |
334 | 334 | /** |
335 | 335 | * Template checks are done hierarchically in the following order: |
@@ -359,7 +359,7 @@ discard block |
||
359 | 359 | $actual_path = ''; |
360 | 360 | } |
361 | 361 | if (empty($actual_path)) { |
362 | - $contents = isset($default_templates[ $context ][ $field ]) ? $default_templates[ $context ][ $field ] : ''; |
|
362 | + $contents = isset($default_templates[$context][$field]) ? $default_templates[$context][$field] : ''; |
|
363 | 363 | } else { |
364 | 364 | $contents = EEH_Template::display_template($actual_path, array(), true); |
365 | 365 | } |
@@ -380,7 +380,7 @@ discard block |
||
380 | 380 | */ |
381 | 381 | public function get_supports() |
382 | 382 | { |
383 | - $supports = apply_filters('FHEE__' . get_class($this) . '__get_supports', $this->_supports); |
|
383 | + $supports = apply_filters('FHEE__'.get_class($this).'__get_supports', $this->_supports); |
|
384 | 384 | return apply_filters('FHEE__EE_Messages_Template_Pack__get_supports', $supports, $this); |
385 | 385 | } |
386 | 386 | |
@@ -399,7 +399,7 @@ discard block |
||
399 | 399 | public function get_default_variation_labels($messenger = '') |
400 | 400 | { |
401 | 401 | $label = empty($messenger) ? $this->_default_variation_labels : array(); |
402 | - $label = empty($label) && ! empty($this->_default_variation_labels[ $messenger ]) ? $this->_default_variation_labels[ $messenger ] : __('Default', 'event_espresso'); |
|
402 | + $label = empty($label) && ! empty($this->_default_variation_labels[$messenger]) ? $this->_default_variation_labels[$messenger] : __('Default', 'event_espresso'); |
|
403 | 403 | |
404 | 404 | return apply_filters('FHEE__EE_Messages_Template_Pack__get_default_variation_labels', $label, $this->_default_variation_labels, $messenger); |
405 | 405 | } |
@@ -419,24 +419,24 @@ discard block |
||
419 | 419 | */ |
420 | 420 | public function get_variations($messenger = '', $message_type = '') |
421 | 421 | { |
422 | - $messenger_variations = ! empty($messenger) && isset($this->_variations[ $messenger ]) ? $this->_variations[ $messenger ] : array(); |
|
422 | + $messenger_variations = ! empty($messenger) && isset($this->_variations[$messenger]) ? $this->_variations[$messenger] : array(); |
|
423 | 423 | |
424 | 424 | // message_type provided? IF so, then we've requested a specific set of variations, so we need to make sure we set it as empty if that's not present. |
425 | - $variations = !empty($messenger) && !empty($message_type) && isset($messenger_variations[ $message_type ]) ? $messenger_variations[ $message_type ] : array(); |
|
425 | + $variations = ! empty($messenger) && ! empty($message_type) && isset($messenger_variations[$message_type]) ? $messenger_variations[$message_type] : array(); |
|
426 | 426 | |
427 | 427 | // now let's account for the possibility we just want all the variations for a messenger (which is indicated by providing the messenger but not the message type). |
428 | - $variations = empty($variations) && !empty($messenger) && empty($message_type) ? $messenger_variations : $variations; |
|
428 | + $variations = empty($variations) && ! empty($messenger) && empty($message_type) ? $messenger_variations : $variations; |
|
429 | 429 | |
430 | 430 | // filter per template pack and globally. |
431 | - $variations = apply_filters('FHEE__' . get_class($this) . '__get_variations', $variations, $messenger, $message_type); |
|
431 | + $variations = apply_filters('FHEE__'.get_class($this).'__get_variations', $variations, $messenger, $message_type); |
|
432 | 432 | $variations = apply_filters('FHEE__EE_Messages_Template_Pack__get_variations', $variations, $messenger, $message_type, $this); |
433 | 433 | |
434 | 434 | // prepend the _default_variation, but ONLY if we're returning the fully validated array. |
435 | - if (!empty($messenger) && !empty($message_type) && ! empty($variations)) { |
|
436 | - $variations = array( 'default' => $this->get_default_variation_labels($messenger) ) + $variations; |
|
435 | + if ( ! empty($messenger) && ! empty($message_type) && ! empty($variations)) { |
|
436 | + $variations = array('default' => $this->get_default_variation_labels($messenger)) + $variations; |
|
437 | 437 | } |
438 | 438 | |
439 | - return empty($variations) ? array( 'default' => $this->get_default_variation_labels('dft') ) : $variations; |
|
439 | + return empty($variations) ? array('default' => $this->get_default_variation_labels('dft')) : $variations; |
|
440 | 440 | } |
441 | 441 | |
442 | 442 | |
@@ -463,23 +463,23 @@ discard block |
||
463 | 463 | $base = $url ? $this->_base_url : $this->_base_path; |
464 | 464 | $base_path = $this->_base_path; |
465 | 465 | |
466 | - if (! $skip_filters) { |
|
467 | - $base = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url', $base, $messenger, $message_type, $type, $variation, $url, $file_extension, $this); |
|
466 | + if ( ! $skip_filters) { |
|
467 | + $base = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path_or_url', $base, $messenger, $message_type, $type, $variation, $url, $file_extension, $this); |
|
468 | 468 | $base_path = apply_filters('FHEE__EE_Messages_Template_Pack__get_variation__base_path', $base_path, $messenger, $message_type, $type, $variation, false, $file_extension, $this); |
469 | 469 | } |
470 | 470 | |
471 | 471 | $default_pack = get_class($this) != 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : $this; |
472 | 472 | |
473 | 473 | // possible variation paths considering whether message type is present or not in the file name. |
474 | - $path_string = 'variations/' . $messenger . '_' . $message_type . '_' . $type . '_' . $variation . $file_extension; |
|
475 | - $default_path_string = 'variations/' . $messenger . '_' . $type . '_' . $variation . $file_extension; |
|
474 | + $path_string = 'variations/'.$messenger.'_'.$message_type.'_'.$type.'_'.$variation.$file_extension; |
|
475 | + $default_path_string = 'variations/'.$messenger.'_'.$type.'_'.$variation.$file_extension; |
|
476 | 476 | |
477 | 477 | // first see if fully validated file exists. |
478 | - if (is_readable($base_path . $path_string)) { |
|
479 | - $variation_path = $base . $path_string; |
|
478 | + if (is_readable($base_path.$path_string)) { |
|
479 | + $variation_path = $base.$path_string; |
|
480 | 480 | // otherwise see if default exists. |
481 | - } elseif (is_readable($base_path . $default_path_string)) { |
|
482 | - $variation_path = $base . $default_path_string; |
|
481 | + } elseif (is_readable($base_path.$default_path_string)) { |
|
482 | + $variation_path = $base.$default_path_string; |
|
483 | 483 | } else { |
484 | 484 | $variation_path = $default_pack instanceof EE_Messages_Template_Pack_Default ? $default_pack->get_default_variation($messenger, $message_type, $type, $url, $file_extension) : ''; |
485 | 485 | } |
@@ -489,7 +489,7 @@ discard block |
||
489 | 489 | } |
490 | 490 | |
491 | 491 | // filter result |
492 | - $variation_path = apply_filters('FHEE__' . get_class($this) . '__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url); |
|
492 | + $variation_path = apply_filters('FHEE__'.get_class($this).'__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url); |
|
493 | 493 | return apply_filters('FHEE__EE_Messages_Template_Pack__get_variation', $variation_path, $messenger, $message_type, $type, $variation, $file_extension, $url, $this); |
494 | 494 | } |
495 | 495 | |
@@ -509,7 +509,7 @@ discard block |
||
509 | 509 | { |
510 | 510 | $default_pack = get_class($this) !== 'EE_Messages_Template_Pack_Default' ? new EE_Messages_Template_Pack_Default() : null; |
511 | 511 | |
512 | - $path_string = $this->_base_path . $messenger . '_' . $type . '_wrapper.template.php'; |
|
512 | + $path_string = $this->_base_path.$messenger.'_'.$type.'_wrapper.template.php'; |
|
513 | 513 | |
514 | 514 | if (is_readable($path_string)) { |
515 | 515 | $template = $path_string; |
@@ -518,7 +518,7 @@ discard block |
||
518 | 518 | } |
519 | 519 | |
520 | 520 | // filter |
521 | - $template = apply_filters('FHEE__' . get_class($this) . '__get_wrapper', $template, $messenger, $type); |
|
521 | + $template = apply_filters('FHEE__'.get_class($this).'__get_wrapper', $template, $messenger, $type); |
|
522 | 522 | return apply_filters('FHEE__EE_Messages_Template_Pack__get_wrapper', $template, $messenger, $type, $this); |
523 | 523 | } |
524 | 524 | } |