CBPVirtualDocument::getDocument

  1. Bitrix24 API (v. 23.675.0)
  2. bizproc
  3. CBPVirtualDocument
  4. getDocument
  • Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/virtualdocument.php
  • Класс: CBPVirtualDocument
  • Вызов: CBPVirtualDocument::getDocument
static function getDocument($documentId)
{
	$documentId = intval($documentId);
	if ($documentId <= 0)
		throw new CBPArgumentNullException("documentId");

	$arResult = null;

	$dbDocumentList = CIBlockElement::GetList(
		array(),
		array("ID" => $documentId, "SHOW_NEW" => "Y")
	);
	if ($objDocument = $dbDocumentList->GetNextElement(false, true))
	{
		$arDocumentFields = $objDocument->GetFields();
		$arDocumentProperties = $objDocument->GetProperties();

		foreach ($arDocumentFields as $fieldKey => $fieldValue)
		{
			if (mb_substr($fieldKey, 0, 1) == "~")
				continue;

			$arResult[$fieldKey] = $fieldValue;
			if (in_array($fieldKey, array("MODIFIED_BY", "CREATED_BY")))
			{
				$arResult[$fieldKey] = "user_".$fieldValue;
				$arResult[$fieldKey."_PRINTABLE"] = $arDocumentFields[($fieldKey == "MODIFIED_BY") ? "~USER_NAME" : "~CREATED_USER_NAME"];
			}
			elseif (in_array($fieldKey, array("PREVIEW_TEXT", "DETAIL_TEXT")))
			{
				if ($arDocumentFields[$fieldKey."_TYPE"] == "html")
					$arResult[$fieldKey] = HTMLToTxt($arDocumentFields["~".$fieldKey]);
			}
		}

		foreach ($arDocumentProperties as $propertyKey => $propertyValue)
		{
			if ($propertyValue["USER_TYPE"] <> '')
			{
				if ($propertyValue["USER_TYPE"] == "UserID"
					|| $propertyValue["USER_TYPE"] == "employee" && (COption::GetOptionString("bizproc", "employee_compatible_mode", "N") != "Y"))
				{
					if (!is_array($propertyValue["VALUE"]))
					{
						$db = CUser::GetByID($propertyValue["VALUE"]);
						if ($ar = $db->fetch())
						{
							$arResult["PROPERTY_".$propertyKey] = "user_".intval($propertyValue["VALUE"]);
							$arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = "(".$ar["LOGIN"].")".(($ar["NAME"] <> '' || $ar["LAST_NAME"] <> '') ? " " : "").CUser::FormatName(COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID), $ar, false, false);
						}
					}
					else
					{
						for ($i = 0, $cnt = count($propertyValue["VALUE"]); $i < $cnt; $i++)
						{
							$db = CUser::GetByID($propertyValue["VALUE"][$i]);
							if ($ar = $db->fetch())
							{
								$arResult["PROPERTY_".$propertyKey][] = "user_".intval($propertyValue["VALUE"][$i]);
								$arResult["PROPERTY_".$propertyKey."_PRINTABLE"][$propertyValue["VALUE"][$i]] = "(".$ar["LOGIN"].")".(($ar["NAME"] <> '' || $ar["LAST_NAME"] <> '') ? " " : "").CUser::FormatName(COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID), $ar, false, false);
							}
						}
					}
				}
				else
				{
					$arResult["PROPERTY_".$propertyKey] = $propertyValue["VALUE"];
				}
			}
			elseif ($propertyValue["PROPERTY_TYPE"] == "L")
			{
				$arPropertyValue = $propertyValue["VALUE"];
				$arPropertyKey = $propertyValue["VALUE_XML_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];
			}
			elseif ($propertyValue["PROPERTY_TYPE"] == "F")
			{
				if (!is_array($propertyValue["VALUE"]))
				{
					if ((intval($propertyValue["VALUE"]) > 0) && ($ar = CFile::GetFileArray($propertyValue["VALUE"])))
					{
						$arResult["PROPERTY_".$propertyKey] = $propertyValue["VALUE"];
						$arResult["PROPERTY_".$propertyKey."_PRINTABLE"] = $ar["SRC"];
					}
				}
				else
				{
					for ($i = 0, $cnt = count($propertyValue["VALUE"]); $i < $cnt; $i++)
					{
						if ((intval($propertyValue["VALUE"][$i]) > 0) && ($ar = CFile::GetFileArray($propertyValue["VALUE"][$i])))
						{
							$arResult["PROPERTY_".$propertyKey][] = $propertyValue["VALUE"][$i];
							$arResult["PROPERTY_".$propertyKey."_PRINTABLE"][$propertyValue["VALUE"][$i]] = $ar["SRC"];
						}
					}
				}
			}
			else
			{
				$arResult["PROPERTY_".$propertyKey] = $propertyValue["VALUE"];
			}
		}
	}

	return $arResult;
}

Добавить комментарий