95 static $checkedMailboxes = [];
97 if (!array_key_exists($checkedMailboxId, $checkedMailboxes))
99 if (is_null($ownerMailboxUserId))
101 $checkedMailboxes[$checkedMailboxId] = MailboxTable::getList(([
107 '=ID' => $checkedMailboxId,
113 $checkedMailboxes[$checkedMailboxId] = [
114 'ID' => $checkedMailboxId,
115 'USER_ID' => $ownerMailboxUserId,
120 if ($checkedMailboxes[$checkedMailboxId] && isset($checkedMailboxes[$checkedMailboxId][
'USER_ID']))
122 $userId = (int) $checkedMailboxes[$checkedMailboxId][
'USER_ID'];
124 static $userMailboxes = [];
126 if (!array_key_exists(
$userId, $userMailboxes))
128 $userMailboxes = MailboxTable::query()->addSelect(
'ID')
131 'TARIFF_RESTRICTIONS' =>
'OPTIONS.VALUE',
134 ->where(
'ACTIVE',
'Y')
135 ->registerRuntimeField(
139 MailEntityOptionsTable::class,
140 Join::on(
'this.ID',
'ref.MAILBOX_ID')->where(
'ref.PROPERTY_NAME',
'TARIFF_RESTRICTIONS'),
141 [
'join_type' => Join::TYPE_LEFT],
146 if ($maxCountAvailableMailboxes < 0)
148 $activateMailboxes = self::getTariffRestrictionsMailboxListsByDBData(array_slice($userMailboxes, 0,
count($userMailboxes)), static::MAILBOX_IS_LOCKED_PROPERTY);
149 static::changeTariffRestrictionsOnTheMailboxes($activateMailboxes, static::MAILBOX_IS_AVAILABLE_PROPERTY);
150 $mailboxAvailabilitySyncStatus =
true;
154 $activateMailboxes = self::getTariffRestrictionsMailboxListsByDBData(array_slice($userMailboxes, 0, $maxCountAvailableMailboxes), static::MAILBOX_IS_LOCKED_PROPERTY);
155 $blockMailboxes = self::getTariffRestrictionsMailboxListsByDBData(array_slice($userMailboxes, $maxCountAvailableMailboxes), static::MAILBOX_IS_AVAILABLE_PROPERTY);
157 if (self::checkIdInTariffRestrictionsMailboxLists($checkedMailboxId, $activateMailboxes))
159 $mailboxAvailabilitySyncStatus =
true;
161 else if(self::checkIdInTariffRestrictionsMailboxLists($checkedMailboxId, $blockMailboxes))
163 $mailboxAvailabilitySyncStatus =
false;
167 $mailboxAvailabilitySyncStatus = self::getAvailabilitySyncStatusByMailboxList($checkedMailboxId, $userMailboxes);
170 self::sendNotificationsAboutBlockedMailboxes($blockMailboxes[
'IDS_ALL']);
171 static::changeTariffRestrictionsOnTheMailboxes($activateMailboxes, static::MAILBOX_IS_AVAILABLE_PROPERTY);
172 static::changeTariffRestrictionsOnTheMailboxes($blockMailboxes, static::MAILBOX_IS_LOCKED_PROPERTY);
175 return $mailboxAvailabilitySyncStatus;
183 if (isset($tariffRestrictionsMailboxLists[
'IDS_FOR_ADD']) &&
count($tariffRestrictionsMailboxLists[
'IDS_FOR_ADD']))
186 foreach ($tariffRestrictionsMailboxLists[
'IDS_FOR_ADD'] as $id)
190 'ENTITY_TYPE' =>
'MAILBOX',
192 'PROPERTY_NAME' =>
'TARIFF_RESTRICTIONS',
193 'VALUE' => $tariffRestrictionsType,
198 foreach ($rowsForAdd as $row)
201 '=MAILBOX_ID' => $row[
'MAILBOX_ID'],
202 '=ENTITY_TYPE' =>
'MAILBOX',
203 '=ENTITY_ID' => $row[
'ENTITY_ID'],
204 '=PROPERTY_NAME' =>
'TARIFF_RESTRICTIONS',
208 'MAILBOX_ID' => $row[
'MAILBOX_ID'],
209 'ENTITY_TYPE' =>
'MAILBOX',
210 'ENTITY_ID' => $row[
'ENTITY_ID'],
211 'PROPERTY_NAME' =>
'TARIFF_RESTRICTIONS',
214 if (MailEntityOptionsTable::getCount(
$filter))
216 MailEntityOptionsTable::update(
219 'VALUE' => $row[
'VALUE'],
226 MailEntityOptionsTable::add($row);
231 if (isset($tariffRestrictionsMailboxLists[
'IDS_FOR_UPDATE']) &&
count($tariffRestrictionsMailboxLists[
'IDS_FOR_UPDATE']))
234 foreach ($tariffRestrictionsMailboxLists[
'IDS_FOR_UPDATE'] as $id)
238 'ENTITY_TYPE' =>
'MAILBOX',
240 'PROPERTY_NAME' =>
'TARIFF_RESTRICTIONS',
244 if (
count($rowsForUpdate))
246 MailEntityOptionsTable::updateMulti($rowsForUpdate, [
247 'VALUE' => $tariffRestrictionsType,