PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.1
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
← All changes | back/dynamics/sendinblue/campaign.php +0 -95 trunk → 11.1.1 View file →
@@ -1,95 +1,0 @@
1 -<?php
2 -
3 -class SendinblueCampaign extends SendinblueClass
4 -{
5 - private SendinblueSender $sender;
6 - private SendinblueUsers $user;
7 - private SendinblueList $list;
8 -
9 - public function __construct(&$plugin, $headers, $sender, $user, $list)
10 - {
11 - parent::__construct($plugin, $headers);
12 - $this->sender = $sender;
13 - $this->user = $user;
14 - $this->list = $list;
15 - }
16 -
17 - public function createNewCampaign($mail, $content)
18 - {
19 - $listIdBrevo = 0;
20 - $this->list->getListExternalSendingMethod($listIdBrevo, $mail->id);
21 -
22 - $subjectAttribute = $this->user->getSubjectAttributeName($mail->id);
23 - $contentAttribute = $this->user->getAttributeName($mail->id);
24 -
25 - if (strpos($content, 'acym__wysid__template') === false || strpos($content, '<body') === false) {
26 - $commonContent = '<html>{% autoescape off %}{{ contact.'.$contentAttribute.' }}{% endautoescape %}</html>';
27 - } else {
28 - $commonContent = preg_replace('#<title>(.*)</title>#Uis', '<title>{{ contact.'.$subjectAttribute.' }}</title>', $content);
29 - $commonContent = preg_replace('#(<body[^>]*>).*</body>#Uis', '$1{% autoescape off %}{{ contact.'.$contentAttribute.' }}{% endautoescape %}</body>', $commonContent);
30 - }
31 -
32 - $data = [
33 - 'sender' => $this->sender->getSender($mail),
34 - 'name' => 'AcyMailing Mail '.$mail->id.' ('.$mail->subject.')',
35 - 'htmlContent' => $commonContent,
36 - 'scheduledAt' => gmdate('c', time() + 60),
37 - 'subject' => '{{ contact.'.$this->user->getSubjectAttributeName($mail->id).' }}',
38 - 'replyTo' => $this->sender->getReplyToEmail($mail),
39 - 'recipients' => [
40 - 'listIds' => [$listIdBrevo],
41 - ],
42 - 'footer' => '<span style="display: none !important;">{'.acym_translation('ACYM_UNSUBSCRIBE').'}</span>',
43 - 'inlineImageActivation' => !empty($this->config->get('embed_images', 0)),
44 - ];
45 -
46 - $this->callApiSendingMethod('emailCampaigns', $data, $this->headers, 'POST');
47 - }
48 -
49 - public function cleanCampaigns(): bool
50 - {
51 - $cleanFrequency = $this->config->get(plgAcymSendinblue::SENDING_METHOD_ID.'_clean_frequency', 2592000);
52 - $lastClean = $this->config->get(plgAcymSendinblue::SENDING_METHOD_ID.'_last_clean', 0);
53 -
54 - $time = time();
55 -
56 - if (!empty($lastClean) && $lastClean < ($time + $cleanFrequency)) return true;
57 -
58 - $response = $this->callApiSendingMethod(
59 - plgAcymSendinblue::SENDING_METHOD_API_URL.'emailCampaigns?status=sent&limit=500&offset=0&sort=desc',
60 - [],
61 - $this->headers
62 - );
63 -
64 - if (empty($response['campaigns'])) {
65 - return true;
66 - }
67 -
68 - foreach ($response['campaigns'] as $campaign) {
69 - //If it is a recent campaign we don't delete it
70 - $sendDate = strtotime($campaign['sentDate'].' UTC');
71 - if ($sendDate > $time - $cleanFrequency) continue;
72 -
73 - //If it's not an AcyMailing campaign we get out
74 - preg_match('#AcyMailing Mail ([0-9]+)#is', $campaign['name'], $match);
75 - if (empty($match)) continue;
76 -
77 - //We get the id of the email
78 - $id = intval($match[1]);
79 -
80 - if (empty($id)) continue;
81 -
82 - //We delete what we created in Sendinblue
83 - $this->user->deleteAttribute($id);
84 - $this->list->deleteList($id);
85 - $this->deleteCampaign($campaign['id']);
86 - }
87 -
88 - return true;
89 - }
90 -
91 - public function deleteCampaign($brevoCampaignId)
92 - {
93 - $this->callApiSendingMethod(plgAcymSendinblue::SENDING_METHOD_API_URL.'emailCampaigns/'.$brevoCampaignId, [], $this->headers, 'DELETE');
94 - }
95 -}