MergeDataProvider.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\UrlRewrite\Model;
  7. use Magento\UrlRewrite\Service\V1\Data\UrlRewrite as UrlRewriteService;
  8. /**
  9. * This class is to be used as a container for new generated url rewrites by adding new ones using merge method
  10. * Removes duplicates for a set/array of Url Rewrites based on the unique key of the url_rewrites table
  11. *
  12. * @api
  13. * @since 100.1.3
  14. */
  15. class MergeDataProvider
  16. {
  17. const SEPARATOR = '_';
  18. /**
  19. * @var $rewritesArray[]
  20. */
  21. private $data = [];
  22. /**
  23. * Adds url rewrites to class data container by removing duplicates by a unique key
  24. *
  25. * @param UrlRewriteService[] $urlRewritesArray
  26. * @return void
  27. * @since 100.1.3
  28. */
  29. public function merge(array $urlRewritesArray)
  30. {
  31. foreach ($urlRewritesArray as $urlRewrite) {
  32. $key = $urlRewrite->getRequestPath() . self::SEPARATOR . $urlRewrite->getStoreId();
  33. if ($key !== self::SEPARATOR) {
  34. $this->data[$key] = $urlRewrite;
  35. } else {
  36. $this->data[] = $urlRewrite;
  37. }
  38. }
  39. }
  40. /**
  41. * Returns the data added to container
  42. *
  43. * @return UrlRewriteService[]
  44. * @since 100.1.3
  45. */
  46. public function getData()
  47. {
  48. return $this->data;
  49. }
  50. }