ResultPageBuilder.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Search\Controller\Adminhtml\Synonyms;
  7. use Magento\Framework\Search\EngineResolverInterface;
  8. use Magento\Framework\Search\SearchEngine\ConfigInterface;
  9. /**
  10. * Result page builder class
  11. *
  12. */
  13. class ResultPageBuilder
  14. {
  15. /**
  16. * @var \Magento\Framework\View\Result\PageFactory $resultPageFactory
  17. */
  18. protected $resultPageFactory;
  19. /**
  20. * @var EngineResolverInterface $engineResolver
  21. */
  22. protected $engineResolver;
  23. /**
  24. * @var ConfigInterface $searchFeatureConfig
  25. */
  26. protected $searchFeatureConfig;
  27. /**
  28. * @var \Magento\Framework\Message\ManagerInterface
  29. */
  30. protected $messageManager;
  31. /**
  32. * Constructor
  33. *
  34. * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
  35. * @param EngineResolverInterface $engineResolver
  36. * @param ConfigInterface $searchFeatureConfig
  37. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  38. */
  39. public function __construct(
  40. \Magento\Framework\View\Result\PageFactory $resultPageFactory,
  41. EngineResolverInterface $engineResolver,
  42. ConfigInterface $searchFeatureConfig,
  43. \Magento\Framework\Message\ManagerInterface $messageManager
  44. ) {
  45. $this->resultPageFactory = $resultPageFactory;
  46. $this->engineResolver = $engineResolver;
  47. $this->searchFeatureConfig = $searchFeatureConfig;
  48. $this->messageManager = $messageManager;
  49. }
  50. /**
  51. * Build the initial page layout, menu and breadcrumb trail
  52. *
  53. * @return \Magento\Backend\Model\View\Result\Page
  54. */
  55. public function build()
  56. {
  57. $this->checkSearchEngineSupport();
  58. /** @var \Magento\Backend\Model\View\Result\Page $resultPage **/
  59. $resultPage = $this->resultPageFactory->create();
  60. // Make it active on menu and set breadcrumb trail
  61. $resultPage->setActiveMenu('Magento_Search::search_synonyms');
  62. $resultPage->addBreadcrumb(__('Marketing'), __('Marketing'));
  63. $resultPage->addBreadcrumb(__('Search Synonyms'), __('Search Synonyms'));
  64. return $resultPage;
  65. }
  66. /**
  67. * Checks if 'synonyms' feature is supported by configured search engine. If not supported displays a notice
  68. *
  69. * @return void
  70. */
  71. protected function checkSearchEngineSupport()
  72. {
  73. // Display a notice if search engine configuration does not support synonyms
  74. $searchEngine = $this->engineResolver->getCurrentSearchEngine();
  75. if (!$this->searchFeatureConfig
  76. ->isFeatureSupported(
  77. ConfigInterface::SEARCH_ENGINE_FEATURE_SYNONYMS,
  78. $searchEngine
  79. )
  80. ) {
  81. $this->messageManager
  82. ->addNoticeMessage(
  83. __(
  84. 'Search synonyms are not supported by the %1 search engine. '
  85. . 'Any synonyms you enter won\'t be used.',
  86. $searchEngine
  87. )
  88. );
  89. }
  90. }
  91. }