Your IP : 216.73.216.170
<?php
use Bitrix\Main\Application;
use Bitrix\Main\InvalidOperationException;
use Bitrix\Main\Loader;
use Bitrix\Main\UserField\Types\EnumType;
use Bitrix\Main\UserTable;
use Bitrix\Main\Web\MimeType;
use Faker\Factory;
use Korus\Main\Orm\Iblock\Manager;
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define("BX_CRONTAB", true);
define('BX_WITH_ON_AFTER_EPILOG', true);
define('BX_NO_ACCELERATOR_RESET', true);
define("CRON_RUN", true);
if (empty($_SERVER["DOCUMENT_ROOT"])) {
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__DIR__));
}
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"] . "/vendor/autoload.php");
@set_time_limit(0);
@ignore_user_abort(true);
Loader::includeModule('korus.main');
$iblockManager = Manager::getInstance()->getProviderByCode('meeting_rooms_s1', 'events');
$arSectionsMap = [];
$secTable = $iblockManager->getSectionTableClassName();
$db = $secTable::query()
->setSelect(['ID', 'NAME'])
->where('ACTIVE', 'Y')
->where('IBLOCK_ID', $secTable::getIblockId())
->exec();
while ($row = $db->fetch()) {
$arSectionsMap[$row['NAME']] = $row['ID'];
}
/** @var \CUserTypeManager */
global $USER_FIELD_MANAGER;
$UF = $USER_FIELD_MANAGER->GetUserFields($secTable::getUfId());
EnumType::getEnumList($UF['UF_CITY']);
$coordinators = [];
$db = UserTable::query()
->setSelect(['ID'])
->where('WORK_POSITION', 'Директор по персоналу')
->setOrder(['ID'])
->exec();
while ($row = $db->fetch()) {
$coordinators[] = $row['ID'];
}
$connection = Application::getConnection();
$connection->startTransaction();
try {
$faker = Factory::create('ru_RU');
$counter = 0;
$csvFile = new \CCSVData();
$csvFile->SetFirstHeader(true);
$csvFile->SetDelimiter(',');
$csvFile->LoadFile(Application::getDocumentRoot() . '/demo/src/meeting_rooms.csv');
while ($row = $csvFile->Fetch()) {
var_dump($row);
$uploadPath = Application::getDocumentRoot() . '/demo/src/upload/meeting_rooms';
CheckDirPath($uploadPath . '/');
list($title, $description, $city, $agreement, $img) = array_map('trim', $row);
$agreement = $agreement == 'Да';
$img = sprintf('%s/%s', $uploadPath, $img);
// $imgUrl = trim($row[5]);
// if ($imgUrl) {
// $path = sprintf('%s/%s', $uploadPath, $code);
// $ext = pathinfo($imgUrl, PATHINFO_EXTENSION);
// if ($ext) {
// $path .= '.' . $ext;
// }
// if (false === file_put_contents($path, file_get_contents($imgUrl))) {
// ShowError('Не удалось скачать файл ' . $imgUrl);
// }
// if (!$ext) {
// $ext = array_search(MimeType::getByFilePath($path), MimeType::getMimeTypeList());
// if ($ext) {
// rename($path, $path . '.' . $ext);
// }
// }
// }
if (!isset($arSectionsMap[$title])) {
$arFields = [
"ACTIVE" => "Y",
"IBLOCK_ID" => $secTable::getIblockId(),
"NAME" => $title,
"CODE" => $faker->unique()->numerify('demo_###'),
"DESCRIPTION" => $description,
"UF_CITY" => array_search($city, $UF['UF_CITY']['USER_TYPE']['FIELDS']),
"UF_MATCHING" => (int)$agreement,
];
if (file_exists($img) && MimeType::isImage(MimeType::getByFilePath($img))) {
$arImg = \CFile::MakeFileArray($img);
if ($arImg) {
$arImg["MODULE_ID"] = "iblock";
$arFields['PICTURE'] = $arImg;
}
}
if ($agreement) {
$arFields['UF_MATCHING_MANAGER'] = $coordinators[(int)($city != 'Москва')];
}
$sec = new \CIBlockSection();
$id = $sec->Add($arFields);
if (!$id) {
throw new InvalidOperationException(sprintf('Не удалось создать раздел "%s": %s', $title, $sec->LAST_ERROR));
}
}
$counter++;
}
$connection->commitTransaction();
} catch (\Exception $e) {
ShowError($e->getMessage());
$connection->rollbackTransaction();
}