1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
usersignature.php
См. документацию.
1<?php
2
3namespace Bitrix\Mail\Controller;
4
5use Bitrix\Mail\Internals\UserSignatureTable;
6use Bitrix\Main;
7use Bitrix\Main\Engine\CurrentUser;
8use Bitrix\Main\Error;
9use Bitrix\Main\Localization\Loc;
10
11class UserSignature extends Base
12{
14
19 public function addAction(array $fields)
20 {
21 $unsafeFields = (array) $this->getRequest()->getPostList()->getRaw('fields');
22
23 if (($limit = Main\Config\Option::get('mail', 'user_signatures_limit', static::USER_SIGNATURES_LIMIT)) > 0)
24 {
25 $count = UserSignatureTable::getCount(array(
26 'USER_ID' => CurrentUser::get()->getId(),
27 ));
28 if ($count >= $limit)
29 {
30 Loc::loadMessages(__FILE__);
31 $this->errorCollection[] = new Error(Loc::getMessage('MAIL_USER_SIGNATURE_LIMIT'));
32 return false;
33 }
34 }
35
36 $userSignature = new \Bitrix\Mail\Internals\Entity\UserSignature;
37
38 $userSignature->set('USER_ID', CurrentUser::get()->getId());
39 $userSignature->set('SENDER', $fields['sender']);
40 $userSignature->set('SIGNATURE', $this->sanitize($unsafeFields['signature']));
41
42 $result = $userSignature->save();
43
44 if($result->isSuccess())
45 {
46 $userSignature = UserSignatureTable::getById($result->getId())->fetchObject();
47 return $this->getAction($userSignature);
48 }
49 else
50 {
51 $this->errorCollection = $result->getErrors();
52 return false;
53 }
54 }
55
56 protected function checkAccess(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature): bool
57 {
58 $currentUserId = $this->getCurrentUser()?->getId();
59
60 if (!is_null($currentUserId) && (int)$userSignature->getUserId() === (int)$currentUserId)
61 {
62 return true;
63 }
64
65 $this->addError(new Error(Loc::getMessage('MAIL_USER_SIGNATURE_ACCESS_DENIED')));
66 return false;
67 }
68
72 public function deleteAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature): bool
73 {
74 if (!$this->checkAccess($userSignature))
75 {
76 return false;
77 }
78
79 $userSignature->delete();
80 return true;
81 }
82
83 public function getAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature): bool|array
84 {
85 if (!$this->checkAccess($userSignature))
86 {
87 return false;
88 }
89
90 return [
91 'userSignature' => $this->convertArrayKeysToCamel($userSignature->collectValues(), 1),
92 ];
93 }
94
100 public function updateAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature, array $fields): bool|array
101 {
102 if (!$this->checkAccess($userSignature))
103 {
104 return false;
105 }
106
107 $unsafeFields = (array) $this->getRequest()->getPostList()->getRaw('fields');
108
109 $userSignature->set('SENDER', $fields['sender']);
110 $userSignature->set('SIGNATURE', $this->sanitize($unsafeFields['signature']));
111
112 $result = $userSignature->save();
113 if($result->isSuccess())
114 {
115 return $this->getAction($userSignature);
116 }
117 else
118 {
119 $this->errorCollection = $result->getErrors();
120 return false;
121 }
122 }
123}
$count
Определения admin_tab.php:4
convertArrayKeysToCamel(array $array, $levels=0, $currentLevel=0)
Определения base.php:46
sanitize($text)
Определения base.php:26
checkAccess(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature)
Определения usersignature.php:56
addAction(array $fields)
Определения usersignature.php:19
deleteAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature)
Определения usersignature.php:72
getAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature)
Определения usersignature.php:83
updateAction(\Bitrix\Mail\Internals\Entity\UserSignature $userSignature, array $fields)
Определения usersignature.php:100
Определения error.php:15
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
Определения ufield.php:9
Определения address.php:8
$fields
Определения yandex_run.php:501