Contactable\SWV

Rule{}abstractCF7 1.0

The base class of SWV rules.

Хуков нет.

Использование

$Rule = new Rule();
// use class methods

Методы

  1. public __construct( $properties = '' )
  2. public get_default_input()
  3. public get_default_upload()
  4. public get_property( $name )
  5. public matches( $context )
  6. public to_array()
  7. public validate( $context )
  8. protected create_error()

Код Rule{} CF7 6.1.6

abstract class Rule {

	protected $properties = array();

	public function __construct( $properties = '' ) {
		$this->properties = wp_parse_args( $properties, array() );
	}


	/**
	 * Returns true if this rule matches the given context.
	 *
	 * @param array $context Context.
	 */
	public function matches( $context ) {
		$field = $this->get_property( 'field' );

		if ( ! empty( $context['field'] ) ) {
			if ( $field and ! in_array( $field, (array) $context['field'], true ) ) {
				return false;
			}
		}

		return true;
	}


	/**
	 * Validates with this rule's logic.
	 *
	 * @param array $context Context.
	 */
	public function validate( $context ) {
		return true;
	}


	/**
	 * Converts the properties to an array.
	 *
	 * @return array Array of properties.
	 */
	public function to_array() {
		$properties = (array) $this->properties;

		if ( defined( 'static::rule_name' ) and static::rule_name ) {
			$properties = array( 'rule' => static::rule_name ) + $properties;
		}

		return $properties;
	}


	/**
	 * Returns the property value specified by the given property name.
	 *
	 * @param string $name Property name.
	 * @return mixed Property value.
	 */
	public function get_property( $name ) {
		if ( isset( $this->properties[$name] ) ) {
			return $this->properties[$name];
		}
	}


	/**
	 * Returns the default user input value from $_POST.
	 *
	 * @return mixed Default user input value.
	 */
	public function get_default_input() {
		$field = $this->get_property( 'field' );

		if ( isset( $_POST[$field] ) ) {
			return wp_unslash( $_POST[$field] );
		}

		return '';
	}


	/**
	 * Returns the default user upload file from $_FILES.
	 *
	 * @return object Default user upload file.
	 */
	public function get_default_upload() {
		$field = $this->get_property( 'field' );

		if ( isset( $_FILES[$field] ) ) {
			return (object) wp_unslash( $_FILES[$field] );
		}

		return (object) array();
	}


	/**
	 * Creates an error object. Returns false if the error property is omitted.
	 */
	protected function create_error() {
		$error_code = defined( 'static::rule_name' )
			? sprintf( 'swv_%s', static::rule_name )
			: 'swv';

		return new WP_Error(
			$error_code,
			(string) $this->get_property( 'error' ),
			$this
		);
	}

}