PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 2.1.4
JetFormBuilder — Dynamic Blocks Form Builder v2.1.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 3 years ago base-select-radio-check.php 3 years ago base.php 3 years ago calculated-field-render.php 3 years ago checkbox-field-render.php 3 years ago date-field-render.php 3 years ago datetime-field-render.php 3 years ago form-builder.php 3 years ago form-hidden-fields.php 3 years ago group-break-field-render.php 3 years ago heading-field-render.php 3 years ago media-field-render.php 3 years ago number-field-render.php 3 years ago radio-field-render.php 3 years ago range-field-render.php 3 years ago repeater-field-render.php 3 years ago select-field-render.php 3 years ago text-field-render.php 3 years ago textarea-field-render.php 3 years ago time-field-render.php 3 years ago wysiwyg-field-render.php 3 years ago
media-field-render.php
124 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 $updated = str_replace( '%file_url%', $file['url'], $preview );
60 $updated = str_replace(
61 '%file_name%',
62 $this->get_name_from_file( $file['url'] ),
63 $updated );
64
65 // preset field
66 $updated = str_replace( '<!-- field -->', $this->get_field_preset( $file ), $updated );
67
68 $image_ext = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'svg', 'webp' );
69 $img_ext_preg = '!\.(' . join( '|', $image_ext ) . ')$!i';
70
71 if ( preg_match( $img_ext_preg, $file['url'] ) ) {
72 $replace = sprintf( '<img src="%s" alt="" width="100px" height="100px">', $file['url'] );
73
74 $updated = str_replace( '<!-- preview -->', $replace, $updated );
75 }
76
77 $html .= $updated;
78 }
79
80 return $html;
81 }
82
83 private function get_name_from_file( string $file_url ): string {
84 $parts = explode( '/', $file_url );
85
86 return end( $parts );
87 }
88
89 protected function get_preview_html(): string {
90 ob_start();
91
92 require Tools::get_global_template( 'fields/image-preview.php' );
93
94 return ob_get_clean();
95 }
96
97 protected function get_field_preset( array $file ): string {
98 ob_start();
99
100 require Tools::get_global_template( 'fields/preset-media-field.php' );
101
102 return ob_get_clean();
103 }
104
105 public function render( $wp_block = null, $template = null ) {
106 $this->files()->add_attribute(
107 'data-args',
108 htmlspecialchars(
109 Tools::encode_json( $this->get_block_args() )
110 )
111 );
112
113 $field = parent::render( $wp_block, $template );
114
115 $template = sprintf(
116 '<template class="jet-form-builder__preview-template">%s</template>',
117 $this->get_preview_html()
118 );
119
120 return ( $template . $field );
121 }
122
123 }
124