PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.5.4
JetFormBuilder — Dynamic Blocks Form Builder v3.5.4
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 / includes / blocks / render / media-field-render.php
jetformbuilder / includes / blocks / render Last commit date
action-button-render.php 2 years ago base.php 2 years ago calculated-field-render.php 2 years ago date-field-render.php 2 years ago datetime-field-render.php 2 years ago form-builder.php 1 year ago form-hidden-fields.php 1 year ago group-break-field-render.php 2 years ago heading-field-render.php 2 years ago media-field-render.php 1 year ago number-field-render.php 2 years ago range-field-render.php 2 years ago textarea-field-render.php 2 years ago time-field-render.php 2 years ago
media-field-render.php
134 lines
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5 use Jet_Form_Builder\Blocks\Types\Media_Field;
6 use Jet_Form_Builder\Classes\Attributes_Trait;
7 use Jet_Form_Builder\Classes\Tools;
8
9 // If this file is called directly, abort.
10 if ( ! defined( 'WPINC' ) ) {
11 die;
12 }
13
14 /**
15 * @property Media_Field $block_type
16 *
17 * Class Media_Field_Render
18 * @package Jet_Form_Builder\Blocks\Render
19 */
20 class Media_Field_Render extends Base {
21
22 protected $files;
23
24 public function get_name() {
25 return 'media-field';
26 }
27
28 protected function get_block_args(): array {
29 return array(
30 'max_files' => $this->block_type->get_max_files(),
31 'max_size' => $this->block_type->get_max_size(),
32 );
33 }
34
35 /**
36 * @return Attributes_Trait
37 */
38 public function files() {
39 if ( is_null( $this->files ) ) {
40 $this->files = new class() {
41 use Attributes_Trait;
42 };
43 }
44
45 return $this->files;
46 }
47
48 protected function render_previews(): string {
49 $files = $this->block_type->block_attrs['default'];
50
51 if ( empty( $files ) ) {
52 return '';
53 }
54
55 $preview = $this->get_preview_html();
56 $html = '';
57
58 foreach ( $files as $file ) {
59
60 if (
61 empty( $file['url'] ) &&
62 isset( $file['id'] ) &&
63 is_array( $file['id'] )
64 ) {
65 $file = $file['id'];
66 }
67 $file_url = isset( $file['url'] ) ? $file['url'] : wp_get_attachment_url( $file );
68 $updated = str_replace( '%file_url%', $file_url, $preview );
69 $updated = str_replace(
70 '%file_name%',
71 $this->get_name_from_file( $file['url'] ),
72 $updated
73 );
74
75 // preset field
76 $updated = str_replace( '<!-- field -->', $this->get_field_preset( $file ), $updated );
77
78 $image_ext = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'svg', 'webp' );
79 $img_ext_preg = '!\.(' . join( '|', $image_ext ) . ')$!i';
80
81 if ( preg_match( $img_ext_preg, $file['url'] ) ) {
82 $replace = sprintf( '<img src="%s" alt="" width="100px" height="100px">', $file['url'] );
83
84 $updated = str_replace( '<!-- preview -->', $replace, $updated );
85 }
86
87 $html .= $updated;
88 }
89
90 return $html;
91 }
92
93 private function get_name_from_file( string $file_url ): string {
94 $parts = explode( '/', $file_url );
95
96 return end( $parts );
97 }
98
99 protected function get_preview_html(): string {
100 ob_start();
101
102 require Tools::get_global_template( 'fields/image-preview.php' );
103
104 return ob_get_clean();
105 }
106
107 protected function get_field_preset( array $file ): string {
108 ob_start();
109
110 require Tools::get_global_template( 'fields/preset-media-field.php' );
111
112 return ob_get_clean();
113 }
114
115 public function render( $wp_block = null, $template = null ) {
116 $this->files()->add_attribute(
117 'data-args',
118 htmlspecialchars(
119 Tools::encode_json( $this->get_block_args() )
120 )
121 );
122
123 $field = parent::render( $wp_block, $template );
124
125 $template = sprintf(
126 '<template class="jet-form-builder__preview-template">%s</template>',
127 $this->get_preview_html()
128 );
129
130 return ( $template . $field );
131 }
132
133 }
134