示例#1
0
 /**
  * Метод создания инфоблока.
  *
  * @param $input
  * @return bool
  * @throws \Exception
  */
 public static function Add($input)
 {
     $iBlock = new CIBlock();
     if (isset($input['SORT'])) {
         if (!is_int($input['SORT'])) {
             if (intval($input['SORT'])) {
                 $input['SORT'] = intval($input['SORT']);
             } else {
                 $input['SORT'] = 500;
             }
         }
     } else {
         $input['SORT'] = 500;
     }
     # default values
     $defaultValue = array('ACTIVE' => 'Y', 'LIST_PAGE_URL' => '#SITE_DIR#/' . $input['IBLOCK_TYPE_ID'] . '/index.php?ID=#IBLOCK_ID#', 'SECTION_PAGE_URL' => '#SITE_DIR#/' . $input['IBLOCK_TYPE_ID'] . '/list.php?SECTION_ID=#ID#', 'DETAIL_PAGE_URL' => '#SITE_DIR#/' . $input['IBLOCK_TYPE_ID'] . '/detail.php?ID=#ID#', 'INDEX_SECTION' => 'Y', 'INDEX_ELEMENT' => 'Y', 'PICTURE' => array('del' => null, 'MODULE_ID' => 'iblock'), 'DESCRIPTION' => '', 'DESCRIPTION_TYPE' => 'text', 'EDIT_FILE_BEFORE' => '', 'EDIT_FILE_AFTER' => '', 'WORKFLOW' => 'N', 'BIZPROC' => 'N', 'SECTION_CHOOSER' => 'L', 'LIST_MODE' => '', 'FIELDS' => array(), 'ELEMENTS_NAME' => 'Элементы', 'ELEMENT_NAME' => 'Элемент', 'ELEMENT_ADD' => 'Добавить элемент', 'ELEMENT_EDIT' => 'Изменить элемент', 'ELEMENT_DELETE' => 'Удалить элемент', 'SECTIONS_NAME' => 'Разделы', 'SECTION_NAME' => 'Раздел', 'SECTION_ADD' => 'Добавить раздел', 'SECTION_EDIT' => 'Изменить раздел', 'SECTION_DELETE' => 'Удалить раздел', 'RIGHTS_MODE' => 'S', 'GROUP_ID' => array(2 => 'R', 1 => 'X'), 'VERSION' => 1);
     if (!strlen($input['CODE'])) {
         throw new BimException('Not found iblock code');
     }
     $iblockDbRes = $iBlock->GetList(array(), array('CODE' => $input['CODE'], 'CHECK_PERMISSIONS' => 'N'));
     if ($iblockDbRes !== false && $iblockDbRes->SelectedRowsCount()) {
         throw new BimException('Iblock with code = "' . $input['CODE'] . '" already exist.');
     }
     foreach ($defaultValue as $defaultName => $defaultValue) {
         if (!isset($input[$defaultName]) || empty($input[$defaultName])) {
             $input[$defaultName] = $defaultValue;
         }
     }
     // Перегоняем имена групп (если были изменены при накатывании миграции) в идентификаторы групп
     $arGroups = Helper::getUserGroups();
     foreach ($input['GROUP_ID'] as $groupCode => $right) {
         $groupId = Helper::getUserGroupId($groupCode, $arGroups);
         if ($groupId != null && strlen($groupId) > 0) {
             $input['GROUP_ID'][$groupId] = $input['GROUP_ID'][$groupCode];
             unset($input['GROUP_ID'][$groupCode]);
         }
     }
     $ID = $iBlock->Add($input);
     if ($ID) {
         return $ID;
     } else {
         throw new BimException($iBlock->LAST_ERROR);
     }
 }
示例#2
0
 /**
  * Установка групп пользователей
  *
  * @param $id : ID Информационного блока
  * @param $item : Формируемый массив
  */
 private function setUserGroupId($id, &$item)
 {
     $item['GROUP_ID'] = $this->iblock->GetGroupPermissions($id);
     $arGroups = Helper::getUserGroups();
     foreach ($item['GROUP_ID'] as $groupId => $right) {
         $groupCode = Helper::getUserGroupCode($groupId, $arGroups);
         if ($groupCode != null && strlen($groupCode) > 0) {
             $item['GROUP_ID'][$groupCode] = $item['GROUP_ID'][$groupId];
             unset($item['GROUP_ID'][$groupId]);
         }
     }
 }