%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/catalog/tools/ |
Current File : /home/bitrix/www/bitrix/modules/catalog/tools/product_settings.php |
<? /** @global CUser $USER */ /** @global CMain $APPLICATION */ define('STOP_STATISTICS', true); define('NO_AGENT_CHECK', true); define('PUBLIC_AJAX_MODE', true); use Bitrix\Main, Bitrix\Main\Localization\Loc, Bitrix\Main\Loader, Bitrix\Catalog; require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php'); Loc::loadMessages(__FILE__); $settingIds = array( 'default_quantity_trace', 'default_can_buy_zero', 'default_subscribe' ); $settings = array(); foreach ($settingIds as $id) $settings[$id] = (string)Main\Config\Option::get('catalog', $id); unset($id); if (!$USER->CanDoOperation('catalog_settings')) { require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); ShowError(Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_ACCESS_DENIED')); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php'); die(); } if (!check_bitrix_sessid()) { require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); ShowError(Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_ERRORS_INCORRECT_SESSION')); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php'); die(); } if (!Loader::includeModule('catalog')) { require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); ShowError(Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_REINDEX_ERRORS_MODULE_CATALOG_ABSENT')); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php'); die(); } $request = Main\Context::getCurrent()->getRequest(); if ( $request->getRequestMethod() == 'GET' && $request['operation'] == 'Y' ) { CUtil::JSPostUnescape(); $params = array( 'sessID' => $request['ajaxSessionID'], 'maxExecutionTime' => $request['maxExecutionTime'], 'maxOperationCounter' => $request['maxOperationCounter'], 'counter' => $request['counter'], 'operationCounter' => $request['operationCounter'], 'lastID' => $request['lastID'], 'IBLOCK_ID' => $request['iblockId'] ); $productSettings = new CCatalogProductSettings( $params['sessID'], $params['maxExecutionTime'], $params['maxOperationCounter'] ); $productSettings->initStep($params['counter'], $params['operationCounter'], $params['lastID']); $productSettings->setParams($params); $productSettings->run(); $result = $productSettings->saveStep(); unset($productSettings); header('Content-Type: application/x-javascript; charset='.LANG_CHARSET); echo CUtil::PhpToJSObject($result, false, true); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin_after.php'); } elseif ( $request->getRequestMethod() == 'GET' && $request['changeSettings'] == 'Y' ) { $result = array(); $newSettings = $settings; foreach ($settingIds as $id) { $newValue = (string)$request[$id]; if ($newValue == 'Y' || $newValue == 'N') $newSettings[$id] = $newValue; unset($newValue); } unset($id); foreach ($newSettings as $id => $value) { Main\Config\Option::set('catalog', $id, $value, ''); if ($id === 'default_can_buy_zero') Main\Config\Option::set('catalog', 'allow_negative_amount', $value, ''); } unset($id, $value); $result['success'] = 'Y'; header('Content-Type: application/x-javascript; charset='.LANG_CHARSET); echo CUtil::PhpToJSObject($result, false, true); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin_after.php'); } elseif ( $request->getRequestMethod() == 'GET' && $request['getIblock'] == 'Y' ) { $result = CCatalogProductSettings::getCatalogList(); header('Content-Type: application/x-javascript; charset='.LANG_CHARSET); echo CUtil::PhpToJSObject($result, false, true); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin_after.php'); } elseif ( $request->getRequestMethod() == 'GET' && $request['finalRequest'] == 'Y' ) { $iblockList = $request['iblockList']; if (!empty($iblockList) && is_array($iblockList)) { foreach ($iblockList as $iblock) CIBlock::clearIblockTagCache($iblock); unset($iblock); } require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin_after.php'); } else { $APPLICATION->SetTitle(Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_PAGE_TITLE')); $oneStepTime = CCatalogProductSettings::getDefaultExecutionTime(); if ($_REQUEST["public_mode"] == "Y") { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_popup_admin.php"); } else { require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); } $tabList = array( array('DIV' => 'productSettingsTab01', 'TAB' => Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_TAB'), 'ICON' => 'sale', 'TITLE' => Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_TAB_TITLE')) ); $tabControl = new CAdminTabControl('productSettings', $tabList, true, true); if ($_REQUEST["public_mode"] == "Y") $tabControl->SetPublicMode(); Main\Page\Asset::getInstance()->addJs('/bitrix/js/catalog/step_operations.js'); ?><div id="product_settings_error_div" style="margin:0; display: none;"> <div class="adm-info-message-wrap adm-info-message-red"> <div class="adm-info-message"> <div class="adm-info-message-title"><? echo Loc::getMessage('SALE_DISCOUNT_REINDEX_ERRORS_TITLE'); ?></div> <div id="product_settings_error_cont"></div> <div class="adm-info-message-icon"></div> </div> </div> </div> <form name="product_settings_form" id="product_settings_form" action="<? echo $APPLICATION->GetCurPage(); ?>" method="GET"><? $tabControl->Begin(); $tabControl->BeginNextTab(); ?><tr> <td width="40%"><label for="default_quantity_trace"><? echo Loc::getMessage("BX_CATALOG_PRODUCT_SETTINGS_ENABLE_QUANTITY_TRACE"); ?></label></td> <td width="60%"> <input type="checkbox" name="default_quantity_trace" id="quantity_trace" value="Y"<? echo ($settings['default_quantity_trace'] === 'Y' ? ' checked' : ''); ?>> </td> </tr> <tr> <td width="40%"><label for="default_can_buy_zero"><? echo Loc::getMessage("BX_CATALOG_PRODUCT_SETTINGS_ALLOW_CAN_BUY_ZERO"); ?></label></td> <td width="60%"> <input type="checkbox" name="default_can_buy_zero" id="can_buy_zero" value="Y"<? echo ($settings['default_can_buy_zero'] === 'Y' ? ' checked' : ''); ?>> </td> </tr> <tr> <td width="40%"><label for="default_subscribe"><? echo Loc::getMessage("BX_CATALOG_PRODUCT_SETTINGS_PRODUCT_SUBSCRIBE"); ?></label></td> <td width="60%"> <input type="checkbox" name="default_subscribe" id="subscribe" value="Y"<?if ($settings['default_subscribe'] === 'Y') echo " checked";?>> </td> </tr> <tr> <td width="40%"><? echo Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_MAX_EXECUTION_TIME')?></td> <td width="60%"><input type="text" name="max_execution_time" id="max_execution_time" size="3" value="<?echo $oneStepTime; ?>"></td> </tr> <? $tabControl->Buttons(); ?> <input type="button" id="product_settings_start_button" value="<? echo Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_UPDATE_BTN')?>"> <input type="button" id="product_settings_stop_button" value="<? echo Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_STOP_BTN')?>" disabled> <div id="reindexReport" style="display: none;"></div> <? $tabControl->End(); ?></form> <? $jsParams = array( 'url' => $APPLICATION->GetCurPage(), 'options' => array( 'ajaxSessionID' => 'productSettings', 'maxExecutionTime' => $oneStepTime, 'maxOperationCounter' => 10, 'counter' => 0 ), 'visual' => array( 'startBtnID' => 'product_settings_start_button', 'stopBtnID' => 'product_settings_stop_button', 'timeFieldID' => 'max_execution_time', 'reportID' => 'reindexReport', 'prefix' => 'catalog_reindex_iblock_', 'resultContID' => 'catalog_reindex_result_div_', 'errorContID' => 'catalog_reindex_error_cont_', 'errorDivID' => 'catalog_reindex_error_div_' ), 'ajaxParams' => array( 'operation' => 'Y' ), 'checkboxList' => array( 'quantity_trace', 'can_buy_zero', 'subscribe' ), 'messages' => array( 'status_yes' => Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_STATUS_YES'), 'status_no' => Loc::getMessage('BX_CATALOG_PRODUCT_SETTINGS_STATUS_NO') ) ); ?> <script type="text/javascript"> var jsProductSettings = new BX.Catalog.ProductSettings(<? echo CUtil::PhpToJSObject($jsParams, false, true); ?>); </script> <? if ($_REQUEST["public_mode"] != "Y") { require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php'); } }