PluginProbe
Advanced Forms for ACF / 1.0.0
Advanced Forms for ACF v1.0.0
1.9.0 1.9.1 1.9.2.1 1.9.3 1.9.3.1 1.9.3.2 1.9.3.3 1.9.3.4 1.9.3.5 1.9.3.6 1.9.3.7 1.9.3.8 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.3.1 1.0.3.2 1.0.3.3 1.0.4 1.1.0 1.1.1 1.2.0 1.3.0 All 51 releases
advanced-forms / api / api-forms.php

api-forms.php in Advanced Forms for ACF 1.0.0, at api/api-forms.php

307 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 /**
5 * The main function used to output a form
6 *
7 *
8 * @since 1.0.0
9 *
10 */
11 function advanced_form( $form_id, $args = array() ) {
12
13 do_action( 'af/form/render', $form_id, $args );
14
15 }
16
17
18 /**
19 * Helepr function to extract a specific field value from submitted fields
20 *
21 * @since 1.0.0
22 *
23 */
24 function af_get_field( $field_key_or_name, $fields ) {
25
26 foreach( $fields as $field ) {
27
28 if ( $field['key'] == $field_key_or_name || $field['name'] == $field_key_or_name ) {
29
30 return $field['value'];
31
32 }
33
34 }
35
36 return false;
37
38 }
39
40
41 /**
42 * Used to register a form programmatically
43 *
44 * @since 1.0.0
45 *
46 */
47 function af_register_form( $form ) {
48
49 global $af_registered_forms;
50
51 if ( ! $af_registered_forms || ! is_array( $af_registered_forms ) ) {
52
53 $af_registered_forms = array();
54
55 }
56
57 $form = af_get_valid_form( $form );
58
59 if ( $form ) {
60
61 $af_registered_forms[] = $form;
62
63 }
64
65
66 return $form;
67
68 }
69
70
71 /**
72 * Validates and fills a form array with default values
73 *
74 * @since 1.0.0
75 *
76 */
77 function af_get_valid_form( $form ) {
78
79
80 // A form key is always required
81 if ( ! isset( $form['key'] ) ) {
82 return;
83 }
84
85 $form = wp_parse_args( $form, array(
86 'post_id' => false,
87 'title' => '',
88 'key' => '',
89 'display' => array(
90 'display_title' => false,
91 'display_description' => false,
92 'description' => '',
93 'success_message' => '',
94 ),
95 'create_entries' => false,
96 ));
97
98
99 $form = apply_filters( 'af/form/valid_form', $form );
100
101
102 return $form;
103
104 }
105
106
107 /**
108 * Generates a form array from a form post object
109 *
110 * @since 1.0.0
111 *
112 */
113 function af_form_from_post( $post ) {
114
115 // Get post object if ID has been passed
116 if ( is_numeric( $post ) ) {
117 $post = get_post( $post );
118 }
119
120
121 // Make sure we have a post and that it's a form
122 if ( !$post || 'af_form' != $post->post_type ) {
123 return false;
124 }
125
126
127 $form = array(
128 'post_id' => $post->ID,
129 'title' => $post->post_title,
130 'key' => get_post_meta( $post->ID, 'form_key', true ),
131 'display' => array(
132 'display_title' => get_field( 'form_display_title', $post->ID ),
133 'display_description' => get_field( 'form_display_description', $post->ID ),
134 'description' => get_field( 'form_description', $post->ID ),
135 'success_message' => get_field( 'form_success_message', $post->ID ),
136 ),
137 'create_entries' => get_field( 'form_create_entries', $post->ID ),
138 );
139
140
141 $form = apply_filters( 'af/form/from_post', $form, $post );
142 $form = apply_filters( 'af/form/from_post/id=' . $form['post_id'], $form, $post );
143 $form = apply_filters( 'af/form/from_post/key=' . $form['key'], $form, $post );
144
145
146 return af_get_valid_form( $form );
147
148 }
149
150
151 /**
152 * Retrieves a form either
153 *
154 * @since 1.0.0
155 *
156 */
157 function af_form_from_key( $key ) {
158
159 global $af_registered_forms;
160
161 if ( $af_registered_forms && is_array( $af_registered_forms ) ) {
162
163 foreach ( $af_registered_forms as $registered_form ) {
164
165 if ( $registered_form['key'] == $key ) {
166
167 return af_get_valid_form( $registered_form );
168
169 }
170
171 }
172
173 }
174
175
176 // Form not a registered one, search posts by key meta
177 $args = array(
178 'post_type' => 'af_form',
179 'posts_per_page' => '1',
180 'meta_query' => array(
181 array(
182 'key' => 'form_key',
183 'value' => $key,
184 ),
185 ),
186 );
187
188 $query = new WP_Query( $args );
189
190 if ( $query->have_posts() ) {
191
192 return af_form_from_post( $query->posts[0] );
193
194 }
195
196
197 return false;
198
199 }
200
201
202 /**
203 * Retrieves a form by form key or form ID
204 *
205 * @since 1.0.0
206 *
207 */
208 function af_get_form( $form_id_or_key ) {
209
210 $form = false;
211
212 if ( is_numeric( $form_id_or_key ) ) {
213
214 $form = af_form_from_post( $form_id_or_key );
215
216 }
217
218
219 // Form should be loaded as key
220 if (!$form) {
221
222 $form = af_form_from_key( $form_id_or_key );
223
224 }
225
226
227 return $form;
228
229 }
230
231
232 /**
233 * Returns all forms, both those saved as posts and those registered
234 *
235 * @since 1.0.0
236 *
237 */
238 function af_get_forms() {
239
240 $forms = array();
241
242 // Get all forms saved as posts
243 $args = array(
244 'post_type' => 'af_form',
245 'posts_per_page' => -1,
246 );
247 $form_query = new WP_Query( $args );
248
249 if ( $form_query->have_posts() ) {
250
251 while ( $form_query->have_posts() ) {
252 $form_query->the_post();
253
254 global $post;
255
256 $form = af_form_from_post( $post );
257
258 $forms[] = $form;
259
260 }
261
262 }
263
264
265 // Get all programmatically registered forms
266 global $af_registered_forms;
267
268 if ( $af_registered_forms && is_array( $af_registered_forms ) ) {
269
270 foreach( $af_registered_forms as $registered_form ) {
271
272 $forms[] = af_get_valid_form( $registered_form );
273
274 }
275
276 }
277
278 return $forms;
279
280 }
281
282
283 /**
284 * Returns all fields groups used by specified form
285 *
286 * @since 1.0.0
287 *
288 */
289 function af_get_form_field_groups( $form_key ) {
290
291 // If a full form array is passed
292 if ( is_array( $form_key ) ) {
293
294 $form_key = $form_key['key'];
295
296 }
297
298 // Location rule filter
299 $args = array(
300 'af_form' => $form_key,
301 );
302
303 $field_groups = acf_get_field_groups( $args );
304
305 return $field_groups;
306
307 }