Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
QueryText.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Fixture\DataSource;
10 use Magento\Mtf\Fixture\FixtureFactory;
11 use Magento\Mtf\Fixture\InjectableFixture;
12 
20 class QueryText extends DataSource
21 {
27  protected $product;
28 
32  private $products;
33 
39  public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
40  {
41  $this->params = $params;
42 
43  $this->data = array_key_exists('search_query', $data) ? $data['search_query'] : null;
44 
45  $this->products = $this->createProducts($fixtureFactory, (array)$data['value']);
46  }
47 
53  private function createProducts(FixtureFactory $fixtureFactory, $productsData)
54  {
55  $products = [];
56  foreach ($productsData as $productStringData) {
57  $productData = explode('::', $productStringData);
58  if (!empty($productData) && count($productData) > 1) {
59  $product = $this->createProduct($fixtureFactory, $productData);
60 
61  $searchValue = isset($productData[2]) ? $productData[2] : $productData[1];
62  if ($this->data === null) {
63  if ($product->hasData($searchValue)) {
64  $getProperty = 'get' . str_replace(' ', '', ucwords(str_replace('_', ' ', $searchValue)));
65  $this->data = $product->$getProperty();
66  } else {
67  $this->data = $searchValue;
68  }
69  }
70 
71  $products[] = $product;
72  } elseif ($this->data === null) {
73  $this->data = (string)$productData;
74  }
75  }
76 
77  return $products;
78  }
79 
85  private function createProduct(FixtureFactory $fixtureFactory, $productData)
86  {
87  $fixtureCode = $this->getProductFixtureCode($productData);
88  $dataset = $this->getProductDataSet($productData);
89  $product = $fixtureFactory->createByCode($fixtureCode, ['dataset' => $dataset]);
90  if (!$product->hasData('id')) {
91  $product->persist();
92  }
93 
94  return $product;
95  }
96 
101  private function getProductFixtureCode($productData)
102  {
103  $fixtureCode = $productData[0];
104 
105  return $fixtureCode;
106  }
107 
112  private function getProductDataSet($productData)
113  {
114  return (isset($productData[2]) || null !== $this->data) ? $productData[1] : '';
115  }
116 
122  public function getFirstProduct()
123  {
124  return reset($this->products);
125  }
126 
132  public function getProducts()
133  {
134  return $this->products;
135  }
136 }
__construct(FixtureFactory $fixtureFactory, array $params, array $data=[])
Definition: QueryText.php:39
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$productsData
Definition: products.php:19
$productData
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18