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