%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/main/lib/orm/fields/validators/ |
| Current File : //home/bitrix/www/bitrix/modules/main/lib/orm/fields/validators/uniquevalidator.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2013 Bitrix
*/
namespace Bitrix\Main\ORM\Fields\Validators;
use Bitrix\Main\ORM;
use Bitrix\Main\ORM\Query\Query;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
class UniqueValidator extends Validator
{
/**
* @var string
*/
protected $errorPhraseCode = 'MAIN_ENTITY_VALIDATOR_UNIQUE';
public function validate($value, $primary, array $row, ORM\Fields\Field $field)
{
$entity = $field->getEntity();
$primaryNames = $entity->getPrimaryArray();
$query = new Query($entity);
$query->setSelect($primaryNames);
$query->setFilter(array('='.$field->getName() => $value));
$query->setLimit(2);
$result = $query->exec();
while ($existing = $result->fetch())
{
// check primary
foreach ($existing as $k => $v)
{
if (!isset($primary[$k]) || $primary[$k] != $existing[$k])
{
return $this->getErrorMessage($value, $field);
}
}
}
return true;
}
}