10 private static ?
bool $b24Installed =
null;
12 private static array $userTypeCache = [];
14 private static array $nameCache = [
15 PropertyTable::TYPE_ELEMENT => [],
16 PropertyTable::TYPE_SECTION => [],
19 private const USER_TYPE =
'UserType';
21 public static function GetDisplayValue($arItem, $arProperty, $event1 =
'')
23 if (self::$b24Installed ===
null)
25 self::$b24Installed = ModuleManager::isModuleInstalled(
'bitrix24');
28 $arProperty[
'RAW_PROPERTY_TYPE'] = $arProperty[
'PROPERTY_TYPE'];
31 if (!empty($arProperty[
'USER_TYPE']))
33 $userTypeId = $arProperty[
'USER_TYPE'];
34 if (!isset(self::$userTypeCache[$userTypeId]))
36 self::$userTypeCache[$userTypeId] =
false;
37 $arUserType = CIBlockProperty::GetUserType($userTypeId);
38 if (isset($arUserType[
'GetPublicViewHTML']))
40 self::$userTypeCache[$userTypeId] = $arUserType[
'GetPublicViewHTML'];
49 $arProperty[
'PROPERTY_TYPE'] = self::USER_TYPE;
50 if ($arProperty[
'MULTIPLE'] ===
'N' || !is_array($arProperty[
'~VALUE']))
61 if (is_array($arProperty[
'VALUE']))
72 switch ($arProperty[
'PROPERTY_TYPE'])
77 $arDisplayValue[] = (string)call_user_func_array(
87 case PropertyTable::TYPE_ELEMENT:
94 if (!isset(self::$nameCache[PropertyTable::TYPE_ELEMENT][
$val]))
97 $rsLink = CIBlockElement::GetList(
102 'ACTIVE_DATE' =>
'Y',
103 'CHECK_PERMISSIONS' =>
'Y',
104 'MIN_PERMISSION' => CIBlockRights::PUBLIC_READ,
118 self::$nameCache[PropertyTable::TYPE_ELEMENT][
$val] = $rsLink->GetNext();
121 if (is_array(self::$nameCache[PropertyTable::TYPE_ELEMENT][
$val]))
123 $row = self::$nameCache[PropertyTable::TYPE_ELEMENT][
$val];
124 if (self::$b24Installed)
126 $arDisplayValue[] = $row[
'NAME'];
130 $arDisplayValue[] =
'<a href="' . $row[
'DETAIL_PAGE_URL'] .
'">' . $row[
'NAME'] .
'</a>';
132 $arLinkElements[
$val] = $row;
137 $arProperty[
'LINK_ELEMENT_VALUE'] = (!empty($arLinkElements) ? $arLinkElements :
false);
138 unset($arLinkElements);
140 case PropertyTable::TYPE_SECTION:
141 $arLinkSections = [];
147 if (!isset(self::$nameCache[PropertyTable::TYPE_SECTION][
$val]))
150 $rsSection = CIBlockSection::GetList(
154 'CHECK_PERMISSIONS' =>
'Y',
155 'MIN_PERMISSION' => CIBlockRights::PUBLIC_READ,
168 self::$nameCache[PropertyTable::TYPE_SECTION][
$val] = $rsSection->GetNext();
171 if (is_array(self::$nameCache[PropertyTable::TYPE_SECTION][
$val]))
173 $row = self::$nameCache[PropertyTable::TYPE_SECTION][
$val];
174 if (self::$b24Installed)
176 $arDisplayValue[] = $row[
'NAME'];
180 $arDisplayValue[] =
'<a href="' . $row[
'SECTION_PAGE_URL'] .
'">' . $row[
'NAME'] .
'</a>';
182 $arLinkSections[
$val] = self::$nameCache[PropertyTable::TYPE_SECTION][
$val];
186 $arProperty[
'LINK_SECTION_VALUE'] = (!empty($arLinkSections) ? $arLinkSections :
false);
187 unset($arLinkSections);
189 case PropertyTable::TYPE_LIST:
190 $isCheckBox = Tools::isCheckboxProperty($arProperty);
196 if (
$val === Tools::CHECKBOX_VALUE_YES)
198 $arDisplayValue[] = Loc::getMessage(
'IBLOCK_FORMATPROPS_PROPERTY_YES');
202 $arDisplayValue[] = Loc::getMessage(
'IBLOCK_FORMATPROPS_PROPERTY_NO');
209 $arDisplayValue[] =
$val;
215 case PropertyTable::TYPE_FILE:
219 if ($arFile = CFile::GetFileArray(
$val))
224 . Loc::getMessage(
'IBLOCK_DOWNLOAD')
232 $arProperty[
'FILE_VALUE'] =
$arFiles[0];
236 $arProperty[
'FILE_VALUE'] =
$arFiles;
240 $arProperty[
'FILE_VALUE'] =
false;
247 $trimmed = trim((
string)
$val);
248 if (strpos($trimmed,
'http') === 0)
250 $arDisplayValue[] =
'<a href="' .
htmlspecialcharsbx($trimmed) .
'">' . $trimmed .
'</a>';
252 elseif (strpos($trimmed,
'www') === 0)
254 $arDisplayValue[] =
'<a href="' .
htmlspecialcharsbx(
'https://' . $trimmed) .
'">' . $trimmed .
'</a>';
258 $arDisplayValue[] =
$val;
264 $displayCount =
count($arDisplayValue);
265 if ($displayCount == 1)
267 $arProperty[
'DISPLAY_VALUE'] = $arDisplayValue[0];
269 elseif ($displayCount > 1)
271 $arProperty[
'DISPLAY_VALUE'] = $arDisplayValue;
275 $arProperty[
'DISPLAY_VALUE'] =
false;
278 $arProperty[
'PROPERTY_TYPE'] = $arProperty[
'RAW_PROPERTY_TYPE'];
279 unset($arProperty[
'RAW_PROPERTY_TYPE']);
306 self::$userTypeCache = [];
308 PropertyTable::TYPE_ELEMENT => [],
309 PropertyTable::TYPE_SECTION => [],
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)