PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.5.6.3
JetFormBuilder — Dynamic Blocks Form Builder v3.5.6.3
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / modules / actions-v2 / insert-post / properties / post-thumbnail-property.php
jetformbuilder / modules / actions-v2 / insert-post / properties Last commit date
abstract-post-modifier.php 7 months ago base-post-action.php 1 year ago insert-action.php 1 year ago post-author-property.php 1 year ago post-comments-property.php 1 year ago post-content-property.php 1 year ago post-date-gmt-property.php 1 year ago post-date-property.php 1 year ago post-excerpt-property.php 1 year ago post-id-property.php 1 year ago post-meta-property.php 7 months ago post-modifier.php 7 months ago post-parent-property.php 1 year ago post-status-property.php 1 year ago post-terms-property.php 1 year ago post-thumbnail-property.php 8 months ago post-title-property.php 1 year ago post-type-property.php 1 year ago trash-action.php 1 year ago update-action.php 1 year ago
post-thumbnail-property.php
103 lines
1 <?php
2
3
4 namespace JFB_Modules\Actions_V2\Insert_Post\Properties;
5
6 use Jet_Form_Builder\Actions\Methods\Abstract_Modifier;
7 use Jet_Form_Builder\Actions\Methods\Base_Object_Property;
8
9 // If this file is called directly, abort.
10 if ( ! defined( 'WPINC' ) ) {
11 die;
12 }
13
14 class Post_Thumbnail_Property extends Base_Object_Property {
15
16 public function get_id(): string {
17 return '_thumbnail_id';
18 }
19
20 public function get_label(): string {
21 return __( 'Post Thumbnail', 'jet-form-builder' );
22 }
23
24 public function get_help(): string {
25 return __( 'Accepts an attachment ID or array of IDs, a URL, an array of attachment IDs with their URLs.', 'jet-form-builder' );
26 }
27
28 public function do_before( string $key, $value, Abstract_Modifier $modifier ) {
29 parent::do_before( $key, $value, $modifier );
30
31 $result = array();
32
33 // Handle different input formats
34 if ( is_string( $this->value ) ) {
35 $values = array_filter( array_map( 'trim', explode( ',', $this->value ) ) );
36 foreach ( $values as $value ) {
37 if ( is_numeric( $value ) && $this->is_image_attachment( $value ) ) {
38 $result[] = $value;
39 }
40 if ( is_string( $value ) && $this->is_image_by_url( $value ) ) {
41 $result[] = attachment_url_to_postid( $value );
42 }
43 }
44 } elseif ( is_array( $this->value ) ) {
45 foreach ( $this->value as $item ) {
46 if ( is_numeric( $item ) ) {
47 // Array of IDs: [123, 456, 789]
48 if ( $this->is_image_attachment( $item ) ) {
49 $result[] = $item;
50 }
51 } elseif ( is_array( $item ) && isset( $item['id'] ) ) {
52 $id = $item['id'];
53
54 if ( is_numeric( $id ) ) {
55 if ( $this->is_image_attachment( $id ) ) {
56 $result[] = $id;
57 } elseif ( isset( $item['url'] ) && $this->is_image_by_url( $item['url'] ) ) {
58 $result[] = $id;
59 }
60 }
61 } elseif ( is_string( $item ) && $this->is_image_by_url( $item ) ) {
62 $result[] = attachment_url_to_postid( $item );
63 }
64 }
65 }
66
67 $value_ids = implode( ',', $result );
68
69 $this->value = $value_ids;
70
71 if ( empty( $this->value ) ) {
72 $this->value = - 1;
73 }
74 }
75
76 /**
77 * Check if attachment is an image by ID
78 *
79 * @param int $attachment_id
80 * @return bool
81 */
82 private function is_image_attachment( $attachment_id ) {
83 $attachment = get_post( $attachment_id );
84 if ( ! $attachment || 'attachment' !== $attachment->post_type ) {
85 return false;
86 }
87
88 $mime_type = get_post_mime_type( $attachment_id );
89 return 0 === strpos( $mime_type, 'image/' );
90 }
91
92 /**
93 * Check if file is an image by URL
94 *
95 * @param string $url
96 * @return bool
97 */
98 private function is_image_by_url( $url ) {
99 $filetype = wp_check_filetype( $url );
100 return $filetype['type'] && 0 === strpos( $filetype['type'], 'image/' );
101 }
102 }
103