Initial Commit

This commit is contained in:
David Stone
2024-11-30 18:24:12 -07:00
commit e8f7955c1c
5432 changed files with 1397750 additions and 0 deletions

View File

@ -0,0 +1,96 @@
<?php
/**
* Adds a validation rules that allows us to check if a given parameter is unique.
*
* @package WP_Ultimo
* @subpackage Helpers/Validation_Rules
* @since 2.0.0
*/
namespace WP_Ultimo\Helpers\Validation_Rules;
use WP_Ultimo\Dependencies\Rakit\Validation\Rule;
// Exit if accessed directly
defined('ABSPATH') || exit;
/**
* Adds a validation rules that allows us to check if a given parameter is unique.
*
* @since 2.0.0
*/
class Unique extends Rule {
/**
* Error message to be returned when this value has been used.
*
* @since 2.0.0
* @var string
*/
protected $message = ':attribute :value has been used';
/**
* Parameters that this rule accepts.
*
* @since 2.0.0
* @var array
*/
protected $fillableParams = array('model', 'column', 'self_id'); // phpcs:ignore
/**
* Performs the actual check.
*
* @since 2.0.0
*
* @param mixed $value Value being checked.
*/
public function check($value) : bool {
$this->requireParameters(array(
'model',
'column',
));
$column = $this->parameter('column');
$model = $this->parameter('model');
$self_id = $this->parameter('self_id');
switch ($model) {
case '\WP_User':
$callback = 'get_user_by';
break;
default:
$callback = array($model, 'get_by');
break;
}
// do query
$existing = call_user_func($callback, $column, $value);
$user_models = array(
'\WP_User',
'\WP_Ultimo\Models\Customer',
);
/*
* Customize the error message for the customer.
*/
if (in_array($model, $user_models, true)) {
$this->message = __('A customer with the same email address or username already exists.', 'wp-ultimo');
} // end if;
if (!$existing) {
return true;
} // end if;
$id = method_exists($existing, 'get_id') ? $existing->get_id() : $existing->id;
return absint($id) === absint($self_id);
} // end check;
} // end class Unique;