function Set($SID, $arData, $SITE_ID = false) { if ($SITE_ID == 'ALL') { $SITE_ID = false; } if (!defined('SALE_DH_INITIALIZED')) { CSaleDeliveryHandler::Initialize(); } global $APPLICATION, $DB; $rsHandlerDataFull = CSaleDeliveryHandler::GetBySID($SID, $SITE_ID); if ($arHandlerDataFull = $rsHandlerDataFull->Fetch()) { $bInstalled = $arHandlerDataFull["INSTALLED"] == "Y"; $DB->StartTransaction(); $arQueryFields = array(); if ($SITE_ID) { $arQueryFields["LID"] = "'" . ($SITE_ID == "ALL" ? "" : $DB->ForSql($SITE_ID)) . "'"; } else { $arQueryFields["LID"] = "''"; } if (is_set($arData, "ACTIVE")) { $arQueryFields["ACTIVE"] = $arData["ACTIVE"] == 'Y' ? "'Y'" : "'N'"; } elseif ($bInstalled) { $arQueryFields["ACTIVE"] = "'N'"; } if (!$bInstalled) { $arQueryFields["HID"] = "'" . $DB->ForSql($SID) . "'"; } if (is_set($arData, "SORT")) { $arQueryFields["SORT"] = "'" . intval($arData["SORT"]) . "'"; } elseif (!$bInstalled) { $arQueryFields["SORT"] = '100'; } if (is_set($arData, "NAME")) { $arQueryFields["NAME"] = "'" . $DB->ForSql($arData["NAME"]) . "'"; } elseif (!$bInstalled) { $arQueryFields["NAME"] = "'" . $DB->ForSql($arHandlerDataFull['NAME']) . "'"; } if (is_set($arData, "DESCRIPTION")) { $arQueryFields["DESCRIPTION"] = "'" . $DB->ForSql($arData["DESCRIPTION"]) . "'"; } elseif (!$bInstalled) { $arQueryFields["DESCRIPTION"] = "'" . $DB->ForSql($arHandlerDataFull['DESCRIPTION']) . "'"; } if (is_set($arData, "HANDLER")) { $arQueryFields["HANDLER"] = "'" . $DB->ForSql($arData["HANDLER"]) . "'"; } elseif (!$bInstalled) { $arQueryFields["HANDLER"] = "'" . $DB->ForSql($arHandlerDataFull['HANDLER']) . "'"; } if (is_set($arData, "TAX_RATE")) { $arQueryFields["TAX_RATE"] = "'" . doubleval($arData["TAX_RATE"]) . "'"; } elseif (!$bInstalled) { $arQueryFields["TAX_RATE"] = 0; } if (is_set($arData, "CONFIG")) { if (is_callable($arHandlerDataFull["DBSETSETTINGS"])) { if (!($strSettings = call_user_func($arHandlerDataFull["DBSETSETTINGS"], $arData["CONFIG"]))) { $DB->Rollback(); return false; } } else { $strSettings = serialize($arData["CONFIG"]); } $arQueryFields["SETTINGS"] = "'" . $DB->ForSql($strSettings) . "'"; } if (is_set($arData, "PROFILE_USE_DEFAULT") && $arData["PROFILE_USE_DEFAULT"] == 'Y') { $arQueryFields["PROFILES"] = "''"; } else { if (is_array($arData["PROFILES"]) && count($arData["PROFILES"]) > 0) { $arQueryFields["PROFILES"] = "'" . $DB->ForSql(serialize($arData["PROFILES"])) . "'"; } elseif (!$bInstalled) { $arQueryFields["PROFILES"] = "''"; } } if ($bInstalled) { if ($rsHandlerDataFull->SelectedRowsCount() > 1 && $SITE_ID == false) { $DB->Query("DELETE FROM b_sale_delivery_handler WHERE HID='" . $DB->ForSql($SID) . "' AND LID<>'" . $DB->ForSql($arHandlerDataFull['LID']) . "'"); $SITE_ID = $arHandlerDataFull['LID']; } elseif ($arHandlerDataFull["LID"] == '' && $SITE_ID !== false) { CSaleDeliveryHandler::__spreadHandlerData($SID); } $strWhere = "WHERE HID='" . $DB->ForSql($SID) . "'"; if ($SITE_ID) { $strWhere .= " AND LID='" . $DB->ForSql($SITE_ID) . "'"; } $DB->Update("b_sale_delivery_handler", $arQueryFields, $strWhere); } else { $DB->Insert("b_sale_delivery_handler", $arQueryFields); } $DB->Commit(); } else { $APPLICATION->ThrowException('SALE_DH_ERROR_WRONG_HANDLER_FILE'); return false; } }
function Set($SID, $arData, $SITE_ID = false) { if(!self::CheckFields($arData)) return false; if ($SITE_ID == 'ALL') $SITE_ID = false; if (!defined('SALE_DH_INITIALIZED')) CSaleDeliveryHandler::Initialize(); global $APPLICATION, $DB; $rsHandlerDataFull = CSaleDeliveryHandler::GetBySID($SID, $SITE_ID); if ($arHandlerDataFull = $rsHandlerDataFull->Fetch()) { $bInstalled = $arHandlerDataFull["INSTALLED"] == "Y"; $DB->StartTransaction(); $arQueryFields = array(); if ($SITE_ID) $arQueryFields["LID"] = "'".($SITE_ID == "ALL" ? "" : $DB->ForSql($SITE_ID))."'"; else $arQueryFields["LID"] = "''"; if (is_set($arData, "ACTIVE")) $arQueryFields["ACTIVE"] = $arData["ACTIVE"] == 'Y' ? "'Y'" : "'N'"; elseif ($bInstalled) $arQueryFields["ACTIVE"] = "'N'"; if (!$bInstalled) { $arQueryFields["HID"] = "'".$DB->ForSql($SID)."'"; } if (is_set($arData, "SORT")) $arQueryFields["SORT"] = "'".intval($arData["SORT"])."'"; elseif (!$bInstalled) $arQueryFields["SORT"] = '100'; if (is_set($arData, "NAME")) $arQueryFields["NAME"] = "'".$DB->ForSql($arData["NAME"])."'"; elseif (!$bInstalled) $arQueryFields["NAME"] = "'".$DB->ForSql($arHandlerDataFull['NAME'])."'"; if (is_set($arData, "DESCRIPTION")) $arQueryFields["DESCRIPTION"] = "'".$DB->ForSql($arData["DESCRIPTION"])."'"; elseif (!$bInstalled) $arQueryFields["DESCRIPTION"] = "'".$DB->ForSql($arHandlerDataFull['DESCRIPTION'])."'"; if (is_set($arData, "HANDLER")) $arQueryFields["HANDLER"] = "'".$DB->ForSql($arData["HANDLER"])."'"; elseif (!$bInstalled) $arQueryFields["HANDLER"] = "'".$DB->ForSql($arHandlerDataFull['HANDLER'])."'"; if (is_set($arData, "TAX_RATE")) $arQueryFields["TAX_RATE"] = "'".doubleval($arData["TAX_RATE"])."'"; elseif (!$bInstalled) $arQueryFields["TAX_RATE"] = 0; if (is_set($arData, "BASE_CURRENCY")) $arQueryFields["BASE_CURRENCY"] = "'".$DB->ForSql($arData["BASE_CURRENCY"])."'"; elseif (!$bInstalled) $arQueryFields["BASE_CURRENCY"] = ''; //save logotip if (!$bInstalled && (!isset($arData["LOGOTIP"]) || count($arData["LOGOTIP"]) <= 1)) { $logo = ""; if (is_set($arData, "HANDLER")) $arPath = pathinfo($arData["HANDLER"]); elseif (!$bInstalled) $arPath = pathinfo($arHandlerDataFull["HANDLER"]); if (!strpos($arPath["dirname"], ":")) $arPath["dirname"] = $_SERVER["DOCUMENT_ROOT"].$arPath["dirname"]; if (file_exists($arPath["dirname"]."/".$SID."_logo.png")) $logo = $arPath["dirname"]."/".$SID."_logo.png"; elseif (file_exists($arPath["dirname"]."/".$SID."_logo.jpg")) $logo = $arPath["dirname"]."/".$SID."_logo.jpg"; elseif (file_exists($arPath["dirname"]."/".$SID."_logo.gif")) $logo = $arPath["dirname"]."/".$SID."_logo.gif"; if(strlen($logo) > 0) { $arData["LOGOTIP"] = CFile::MakeFileArray($logo); $arData["LOGOTIP"]["MODULE_ID"] = "sale"; } } $bDelLogotip = false; if ($arData["LOGOTIP"]["del"] == "Y") $bDelLogotip = true; CFile::SaveForDB($arData, "LOGOTIP", "sale/delivery/logotip"); if (is_set($arData, 'LOGOTIP') && intval($arData["LOGOTIP"]) > 0) $arQueryFields["LOGOTIP"] = $arData["LOGOTIP"]; if ($bDelLogotip) $arQueryFields["LOGOTIP"] = 'NULL'; if (is_set($arData, "CONFIG")) { if (is_callable($arHandlerDataFull["DBSETSETTINGS"])) { if (!$strSettings = call_user_func($arHandlerDataFull["DBSETSETTINGS"], $arData["CONFIG"])) { $DB->Rollback(); return false; } } else { $strSettings = serialize($arData["CONFIG"]); } $arQueryFields["SETTINGS"] = "'".$DB->ForSql($strSettings)."'"; } /* if (is_set($arData, "PROFILE_USE_DEFAULT") && $arData["PROFILE_USE_DEFAULT"] == 'Y') $arQueryFields["PROFILES"] = "''"; else {*/ if (is_array($arData["PROFILES"]) && count($arData["PROFILES"]) > 0) $arQueryFields["PROFILES"] = "'".$DB->ForSql(serialize($arData["PROFILES"]))."'"; elseif (!$bInstalled) $arQueryFields["PROFILES"] = "''"; /*}*/ if ($bInstalled) { if ($rsHandlerDataFull->SelectedRowsCount() > 1 && $SITE_ID === false) { $DB->Query("DELETE FROM b_sale_delivery_handler WHERE HID='".$DB->ForSql($SID)."' AND LID<>'".$DB->ForSql($arHandlerDataFull['LID'])."'"); $SITE_ID = $arHandlerDataFull['LID']; } elseif ($arHandlerDataFull["LID"] == '' && $SITE_ID !== false) { CSaleDeliveryHandler::__spreadHandlerData($SID); } $strWhere = "WHERE HID='".$DB->ForSql($SID)."'"; if ($SITE_ID) $strWhere .= " AND LID='".$DB->ForSql($SITE_ID)."'"; $DB->Update("b_sale_delivery_handler", $arQueryFields, $strWhere); } else { $DB->Insert("b_sale_delivery_handler", $arQueryFields); } $DB->Commit(); } else { $APPLICATION->ThrowException('SALE_DH_ERROR_WRONG_HANDLER_FILE'); return false; } }