• Модуль: 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; }