This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
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 ) { |
||
0 ignored issues
–
show
|
|||
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 | |||
156 | $errors = array(); |
||
157 | |||
158 | $check = $this->pre_save( $value, $id, $name, $options, $fields, $pod, $params ); |
||
159 | |||
160 | if ( is_array( $check ) ) { |
||
161 | $errors = $check; |
||
162 | } else { |
||
163 | if ( 0 < strlen( $value ) && '' === $check ) { |
||
164 | if ( 1 === (int) pods_v( 'required', $options ) ) { |
||
165 | $errors[] = __( 'This field is required.', 'pods' ); |
||
166 | } |
||
167 | } |
||
168 | } |
||
169 | |||
170 | if ( ! empty( $errors ) ) { |
||
171 | return $errors; |
||
0 ignored issues
–
show
The return type of
return $errors; (array ) is incompatible with the return type of the parent method PodsField::validate of type boolean .
If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design. Let’s take a look at an example: class Author {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
abstract class Post {
public function getAuthor() {
return 'Johannes';
}
}
class BlogPost extends Post {
public function getAuthor() {
return new Author('Johannes');
}
}
class ForumPost extends Post { /* ... */ }
function my_function(Post $post) {
echo strtoupper($post->getAuthor());
}
Our function ![]() |
|||
172 | } |
||
173 | |||
174 | return true; |
||
175 | } |
||
176 | |||
177 | /** |
||
178 | * {@inheritdoc} |
||
179 | */ |
||
180 | public function pre_save( $value, $id = null, $name = null, $options = null, $fields = null, $pod = null, $params = null ) { |
||
181 | |||
182 | $value = $this->strip_html( $value, $options ); |
||
183 | |||
184 | $length = (int) pods_v( static::$type . '_max_length', $options, 255 ); |
||
185 | |||
186 | if ( 0 < $length && $length < pods_mb_strlen( $value ) ) { |
||
187 | $value = pods_mb_substr( $value, 0, $length ); |
||
188 | } |
||
189 | |||
190 | return $value; |
||
191 | } |
||
192 | |||
193 | /** |
||
194 | * {@inheritdoc} |
||
195 | */ |
||
196 | public function ui( $id, $value, $name = null, $options = null, $fields = null, $pod = null ) { |
||
0 ignored issues
–
show
The return type could not be reliably inferred; please add a
@return annotation.
Our type inference engine in quite powerful, but sometimes the code does not
provide enough clues to go by. In these cases we request you to add a ![]() |
|||
197 | |||
198 | $value = $this->strip_html( $value, $options ); |
||
199 | |||
200 | if ( 0 === (int) pods_v( static::$type . '_allow_html', $options, 0, true ) ) { |
||
201 | $value = wp_trim_words( $value ); |
||
202 | } |
||
203 | |||
204 | return $value; |
||
205 | } |
||
206 | } |
||
207 |
Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a
@return
annotation as described here.