1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
consentbuildermail.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Sender\Integration\Sender\Mail
;
4
5
use
Bitrix\Main\Application
;
6
use
Bitrix\Main\ArgumentNullException
;
7
use
Bitrix\Main\IO\File
;
8
use
Bitrix\Main\SiteTable
;
9
use
Bitrix\Sender\Consent\Consent
;
10
use
Bitrix\Sender\Integration\Bitrix24\Service
;
11
use
Bitrix\Sender\Recipient
;
12
use
Bitrix\Sender\Consent\AbstractConsentMessageBuilder
;
13
use
Bitrix\Sender\Transport\iBase
;
14
15
class
ConsentBuilderMail
extends
AbstractConsentMessageBuilder
16
{
17
const
CODE
= iBase::CODE_MAIL;
18
const
REQUIRED_FIELDS
= [
'RECIPIENT_ID'
,
'CONTACT_ID'
,
'CONTACT_CODE'
,
'SITE_ID'
];
19
const
CONSENT_EVENT
=
"SENDER_CONSENT"
;
20
protected
const
APPLY
= 1;
21
protected
const
REJECT
= 2;
22
protected
const
URI
=
"/pub/mail/consent.php"
;
23
24
protected
static
function
getFilter
(): \Closure
25
{
26
return
function
($item,
$key
)
27
{
28
return
isset($item,
$key
) && in_array(
$key
, static::REQUIRED_FIELDS);
29
};
30
}
31
32
protected
static
function
filterFields
(
array
$fieldForConsent):
array
33
{
34
return
array_filter($fieldForConsent, static::getFilter(), ARRAY_FILTER_USE_BOTH);
35
}
36
37
protected
static
function
checkRequireFields
(
$fields
): bool
38
{
39
foreach
(static::REQUIRED_FIELDS as $field)
40
{
41
if
(!array_key_exists($field,
$fields
))
42
{
43
return
false
;
44
}
45
}
46
return
true
;
47
}
48
52
public
function
buildMessage
():
array
53
{
54
[
'CONTACT_CODE'
=>
$code
,
'SITE_ID'
=>
$siteId
] =
$this->fields
;
55
$typeId =
Recipient\Type::detect
(
$code
);
56
$code
=
Recipient\Normalizer::normalize
(
$code
, $typeId);
57
return
[
58
"EVENT_NAME"
=> static::CONSENT_EVENT,
59
"C_FIELDS"
=> [
60
"EMAIL"
=>
$code
,
61
"SENDER_CONSENT_APPLY"
=> $this->
buildLinkApply
(),
62
"SENDER_CONSENT_REJECT"
=> $this->
buildLinkReject
(),
63
],
64
"LID"
=> is_array(
$siteId
) ? implode(
","
,
$siteId
) :
$siteId
,
65
];
66
}
67
68
protected
function
buildLinkApply
(): string
69
{
70
return
static::buildLink([
71
'CODE'
=> $this->fields[
'CONTACT_CODE'
] ??
''
,
72
'CONTACT'
=> $this->fields[
'CONTACT_ID'
] ??
''
,
73
'RECIPIENT'
=> $this->fields[
'RECIPIENT_ID'
] ??
''
,
74
'POSTING'
=> $this->fields[
'POSTING_ID'
] ??
''
,
75
'CONSENT'
=> $this->fields[
'CONSENT_ID'
] ??
''
,
76
], $this->fields[
'SITE_ID'
] ??
''
, static::APPLY);
77
}
78
79
protected
function
buildLinkReject
(): string
80
{
81
return
static::buildLink([
82
'CODE'
=> $this->fields[
'CONTACT_CODE'
] ??
''
,
83
'CONTACT'
=> $this->fields[
'CONTACT_ID'
] ??
''
,
84
'RECIPIENT'
=> $this->fields[
'RECIPIENT_ID'
] ??
''
,
85
'POSTING'
=> $this->fields[
'POSTING_ID'
] ??
''
,
86
'CONSENT'
=> $this->fields[
'CONSENT_ID'
] ??
''
,
87
], $this->fields[
'SITE_ID'
], static::REJECT);
88
}
89
90
protected
static
function
buildQuery
(
array
$fields
): string
91
{
92
return
http_build_query(
$fields
);
93
}
94
95
protected
static
function
buildLink
(
$fields
,
$siteId
,
$type
): string
96
{
97
$tag = Consent::encodeTag(
$fields
);
98
$dir
= static::getLink(
$siteId
);
99
switch
(
$type
)
100
{
101
case
static::APPLY:
102
$result
=
$dir
.
'?'
. static::buildQuery([
'consent'
=>
'apply'
,
'type'
=> static::CODE,
'tag'
=> $tag]);
103
break
;
104
case
static::REJECT:
105
$result
=
$dir
.
'?'
. static::buildQuery([
'consent'
=>
'reject'
,
'type'
=> static::CODE,
'tag'
=> $tag]);
106
break
;
107
default
:
108
throw
new \InvalidArgumentException(
"Type is out of range"
);
109
}
110
return
$result
;
111
}
112
113
protected
static
function
checkUri
(
$siteId
): bool
114
{
115
return
$siteId
&& File::isFileExists(SiteTable::getDocumentRoot(
$siteId
) . DIRECTORY_SEPARATOR . static::URI);
116
}
117
118
protected
static
function
getLink
(
$siteId
): ?string
119
{
120
$uri
=
null
;
121
if
(static::checkUri(
$siteId
))
122
{
123
$uri
= Service::replaceTrackingDomainIfNeed(static::URI);
124
}
125
return
$uri
;
126
}
127
}
$type
$type
Определения
options.php:106
Bitrix\Main\Application
Определения
application.php:30
Bitrix\Main\ArgumentNullException
Определения
ArgumentNullException.php:9
Bitrix\Main\SiteTable
Определения
site.php:31
Bitrix\Sender\Consent\AbstractConsentMessageBuilder
Определения
abstractconsentmessagebuilder.php:6
Bitrix\Sender\Consent\AbstractConsentMessageBuilder\$fields
$fields
Определения
abstractconsentmessagebuilder.php:7
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail
Определения
consentbuildermail.php:16
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\buildLinkReject
buildLinkReject()
Определения
consentbuildermail.php:79
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\CODE
const CODE
Определения
consentbuildermail.php:17
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\buildMessage
buildMessage()
Определения
consentbuildermail.php:52
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\REJECT
const REJECT
Определения
consentbuildermail.php:21
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\REQUIRED_FIELDS
const REQUIRED_FIELDS
Определения
consentbuildermail.php:18
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\buildLink
static buildLink($fields, $siteId, $type)
Определения
consentbuildermail.php:95
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\checkUri
static checkUri($siteId)
Определения
consentbuildermail.php:113
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\APPLY
const APPLY
Определения
consentbuildermail.php:20
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\getLink
static getLink($siteId)
Определения
consentbuildermail.php:118
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\getFilter
static getFilter()
Определения
consentbuildermail.php:24
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\buildQuery
static buildQuery(array $fields)
Определения
consentbuildermail.php:90
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\CONSENT_EVENT
const CONSENT_EVENT
Определения
consentbuildermail.php:19
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\buildLinkApply
buildLinkApply()
Определения
consentbuildermail.php:68
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\filterFields
static filterFields(array $fieldForConsent)
Определения
consentbuildermail.php:32
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\URI
const URI
Определения
consentbuildermail.php:22
Bitrix\Sender\Integration\Sender\Mail\ConsentBuilderMail\checkRequireFields
static checkRequireFields($fields)
Определения
consentbuildermail.php:37
Bitrix\Sender\Recipient\Normalizer\normalize
static normalize($code, $typeId=Type::EMAIL)
Определения
normalizer.php:28
Bitrix\Sender\Recipient\Type\detect
static detect($recipientCode, $isNormalized=false)
Определения
type.php:39
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
Bitrix\Sender\Message\iBase
Определения
ibase.php:16
$code
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения
options.php:195
$uri
if(file_exists($_SERVER['DOCUMENT_ROOT'] . "/urlrewrite.php")) $uri
Определения
urlrewrite.php:61
$siteId
$siteId
Определения
ajax.php:8
Bitrix\Main\File
Определения
Image.php:9
Bitrix\Main\Service
Bitrix\Sender\Consent
Определения
abstractconsentmessagebuilder.php:3
Bitrix\Sender\Integration\Sender\Mail
Определения
consentbuildermail.php:3
Bitrix\Sender\Recipient
Определения
agent.php:8
$dir
$dir
Определения
quickway.php:303
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
bitrix
modules
sender
lib
integration
sender
mail
consentbuildermail.php
Создано системой
1.14.0