' . esc_html( $value ) . '';
}
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 '';
}
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 '';
} else {
echo '';
}
}
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 '';
echo '';
}
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;
}
}