BookmarkManagement.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Model;
  7. class BookmarkManagement implements \Magento\Ui\Api\BookmarkManagementInterface
  8. {
  9. /**
  10. * @var \Magento\Ui\Api\BookmarkRepositoryInterface
  11. */
  12. protected $bookmarkRepository;
  13. /**
  14. * @var \Magento\Framework\Api\SearchCriteriaBuilder
  15. */
  16. protected $searchCriteriaBuilder;
  17. /**
  18. * @var \Magento\Framework\Api\FilterBuilder
  19. */
  20. protected $filterBuilder;
  21. /**
  22. * @var \Magento\Authorization\Model\UserContextInterface
  23. */
  24. protected $userContext;
  25. /**
  26. * @param \Magento\Ui\Api\BookmarkRepositoryInterface $bookmarkRepository
  27. * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
  28. * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
  29. * @param \Magento\Authorization\Model\UserContextInterface $userContext
  30. */
  31. public function __construct(
  32. \Magento\Ui\Api\BookmarkRepositoryInterface $bookmarkRepository,
  33. \Magento\Framework\Api\FilterBuilder $filterBuilder,
  34. \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
  35. \Magento\Authorization\Model\UserContextInterface $userContext
  36. ) {
  37. $this->bookmarkRepository = $bookmarkRepository;
  38. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  39. $this->filterBuilder = $filterBuilder;
  40. $this->userContext = $userContext;
  41. }
  42. /**
  43. * {@inheritdoc}
  44. */
  45. public function loadByNamespace($namespace)
  46. {
  47. $userIdFilter = $this->filterBuilder
  48. ->setField('user_id')
  49. ->setConditionType('eq')
  50. ->setValue($this->userContext->getUserId())
  51. ->create();
  52. $namespaceFilter = $this->filterBuilder
  53. ->setField('namespace')
  54. ->setConditionType('eq')
  55. ->setValue($namespace)
  56. ->create();
  57. $this->searchCriteriaBuilder->addFilters([$userIdFilter]);
  58. $this->searchCriteriaBuilder->addFilters([$namespaceFilter]);
  59. $searchCriteria = $this->searchCriteriaBuilder->create();
  60. $searchResults = $this->bookmarkRepository->getList($searchCriteria);
  61. return $searchResults;
  62. }
  63. /**
  64. * {@inheritdoc}
  65. */
  66. public function getByIdentifierNamespace($identifier, $namespace)
  67. {
  68. $userIdFilter = $this->filterBuilder
  69. ->setField('user_id')
  70. ->setConditionType('eq')
  71. ->setValue($this->userContext->getUserId())
  72. ->create();
  73. $identifierFilter = $this->filterBuilder
  74. ->setField('identifier')
  75. ->setConditionType('eq')
  76. ->setValue($identifier)
  77. ->create();
  78. $namespaceFilter = $this->filterBuilder
  79. ->setField('namespace')
  80. ->setConditionType('eq')
  81. ->setValue($namespace)
  82. ->create();
  83. $this->searchCriteriaBuilder->addFilters([$userIdFilter]);
  84. $this->searchCriteriaBuilder->addFilters([$identifierFilter]);
  85. $this->searchCriteriaBuilder->addFilters([$namespaceFilter]);
  86. $searchCriteria = $this->searchCriteriaBuilder->create();
  87. $searchResults = $this->bookmarkRepository->getList($searchCriteria);
  88. if ($searchResults->getTotalCount() > 0) {
  89. foreach ($searchResults->getItems() as $searchResult) {
  90. $bookmark = $this->bookmarkRepository->getById($searchResult->getId());
  91. return $bookmark;
  92. }
  93. }
  94. return null;
  95. }
  96. }