Exemplo n.º 1
0
 /**
  * Helper function which loads a full product struct and converts the product struct
  * to the shopware 3 array structure.
  *
  * @param Product $product
  * @param int     $categoryId
  * @param array   $selection
  * @return array
  */
 private function getLegacyProduct(Product $product, $categoryId, array $selection)
 {
     $data = $this->legacyStructConverter->convertProductStruct($product);
     $relatedArticles = array();
     foreach ($data['sRelatedArticles'] as $related) {
         $related = $this->legacyEventManager->firePromotionByIdEvents($related, null, $this);
         if ($related) {
             $relatedArticles[] = $related;
         }
     }
     $data['sRelatedArticles'] = $relatedArticles;
     $similarArticles = array();
     foreach ($data['sSimilarArticles'] as $similar) {
         $similar = $this->legacyEventManager->firePromotionByIdEvents($similar, null, $this);
         if ($similar) {
             $similarArticles[] = $similar;
         }
     }
     $data['sSimilarArticles'] = $similarArticles;
     $data['categoryID'] = $categoryId;
     if ($product->hasConfigurator()) {
         $configurator = $this->configuratorService->getProductConfigurator($product, $this->contextService->getProductContext(), $selection);
         $convertedConfigurator = $this->legacyStructConverter->convertConfiguratorStruct($product, $configurator);
         $data = array_merge($data, $convertedConfigurator);
         $convertedConfiguratorPrice = $this->legacyStructConverter->convertConfiguratorPrice($product, $configurator);
         $data = array_merge($data, $convertedConfiguratorPrice);
     }
     $data = array_merge($data, $this->getLinksOfProduct($product, $categoryId));
     $data["articleName"] = $this->sOptimizeText($data["articleName"]);
     $data["description_long"] = htmlspecialchars_decode($data["description_long"]);
     $data['mainVariantNumber'] = $this->db->fetchOne("SELECT variant.ordernumber\n             FROM s_articles_details variant\n             INNER JOIN s_articles product\n                ON product.main_detail_id = variant.id\n                AND product.id = ?", array($product->getId()));
     $data["sDescriptionKeywords"] = $this->getDescriptionKeywords($data["description_long"]);
     $data = $this->legacyEventManager->fireArticleByIdEvents($data, $this);
     return $data;
 }
Exemplo n.º 2
0
 /**
  * Get article data for sAddArticle
  *
  * @param int $id Article ordernumber
  * @return array|false Article data, or false if none found
  */
 private function getArticleForAddArticle($id)
 {
     $sql = "\n            SELECT s_articles.id AS articleID, s_articles.main_detail_id, name AS articleName, taxID,\n              additionaltext, s_articles_details.shippingfree, laststock, instock,\n              s_articles_details.id as articledetailsID, ordernumber,\n              s_articles.configurator_set_id\n            FROM s_articles, s_articles_details\n            WHERE s_articles_details.ordernumber = ?\n            AND s_articles_details.articleID = s_articles.id\n            AND s_articles.active = 1\n            AND (\n                SELECT articleID\n                FROM s_articles_avoid_customergroups\n                WHERE articleID = s_articles.id AND customergroupID = ?\n            ) IS NULL\n        ";
     $article = $this->db->fetchRow($sql, array($id, $this->sSYSTEM->sUSERGROUPDATA["id"]));
     $article = $this->eventManager->filter('Shopware_Modules_Basket_getArticleForAddArticle_FilterArticle', $article, array("id" => $id, 'subject' => $this, "partner" => $this->sSYSTEM->_SESSION["sPartner"]));
     if (!$article) {
         return false;
     }
     $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articleID'], "article");
     $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articledetailsID'], "variant");
     if ($article['configurator_set_id'] > 0) {
         $context = $this->contextService->getProductContext();
         $product = Shopware()->Container()->get('shopware_storefront.list_product_service')->get($article['ordernumber'], $context);
         $product = $this->additionalTextService->buildAdditionalText($product, $context);
         $article['additionaltext'] = $product->getAdditional();
     }
     return $article;
 }