PluginProbe ʕ •ᴥ•ʔ
Pods – Custom Content Types and Fields / 3.2.8.3
Pods – Custom Content Types and Fields v3.2.8.3
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 2 weeks ago element-pod_reference-content.php 2 weeks ago element-pod_reference.php 2 weeks ago element-view_template.php 2 weeks ago functions-pod_reference.php 2 weeks ago functions-view_template.php 2 weeks ago
functions-pod_reference.php
137 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_get_instance( $pod_name );
54
55 if ( empty( $pod ) || ! $pod->valid() ) {
56 return $fields;
57 }
58
59 $recurse_queue = array();
60
61 $image_sizes = get_intermediate_image_sizes();
62 $image_sizes[] = 'full';
63
64 $media_fields = [
65 'title',
66 'caption',
67 'description',
68 'alt_text',
69 'width',
70 'height',
71 'filesize',
72 'filename',
73 'extension',
74 'mime_type',
75 ];
76
77 $pod_fields = $pod->fields();
78
79 foreach ( $pod_fields as $name => $field ) {
80 // Field type specific handling
81 if ( 'file' === $field['type'] && 'attachment' === pods_v( 'file_uploader', $field ) ) {
82 // Add base field name
83 $fields[] = $prefix . $name;
84 $fields[] = $prefix . $name . '._src';
85 $fields[] = $prefix . $name . '._img';
86
87 foreach ( $media_fields as $media_field ) {
88 $fields[] = "{$prefix}{$name}._img.{$media_field}";
89 }
90
91 foreach ( $image_sizes as $image_size ) {
92 $fields[] = "{$prefix}{$name}._src.{$image_size}";
93
94 if ( 'multi' !== pods_v( 'file_format_type', $field ) ) {
95 $fields[] = "{$prefix}{$name}._src_relative.{$image_size}";
96 $fields[] = "{$prefix}{$name}._src_schemeless.{$image_size}";
97 }
98
99 $fields[] = "{$prefix}{$name}._img.{$image_size}";
100 }
101 } elseif ( ! empty( $field['table_info'] ) && ! empty( $field['table_info']['pod'] ) ) {
102 $linked_pod = $field['table_info']['pod']['name'];
103 if ( ! isset( $pods_visited[ $linked_pod ] ) || ! in_array( $name, $pods_visited[ $linked_pod ], true ) ) {
104 $pods_visited[ $linked_pod ][] = $name;
105 $recurse_queue[ $linked_pod ] = "{$prefix}{$name}.";
106 }
107 } else {
108 // Add base field name
109 $fields[] = $prefix . $name;
110 }
111 }//end foreach
112
113 sort($fields);
114
115 if ( post_type_supports( $pod_name, 'thumbnail' ) ) {
116 $fields[] = "{$prefix}post_thumbnail";
117 $fields[] = "{$prefix}post_thumbnail_url";
118
119 foreach ( $media_fields as $media_field ) {
120 $fields[] = "{$prefix}post_thumbnail.{$media_field}";
121 }
122
123 foreach ( $image_sizes as $image_size ) {
124 $fields[] = "{$prefix}post_thumbnail.{$image_size}";
125 $fields[] = "{$prefix}post_thumbnail_url.{$image_size}";
126 }
127 }
128
129 foreach ( $recurse_queue as $recurse_name => $recurse_prefix ) {
130 $fields[] = trim( $recurse_prefix, '.' );
131 $fields = array_merge( $fields, pq_recurse_pod_fields( $recurse_name, $recurse_prefix, $pods_visited ) );
132 }
133
134 return $fields;
135 }
136
137