Your IP : 3.137.185.239


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/crm/lib/entity/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/crm/lib/entity/entityvalidator.php

<?php
namespace Bitrix\Crm\Entity;

use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);

class EntityValidator
{
	protected $entityID = 0;
	protected $entityFields = null;

	public function __construct($entityID, array $entityFields)
	{
		$this->entityID = $entityID;
		$this->entityFields = $entityFields;
	}

	public function getEntityTypeID()
	{
		return \CCrmOwnerType::Undefined;
	}

	public function getEntityID()
	{
		return $this->entityID;
	}

	public function getFieldInfos()
	{
		return array();
	}

	public function getFieldInfo($fieldName)
	{
		$fieldInfos = $this->getFieldInfos();
		return $fieldInfos[$fieldName] ? $fieldInfos[$fieldName] : null;
	}
	protected function isNeedToCheck($fieldName)
	{
		return $this->entityID <= 0 || array_key_exists($fieldName, $this->entityFields);
	}
	protected function checkAllFieldPresence(array $fieldNames)
	{
		foreach($fieldNames as $fieldName)
		{
			if(!$this->innerCheckFieldPresence($fieldName))
			{
				return false;
			}
		}
		return true;
	}
	protected function checkAnyFieldPresence(array $fieldNames)
	{
		foreach($fieldNames as $fieldName)
		{
			if($this->innerCheckFieldPresence($fieldName))
			{
				return true;
			}
		}
		return false;
	}
	public function checkFieldPresence($fieldName, array &$messages)
	{
		return $this->innerCheckFieldPresence($fieldName);
	}
	protected function innerCheckFieldPresence($fieldName)
	{
		if($this->entityID > 0 && !array_key_exists($fieldName, $this->entityFields))
		{
			return true;
		}

		$fieldInfo = $this->getFieldInfo($fieldName);
		$typeName = is_array($fieldInfo) && isset($fieldInfo['TYPE']) ? $fieldInfo['TYPE'] : '';
		if($typeName === 'boolean')
		{
			return true;
		}

		$value = isset($this->entityFields[$fieldName]) ? $this->entityFields[$fieldName] : null;
		if(is_array($value))
		{
			return !empty($value);
		}
		return strlen($this->entityFields[$fieldName]) > 0;
	}
}