PluginProbe ʕ •ᴥ•ʔ
Pods – Custom Content Types and Fields / 2.7.31.4
Pods – Custom Content Types and Fields v2.7.31.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 2 days ago element-pod_reference.php 2 days ago element-view_template.php 2 days ago functions-pod_reference.php 2 days ago functions-view_template.php 2 days ago
functions-pod_reference.php
104 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( $pod_name );
50
51 if ( empty( $pod ) || ! $pod->valid() ) {
52 return $fields;
53 }
54
55 $recurse_queue = array();
56
57 foreach ( $pod->pod_data['object_fields'] as $name => $field ) {
58 // Add WordPress object fields
59 $fields[] = $prefix . $name;
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 $pod_fields = $pod->fields();
71 foreach ( $pod_fields as $name => $field ) {
72 // Add base field name
73 $fields[] = $prefix . $name;
74
75 // Field type specific handling
76 if ( 'file' === $field['type'] && 'attachment' === $field['options']['file_uploader'] ) {
77 $fields[] = $prefix . $name . '._src';
78 $fields[] = $prefix . $name . '._img';
79
80 $sizes = get_intermediate_image_sizes();
81 foreach ( $sizes as $size ) {
82 $fields[] = "{$prefix}{$name}._src.{$size}";
83 if ( 'multi' !== $field['options']['file_format_type'] ) {
84 $fields[] = "{$prefix}{$name}._src_relative.{$size}";
85 $fields[] = "{$prefix}{$name}._src_schemeless.{$size}";
86 }
87 $fields[] = "{$prefix}{$name}._img.{$size}";
88 }
89 } elseif ( ! empty( $field['table_info'] ) && ! empty( $field['table_info']['pod'] ) ) {
90 $linked_pod = $field['table_info']['pod']['name'];
91 if ( ! isset( $pods_visited[ $linked_pod ] ) || ! in_array( $name, $pods_visited[ $linked_pod ], true ) ) {
92 $pods_visited[ $linked_pod ][] = $name;
93 $recurse_queue[ $linked_pod ] = "{$prefix}{$name}.";
94 }
95 }//end if
96 }//end foreach
97 foreach ( $recurse_queue as $recurse_name => $recurse_prefix ) {
98 $fields = array_merge( $fields, pq_recurse_pod_fields( $recurse_name, $recurse_prefix, $pods_visited ) );
99 }
100
101 return $fields;
102 }
103
104