• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/dbresult.php
  • Класс: CAllDBResult
  • Вызов: CAllDBResult::AfterFetch
protected function AfterFetch(&$res)
{
	global $USER_FIELD_MANAGER;

	if ($this->arUserFields)
	{
		//Cache actual user fields on first fetch
		if ($this->usedUserFields === false)
		{
			$this->usedUserFields = [];
			foreach ($this->arUserFields as $userField)
			{
				if (isset($userField['FIELD_NAME']) && array_key_exists($userField['FIELD_NAME'], $res))
				{
					$this->usedUserFields[] = $userField;
				}
			}
		}
		// We need to call OnAfterFetch for each user field
		foreach ($this->usedUserFields as $userField)
		{
			$name = $userField['FIELD_NAME'];
			if ($userField['MULTIPLE'] === 'Y')
			{
				if ($res[$name] !== null)
				{
					if (mb_substr($res[$name], 0, 1) !== 'a' && $res[$name] > 0)
					{
						$res[$name] = $USER_FIELD_MANAGER->LoadMultipleValues($userField, $res[$name]);
					}
					else
					{
						$res[$name] = unserialize($res[$name], ['allowed_classes' => false]);
					}
				}
				else
				{
					$res[$name] = false;
				}
			}
			$res[$name] = $USER_FIELD_MANAGER->OnAfterFetch($userField, $res[$name]);
		}
	}

	if ($this->arReplacedAliases)
	{
		foreach ($this->arReplacedAliases as $tech => $human)
		{
			$res[$human] = $res[$tech];
			unset($res[$tech]);
		}
	}
}