PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.10.2
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.10.2
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
acymailing / back / Classes / UrlClass.php

UrlClass.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.10.2, at back/Classes/UrlClass.php

105 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 = strip_tags($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 public function getDuplicatedUrls(): array
69 {
70 return acym_loadResultArray(
71 'SELECT DISTINCT duplicates.id
72 FROM #__acym_url AS duplicates
73 JOIN #__acym_url AS original ON duplicates.url = original.url
74 JOIN #__acym_url_click AS clickoriginal ON original.id = clickoriginal.url_id
75 LEFT JOIN #__acym_url_click AS click ON duplicates.id = click.url_id
76 WHERE click.url_id IS NULL
77 LIMIT 500'
78 );
79 }
80
81 private function getAdd(string $url): ?object
82 {
83 $currentUrl = $this->getOneByUrl($url);
84 if (empty($currentUrl->id)) {
85 $currentUrl = new \stdClass();
86 $currentUrl->name = $url;
87 $currentUrl->url = $url;
88 $currentUrl->id = $this->save($currentUrl);
89
90 if (empty($currentUrl->id)) {
91 return null;
92 }
93 }
94
95 return $currentUrl;
96 }
97
98 private function getOneByUrl(string $url): ?object
99 {
100 $url = acym_loadObject('SELECT * FROM #__acym_url WHERE `url` = '.acym_escapeDB($url));
101
102 return empty($url) ? null : $url;
103 }
104 }
105