PluginProbe ʕ •ᴥ•ʔ
Pods – Custom Content Types and Fields / 3.3.9.2
Pods – Custom Content Types and Fields v3.3.9.2
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 1 week ago element-pod_reference-content.php 1 week ago element-pod_reference.php 1 week ago element-view_template.php 1 week ago functions-pod_reference.php 1 week ago functions-view_template.php 1 week ago
functions-pod_reference.php
150 lines
1 <?php
2
3 // Don't load directly.
4 if ( ! defined( 'ABSPATH' ) ) {
5 die( '-1' );
6 }
7
8 add_action( 'wp_ajax_pq_loadpod', 'pods_ajax_pq_loadpod' );
9
10 /**
11 * @param bool|string $podname
12 */
13 function pods_ajax_pq_loadpod() {
14 // This is the AJAX entry point; pq_loadpod() is also called server-side (see element-pod_reference-content.php).
15 check_ajax_referer( 'pods_pq_loadpod', 'nonce' );
16
17 pq_loadpod();
18 }
19
20 /**
21 * @param bool|string $podname
22 *
23 * @return array
24 */
25 // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
26 function pq_loadpod( $podname = false ) {
27
28 if ( ! pods_is_admin() ) {
29 return pods_error( __( 'Unauthorized request', 'pods' ) );
30 }
31 if ( ! empty( $_POST['pod_reference']['pod'] ) ) {
32 $podname = $_POST['pod_reference']['pod'];
33 }
34 if ( ! empty( $_POST['pod'] ) ) {
35 $podname = $_POST['pod'];
36 }
37 $fields = [ __( 'No reference Pod selected', 'pods' ) ];
38
39 if ( ! empty( $podname ) ) {
40 $fields = pq_recurse_pod_fields( $podname );
41 }
42 if ( ! empty( $_POST['pod_reference']['pod'] ) || ! empty( $_POST['pod'] ) ) {
43 header( 'Content-Type:application/json' );
44 echo json_encode( $fields );
45 die;
46 }
47
48 return $fields;
49 }
50
51 /**
52 * @param $pod_name
53 * @param string $prefix
54 * @param array $pods_visited
55 *
56 * @return array
57 */
58 // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
59 function pq_recurse_pod_fields( $pod_name, $prefix = '', &$pods_visited = [] ) {
60
61 $fields = [];
62 if ( empty( $pod_name ) ) {
63 return $fields;
64 }
65
66 $pod = pods_get_instance( $pod_name );
67
68 if ( empty( $pod ) || ! $pod->valid() ) {
69 return $fields;
70 }
71
72 $recurse_queue = [];
73
74 $image_sizes = get_intermediate_image_sizes();
75 $image_sizes[] = 'full';
76
77 $media_fields = [
78 'title',
79 'caption',
80 'description',
81 'alt_text',
82 'width',
83 'height',
84 'filesize',
85 'filename',
86 'extension',
87 'mime_type',
88 ];
89
90 $pod_fields = $pod->fields();
91
92 foreach ( $pod_fields as $name => $field ) {
93 // Field type specific handling
94 if ( 'file' === $field['type'] && 'attachment' === pods_v( 'file_uploader', $field ) ) {
95 // Add base field name
96 $fields[] = $prefix . $name;
97 $fields[] = $prefix . $name . '._src';
98 $fields[] = $prefix . $name . '._img';
99
100 foreach ( $media_fields as $media_field ) {
101 $fields[] = "{$prefix}{$name}._img.{$media_field}";
102 }
103
104 foreach ( $image_sizes as $image_size ) {
105 $fields[] = "{$prefix}{$name}._src.{$image_size}";
106
107 if ( 'multi' !== pods_v( 'file_format_type', $field ) ) {
108 $fields[] = "{$prefix}{$name}._src_relative.{$image_size}";
109 $fields[] = "{$prefix}{$name}._src_schemeless.{$image_size}";
110 }
111
112 $fields[] = "{$prefix}{$name}._img.{$image_size}";
113 }
114 } elseif ( ! empty( $field['table_info'] ) && ! empty( $field['table_info']['pod'] ) ) {
115 $linked_pod = $field['table_info']['pod']['name'];
116 if ( ! isset( $pods_visited[ $linked_pod ] ) || ! in_array( $name, $pods_visited[ $linked_pod ], true ) ) {
117 $pods_visited[ $linked_pod ][] = $name;
118 $recurse_queue[ $linked_pod ] = "{$prefix}{$name}.";
119 }
120 } else {
121 // Add base field name
122 $fields[] = $prefix . $name;
123 }
124 }//end foreach
125
126 sort( $fields );
127
128 if ( post_type_supports( $pod_name, 'thumbnail' ) ) {
129 $fields[] = "{$prefix}post_thumbnail";
130 $fields[] = "{$prefix}post_thumbnail_url";
131
132 foreach ( $media_fields as $media_field ) {
133 $fields[] = "{$prefix}post_thumbnail.{$media_field}";
134 }
135
136 foreach ( $image_sizes as $image_size ) {
137 $fields[] = "{$prefix}post_thumbnail.{$image_size}";
138 $fields[] = "{$prefix}post_thumbnail_url.{$image_size}";
139 }
140 }
141
142 foreach ( $recurse_queue as $recurse_name => $recurse_prefix ) {
143 $fields[] = trim( $recurse_prefix, '.' );
144 $fields = array_merge( $fields, pq_recurse_pod_fields( $recurse_name, $recurse_prefix, $pods_visited ) );
145 }
146
147 return $fields;
148 }
149
150