예제 #1
0
 /**
  * Генерация создания
  *
  * generateAddCode
  * @param array $params
  * @return string
  * @throws \Exception
  */
 public function generateAddCode($params)
 {
     $this->checkParams($params);
     $return = "";
     $hlBlockData = $this->ownerItemDbData['hlblockData'];
     if ($hlFieldData = $this->ownerItemDbData['hlFieldData']) {
         unset($hlFieldData['ID']);
         unset($hlFieldData['ENTITY_ID']);
         # add iblock code to
         if (($hlFieldData['USER_TYPE_ID'] == "iblock_element" || $hlFieldData['USER_TYPE_ID'] == "iblock_section") && isset($hlFieldData['SETTINGS']['IBLOCK_ID'])) {
             if (!empty($hlFieldData['SETTINGS']['IBLOCK_ID'])) {
                 $iblockId = $hlFieldData['SETTINGS']['IBLOCK_ID'];
                 unset($hlFieldData['SETTINGS']['IBLOCK_ID']);
                 $rsIBlock = $this->iblock->GetList(array(), array('ID' => $iblockId, 'CHECK_PERMISSIONS' => 'N'));
                 if ($arIBlock = $rsIBlock->Fetch()) {
                     $hlFieldData['SETTINGS']['IBLOCK_CODE'] = $arIBlock['CODE'];
                 } else {
                     throw new BimException(' Not found iblock with id ' . $iblockId);
                 }
             }
         }
         $return = $this->getMethodContent('Bim\\Db\\Iblock\\HighloadblockFieldIntegrate', 'Add', array($hlBlockData['NAME'], $hlFieldData));
     }
     return $return;
 }
예제 #2
0
파일: Iblock.php 프로젝트: cjp2600/bim-core
 /**
  * Генерация создания Информационного блока
  *
  * generateAddCode
  * @param array $IblockCode
  * @return bool|string
  */
 public function generateAddCode($IblockCode)
 {
     $return = array();
     $iblockObject = $this->iblock->GetList(array(), array('CODE' => $IblockCode, 'CHECK_PERMISSIONS' => 'N'));
     if ($item = $iblockObject->Fetch()) {
         # Установка групп пользователей
         $this->setUserGroupId($item['ID'], $item);
         $item['FIELDS'] = \CIBlock::GetFields($item['ID']);
         Helper::unsetFields(array('ID'), $item);
         if ($return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($item))) {
             $IblockProperty = new \CIBlockProperty();
             $iblockPropertyQuery = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $item['CODE']));
             while ($iblockProperty = $iblockPropertyQuery->Fetch()) {
                 Helper::unsetFields(array('ID'), $iblockProperty);
                 $iblockProperty['IBLOCK_CODE'] = $item['CODE'];
                 $propertyQuery = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $iblockProperty['IBLOCK_ID'], "CODE" => $iblockProperty['CODE']));
                 while ($propertyValues = $propertyQuery->Fetch()) {
                     Helper::unsetFields(array('ID', 'PROPERTY_ID'), $propertyValues);
                     $iblockProperty['VALUES'][] = $propertyValues;
                 }
                 if (!is_null($iblockProperty['LINK_IBLOCK_ID'])) {
                     $linkedIBlock = $this->iblock->GetList(array(), array('ID' => $iblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'))->Fetch();
                     $iblockProperty['LINK_IBLOCK_CODE'] = $linkedIBlock['CODE'];
                 }
                 $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($iblockProperty));
             }
             return implode(PHP_EOL, $return);
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
예제 #3
0
 /**
  * Генерация создания
  *
  * generateAddCode
  * @param array $hlBlockId
  * @return string
  * @throws \Exception
  */
 public function generateAddCode($hlBlockId)
 {
     $return = array();
     $hlBlock = HL\HighloadBlockTable::getById($hlBlockId)->fetch();
     if (!$hlBlock) {
         throw new BimException('Not found highload block with id = ' . $hlBlockId);
     }
     $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\HighloadblockIntegrate', 'Add', array($hlBlock['NAME'], $hlBlock['TABLE_NAME']));
     $hlQuery = $this->userType->GetList(array(), array("ENTITY_ID" => "HLBLOCK_" . $hlBlockId));
     while ($hlData = $hlQuery->Fetch()) {
         $fullData = $this->userType->GetByID($hlData['ID']);
         unset($fullData['ID']);
         unset($fullData['ENTITY_ID']);
         if (($fullData['USER_TYPE_ID'] == "iblock_element" || $fullData['USER_TYPE_ID'] == "iblock_section") && isset($fullData['SETTINGS']['IBLOCK_ID'])) {
             if (!empty($fullData['SETTINGS']['IBLOCK_ID'])) {
                 $iblockId = $fullData['SETTINGS']['IBLOCK_ID'];
                 unset($fullData['SETTINGS']['IBLOCK_ID']);
                 $blockQuery = $this->iblock->GetList(array(), array('ID' => $iblockId, 'CHECK_PERMISSIONS' => 'N'));
                 if ($iBlockData = $blockQuery->Fetch()) {
                     $fullData['SETTINGS']['IBLOCK_CODE'] = $iBlockData['CODE'];
                 } else {
                     throw new BimException(' Not found iblock with id ' . $iblockId);
                 }
             }
         }
         $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\HighloadblockFieldIntegrate', 'Add', array($hlBlock['NAME'], $fullData));
     }
     return implode(PHP_EOL, $return);
 }
예제 #4
0
 /**
  * Add
  * @param $arFields
  * @return bool
  * @throws \Exception
  */
 public static function Add($arFields)
 {
     $iblock = new \CIBlock();
     if (isset($arFields['SORT'])) {
         if (!is_int($arFields['SORT'])) {
             if (intval($arFields['SORT'])) {
                 $arFields['SORT'] = intval($arFields['SORT']);
             } else {
                 $arFields['SORT'] = 500;
             }
         }
     } else {
         $arFields['SORT'] = 500;
     }
     # default
     $arDefaultValues = array('MULTIPLE' => false, 'IS_REQUIRED' => false, 'ACTIVE' => true, 'PROPERTY_TYPE' => 'S', 'USER_TYPE' => false, 'FILE_TYPE' => '', 'LIST_TYPE' => 'L', 'ROW_COUNT' => 1, 'COL_COUNT' => 30, 'LINK_IBLOCK_ID' => null, 'DEFAULT_VALUE' => null, 'WITH_DESCRIPTION' => 'N', 'SEARCHABLE' => 'N', 'FILTRABLE' => 'N', 'MULTIPLE_CNT' => 5, 'HINT' => '', 'SECTION_PROPERTY' => 'Y', 'SMART_FILTER' => 'N', 'USER_TYPE_SETTINGS' => array(), 'VALUES' => array());
     if ($arFields['IBLOCK_CODE']) {
         unset($arFields['IBLOCK_ID']);
         $rsIBlock = $iblock->GetList(array(), array('CODE' => $arFields['IBLOCK_CODE'], 'CHECK_PERMISSIONS' => 'N'));
         if ($arIBlock = $rsIBlock->Fetch()) {
             $arFields['IBLOCK_ID'] = $arIBlock['ID'];
         } else {
             throw new BimException(__METHOD__ . ' Not found iblock with code ' . $arFields['IBLOCK_CODE']);
         }
     }
     if (!strlen($arFields['CODE'])) {
         throw new BimException(__METHOD__ . ' Not found property code');
     }
     $iblockPropDbRes = \CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $arFields['IBLOCK_ID'], 'CODE' => $arFields['CODE']));
     if ($iblockPropDbRes !== false && $iblockPropDbRes->SelectedRowsCount()) {
         throw new BimException(__METHOD__ . 'Property with code = "' . $arFields['CODE'] . '" ');
     }
     if ($arFields['LINK_IBLOCK_CODE']) {
         unset($arFields['LINK_IBLOCK_ID']);
         $rsIBlock = $iblock->GetList(array(), array('CODE' => $arFields['LINK_IBLOCK_CODE'], 'CHECK_PERMISSIONS' => 'N'));
         if ($arIBlock = $rsIBlock->Fetch()) {
             $arFields['LINK_IBLOCK_ID'] = $arIBlock['ID'];
         }
     }
     foreach ($arDefaultValues as $DefaultName => $DefaultValue) {
         if (!isset($arFields[$DefaultName]) || empty($arFields[$DefaultName])) {
             $arFields[$DefaultName] = $DefaultValue;
         }
     }
     $objCIBlockProperty = new \CIBlockProperty();
     unset($arFields['ID']);
     $iId = $objCIBlockProperty->Add($arFields);
     if ($iId) {
         return $iId;
     } else {
         throw new BimException(__METHOD__ . ' ' . $objCIBlockProperty->LAST_ERROR);
     }
 }
예제 #5
0
 public function selectIBlock($iblockCode)
 {
     $this->_bIBlockSelected = false;
     if (!array_key_exists($iblockCode, $this->_arConfig['IBLOCK'])) {
         return false;
     }
     $arConfig =& $this->_arConfig['IBLOCK'][$iblockCode];
     $this->_iblockCode = $iblockCode;
     $this->_iblockXmlID = $arConfig['XML_ID'];
     $this->_iblockType = $arConfig['IBLOCK_TYPE_ID'];
     $this->_iblockXMLFile = WIZARD_RELATIVE_PATH . '/site/services/iblock/xml/' . LANGUAGE_ID . '/' . $arConfig['XML_FILE'];
     $this->_iblockXMLDir = WIZARD_RELATIVE_PATH . '/site/services/iblock/xml/' . LANGUAGE_ID . '/' . str_replace('.xml', '_files', $arConfig['XML_FILE']);
     $this->_iblockFormSettingsFile = WIZARD_RELATIVE_PATH . '/site/services/iblock/xml/' . LANGUAGE_ID . '/' . $arConfig['FORM_SETTINGS'];
     if (!is_file($_SERVER['DOCUMENT_ROOT'] . $this->_iblockXMLFile) || !file_exists($_SERVER['DOCUMENT_ROOT'] . $this->_iblockXMLFile)) {
         return false;
     }
     if (!is_dir($_SERVER['DOCUMENT_ROOT'] . $this->_iblockXMLDir) || !file_exists($_SERVER['DOCUMENT_ROOT'] . $this->_iblockXMLDir)) {
         return false;
     }
     $rsIBlock = \CIBlock::GetList(array(), array("XML_ID" => $this->_iblockXmlID, "TYPE" => $this->_iblockType));
     if ($arIBlock = $rsIBlock->Fetch()) {
         $this->_iblockID = $arIBlock['ID'];
     }
     $this->_bIBlockSelected = true;
     return true;
 }
예제 #6
0
function storeResult($arResult, $arParams) {
    $iblock = CIBlock::GetList(
        array(),
        array(
            'TYPE' => $arParams['IBLOCK_TYPE'],
            'CODE' => $arParams['IBLOCK_CODE'],
        )
    );
    $iblock = $iblock->Fetch();
    
    $el = new CIBlockElement;

    $props = array();
    foreach ($arResult['FIELDS_LIST'] as $arField) {
        if ($arField['FIELD_TYPE'] == 'TEXT' || $arField['FIELD_TYPE'] == 'NUMBER') {
            $props[$arField['CODE']] = array(
                'VALUE' => $arResult['POST_DATA']['~'.$arField['CODE']],
            );
        } elseif ($arField['FIELD_TYPE'] == 'TEXTAREA') {
            $props[$arField['CODE']] = array(
                'VALUE' => array(
                    'TYPE' => 'text',
                    'TEXT' => $arResult['POST_DATA']['~'.$arField['CODE']],
                ),
            );
        } elseif ($arField['FIELD_TYPE'] == 'LIST') {
            $propEnum = CIBlockPropertyEnum::GetList(
                array(),
                array(
                    'XML_ID' => $arResult['POST_DATA']['~'.$arField['CODE']],
                    'CODE' => $arField['CODE'],
                    'IBLOCK_ID' => $iblock['ID'],
                )
            );
            $propEnum = $propEnum->Fetch();
            if ( ! $propEnum) return false;

            $props[$arField['CODE']] = array(
                'VALUE' => $propEnum['ID'],
            );
        }
    }

    $res = $el->Add(array(
        'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],
        'IBLOCK_ID' => $iblock['ID'],
        'ACTIVE' => 'Y',
        'PROPERTY_VALUES' => $props,
        'ACTIVE_FROM' => ConvertTimeStamp(time()+CTimeZone::GetOffset(), 'FULL'),
        'NAME' => 'Form result', # !!! NEED TO REPLACE TO DEFAULT VALUE
    ));

    if (!$res) {
        return array(
            'MESSAGE' => $el->LAST_ERROR,
        );
    }

    return true;
}
예제 #7
0
파일: Iblock.php 프로젝트: marvin255/bxar
 /**
  * Ищент инфоблок по указанному фильтру и добавляет его в общий список
  * @param array $filter
  * @return array
  */
 protected static function findBy(array $filter)
 {
     if (!\CModule::IncludeModule('iblock')) {
         return null;
     }
     $res = \CIBlock::GetList(array(), array_merge($filter, ['CHECK_PERMISSIONS' => 'N']), false);
     if ($ob = $res->GetNext()) {
         $iblock = array();
         foreach ($ob as $key => $value) {
             if (strpos($key, '~') !== 0) {
                 continue;
             }
             $iblock[substr($key, 1)] = $value;
         }
         $pRes = \CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $ob['ID']));
         while ($pOb = $pRes->GetNext()) {
             $property = array();
             foreach ($pOb as $key => $value) {
                 if (strpos($key, '~') !== 0) {
                     continue;
                 }
                 $property[substr($key, 1)] = $value;
             }
             $iblock['PROPERTIES'][] = $property;
         }
         self::$_list[] = $iblock;
         return $iblock;
     }
     return null;
 }
 public function GetIBlockTypes($lid, $catalogOnly = true, $hideOffers = true)
 {
     CModule::IncludeModule("iblock");
     $arTypeAll = array();
     $dbIBlock = CIBlock::GetList(array("IBLOCK_TYPE" => "ASC", "NAME" => "ASC"), array("LID" => $lid));
     while ($arIBlock = $dbIBlock->Fetch()) {
         if (true == $catalogOnly) {
             if (CModule::IncludeModule("catalog") && CCatalog::GetByID($arIBlock["ID"])) {
                 if ($hideOffers == true && CCatalogSKU::GetInfoByOfferIBlock($arIBlock["ID"])) {
                     continue;
                 }
                 $arTypeIblock[] = $arIBlock;
             }
         } else {
             $arTypeIblock[] = $arIBlock;
         }
     }
     unset($dbIBlock);
     foreach ($arTypeIblock as $arIBlock) {
         $arType = CIBlockType::GetByIDLang($arIBlock["IBLOCK_TYPE_ID"], LANG);
         $arTypeAll[$arType["ID"]]["ID"] = $arType["ID"];
         $arTypeAll[$arType["ID"]]["NAME"] = "{$arType["NAME"]} [{$arType["ID"]}]";
         $arTypeAll[$arType["ID"]]["IBLOCK"][$arIBlock["ID"]] = "{$arIBlock["NAME"]} [{$arIBlock["ID"]}]";
         unset($arType);
     }
     unset($arTypeIblock);
     return $arTypeAll;
 }
예제 #9
0
 function Init(&$next_step, $files_dir, $arParams = array())
 {
     $this->next_step =& $next_step;
     $this->files_dir = $files_dir;
     $this->arParams = $arParams;
     //if (is_array($this->next_step['_TEMPORARY']['DEPARTMENTS']))
     $this->arSectionCache =& $this->next_step['_TEMPORARY']['DEPARTMENTS'];
     $this->DEPARTMENTS_IBLOCK_ID = $this->arParams['DEPARTMENTS_IBLOCK_ID'];
     $this->ABSENCE_IBLOCK_ID = $this->arParams['ABSENCE_IBLOCK_ID'];
     $this->STATE_HISTORY_IBLOCK_ID = $this->arParams['STATE_HISTORY_IBLOCK_ID'];
     $dbRes = CIBlock::GetList(array(), array('TYPE' => $arParams['IBLOCK_TYPE'] ? $arParams['IBLOCK_TYPE'] : 'STRUCTURE', 'ID' => array($this->DEPARTMENTS_IBLOCK_ID, $this->ABSENCE_IBLOCK_ID, $this->STATE_HISTORY_IBLOCK_ID)));
     $bError = false;
     if (intval($dbRes->SelectedRowsCount()) < 3) {
         if (ToUpper($GLOBALS['DBType']) != 'MYSQL') {
             $i = 0;
             while ($arRes = $dbRes->Fetch()) {
                 $i++;
             }
             $bError = $i < 3;
         } else {
             $bError = true;
         }
     }
     if ($bError) {
         $GLOBALS['APPLICATION']->ThrowException(GetMessage('IBLOCK_XML2_USER_ERROR_IBLOCK_MISSING'));
         return false;
     }
     $def_group = COption::GetOptionString("main", "new_user_registration_def_group", "");
     if ($def_group != "") {
         $this->arUserGroups = explode(",", $def_group);
     }
     return true;
 }
예제 #10
0
 /**
  * Генерация создания
  *
  * generateAddCode
  * @param array $IblockTypeId
  * @return bool|string
  */
 public function generateAddCode($IblockTypeId)
 {
     $iBlock = new \CIBlock();
     $CIblockType = new \CIBlockType();
     $lang = new \CLanguage();
     $return = array();
     $dbIblockType = $CIblockType->GetByID($IblockTypeId);
     if ($arIblockType = $dbIblockType->GetNext()) {
         $Iblock = new \CIBlock();
         $dbIblock = $Iblock->GetList(array(), array('TYPE' => $IblockTypeId, 'CHECK_PERMISSIONS' => 'N'));
         while ($arIblock = $dbIblock->GetNext()) {
             $IblockProperty = new \CIBlockProperty();
             $dbIblockProperty = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $arIblock['CODE'], 'CHECK_PERMISSIONS' => 'N'));
             while ($arIblockProperty = $dbIblockProperty->GetNext()) {
                 $dbPropertyValues = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $arIblockProperty['IBLOCK_ID'], "CODE" => $arIblockProperty['CODE']));
                 while ($arPropertyValues = $dbPropertyValues->Fetch()) {
                     $arIblockProperty['VALUES'][$arPropertyValues['ID']] = $arPropertyValues;
                 }
                 Helper::unsetFields(array('ID', '~ID', 'IBLOCK_ID', '~IBLOCK_ID'), $arIblockProperty);
                 $arIblockProperty['IBLOCK_CODE'] = $arIblock['CODE'];
                 foreach ($arIblockProperty as $k => $v) {
                     if (strstr($k, "~") || is_null($v)) {
                         unset($arIblockProperty[$k]);
                     }
                 }
                 if (isset($arIblockProperty['LINK_IBLOCK_ID'])) {
                     $res = $iBlock->GetList(array(), array("ID" => $arIblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'));
                     if ($ar_res = $res->GetNext()) {
                         unset($arIblockProperty['LINK_IBLOCK_ID']);
                         $arIblockProperty['LINK_IBLOCK_CODE'] = $ar_res['CODE'];
                     }
                 }
                 $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($arIblockProperty));
             }
             foreach ($arIblock as $k => $v) {
                 if (strstr($k, "~") || $k == 'ID') {
                     unset($arIblock[$k]);
                 }
             }
             $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($arIblock));
         }
         foreach ($arIblockType as $k => $v) {
             if (strstr($k, "~") || is_null($v)) {
                 unset($arIblockType[$k]);
             }
         }
         $rsLang = $lang->GetList($by = "lid", $order = "desc");
         while ($arLang = $rsLang->Fetch()) {
             $arTypeLang = $CIblockType->GetByIDLang($IblockTypeId, $arLang['LID']);
             $arIblockType["LANG"][$arLang['LID']] = array('NAME' => $arTypeLang['NAME'], 'SECTION_NAME' => $arTypeLang['SECTION_NAME'], 'ELEMENT_NAME' => $arTypeLang['ELEMENT_NAME']);
         }
         $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockTypeIntegrate', 'Add', array($arIblockType));
         $return = array_reverse($return);
         return implode(PHP_EOL, $return);
     } else {
         return false;
     }
 }
 static function showIblockListSelect()
 {
     $res = CIBlock::GetList(array("ID" => "ASC"), array(), false);
     echo '<select name="IBLOCK_ID">';
     while ($ar_res = $res->Fetch()) {
         echo "<option value='{$ar_res['ID']}'>[{$ar_res['ID']}] {$ar_res['NAME']}</option>";
     }
     echo '</select>';
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $type = $input->getArgument('type');
     \CModule::IncludeModule('iblock');
     $resIBlocks = \CIBlock::GetList(array('NAME' => 'asc'), array('TYPE' => $type));
     while ($arIBlock = $resIBlocks->Fetch()) {
         $output->writeln("<info>" . $arIBlock['NAME'] . " (" . $arIBlock['ID'] . ") </info>");
     }
 }
예제 #13
0
/**
 * Собирает массив индентификаторов инфоблоков CODE => ID
 * @return array Массив идентификаторов инфоблоков в виде array(CODE => ID)
 */
function _getIblocks()
{
    $resIblocks = \CIBlock::GetList(array('ID' => 'ASC'), array());
    $arIb = array();
    while ($ar = $resIblocks->Fetch()) {
        $arIb[$ar['CODE']] = $ar['ID'];
    }
    return $arIb;
}
예제 #14
0
 /**
  * @param string $code код инфблока
  * @return int ID инфоблока
  */
 public static function GetIdByCode($code)
 {
     $res = CIBlock::GetList(array(), array('TYPE' => 'bizproc_iblockx', 'SITE_ID' => SITE_ID, 'ACTIVE' => 'Y', "CODE" => $code), true);
     if (empty($res)) {
         ShowError("Инфоблок с кодом=" . $code . " не найден");
         return 0;
     }
     $data = $res->GetNext();
     return $data["ID"];
 }
예제 #15
0
 public function getIblocks($filter = array())
 {
     $filter['CHECK_PERMISSIONS'] = 'N';
     /** @noinspection PhpDynamicAsStaticMethodCallInspection */
     $dbResult = \CIBlock::GetList(array('SORT' => 'ASC'), $filter);
     $list = array();
     while ($aItem = $dbResult->Fetch()) {
         $list[] = $aItem;
     }
     return $list;
 }
예제 #16
0
 /**
  * Получить ID инфоблока по коду
  *
  * @param string $code
  * @return int|bool
  */
 public static function getIblockId($code)
 {
     if (!empty(self::$iblockId[$code])) {
         return self::$iblockId[$code];
     }
     if ($iblock = \CIBlock::GetList([], ['CODE' => $code])->fetch()) {
         self::$iblockId[$code] = $iblock['ID'];
         return $iblock['ID'];
     }
     return false;
 }
예제 #17
0
function get_iblocks_by_type($id)
{
    $arIBlocks = array();
    $result = CIBlock::GetList(array('SORT' => 'ASC'), array('ACTIVE' => 'Y'));
    while ($iblock = $result->GetNext()) {
        if ($iblock['IBLOCK_TYPE_ID'] == $id) {
            $arIBlocks[] = $iblock;
        }
    }
    return $arIBlocks;
}
예제 #18
0
 /**
  * Функция получения ID инфоблока по его коду
  */
 public static function getIBlockIDbyCode($code)
 {
     $strCode = trim($code);
     if (!empty($strCode)) {
         $res = CIBlock::GetList(array(), array('ACTIVE' => 'Y', "=CODE" => $strCode), true);
         while ($ar_res = $res->Fetch()) {
             $IBLOCK_ID = $ar_res["ID"];
         }
     }
     return $IBLOCK_ID;
 }
예제 #19
0
 function __getRMIblockID()
 {
     if ($this->RMIblockID) {
         return $this->RMIblockID;
     } else {
         $dbRes = CIBlock::GetList(array('SORT' => 'ASC'), array('CODE' => 'meeting_rooms'), false);
         if ($arRes = $dbRes->Fetch()) {
             return $this->RMIblockID = $arRes['ID'];
         }
     }
     return false;
 }
예제 #20
0
 function getIblockNames($arIblockIDs)
 {
     $str = "";
     if (CModule::IncludeModule("iblock")) {
         $res = CIBlock::GetList(array(), array("ID" => $arIblockIDs, "ACTIVE" => "Y"), true);
         while ($ar_res = $res->Fetch()) {
             $str .= "\"" . $ar_res["NAME"] . "\", ";
         }
         $str .= "#";
     }
     return str_replace(", #", "", $str);
 }
예제 #21
0
 function OnBuildGlobalMenu(&$aGlobalMenu, &$aModuleMenu)
 {
     global $USER;
     if (!CModule::IncludeModule("iblock")) {
         return;
     }
     //When UnRegisterModuleDependences is called from module uninstall
     //cached EventHandlers may be called
     if (defined("BX_CATALOG_UNINSTALLED")) {
         return;
     }
     $aMenu = array("text" => GetMessage("CAT_MENU_ROOT"), "title" => "", "items_id" => "menu_catalog_list", "items" => array());
     $arCatalogs = array();
     $rsCatalog = CCatalog::GetList(array("sort" => "asc"));
     while ($ar = $rsCatalog->Fetch()) {
         if ($ar["PRODUCT_IBLOCK_ID"]) {
             $arCatalogs[$ar["PRODUCT_IBLOCK_ID"]] = 1;
         } else {
             $arCatalogs[$ar["IBLOCK_ID"]] = 1;
         }
     }
     $rsIBlocks = CIBlock::GetList(array("SORT" => "asc", "NAME" => "ASC"), array("MIN_PERMISSION" => "U"));
     while ($arIBlock = $rsIBlocks->Fetch()) {
         if (array_key_exists($arIBlock["ID"], $arCatalogs)) {
             $arItems = array(array("text" => GetMessage("CAT_MENU_PRODUCT_LIST"), "url" => "cat_product_admin.php?lang=" . LANGUAGE_ID . "&IBLOCK_ID=" . $arIBlock["ID"] . "&type=" . urlencode($arIBlock["IBLOCK_TYPE_ID"]), "more_url" => array("cat_product_admin.php?IBLOCK_ID=" . $arIBlock["ID"], "cat_product_edit.php?IBLOCK_ID=" . $arIBlock["ID"]), "title" => "", "page_icon" => "iblock_page_icon_elements", "items_id" => "menu_catalog_goods_" . $arIBlock["ID"], "module_id" => "catalog"), array("text" => htmlspecialcharsex(CIBlock::GetArrayByID($arIBlock["ID"], "SECTIONS_NAME")), "url" => "cat_section_admin.php?lang=" . LANGUAGE_ID . "&type=" . $arIBlock["IBLOCK_TYPE_ID"] . "&IBLOCK_ID=" . $arIBlock["ID"] . "&find_section_section=0", "more_url" => array("cat_section_admin.php?IBLOCK_ID=" . $arIBlock["ID"] . "&find_section_section=0", "cat_section_edit.php?IBLOCK_ID=" . $arIBlock["ID"] . "&find_section_section=0"), "title" => "", "page_icon" => "iblock_page_icon_sections", "items_id" => "menu_catalog_category_" . $arIBlock["ID"], "module_id" => "catalog", "items" => CCatalogAdmin::get_sections_menu($arIBlock["IBLOCK_TYPE_ID"], $arIBlock["ID"], 1, 0)));
             if (CIBlockRights::UserHasRightTo($arIBlock["ID"], $arIBlock["ID"], "iblock_edit")) {
                 $arItems[] = array("text" => GetMessage("CAT_MENU_PRODUCT_PROPERTIES"), "url" => "iblock_property_admin.php?lang=" . LANGUAGE_ID . "&IBLOCK_ID=" . $arIBlock["ID"] . "&admin=N", "more_url" => array("iblock_property_admin.php?IBLOCK_ID=" . $arIBlock["ID"] . "&admin=N", "iblock_edit_property.php?IBLOCK_ID=" . $arIBlock["ID"] . "&admin=N"), "title" => "", "page_icon" => "iblock_page_icon_settings", "items_id" => "menu_catalog_attributes_" . $arIBlock["ID"], "module_id" => "catalog");
             }
             $arCatalog = false;
             if (CModule::IncludeModule("catalog")) {
                 $arCatalog = CCatalog::GetSkuInfoByProductID($arIBlock["ID"]);
             }
             if (is_array($arCatalog) && CIBlockRights::UserHasRightTo($arCatalog["IBLOCK_ID"], $arCatalog["IBLOCK_ID"], "iblock_edit")) {
                 $arItems[] = array("text" => GetMessage("CAT_MENU_SKU_PROPERTIES"), "url" => "iblock_property_admin.php?lang=" . LANGUAGE_ID . "&IBLOCK_ID=" . $arCatalog["IBLOCK_ID"] . "&admin=N", "more_url" => array("iblock_property_admin.php?IBLOCK_ID=" . $arCatalog["IBLOCK_ID"] . "&admin=N", "iblock_edit_property.php?IBLOCK_ID=" . $arCatalog["IBLOCK_ID"] . "&admin=N"), "title" => "", "page_icon" => "iblock_page_icon_settings", "items_id" => "menu_catalog_attributes_" . $arCatalog["IBLOCK_ID"], "module_id" => "catalog");
             }
             if (CIBlockRights::UserHasRightTo($arIBlock["ID"], $arIBlock["ID"], "iblock_edit")) {
                 $arItems[] = array("text" => GetMessage("CAT_MENU_CATALOG_SETTINGS"), "url" => "cat_catalog_edit.php?lang=" . LANGUAGE_ID . "&IBLOCK_ID=" . $arIBlock["ID"], "more_url" => array("cat_catalog_edit.php?IBLOCK_ID=" . $arIBlock["ID"]), "title" => "", "page_icon" => "iblock_page_icon_settings", "items_id" => "menu_catalog_edit_" . $arIBlock["ID"], "module_id" => "catalog");
             }
             $aMenu["items"][] = array("text" => htmlspecialcharsEx($arIBlock["NAME"]), "title" => "", "page_icon" => "iblock_page_icon_sections", "items_id" => "menu_catalog_" . $arIBlock["ID"], "module_id" => "catalog", "items" => $arItems);
         }
     }
     if (!empty($aMenu["items"])) {
         if (count($aMenu["items"]) == 1) {
             $aMenu = $aMenu["items"][0];
         }
         $aMenu["parent_menu"] = "global_menu_store";
         $aMenu["section"] = "catalog_list";
         $aMenu["sort"] = 200;
         $aMenu["icon"] = "iblock_menu_icon_sections";
         $aMenu["page_icon"] = "iblock_page_icon_types";
         $aModuleMenu[] = $aMenu;
     }
 }
예제 #22
0
 /**
  * Gets block object via Bitrix API by its alias.
  *
  */
 private function getVariableBlockId($_blockAlias, $language)
 {
     $blockAlias = str_replace('{ALIAS}', $_blockAlias, $this->config->variables->{$language}->aliasPattern);
     $blocksList = CIBlock::GetList(array(), array("CODE" => $blockAlias), false);
     if ($blocksList->SelectedRowsCount() != 0) {
         $block = $blocksList->Fetch();
         $blockId = $block['ID'];
     } else {
         throw new Exception("Access denied for '{$blockAlias}' block!");
         $blockId = null;
     }
     return new BitrixAdapterBlockPrototype($blockId);
 }
예제 #23
0
 public static function GetCatalogId($externalName = "", $originatorID = 0, $siteID = null)
 {
     $iblockType = self::GetCatalogTypeID();
     $iblockId = 0;
     $catalogId = 0;
     if ($siteID == null) {
         $siteID = SITE_ID;
     }
     $dbIBlockType = CIBlockType::GetList(array(), array("=ID" => $iblockType));
     if (!($arIBlockType = $dbIBlockType->Fetch())) {
         $langTmp = "";
         $dbSite = CSite::GetById($siteID);
         if ($arSite = $dbSite->Fetch()) {
             $langTmp = $arSite["LANGUAGE_ID"];
         }
         $ib = new CIBlockType();
         $arFields = array("ID" => $iblockType, "LANG" => array($langTmp => array("NAME" => GetMessage("CRM_PROCUCT_CATALOG_TITLE"))));
         $ib->Add($arFields);
     }
     $dbIBlock = CIBlock::GetList(array(), array("XML_ID" => "crm_external_" . $originatorID, "IBLOCK_TYPE_ID" => $iblockType));
     if ($arIBlock = $dbIBlock->Fetch()) {
         $iblockId = $arIBlock["ID"];
     }
     if ($iblockId == 0) {
         $ib = new CIBlock();
         $arFields = array("IBLOCK_TYPE_ID" => $iblockType, "XML_ID" => "crm_external_" . $originatorID, "LID" => $siteID, "NAME" => $externalName, "ACTIVE" => 'Y', "SORT" => 100, "INDEX_ELEMENT" => "N", "WORKFLOW" => 'N', "BIZPROC" => 'N', "VERSION" => 1, "GROUP_ID" => array(2 => "R"));
         $iblockId = $ib->Add($arFields);
         $iblockId = intval($iblockId);
         if ($iblockId <= 0) {
             self::RegisterError($ib->LAST_ERROR);
             return false;
         }
     }
     $dbCatalog = CCrmCatalog::GetList(array(), array("IBLOCK_ID" => $iblockId));
     if ($arCatalog = $dbCatalog->Fetch()) {
         $catalogId = $arCatalog["ID"];
     }
     if ($catalogId == 0) {
         $res = CCrmCatalog::Add(array("ID" => $iblockId, "ORIGINATOR_ID" => $originatorID));
         if (!$res) {
             if (($ex = $GLOBALS["APPLICATION"]->GetException()) !== false) {
                 self::RegisterError($ex->GetString());
             } else {
                 self::RegisterError('Catalog creation error');
             }
             return false;
         }
         $catalogId = $iblockId;
     }
     return $catalogId;
 }
 protected function getIblockIdsWithCommonFiles()
 {
     static $commonIblockIds = array();
     if ($commonIblockIds) {
         return $commonIblockIds;
     }
     $q = CIBlock::GetList(array('ID' => 'ASC'), array('!CODE' => array('group_files%', 'user_files%'), 'TYPE' => 'library'));
     if ($q) {
         while ($iblock = $q->fetch()) {
             $commonIblockIds[$iblock['ID']] = $iblock;
         }
     }
     return $commonIblockIds;
 }
예제 #25
0
 public function checkCode($params)
 {
     global $APPLICATION;
     if (isset($params['CODE']) && $params['CODE'] !== '') {
         CModule::IncludeModule('iblock');
         $iblocks = CIBlock::GetList();
         while ($iblock = $iblocks->Fetch()) {
             if ($iblock['CODE'] === $params['CODE']) {
                 $APPLICATION->ThrowException(new CApplicationException('Инфоблок с таким CODE уже существует.'));
                 return false;
             }
         }
     }
 }
예제 #26
0
 /**
  * Delete
  * @param $IblockTypeCode
  * @return bool
  * @throws \Exception
  */
 public static function Delete($IblockTypeCode)
 {
     $Iblock = new \CIBlock();
     $iblockEl = new \CIBlockElement();
     $dbIblock = $Iblock->GetList(array(), array('TYPE' => $IblockTypeCode));
     while ($dbRow = $dbIblock->Fetch()) {
         $iblockElDbRes = $iblockEl->GetList(array(), array('IBLOCK_ID' => $dbRow['ID']));
         if ($iblockElDbRes !== false && $iblockElDbRes->SelectedRowsCount()) {
             throw new BimException('Can not delete iblock type: iblock id =' . $dbRow['ID'] . ' have elements');
         }
     }
     if (!\CIBlockType::Delete($IblockTypeCode)) {
         throw new BimException('Delete iblock type error!');
     }
     return true;
 }
예제 #27
0
function getIBlocksFormatted() {
	$out = '';

	$type = filter_input(INPUT_POST, 'iblock_type', FILTER_SANITIZE_STRING);

	if ($type == 'notype') {
		return $out;
	}

	$rResult = CIBlock::GetList(
		array('SORT' => 'ASC'),
		array(
			'TYPE' => $type,
			'ACTIVE' => 'Y',
		)
	);
	while (false !== ($iblock = $rResult->GetNext())) {
		$out .= sprintf('<option value="%s">%s</option>', $iblock['ID'], $iblock['NAME']);
	}
	return $out;
}
예제 #28
0
 public static function getIBlockId($code, $site_id, $use_cache = true)
 {
     $iblock_list = null;
     $arIblock = null;
     $result = array();
     if ($use_cache) {
         $iblock_list = static::getCache(__FUNCTION__ . '_list');
     }
     if (!is_array($iblock_list['RESULT'])) {
         \CModule::IncludeModule('iblock');
         $dbResult = \CIBlock::GetList();
         while ($next = $dbResult->fetch()) {
             $iblock_list['RESULT'][] = $next;
         }
         static::setCache(__FUNCTION__ . '_list', $iblock_list['RESULT']);
     }
     if ($use_cache) {
         $arIblock = static::getCache(__FUNCTION__ . '_iblock');
     }
     if (!is_array($arIblock['RESULT'])) {
         \CModule::IncludeModule('iblock');
         foreach ($iblock_list['RESULT'] as $iblock) {
             if ($iblock['CODE'] == $code) {
                 $dbResult = \CIBlock::GetSite($iblock['ID']);
                 while ($next = $dbResult->getNext()) {
                     if ($next['SITE_ID'] == $site_id) {
                         $arIblock['RESULT'][] = $iblock;
                     }
                 }
             }
         }
         static::setCache(__FUNCTION__ . '_iblock', $arIblock['RESULT']);
     }
     if (is_array($arIblock['RESULT']) && count($arIblock['RESULT']) > 0) {
         foreach ($arIblock['RESULT'] as $iblock) {
             $result[] = $iblock['ID'];
         }
     }
     return $result;
 }
 protected function initializeVars($iblockId)
 {
     $this->iblock = \CIBlock::GetList(array('SORT' => 'ASC'), array('ID' => $iblockId))->Fetch();
     if (!$this->iblock) {
         $this->throwException(__METHOD__, 'Iblock %d not found', $iblockId);
     }
     $dbResult = \CIBlockProperty::GetList(array("sort" => "asc"), array("IBLOCK_ID" => $iblockId, "CHECK_PERMISSIONS" => "N"));
     while ($aItem = $dbResult->Fetch()) {
         if (!empty($aItem['CODE'])) {
             $this->titles['PROPERTY_' . $aItem['ID']] = $aItem['NAME'];
             $this->props[$aItem['CODE']] = $aItem;
         }
     }
     $iblockMess = \IncludeModuleLangFile('/bitrix/modules/iblock/iblock.php', 'ru', true);
     $iblockMess['IBLOCK_FIELD_ACTIVE_FROM'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_FROM'];
     $iblockMess['IBLOCK_FIELD_ACTIVE_TO'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_TO'];
     foreach ($iblockMess as $code => $value) {
         if (false !== strpos($code, 'IBLOCK_FIELD_')) {
             $fcode = str_replace('IBLOCK_FIELD_', '', $code);
             $this->titles[$fcode] = $value;
         }
     }
 }
 /**
  * Add
  * @param $entityName
  * @param $fields
  * @return mixed
  * @throws \Exception
  */
 public static function Add($entityName, $fields)
 {
     if (empty($entityName) || empty($fields)) {
         throw new \Exception('entityName or fields is empty');
     }
     if (empty($fields['FIELD_NAME'])) {
         throw new \Exception('Field FIELD_NAME is required.');
     }
     if (empty($fields['USER_TYPE_ID'])) {
         throw new \Exception('Field USER_TYPE_ID is required.');
     }
     if (isset($fields['ID'])) {
         unset($fields['ID']);
     }
     $userFieldEntity = self::_getEntityId($entityName);
     $fields['ENTITY_ID'] = $userFieldEntity;
     $typeEntityDbRes = \CUserTypeEntity::GetList(array(), array("ENTITY_ID" => $fields["ENTITY_ID"], "FIELD_NAME" => $fields["FIELD_NAME"]));
     if ($typeEntityDbRes !== false && $typeEntityDbRes->SelectedRowsCount()) {
         throw new \Exception('Hlblock field with name = "' . $fields["FIELD_NAME"] . '" already exist.');
     }
     #if
     if (($fields['USER_TYPE_ID'] == "iblock_element" || $fields['USER_TYPE_ID'] == "iblock_section") && isset($fields['SETTINGS']['IBLOCK_CODE'])) {
         unset($fields['SETTINGS']['IBLOCK_CODE']);
         $rsIBlock = \CIBlock::GetList(array(), array('CODE' => $fields['SETTINGS']['IBLOCK_CODE'], 'CHECK_PERMISSIONS' => 'N'));
         if ($arIBlock = $rsIBlock->Fetch()) {
             $fields['SETTINGS']['IBLOCK_ID'] = $arIBlock['ID'];
         } else {
             throw new \Exception(__METHOD__ . ' Not found iblock with code ' . $fields['SETTINGS']['IBLOCK_CODE']);
         }
     }
     $UserType = new \CUserTypeEntity();
     $ID = $UserType->Add($fields);
     if (!(int) $ID) {
         throw new \Exception('Not added Hlblock field');
     }
     return $ID;
 }