17 if (!(
$arFields[
'RESULT'] ??
null) || !Loader::includeModule(
"iblock"))
22 $departmentIBlockId = (int)\
Bitrix\
Main\
Config\Option::get(
'intranet',
'iblock_structure', 0);
23 if ($departmentIBlockId <= 0)
30 $arFieldsDepartments =
34 self::$storedData = self::getAffectedDepartments($arFieldsDepartments, $departmentIBlockId);
49 || !Loader::includeModule(
"iblock")
55 $departmentIBlockId = (int)\
Bitrix\
Main\
Config\Option::get(
'intranet',
'iblock_structure', 0);
56 if ($departmentIBlockId <= 0)
61 $user = \CUser::GetList(
65 [
'FIELDS' => [
'ID'],
'SELECT' => [
'UF_DEPARTMENT']]
68 if (!isset(
$user[
'UF_DEPARTMENT']))
74 $oldDepartments =
$user[
'UF_DEPARTMENT'];
78 $oldDepartments = [
$user[
'UF_DEPARTMENT']];
87 $newDepartments =
$arFields[
'UF_DEPARTMENT'];
91 $newDepartments = [
$arFields[
'UF_DEPARTMENT']];
94 if (!self::isUserDepartmentsUpdated($oldDepartments, $newDepartments))
99 $departments = array_unique(
106 self::$storedData = self::getAffectedDepartments($departments, $departmentIBlockId);
109 private static function isUserDepartmentsUpdated(
array $oldValue,
array $newValue): bool
111 return self::convertArrayValuesToInteger($oldValue) !== self::convertArrayValuesToInteger($newValue);
114 private static function convertArrayValuesToInteger(
array $array):
array
116 return array_map(
static function($value){
127 if (empty(self::$storedData) || !(
$arFields[
'RESULT'] ??
null) ||!Loader::includeModule(
"iblock"))
148 $departmentIBlockId = (int)\
Bitrix\
Main\
Config\Option::get(
'intranet',
'iblock_structure', 0);
149 if ($departmentIBlockId > 0 && !empty(
$user[
'UF_DEPARTMENT']))
151 self::$storedData = self::getAffectedDepartments(
$user[
'UF_DEPARTMENT'], $departmentIBlockId);
161 if (!Loader::includeModule(
"iblock") || \CUser::GetByID(
$userId)->Fetch())
178 || !Loader::includeModule(
"iblock")
179 || !self::isDepartmentIBlock(
$arFields[
'IBLOCK_ID'])
185 self::$storedData = self::getAffectedDepartments(
$arFields[
'IBLOCK_SECTION_ID'],
$arFields[
'IBLOCK_ID']);
200 || !Loader::includeModule(
"iblock")
201 || !self::isDepartmentIBlock(
$arFields[
'IBLOCK_ID'])
207 $updatingDepartment = \CIBlockSection::GetByID(
$arFields[
'ID'])->Fetch();
208 if ((
$arFields[
'IBLOCK_SECTION_ID']) === $updatingDepartment[
'IBLOCK_SECTION_ID'])
213 $departments = array_unique(
216 [$updatingDepartment[
'IBLOCK_SECTION_ID']],
220 self::$storedData = self::getAffectedDepartments($departments,
$arFields[
'IBLOCK_ID']);
229 if (empty(self::$storedData) || !(
$arFields[
'RESULT'] ??
null) || !Loader::includeModule(
"iblock"))
242 private static function getAffectedDepartments($departments,
int $departmentIBlockId):
array
244 if (!is_array($departments))
246 $departments = [$departments];
249 $affectedDepartments = [];
251 foreach ($departments as $departmentId)
253 $result = \CIBlockSection::GetNavChain($departmentIBlockId, $departmentId, [
'ID'],
true);
254 foreach (
$result as $affectedDepartment)
256 if(!in_array($affectedDepartment, $affectedDepartments))
258 $affectedDepartments[] = $affectedDepartment;
263 return $affectedDepartments;
269 private static function prepareBatchOfMessagesData():
array
272 foreach (self::$storedData as $affectedDepartment)
274 if (!empty($affectedDepartment[
'ID']))
277 'entityType' => self::DEPARTMENT_TYPE,
278 'entityId' => $affectedDepartment[
'ID'],
283 if(self::DO_UPDATE_ALL_EVENTS)
286 'entityType' => self::ALL_USERS_TYPE,
297 private static function isDepartmentIBlock(
int $IBlockId): bool
299 $departmentIBlockId = (int)\Bitrix\Main\Config\Option::get(
'intranet',
'iblock_structure', 0);
301 return $departmentIBlockId > 0 && $departmentIBlockId === $IBlockId;
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)