Advertisement
bender-nvkz

bx-script

Jun 5th, 2017
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.43 KB | None | 0 0
  1. <?php
  2. use Project\Environment\EnvironmentManager;
  3.  
  4. define('BX_BUFFER_USED', true);
  5. define('NO_KEEP_STATISTIC', true);
  6. define('NOT_CHECK_PERMISSIONS', true);
  7. define('NO_AGENT_STATISTIC', true);
  8. define('STOP_STATISTICS', true);
  9. define('SITE_ID', 's1');
  10.  
  11. if (empty($_SERVER['DOCUMENT_ROOT'])) {
  12.     $_SERVER['HTTP_HOST'] = 'site.ru';
  13.     $_SERVER['DOCUMENT_ROOT'] = realpath(__DIR__ . '/../../');
  14. }
  15.  
  16. require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
  17.  
  18. while (ob_get_level()) {
  19.     ob_end_flush();
  20. }
  21.  
  22. if (!CModule::IncludeModule('iblock')) {
  23.     echo 'Unable to include iblock module';
  24.     exit;
  25. }
  26.  
  27. class ConvertPM
  28. {
  29.  
  30.     private $APP, $DB;
  31.  
  32.     public function __construct()
  33.     {
  34.  
  35.         global $APPLICATION;
  36.         $this->APP = & $APPLICATION;
  37.  
  38.         global $DB;
  39.         $this->DB = & $DB;
  40.  
  41.     }
  42.  
  43.     public function up()
  44.     {
  45.         $logger = new \Project\Tools\Logger\EchoLogger();
  46.         $EM = EnvironmentManager::getInstance();
  47.         $catalogSKUIBlockId = $EM->get('catalogSKUIBlockId');
  48.  
  49.         if(
  50.             empty($catalogSKUIBlockId)
  51.             ||
  52.             !CIBlock::GetByID($catalogSKUIBlockId)->GetNext()
  53.         ) {
  54.             $logger->log('Iblock for SKU is not exist. Check migration history.');
  55.             return;
  56.         }
  57.  
  58.         $errorMsg = '';
  59.         $CIBlockProperty = new CIBlockProperty;
  60.  
  61.         $dbMoreimgProp = $CIBlockProperty->GetList(array(),array(
  62.             'IBLOCK_ID' =>  $catalogSKUIBlockId,
  63.             'CODE'      =>  'MORE_PICTURES'
  64.         ));
  65.  
  66.         if ($arMoreimgProp = $dbMoreimgProp->GetNext()) {
  67.  
  68.             $moreimgPropId = $arMoreimgProp['ID'];
  69.  
  70.             $this->DB->StartTransaction();
  71.  
  72.             $arMoreimagesUpdateProps = array(
  73.                 'PROPERTY_TYPE' => 'F',
  74.                 'MULTIPLE'      => 'Y',
  75.                 'FILTRABLE'     => 'N'
  76.             );
  77.  
  78.             if(!$CIBlockProperty->Update($moreimgPropId,$arMoreimagesUpdateProps)){
  79.                 $errorMsg = sprintf(
  80.                     'Can\'t update property: "MORE_PICTURES". Error message: "%s"',
  81.                     $CIBlockProperty->LAST_ERROR
  82.                 );
  83.             }
  84.         } else {
  85.             $logger->log('Can\'t find "MORE_PICTURES" property for SKU iblock.');
  86.             return;
  87.         }
  88.  
  89.         if (!$errorMsg) {
  90.             $this->DB->Commit();
  91.             $logger->log('"MORE_PICTURES" property for SKU iblock has been updated.');
  92.         } else {
  93.             $this->DB->Rollback();
  94.             $logger->log(sprintf('ERROR: %s', $errorMsg));
  95.         }
  96.  
  97.     }
  98.  
  99.     public function down()
  100.     {
  101.         $logger = new \Project\Tools\Logger\EchoLogger();
  102.  
  103.         $errorMsg = 'This migration has no rollback method yet.';
  104.  
  105.         $logger->log(sprintf('ERROR: %s', $errorMsg));
  106.     }
  107. }
  108.  
  109. $oClass = new ConvertPM();
  110. $oClass->up();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement