Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- die('Это пример сценария миграции!');
- /**
- *
- * Это пример сценария миграции. Здесь должно быть описание цели применения миграции, напр.:
- *
- * Миграция добавляет свойство "Класс пункта меню" к инфоблоку "Все компании WiseAdvice CG"
- *
- */
- define('BX_BUFFER_USED', true);
- define('NO_KEEP_STATISTIC', true);
- define('NOT_CHECK_PERMISSIONS', true);
- define('NO_AGENT_STATISTIC', true);
- define('STOP_STATISTICS', true);
- define('SITE_ID', 's1');
- $_SERVER['DOCUMENT_ROOT'] = realpath(__DIR__ . '/../../');
- require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
- error_reporting(E_ALL);
- ini_set('display_errors', 1);
- set_time_limit(0);
- ignore_user_abort(true);
- while (ob_get_level()) {
- ob_end_flush();
- }
- if (!CModule::IncludeModule('iblock')) {
- print 'Не удалось подключить модуль инфоблоков <br>' . PHP_EOL;
- exit;
- }
- /*
- * Выше находится стандартная служебная часть сценария миграции, не требует комментариев.
- * Далее создается индивидуальный сценарий, требует комментариев выполнения.
- *
- * Во время выполнения миграции необходимо предусмотреть проверку состояния миграции,
- * для того чтобы избежать дублирования данных. То есть на одной копии проекта миграция не должна
- * запускаться дважды.
- *
- * При выводе, для переноса строк используется и <br> и PHP_EOL!
- */
- // Объявляю массив добавляемых к инфоблоку свойств
- $properties = array(
- array(
- 'NAME' => 'Класс пункта меню',
- 'CODE' => 'MENU_CLASS',
- 'SORT' => 500,
- 'PROPERTY_TYPE' => 'S',
- 'IS_REQUIRED' => 'N',
- 'MULTIPLE' => 'N',
- 'WITH_DESCRIPTION' => 'N'
- )
- );
- // Класс для работы со свойствами ИБ
- $iBlockProperty = new CIBlockProperty;
- // Перебираю необходимые свойства
- foreach ($properties as $property) {
- // Проверяю уже созданные свойства (проверка состояния миграции на текущей копии проекта)
- if (!$iBlockProperty->GetList(array(), array('CODE' => $property['CODE']))->GetNext()) {
- // Для не созданных свойств инициирую создание
- $propertyId = $iBlockProperty->Add(
- array_merge(
- $property,
- // Добавляю к указанным в начале параметрам свойства дополнительные параметры, общие для всех свойств миграции
- array(
- 'ACTIVE' => 'Y',
- // При указаннии инфоблока использую информацию из конфигурации, так как ID инфоблока (раздела, элемента, etc...) не администрируется
- 'IBLOCK_ID' => EnvironmentHelper::getParam('allCompaniesIBlockId'),
- )
- )
- );
- if ($propertyId) {
- echo sprintf('Свойство "%s" успешно добавлено <br>' . PHP_EOL,
- $property['NAME']);
- } else {
- echo sprintf(
- 'Не удалось создать свойство "%s". Сообщение об ошибке: "%s" <br>' . PHP_EOL,
- $property['NAME'],
- $iBlockProperty->LAST_ERROR
- );
- }
- } else {
- echo sprintf(
- 'Не удалось создать свойство "%s". Свойство с указанным кодом уже существует. <br>' . PHP_EOL,
- $property['NAME']);
- }
- }
- /*
- * Нет закрывающего тега '?>'
- * Обязательно пустая строка в конце (файл заканчивается переносом на новую строку)
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement