%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/services/base/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/services/base/restriction.php |
<?php namespace Bitrix\Sale\Services\Base; use Bitrix\Main\NotImplementedException; use Bitrix\Sale\Internals\CollectableEntity; use Bitrix\Sale\Internals\Entity; use Bitrix\Sale\Internals\ServiceRestrictionTable; /** * Class RestrictionBase. * Base class for payment and delivery services restrictions. * @package Bitrix\Sale\Services */ abstract class Restriction { /** @var int * 100 - lightweight - just compare with params * 200 - middleweight - may be use base queries * 300 - hardweight - use base, and/or hard calculations * */ public static $easeSort = 100; /** * @return string * @throws NotImplementedException */ public static function getClassTitle() { throw new NotImplementedException; } /** * @return string * @throws NotImplementedException */ public static function getClassDescription() { throw new NotImplementedException; } /** * @param $params * @param array $restrictionParams * @param int $serviceId * @return bool * @throws NotImplementedException */ public static function check($params, array $restrictionParams, $serviceId = 0) { throw new NotImplementedException; } /** * @param Entity $entity * @param array $restrictionParams * @param int $mode * @param int $serviceId * @return int * @throws NotImplementedException */ public static function checkByEntity(Entity $entity, array $restrictionParams, $mode, $serviceId = 0) { $severity = static::getSeverity($mode); if($severity == RestrictionManager::SEVERITY_NONE) return RestrictionManager::SEVERITY_NONE; $entityRestrictionParams = static::extractParams($entity); $res = static::check($entityRestrictionParams, $restrictionParams, $serviceId); return $res ? RestrictionManager::SEVERITY_NONE : $severity; } /** * @param Entity $entity * @return mixed * @throws NotImplementedException */ protected static function extractParams(Entity $entity) { throw new NotImplementedException; } /** * Returns params structure to show it to user * @return array */ public static function getParamsStructure($entityId = 0) { return array(); } /** * @param array $paramsValues * @param int $entityId * @return array */ public static function prepareParamsValues(array $paramsValues, $entityId = 0) { return $paramsValues; } /** * @param array $fields * @param int $restrictionId * @return \Bitrix\Main\Entity\AddResult|\Bitrix\Main\Entity\UpdateResult * @throws \Exception */ public static function save(array $fields, $restrictionId = 0) { $fields["CLASS_NAME"] = '\\'.get_called_class(); if($restrictionId > 0) $res = ServiceRestrictionTable::update($restrictionId, $fields); else $res = ServiceRestrictionTable::add($fields); return $res; } /** * @param $restrictionId * @param int $entityId * @return \Bitrix\Main\Entity\DeleteResult * @throws \Exception */ public static function delete($restrictionId, $entityId = 0) { return ServiceRestrictionTable::delete($restrictionId); } /** * @param int $mode - RestrictionManager::MODE_CLIENT | RestrictionManager::MODE_MANAGER * @return int */ public static function getSeverity($mode) { $result = RestrictionManager::SEVERITY_STRICT; if($mode == RestrictionManager::MODE_MANAGER) return RestrictionManager::SEVERITY_SOFT; return $result; } /** * @param array $servicesIds * @return bool */ public static function prepareData(array $servicesIds) { return true; } /** * @return bool */ public static function isAvailable() { return true; } /* * Children can have also this method * for performance purposes. * * @return int[] * public static function filterServicesArray(Shipment $shipment, array $restrictionFields) * { * ... * } */ }