# wp-coder/3.4/classes/Dashboard/Field.php

WP Coder – Insert &amp; Manage Code Snippets, version 3.4. 184 lines.

- Page: https://pluginprobe.com/plugins/wp-coder/3.4/code/classes/Dashboard/Field.php
- Raw: https://pluginprobe.com/plugins/wp-coder/3.4/raw/classes/Dashboard/Field.php
- Modified: 2024-01-10T11:05:02+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wp-coder/3.4/code/classes/Dashboard/Field.php#L10-L20`.

```php
<?php

namespace WPCoder\Dashboard;

defined( 'ABSPATH' ) || exit;

class Field {

	public static function textarea( $name = '', $default = '' ): void {
		self::check_name( $name );
		$value = self::get_value( $name, $default );
		$name  = self::get_name( $name );
		$id    = self::get_id( $name );
		echo '<textarea name="' . esc_attr( $name ) . '" id="' . esc_attr( $id ) . '">' . esc_html( $value ) . '</textarea>';
	}

	public static function select( $name = '', $default = '', $options = [], $order = '' ): void {
		self::check_name( $name );
		$pre_name = $name;
		if ( is_numeric( $order ) ) {
			$pre_name = $name . '[' . $order . ']';
		}
		$value = self::get_value( $pre_name, $default );
		$name  = self::get_name( $name, $order );
		$id    = self::get_id( $pre_name );
		echo '<select name="' . esc_attr( $name ) . '" id="' . esc_attr( $id ) . '">';
		foreach ( $options as $key => $val ) {
			if ( strrpos( $key, '_start' ) ) {
				echo '<optgroup label="' . esc_attr( $val ) . '">';
			} elseif ( strrpos( $key, '_end' ) ) {
				echo '</optgroup>';
			} else {
				echo '<option value="' . esc_attr( $key ) . '"' . selected( $value, $key,
						false ) . '>' . esc_html( $val ) . '</option>';
			}
		}
		echo '</select>';
	}

	public static function text( $name = '', $default = '', $type = 'text', $order = '' ): void {
		self::check_name( $name );
		$pre_name = $name;
		if ( is_numeric( $order ) ) {
			$pre_name = $name . '[' . $order . ']';
		}
		$value = self::get_value( $pre_name, $default );
		$name  = self::get_name( $name, $order );
		$id    = self::get_id( $pre_name );
		$class = ( $type === 'color' ) ? 'wowp-field-color' : '';
		if ( empty( $class ) ) {
			echo '<input type="' . esc_attr( $type ) . '" name="' . esc_attr( $name ) . '" value="' . esc_attr( $value ) . '" id="' . esc_attr( $id ) . '">';
		} else {
			echo '<input type="text" data-alpha-enabled="true" name="' . esc_attr( $name ) . '" value="' . esc_attr( $value ) . '" class="' . esc_attr( $class ) . '" id="' . esc_attr( $id ) . '">';
		}
	}

	public static function checkbox( $name = '', $order = '' ): void {
		self::check_name( $name );
		$pre_name = $name;
		if ( is_numeric( $order ) ) {
			$pre_name = $name . '[' . $order . ']';
		}
		$value = self::get_value( $pre_name );
		$name  = self::get_name( $name, $order );
		$id    = self::get_id( $pre_name );
		echo '<input type="checkbox" value="1" id="checkbox_' . esc_attr( $id ) . '"' . checked( '1', $value,
				false ) . '>';
		echo '<input type="hidden" name="' . esc_attr( $name ) . '" value="' . esc_attr( $value ) . '" class="checkbox-helper" id="' . esc_attr( $id ) . '">';
	}

	private static function get_name( $name, $order = '' ) {
		if ( strpos( $name, '[' ) !== false ) {
			if ( is_numeric( $order ) ) {
				return 'param' . $name . '[]';
			}

			return 'param' . $name;
		}

		return $name;
	}

	private static function get_value( $name, $defval = '' ) {
		$default = self::getDefault();

		if ( strpos( $name, '[' ) !== false ) {
			$value = self::get_param_value( 'param' . $name, $default );
			if ( ! isset( $value ) && ! empty( $defval ) ) {
				return $defval;
			}

			return $value;
		}

		if ( empty( $default[ $name ] ) && ! empty( $defval ) ) {
			return $defval;
		}

		if ( empty( $default[ $name ] ) ) {
			return '';
		}

		return $default[ $name ];
	}

	public static function get_id( $name ) {
		return str_replace( array( '][', '[', ']' ), array( '_', '', '' ), $name );
	}

	private static function get_param_value( $name, $array ) {
		$keys  = preg_split( '/\[|\]/', $name, - 1, PREG_SPLIT_NO_EMPTY );
		$value = $array;

		foreach ( $keys as $key ) {
			if ( isset( $value[ $key ] ) ) {
				$value = $value[ $key ];
			} else {
				return null;
			}
		}

		return $value;
	}

	private static function check_name( $name ) {
		if ( empty( $name ) ) {
			wp_die( __( 'Field must have name', 'floating-button' ) );
		}
	}

	public static function getDefault(): array {
		$id      = isset( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : 0;
		$columns = DBManager::get_columns();

		if ( empty( $id ) ) {
			return self::get_data();
		}

		$action = isset( $_REQUEST['action'] ) ? sanitize_text_field( $_REQUEST['action'] ) : 'update';
		$result = DBManager::get_data_by_id( $id );

		if ( $action === 'update' ) {
			return self::get_data( $result );
		}

		$data          = self::get_data( $result );
		$data['id']    = '';
		$data['title'] = '';

		return $data;
	}

	private static function get_data( $result = '' ): array {
		$columns = DBManager::get_columns();
		$data    = [];
		foreach ( $columns as $column ) {
			$name = $column->Field;
			if ( empty( $result ) ) {
				if ( $name === 'param' ) {
					$data[ $name ] = [];
					continue;
				}
				$data[ $name ] = '';
			} else {
				$val = ! empty( $result->$name ) ? $result->$name : '';
				if ( $name === 'param' ) {
					$data[ $name ] = maybe_unserialize( $val );
					continue;
				}
				$data[ $name ] = $val;
			}
		}

		return $data;
	}

	public static function add_prefix( $prefix, $arr ): array {
		foreach ( $arr as $key => $val ) {
			$arr[ $key ]['name'] = $prefix . $val['name'];
		}

		return $arr;
	}
}
```
