31 $arOrder =
$params[
'arOrder'] ?? Array(
'XML_ID' =>
'asc');
32 $checkPermissions = (
$params[
'checkPermissions'] ??
true) !==
false;
34 $bCache = CCalendar::CacheTime() > 0;
40 $cachePath = CCalendar::CachePath().
'type_list';
42 if ($cache->InitCache(CCalendar::CacheTime(), $cacheId, $cachePath))
44 $res = $cache->GetVars();
46 $arTypeXmlIds =
$res[
"arTypeXmlIds"];
50 if (!$bCache || !isset($arTypeXmlIds))
53 "XML_ID" => [
"FIELD_NAME" =>
"CT.XML_ID",
"FIELD_TYPE" =>
"string"],
54 "NAME" => [
"FIELD_NAME" =>
"CT.NAME",
"FIELD_TYPE" =>
"string"],
55 "ACTIVE" => [
"FIELD_NAME" =>
"CT.ACTIVE",
"FIELD_TYPE" =>
"string"],
56 "DESCRIPTION" => [
"FIELD_NAME" =>
"CT.DESCRIPTION",
"FIELD_TYPE" =>
"string"],
57 "EXTERNAL_ID" => [
"FIELD_NAME" =>
"CT.EXTERNAL_ID",
"FIELD_TYPE" =>
"string"]
64 foreach ($filter_keys as
$i => $value)
66 $n = mb_strtoupper($value);
79 foreach(
$val as $xmlId)
81 $strXml .=
",'" .
$DB->ForSql($xmlId) .
"'";
83 $arSqlSearch[] =
"CT.XML_ID in (".trim($strXml,
", ").
")";
90 if (
$n ===
'EXTERNAL_ID')
102 foreach($arOrder as $by=>
$order)
104 if (isset(
$arFields[mb_strtoupper($by)]))
106 $strOrderBy .=
$arFields[mb_strtoupper($by)][
"FIELD_NAME"] .
' '
107 . (mb_strtolower(
$order) ===
'desc' ?
'desc' :
'asc') .
',';
113 $strOrderBy =
"ORDER BY " . rtrim($strOrderBy,
",");
133 $arTypeXmlIds[] =
$arRes[
'XML_ID'];
136 if ($bCache && isset($cache))
138 $cache->StartDataCache(CCalendar::CacheTime(), $cacheId, $cachePath);
139 $cache->EndDataCache(
array(
141 "arTypeXmlIds" => $arTypeXmlIds
146 if ($checkPermissions && !empty($arTypeXmlIds))
148 $arPerm = self::GetArrayPermissions($arTypeXmlIds);
157 $typeXmlId =
$type[
'XML_ID'];
158 $typeModel = TypeModel::createFromXmlId($typeXmlId);
160 ActionDictionary::ACTION_TYPE_VIEW => [],
161 ActionDictionary::ACTION_TYPE_EDIT => [],
162 ActionDictionary::ACTION_TYPE_ACCESS => [],
166 if (
$result[ActionDictionary::ACTION_TYPE_VIEW])
170 'add' =>
$result[ActionDictionary::ACTION_TYPE_EDIT],
171 'edit' =>
$result[ActionDictionary::ACTION_TYPE_EDIT],
172 'edit_section' =>
$result[ActionDictionary::ACTION_TYPE_EDIT],
173 'access' =>
$result[ActionDictionary::ACTION_TYPE_ACCESS],
176 if (
$result[ActionDictionary::ACTION_TYPE_ACCESS])
178 $type[
'ACCESS'] = [];
179 if (!empty($arPerm[$typeXmlId]))
182 $currentAccessCodes = array_keys($arPerm[$typeXmlId]);
183 foreach ($currentAccessCodes as
$code)
185 if (!in_array(
$code, $arAccessCodes,
true))
187 $arAccessCodes[] =
$code;
190 $type[
'ACCESS'] = $arPerm[$typeXmlId];
198 CCalendar::PushAccessNames($arAccessCodes);
364 if ((!
$USER || !is_object(
$USER)) ||
$USER->CanDoOperation(
'edit_php'))
371 $userId = CCalendar::GetCurUserId();
375 CCalendar::IsBitrix24()
376 && Loader::includeModule(
'bitrix24')
377 && \CBitrix24::isPortalAdmin(
$userId)
384 ($xmlId ===
'group' || $xmlId ===
'user' || CCalendar::IsBitrix24())
385 && CCalendar::IsSocNet()
386 && CCalendar::IsSocnetAdmin()
392 return in_array($operation, self::GetOperations($xmlId,
$userId),
true);
400 $userId = CCalendar::GetCurUserId();
403 $opCacheKey = $xmlId.
'_'.
$userId;
405 if (isset(self::$userOperationsCache[$opCacheKey]) && is_array(self::$userOperationsCache[$opCacheKey]))
407 $result = self::$userOperationsCache[$opCacheKey];
433 if(!isset(self::$arOp[
$key]) || !is_array(self::$arOp[
$key]))
435 if(!isset(self::$Permissions[$xmlId]))
437 self::GetArrayPermissions([$xmlId]);
439 $perms = self::$Permissions[$xmlId];
441 self::$arOp[
$key] = [];
444 foreach($perms as
$code => $taskId)
453 $result = self::$userOperationsCache[$opCacheKey] = self::$arOp[
$key];