/** * @param Campaign $campaign * @param array $array * @return Campaign|Content */ public static function createFromArray(Campaign $campaign = null, array $array = array()) { $defaults = array("view_count" => 0, "like_count" => 0, "dislike_count" => 0, "favorite_count" => 0, "comment_count" => 0, "tw_share_count" => 0, "fb_share_count" => 0); $array = array_merge($defaults, $array); $content = new self($array['id'], $campaign); $content->setSource($array['source']); $content->setFoundAt(new \DateTime($array['found_at'])); $content->setNativeId($array['native_id']); $content->setCreatedAt(new \DateTime($array['created_at'])); $content->setUrl($array['url']); $content->setThumb($array['thumb']); $content->setVideoSrc($array['video_src']); $content->setTitle($array['title']); $content->setDescription($array['description']); $content->setVideoLength($array['video_length']); $content->setUsername($array['username']); $content->setViewCount($array['view_count']); $content->setLikeCount($array['like_count']); $content->setDislikeCount($array['dislike_count']); $content->setFavCount($array['favorite_count']); $content->setCommentCount($array['comment_count']); $content->setTwCount($array['tw_share_count']); $content->setFbCount($array['fb_share_count']); $content->setProcessed($array['processed']); if ($array['processed']) { $content->setProcessedAt(new \DateTime($array['processed_at'])); } $content->setKeyword($array['keyword']); $content->setUserNativeId($array['user_native_id']); if (isset($array['popularity'])) { $content->setPopularity($array['popularity']); } if (isset($array['sr_status'])) { $content->setSrStatus($array['sr_status']); } else { if (isset($array['srstatus'])) { $content->setSrStatus($array['srstatus']); } } if (isset($array['followers'])) { $content->setUserReach($array['followers']); } return $content; }
public function process($context = null) { // create empty array with keys from $this->processed $processed = array(); if (count($this->getPricingElements()) !== 0) { /** @var \Vespolina\Entity\Pricing\PricingElementInterface $element */ foreach ($this->getPricingElements() as $element) { $processed = array_merge($this->processed, $element->process($context, $processed)); } } else { $processed = $this->processed; } if (isset($context['taxRate'])) { $tax = $processed['netValue'] * $context['taxRate']; $processed['taxes'] = $tax; $processed['totalValue'] = $processed['totalValue'] + $tax; } $newSet = new self(); $newSet->setProcessed($processed); $newSet->setProcessingState(self::PROCESSING_FINISHED); $this->processingState = self::PROCESSING_FINISHED; return $newSet; }