/** * Traces the search result into the s_statistic_search * * @param Criteria $criteria * @param ProductNumberSearchResult $result * @param Shop $shop */ public function logResult(Criteria $criteria, ProductNumberSearchResult $result, Shop $shop) { if (!$criteria->hasCondition('search')) { return; } /* @var $condition SearchTermCondition */ $condition = $criteria->getCondition('search'); $now = new \DateTime(); $this->connection->insert('s_statistics_search', ['datum' => $now->format('Y-m-d H:i:s'), 'searchterm' => $condition->getTerm(), 'results' => $result->getTotalCount(), 'shop_id' => $shop->getId()]); }
/** * @param SearchBundle\ProductNumberSearchResult $searchResult * @param $orderNumber * @param $categoryId * @param StoreFrontBundle\Struct\ProductContextInterface $context * @return array */ private function buildNavigation(SearchBundle\ProductNumberSearchResult $searchResult, $orderNumber, $categoryId, StoreFrontBundle\Struct\ProductContextInterface $context) { $products = $searchResult->getProducts(); $products = array_values($products); if (empty($products)) { return array(); } /** @var $currentProduct BaseProduct */ foreach ($products as $index => $currentProduct) { if ($currentProduct->getNumber() != $orderNumber) { continue; } $previousProduct = isset($products[$index - 1]) ? $products[$index - 1] : null; $nextProduct = isset($products[$index + 1]) ? $products[$index + 1] : null; $navigation = array(); if ($previousProduct) { $previousProduct = $this->listProductService->get($previousProduct->getNumber(), $context); $navigation["previousProduct"]["orderNumber"] = $previousProduct->getNumber(); $navigation["previousProduct"]["link"] = $this->config->get('sBASEFILE') . "?sViewport=detail&sDetails=" . $previousProduct->getId() . "&sCategory=" . $categoryId; $navigation["previousProduct"]["name"] = $previousProduct->getName(); $previousCover = $previousProduct->getCover(); if ($previousCover) { $navigation["previousProduct"]["image"] = $this->legacyStructConverter->convertMediaStruct($previousCover); } } if ($nextProduct) { $nextProduct = $this->listProductService->get($nextProduct->getNumber(), $context); $navigation["nextProduct"]["orderNumber"] = $nextProduct->getNumber(); $navigation["nextProduct"]["link"] = $this->config->get('sBASEFILE') . "?sViewport=detail&sDetails=" . $nextProduct->getId() . "&sCategory=" . $categoryId; $navigation["nextProduct"]["name"] = $nextProduct->getName(); $nextCover = $nextProduct->getCover(); if ($nextCover) { $navigation["nextProduct"]["image"] = $this->legacyStructConverter->convertMediaStruct($nextCover); } } $navigation["currentListing"]["position"] = $index + 1; $navigation["currentListing"]["totalCount"] = $searchResult->getTotalCount(); return $navigation; } return array(); }
/** * @param ProductNumberSearchResult $result * @param $expectedNumbers */ protected function assertSearchResult(ProductNumberSearchResult $result, $expectedNumbers) { $this->assertCount(count($expectedNumbers), $result->getProducts()); $this->assertEquals(count($expectedNumbers), $result->getTotalCount()); foreach ($result->getProducts() as $product) { $this->assertContains($product->getNumber(), $expectedNumbers); } }