1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* FooGallery global functions |
4
|
|
|
* |
5
|
|
|
* @package FooGallery |
6
|
|
|
* @author Brad Vincent <[email protected]> |
7
|
|
|
* @license GPL-2.0+ |
8
|
|
|
* @link https://github.com/fooplugins/foogallery |
9
|
|
|
* @copyright 2014 FooPlugins LLC |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* Returns the name of the plugin. (Allows the name to be overridden from extensions or functions.php) |
14
|
|
|
* @return string |
15
|
|
|
*/ |
16
|
|
|
function foogallery_plugin_name() { |
17
|
|
|
return apply_filters( 'foogallery_plugin_name', 'FooGallery' ); |
18
|
|
|
} |
19
|
|
|
|
20
|
|
|
/** |
21
|
|
|
* Return all the gallery templates used within FooGallery |
22
|
|
|
* |
23
|
|
|
* @return array |
24
|
|
|
*/ |
25
|
|
|
function foogallery_gallery_templates() { |
26
|
|
|
return apply_filters( 'foogallery_gallery_templates', array() ); |
27
|
|
|
} |
28
|
|
|
|
29
|
|
|
/** |
30
|
|
|
* Return the FooGallery extension API class |
31
|
|
|
* |
32
|
|
|
* @return FooGallery_Extensions_API |
33
|
|
|
*/ |
34
|
|
|
function foogallery_extensions_api() { |
35
|
|
|
return new FooGallery_Extensions_API(); |
36
|
|
|
} |
37
|
|
|
|
38
|
|
|
/** |
39
|
|
|
* Returns the default gallery template |
40
|
|
|
* |
41
|
|
|
* @return string |
42
|
|
|
*/ |
43
|
|
|
function foogallery_default_gallery_template() { |
44
|
|
|
return foogallery_get_setting( 'gallery_template' ); |
45
|
|
|
} |
46
|
|
|
|
47
|
|
|
/** |
48
|
|
|
* Returns if gallery permalinks are enabled |
49
|
|
|
* |
50
|
|
|
* @return bool |
51
|
|
|
*/ |
52
|
|
|
function foogallery_permalinks_enabled() { |
53
|
|
|
return foogallery_get_setting( 'gallery_permalinks_enabled' ); |
54
|
|
|
} |
55
|
|
|
|
56
|
|
|
/** |
57
|
|
|
* Returns the gallery permalink |
58
|
|
|
* |
59
|
|
|
* @return string |
60
|
|
|
*/ |
61
|
|
|
function foogallery_permalink() { |
62
|
|
|
return foogallery_get_setting( 'gallery_permalink' ); |
63
|
|
|
} |
64
|
|
|
|
65
|
|
|
/** |
66
|
|
|
* Return the FooGallery saved setting, or a default value |
67
|
|
|
* |
68
|
|
|
* @param string $key The key for the setting |
69
|
|
|
* |
70
|
|
|
* @param bool $default The default if no value is saved or found |
71
|
|
|
* |
72
|
|
|
* @return mixed |
73
|
|
|
*/ |
74
|
|
|
function foogallery_get_setting( $key, $default = false ) { |
75
|
|
|
$foogallery = FooGallery_Plugin::get_instance(); |
76
|
|
|
|
77
|
|
|
return $foogallery->options()->get( $key, foogallery_get_default( $key, $default ) ); |
78
|
|
|
} |
79
|
|
|
|
80
|
|
|
/** |
81
|
|
|
* Builds up a FooGallery gallery shortcode |
82
|
|
|
* |
83
|
|
|
* @param $gallery_id |
84
|
|
|
* |
85
|
|
|
* @return string |
86
|
|
|
*/ |
87
|
|
|
function foogallery_build_gallery_shortcode( $gallery_id ) { |
88
|
|
|
return '[' . foogallery_gallery_shortcode_tag() . ' id="' . $gallery_id . '"]'; |
89
|
|
|
} |
90
|
|
|
|
91
|
|
|
/** |
92
|
|
|
* Returns the gallery shortcode tag |
93
|
|
|
* |
94
|
|
|
* @return string |
95
|
|
|
*/ |
96
|
|
|
function foogallery_gallery_shortcode_tag() { |
97
|
|
|
return apply_filters( 'foogallery_gallery_shortcode_tag', FOOGALLERY_CPT_GALLERY ); |
98
|
|
|
} |
99
|
|
|
|
100
|
|
|
/** |
101
|
|
|
* Helper method for getting default settings |
102
|
|
|
* |
103
|
|
|
* @param string $key The default config key to retrieve. |
104
|
|
|
* |
105
|
|
|
* @param bool $default The default if no default is set or found |
106
|
|
|
* |
107
|
|
|
* @return string Key value on success, false on failure. |
108
|
|
|
*/ |
109
|
|
|
function foogallery_get_default( $key, $default = false ) { |
110
|
|
|
|
111
|
|
|
$defaults = array( |
112
|
|
|
'gallery_template' => 'default', |
113
|
|
|
'gallery_permalinks_enabled' => false, |
114
|
|
|
'gallery_permalink' => 'gallery', |
115
|
|
|
'lightbox' => 'none', |
116
|
|
|
'thumb_jpeg_quality' => '80', |
117
|
|
|
'thumb_resize_animations' => true, |
118
|
|
|
'gallery_sorting' => '', |
119
|
|
|
'datasource' => 'media_library' |
120
|
|
|
); |
121
|
|
|
|
122
|
|
|
// A handy filter to override the defaults |
123
|
|
|
$defaults = apply_filters( 'foogallery_defaults', $defaults ); |
124
|
|
|
|
125
|
|
|
// Return the key specified. |
126
|
|
|
return isset($defaults[ $key ]) ? $defaults[ $key ] : $default; |
127
|
|
|
} |
128
|
|
|
|
129
|
|
|
/** |
130
|
|
|
* Returns the FooGallery Add Gallery Url within the admin |
131
|
|
|
* |
132
|
|
|
* @return string The Url to the FooGallery Add Gallery page in admin |
133
|
|
|
*/ |
134
|
|
|
function foogallery_admin_add_gallery_url() { |
135
|
|
|
return admin_url( 'post-new.php?post_type=' . FOOGALLERY_CPT_GALLERY ); |
136
|
|
|
} |
137
|
|
|
|
138
|
|
|
/** |
139
|
|
|
* Returns the FooGallery help page Url within the admin |
140
|
|
|
* |
141
|
|
|
* @return string The Url to the FooGallery help page in admin |
142
|
|
|
*/ |
143
|
|
|
function foogallery_admin_help_url() { |
144
|
|
|
return admin_url( add_query_arg( array( 'page' => 'foogallery-help' ), foogallery_admin_menu_parent_slug() ) ); |
145
|
|
|
} |
146
|
|
|
|
147
|
|
|
/** |
148
|
|
|
* Returns the FooGallery settings page Url within the admin |
149
|
|
|
* |
150
|
|
|
* @return string The Url to the FooGallery settings page in admin |
151
|
|
|
*/ |
152
|
|
|
function foogallery_admin_settings_url() { |
153
|
|
|
return admin_url( add_query_arg( array( 'page' => 'foogallery-settings' ), foogallery_admin_menu_parent_slug() ) ); |
154
|
|
|
} |
155
|
|
|
|
156
|
|
|
/** |
157
|
|
|
* Returns the FooGallery extensions page Url within the admin |
158
|
|
|
* |
159
|
|
|
* @return string The Url to the FooGallery extensions page in admin |
160
|
|
|
*/ |
161
|
|
|
function foogallery_admin_extensions_url() { |
162
|
|
|
return admin_url( add_query_arg( array( 'page' => 'foogallery-extensions' ), foogallery_admin_menu_parent_slug() ) ); |
163
|
|
|
} |
164
|
|
|
|
165
|
|
|
/** |
166
|
|
|
* Returns the FooGallery system info page Url within the admin |
167
|
|
|
* |
168
|
|
|
* @return string The Url to the FooGallery system info page in admin |
169
|
|
|
*/ |
170
|
|
|
function foogallery_admin_systeminfo_url() { |
171
|
|
|
return admin_url( add_query_arg( array( 'page' => 'foogallery-systeminfo' ), foogallery_admin_menu_parent_slug() ) ); |
172
|
|
|
} |
173
|
|
|
|
174
|
|
|
/** |
175
|
|
|
* Get a foogallery template setting for the current foogallery that is being output to the frontend |
176
|
|
|
* @param string $key |
177
|
|
|
* @param string $default |
178
|
|
|
* |
179
|
|
|
* @return bool |
180
|
|
|
*/ |
181
|
|
|
function foogallery_gallery_template_setting( $key, $default = '' ) { |
182
|
|
|
global $current_foogallery; |
183
|
|
|
global $current_foogallery_arguments; |
184
|
|
|
global $current_foogallery_template; |
185
|
|
|
|
186
|
|
|
$settings_key = "{$current_foogallery_template}_{$key}"; |
187
|
|
|
|
188
|
|
|
if ( $current_foogallery_arguments && array_key_exists( $key, $current_foogallery_arguments ) ) { |
189
|
|
|
//try to get the value from the arguments |
190
|
|
|
$value = $current_foogallery_arguments[ $key ]; |
191
|
|
|
|
192
|
|
|
} else if ( !empty( $current_foogallery ) && $current_foogallery->settings && array_key_exists( $settings_key, $current_foogallery->settings ) ) { |
193
|
|
|
//then get the value out of the saved gallery settings |
194
|
|
|
$value = $current_foogallery->settings[ $settings_key ]; |
195
|
|
|
} else { |
196
|
|
|
//otherwise set it to the default |
197
|
|
|
$value = $default; |
198
|
|
|
} |
199
|
|
|
|
200
|
|
|
$value = apply_filters( 'foogallery_gallery_template_setting-' . $key, $value ); |
201
|
|
|
|
202
|
|
|
return $value; |
203
|
|
|
} |
204
|
|
|
|
205
|
|
|
/** |
206
|
|
|
* Get the admin menu parent slug |
207
|
|
|
* @return string |
208
|
|
|
*/ |
209
|
|
|
function foogallery_admin_menu_parent_slug() { |
210
|
|
|
return apply_filters( 'foogallery_admin_menu_parent_slug', FOOGALLERY_ADMIN_MENU_PARENT_SLUG ); |
211
|
|
|
} |
212
|
|
|
|
213
|
|
|
/** |
214
|
|
|
* Helper function to build up the admin menu Url |
215
|
|
|
* @param array $extra_args |
216
|
|
|
* |
217
|
|
|
* @return string|void |
218
|
|
|
*/ |
219
|
|
|
function foogallery_build_admin_menu_url( $extra_args = array() ) { |
220
|
|
|
$url = admin_url( foogallery_admin_menu_parent_slug() ); |
221
|
|
|
if ( ! empty( $extra_args ) ) { |
222
|
|
|
$url = add_query_arg( $extra_args, $url ); |
223
|
|
|
} |
224
|
|
|
return $url; |
225
|
|
|
} |
226
|
|
|
|
227
|
|
|
/** |
228
|
|
|
* Helper function for adding a foogallery sub menu |
229
|
|
|
* |
230
|
|
|
* @param $menu_title |
231
|
|
|
* @param string $capability |
232
|
|
|
* @param string $menu_slug |
233
|
|
|
* @param $function |
234
|
|
|
*/ |
235
|
|
|
function foogallery_add_submenu_page( $menu_title, $capability, $menu_slug, $function ) { |
236
|
|
|
add_submenu_page( |
237
|
|
|
foogallery_admin_menu_parent_slug(), |
238
|
|
|
$menu_title, |
239
|
|
|
$menu_title, |
240
|
|
|
$capability, |
241
|
|
|
$menu_slug, |
242
|
|
|
$function |
243
|
|
|
); |
244
|
|
|
} |
245
|
|
|
|
246
|
|
|
/** |
247
|
|
|
* Returns all FooGallery galleries |
248
|
|
|
* |
249
|
|
|
* @return FooGallery[] array of FooGallery galleries |
250
|
|
|
*/ |
251
|
|
|
function foogallery_get_all_galleries( $excludes = false ) { |
252
|
|
|
$args = array( |
253
|
|
|
'post_type' => FOOGALLERY_CPT_GALLERY, |
254
|
|
|
'post_status' => array( 'publish', 'draft' ), |
255
|
|
|
'cache_results' => false, |
256
|
|
|
'nopaging' => true, |
257
|
|
|
); |
258
|
|
|
|
259
|
|
|
if ( is_array( $excludes ) ) { |
260
|
|
|
$args['post__not_in'] = $excludes; |
261
|
|
|
} |
262
|
|
|
|
263
|
|
|
$gallery_posts = get_posts( $args ); |
264
|
|
|
|
265
|
|
|
if ( empty( $gallery_posts ) ) { |
266
|
|
|
return array(); |
267
|
|
|
} |
268
|
|
|
|
269
|
|
|
$galleries = array(); |
270
|
|
|
|
271
|
|
|
foreach ( $gallery_posts as $post ) { |
272
|
|
|
$galleries[] = FooGallery::get( $post ); |
273
|
|
|
} |
274
|
|
|
|
275
|
|
|
return $galleries; |
276
|
|
|
} |
277
|
|
|
|
278
|
|
|
/** |
279
|
|
|
* Parse some content and return an array of all gallery shortcodes that are used inside it |
280
|
|
|
* |
281
|
|
|
* @param $content The content to search for gallery shortcodes |
282
|
|
|
* |
283
|
|
|
* @return array An array of all the foogallery shortcodes found in the content |
284
|
|
|
*/ |
285
|
|
|
function foogallery_extract_gallery_shortcodes( $content ) { |
286
|
|
|
$shortcodes = array(); |
287
|
|
|
|
288
|
|
|
$regex_pattern = foogallery_gallery_shortcode_regex(); |
289
|
|
|
if ( preg_match_all( '/' . $regex_pattern . '/s', $content, $matches ) ) { |
290
|
|
|
for ( $i = 0; $i < count( $matches[0] ); ++$i ) { |
291
|
|
|
$shortcode = $matches[0][$i]; |
292
|
|
|
$args = $matches[3][$i]; |
293
|
|
|
$attribure_string = str_replace( ' ', '&', trim( $args ) ); |
294
|
|
|
$attribure_string = str_replace( '"', '', $attribure_string ); |
295
|
|
|
$attributes = wp_parse_args( $attribure_string ); |
296
|
|
|
if ( array_key_exists( 'id', $attributes ) ) { |
297
|
|
|
$id = intval( $attributes['id'] ); |
298
|
|
|
$shortcodes[ $id ] = $shortcode; |
299
|
|
|
} |
300
|
|
|
} |
301
|
|
|
} |
302
|
|
|
|
303
|
|
|
return $shortcodes; |
304
|
|
|
} |
305
|
|
|
|
306
|
|
|
/** |
307
|
|
|
* Build up the FooGallery shortcode regex |
308
|
|
|
* |
309
|
|
|
* @return string |
310
|
|
|
*/ |
311
|
|
|
function foogallery_gallery_shortcode_regex() { |
312
|
|
|
$tag = foogallery_gallery_shortcode_tag(); |
313
|
|
|
|
314
|
|
|
return |
315
|
|
|
'\\[' // Opening bracket |
316
|
|
|
. '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]] |
317
|
|
|
. "($tag)" // 2: Shortcode name |
318
|
|
|
. '(?![\\w-])' // Not followed by word character or hyphen |
319
|
|
|
. '(' // 3: Unroll the loop: Inside the opening shortcode tag |
320
|
|
|
. '[^\\]\\/]*' // Not a closing bracket or forward slash |
321
|
|
|
. '(?:' |
322
|
|
|
. '\\/(?!\\])' // A forward slash not followed by a closing bracket |
323
|
|
|
. '[^\\]\\/]*' // Not a closing bracket or forward slash |
324
|
|
|
. ')*?' |
325
|
|
|
. ')' |
326
|
|
|
. '(?:' |
327
|
|
|
. '(\\/)' // 4: Self closing tag ... |
|
|
|
|
328
|
|
|
. '\\]' // ... and closing bracket |
329
|
|
|
. '|' |
330
|
|
|
. '\\]' // Closing bracket |
331
|
|
|
. '(?:' |
332
|
|
|
. '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags |
333
|
|
|
. '[^\\[]*+' // Not an opening bracket |
334
|
|
|
. '(?:' |
335
|
|
|
. '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag |
336
|
|
|
. '[^\\[]*+' // Not an opening bracket |
337
|
|
|
. ')*+' |
338
|
|
|
. ')' |
339
|
|
|
. '\\[\\/\\2\\]' // Closing shortcode tag |
340
|
|
|
. ')?' |
341
|
|
|
. ')' |
342
|
|
|
. '(\\]?)'; // 6: Optional second closing bracket for escaping shortcodes: [[tag]] |
343
|
|
|
} |
344
|
|
|
|
345
|
|
|
/** |
346
|
|
|
* Builds up a class attribute that can be used in a gallery template |
347
|
|
|
* @param $gallery FooGallery |
348
|
|
|
* |
349
|
|
|
* @return string the classname based on the gallery and any extra attributes |
350
|
|
|
*/ |
351
|
|
|
function foogallery_build_class_attribute( $gallery ) { |
352
|
|
|
$classes[] = 'foogallery-container'; |
353
|
|
|
$classes[] = "foogallery-{$gallery->gallery_template}"; |
354
|
|
|
$num_args = func_num_args(); |
355
|
|
|
|
356
|
|
|
if ( $num_args > 1 ) { |
357
|
|
|
$arg_list = func_get_args(); |
358
|
|
|
for ( $i = 1; $i < $num_args; $i++ ) { |
359
|
|
|
$classes[] = $arg_list[$i]; |
360
|
|
|
} |
361
|
|
|
} |
362
|
|
|
|
363
|
|
|
$classes = apply_filters( 'foogallery_build_class_attribute', $classes ); |
364
|
|
|
|
365
|
|
|
return implode( ' ', $classes ); |
366
|
|
|
} |
367
|
|
|
|
368
|
|
|
/** |
369
|
|
|
* Renders an escaped class attribute that can be used directly by gallery templates |
370
|
|
|
* |
371
|
|
|
* @param $gallery FooGallery |
372
|
|
|
*/ |
373
|
|
|
function foogallery_build_class_attribute_render_safe( $gallery ) { |
|
|
|
|
374
|
|
|
$args = func_get_args(); |
375
|
|
|
$result = call_user_func_array("foogallery_build_class_attribute", $args); |
376
|
|
|
echo esc_attr( $result ); |
377
|
|
|
} |
378
|
|
|
|
379
|
|
|
/** |
380
|
|
|
* Render a foogallery |
381
|
|
|
* |
382
|
|
|
* @param $gallery_id int The id of the foogallery you want to render |
383
|
|
|
*/ |
384
|
|
|
function foogallery_render_gallery( $gallery_id ) { |
385
|
|
|
//create new instance of template engine |
386
|
|
|
$engine = new FooGallery_Template_Loader(); |
387
|
|
|
|
388
|
|
|
$engine->render_template( array( |
389
|
|
|
'id' => $gallery_id |
390
|
|
|
) ); |
391
|
|
|
} |
392
|
|
|
|
393
|
|
|
/** |
394
|
|
|
* Returns the available sorting options that can be chosen for galleries and albums |
395
|
|
|
*/ |
396
|
|
|
function foogallery_sorting_options() { |
397
|
|
|
return apply_filters( 'foogallery_sorting_options', array( |
398
|
|
|
'' => __('Default', 'foogallery'), |
399
|
|
|
'date_desc' => __('Date created - newest first', 'foogallery'), |
400
|
|
|
'date_asc' => __('Date created - oldest first', 'foogallery'), |
401
|
|
|
'modified_desc' => __('Date modified - most recent first', 'foogallery'), |
402
|
|
|
'modified_asc' => __('Date modified - most recent last', 'foogallery'), |
403
|
|
|
'title_asc' => __('Title - alphabetically', 'foogallery'), |
404
|
|
|
'title_desc' => __('Title - reverse', 'foogallery'), |
405
|
|
|
'rand' => __('Random', 'foogallery') |
406
|
|
|
) ); |
407
|
|
|
} |
408
|
|
|
|
409
|
|
|
function foogallery_sorting_get_posts_orderby_arg( $sorting_option ) { |
410
|
|
|
$orderby_arg = 'post__in'; |
411
|
|
|
|
412
|
|
|
switch ( $sorting_option ) { |
413
|
|
|
case 'date_desc': |
414
|
|
|
case 'date_asc': |
415
|
|
|
$orderby_arg = 'date'; |
416
|
|
|
break; |
417
|
|
|
case 'modified_desc': |
418
|
|
|
case 'modified_asc': |
419
|
|
|
$orderby_arg = 'modified'; |
420
|
|
|
break; |
421
|
|
|
case 'title_asc': |
422
|
|
|
case 'title_desc': |
423
|
|
|
$orderby_arg = 'title'; |
424
|
|
|
break; |
425
|
|
|
case 'rand': |
426
|
|
|
$orderby_arg = 'rand'; |
427
|
|
|
break; |
428
|
|
|
} |
429
|
|
|
|
430
|
|
|
return apply_filters( 'foogallery_sorting_get_posts_orderby_arg', $orderby_arg, $sorting_option ); |
431
|
|
|
} |
432
|
|
|
|
433
|
|
|
function foogallery_sorting_get_posts_order_arg( $sorting_option ) { |
434
|
|
|
$order_arg = 'DESC'; |
435
|
|
|
|
436
|
|
|
switch ( $sorting_option ) { |
437
|
|
|
case 'date_asc': |
438
|
|
|
case 'modified_asc': |
439
|
|
|
case 'title_asc': |
440
|
|
|
$order_arg = 'ASC'; |
441
|
|
|
break; |
442
|
|
|
} |
443
|
|
|
|
444
|
|
|
return apply_filters( 'foogallery_sorting_get_posts_order_arg', $order_arg, $sorting_option ); |
445
|
|
|
} |
446
|
|
|
|
447
|
|
|
/** |
448
|
|
|
* Activate the default templates extension when there are no gallery templates loaded |
449
|
|
|
*/ |
450
|
|
|
function foogallery_activate_default_templates_extension() { |
451
|
|
|
$api = foogallery_extensions_api(); |
452
|
|
|
$api->activate( 'default_templates' ); |
453
|
|
|
} |
454
|
|
|
|
455
|
|
|
/** |
456
|
|
|
* Allow FooGallery to enqueue stylesheet and allow them to be enqueued in the head on the next page load |
457
|
|
|
* |
458
|
|
|
* @param $handle string |
459
|
|
|
* @param $src string |
460
|
|
|
* @param array $deps |
461
|
|
|
* @param bool $ver |
462
|
|
|
* @param string $media |
463
|
|
|
*/ |
464
|
|
|
function foogallery_enqueue_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) { |
465
|
|
|
wp_enqueue_style( $handle, $src, $deps, $ver, $media ); |
466
|
|
|
do_action( 'foogallery_enqueue_style', $handle, $src, $deps, $ver, $media ); |
467
|
|
|
} |
468
|
|
|
|
469
|
|
|
|
470
|
|
|
/** |
471
|
|
|
* Returns all foogallery post objects that are attached to the post |
472
|
|
|
* |
473
|
|
|
* @param $post_id int The ID of the post |
474
|
|
|
* |
475
|
|
|
* @return array List of foogallery posts. |
476
|
|
|
*/ |
477
|
|
|
function foogallery_get_galleries_attached_to_post( $post_id ) { |
478
|
|
|
$gallery_ids = get_post_meta( $post_id, FOOGALLERY_META_POST_USAGE, false ); |
479
|
|
|
|
480
|
|
|
if ( !empty( $gallery_ids ) ) { |
481
|
|
|
return get_posts( array( |
482
|
|
|
'post_type' => array( FOOGALLERY_CPT_GALLERY, ), |
483
|
|
|
'post_status' => array( 'draft', 'publish' ), |
484
|
|
|
'posts_per_page' => -1, |
485
|
|
|
'include' => $gallery_ids |
486
|
|
|
) ); |
487
|
|
|
} |
488
|
|
|
|
489
|
|
|
return array(); |
490
|
|
|
} |
491
|
|
|
|
492
|
|
|
/** |
493
|
|
|
* Clears all css load optimization post meta |
494
|
|
|
*/ |
495
|
|
|
function foogallery_clear_all_css_load_optimizations() { |
496
|
|
|
delete_post_meta_by_key( FOOGALLERY_META_POST_USAGE_CSS ); |
497
|
|
|
} |
498
|
|
|
|
499
|
|
|
/** |
500
|
|
|
* Performs a check to see if the plugin has been updated, and perform any housekeeping if necessary |
501
|
|
|
*/ |
502
|
|
|
function foogallery_perform_version_check() { |
503
|
|
|
$checker = new FooGallery_Version_Check(); |
504
|
|
|
$checker->perform_check(); |
505
|
|
|
} |
506
|
|
|
|
507
|
|
|
/** |
508
|
|
|
* Returns the JPEG quality used when generating thumbnails |
509
|
|
|
* |
510
|
|
|
* @return int The quality value stored in settings |
511
|
|
|
*/ |
512
|
|
|
function foogallery_thumbnail_jpeg_quality() { |
513
|
|
|
$quality = intval( foogallery_get_setting( 'thumb_jpeg_quality' ) ); |
514
|
|
|
|
515
|
|
|
//check if we get an invalid value for whatever reason and if so return a default of 80 |
516
|
|
|
if ( $quality <= 0 ) { |
517
|
|
|
$quality = 80; |
518
|
|
|
} |
519
|
|
|
|
520
|
|
|
return $quality; |
521
|
|
|
} |
522
|
|
|
|
523
|
|
|
/** |
524
|
|
|
* Returns the caption title source setting |
525
|
|
|
* |
526
|
|
|
* @return string |
527
|
|
|
*/ |
528
|
|
|
function foogallery_caption_title_source() { |
529
|
|
|
$source = foogallery_get_setting( 'caption_title_source', 'caption' ); |
|
|
|
|
530
|
|
|
|
531
|
|
|
if ( empty( $source ) ) { |
532
|
|
|
$source = 'caption'; |
533
|
|
|
} |
534
|
|
|
|
535
|
|
|
return $source; |
536
|
|
|
} |
537
|
|
|
|
538
|
|
|
/** |
539
|
|
|
* Returns the attachment caption title based on the caption_title_source setting |
540
|
|
|
* |
541
|
|
|
* @param $attachment_post WP_Post |
542
|
|
|
* |
543
|
|
|
* @return string |
544
|
|
|
*/ |
545
|
|
|
function foogallery_get_caption_title_for_attachment($attachment_post) { |
546
|
|
|
$source = foogallery_caption_title_source(); |
547
|
|
|
|
548
|
|
|
if ( 'title' === $source ) { |
549
|
|
|
$caption = trim( $attachment_post->post_title ); |
550
|
|
|
} else { |
551
|
|
|
$caption = trim( $attachment_post->post_excerpt ); |
552
|
|
|
} |
553
|
|
|
|
554
|
|
|
return apply_filters( 'foogallery_get_caption_title_for_attachment', $caption, $attachment_post ); |
555
|
|
|
} |
556
|
|
|
|
557
|
|
|
/** |
558
|
|
|
* Returns the caption description source setting |
559
|
|
|
* |
560
|
|
|
* @return string |
561
|
|
|
*/ |
562
|
|
|
function foogallery_caption_desc_source() { |
563
|
|
|
$source = foogallery_get_setting( 'caption_desc_source', 'desc' ); |
|
|
|
|
564
|
|
|
|
565
|
|
|
if ( empty( $source ) ) { |
566
|
|
|
$source = 'desc'; |
567
|
|
|
} |
568
|
|
|
|
569
|
|
|
return $source; |
570
|
|
|
} |
571
|
|
|
|
572
|
|
|
/** |
573
|
|
|
* Returns the attachment caption description based on the caption_desc_source setting |
574
|
|
|
* |
575
|
|
|
* @param $attachment_post WP_Post |
576
|
|
|
* |
577
|
|
|
* @return string |
578
|
|
|
*/ |
579
|
|
|
function foogallery_get_caption_desc_for_attachment($attachment_post) { |
580
|
|
|
$source = foogallery_caption_desc_source(); |
581
|
|
|
|
582
|
|
|
switch ( $source ) { |
583
|
|
|
case 'title': |
584
|
|
|
$caption = trim( $attachment_post->post_title ); |
585
|
|
|
break; |
586
|
|
|
case 'caption': |
587
|
|
|
$caption = trim( $attachment_post->post_excerpt ); |
588
|
|
|
break; |
589
|
|
|
case 'alt': |
590
|
|
|
$caption = trim( get_post_meta( $attachment_post->ID, '_wp_attachment_image_alt', true ) ); |
591
|
|
|
break; |
592
|
|
|
default: |
593
|
|
|
$caption = trim( $attachment_post->post_content ); |
594
|
|
|
} |
595
|
|
|
|
596
|
|
|
return apply_filters( 'foogallery_get_caption_desc_for_attachment', $caption, $attachment_post ); |
597
|
|
|
} |
598
|
|
|
|
599
|
|
|
/** |
600
|
|
|
* Runs thumbnail tests and outputs results in a table format |
601
|
|
|
*/ |
602
|
|
|
function foogallery_output_thumbnail_generation_results() { |
603
|
|
|
$thumbs = new FooGallery_Thumbnails(); |
604
|
|
|
try { |
605
|
|
|
$results = $thumbs->run_thumbnail_generation_tests(); |
606
|
|
|
if ( $results['success'] ) { |
607
|
|
|
echo '<span style="color:#0c0">' . __('Thumbnail generation test ran successfully.', 'foogallery') . '</span>'; |
608
|
|
|
} else { |
609
|
|
|
echo '<span style="color:#c00">' . __('Thumbnail generation test failed!', 'foogallery') . '</span>'; |
610
|
|
|
var_dump( $results['error'] ); |
611
|
|
|
} |
612
|
|
|
} |
613
|
|
|
catch (Exception $e) { |
614
|
|
|
echo 'Exception: ' . $e->getMessage(); |
615
|
|
|
} |
616
|
|
|
} |
617
|
|
|
|
618
|
|
|
/** |
619
|
|
|
* Returns the URL to the test image |
620
|
|
|
* |
621
|
|
|
* @return string |
622
|
|
|
*/ |
623
|
|
|
function foogallery_test_thumb_url() { |
624
|
|
|
return apply_filters( 'foogallery_test_thumb_url', FOOGALLERY_URL . 'assets/test_thumb_1.jpg' ); |
625
|
|
|
} |
626
|
|
|
|
627
|
|
|
/** |
628
|
|
|
* Return all the gallery datasources used within FooGallery |
629
|
|
|
* |
630
|
|
|
* @return array |
631
|
|
|
*/ |
632
|
|
|
function foogallery_gallery_datasources() { |
633
|
|
|
$default_datasource = foogallery_default_datasource(); |
634
|
|
|
|
635
|
|
|
$datasources[$default_datasource] = 'FooGalleryDatasource_MediaLibrary'; |
|
|
|
|
636
|
|
|
|
637
|
|
|
return apply_filters( 'foogallery_gallery_datasources', $datasources ); |
638
|
|
|
} |
639
|
|
|
|
640
|
|
|
/** |
641
|
|
|
* Returns the default gallery datasource |
642
|
|
|
* |
643
|
|
|
* @return string |
644
|
|
|
*/ |
645
|
|
|
function foogallery_default_datasource() { |
646
|
|
|
return foogallery_get_default( 'datasource', 'media_library' ); |
|
|
|
|
647
|
|
|
} |
648
|
|
|
|
649
|
|
|
/** |
650
|
|
|
* Instantiates a FooGallery datasource based on a datasource name |
651
|
|
|
* |
652
|
|
|
* @param $datasource_name string |
653
|
|
|
* |
654
|
|
|
* @return IFooGalleryDatasource |
655
|
|
|
*/ |
656
|
|
|
function foogallery_instantiate_datasource( $datasource_name ) { |
657
|
|
|
$datasources = foogallery_gallery_datasources(); |
658
|
|
|
if ( array_key_exists( $datasource_name, $datasources ) ) { |
659
|
|
|
return new $datasources[$datasource_name]; |
660
|
|
|
} |
661
|
|
|
|
662
|
|
|
return new FooGalleryDatasource_MediaLibrary(); |
663
|
|
|
} |
664
|
|
|
|
665
|
|
|
/** |
666
|
|
|
* Returns the src to the built-in image placeholder |
667
|
|
|
* @return string |
668
|
|
|
*/ |
669
|
|
|
function foogallery_image_placeholder_src() { |
670
|
|
|
return apply_filters( 'foogallery_image_placeholder_src', FOOGALLERY_URL . 'assets/image-placeholder.png' ); |
671
|
|
|
} |
672
|
|
|
|
673
|
|
|
/** |
674
|
|
|
* Returns the image html for the built-in image placeholder |
675
|
|
|
* |
676
|
|
|
* @param array $args |
677
|
|
|
* |
678
|
|
|
* @return string |
679
|
|
|
*/ |
680
|
|
|
function foogallery_image_placeholder_html( $args ) { |
681
|
|
|
if ( !isset( $args ) ) { |
682
|
|
|
$args = array( |
683
|
|
|
'width' => 150, |
684
|
|
|
'height' => 150 |
685
|
|
|
); |
686
|
|
|
} |
687
|
|
|
|
688
|
|
|
$args['src'] = foogallery_image_placeholder_src(); |
689
|
|
|
$args = array_map( 'esc_attr', $args ); |
690
|
|
|
$html = '<img '; |
691
|
|
|
foreach ( $args as $name => $value ) { |
692
|
|
|
$html .= " $name=" . '"' . $value . '"'; |
693
|
|
|
} |
694
|
|
|
$html .= ' />'; |
695
|
|
|
return apply_filters( 'foogallery_image_placeholder_html', $html, $args ); |
696
|
|
|
} |
697
|
|
|
|
698
|
|
|
/** |
699
|
|
|
* Returns the thumbnail html for the featured attachment for a gallery. |
700
|
|
|
* If no featured attachment can be found, then a placeholder image src is returned instead |
701
|
|
|
* |
702
|
|
|
* @param FooGallery $gallery |
703
|
|
|
* @param array $args |
704
|
|
|
* |
705
|
|
|
* @return string |
706
|
|
|
*/ |
707
|
|
|
function foogallery_find_featured_attachment_thumbnail_html( $gallery, $args = null ){ |
708
|
|
|
if ( !isset( $gallery ) ) return ''; |
709
|
|
|
|
710
|
|
|
if ( !isset( $args ) ) { |
711
|
|
|
$args = array( |
712
|
|
|
'width' => 150, |
713
|
|
|
'height' => 150 |
714
|
|
|
); |
715
|
|
|
} |
716
|
|
|
|
717
|
|
|
$featuredAttachment = $gallery->featured_attachment(); |
718
|
|
|
if ( $featuredAttachment ) { |
719
|
|
|
return $featuredAttachment->html_img( $args ); |
720
|
|
|
} else { |
721
|
|
|
//if we have no featured attachment, then use the built-in image placeholder |
722
|
|
|
return foogallery_image_placeholder_html( $args ); |
723
|
|
|
} |
724
|
|
|
} |
725
|
|
|
|
726
|
|
|
/** |
727
|
|
|
* Returns the thumbnail src for the featured attachment for a gallery. |
728
|
|
|
* If no featured attachment can be found, then a placeholder image src is returned instead |
729
|
|
|
* |
730
|
|
|
*@param FooGallery $gallery |
731
|
|
|
* @param array $args |
732
|
|
|
* |
733
|
|
|
* @return string |
734
|
|
|
*/ |
735
|
|
|
function foogallery_find_featured_attachment_thumbnail_src( $gallery, $args = null ){ |
736
|
|
|
if ( !isset( $gallery ) ) return ''; |
737
|
|
|
|
738
|
|
|
if ( !isset( $args ) ) { |
739
|
|
|
$args = array( |
740
|
|
|
'width' => 150, |
741
|
|
|
'height' => 150 |
742
|
|
|
); |
743
|
|
|
} |
744
|
|
|
|
745
|
|
|
$featuredAttachment = $gallery->featured_attachment(); |
746
|
|
|
if ( $featuredAttachment ) { |
747
|
|
|
return $featuredAttachment->html_img_src( $args ); |
748
|
|
|
} else { |
749
|
|
|
//if we have no featured attachment, then use the built-in image placeholder |
750
|
|
|
return foogallery_image_placeholder_src(); |
751
|
|
|
} |
752
|
|
|
} |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.