12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\CatalogSearch\Model\Search;
- use Magento\Search\Model\QueryFactory;
- /**
- * Search model for backend search
- */
- class Catalog extends \Magento\Framework\DataObject
- {
- /**
- * Catalog search data
- *
- * @var \Magento\Search\Model\QueryFactory
- */
- protected $queryFactory = null;
- /**
- * Magento string lib
- *
- * @var \Magento\Framework\Stdlib\StringUtils
- */
- protected $string;
- /**
- * Adminhtml data
- *
- * @var \Magento\Backend\Helper\Data
- */
- protected $_adminhtmlData = null;
- /**
- * @param \Magento\Backend\Helper\Data $adminhtmlData
- * @param \Magento\Framework\Stdlib\StringUtils $string
- * @param QueryFactory $queryFactory
- */
- public function __construct(
- \Magento\Backend\Helper\Data $adminhtmlData,
- \Magento\Framework\Stdlib\StringUtils $string,
- QueryFactory $queryFactory
- ) {
- $this->_adminhtmlData = $adminhtmlData;
- $this->string = $string;
- $this->queryFactory = $queryFactory;
- }
- /**
- * Load search results
- *
- * @return $this
- */
- public function load()
- {
- $result = [];
- if (!$this->hasStart() || !$this->hasLimit() || !$this->hasQuery()) {
- $this->setResults($result);
- return $this;
- }
- $collection = $this->queryFactory->get()
- ->getSearchCollection()
- ->addAttributeToSelect('name')
- ->addAttributeToSelect('description')
- ->addBackendSearchFilter($this->getQuery())
- ->setCurPage($this->getStart())
- ->setPageSize($this->getLimit())
- ->load();
- foreach ($collection as $product) {
- $description = strip_tags($product->getDescription());
- $result[] = [
- 'id' => 'product/1/' . $product->getId(),
- 'type' => __('Product'),
- 'name' => $product->getName(),
- 'description' => $this->string->substr($description, 0, 30),
- 'url' => $this->_adminhtmlData->getUrl('catalog/product/edit', ['id' => $product->getId()]),
- ];
- }
- $this->setResults($result);
- return $this;
- }
- }
|