PluginProbe ʕ •ᴥ•ʔ
Pods – Custom Content Types and Fields / 2.8.23.4
Pods – Custom Content Types and Fields v2.8.23.4
2.7.31.4 2.8.23.5 2.9.19.5 3.0.10.5 3.1.4.3 3.2.8.4 3.3.9.2 2.8.23.4 2.9.19.4 3.0.10.4 3.1.4.2 3.2.8.3 3.3.9.1 trunk 1.14.8 2.7.31.3 2.8.23.3 2.9.19.3 3.0.10.3 3.1.4.1 3.2.0 3.2.1 3.2.1.1 3.2.2 3.2.4 3.2.5 3.2.6 3.2.7 3.2.7.1 3.2.8 3.2.8.1 3.2.8.2 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9
pods / components / Templates / includes / functions-pod_reference.php
pods / components / Templates / includes Last commit date
auto-template 3 weeks ago element-pod_reference.php 3 weeks ago element-view_template.php 3 weeks ago functions-pod_reference.php 3 weeks ago functions-view_template.php 3 weeks ago
functions-pod_reference.php
106 lines
1 <?php
2
3 add_action( 'wp_ajax_pq_loadpod', 'pq_loadpod' );
4
5 /**
6 * @param bool $podname
7 *
8 * @return array
9 */
10 function pq_loadpod( $podname = false ) {
11 if ( doing_action( 'wp_ajax_pq_loadpod' ) ) {
12 // This is the AJAX entry point; pq_loadpod() is also called server-side (see element-pod_reference-content.php).
13 check_ajax_referer( 'pods_pq_loadpod', 'nonce' );
14 }
15
16 if ( ! pods_is_admin() ) {
17 return pods_error( __( 'Unauthorized request', 'pods' ) );
18 }
19 if ( ! empty( $_POST['pod_reference']['pod'] ) ) {
20 $podname = $_POST['pod_reference']['pod'];
21 }
22 if ( ! empty( $_POST['pod'] ) ) {
23 $podname = $_POST['pod'];
24 }
25 $fields = array( __( 'No reference Pod selected', 'pods' ) );
26
27 if ( ! empty( $podname ) ) {
28 $fields = pq_recurse_pod_fields( $podname );
29 }
30 if ( ! empty( $_POST['pod_reference']['pod'] ) || ! empty( $_POST['pod'] ) ) {
31 header( 'Content-Type:application/json' );
32 echo json_encode( $fields );
33 die;
34 }
35
36 return $fields;
37 }
38
39 /**
40 * @param $pod_name
41 * @param string $prefix
42 * @param array $pods_visited
43 *
44 * @return array
45 */
46 function pq_recurse_pod_fields( $pod_name, $prefix = '', &$pods_visited = array() ) {
47
48 $fields = array();
49 if ( empty( $pod_name ) ) {
50 return $fields;
51 }
52
53 $pod = pods( $pod_name );
54
55 if ( empty( $pod ) || ! $pod->valid() ) {
56 return $fields;
57 }
58
59 $recurse_queue = array();
60
61 if ( post_type_supports( $pod_name, 'thumbnail' ) ) {
62 $fields[] = "{$prefix}post_thumbnail";
63 $fields[] = "{$prefix}post_thumbnail_url";
64 $sizes = get_intermediate_image_sizes();
65 foreach ( $sizes as $size ) {
66 $fields[] = "{$prefix}post_thumbnail.{$size}";
67 $fields[] = "{$prefix}post_thumbnail_url.{$size}";
68 }
69 }
70
71 $pod_fields = $pod->fields();
72
73 foreach ( $pod_fields as $name => $field ) {
74 // Add base field name
75 $fields[] = $prefix . $name;
76
77 // Field type specific handling
78 if ( 'file' === $field['type'] && 'attachment' === $field['options']['file_uploader'] ) {
79 $fields[] = $prefix . $name . '._src';
80 $fields[] = $prefix . $name . '._img';
81
82 $sizes = get_intermediate_image_sizes();
83 foreach ( $sizes as $size ) {
84 $fields[] = "{$prefix}{$name}._src.{$size}";
85 if ( 'multi' !== $field['options']['file_format_type'] ) {
86 $fields[] = "{$prefix}{$name}._src_relative.{$size}";
87 $fields[] = "{$prefix}{$name}._src_schemeless.{$size}";
88 }
89 $fields[] = "{$prefix}{$name}._img.{$size}";
90 }
91 } elseif ( ! empty( $field['table_info'] ) && ! empty( $field['table_info']['pod'] ) ) {
92 $linked_pod = $field['table_info']['pod']['name'];
93 if ( ! isset( $pods_visited[ $linked_pod ] ) || ! in_array( $name, $pods_visited[ $linked_pod ], true ) ) {
94 $pods_visited[ $linked_pod ][] = $name;
95 $recurse_queue[ $linked_pod ] = "{$prefix}{$name}.";
96 }
97 }//end if
98 }//end foreach
99 foreach ( $recurse_queue as $recurse_name => $recurse_prefix ) {
100 $fields = array_merge( $fields, pq_recurse_pod_fields( $recurse_name, $recurse_prefix, $pods_visited ) );
101 }
102
103 return $fields;
104 }
105
106