/**
  * Collects all price influencer from (in the mentioned order):
  * - article
  * - attribute
  * - attribute value
  *
  * @param \Abra\Cadabra\Domain\Model\Article $article
  * @return \SplObjectStorage
  */
 public static function collectPriceInfluencerFromArticle($article)
 {
     $priceInfluencer = new \SplObjectStorage();
     foreach ($article->getPriceInfluencer() as $articlePriceInfluencer) {
         $priceInfluencer->attach($articlePriceInfluencer);
     }
     /** @var \Abra\Cadabra\Domain\Model\ArticleFeature $feature */
     foreach ($article->getFeatures() as $feature) {
         foreach ($feature->getAttribute()->getPriceInfluencer() as $attributePriceInfluencer) {
             $priceInfluencer->attach($attributePriceInfluencer);
         }
         foreach ($feature->getAttributeValue()->getPriceInfluencer() as $attributeFeaturePriceInfluencer) {
             $priceInfluencer->attach($attributeFeaturePriceInfluencer);
         }
     }
     return $priceInfluencer;
 }