PluginProbe ʕ •ᴥ•ʔ
Responsive Lightbox & Gallery / 2.7.2
Responsive Lightbox & Gallery v2.7.2
2.7.8 trunk 1.0.0 1.0.1 1.0.1.1 1.0.2 1.0.3 1.0.4 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4.0 1.4.0.1 1.4.1 1.4.11 1.4.12 1.4.13 1.4.14 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 2.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3.1 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7
responsive-lightbox / includes / galleries / class-gallery-field-provider.php
responsive-lightbox / includes / galleries Last commit date
class-gallery-api.php 5 months ago class-gallery-base.php 5 months ago class-gallery-config.php 5 months ago class-gallery-design.php 5 months ago class-gallery-field-provider.php 5 months ago class-gallery-images.php 5 months ago class-gallery-lightbox.php 5 months ago class-gallery-misc.php 5 months ago class-gallery-paging.php 5 months ago trait-gallery-ajax.php 4 months ago trait-gallery-duplicate.php 5 months ago trait-gallery-image-methods.php 5 months ago trait-gallery-preview.php 5 months ago trait-gallery-sanitize.php 5 months ago
class-gallery-field-provider.php
106 lines
1 <?php
2 /**
3 * Responsive Lightbox Gallery Field Provider
4 *
5 * Shared helper for resolving Settings API gallery field definitions.
6 *
7 * @package Responsive_Lightbox
8 */
9
10 // exit if accessed directly
11 if ( ! defined( 'ABSPATH' ) )
12 exit;
13
14 /**
15 * Responsive_Lightbox_Gallery_Field_Provider class.
16 */
17 class Responsive_Lightbox_Gallery_Field_Provider {
18
19 /**
20 * Get gallery settings data from Settings API with legacy fallback.
21 *
22 * @return array
23 */
24 public function get_gallery_settings_data() {
25 $settings = [];
26 $settings_data = apply_filters( 'rl_settings_data', [] );
27
28 if ( is_array( $settings_data ) ) {
29 foreach ( $settings_data as $setting_key => $setting ) {
30 $fields = $this->get_settings_fields_from_data( $setting );
31
32 if ( ! empty( $fields ) ) {
33 $settings[$setting_key]['fields'] = $fields;
34 }
35 }
36 }
37
38 $rl = Responsive_Lightbox();
39 $legacy_settings = isset( $rl->settings->settings ) && is_array( $rl->settings->settings ) ? $rl->settings->settings : [];
40
41 if ( empty( $settings ) )
42 return $legacy_settings;
43
44 foreach ( $legacy_settings as $setting_key => $setting ) {
45 if ( empty( $settings[$setting_key] ) && ! empty( $setting['fields'] ) ) {
46 $settings[$setting_key] = $setting;
47 }
48 }
49
50 return $settings;
51 }
52
53 /**
54 * Extract fields from Settings API data.
55 *
56 * @param array $setting
57 * @return array
58 */
59 private function get_settings_fields_from_data( $setting ) {
60 $fields = [];
61
62 if ( ! empty( $setting['fields'] ) && is_array( $setting['fields'] ) ) {
63 foreach ( $setting['fields'] as $field_key => $field ) {
64 if ( $this->is_valid_gallery_field( $field ) )
65 $fields[$field_key] = $field;
66 }
67 }
68
69 if ( ! empty( $setting['sections'] ) && is_array( $setting['sections'] ) ) {
70 foreach ( $setting['sections'] as $section ) {
71 if ( empty( $section['fields'] ) || ! is_array( $section['fields'] ) )
72 continue;
73
74 foreach ( $section['fields'] as $field_key => $field ) {
75 if ( isset( $fields[$field_key] ) )
76 continue;
77
78 if ( $this->is_valid_gallery_field( $field ) )
79 $fields[$field_key] = $field;
80 }
81 }
82 }
83
84 return $fields;
85 }
86
87 /**
88 * Validate gallery field definition.
89 *
90 * @param mixed $field
91 * @return bool
92 */
93 private function is_valid_gallery_field( $field ) {
94 if ( ! is_array( $field ) )
95 return false;
96
97 if ( empty( $field['type'] ) )
98 return false;
99
100 if ( $field['type'] === 'multiple' && empty( $field['fields'] ) )
101 return false;
102
103 return true;
104 }
105 }
106