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/Classes/UrlClass.php +0 -114 11.0.2 → 11.1.1 View file →
@@ -1,114 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Classes;
4 -
5 -use AcyMailing\Core\AcymClass;
6 -
7 -class UrlClass extends AcymClass
8 -{
9 - public function __construct()
10 - {
11 - parent::__construct();
12 -
13 - $this->table = 'url';
14 - $this->pkey = 'id';
15 - }
16 -
17 - public function save(object $url): ?int
18 - {
19 - if (empty($url)) {
20 - return null;
21 - }
22 -
23 - foreach ($url as $oneAttribute => $value) {
24 - if (empty($value)) {
25 - continue;
26 - }
27 -
28 - $url->$oneAttribute = acym_stripTags($value);
29 - }
30 -
31 - return parent::save($url);
32 - }
33 -
34 - public function getOneUrlById(int $id): ?object
35 - {
36 - $url = acym_loadObject('SELECT * FROM #__acym_url WHERE `id` = '.intval($id));
37 -
38 - return empty($url) ? null : $url;
39 - }
40 -
41 - public function getUrl(string $url, int $mailid, int $userid, string $userkey = ''): string
42 - {
43 - if (empty($url) || empty($mailid) || empty($userid)) {
44 - return '';
45 - }
46 -
47 - static $allurls;
48 -
49 - $url = str_replace('&amp;', '&', $url);
50 -
51 - if (empty($allurls[$url])) {
52 - $allurls[$url] = $this->getAdd($url);
53 - }
54 -
55 - if (empty($allurls[$url]->id)) {
56 - return $url;
57 - }
58 -
59 - $trackingUrl = acym_frontendLink('fronturl&task=click&urlid='.$allurls[$url]->id.'&userid='.$userid.'&mailid='.$mailid);
60 -
61 - if (!empty($userkey)) {
62 - $trackingUrl .= (strpos($trackingUrl, '?') === false ? '?' : '&').'userkey='.urlencode($userkey);
63 - }
64 -
65 - return $trackingUrl;
66 - }
67 -
68 - // Used in checkDB to address a bug before the 12/04/19
69 - public function getDuplicatedUrls(): array
70 - {
71 - return acym_loadResultArray(
72 - 'SELECT DISTINCT duplicates.id
73 - FROM #__acym_url AS duplicates
74 - JOIN #__acym_url AS original ON duplicates.url = original.url
75 - JOIN #__acym_url_click AS clickoriginal ON original.id = clickoriginal.url_id
76 - LEFT JOIN #__acym_url_click AS click ON duplicates.id = click.url_id
77 - WHERE click.url_id IS NULL
78 - LIMIT 500'
79 - );
80 - /*
81 - To clean the potential duplicated rows in the #__acym_url table, you can execute this query when no email is being sent:
82 - DELETE url.*
83 - FROM #__acym_url AS url
84 - LEFT JOIN #__acym_url_click AS urlclick ON url.id = urlclick.url_id
85 - WHERE urlclick.url_id IS NULL
86 -
87 - If an email is currently being sent, exclude its urls from the delete query
88 - */
89 - }
90 -
91 - private function getAdd(string $url): ?object
92 - {
93 - $currentUrl = $this->getOneByUrl($url);
94 - if (empty($currentUrl->id)) {
95 - $currentUrl = new \stdClass();
96 - $currentUrl->name = $url;
97 - $currentUrl->url = $url;
98 - $currentUrl->id = $this->save($currentUrl);
99 -
100 - if (empty($currentUrl->id)) {
101 - return null;
102 - }
103 - }
104 -
105 - return $currentUrl;
106 - }
107 -
108 - private function getOneByUrl(string $url): ?object
109 - {
110 - $url = acym_loadObject('SELECT * FROM #__acym_url WHERE `url` = '.acym_escapeDB($url));
111 -
112 - return empty($url) ? null : $url;
113 - }
114 -}