Completed
Push — master ( 92cdcd...79386d )
by Zack
20:40 queued 10:41
created

GravityView_Render_Settings   B

Complexity

Total Complexity 51

Size/Duplication

Total Lines 491
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 491
rs 8.3206
wmc 51
lcom 1
cbo 2

10 Methods

Rating   Name   Duplication   Size   Complexity  
B get_default_field_options() 0 76 4
B get_cap_choices() 0 29 2
C render_field_options() 0 63 8
B render_field_option() 0 42 5
C render_setting_row() 0 61 11
B load_type_class() 0 32 5
A render_checkbox_option() 0 9 1
C render_text_option() 0 22 7
B render_textarea_option() 0 21 6
A render_select_option() 0 12 2

How to fix   Complexity   

Complex Class

Complex classes like GravityView_Render_Settings often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use GravityView_Render_Settings, and based on these observations, apply Extract Interface, too.

1
<?php
2
/**
3
 * Renders field/widget options and view settings
4
 *
5
 * @package   GravityView
6
 * @license   GPL2+
7
 * @author    Katz Web Services, Inc.
8
 * @link      http://gravityview.co
9
 * @copyright Copyright 2014, Katz Web Services, Inc.
10
 *
11
 * @since 1.2
12
 */
13
14
class GravityView_Render_Settings {
15
16
	/**
17
	 * Get the default options for a standard field.
18
	 *
19
	 * @param  string      $field_type  Type of field options to render (`field` or `widget`)
20
	 * @param  string      $template_id Table slug
21
	 * @param  float       $field_id    GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
22
	 * @param  string      $context     What context are we in? Example: `single` or `directory`
23
	 * @param  string      $input_type  (textarea, list, select, etc.)
24
	 * @return array       Array of field options with `label`, `value`, `type`, `default` keys
25
	 */
26
	public static function get_default_field_options( $field_type, $template_id, $field_id, $context, $input_type ) {
27
28
		$field_options = array();
29
30
		if( 'field' === $field_type ) {
31
32
			// Default options - fields
33
			$field_options = array(
34
				'show_label' => array(
35
					'type' => 'checkbox',
36
					'label' => __( 'Show Label', 'gravityview' ),
37
					'value' => true,
38
				),
39
				'custom_label' => array(
40
					'type' => 'text',
41
					'label' => __( 'Custom Label:', 'gravityview' ),
42
					'value' => '',
43
					'merge_tags' => true,
44
				),
45
				'custom_class' => array(
46
					'type' => 'text',
47
					'label' => __( 'Custom CSS Class:', 'gravityview' ),
48
					'desc' => __( 'This class will be added to the field container', 'gravityview'),
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
49
					'value' => '',
50
					'merge_tags' => true,
51
					'tooltip' => 'gv_css_merge_tags',
52
				),
53
				'only_loggedin' => array(
54
					'type' => 'checkbox',
55
					'label' => __( 'Make visible only to logged-in users?', 'gravityview' ),
56
					'value' => ''
0 ignored issues
show
introduced by
Each line in an array declaration must end in a comma
Loading history...
57
				),
58
				'only_loggedin_cap' => array(
59
					'type' => 'select',
60
					'label' => __( 'Make visible for:', 'gravityview' ),
61
					'options' => self::get_cap_choices( $template_id, $field_id, $context, $input_type ),
62
					'class' => 'widefat',
63
					'value' => 'read',
64
				),
65
			);
66
67
			// Match Table as well as DataTables
68
			if( preg_match( '/table/ism', $template_id ) && 'directory' === $context ) {
69
				$field_options['width'] = array(
70
					'type' => 'number',
71
					'label' => __('Percent Width', 'gravityview'),
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
72
					'desc' => __( 'Leave blank for column width to be based on the field content.', 'gravityview'),
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
73
					'class' => 'code widefat',
74
					'value' => '',
75
				);
76
			}
1 ignored issue
show
introduced by
Blank line found after control structure
Loading history...
77
78
		}
79
80
		/**
81
		 * @filter `gravityview_template_{$field_type}_options` Filter the field options by field type. Filter names: `gravityview_template_field_options` and `gravityview_template_widget_options`
82
		 * @param[in,out] array    Array of field options with `label`, `value`, `type`, `default` keys
83
		 * @param[in]  string      $template_id Table slug
84
		 * @param[in]  float       $field_id    GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
85
		 * @param[in]  string      $context     What context are we in? Example: `single` or `directory`
86
		 * @param[in]  string      $input_type  (textarea, list, select, etc.)
87
		 */
88
		$field_options = apply_filters( "gravityview_template_{$field_type}_options", $field_options, $template_id, $field_id, $context, $input_type );
89
90
		/**
91
		 * @filter `gravityview_template_{$input_type}_options` Filter the field options by input type (`$input_type` examples: `textarea`, `list`, `select`, etc.)
92
		 * @param[in,out] array    Array of field options with `label`, `value`, `type`, `default` keys
93
		 * @param[in]  string      $template_id Table slug
94
		 * @param[in]  float       $field_id    GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
95
		 * @param[in]  string      $context     What context are we in? Example: `single` or `directory`
96
		 * @param[in]  string      $input_type  (textarea, list, select, etc.)
97
		 */
98
		$field_options = apply_filters( "gravityview_template_{$input_type}_options", $field_options, $template_id, $field_id, $context, $input_type );
99
100
		return $field_options;
101
	}
102
103
	/**
104
	 * Get capabilities options for GravityView
105
	 *
106
	 * Parameters are only to pass to the filter.
107
	 *
108
	 * @param  string $template_id Optional. View slug
109
	 * @param  string $field_id    Optional. GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
110
	 * @param  string $context     Optional. What context are we in? Example: `single` or `directory`
111
	 * @param  string $input_type  Optional. (textarea, list, select, etc.)
112
	 * @return array Associative array, with the key being the capability and the value being the label shown.
113
	 */
114
	static public function get_cap_choices( $template_id = '', $field_id = '', $context = '', $input_type = '' ) {
0 ignored issues
show
Coding Style introduced by
As per PSR2, the static declaration should come after the visibility declaration.
Loading history...
115
116
		$select_cap_choices = array(
117
			'read' => __( 'Any Logged-In User', 'gravityview' ),
118
			'publish_posts' => __( 'Author Or Higher', 'gravityview' ),
119
			'gravityforms_view_entries' => __( 'Can View Gravity Forms Entries', 'gravityview' ),
120
			'delete_others_posts' => __( 'Editor Or Higher', 'gravityview' ),
121
			'gravityforms_edit_entries' => __( 'Can Edit Gravity Forms Entries', 'gravityview' ),
122
			'manage_options' => __( 'Administrator', 'gravityview' ),
123
		);
124
125
		if( is_multisite() ) {
126
			$select_cap_choices['manage_network'] = __('Multisite Super Admin', 'gravityview' );
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
127
		}
128
129
		/**
130
		 * @filter `gravityview_field_visibility_caps` Modify the capabilities shown in the field dropdown
131
		 * @see http://docs.gravityview.co/article/96-how-to-modify-capabilities-shown-in-the-field-only-visible-to-dropdown
132
		 * @since  1.0.1
133
		 * @param  array $select_cap_choices Associative rray of role slugs with labels ( `manage_options` => `Administrator` )
134
		 * @param  string $template_id Optional. View slug
135
		 * @param  string $field_id    Optional. GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
136
		 * @param  string $context     Optional. What context are we in? Example: `single` or `directory`
137
		 * @param  string $input_type  Optional. (textarea, list, select, etc.)
138
		 */
139
		$select_cap_choices = apply_filters('gravityview_field_visibility_caps', $select_cap_choices, $template_id, $field_id, $context, $input_type );
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
140
141
		return $select_cap_choices;
142
	}
143
144
145
	/**
146
	 * Render Field Options html (shown through a dialog box)
147
	 *
148
	 * @see GravityView_Ajax::get_field_options
149
	 * @see GravityView_Admin_Views::render_active_areas
150
	 *
151
	 * @access public
152
	 * @param string $field_type field / widget
153
	 * @param string $template_id
154
	 * @param string $field_id
155
	 * @param string $field_label
156
	 * @param string $area
157
	 * @param string $uniqid (default: '')
158
	 * @param string $current (default: '')
159
	 * @param string $context (default: 'single')
160
	 * @param array $item Field or widget array that's being rendered
161
	 *
162
	 * @return string HTML of dialog box
163
	 */
164
	public static function render_field_options( $field_type, $template_id, $field_id, $field_label, $area, $input_type = NULL, $uniqid = '', $current = '', $context = 'single', $item = array() ) {
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
165
166
		if( empty( $uniqid ) ) {
167
			//generate a unique field id
168
			$uniqid = uniqid('', false);
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
169
		}
170
171
		// get field/widget options
172
		$options = self::get_default_field_options( $field_type, $template_id, $field_id, $context, $input_type );
173
174
		// two different post arrays, depending of the field type
175
		$name_prefix = $field_type .'s' .'['. $area .']['. $uniqid .']';
176
177
		// build output
178
		$output = '';
179
		$output .= '<input type="hidden" class="field-key" name="'. $name_prefix .'[id]" value="'. esc_attr( $field_id ) .'">';
180
		$output .= '<input type="hidden" class="field-label" name="'. $name_prefix .'[label]" value="'. esc_attr( $field_label ) .'">';
181
182
		// If there are no options, return what we got.
183
		if(empty($options)) {
0 ignored issues
show
introduced by
No space after opening parenthesis is prohibited
Loading history...
introduced by
No space before closing parenthesis is prohibited
Loading history...
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
184
185
			// This is here for checking if the output is empty in render_label()
186
			$output .= '<!-- No Options -->';
187
188
			return $output;
189
		}
190
191
		$output .= '<div class="gv-dialog-options" title="'. esc_attr( sprintf( __( 'Options: %s', 'gravityview' ) , strip_tags( html_entity_decode( $field_label ) ) ) ) .'">';
192
193
		/**
194
		 * @since 1.8
195
		 */
196
		if( !empty( $item['subtitle'] ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
197
			$output .= '<div class="subtitle">' . $item['subtitle'] . '</div>';
198
		}
199
200
		foreach( $options as $key => $option ) {
201
202
			$value = isset( $current[ $key ] ) ? $current[ $key ] : NULL;
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
203
204
			$field_output = self::render_field_option( $name_prefix . '['. $key .']' , $option, $value);
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
205
206
			// The setting is empty
207
			if( empty( $field_output ) ) {
208
				continue;
209
			}
210
211
			switch( $option['type'] ) {
212
				// Hide hidden fields
213
				case 'hidden':
214
					$output .= '<div class="gv-setting-container gv-setting-container-'. esc_attr( $key ) . ' screen-reader-text">'. $field_output . '</div>';
215
					break;
216
				default:
217
					$output .= '<div class="gv-setting-container gv-setting-container-'. esc_attr( $key ) . '">'. $field_output .'</div>';
218
			}
219
		}
220
221
		// close options window
222
		$output .= '</div>';
223
224
		return $output;
225
226
	}
227
228
229
230
	/**
231
	 * Handle rendering a field option form element
232
	 *
233
	 * @param  string     $name    Input `name` attribute
234
	 * @param  array      $option  Associative array of options. See the $defaults variable for available keys.
235
	 * @param  mixed      $curr_value Current value of option
236
	 * @return string     HTML output of option
237
	 */
238
	public static function render_field_option( $name = '', $option, $curr_value = NULL ) {
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
239
240
		$output = '';
241
242
		/**
243
		 * @deprecated setting index 'default' was replaced by 'value'
244
		 * @see GravityView_FieldType::get_field_defaults
245
		 */
246
		if( !empty( $option['default'] ) && empty( $option['value'] ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
247
			$option['value'] = $option['default'];
248
			_deprecated_function( 'GravityView_FieldType::get_field_defaults', '1.1.7', '[value] instead of [default] when defining the setting '. $name .' details' );
249
		}
250
251
		// prepare to render option field type
252
		if( isset( $option['type'] ) ) {
253
254
			$type_class = self::load_type_class( $option );
255
256
			if( class_exists( $type_class ) ) {
257
258
				/** @var GravityView_FieldType $render_type */
259
				$render_type = new $type_class( $name, $option, $curr_value );
260
261
				ob_start();
262
263
				$render_type->render_option();
264
265
				$output = ob_get_clean();
266
267
				/**
268
				 * @filter `gravityview/option/output/{option_type}` Modify the output for a GravityView setting.\n
269
				 * `$option_type` is the type of setting (`radio`, `text`, etc.)
270
				 * @param[in,out] string $output field class name
271
				 * @param[in] array $option  option field data
272
				 */
273
				$output = apply_filters( "gravityview/option/output/{$option['type']}" , $output, $option );
274
			}
1 ignored issue
show
introduced by
Blank line found after control structure
Loading history...
275
276
		} // isset option[type]
0 ignored issues
show
Unused Code Comprehensibility introduced by
43% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
277
278
		return $output;
279
	}
280
281
282
283
284
285
286
	/**
287
	 * Output a table row for view settings
288
	 * @param  string $key              The key of the input
289
	 * @param  array  $current_settings Associative array of current settings to use as input values, if set. If not set, the defaults are used.
290
	 * @param  string $override_input   [description]
291
	 * @param  string $name             [description]
292
	 * @param  string $id               [description]
293
	 * @return void                   [description]
294
	 */
295
	public static function render_setting_row( $key = '', $current_settings = array(), $override_input = null, $name = 'template_settings[%s]', $id = 'gravityview_se_%s' ) {
296
297
		$setting = GravityView_View_Data::get_default_arg( $key, true );
298
299
		// If the key doesn't exist, there's something wrong.
300
		if( empty( $setting ) ) { return; }
301
302
		/**
303
		 * @deprecated setting index 'name' was replaced by 'label'
304
		 * @see GravityView_FieldType::get_field_defaults
305
		 */
306
		if( isset( $setting['name'] ) && empty( $setting['label'] ) ) {
307
			$setting['label'] = $setting['name'];
308
			_deprecated_function( 'GravityView_FieldType::get_field_defaults', '1.1.7', '[label] instead of [name] when defining the setting '. $key .' details' );
309
		}
310
311
		$name = esc_attr( sprintf( $name, $key ) );
312
		$setting['id'] = esc_attr( sprintf( $id, $key ) );
313
		$setting['tooltip'] = 'gv_' . $key;
314
315
		// Use default if current setting isn't set.
316
		$curr_value = isset( $current_settings[ $key ] ) ? $current_settings[ $key ] : $setting['value'];
317
318
		// default setting type = text
319
		$setting['type'] = empty( $setting['type'] ) ? 'text' : $setting['type'];
320
321
		// merge tags
322
		if( !isset( $setting['merge_tags'] ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
323
			if( $setting['type'] === 'text' ) {
0 ignored issues
show
introduced by
Found "=== '". Use Yoda Condition checks, you must
Loading history...
324
				$setting['merge_tags'] = true;
325
			} else {
326
				$setting['merge_tags'] = false;
327
			}
328
		}
329
330
		$output = '';
331
332
		// render the setting
333
		$type_class = self::load_type_class( $setting );
334
		if( class_exists( $type_class ) ) {
335
			/** @var GravityView_FieldType $render_type */
336
			$render_type = new $type_class( $name, $setting, $curr_value );
337
			ob_start();
338
			$render_type->render_setting( $override_input );
339
			$output = ob_get_clean();
340
		}
341
342
		// Check if setting is specific for a template
343
		if( !empty( $setting['show_in_template'] ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
344
			if( !is_array( $setting['show_in_template'] ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
345
				$setting['show_in_template'] = array( $setting['show_in_template'] );
346
			}
347
			$show_if = ' data-show-if="'. implode( ' ', $setting['show_in_template'] ).'"';
348
		} else {
349
			$show_if = '';
350
		}
351
352
		// output
353
		echo '<tr valign="top" '. $show_if .'>' . $output . '</tr>';
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$show_if'
Loading history...
introduced by
Expected next thing to be a escaping function, not '$output'
Loading history...
354
355
	}
356
357
358
	/**
359
	 * Given a field type calculates the php class. If not found try to load it.
360
	 * @param  array $field
361
	 * @return string type class name
362
	 */
363
	public static function load_type_class( $field = NULL ) {
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
364
365
		if( empty( $field['type'] ) ) {
366
			return NULL;
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
367
		}
368
369
		/**
370
		 * @filter `gravityview/setting/class/{field_type}`
371
		 * @param string $class_suffix  field class suffix; `GravityView_FieldType_{$class_suffix}`
372
		 * @param array $field   field data
373
		 */
374
		$type_class = apply_filters( "gravityview/setting/class/{$field['type']}", 'GravityView_FieldType_' . $field['type'], $field );
375
376
		if( !class_exists( $type_class ) ) {
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
377
378
			/**
379
			 * @filter `gravityview/setting/class_file/{field_type}`
380
			 * @param string  $field_type_include_path field class file path
381
			 * @param array $field  field data
382
			 */
383
			$class_file = apply_filters( "gravityview/setting/class_file/{$field['type']}", GRAVITYVIEW_DIR . "includes/admin/field-types/type_{$field['type']}.php", $field );
384
385
			if( $class_file ) {
386
				if( file_exists( $class_file ) ) {
387
					require_once( $class_file );
388
				}
389
			}
1 ignored issue
show
introduced by
Blank line found after control structure
Loading history...
390
391
		}
392
393
		return $type_class;
394
	}
395
396
397
398
399
400
	/**
401
	 * @deprecated 1.2
402
	 * Render the HTML for a checkbox input to be used on the field & widgets options
403
	 * @param  string $name , name attribute
404
	 * @param  string $current current value
405
	 * @return string         html tags
406
	 */
407
	public static function render_checkbox_option( $name = '', $id = '', $current = '' ) {
408
409
		_deprecated_function( __METHOD__, '1.2', 'GravityView_FieldType_checkbox::render_input' );
410
411
		$output  = '<input name="'. esc_attr( $name ) .'" type="hidden" value="0">';
412
		$output .= '<input name="'. esc_attr( $name ) .'" id="'. esc_attr( $id ) .'" type="checkbox" value="1" '. checked( $current, '1', false ) .' >';
413
414
		return $output;
415
	}
416
417
418
	/**
419
	 * @deprecated 1.2
420
	 * Render the HTML for an input text to be used on the field & widgets options
421
	 * @param  string $name    Unique name of the field. Exampe: `fields[directory_list-title][5374ff6ab128b][custom_label]`
422
	 * @param  string $current [current value]
423
	 * @param string $add_merge_tags Add merge tags to the input?
424
	 * @param array $args Field settings, including `class` key for CSS class
425
	 * @return string         [html tags]
426
	 */
427
	public static function render_text_option( $name = '', $id = '', $current = '', $add_merge_tags = NULL, $args = array() ) {
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
428
429
		_deprecated_function( __METHOD__, '1.2', 'GravityView_FieldType_text::render_input' );
430
431
		// Show the merge tags if the field is a list view
432
		$is_list = ( preg_match( '/_list-/ism', $name ));
433
434
		// Or is a single entry view
435
		$is_single = ( preg_match( '/single_/ism', $name ));
436
		$show = ( $is_single || $is_list );
437
438
		$class = '';
439
		// and $add_merge_tags is not false
440
		if( $show && $add_merge_tags !== false || $add_merge_tags === 'force' ) {
0 ignored issues
show
introduced by
Found "!== false". Use Yoda Condition checks, you must
Loading history...
introduced by
Found "=== '". Use Yoda Condition checks, you must
Loading history...
441
			$class = 'merge-tag-support mt-position-right mt-hide_all_fields ';
442
		}
443
444
		$class .= !empty( $args['class'] ) ? $args['class'] : 'widefat';
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
445
		$type = !empty( $args['type'] ) ? $args['type'] : 'text';
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
446
447
		return '<input name="'. esc_attr( $name ) .'" id="'. esc_attr( $id ) .'" type="'.esc_attr($type).'" value="'. esc_attr( $current ) .'" class="'.esc_attr( $class ).'">';
0 ignored issues
show
Coding Style introduced by
Expected 1 spaces after opening bracket; 0 found
Loading history...
Coding Style introduced by
Expected 1 spaces before closing bracket; 0 found
Loading history...
448
	}
449
450
	/**
451
	 * @deprecated 1.2
452
	 * Render the HTML for an textarea input to be used on the field & widgets options
453
	 * @param  string $name    Unique name of the field. Exampe: `fields[directory_list-title][5374ff6ab128b][custom_label]`
454
	 * @param  string $current [current value]
455
	 * @param string|boolean $add_merge_tags Add merge tags to the input?
456
	 * @param array $args Field settings, including `class` key for CSS class
457
	 * @return string         [html tags]
458
	 */
459
	public static function render_textarea_option( $name = '', $id = '', $current = '', $add_merge_tags = NULL, $args = array() ) {
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
460
461
		_deprecated_function( __METHOD__, '1.2', 'GravityView_FieldType_textarea::render_input' );
462
463
		// Show the merge tags if the field is a list view
464
		$is_list = ( preg_match( '/_list-/ism', $name ));
465
466
		// Or is a single entry view
467
		$is_single = ( preg_match( '/single_/ism', $name ));
468
		$show = ( $is_single || $is_list );
469
470
		$class = '';
471
		// and $add_merge_tags is not false
472
		if( $show && $add_merge_tags !== false || $add_merge_tags === 'force' ) {
0 ignored issues
show
introduced by
Found "!== false". Use Yoda Condition checks, you must
Loading history...
introduced by
Found "=== '". Use Yoda Condition checks, you must
Loading history...
473
			$class = 'merge-tag-support mt-position-right mt-hide_all_fields ';
474
		}
475
476
		$class .= !empty( $args['class'] ) ? 'widefat '.$args['class'] : 'widefat';
0 ignored issues
show
introduced by
Expected 1 space after "!"; 0 found
Loading history...
477
478
		return '<textarea name="'. esc_attr( $name ) .'" id="'. esc_attr( $id ) .'" class="'.esc_attr( $class ).'">'. esc_textarea( $current ) .'</textarea>';
479
	}
480
481
	/**
482
	 *
483
	 * Render the HTML for a select box to be used on the field & widgets options
484
	 * @deprecated 1.2
485
	 * @param  string $name    [name attribute]
486
	 * @param  array $choices [select options]
487
	 * @param  string $current [current value]
488
	 * @return string          [html tags]
489
	 */
490
	public static function render_select_option( $name = '', $id = '', $choices, $current = '' ) {
491
492
		_deprecated_function( __METHOD__, '1.2', 'GravityView_FieldType_select::render_input' );
493
494
		$output = '<select name="'. $name .'" id="'. $id .'">';
495
		foreach( $choices as $value => $label ) {
496
			$output .= '<option value="'. esc_attr( $value ) .'" '. selected( $value, $current, false ) .'>'. esc_html( $label ) .'</option>';
497
		}
498
		$output .= '</select>';
499
500
		return $output;
501
	}
502
503
504
}
505