• Модуль: ldap
  • Путь к файлу: ~/bitrix/modules/ldap/classes/general/ldap.php
  • Класс: CLDAP
  • Вызов: CLDAP::getLdapValueByBitrixFieldName
public function getLdapValueByBitrixFieldName($fieldName, $arLdapUser)
{
	global $USER_FIELD_MANAGER;
	if(!isset($this->arFields["FIELD_MAP"][$fieldName]))
		return false;

	$attr = $this->arFields["FIELD_MAP"][$fieldName];
	$arRes = $USER_FIELD_MANAGER->GetUserFields("USER", 0, LANGUAGE_ID);
	$result = false;

	if(is_array($arRes[$fieldName]))
	{
		if($arRes[$fieldName]["MULTIPLE"]=="Y")
		{
			if (is_array($arLdapUser[mb_strtolower($attr)]))
				$result = array_values($arLdapUser[mb_strtolower($attr)]);
			else
				$result = array($arLdapUser[mb_strtolower($attr)]);
		}
		else if (!empty($arLdapUser[mb_strtolower($attr)]))
			$result = $arLdapUser[mb_strtolower($attr)];
		else if (!empty($arRes[$fieldName]['SETTINGS']['DEFAULT_VALUE']))
		{
			if (is_array($arRes[$fieldName]['SETTINGS']['DEFAULT_VALUE']))
			{
				if (!empty($arRes[$fieldName]['SETTINGS']['DEFAULT_VALUE']['VALUE']))
					$result = $arRes[$fieldName]['SETTINGS']['DEFAULT_VALUE']['VALUE'];
			}
			else
				$result = $arRes[$fieldName]['SETTINGS']['DEFAULT_VALUE'];
		}

	}
	elseif(preg_match("/(.*)&([0-9]+)/", $attr, $arMatch))
	{
		if(intval($arLdapUser[mb_strtolower($arMatch[1])]) & intval($arMatch[2]))
			$result = "N";
		else
			$result = "Y";
	}
	elseif ($fieldName == "PERSONAL_PHOTO")
	{
		if($arLdapUser[mb_strtolower($attr)] == "")
			return false;

		$fExt = CLdapUtil::GetImgTypeBySignature($arLdapUser[mb_strtolower($attr)][0]);

		if(!$fExt)
			return false;

		$tmpDir = CTempFile::GetDirectoryName();
		CheckDirPath($tmpDir);

		$fname = "ad_".rand().".".$fExt;

		if(!file_put_contents($tmpDir.$fname,$arLdapUser[mb_strtolower($attr)][0]))
			return false;

		$result = array(
			"name" => $fname,
			"type" => CFile::GetContentType($tmpDir.$fname),
			"tmp_name" => $tmpDir.$fname
		);
	}
	else
		$result = $arLdapUser[mb_strtolower($attr)];

	if(is_null($result))
		$result = false;

	return $result;
}