Exemplo n.º 1
0
 /**
  * Finds and fetches variation for selected product and variation ID.
  *
  * @param Product\Variable $product     Parent product.
  * @param int              $variationId Variation ID.
  *
  * @return Product\Variable\Variation The variation.
  */
 public function getVariation(Product\Variable $product, $variationId)
 {
     $wpdb = $this->wp->getWPDB();
     $query = $wpdb->prepare("\n\t\t\tSELECT * FROM {$wpdb->prefix}jigoshop_product_variation_attribute pva\n\t\t\t\tWHERE pva.variation_id = %d\n\t\t", array($variationId));
     $results = $wpdb->get_results($query, ARRAY_A);
     $variation = new VariableProduct\Variation();
     $variation->setId($variationId);
     $variation->setParent($product);
     /** @var Product $variableProduct */
     $variableProduct = $this->productService->find($variationId);
     $variation->setProduct($variableProduct);
     $results = array_filter($results, function ($item) {
         return $item['attribute_id'] !== null;
     });
     foreach ($results as $source) {
         $attribute = new VariableProduct\Attribute(VariableProduct\Attribute::VARIATION_ATTRIBUTE_EXISTS);
         $attribute->setAttribute($product->getAttribute($source['attribute_id']));
         $attribute->setValue($source['value']);
         if ($attribute->getAttribute() !== null) {
             $variation->addAttribute($attribute);
         }
     }
     return $variation;
 }