| Current Path : /var/www/homesaver/www/bitrix/wizards/aspro/next/site/services/iblock/ |
| Current File : /var/www/homesaver/www/bitrix/wizards/aspro/next/site/services/iblock/sku.php |
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock")) return;
if(!CModule::IncludeModule("catalog")) return;
if(!defined("WIZARD_SITE_ID")) return;
if(!defined("WIZARD_SITE_DIR")) return;
if(!defined("WIZARD_SITE_PATH")) return;
if(!defined("WIZARD_TEMPLATE_ID")) return;
if(!defined("WIZARD_TEMPLATE_ABSOLUTE_PATH")) return;
if(!defined("WIZARD_THEME_ID")) return;
$bitrixTemplateDir = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".WIZARD_TEMPLATE_ID."/";
//$bitrixTemplateDir = $_SERVER["DOCUMENT_ROOT"]."/local/templates/".WIZARD_TEMPLATE_ID."/";
$iblockShortCODE = "sku";
$iblockXMLFile = WIZARD_SERVICE_RELATIVE_PATH."/xml/".LANGUAGE_ID."/".$iblockShortCODE.".xml";
$iblockTYPE = "aspro_next_catalog";
$iblockXMLID = "aspro_next_".$iblockShortCODE."_".WIZARD_SITE_ID;
$iblockCODE = "aspro_next_".$iblockShortCODE;
$iblockID = false;
set_time_limit(0);
$rsIBlock = CIBlock::GetList(array(), array("XML_ID" => $iblockXMLID, "TYPE" => $iblockTYPE));
if ($arIBlock = $rsIBlock->Fetch()) {
$iblockID = $arIBlock["ID"];
if (WIZARD_INSTALL_DEMO_DATA) {
// delete if already exist & need install demo
CIBlock::Delete($arIBlock["ID"]);
$iblockID = false;
}
}
if(WIZARD_INSTALL_DEMO_DATA){
if(!$iblockID){
// add new iblock
$permissions = array("1" => "X", "2" => "R");
$dbGroup = CGroup::GetList($by = "", $order = "", Array("STRING_ID" => "sale_administrator"));
if($arGroup = $dbGroup -> Fetch()){
$permissions[$arGroup["ID"]] = 'W';
}
$dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "content_editor"));
if($arGroup = $dbGroup->Fetch()){
$permissions[$arGroup["ID"]] = "W";
};
// replace macros IN_XML_SITE_ID & IN_XML_SITE_DIR in xml file - for correct url links to site
if(file_exists($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile.".back")){
@copy($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile.".back", $_SERVER["DOCUMENT_ROOT"].$iblockXMLFile);
}
@copy($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile, $_SERVER["DOCUMENT_ROOT"].$iblockXMLFile.".back");
CWizardUtil::ReplaceMacros($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile, Array("IN_XML_SITE_DIR" => WIZARD_SITE_DIR));
CWizardUtil::ReplaceMacros($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile, Array("IN_XML_SITE_ID" => WIZARD_SITE_ID));
if(method_exists('\Bitrix\Catalog\Product\Sku', 'disableUpdateAvailable'))
\Bitrix\Catalog\Product\Sku::disableUpdateAvailable();
$iblockID = WizardServices::ImportIBlockFromXML($iblockXMLFile, $iblockCODE, $iblockTYPE, WIZARD_SITE_ID, $permissions);
if(method_exists('\Bitrix\Catalog\Product\Sku', 'enableUpdateAvailable'))
\Bitrix\Catalog\Product\Sku::enableUpdateAvailable();
if(file_exists($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile.".back")){
@copy($_SERVER["DOCUMENT_ROOT"].$iblockXMLFile.".back", $_SERVER["DOCUMENT_ROOT"].$iblockXMLFile);
}
if ($iblockID < 1) return;
// iblock fields
$iblock = new CIBlock;
$arFields = array(
"ACTIVE" => "Y",
"CODE" => $iblockCODE,
"XML_ID" => $iblockXMLID,
"FIELDS" => array(
"IBLOCK_SECTION" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "Array",
),
"ACTIVE" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE"=> "Y",
),
"ACTIVE_FROM" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"ACTIVE_TO" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"SORT" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "0",
),
"NAME" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE" => "",
),
"PREVIEW_PICTURE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"FROM_DETAIL" => "Y",
"SCALE" => "Y",
"WIDTH" => "200",
"HEIGHT" => "200",
"IGNORE_ERRORS" => "N",
"METHOD" => "resample",
"COMPRESSION" => 75,
"DELETE_WITH_DETAIL" => "Y",
"UPDATE_WITH_DETAIL" => "Y",
),
),
"PREVIEW_TEXT_TYPE" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE" => "text",
),
"PREVIEW_TEXT" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"DETAIL_PICTURE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"SCALE" => "Y",
"WIDTH" => "2000",
"HEIGHT" => "2000",
"IGNORE_ERRORS" => "N",
"METHOD" => "resample",
"COMPRESSION" => 75,
),
),
"DETAIL_TEXT_TYPE" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE" => "text",
),
"DETAIL_TEXT" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"XML_ID" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"CODE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"UNIQUE" => "N",
"TRANSLITERATION" => "N",
"TRANS_LEN" => 100,
"TRANS_CASE" => "L",
"TRANS_SPACE" => "-",
"TRANS_OTHER" => "-",
"TRANS_EAT" => "Y",
"USE_GOOGLE" => "N",
),
),
"TAGS" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"SECTION_NAME" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE" => "",
),
"SECTION_PICTURE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"FROM_DETAIL" => "Y",
"SCALE" => "Y",
"WIDTH" => "120",
"HEIGHT" => "120",
"IGNORE_ERRORS" => "N",
"METHOD" => "resample",
"COMPRESSION" => 75,
"DELETE_WITH_DETAIL" => "Y",
"UPDATE_WITH_DETAIL" => "Y",
),
),
"SECTION_DESCRIPTION_TYPE" => array(
"IS_REQUIRED" => "Y",
"DEFAULT_VALUE" => "text",
),
"SECTION_DESCRIPTION" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"SECTION_DETAIL_PICTURE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"SCALE" => "Y",
"WIDTH" => "2000",
"HEIGHT" => "2000",
"IGNORE_ERRORS" => "N",
"METHOD" => "resample",
"COMPRESSION" => 75,
),
),
"SECTION_XML_ID" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => "",
),
"SECTION_CODE" => array(
"IS_REQUIRED" => "N",
"DEFAULT_VALUE" => array(
"UNIQUE" => "N",
"TRANSLITERATION" => "N",
"TRANS_LEN" => 100,
"TRANS_CASE" => "L",
"TRANS_SPACE" => "-",
"TRANS_OTHER" => "-",
"TRANS_EAT" => "Y",
"USE_GOOGLE" => "N",
),
),
),
);
$iblock->Update($iblockID, $arFields);
// link sku iblock to catalog
if ($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"]) {
$ID_SKU = CCatalog::LinkSKUIBlock($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"], $iblockID);
$rsCatalogs = CCatalog::GetList(array(), array('IBLOCK_ID' => $iblockID), false, false, array('IBLOCK_ID'));
if($arCatalog = $rsCatalogs->Fetch()){
CCatalog::Update($iblockID, array('PRODUCT_IBLOCK_ID' => $_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"], 'SKU_PROPERTY_ID' => $ID_SKU));
}
else{
CCatalog::Add(array('IBLOCK_ID' => $iblockID, 'PRODUCT_IBLOCK_ID' => $_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"], 'SKU_PROPERTY_ID' => $ID_SKU));
}
}
}
else{
// attach iblock to site
$arSites = array();
$db_res = CIBlock::GetSite($iblockID);
while ($res = $db_res->Fetch())
$arSites[] = $res["LID"];
if (!in_array(WIZARD_SITE_ID, $arSites)){
$arSites[] = WIZARD_SITE_ID;
$iblock = new CIBlock;
$iblock->Update($iblockID, array("LID" => $arSites));
}
}
/*if ($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"]) {
//create facet index
$index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"]);
$index->startIndex();
$index->continueIndex(0);
$index->endIndex();
}
$index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer($iblockID);
$index->startIndex();
$index->continueIndex(0);
$index->endIndex();*/
if(method_exists('\Bitrix\Iblock\ElementTable', 'getCount'))
{
$count = \Bitrix\Iblock\ElementTable::getCount(array(
'=IBLOCK_ID' => $iblockID,
'=WF_PARENT_ELEMENT_ID' => null
));
if ($count > 0)
{
$catalogReindex = new CCatalogProductAvailable('', 0, 0);
$catalogReindex->initStep($count, 0, 0);
$catalogReindex->setParams(array('IBLOCK_ID' => $iblockID));
$catalogReindex->run();
unset($catalogReindex);
}
}
if(method_exists('\Bitrix\Catalog\ProductTable', 'getList'))
{
$iterator = \Bitrix\Catalog\ProductTable::getList(array(
'select' => array('ID'),
'filter' => array('=IBLOCK_ELEMENT.IBLOCK_ID' => $iblockID),
'order' => array('ID' => 'ASC')
));
while ($row = $iterator->fetch())
{
try{
$result = \Bitrix\Catalog\MeasureRatioTable::add(array(
'PRODUCT_ID' => $row['ID'],
'RATIO' => 1
));
unset($result);
}
catch(Exception $e){
}
}
unset($row, $iterator);
}
if($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"] && method_exists('\Bitrix\Iblock\ElementTable', 'getCount'))
{
/*$count = \Bitrix\Iblock\ElementTable::getCount(array(
'=IBLOCK_ID' => $_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"],
'=WF_PARENT_ELEMENT_ID' => null
));
if ($count > 0)
{
$catalogReindex = new CCatalogProductAvailable('', 0, 0);
$catalogReindex->initStep($count, 0, 0);
$catalogReindex->setParams(array('IBLOCK_ID' => $_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"]));
$catalogReindex->run();
unset($catalogReindex);
}*/
unset($_SESSION["WIZARD_NEXT_CATALOG_IBLOCK_ID"]);
}
\Bitrix\Iblock\PropertyIndex\Manager::checkAdminNotification();
// iblock user fields
$dbSite = CSite::GetByID(WIZARD_SITE_ID);
if($arSite = $dbSite -> Fetch()) $lang = $arSite["LANGUAGE_ID"];
if(!strlen($lang)) $lang = "ru";
WizardServices::IncludeServiceLang("editform_useroptions.php", $lang);
$arProperty = array();
$dbProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $iblockID));
while($arProp = $dbProperty->Fetch())
$arProperty[$arProp["CODE"]] = $arProp["ID"];
// edit form user oprions
CUserOptions::SetOption("form", "form_element_".$iblockID, array(
"tabs" => 'edit1--#--'.GetMessage("WZD_OPTION_90").'--,--ACTIVE--#--'.GetMessage("WZD_OPTION_2").'--,--ACTIVE_FROM--#--'.GetMessage("WZD_OPTION_50").'--,--ACTIVE_TO--#--'.GetMessage("WZD_OPTION_52").'--,--NAME--#--'.GetMessage("WZD_OPTION_54").'--,--CODE--#--'.GetMessage("WZD_OPTION_106").'--,--XML_ID--#--'.GetMessage("WZD_OPTION_218").'--,--SORT--#--'.GetMessage("WZD_OPTION_44").'--,--IBLOCK_ELEMENT_PROPERTY--#--'.GetMessage("WZD_OPTION_128").'--,--IBLOCK_ELEMENT_PROP_VALUE--#--'.GetMessage("WZD_OPTION_130").'--,--PROPERTY_'.$arProperty["ARTICLE"].'--#--'.GetMessage("WZD_OPTION_134").'--,--PROPERTY_'.$arProperty["SIZES"].'--#--'.GetMessage("WZD_OPTION_162").'--,--PROPERTY_'.$arProperty["COLOR_REF"].'--#--'.GetMessage("WZD_OPTION_142").'--,--PROPERTY_'.$arProperty["CML2_LINK"].'--#--'.GetMessage("WZD_OPTION_220").'--;--edit5--#--'.GetMessage("WZD_OPTION_170").'--,--PREVIEW_PICTURE--#--'.GetMessage("WZD_OPTION_172").'--,--PREVIEW_TEXT--#--'.GetMessage("WZD_OPTION_88").'--;--edit6--#--'.GetMessage("WZD_OPTION_108").'--,--DETAIL_PICTURE--#--'.GetMessage("WZD_OPTION_174").'--,--DETAIL_TEXT--#--'.GetMessage("WZD_OPTION_16").'--;--edit14--#--'.GetMessage("WZD_OPTION_18").'--,--IPROPERTY_TEMPLATES_ELEMENT_META_TITLE--#--'.GetMessage("WZD_OPTION_20").'--,--IPROPERTY_TEMPLATES_ELEMENT_META_KEYWORDS--#--'.GetMessage("WZD_OPTION_22").'--,--IPROPERTY_TEMPLATES_ELEMENT_META_DESCRIPTION--#--'.GetMessage("WZD_OPTION_24").'--,--IPROPERTY_TEMPLATES_ELEMENT_PAGE_TITLE--#--'.GetMessage("WZD_OPTION_188").'--,--IPROPERTY_TEMPLATES_ELEMENTS_PREVIEW_PICTURE--#--'.GetMessage("WZD_OPTION_28").'--,--IPROPERTY_TEMPLATES_ELEMENT_PREVIEW_PICTURE_FILE_ALT--#--'.GetMessage("WZD_OPTION_30").'--,--IPROPERTY_TEMPLATES_ELEMENT_PREVIEW_PICTURE_FILE_TITLE--#--'.GetMessage("WZD_OPTION_32").'--,--IPROPERTY_TEMPLATES_ELEMENT_PREVIEW_PICTURE_FILE_NAME--#--'.GetMessage("WZD_OPTION_34").'--,--IPROPERTY_TEMPLATES_ELEMENTS_DETAIL_PICTURE--#--'.GetMessage("WZD_OPTION_36").'--,--IPROPERTY_TEMPLATES_ELEMENT_DETAIL_PICTURE_FILE_ALT--#--'.GetMessage("WZD_OPTION_30").'--,--IPROPERTY_TEMPLATES_ELEMENT_DETAIL_PICTURE_FILE_TITLE--#--'.GetMessage("WZD_OPTION_32").'--,--IPROPERTY_TEMPLATES_ELEMENT_DETAIL_PICTURE_FILE_NAME--#--'.GetMessage("WZD_OPTION_34").'--,--SEO_ADDITIONAL--#--'.GetMessage("WZD_OPTION_84").'--,--TAGS--#--'.GetMessage("WZD_OPTION_46").'--;--edit2--#--'.GetMessage("WZD_OPTION_82").'--,--SECTIONS--#--'.GetMessage("WZD_OPTION_82").'--;--edit10--#--'.GetMessage("WZD_OPTION_212").'--,--CATALOG--#--'.GetMessage("WZD_OPTION_213").'--;--cedit1--#--'.GetMessage("WZD_OPTION_12").'--,--PROPERTY_'.$arProperty["MORE_PHOTO"].'--#--'.GetMessage("WZD_OPTION_176").'--;--;--',
));
// list user options
CUserOptions::SetOption("list", "tbl_iblock_list_".md5($iblockTYPE.".".$iblockID), array(
'columns' => 'CATALOG_TYPE,NAME,ACTIVE,SORT,TIMESTAMP_X,ID,PREVIEW_PICTURE', 'by' => 'sort', 'order' => 'desc', 'page_size' => '20',
));
}
if($iblockID){
// replace macros IBLOCK_TYPE & IBLOCK_ID & IBLOCK_CODE
CWizardUtil::ReplaceMacrosRecursive(WIZARD_SITE_PATH, Array("IBLOCK_SKU_ID" => $iblockID));
CWizardUtil::ReplaceMacrosRecursive(WIZARD_SITE_PATH, Array("IBLOCK_SKU_CODE" => $iblockCODE));
CWizardUtil::ReplaceMacrosRecursive($bitrixTemplateDir, Array("IBLOCK_SKU_TYPE" => $iblockTYPE));
CWizardUtil::ReplaceMacrosRecursive($bitrixTemplateDir, Array("IBLOCK_SKU_ID" => $iblockID));
}
?>