PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.10.30
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.10.30
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 2 years ago controls 2 years ago pa-display-conditions 2 years ago templates 2 years ago acf-helper.php 2 years ago addons-cross-cp.php 2 years ago addons-integration.php 2 years ago assets-manager.php 2 years ago class-pa-core.php 2 years ago class-premium-template-tags.php 2 years ago helper-functions.php 2 years ago live-editor-modal.php 2 years ago module-base.php 2 years ago pa-nav-menu-walker.php 2 years ago
acf-helper.php
232 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, array( '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 * Returns allowed field types
106 *
107 * @access public
108 * @since 4.4.8
109 *
110 * @param string $type field category.
111 * @return array
112 */
113 public static function get_allowed_field_types( $type ) {
114
115 $default_types = array(
116 'textual' => array(
117 'text',
118 'textarea',
119 'number',
120 'range',
121 'email',
122 'url',
123 'password',
124 'wysiwyg',
125 ),
126 'date' => array(
127 'date_picker',
128 'date_time_picker',
129 ),
130 'choice' => array(
131 'select',
132 'checkbox',
133 'radio',
134 ),
135 'boolean' => array(
136 'true_false',
137 ),
138 );
139
140 return $default_types[ $type ];
141 }
142
143 /**
144 * Format Acf Values into array ['val : lablel'] || ['val : val']
145 *
146 * @access public
147 * @since 4.4.8
148 *
149 * @param string $values acf choice field value/s.
150 * @param string $return_format acf field return format.
151 * @param boolean $is_radio true if the field is radio button.
152 * @param boolean $single_select true if the field is a select option and multiple value is disabled.
153 *
154 * @return array
155 */
156 public static function format_acf_values( $values, $return_format, $is_radio, $single_select = false ) {
157
158 $formated_values = array();
159
160 if ( $is_radio || $single_select ) {
161
162 if ( 'array' === $return_format ) {
163 array_push( $formated_values, $values['value'] . ' : ' . $values['label'] );
164 } else {
165 array_push( $formated_values, $values . ' : ' . $values );
166 }
167 } else {
168
169 $values = acf_decode_choices( $values );
170
171 foreach ( $values as $index => $value ) {
172 if ( 'array' === $return_format ) {
173 array_push( $formated_values, $value['value'] . ' : ' . $value['label'] );
174 } else {
175 array_push( $formated_values, $value . ' : ' . $value );
176 }
177 }
178 }
179
180 return $formated_values;
181 }
182
183 /**
184 * Get ACF field value.
185 *
186 * @access public
187 * @since 4.4.8
188 *
189 * @param string $field_key acf key.
190 * @param int $parent acf parent id.
191 */
192 public function get_acf_field_value( $field_key, $parent ) {
193
194 if ( self::in_option_page( $parent ) ) {
195
196 return get_field_object( $field_key, 'option' )['value'];
197 } else {
198
199 if ( is_preview() ) {
200 add_filter( 'acf/pre_load_post_id', array( $this, 'fix_post_id_on_preview' ), 10, 2 );
201 }
202
203 return get_field_object( $field_key )['value'];
204 }
205 }
206
207
208 /**
209 * Fix PostId conflict on Preview.
210 *
211 * @access public
212 * @since 4.4.8
213 *
214 * @param null $null $null.
215 * @param int $post_id post id.
216 */
217 public static function fix_post_id_on_preview( $null, $post_id ) {
218
219 if ( is_preview() ) {
220 return get_the_ID();
221 } else {
222 $acf_post_id = isset( $post_id->ID ) ? $post_id->ID : $post_id;
223
224 if ( ! empty( $acf_post_id ) ) {
225 return $acf_post_id;
226 } else {
227 return $null;
228 }
229 }
230 }
231 }
232