- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/csv_user_import.php
- Класс: CSVUserImport
- Вызов: CSVUserImport::ImportUser
function ImportUser()
{
if ($this->isErrorOccured)
return false;
$this->errorMessage = "";
$defaultEmail = $this->GetDefaultEmail();
if (!$arUser = $this->csv->FetchDelimiter())
return false;
$arFields = Array();
foreach($this->arHeader as $index => $key)
if(($f = trim($arUser[$index])) <> '')
$arFields[$key] = $f;
if (!array_key_exists("NAME", $arFields) || mb_strlen($arFields["NAME"]) < 1)
{
$this->errorMessage = GetMessage("CSV_IMPORT_NO_NAME")." (".implode(", ", $arFields).").
";
return true;
}
if (!array_key_exists("LAST_NAME", $arFields) || mb_strlen($arFields["LAST_NAME"]) < 1)
{
$this->errorMessage = GetMessage("CSV_IMPORT_NO_LASTNAME")." (".implode(", ", $arFields).").
";
return true;
}
if (!array_key_exists("PASSWORD", $arFields) || mb_strlen($arFields["PASSWORD"]) < 1)
$arFields["PASSWORD"] = $this->GenerateUserPassword(6);
$arFields["CONFIRM_PASSWORD"] = $arFields["PASSWORD"];
if (!array_key_exists("EMAIL", $arFields) || mb_strlen($arFields["EMAIL"]) < 3 || !check_email($arFields["EMAIL"]))
$arFields["EMAIL"] = $defaultEmail;
if (!array_key_exists("LOGIN", $arFields))
$arFields["LOGIN"] = mb_strtolower($arFields["NAME"]." ".$arFields["LAST_NAME"]);
if (array_key_exists("PERSONAL_BIRTHDAY", $arFields) && (mb_strlen($arFields["PERSONAL_BIRTHDAY"]) < 2 || !CheckDateTime($arFields["PERSONAL_BIRTHDAY"])))
unset($arFields["PERSONAL_BIRTHDAY"]);
if (array_key_exists("DATE_REGISTER", $arFields) && (mb_strlen($arFields["DATE_REGISTER"]) < 2 || !CheckDateTime($arFields["DATE_REGISTER"])))
unset($arFields["DATE_REGISTER"]);
if ($this->externalAuthID !== null && !array_key_exists("EXTERNAL_AUTH_ID", $arFields))
$arFields["EXTERNAL_AUTH_ID"] = $this->externalAuthID;
if (!array_key_exists("XML_ID", $arFields))
$arFields["XML_ID"] = Random::getString(32);
if(!array_key_exists("CHECKWORD", $arFields) || $arFields["CHECKWORD"] == '')
$arFields["CHECKWORD"] = Random::getString(32);
if ($this->imageFilePath !== null)
{
if (array_key_exists("PERSONAL_PHOTO", $arFields) && $arFields["PERSONAL_PHOTO"] <> '')
{
$arFile = CFile::MakeFileArray($this->imageFilePath."/".$arFields["PERSONAL_PHOTO"]);
$arFile["MODULE_ID"] = "main";
$arFields["PERSONAL_PHOTO"] = $arFile;
}
if (array_key_exists("WORK_LOGO", $arFields) && $arFields["WORK_LOGO"] <> '')
{
$arFile = CFile::MakeFileArray($this->imageFilePath."/".$arFields["WORK_LOGO"]);
$arFile["MODULE_ID"] = "main";
$arFields["WORK_LOGO"] = $arFile;
}
}
else
{
unset($arFields["PERSONAL_PHOTO"]);
unset($arFields["WORK_LOGO"]);
}
$arFields["GROUP_ID"] = $this->userGroups;
$user = new CUser;
$userID = (int)$user->Add($arFields);
if($userID <= 0)
{
if($user->LAST_ERROR <> '')
$this->errorMessage = $arFields["NAME"]." ".$arFields["LAST_NAME"].": ".$user->LAST_ERROR;
}
if ($userID <= 0 && $this->ignoreDuplicate === false)
{
$postFix = 2;
$login = $arFields["LOGIN"];
do
{
$rsUser = CUser::GetByLogin($arFields["LOGIN"]);
if (!$rsUser->Fetch())
break;
$arFields["LOGIN"] = $login.$postFix;
$userID = (int)$user->Add($arFields);
if ($userID > 1)
break;
$postFix++;
} while(true);
}
if ($userID > 0)
{
if ($this->attachIBlockID > 0)
{
$iblockSectionID = $this->__GetIBlockSectionID($arFields);
if ($iblockSectionID > 0)
{
if (!$this->isUserPropertyCreate)
$this->isUserPropertyCreate = $this->__CreateUserProperty();
$arUpdate = Array();
$arUpdate[$this->userPropertyName] = Array($iblockSectionID);
$user->Update($userID, $arUpdate);
}
}
if ($this->callback !== null)
call_user_func_array($this->callback, Array(&$arFields, &$userID));
}
return true;
}