Advertisement
SpeakeazyYT

Untitled

Jul 21st, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.51 KB | None | 0 0
  1. <?php
  2. $_SERVER['DOCUMENT_ROOT']="/home/bitrix/www";
  3.  
  4. define("NO_KEEP_STATISTIC", true);
  5. define("NOT_CHECK_PERMISSIONS", true);
  6.  
  7. // подгружаем пролог
  8. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  9.  
  10. // отключаем таймаут
  11. set_time_limit(0);
  12.  
  13. // ограничения по памяти
  14. ini_set('memory_limit', '2048M');
  15.  
  16. // выполняем все действия от админа битрикса
  17. global $USER;
  18. $USER->Authorize(1);
  19. CModule::IncludeModule('iblock');
  20.  
  21. $start = microtime(true);
  22.  
  23. $iblock_ids = array(2,1,3); // id инфоблоков для считывания
  24.  
  25. $arSelect = array(
  26.     "IBLOCK_NAME",
  27.     "ID",
  28.     "NAME",
  29.     "IBLOCK_SECTION_ID",
  30.     "PROPERTY_22", // Код производителя товара ELKO (manufacturerCode)
  31.     "PROPERTY_3", // Артикул Treolan (articul)
  32.     "PROPERTY_31", // Номер партии OCS (PartNumber)
  33. );
  34.  
  35. // Выборка элементов указанных инфоблоков
  36. $rsElement = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $iblock_ids, "SECTION_ACTIVE" => "Y", "SECTION_GLOBAL_ACTIVE" => "Y"), false, false, $arSelect);
  37. while($arElement = $rsElement->Fetch())
  38. {
  39.     $elems[$arElement["IBLOCK_NAME"]][] = $arElement;
  40. }
  41.  
  42. // Массивы с элементами инфоблоков
  43. $elkoArr = $elems["ELKO"];
  44. $treolanArr = $elems["Treolan"];
  45. $ocsArr = $elems["OCS"];
  46.  
  47. function getSectionsList($filter) {
  48.     // Выборка разделов указанных инфоблоков
  49.     $dbSection = CIBlockSection::GetList(array(), $filter, false);
  50.     while( $arSection = $dbSection-> GetNext() ){
  51.        $sections[] = $arSection;
  52.     }
  53.     return $sections;
  54. }
  55.  
  56. // Функция
  57. function search($array, $key, $value)
  58. {
  59.     $results = array();
  60.  
  61.     if (is_array($array))
  62.     {
  63.         if (isset($array[$key]) && $array[$key] == $value)
  64.             $results[] = $array;
  65.  
  66.         foreach ($array as $subarray)
  67.             $results = array_merge($results, search($subarray, $key, $value));
  68.     }
  69.  
  70.     return $results;
  71. }
  72.  
  73. function getInfoSectionByID($id) {
  74.     $res = CIBlockSection::GetByID($id);
  75.     if($arRes = $res->Fetch())
  76.     {
  77.         return $arRes;
  78.     }
  79. }
  80.  
  81. function createTreeSections($iblock_id, $el_id, $sec_id) {
  82.     $sec_element = CIBlockElement::GetElementGroups($el_id, true)->Fetch();
  83.     $resSection = CIBlockSection::GetNavChain(false, $sec_element['ID'], [
  84.         'NAME','ID','CODE','IBLOCK_SECTION_ID'
  85.     ]);
  86.     while ($arSection = $resSection->GetNext()) {
  87.         $array_sections[] = $arSection;
  88.     }
  89.  
  90.     foreach($array_sections as $section) {
  91.         $sectionObject = new CIBlockSection;
  92.  
  93.         $sectionId = $sectionObject->Add([
  94.             'IBLOCK_ID' => $iblock_id,
  95.             'IBLOCK_SECTION_ID' => '',
  96.             "NAME" => $section['NAME'],
  97.             "CODE" => $section['CODE'].'_non',
  98.         ]);
  99.  
  100.         if($sectionId > 0){
  101.             $sectionObject->Update($sectionId, [
  102.                 'IBLOCK_ID' => $iblock_id,
  103.                 'IBLOCK_SECTION_ID' => '',
  104.                 "NAME" => $section['NAME'],
  105.                 "CODE" => $section['CODE'].'_non',
  106.             ]);
  107.         };
  108.     }
  109. }
  110.  
  111. print_r(createTreeSections(1, 1174964, 14615));
  112.  
  113. /*foreach ($elkoArr as $k => $elkoItem) {
  114.     if (empty(search($ocsArr, 'PROPERTY_31_VALUE', $elkoItem['PROPERTY_22_VALUE']))) {
  115.         $countElko++;
  116.        
  117.     }
  118. }
  119.  
  120. foreach ($treolanArr as $treolanItem) {
  121.     if (empty(search($ocsArr, 'PROPERTY_31_VALUE', $treolanItem['PROPERTY_3_VALUE']))) {
  122.         $countTreolan++;
  123.     }
  124. }*/
  125.  
  126. echo $countElko."\n";
  127. echo $countTreolan."\n";
  128.  
  129. $finish = microtime(true);
  130. $delta = $finish - $start;
  131. echo round($delta, 2)." сек. \n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement