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