• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/quickanswers/listsdatamanager.php
  • Класс: BitrixImOpenlinesQuickAnswersListsDataManager
  • Вызов: ListsDataManager::createStorage
static function createStorage($lineId, $userId = 0)
{
	if(!self::initModules())
	{
		return false;
	}

	$configManager = new Config();
	if($config = $configManager->get($lineId, true))
	{
		$name = $config['LINE_NAME'];
		$description = Loc::getMessage('IMOL_QA_IBLOCK_DESCRIPTION').' '.$config['LINE_NAME'];
		$queue = $config['QUEUE'];
	}
	else
	{
		return false;
	}

	$iblockFields = array(
		'NAME' => $name,
		'CODE' => self::IBLOCK_CODE,
		'DESCRIPTION' => $description,
		'IBLOCK_TYPE_ID' => self::TYPE,
		'WORKFLOW' => 'N',
		'ELEMENTS_NAME' => Loc::getMessage('IMOL_QA_IBLOCK_ELEMENTS_NAME'),
		'ELEMENT_NAME' => Loc::getMessage('IMOL_QA_IBLOCK_ELEMENT_NAME'),
		'ELEMENT_ADD' => Loc::getMessage('IMOL_QA_IBLOCK_ELEMENT_ADD'),
		'ELEMENT_EDIT' => Loc::getMessage('IMOL_QA_IBLOCK_ELEMENT_EDIT'),
		'ELEMENT_DELETE' => Loc::getMessage('IMOL_QA_IBLOCK_ELEMENT_DELETE'),
		'SECTIONS_NAME' => Loc::getMessage('IMOL_QA_IBLOCK_SECTIONS_NAME'),
		'SECTION_NAME' => Loc::getMessage('IMOL_QA_IBLOCK_SECTION_NAME'),
		'SECTION_ADD' => Loc::getMessage('IMOL_QA_IBLOCK_SECTION_ADD'),
		'SECTION_EDIT' => Loc::getMessage('IMOL_QA_IBLOCK_SECTION_EDIT'),
		'SECTION_DELETE' => Loc::getMessage('IMOL_QA_IBLOCK_SECTION_DELETE'),
		//'SOCNET_GROUP_ID' => '',
		'BIZPROC' => 'N',
		'SITE_ID' => array(self::getDefaultSiteID()),
		'RIGHTS_MODE' => 'E',
		'RIGHTS' => self::getRights(self::RIGHTS_IBLOCK_FOR_LINE_QUEUE, $queue, $userId),
	);
	$iblock = new CIBlock();
	$iblockId = $iblock->Add($iblockFields);
	if($iblockId > 0)
	{
		$list = new CList($iblockId);
		$list->AddField(array(
			'SORT' => 20,
			'NAME' => GetMessage('IMOL_QA_IBLOCK_NAME_FIELD'),
			'IS_REQUIRED' => 'Y',
			'MULTIPLE' => 'N',
			'TYPE' => 'NAME',
			'DEFAULT_VALUE' => '',
		));
		$list->AddField(array(
			'SORT' => 30,
			'NAME' => GetMessage('IMOL_QA_IBLOCK_TEXT_FIELD'),
			'IS_REQUIRED' => 'Y',
			'MULTIPLE' => 'N',
			'TYPE' => 'DETAIL_TEXT',
			'DEFAULT_VALUE' => '',
		));
		$list->AddField(array(
			'SORT' => 40,
			'NAME' => GetMessage('IMOL_QA_IBLOCK_RATING_FIELD'),
			'IS_REQUIRED' => 'N',
			'MULTIPLE' => 'N',
			'TYPE' => 'SORT',
			'DEFAULT_VALUE' => '1',
		));
		$list->Save();

		global $CACHE_MANAGER;
		$CACHE_MANAGER->ClearByTag('lists_list_any');
		$CACHE_MANAGER->CleanDir('menu');

		$section = new CIBlockSection();
		foreach(self::getSectionNames() as $code => $sectionDesc)
		{
			$section->add(array(
				'SORT' => $sectionDesc['SORT'],
				'ACTIVE' => 'Y',
				'NAME' => $sectionDesc['NAME'],
				'CODE' => $code,
				'IBLOCK_ID' => $iblockId,
			));
		}

		$gridId = 'lists_list_elements_'.$iblockId;
		$gridOption = new BitrixMainGridOptions($gridId);
		$gridOption->SetSorting('SORT', 'desc');
		$gridOption->save();
		$gridOption->SetVisibleColumns(array('NAME', 'DETAIL_TEXT', 'SORT', 'IBLOCK_SECTION_ID'));
		$gridOption->SetDefaultView($gridOption->getCurrentOptions());

		$configManager->update($lineId, [
			'QUICK_ANSWERS_IBLOCK_ID' => $iblockId,
			'SKIP_MODIFY_MARK' => 'Y',
		]);

		return $iblockId;
	}
	/*else
	{
		echo $iblock->LAST_ERROR;
	}*/

	return false;
}