PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.9.40
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.9.40
4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / includes / acf-helper.php
premium-addons-for-elementor / includes Last commit date
compatibility 3 years ago controls 3 years ago pa-display-conditions 3 years ago templates 3 years ago acf-helper.php 3 years ago addons-cross-cp.php 3 years ago addons-integration.php 3 years ago assets-manager.php 3 years ago class-pa-core.php 3 years ago class-premium-template-tags.php 3 years ago helper-functions.php 3 years ago live-editor-modal.php 3 years ago module-base.php 3 years ago pa-nav-menu-walker.php 3 years ago
acf-helper.php
235 lines
1 <?php
2 /**
3 * ACF Handler
4 *
5 * Contains helper functions for ACF fields.
6 */
7
8 namespace PremiumAddons\Includes;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit; // Exit if accessed directly.
12 }
13
14 /**
15 * Class ACF_Helper.
16 */
17 class ACF_Helper {
18
19 /**
20 * Format Acf Options.
21 *
22 * @since 4.4.8
23 * @access public
24 *
25 * @param array $posts query objects - available custom fields -.
26 * @param array $options display options.
27 *
28 * @return array $results formated control options.
29 */
30 public static function format_acf_query_result( $posts, $options ) {
31
32 $results = array();
33 $show_type = $options['show_type'];
34 $show_field_type = $options['show_field_type'];
35 $show_group = $options['show_group'];
36
37 foreach ( $posts as $post ) {
38
39 $acf_settings = unserialize( $post->post_content, ['allowed_classes' => false] ); // TODO:: check for a safer method.
40
41 $acf_type = $show_field_type ? ucwords( $acf_settings['type'] ) . ': ' : '';
42
43 if ( ! in_array( $acf_settings['type'], self::get_allowed_field_types( $options['field_type'] ), true ) ) {
44 continue; }
45
46 $acf_group = $show_group ? ' ( ' . get_the_title( $post->post_parent ) . ' ) ' : '';
47
48 $option_label = $acf_type . $post->post_title . $acf_group;
49
50 $results[ $post->post_name ] = $option_label;
51 }
52
53 return $results;
54 }
55
56 /**
57 * Get ACF Options Pages Ids.
58 *
59 * List of ids of all options pages registered.
60 *
61 * @access public
62 * @since 4.4.8
63 * @return array $options_page_groups_ids pages id
64 */
65 public static function get_acf_options_pages_ids() {
66
67 $options_page_groups_ids = array();
68
69 if ( function_exists( 'acf_options_page' ) ) {
70 $pages = acf_options_page()->get_pages();
71
72 foreach ( $pages as $slug => $page ) {
73 $options_page_groups = acf_get_field_groups(
74 array(
75 'options_page' => $slug,
76 )
77 );
78
79 foreach ( $options_page_groups as $options_page_group ) {
80 $options_page_groups_ids[] = $options_page_group['ID'];
81 }
82 }
83 }
84
85 return $options_page_groups_ids;
86 }
87
88 /**
89 * Check if the ACF field is in an options page.
90 *
91 * @access public
92 * @since 4.4.8
93 *
94 * @param int $parent field parent id.
95 * @return bool
96 */
97 public static function in_option_page( $parent ) {
98
99 $option_pgs_ids = self::get_acf_options_pages_ids();
100
101 return in_array( $parent, $option_pgs_ids, true );
102
103 }
104
105 /**
106 * Returns allowed field types
107 *
108 * @access public
109 * @since 4.4.8
110 *
111 * @param string $type field category.
112 * @return array
113 */
114 public static function get_allowed_field_types( $type ) {
115
116 $default_types = array(
117 'textual' => array(
118 'text',
119 'textarea',
120 'number',
121 'range',
122 'email',
123 'url',
124 'password',
125 'wysiwyg',
126 ),
127 'date' => array(
128 'date_picker',
129 'date_time_picker',
130 ),
131 'choice' => array(
132 'select',
133 'checkbox',
134 'radio',
135 ),
136 'boolean' => array(
137 'true_false',
138 ),
139 );
140
141 return $default_types[ $type ];
142 }
143
144 /**
145 * Format Acf Values into array ['val : lablel'] || ['val : val']
146 *
147 * @access public
148 * @since 4.4.8
149 *
150 * @param string $values acf choice field value/s.
151 * @param string $return_format acf field return format.
152 * @param boolean $is_radio true if the field is radio button.
153 * @param boolean $single_select true if the field is a select option and multiple value is disabled.
154 *
155 * @return array
156 */
157 public static function format_acf_values( $values, $return_format, $is_radio, $single_select = false ) {
158
159 $formated_values = array();
160
161 if ( $is_radio || $single_select ) {
162
163 if ( 'array' === $return_format ) {
164 array_push( $formated_values, $values['value'] . ' : ' . $values['label'] );
165 } else {
166 array_push( $formated_values, $values . ' : ' . $values );
167 }
168 } else {
169
170 $values = acf_decode_choices( $values );
171
172 foreach ( $values as $index => $value ) {
173 if ( 'array' === $return_format ) {
174 array_push( $formated_values, $value['value'] . ' : ' . $value['label'] );
175 } else {
176 array_push( $formated_values, $value . ' : ' . $value );
177 }
178 }
179 }
180
181 return $formated_values;
182 }
183
184 /**
185 * Get ACF field value.
186 *
187 * @access public
188 * @since 4.4.8
189 *
190 * @param string $field_key acf key.
191 * @param int $parent acf parent id.
192 */
193 public function get_acf_field_value( $field_key, $parent ) {
194
195 if ( self::in_option_page( $parent ) ) {
196
197 return get_field_object( $field_key, 'option' )['value'];
198 } else {
199
200 if ( is_preview() ) {
201 add_filter( 'acf/pre_load_post_id', array( $this, 'fix_post_id_on_preview' ), 10, 2 );
202 }
203
204 return get_field_object( $field_key )['value'];
205 }
206
207 }
208
209
210 /**
211 * Fix PostId conflict on Preview.
212 *
213 * @access public
214 * @since 4.4.8
215 *
216 * @param null $null $null.
217 * @param int $post_id post id.
218 */
219 public static function fix_post_id_on_preview( $null, $post_id ) {
220
221 if ( is_preview() ) {
222 return get_the_ID();
223 } else {
224 $acf_post_id = isset( $post_id->ID ) ? $post_id->ID : $post_id;
225
226 if ( ! empty( $acf_post_id ) ) {
227 return $acf_post_id;
228 } else {
229 return $null;
230 }
231 }
232 }
233
234 }
235