| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\UrlRewriteGraphQl\Model\Resolver;
 
- use Magento\Framework\Exception\LocalizedException;
 
- use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
 
- use Magento\Framework\GraphQl\Config\Element\Field;
 
- use Magento\Framework\GraphQl\Query\ResolverInterface;
 
- use Magento\Framework\Model\AbstractModel;
 
- use Magento\UrlRewrite\Model\UrlFinderInterface;
 
- use Magento\UrlRewrite\Service\V1\Data\UrlRewrite as UrlRewriteDTO;
 
- /**
 
-  * Returns URL rewrites list for the specified product
 
-  */
 
- class UrlRewrite implements ResolverInterface
 
- {
 
-     /**
 
-      * @var UrlFinderInterface
 
-      */
 
-     private $urlFinder;
 
-     /**
 
-      * @param UrlFinderInterface $urlFinder
 
-      */
 
-     public function __construct(
 
-         UrlFinderInterface $urlFinder
 
-     ) {
 
-         $this->urlFinder = $urlFinder;
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function resolve(
 
-         Field $field,
 
-         $context,
 
-         ResolveInfo $info,
 
-         array $value = null,
 
-         array $args = null
 
-     ): array {
 
-         if (!isset($value['model'])) {
 
-             throw new LocalizedException(__('"model" value should be specified'));
 
-         }
 
-         /** @var AbstractModel $entity */
 
-         $entity = $value['model'];
 
-         $entityId = $entity->getEntityId();
 
-         $urlRewriteCollection = $this->urlFinder->findAllByData([UrlRewriteDTO::ENTITY_ID => $entityId]);
 
-         $urlRewrites = [];
 
-         /** @var UrlRewriteDTO $urlRewrite */
 
-         foreach ($urlRewriteCollection as $urlRewrite) {
 
-             if ($urlRewrite->getRedirectType() !== 0) {
 
-                 continue;
 
-             }
 
-             $urlRewrites[] = [
 
-                 'url' => $urlRewrite->getRequestPath(),
 
-                 'parameters' => $this->getUrlParameters($urlRewrite->getTargetPath())
 
-             ];
 
-         }
 
-         return $urlRewrites;
 
-     }
 
-     /**
 
-      * Parses target path and extracts parameters
 
-      *
 
-      * @param string $targetPath
 
-      * @return array
 
-      */
 
-     private function getUrlParameters(string $targetPath): array
 
-     {
 
-         $urlParameters = [];
 
-         $targetPathParts = explode('/', trim($targetPath, '/'));
 
-         for ($i = 3; ($i < sizeof($targetPathParts) - 1); $i += 2) {
 
-             $urlParameters[] = [
 
-                 'name' => $targetPathParts[$i],
 
-                 'value' => $targetPathParts[$i + 1]
 
-             ];
 
-         }
 
-         return $urlParameters;
 
-     }
 
- }
 
 
  |