CCrmWebDavHelper::GetElementInfo

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmWebDavHelper
  4. GetElementInfo
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_webdav_helper.php
  • Класс: \CCrmWebDavHelper
  • Вызов: CCrmWebDavHelper::GetElementInfo
static function GetElementInfo($elementID, $checkPermissions = true)
{
	if (!(IsModuleInstalled('iblock')
		&& IsModuleInstalled('webdav')
		&& CModule::IncludeModule('iblock')
		&& CModule::IncludeModule('webdav')))
	{
		return array();
	}

	if($checkPermissions && !self::CheckElementReadPermission($elementID))
	{
		return array();
	}

	$arElement = self::GetElement($elementID);
	if(!$arElement)
	{
		return array();
	}

	if(self::$URL_TEMPLATES === null && method_exists('CWebDavIblock', 'GetULRsFromIBlockID'))
	{
		self::$URL_TEMPLATES = CWebDavIblock::GetULRsFromIBlockID($arElement['IBLOCK_ID']);
	}

	$showUrlTemplate = '';
	$viewUrlTemplate = '';
	$editUrlTemplate = '';
	$deleteUrlTemplate = '';

	if(is_array(self::$URL_TEMPLATES) && !empty(self::$URL_TEMPLATES))
	{
		if(isset(self::$URL_TEMPLATES['view']))
		{
			$showUrlTemplate = self::$URL_TEMPLATES['view'];
		}

		if(isset(self::$URL_TEMPLATES['history_get']))
		{
			$viewUrlTemplate = self::$URL_TEMPLATES['history_get'];
		}

		if(isset(self::$URL_TEMPLATES['edit']))
		{
			$editUrlTemplate = self::$URL_TEMPLATES['edit'];
		}

		if(isset(self::$URL_TEMPLATES['delete_dropped']))
		{
			$deleteUrlTemplate = self::$URL_TEMPLATES['delete_dropped'];
		}
	}

	if($showUrlTemplate === '')
	{
		$showUrlTemplate = CWebDavIblock::LibOptions('lib_paths', true, $arElement['IBLOCK_ID']);
		if(!is_string($showUrlTemplate))
		{
			$showUrlTemplate = '';
		}
	}

	if($showUrlTemplate === '')
	{
		//HACK: Build default paths.
		if(\Bitrix\Main\ModuleManager::isModuleInstalled('bitrix24'))
		{
			$showUrlTemplate = '/docs/element/view/#ELEMENT_ID#/';
			$viewUrlTemplate = '/docs/element/historyget/#ELEMENT_ID#/#ELEMENT_NAME#';
			$editUrlTemplate = '/docs/element/edit/edit/#ELEMENT_ID#/';
		}
		else
		{
			$showUrlTemplate = SITE_DIR.'docs/shared/element/view/#ELEMENT_ID#/';
			$viewUrlTemplate = SITE_DIR.'docs/shared/element/historyget/#ELEMENT_ID#/#ELEMENT_NAME#';
			$editUrlTemplate = SITE_DIR.'docs/shared/element/edit/edit/#ELEMENT_ID#/';
		}
	}

	$showUrl = self::PrepareUrl($showUrlTemplate, $arElement);
	$viewUrl = $viewUrlTemplate !== ''
		? self::PrepareUrl($viewUrlTemplate, $arElement)
		: str_replace('view', 'historyget', $showUrl);
	$editUrl = $editUrlTemplate !== ''
		? self::PrepareUrl($editUrlTemplate, $arElement)
		: str_replace('view', 'edit', $showUrl).'EDIT/';
	$deleteUrl = $deleteUrlTemplate !== ''
		? self::PrepareUrl($deleteUrlTemplate, $arElement)
		: (preg_match('/\/docs\/shared\//i', $showUrl) ? '' : str_replace('view', 'edit', $showUrl).'DELETE_DROPPED/');

	$size = '';
	$dbSize = CIBlockElement::GetProperty($arElement['IBLOCK_ID'], $arElement['ID'], array(), array('CODE' => 'WEBDAV_SIZE'));
	if ($dbSize && $arSize=$dbSize->Fetch())
	{
		$size = CFile::FormatSize($arSize['VALUE']);
	}

	return array(
		'ID' => $elementID,
		'FILE_ID' => $arElement['PROPERTY_FILE_VALUE'],
		'NAME' => $arElement['NAME'],
		'EDIT_URL' => CHTTP::urlAddParams($editUrl, array('ncc' => '1')),
		'VIEW_URL' => CHTTP::urlAddParams($viewUrl, array('ncc' => '1')),
		'DELETE_URL' => CHTTP::urlAddParams($deleteUrl, array('ncc' => '1')),
		'SHOW_URL' => CHTTP::urlAddParams($showUrl, array('ncc' => '1')),
		'SIZE' => $size
	);
}

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