2024-05-06 11:04:37 +07:00

128 lines
3.6 KiB
PHP

<?php
namespace ElementorPro\Modules\DisplayConditions\Classes;
use DateTime;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Comparators_Checker {
/**
* @param string $comparator
* @param string|DateTime $value_to_check
* @param string|DateTime $set_value
*
* @return bool
*/
public static function check_date_time( string $comparator, $value_to_check, $set_value ): bool {
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS:
return $set_value == $value_to_check;
case Comparator_Provider::COMPARATOR_IS_NOT:
return $set_value != $value_to_check;
case Comparator_Provider::COMPARATOR_IS_AFTER:
return $set_value < $value_to_check;
case Comparator_Provider::COMPARATOR_IS_BEFORE:
return $set_value > $value_to_check;
case Comparator_Provider::COMPARATOR_IS_AFTER_INCLUSIVE:
return $set_value <= $value_to_check;
case Comparator_Provider::COMPARATOR_IS_BEFORE_INCLUSIVE:
return $set_value >= $value_to_check;
default:
return false;
}
}
public static function check_array_contains( string $comparator, array $expected_values, array $array_of_values ): bool {
$is_contained = ! empty( array_intersect( $expected_values, $array_of_values ) );
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS:
case Comparator_Provider::COMPARATOR_IS_ONE_OF:
return $is_contained;
case Comparator_Provider::COMPARATOR_IS_NOT:
case Comparator_Provider::COMPARATOR_IS_NONE_OF:
return ! $is_contained;
default:
return false;
}
}
public static function check_string_contains( string $comparator, string $expected_value, string $actual_value ): bool {
$expected_value = strtolower( $expected_value );
$actual_value = strtolower( $actual_value );
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS:
return $expected_value === $actual_value;
case Comparator_Provider::COMPARATOR_IS_NOT:
return $expected_value !== $actual_value;
case Comparator_Provider::COMPARATOR_CONTAINS:
return str_contains( $actual_value, $expected_value );
case Comparator_Provider::COMPARATOR_NOT_CONTAIN:
return ! str_contains( $actual_value, $expected_value );
default:
return false;
}
}
public static function check_string_contains_and_empty( string $comparator, string $expected_value, string $actual_value ): bool {
if ( self::check_string_contains( $comparator, $expected_value, $actual_value ) ) {
return true;
}
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS_EMPTY:
return empty( $actual_value );
case Comparator_Provider::COMPARATOR_IS_NOT_EMPTY:
return ! empty( $actual_value );
default:
return false;
}
}
public static function check_equality( string $comparator, string $value, string $compare_to ): bool {
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS:
return $value === $compare_to;
case Comparator_Provider::COMPARATOR_IS_NOT:
return $value !== $compare_to;
default:
return false;
}
}
/**
* @param string $comparator
* @param int $value
* @param int $compare_to
*
* @return bool
*/
public static function check_numeric_constraints( string $comparator, int $value, int $compare_to ): bool {
switch ( $comparator ) {
case Comparator_Provider::COMPARATOR_IS:
return $compare_to === $value;
case Comparator_Provider::COMPARATOR_IS_NOT:
return $compare_to !== $value;
case Comparator_Provider::COMPARATOR_IS_LESS_THAN_INCLUSIVE:
return $compare_to <= $value;
case Comparator_Provider::COMPARATOR_IS_GREATER_THAN_INCLUSIVE:
return $compare_to >= $value;
default:
return false;
}
}
}