/**
  * {@inheritDoc}
  */
 public function getSimilar()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSimilar', array());
     return parent::getSimilar();
 }
Example #2
0
 /**
  * @param array $data
  * @param \Shopware\Models\Article\Article $article
  * @throws \Shopware\Components\Api\Exception\CustomValidationException
  * @return array
  */
 protected function prepareSimilarAssociatedData($data, ArticleModel $article)
 {
     if (!isset($data['similar'])) {
         return $data;
     }
     $similar = $this->checkDataReplacement($article->getSimilar(), $data, 'similar', true);
     foreach ($data['similar'] as $similarData) {
         if (empty($similarData['number']) && empty($similarData['id'])) {
             continue;
         }
         $similarArticle = null;
         if ($similarData['number']) {
             $articleId = $this->getManager()->getConnection()->fetchColumn("SELECT articleID FROM s_articles_details WHERE ordernumber = :number", array(':number' => $similarData['number']));
             if ($articleId) {
                 $similarArticle = $this->getManyToManySubElement($similar, array('id' => $articleId), '\\Shopware\\Models\\Article\\Article');
             }
         }
         if (!$similarArticle) {
             $similarArticle = $this->getManyToManySubElement($similar, $similarData, '\\Shopware\\Models\\Article\\Article');
         }
         //no valid entity found, throw exception!
         if (!$similarArticle) {
             $property = $similarData['number'] ? $similarData['number'] : $similarData['id'];
             throw new ApiException\CustomValidationException(sprintf("Similar Article by number/id %s not found", $property));
         }
         /**@var $similarArticle ArticleModel */
         if ($similarData['cross']) {
             $similarArticle->getSimilar()->add($article);
         }
     }
     $data['similar'] = $similar;
     return $data;
 }