112 lines
2.4 KiB
PHP
112 lines
2.4 KiB
PHP
<?php
|
|
|
|
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
|
|
|
if( ! class_exists('ACF_Location') ) :
|
|
|
|
class ACF_Location {
|
|
|
|
/** @var string The location rule name. */
|
|
public $name = '';
|
|
|
|
/** @var string The location rule label. */
|
|
public $label = '';
|
|
|
|
/** @var string The location rule category. */
|
|
public $category = 'post';
|
|
|
|
/** @var string The location rule visibility. */
|
|
public $public = true;
|
|
|
|
/**
|
|
* __construct
|
|
*
|
|
* Sets up the class functionality.
|
|
*
|
|
* @date 5/03/2014
|
|
* @since 5.0.0
|
|
*
|
|
* @param void
|
|
* @return void
|
|
*/
|
|
function __construct() {
|
|
|
|
// Call initialize to setup props.
|
|
$this->initialize();
|
|
|
|
// Add filters.
|
|
$this->add_filter( 'acf/location/rule_match/' . $this->name, array($this, 'rule_match'), 5, 3 );
|
|
$this->add_filter( 'acf/location/rule_operators/' . $this->name, array($this, 'rule_operators'), 5, 2 );
|
|
$this->add_filter( 'acf/location/rule_values/' . $this->name, array($this, 'rule_values'), 5, 2 );
|
|
}
|
|
|
|
/**
|
|
* add_filter
|
|
*
|
|
* Maybe adds a filter callback.
|
|
*
|
|
* @date 17/9/19
|
|
* @since 5.8.1
|
|
*
|
|
* @param string $tag The filter name.
|
|
* @param callable $function_to_add The callback function.
|
|
* @param int $priority The filter priority.
|
|
* @param int $accepted_args The number of args to accept.
|
|
* @return void
|
|
*/
|
|
function add_filter( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) {
|
|
if( is_callable($function_to_add) ) {
|
|
add_filter( $tag, $function_to_add, $priority, $accepted_args );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* initialize
|
|
*
|
|
* Sets up the class functionality.
|
|
*
|
|
* @date 5/03/2014
|
|
* @since 5.0.0
|
|
*
|
|
* @param void
|
|
* @return void
|
|
*/
|
|
function initialize() {
|
|
// Do nothing.
|
|
}
|
|
|
|
/**
|
|
* compare
|
|
*
|
|
* Compares the given value and rule params returning true when they match.
|
|
*
|
|
* @date 17/9/19
|
|
* @since 5.8.1
|
|
*
|
|
* @param mixed $value The value to compare against.
|
|
* @param array $rule The locatio rule data.
|
|
* @return bool
|
|
*/
|
|
function compare( $value, $rule ) {
|
|
|
|
// Allow "all" to match any value.
|
|
if( $rule['value'] === 'all' ) {
|
|
$match = true;
|
|
|
|
// Compare all other values.
|
|
} else {
|
|
$match = ( $value == $rule['value'] );
|
|
}
|
|
|
|
// Allow for "!=" operator.
|
|
if( $rule['operator'] == '!=' ) {
|
|
$match = !$match;
|
|
}
|
|
|
|
// Return.
|
|
return $match;
|
|
}
|
|
}
|
|
|
|
endif; // class_exists check
|