newslettersStatsRepository = $newslettersStatsRepository; $this->newslettersRepository = $newslettersRepository; $this->entityManager = $entityManager; $this->newsletterUrl = $newsletterUrl; $this->sendingQueuesRepository = $sendingQueuesRepository; $this->logRepository = $logRepository; } public function build(NewsletterEntity $newsletter, $relations = []) { $data = [ 'id' => (string)$newsletter->getId(), // (string) for BC 'hash' => $newsletter->getHash(), 'subject' => $newsletter->getSubject(), 'type' => $newsletter->getType(), 'sender_address' => $newsletter->getSenderAddress(), 'sender_name' => $newsletter->getSenderName(), 'status' => $newsletter->getStatus(), 'reply_to_address' => $newsletter->getReplyToAddress(), 'reply_to_name' => $newsletter->getReplyToName(), 'preheader' => $newsletter->getPreheader(), 'body' => $newsletter->getBody(), 'sent_at' => ($sentAt = $newsletter->getSentAt()) ? $sentAt->format(self::DATE_FORMAT) : null, 'created_at' => ($createdAt = $newsletter->getCreatedAt()) ? $createdAt->format(self::DATE_FORMAT) : null, 'updated_at' => $newsletter->getUpdatedAt()->format(self::DATE_FORMAT), 'deleted_at' => ($deletedAt = $newsletter->getDeletedAt()) ? $deletedAt->format(self::DATE_FORMAT) : null, 'parent_id' => ($parent = $newsletter->getParent()) ? $parent->getId() : null, 'unsubscribe_token' => $newsletter->getUnsubscribeToken(), 'ga_campaign' => $newsletter->getGaCampaign(), 'wp_post_id' => $newsletter->getWpPostId(), 'campaign_name' => $newsletter->getCampaignName(), ]; foreach ($relations as $relation) { if ($relation === self::RELATION_QUEUE) { $data['queue'] = ($queue = $newsletter->getLatestQueue()) ? $this->buildQueue($queue) : false; // false for BC } if ($relation === self::RELATION_SEGMENTS) { $data['segments'] = $this->buildSegments($newsletter); } if ($relation === self::RELATION_OPTIONS) { $data['options'] = $this->buildOptions($newsletter); } if ($relation === self::RELATION_TOTAL_SENT) { $data['total_sent'] = $this->newslettersStatsRepository->getTotalSentCount($newsletter); } if ($relation === self::RELATION_CHILDREN_COUNT) { $data['children_count'] = $this->newslettersStatsRepository->getChildrenCount($newsletter); } if ($relation === self::RELATION_SCHEDULED) { $data['total_scheduled'] = $this->sendingQueuesRepository->countAllToProcessByNewsletter( $newsletter ); } if ($relation === self::RELATION_STATISTICS) { $data['statistics'] = $this->newslettersStatsRepository->getStatistics($newsletter)->asArray(); } } return $data; } private function processPersonalizationTags(?string $content): ?string { if (is_null($content) || strlen($content) === 0) { return $content; } if (strpos($content, '