- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/documentgenerator/dataprovider/crmentitydataprovider.php
- Класс: Bitrix\Crm\Integration\DocumentGenerator\DataProvider\CrmEntityDataProvider
- Вызов: CrmEntityDataProvider::getUserFieldValue
public function getUserFieldValue($placeholder = null)
{
$value = null;
if(!$placeholder || !isset($this->fields[$placeholder]))
{
return $value;
}
$field = $this->userFieldDescriptions[$placeholder];
$value = $field['VALUE'];
if(!$value && $field['USER_TYPE_ID'] != 'boolean')
{
return $value;
}
if($field['USER_TYPE_ID'] == 'file')
{
if(is_array($value))
{
$value = \CFile::GetPath(reset($value));
}
else
{
$value = \CFile::GetPath($value);
}
}
elseif($field['USER_TYPE_ID'] == 'enumeration')
{
if(!isset($field['DATA']))
{
$value = null;
}
elseif(is_array($value))
{
$result = [];
foreach($value as $item)
{
$result[] = $field['DATA'][$item];
}
$value = $result;
}
else
{
$value = $field['DATA'][$value];
}
}
elseif($field['USER_TYPE_ID'] == 'money')
{
$result = null;
if(!is_array($value))
{
$parts = explode('|', $value);
$result = new Money($parts[0], ['CURRENCY_ID' => $parts[1]]);
}
else
{
$result = [];
foreach($value as $val)
{
$parts = explode('|', $val);
$result[] = new Money($parts[0], ['CURRENCY_ID' => $parts[1]]);
}
}
$value = $result;
}
elseif($field['USER_TYPE_ID'] == 'boolean')
{
if($value)
{
$value = DataProviderManager::getInstance()->getLangPhraseValue($this, 'UF_TYPE_BOOLEAN_YES');
}
else
{
$value = DataProviderManager::getInstance()->getLangPhraseValue($this, 'UF_TYPE_BOOLEAN_NO');
}
}
elseif($field['USER_TYPE_ID'] == 'address')
{
$result = [];
if(is_array($value))
{
foreach($value as $val)
{
if(mb_strpos($val, '|') !== false)
{
$array = explode('|', $val);
$val = $array[0];
}
$result[] = $val;
}
}
else
{
if(mb_strpos($value, '|') !== false)
{
$array = explode('|', $value);
$value = $array[0];
}
$result = $value;
}
$value = $result;
}
elseif($field['USER_TYPE_ID'] == 'iblock_element')
{
$value = null;
if(Loader::includeModule('iblock') && !empty($field['VALUE']))
{
$value = [];
$elements = ElementTable::getList([
'select' => ['NAME'],
'filter' => ['ID' => $field['VALUE']]
]);
while($element = $elements->fetch())
{
$value[] = $element['NAME'];
}
}
}
elseif($field['USER_TYPE_ID'] == 'crm' && is_array($value))
{
if($field['MULTIPLE'] === 'Y' && $this->fields[$placeholder]['PROVIDER'] && $this->fields[$placeholder]['PROVIDER'] === DataProvider\ArrayDataProvider::class)
{
$result = [];
foreach($value as $val)
{
if(!is_numeric($val))
{
[, $val] = explode('_', $val);
}
$val = intval($val);
if($val > 0)
{
$provider = DataProviderManager::getInstance()->getDataProvider(
$this->fields[$placeholder]['OPTIONS']['ITEM_PROVIDER'],
$val,
$this->fields[$placeholder]['OPTIONS']['ITEM_OPTIONS'],
$this);
if($provider)
{
$result[] = $provider;
}
}
}
$value = $result;
}
else
{
$value = reset($value);
}
}
elseif($field['USER_TYPE_ID'] === 'employee' && is_array($value))
{
if($field['MULTIPLE'] === 'Y' && $this->fields[$placeholder]['PROVIDER'] && $this->fields[$placeholder]['PROVIDER'] === DataProvider\ArrayDataProvider::class)
{
$result = [];
foreach($value as $val)
{
$val = intval($val);
if($val > 0)
{
$provider = DataProviderManager::getInstance()->getDataProvider(
$this->fields[$placeholder]['OPTIONS']['ITEM_PROVIDER'],
$val,
$this->fields[$placeholder]['OPTIONS']['ITEM_OPTIONS'],
$this);
if($provider)
{
$result[] = $provider;
}
}
}
$value = $result;
}
else
{
$value = reset($value);
}
}
return $value;
}