class-ld-settings-fields-media-upload.php
4.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/**
* LearnDash Media Upload Settings Field.
*
* @since 3.0.0
* @package LearnDash\Settings\Field
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ( class_exists( 'LearnDash_Settings_Fields' ) ) && ( ! class_exists( 'LearnDash_Settings_Fields_Media_Upload' ) ) ) {
/**
* Class LearnDash Media Upload Settings Field.
*
* @since 3.0.0
* @uses LearnDash_Settings_Fields
*/
class LearnDash_Settings_Fields_Media_Upload extends LearnDash_Settings_Fields {
/**
* Public constructor for class
*
* @since 3.0.0
*/
public function __construct() {
$this->field_type = 'media-upload';
parent::__construct();
}
/**
* Function to crete the settings field.
*
* @since 3.0.0
*
* @param array $field_args An array of field arguments used to process the output.
* @return void
*/
public function create_section_field( $field_args = array() ) {
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$field_args = apply_filters( 'learndash_settings_field', $field_args );
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_before', '', $field_args );
if ( ( isset( $field_args['desc'] ) ) && ( ! empty( $field_args['desc'] ) ) ) {
$html .= $field_args['desc'];
}
$html .= '<fieldset>';
$html .= $this->get_field_legend( $field_args );
$html .= '<div class="learndash-section-field-media-upload_wrapper" ';
$html .= ' id="' . esc_attr( $this->get_field_attribute_id( $field_args, false ) ) . '_wrapper" ';
$html .= '>';
$default_img_url = LEARNDASH_LMS_PLUGIN_URL . 'assets/images/nologo.jpg'; // cspell:disable-line.
$image_id = 0;
$image_url = $default_img_url;
if ( isset( $field_args['value'] ) ) {
$image_id = absint( $field_args['value'] );
}
if ( ! empty( $image_id ) ) {
$image_url = wp_get_attachment_url( $image_id );
if ( empty( $image_url ) ) {
$image_id = 0;
$image_url = $default_img_url;
}
}
$html .= '<div class="image-preview-wrapper">';
$html .= '<img class="image-preview" src="' . esc_url( $image_url ) . '" style="max-width: 100%; max-height: 200px; border: 1px dashed #ccc;" data-default="' . esc_attr( $default_img_url ) . '"/>';
$html .= '</div>';
$html .= '<input type="button" class="button image-remove-button" title="' . esc_html__( 'remove image', 'learndash' ) . '" value="' . esc_html_x( 'X', 'placeholder: clear image', 'learndash' ) . '" />';
$html .= '<input type="button" class="button image-upload-button" title="' . esc_html__( 'Select/upload image', 'learndash' ) . '" value="' . esc_html__( 'Select image', 'learndash' ) . '" />';
$html .= '<input ';
$html .= ' type="hidden" ';
$html .= $this->get_field_attribute_name( $field_args );
$html .= $this->get_field_attribute_id( $field_args );
$html .= $this->get_field_attribute_class( $field_args );
$html .= $this->get_field_attribute_placeholder( $field_args );
$html .= $this->get_field_attribute_misc( $field_args );
$html .= $this->get_field_attribute_required( $field_args );
if ( ( isset( $image_id ) ) && ( ! empty( $image_id ) ) ) {
$html .= ' value="' . esc_attr( $image_id ) . '" ';
} else {
$html .= ' value="" ';
}
$html .= ' />';
$html .= '</div>';
$html .= '</fieldset>';
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_after', $html, $field_args );
echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Need to output HTML
}
/**
* Validate field
*
* @since 3.0.0
*
* @param mixed $val Value to validate.
* @param string $key Key of value being validated.
* @param array $args Array of field args.
*
* @return integer value.
*/
public function validate_section_field( $val, $key, $args = array() ) {
if ( isset( $args['field']['options'][ $val ] ) ) {
return $val;
} elseif ( isset( $args['field']['default'] ) ) {
return $args['field']['default'];
} else {
return '';
}
}
}
}
add_action(
'learndash_settings_sections_fields_init',
function() {
LearnDash_Settings_Fields_Media_Upload::add_field_instance( 'media-upload' );
}
);