1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\App\Config\Scope;
- use InvalidArgumentException;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- use Magento\Framework\App\Scope\ValidatorInterface;
- use Magento\Framework\App\ScopeResolverPool;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Framework\Phrase;
- /**
- * @deprecated 101.0.0 Added in order to avoid backward incompatibility because class was moved to another directory.
- * @see \Magento\Framework\App\Scope\Validator
- */
- class Validator implements ValidatorInterface
- {
- /**
- * @var ScopeResolverPool
- */
- private $scopeResolverPool;
- /**
- * @param ScopeResolverPool $scopeResolverPool
- */
- public function __construct(ScopeResolverPool $scopeResolverPool)
- {
- $this->scopeResolverPool = $scopeResolverPool;
- }
- /**
- * {@inheritdoc}
- */
- public function isValid($scope, $scopeCode = null)
- {
- if ($scope === ScopeConfigInterface::SCOPE_TYPE_DEFAULT && empty($scopeCode)) {
- return true;
- }
- if ($scope === ScopeConfigInterface::SCOPE_TYPE_DEFAULT && !empty($scopeCode)) {
- throw new LocalizedException(new Phrase(
- 'The "%1" scope can\'t include a scope code. Try again without entering a scope code.',
- [ScopeConfigInterface::SCOPE_TYPE_DEFAULT]
- ));
- }
- if (empty($scope)) {
- throw new LocalizedException(new Phrase('A scope is missing. Enter a scope and try again.'));
- }
- $this->validateScopeCode($scopeCode);
- try {
- $scopeResolver = $this->scopeResolverPool->get($scope);
- $scopeResolver->getScope($scopeCode)->getId();
- } catch (InvalidArgumentException $e) {
- throw new LocalizedException(
- new Phrase('The "%1" value doesn\'t exist. Enter another value and try again.', [$scope])
- );
- } catch (NoSuchEntityException $e) {
- throw new LocalizedException(
- new Phrase('The "%1" value doesn\'t exist. Enter another value and try again.', [$scopeCode])
- );
- }
- return true;
- }
- /**
- * Validate scope code
- * Throw exception if not valid.
- *
- * @param string $scopeCode
- * @return void
- * @throws LocalizedException if scope code is empty or has a wrong format
- */
- private function validateScopeCode($scopeCode)
- {
- if (empty($scopeCode)) {
- throw new LocalizedException(new Phrase('A scope code is missing. Enter a code and try again.'));
- }
- if (!preg_match('/^[a-z]+[a-z0-9_]*$/', $scopeCode)) {
- throw new LocalizedException(new Phrase(
- 'The scope code can include only lowercase letters (a-z), numbers (0-9) and underscores (_). '
- . 'Also, the first character must be a letter.'
- ));
- }
- }
- }
|