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 / classes / fields / text.php
pods / classes / fields Last commit date
avatar.php 2 days ago boolean.php 2 days ago code.php 2 days ago color.php 2 days ago comment.php 2 days ago currency.php 2 days ago date.php 2 days ago datetime.php 2 days ago email.php 2 days ago file.php 2 days ago html.php 2 days ago link.php 2 days ago number.php 2 days ago oembed.php 2 days ago paragraph.php 2 days ago password.php 2 days ago phone.php 2 days ago pick.php 2 days ago slug.php 2 days ago taxonomy.php 2 days ago text.php 2 days ago time.php 2 days ago website.php 2 days ago wysiwyg.php 2 days ago
text.php
212 lines
1 <?php
2
3 /**
4 * @package Pods\Fields
5 */
6 class PodsField_Text extends PodsField {
7
8 /**
9 * {@inheritdoc}
10 */
11 public static $group = 'Text';
12
13 /**
14 * {@inheritdoc}
15 */
16 public static $type = 'text';
17
18 /**
19 * {@inheritdoc}
20 */
21 public static $label = 'Plain Text';
22
23 /**
24 * {@inheritdoc}
25 */
26 public static $prepare = '%s';
27
28 /**
29 * {@inheritdoc}
30 */
31 public function setup() {
32
33 self::$label = __( 'Plain Text', 'pods' );
34 }
35
36 /**
37 * {@inheritdoc}
38 */
39 public function options() {
40
41 $options = array(
42 static::$type . '_repeatable' => array(
43 'label' => __( 'Repeatable Field', 'pods' ),
44 'default' => 0,
45 'type' => 'boolean',
46 'help' => __( 'Making a field repeatable will add controls next to the field which allows users to Add/Remove/Reorder additional values. These values are saved in the database as an array, so searching and filtering by them may require further adjustments".', 'pods' ),
47 'boolean_yes_label' => '',
48 'dependency' => true,
49 'developer_mode' => true,
50 ),
51 'output_options' => array(
52 'label' => __( 'Output Options', 'pods' ),
53 'group' => array(
54 static::$type . '_allow_shortcode' => array(
55 'label' => __( 'Allow Shortcodes?', 'pods' ),
56 'default' => 0,
57 'type' => 'boolean',
58 'dependency' => true,
59 ),
60 static::$type . '_allow_html' => array(
61 'label' => __( 'Allow HTML?', 'pods' ),
62 'default' => 0,
63 'type' => 'boolean',
64 'dependency' => true,
65 ),
66 ),
67 ),
68 static::$type . '_allowed_html_tags' => array(
69 'label' => __( 'Allowed HTML Tags', 'pods' ),
70 'depends-on' => array( static::$type . '_allow_html' => true ),
71 'default' => 'strong em a ul ol li b i',
72 'type' => 'text',
73 ),
74 static::$type . '_max_length' => array(
75 'label' => __( 'Maximum Length', 'pods' ),
76 'default' => 255,
77 'type' => 'number',
78 'help' => __( 'Set to -1 for no limit', 'pods' ),
79 ),
80 static::$type . '_placeholder' => array(
81 'label' => __( 'HTML Placeholder', 'pods' ),
82 'default' => '',
83 'type' => 'text',
84 'help' => array(
85 __( 'Placeholders can provide instructions or an example of the required data format for a field. Please note: It is not a replacement for labels or description text, and it is less accessible for people using screen readers.', 'pods' ),
86 'https://www.w3.org/WAI/tutorials/forms/instructions/#placeholder-text',
87 ),
88 ),
89 );
90
91 return $options;
92 }
93
94 /**
95 * {@inheritdoc}
96 */
97 public function schema( $options = null ) {
98
99 $length = (int) pods_v( static::$type . '_max_length', $options, 255 );
100
101 $schema = 'VARCHAR(' . $length . ')';
102
103 if ( 255 < $length || $length < 1 ) {
104 $schema = 'LONGTEXT';
105 }
106
107 return $schema;
108 }
109
110 /**
111 * {@inheritdoc}
112 */
113 public function display( $value = null, $name = null, $options = null, $pod = null, $id = null ) {
114
115 $value = $this->strip_html( $value, $options );
116
117 if ( 1 === (int) pods_v( static::$type . '_allow_shortcode', $options ) ) {
118 $value = do_shortcode( $value );
119 }
120
121 return $value;
122 }
123
124 /**
125 * {@inheritdoc}
126 */
127 public function input( $name, $value = null, $options = null, $pod = null, $id = null ) {
128
129 $options = (array) $options;
130 $form_field_type = PodsForm::$field_type;
131
132 if ( is_array( $value ) ) {
133 $value = implode( ' ', $value );
134 }
135
136 $is_read_only = (boolean) pods_v( 'read_only', $options, false );
137
138 if ( isset( $options['name'] ) && false === PodsForm::permission( static::$type, $options['name'], $options, null, $pod, $id ) ) {
139 if ( $is_read_only ) {
140 $options['readonly'] = true;
141 } else {
142 return;
143 }
144 } elseif ( ! pods_has_permissions( $options ) && $is_read_only ) {
145 $options['readonly'] = true;
146 }
147
148 pods_view( PODS_DIR . 'ui/fields/text.php', compact( array_keys( get_defined_vars() ) ) );
149 }
150
151 /**
152 * {@inheritdoc}
153 */
154 public function validate( $value, $name = null, $options = null, $fields = null, $pod = null, $id = null, $params = null ) {
155 $validate = parent::validate( $value, $name, $options, $fields, $pod, $id, $params );
156
157 $errors = array();
158
159 if ( is_array( $validate ) ) {
160 $errors = $validate;
161 }
162
163 $check = $this->pre_save( $value, $id, $name, $options, $fields, $pod, $params );
164
165 if ( is_array( $check ) ) {
166 $errors = $check;
167 } else {
168 if ( '' !== $value && '' === $check ) {
169 if ( $this->is_required( $options ) ) {
170 $errors[] = __( 'This field is required.', 'pods' );
171 }
172 }
173 }
174
175 if ( ! empty( $errors ) ) {
176 return $errors;
177 }
178
179 return $validate;
180 }
181
182 /**
183 * {@inheritdoc}
184 */
185 public function pre_save( $value, $id = null, $name = null, $options = null, $fields = null, $pod = null, $params = null ) {
186
187 $value = $this->strip_html( $value, $options );
188
189 $length = (int) pods_v( static::$type . '_max_length', $options, 255 );
190
191 if ( 0 < $length && $length < pods_mb_strlen( $value ) ) {
192 $value = pods_mb_substr( $value, 0, $length );
193 }
194
195 return $value;
196 }
197
198 /**
199 * {@inheritdoc}
200 */
201 public function ui( $id, $value, $name = null, $options = null, $fields = null, $pod = null ) {
202
203 $value = $this->strip_html( $value, $options );
204
205 if ( 0 === (int) pods_v( static::$type . '_allow_html', $options, 0, true ) ) {
206 $value = wp_trim_words( $value );
207 }
208
209 return $value;
210 }
211 }
212