...Человеческий поиск в разработке...
- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/classes/general/virtualdocument.php
- Класс: CBPVirtualDocument
- Вызов: CBPVirtualDocument::getList
static function getList($arOrder = array("SORT" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields=array()) { $arFilter["SHOW_NEW"] = "Y"; $arFilter["ACTIVE"] = "Y"; if (count($arSelectFields) > 0) { if (!in_array("ID", $arSelectFields)) $arSelectFields[] = "ID"; if (!in_array("IBLOCK_ID", $arSelectFields)) $arSelectFields[] = "IBLOCK_ID"; if (!in_array("CREATED_BY", $arSelectFields)) $arSelectFields[] = "CREATED_BY"; } $arResultList = array(); $arIDMap = array(); $dbTasksList = CIBlockElement::GetList( $arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields ); while ($obTask = $dbTasksList->GetNextElement()) { $arResult = array(); $arFields = $obTask->GetFields(); foreach ($arFields as $fieldKey => $fieldValue) { if (mb_substr($fieldKey, 0, 1) != "~") continue; $fieldKey = mb_substr($fieldKey, 1); $arResult[$fieldKey] = $fieldValue; $arResult[$fieldKey."_PRINTABLE"] = $fieldValue; if (in_array($fieldKey, array("MODIFIED_BY", "CREATED_BY"))) { $arResult[$fieldKey] = "user_".$fieldValue; $arResult[$fieldKey."_PRINTABLE"] = self::PrepareUserForPrint($fieldValue); } } $arProperties = $obTask->GetProperties(); foreach ($arProperties as $propertyKey => $propertyValue) { $arResult["PROPERTY_".$propertyKey] = $propertyValue["~VALUE"]; $arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = $propertyValue["~VALUE"]; if ($propertyValue["USER_TYPE"] <> '') { if ($propertyValue["USER_TYPE"] == "UserID") { if (is_array($propertyValue["VALUE"])) { $arResult["PROPERTY_".$propertyKey] = array(); foreach ($propertyValue["VALUE"] as $v) { $v = intval($v); if ($v > 0) $arResult["PROPERTY_".$propertyKey][] = "user_".$v; } } else { $arResult["PROPERTY_".$propertyKey] = ""; if (intval($propertyValue["VALUE"]) > 0) $arResult["PROPERTY_".$propertyKey] = "user_".intval($propertyValue["VALUE"]); } $arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = self::PrepareUserForPrint($propertyValue["VALUE"]); } } elseif ($propertyValue["PROPERTY_TYPE"] == "G") { $arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = array(); $vx = self::PrepareSectionForPrint($propertyValue["VALUE"], $propertyValue["LINK_IBLOCK_ID"]); foreach ($vx as $vx1 => $vx2) $arResult["PROPERTY_".$propertyKey."_PRINTABLE"][$vx1] = $vx2["NAME"]; } elseif ($propertyValue["PROPERTY_TYPE"] == "L") { $arResult["PROPERTY_".$propertyKey] = array(); $arPropertyValue = $propertyValue["VALUE"]; $arPropertyKey = $propertyValue["VALUE_ENUM_ID"]; if (!is_array($arPropertyValue)) { $arPropertyValue = array($arPropertyValue); $arPropertyKey = array($arPropertyKey); } for ($i = 0, $cnt = count($arPropertyValue); $i < $cnt; $i++) $arResult["PROPERTY_".$propertyKey][$arPropertyKey[$i]] = $arPropertyValue[$i]; $arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = $arResult["PROPERTY_".$propertyKey]; } } if (array_key_exists($arFields["ID"], $arIDMap)) { foreach ($arResultList[$arIDMap[$arFields["ID"]]] as $key => &$value) { if ($value != $arResult[$key]) { if (!is_array($value)) $value = array($value); $value[] = $arResult[$key]; } } } else { $index = count($arResultList); $arResultList[$index] = $arResult; $arIDMap[$arFields["ID"]] = $index; } } $dbTasksList1 = new CDBResult(); $dbTasksList1->InitFromArray($arResultList); return array($dbTasksList1, $dbTasksList); }