Esempio n. 1
0
 public static function getOfferObject(array $offerParams)
 {
     if (!isset($offerParams["IBLOCK_ID"]) || intval($offerParams["IBLOCK_ID"]) <= 0) {
         throw new SystemException("Incorrect iBlock ID  (" . __CLASS__ . "::" . __METHOD__ . ")");
     }
     $arCatalog = \CCatalog::GetByIDExt($offerParams["IBLOCK_ID"]);
     if (empty($arCatalog)) {
         throw new SystemException("IBlock is not catalog. (" . __CLASS__ . "::" . __METHOD__ . ")");
     }
     $catalogType = $arCatalog["CATALOG_TYPE"];
     $catalogTypes = \CCatalogSKU::GetCatalogTypes();
     if (!in_array($catalogType, $catalogTypes)) {
         throw new SystemException("Unknown type of catalog (" . __CLASS__ . "::" . __METHOD__ . ")");
     }
     $result = array();
     switch ($catalogType) {
         case \CCatalogSKU::TYPE_CATALOG:
         case \CCatalogSKU::TYPE_OFFERS:
             $result = new ExportOffer($catalogType, $offerParams);
             break;
         case \CCatalogSKU::TYPE_PRODUCT:
         case \CCatalogSKU::TYPE_FULL:
             $result = new ExportOfferSKU($catalogType, $offerParams);
             break;
     }
     return $result;
 }
Esempio n. 2
0
     $arWorkflowTemplates = CBPDocument::GetWorkflowTemplatesForDocumentType(array("iblock", "CIBlockDocument", "iblock_" . $ID));
     foreach ($arWorkflowTemplates as $t) {
         $create_bizproc = array_key_exists("create_bizproc_" . $t["ID"], $_REQUEST) && $_REQUEST["create_bizproc_" . $t["ID"]] == "Y";
         $edit_bizproc = array_key_exists("edit_bizproc_" . $t["ID"], $_REQUEST) && $_REQUEST["edit_bizproc_" . $t["ID"]] == "Y";
         $create_bizproc1 = ($t["AUTO_EXECUTE"] & 1) != 0;
         $edit_bizproc1 = ($t["AUTO_EXECUTE"] & 2) != 0;
         if ($create_bizproc != $create_bizproc1 || $edit_bizproc != $edit_bizproc1) {
             CBPDocument::UpdateWorkflowTemplate($t["ID"], array("iblock", "CIBlockDocument", "iblock_" . $ID), array("AUTO_EXECUTE" => ($create_bizproc ? 1 : 0) | ($edit_bizproc ? 2 : 0)), $arErrorsTmp);
         }
     }
 }
 if (!$bVarsFromForm && $bCatalog) {
     $boolNeedAgent = false;
     $boolFlag = true;
     $obCatalog = new CCatalog();
     $arCatalog = $obCatalog->GetByIDExt($ID);
     if (!isset($IS_CATALOG) || 'Y' != $IS_CATALOG && 'N' != $IS_CATALOG) {
         $bVarsFromForm = true;
         $strWarning .= GetMessage('IB_E_OF_ERR_IS_CATALOG') . '<br>';
     }
     if (!isset($SUBSCRIPTION) || 'Y' != $SUBSCRIPTION && 'N' != $SUBSCRIPTION) {
         $bVarsFromForm = true;
         $strWarning .= GetMessage('IB_E_OF_ERR_SUBSCRIPTION') . '<br>';
     }
     if (!$bVarsFromForm) {
         if ('Y' == $IS_CATALOG || 'Y' == $SUBSCRIPTION) {
             if (!isset($YANDEX_EXPORT) || 'Y' != $YANDEX_EXPORT && 'N' != $YANDEX_EXPORT) {
                 $bVarsFromForm = true;
                 $strWarning .= GetMessage('IB_E_OF_ERR_YANDEX_EXPORT') . '<br>';
             }
             if (!isset($VAT_ID)) {
 }
 //filter props
 $dbrFProps = CIBlockProperty::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("IBLOCK_ID" => $iblockID, "ACTIVE" => "Y", "FILTRABLE" => "Y", "!PROPERTY_TYPE" => "F", "CHECK_PERMISSIONS" => "N"));
 $arProps = array();
 while ($arProp = $dbrFProps->GetNext()) {
     if (strlen($arProp["USER_TYPE"]) > 0) {
         $arUserType = CIBlockProperty::GetUserType($arProp["USER_TYPE"]);
     } else {
         $arUserType = array();
     }
     $arProp["PROPERTY_USER_TYPE"] = $arUserType;
     $arProps[] = $arProp;
 }
 //filter sku props
 $arSKUProps = array();
 $arCatalog = CCatalog::GetByIDExt($iblockID);
 if ($arCatalog["OFFERS_IBLOCK_ID"] > 0) {
     $dbrFProps = CIBlockProperty::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("IBLOCK_ID" => $arCatalog["OFFERS_IBLOCK_ID"], "ACTIVE" => "Y", "FILTRABLE" => "Y", "!PROPERTY_TYPE" => "F", "CHECK_PERMISSIONS" => "N"));
     while ($arProp = $dbrFProps->GetNext()) {
         if (strlen($arProp["USER_TYPE"]) > 0) {
             $arUserType = CIBlockProperty::GetUserType($arProp["USER_TYPE"]);
         } else {
             $arUserType = array();
         }
         $arProp["PROPERTY_USER_TYPE"] = $arUserType;
         $arSKUProps[] = $arProp;
     }
 }
 $arFilter = array("WF_PARENT_ELEMENT_ID" => false, "IBLOCK_ID" => $IBLOCK_ID, "SECTION_ID" => $filter_section, "ACTIVE" => $filter_active, "%NAME" => $filter_product_name, "%SEARCHABLE_CONTENT" => $filter_intext, "SHOW_NEW" => "Y");
 if (count($arProps) > 0) {
     foreach ($arProps as $arProp) {
Esempio n. 4
0
$arSelectedPropTypes = array('S','N','L','E','G');
$arOffersSelectKeys = array(
	YANDEX_SKU_EXPORT_ALL,
	YANDEX_SKU_EXPORT_MIN_PRICE,
	YANDEX_SKU_EXPORT_PROP,
);
$arCondSelectProp = array(
	'ZERO',
	'NONZERO',
	'EQUAL',
	'NONEQUAL',
);
$arPropertyMap = array();
$arSKUExport = array();

$arCatalog = CCatalog::GetByIDExt($IBLOCK_ID);
if (empty($arCatalog))
{
	$arRunErrors[] = str_replace('#ID#', $IBLOCK_ID, GetMessage('YANDEX_ERR_NO_IBLOCK_IS_CATALOG'));
}
else
{
	$arOffers = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID);
	if (!empty($arOffers['IBLOCK_ID']))
	{
		$intOfferIBlockID = $arOffers['IBLOCK_ID'];
		$rsOfferIBlocks = CIBlock::GetByID($intOfferIBlockID);
		if (($arOfferIBlock = $rsOfferIBlocks->Fetch()))
		{
			$boolOffers = true;
			$rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC'),array('IBLOCK_ID' => $intOfferIBlockID,'ACTIVE' => 'Y'));
Esempio n. 5
0
);

define("MODULE_ID", "iblock");
define("ENTITY", "CIBlockDocument");
define("DOCUMENT_TYPE", "iblock_".$IBLOCK_ID);

$bCatalog = CModule::IncludeModule("catalog");
$arCatalog = false;
$boolSKU = false;
$boolSKUFiltrable = false;
$strSKUName = '';
$uniq_id = 0;

if ($bCatalog)
{
	$arCatalog = CCatalog::GetByIDExt($arIBlock["ID"]);
	if (false == is_array($arCatalog))
	{
		$bCatalog = false;
	}
	else
	{
		if ($arCatalog['CATALOG_TYPE'] == 'P' || $arCatalog['CATALOG_TYPE'] == 'X')
		{
			if (CIBlockRights::UserHasRightTo($arCatalog['OFFERS_IBLOCK_ID'], $arCatalog['OFFERS_IBLOCK_ID'], "iblock_admin_display"))
			{
				$boolSKU = true;
				$strSKUName = GetMessage('IBEL_A_OFFERS');
			}
		}
		if ('P' == $arCatalog['CATALOG_TYPE'])
Esempio n. 6
0
        );

        $hintUnit = Array(
            'length' => 'mm',
            'mass' => 'g'
        );

        $boolAll = false;
        $intCountChecked = 0;
        $intCountAvailIBlock = 0;
        $arIBlockList = array();
        $db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W'));

        while ($iblock = $db_res->Fetch())
        {
                if ($arCatalog = CCatalog::GetByIDExt($iblock["ID"]))
                {
                        if($arCatalog['CATALOG_TYPE'] == "D" || $arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
                        {
                            $propertiesSKU = null;
                            if ($arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
                            {
                                $iblockOffer = CCatalogSKU::GetInfoByProductIBlock($iblock["ID"]);

                                $db_properties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], Array());
                                while($prop = $db_properties->Fetch())
                                    $propertiesSKU[] = $prop;

                                $oldPropertySKU = null;
                                if (isset($IBLOCK_PROPERTY_SKU[$iblock['ID']])) {
                                    foreach ($iblockPropertiesName as $key => $prop) {
Esempio n. 7
0
		COption::SetOptionString('catalog', 'default_use_store_control', $strUseStoreControl);

/*	$strDiscountVat = (!empty($_REQUEST['discount_vat']) && $_REQUEST['discount_vat'] == 'N' ? 'N' : 'Y');
	COption::SetOptionString('catalog', 'discount_vat', $strDiscountVat); */

		$bNeedAgent = false;

		$boolFlag = true;
		$arCurrentIBlocks = array();
		$arNewIBlocksList = array();
		$rsIBlocks = CIBlock::GetList(array());
		while ($arOneIBlock = $rsIBlocks->Fetch())
		{
			// Current info
			$arIBlockItem = array();
			$arOneCatalog = CCatalog::GetByIDExt($arOneIBlock['ID']);
			$arIBlockSitesList = array();
			$rsIBlockSites = CIBlock::GetSite($arOneIBlock['ID']);
			while ($arIBlockSite = $rsIBlockSites->Fetch())
			{
				$arIBlockSitesList[] = htmlspecialcharsbx($arIBlockSite['SITE_ID']);
			}

			$strInfo = '['.$arOneIBlock['IBLOCK_TYPE_ID'].'] '.htmlspecialcharsbx($arOneIBlock['NAME']).' ('.implode(' ',$arIBlockSitesList).')';

			$arIBlockItem = array(
				'INFO' => $strInfo,
				'ID' => $arOneIBlock['ID'],
				'NAME' => $arOneIBlock['NAME'],
				'SITE_ID' => $arIBlockSitesList,
				'IBLOCK_TYPE_ID' => $arOneIBlock['IBLOCK_TYPE_ID'],
Esempio n. 8
0
 $rsIBlocks = CIBlock::GetList(array('IBLOCK_TYPE' => 'ASC', 'NAME' => 'ASC'));
 while ($arIBlock = $rsIBlocks->Fetch()) {
     if (false == array_key_exists($arIBlock['ID'], $arIBlockSitesList)) {
         $arLIDList = array();
         $arWithLinks = array();
         $arWithoutLinks = array();
         $rsIBlockSites = CIBlock::GetSite($arIBlock['ID']);
         while ($arIBlockSite = $rsIBlockSites->Fetch()) {
             $arLIDList[] = $arIBlockSite['LID'];
             $arWithLinks[] = '<a href="/bitrix/admin/site_edit.php?LID=' . urlencode($arIBlockSite['LID']) . '&lang=' . LANGUAGE_ID . '" title="' . GetMessage("CO_SITE_ALT") . '">' . htmlspecialcharsbx($arIBlockSite["LID"]) . '</a>';
             $arWithoutLinks[] = htmlspecialcharsbx($arIBlockSite['LID']);
         }
         $arIBlockSitesList[$arIBlock['ID']] = array('SITE_ID' => $arLIDList, 'WITH_LINKS' => implode('&nbsp;', $arWithLinks), 'WITHOUT_LINKS' => implode(' ', $arWithoutLinks));
     }
     $arIBlockItem = array('ID' => $arIBlock['ID'], 'IBLOCK_TYPE_ID' => $arIBlock['IBLOCK_TYPE_ID'], 'SITE_ID' => $arIBlockSitesList[$arIBlock['ID']]['SITE_ID'], 'NAME' => htmlspecialcharsbx($arIBlock['NAME']), 'ACTIVE' => $arIBlock['ACTIVE'], 'FULL_NAME' => '[' . $arIBlock['IBLOCK_TYPE_ID'] . '] ' . htmlspecialcharsbx($arIBlock['NAME']) . ' (' . $arIBlockSitesList[$arIBlock['ID']]['WITHOUT_LINKS'] . ')', 'IS_CATALOG' => 'N', 'IS_CONTENT' => 'N', 'YANDEX_EXPORT' => 'N', 'VAT_ID' => 0, 'PRODUCT_IBLOCK_ID' => 0, 'SKU_PROPERTY_ID' => 0, 'OFFERS_IBLOCK_ID' => 0, 'IS_OFFERS' => 'N', 'OFFERS_PROPERTY_ID' => 0, 'CATALOG_TYPE' => '');
     $ar_res1 = CCatalog::GetByIDExt($arIBlock['ID']);
     if (true == is_array($ar_res1)) {
         $arIBlockItem['IS_CATALOG'] = $ar_res1['CATALOG'];
         $arIBlockItem['IS_CONTENT'] = CBXFeatures::IsFeatureEnabled('SaleRecurring') ? $ar_res1['SUBSCRIPTION'] : 'N';
         $arIBlockItem['YANDEX_EXPORT'] = $ar_res1['YANDEX_EXPORT'];
         $arIBlockItem['VAT_ID'] = $ar_res1['VAT_ID'];
         $arIBlockItem['PRODUCT_IBLOCK_ID'] = $ar_res1['PRODUCT_IBLOCK_ID'];
         $arIBlockItem['SKU_PROPERTY_ID'] = $ar_res1['SKU_PROPERTY_ID'];
         $arIBlockItem['OFFERS_IBLOCK_ID'] = $ar_res1['OFFERS_IBLOCK_ID'];
         $arIBlockItem['OFFERS_PROPERTY_ID'] = $ar_res1['OFFERS_PROPERTY_ID'];
         if (0 < $ar_res1['PRODUCT_IBLOCK_ID']) {
             $arIBlockItem['IS_OFFERS'] = 'Y';
         }
         $arIBlockItem['CATALOG_TYPE'] = $ar_res1['CATALOG_TYPE'];
         if (!CBXFeatures::IsFeatureEnabled('SaleRecurring') && 'Y' == $ar_res1['SUBSCRIPTION']) {
             $arRecurring[] = '[' . $arIBlockItem['ID'] . '] ' . $arIBlockItem['NAME'];
Esempio n. 9
0
 function OnBeforeCatalogDelete($ID)
 {
     global $DB;
     global $APPLICATION;
     $arMsg = array();
     $ID = intval($ID);
     if (0 >= $ID) {
         return true;
     }
     $arCatalog = CCatalog::GetByIDExt($ID);
     if (false == $arCatalog) {
         return true;
     }
     if (0 < intval($arCatalog['PRODUCT_IBLOCK_ID'])) {
         $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => GetMessage('BT_MOD_CATALOG_ERR_CANNOT_DELETE_SKU_IBLOCK'));
         $obError = new CAdminException($arMsg);
         $APPLICATION->ThrowException($obError);
         return false;
     }
     if (0 < intval($arCatalog['OFFERS_IBLOCK_ID'])) {
         $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => GetMessage('BT_MOD_CATALOG_ERR_CANNOT_DELETE_PRODUCT_IBLOCK'));
         $obError = new CAdminException($arMsg);
         $APPLICATION->ThrowException($obError);
         return false;
     }
     $db_events = GetModuleEvents("catalog", "OnBeforeCatalogDelete");
     while ($arEvent = $db_events->Fetch()) {
         if (false === ExecuteModuleEventEx($arEvent, array($ID))) {
             $strError = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME'];
             $ex = $APPLICATION->GetException();
             if (is_object($ex)) {
                 $strError .= ': ' . $ex->GetString();
             }
             $APPLICATION->ThrowException($strError);
             return false;
         }
     }
     return true;
 }