class-regex.php
<?php
/**
* Regex field.
*
* @package HivePress\Fields
*/
namespace HivePress\Fields;
use HivePress\Helpers as hp;
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
/**
* Regex pattern.
*/
class Regex extends Text {
/**
* Class initializer.
*
* @param array $meta Class meta values.
*/
public static function init( $meta = [] ) {
$meta = hp\merge_arrays(
[
'label' => null,
'filterable' => false,
'sortable' => false,
],
$meta
);
parent::init( $meta );
}
/**
* Class constructor.
*
* @param array $args Field arguments.
*/
public function __construct( $args = [] ) {
$args = hp\merge_arrays(
[
'display_type' => 'text',
],
$args
);
parent::__construct( $args );
}
/**
* Normalizes field value.
*/
protected function normalize() {
Field::normalize();
if ( ! is_null( $this->value ) ) {
$this->value = trim( addcslashes( trim( $this->value ), '/' ), '^$' );
}
}
/**
* Validates field value.
*
* @return bool
*/
public function validate() {
if ( parent::validate() && ! is_null( $this->value ) && @preg_match( '/^' . $this->value . '$/', '' ) === false ) {
$this->add_errors( sprintf( hivepress()->translator->get_string( 'field_contains_invalid_value' ), $this->get_label( true ) ) );
}
return empty( $this->errors );
}
}