Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- /**
- * Подключаем константы и настройки
- */
- require_once 'config.php';
- use Bitrix\Iblock\InheritedProperty;
- require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
- /**
- * Подключаем автозагрузчик по стандарту PSR-0
- */
- require_once $_SERVER['DOCUMENT_ROOT'] . '/local/lib/Studiobit/CAutoloader.php';
- use Studiobit\CAutoloader as SBAutoloader;
- $autoloader = new SBAutoloader();
- // ГЛОБАЛЬНЫЕ КОНСТАНТЫ
- global $globalBonusBuyPercent;
- global $globalBonusRegister;
- global $globalMaximalBonusOnBuy;
- /**
- * Массив идентификаторов онлайн оплат
- */
- global $online_paysystem;
- $online_paysystem = array('2', '4', '10', '13', '14', '21', '24');
- global $arMaximumBonusOnBuy;
- global $arStatusGroup;
- $arMaximumBonusOnBuy = [
- 'vanilla' => 0.03,
- 'orange' => 0.04,
- 'bordo' => 0.06,
- '0' => 0.02
- ];
- $arStatusGroup = [
- 'vanilla' => 9,
- 'orange' => 10,
- 'bordo' => 11
- ];
- $globalBonusBuyPercent = 0.03; // Бонус при покупке. Какой процент от стоимости товара зачисляется при покупке товара. Измеряется в десятичных числах. 1 = 100%, 0.02 = 2%.
- $globalBonusRegister = 500; // Бонус при регистрации.
- use Fact;
- use Bitrix\Highloadblock as HL;
- use Bitrix\Main;
- use Bitrix\Main\Entity;
- CModule::IncludeModule('iblock');
- CModule::IncludeModule('highloadblock');
- CModule::IncludeModule("sale");
- AddEventHandler("iblock", "OnAfterIBlockSectionAdd", array("flitTranslit", "OnBeforeIBlockSectionAddHandler"));
- AddEventHandler("sale", "OnSaleStatusOrder", array("bonus", "OnSaleStatusOrder_mail"));
- AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array("up", "OnAfterIBlockElementUpdateHandler"));
- AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("up", "OnAfterIBlockElementUpdateHandler"));
- AddEventHandler("main", "OnAfterUserAdd", array("regmail", "OnAfterUserAddHandler"));
- AddEventHandler("search", "BeforeIndex", array("MyClass2", "BeforeIndexHandler"));
- AddEventHandler("sale", "OnOrderPaySendEmail", array("Order", "OnAfterOrderPaid"));
- AddEventHandler("sale", "OnOrderNewSendEmail", array("Order", "OnAfterOrderPaid"));
- AddEventHandler("main", "OnAfterUserAdd", array("MyClass", "OnAfterUserAddHandler"));
- AddEventHandler("sale", "OnBeforeOrderAdd", "SetMultiShipDeliveryCost");
- /*studiofact*/
- AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("studiofact", "OnAfterIBlockElementAddHandler"));
- AddEventHandler("catalog", "OnPriceAdd", array("studiofact", "OnAfterIBlockElementAction2"));
- AddEventHandler("catalog", "OnPriceUpdate", array("studiofact", "OnAfterIBlockElementAction2"));
- AddEventHandler("sale", "OnSalePayOrder", array("studiofact", "OnOrderAddHandler"));
- AddEventHandler("sale", "OnSaleBeforeCancelOrder", array("studiofact", "BackBonus"));
- AddEventHandler("sale", "OnBeforeOrderAdd", array("studiofact", "ChangeFreeDelivery"));
- AddEventHandler("sale", "OnOrderAdd", array("studiofact", "RemoveUserFromGroup2000"));
- AddEventHandler("sale", "OnSaleCalculateOrder", array("studiofact", "OnOrderUpdateBonuses"));
- AddEventHandler("sale", "OnOrderUpdate", array("studiofact", "updateSumPaidAfterUpdate"));
- AddEventHandler("sale", "OnBeforeBasketUpdate", array("studiofact", "ddOnBeforeBasketUpdate"));
- AddEventHandler("main", "OnBeforeUserAdd", array("studiofact", "OnBeforeUserAddHandler"));
- AddEventHandler("iblock", "OnBeforeIBlockElementAdd", array("studiofact", "OnBeforeIBlockElementAdd"));
- AddEventHandler('main', 'OnEpilog', 'onEpilogHandler');
- AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate", array('Fact\Update', "OnBeforeIBlockSectionUpdateHandler"));
- AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("Arg", "OnAfterIBlockElementAddHandlerOtz"));
- AddEventHandler('main', 'OnBuildGlobalMenu', 'StudiofactMailOnBuildGlobalMenu');
- AddEventHandler("iblock", "OnAfterIBlockSectionAdd", array("OnAfterIBlockSectionAdd", "OnAfterIBlockSectionAddHandler"));
- AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("OnAfterIBlockElementAdd", "OnAfterIBlockElementAddHandler"));
- AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
- AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("OnBeforeIBlockElement", "OnBeforeIBlockElementUpdateHandler"));
- AddEventHandler("sale", "OnSalePayOrder", array("SaleHandler", "payOrder"));
- AddEventHandler("sale", "OnSalePayOrder", "OnSaleStatusOrder_mail1");
- AddEventHandler("sale", "OnSaleComponentOrderOneStepFinal", "UCHOrderADDHandler");
- AddEventHandler('main', 'OnAdminContextMenuShow', 'OrderDetailAdminContextMenuShow');
- AddEventHandler('sale', 'OnBeforeBasketAdd', 'OnBeforeBasketAddHandler');
- AddEventHandler("main", "OnBeforeUserLogin", array("AuthorizeHandler", "OnBeforeUserLoginHandler"));
- AddEventHandler('main', 'OnEventLogGetAuditTypes', 'OnEventLogGetAuditTypesHandler');
- $eventManager = Main\EventManager::getInstance();
- $eventManager->addEventHandler("", "FilterProfileOnAfterUpdate", "FilterProfileOnAfterUpdate");
- $eventManager->addEventHandler("sale", "OnSaleOrderSaved", "admitRefer");
- $eventManager->addEventHandler("sale", "OnSaleOrderSaved", "orderBonusPrepay");
- $eventManager->addEventHandler("sale", "OnSaleComponentOrderShowAjaxAnswer", "OnSaleComponentOrderShowAjaxAnswerHandler");
- $eventManager->addEventHandler("sale", "OnSaleComponentOrderJsData", "OnSaleComponentOrderJsDataHandler");
- /**
- * Подключаем обработчики логирования
- */
- require_once 'logs.php';
- function update_purchases()
- {
- CModule::IncludeModule("iblock");
- CModule::IncludeModule("sale");
- CModule::IncludeModule("catalog");
- global $DB;
- $arFilter = array(
- "!ORDER_ID" => false,
- ">=DATE_INSERT" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), time() - 7776000)
- );
- $products = array();
- $rsSales = CSaleBasket::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
- while ($arSales = $rsSales->Fetch()) {
- $mxResult = CCatalogSku::GetProductInfo($arSales['PRODUCT_ID']);
- if (is_array($mxResult)) {
- $id = $mxResult["ID"];
- $ib_id = CATALOG_ID;
- } else {
- $id = $arSales['PRODUCT_ID'];
- $ib_id = SKU_IBLOCK_ID;
- }
- if (isset($products[$id])) {
- $products[$id]["CNT"]++;
- } else {
- $products[$id] = array(
- "CNT" => 1,
- "IBLOCK" => $ib_id,
- "ID" => $id,
- );
- }
- }
- $arSelect = array("ID");
- $arFilter = array("IBLOCK_ID" => CATALOG_ID);
- $res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 150000), $arSelect);
- while ($arFields = $res->Fetch()) {
- $props = array();
- if (isset($products[$arFields["ID"]])) {
- $iblock = $products[$arFields["ID"]]["IBLOCK"];
- $props['PURCHASE_COUNT'] = $products[$arFields["ID"]]["CNT"];
- } else {
- $iblock = CATALOG_ID;
- $props['PURCHASE_COUNT'] = 0;
- }
- CIBlockElement::SetPropertyValuesEx($arFields["ID"], $iblock, $props);
- }
- return "update_purchases();";
- }
- function update_brand_purchases()
- {
- CModule::IncludeModule("iblock");
- CModule::IncludeModule("sale");
- CModule::IncludeModule("catalog");
- global $DB;
- $arFilter = array(
- "!ORDER_ID" => false,
- ">=DATE_INSERT" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), time() - 7776000)
- );
- $products = array();
- $rsSales = CSaleBasket::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
- $ids = array();
- while ($arSales = $rsSales->Fetch()) {
- $mxResult = CCatalogSku::GetProductInfo($arSales['PRODUCT_ID']);
- if (is_array($mxResult)) {
- $id = $mxResult["ID"];
- $ib_id = CATALOG_ID;
- } else {
- $id = (int)$arSales['PRODUCT_ID'];
- $ib_id = SKU_IBLOCK_ID;
- }
- $ids[] = $id;
- if (isset($products[$id])) {
- $products[$id]["CNT"]++;
- } else {
- $products[$id] = array(
- "CNT" => 1,
- "IBLOCK" => $ib_id,
- "ID" => $id,
- );
- }
- }
- $arParams = array("replace_space" => "-", "replace_other" => "");
- $arr = array();
- $arSelect = array("ID", "PROPERTY_ATT_BRAND_LIST");
- $arFilter = array("IBLOCK_ID" => CATALOG_ID, "ID" => $ids);
- $res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 150000), $arSelect);
- while ($arFields = $res->Fetch()) {
- $arr[$arFields["PROPERTY_ATT_BRAND_LIST_VALUE"]] += $products[$arFields["ID"]]["CNT"];
- }
- $arFilter = array("IBLOCK_ID" => CATALOG_ID, "SECTION_ID" => BRANDS_SECTION);
- $arSelect = array("ID", "CODE", "NAME");
- $res = CIBlockSection::GetList(array(), $arFilter, false, $arSelect, array("nPageSize" => 150000));
- while ($ob = $res->GetNext()) {
- if (isset($arr[$ob["NAME"]])) {
- $arFields = array("UF_BRAND_PURCHASES" => $arr[$ob["NAME"]]);
- } else {
- $arFields = array("UF_BRAND_PURCHASES" => 0);
- }
- $bs = new CIBlockSection;
- var_dump($bs->Update($ob["ID"], $arFields));
- }
- return "update_brand_purchases();";
- }
- class Arg
- {
- function OnAfterIBlockElementAddHandlerOtz(&$arFields)
- {
- $arSelect = array("ID", "IBLOCK_ID", "NAME", "DATE_CREATE", "PROPERTY_DATE");
- $arFilter = array("IBLOCK_ID" => 7, "ID" => $arFields['ID']);
- $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
- while ($arFieldss = $res->Fetch()) {
- CIBlockElement::SetPropertyValueCode($arFieldss['ID'], "DATE", date($arFieldss['DATE_CREATE']));
- }
- }
- }
- function ChangeGracyStatus()
- {
- /*global $USER;
- global $DB;
- CModule::IncludeModule("sale");
- CModule::IncludeModule("catalog");
- $phpdate = date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n") - 3, date("d"), date("Y")));
- $arFilter = Array("PAYED" => "Y",
- ">=DATE_PAYED" => $phpdate
- );
- $arOrder = array();
- $arOrderStatus = array();
- $ids = array();
- $idsStatus = array();
- $sum = array();
- $db_sales = CSaleOrder::GetList(array("DATE_PAYED" => "ASC"), $arFilter, array('USER_ID', 'SUM' => 'PRICE',"DATE_PAYED"));
- while ($ar_sales = $db_sales->Fetch())
- {
- $sum[$ar_sales["USER_ID"]] += $ar_sales["PRICE"];
- $arOrder[$ar_sales["USER_ID"]] = array("USER_ID" => $ar_sales["USER_ID"],
- "PRICE" => $sum[$ar_sales["USER_ID"]],
- "CNT" => $ar_sales["CNT"],
- "DATE_PAYED" => $ar_sales["DATE_PAYED"],
- );
- $ids[] = $ar_sales["USER_ID"];
- }
- $arFilter = Array("ACTIVE" => "Y",
- );
- $db_user = CUser::GetList($by = 'NAME', $order = 'ASC', $arFilter, array("SELECT" => array("UF_*")));
- while ($ar_user = $db_user->Fetch())
- {
- if (in_array($ar_user["ID"], $ids))
- {
- $arOrder[$ar_user["ID"]]["UF_GRACY_STATUS"] = $ar_user["UF_GRACY_STATUS"];
- $arOrder[$ar_user["ID"]]["NAME"] = $ar_user["NAME"];
- $arOrder[$ar_user["ID"]]["EMAIL"] = $ar_user["EMAIL"];
- $arOrder[$ar_user["ID"]]["UF_FREESHIPPING"] = $ar_user["UF_FREESHIPPING"];
- $arOrder[$ar_user["ID"]]["UF_STATUS_UPDATE"] = $ar_user["UF_STATUS_UPDATE"];
- $arOrder[$ar_user["ID"]]["DATE_REGISTER"] = $ar_user["DATE_REGISTER"];
- $arOrderStatus[$ar_user["ID"]] = $arOrder[$ar_user["ID"]];
- $idsStatus[] = $ar_user["ID"];
- }
- }
- foreach ($arOrderStatus as $ID => $arOrd)
- {
- if ($arOrd["UF_STATUS_UPDATE"] != "")
- {
- if (MakeTimeStamp($arOrd["UF_STATUS_UPDATE"]) < MakeTimeStamp(date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n") - 3, date("d"), date("Y")))))
- {
- $arGroups = CUser::GetUserGroup($ID);
- $new_status = "";
- $free_shipping = 0;
- if ($arOrd["PRICE"] >= 50000)
- {
- $new_status = "bordo";
- $free_shipping = 4;
- $coupon = "";
- if(($key = array_search(9,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- if(($key = array_search(10,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- $arGroups[] = 11;
- do
- {
- $allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
- $string1 = '';
- $string2 = '';
- for ($i = 0; $i < 5; $i++)
- {
- $string1 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- }
- for ($i = 0; $i < 7; $i++)
- $string2 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- $newCoupon = "CP-" . $string1 . "-" . $string2;
- $dbCouponCheck = CCatalogDiscountCoupon::GetList(array(), array("COUPON" => $oCoupon), false, false, array());
- } while (intval($dbCouponCheck->SelectedRowsCount()) > 0);
- $cu = array("DISCOUNT_ID" => 4, "ACTIVE" => "Y", "ONE_TIME" => "Y", "DATE_APPLY" => "");
- $cu['COUPON'] = $newCoupon;
- $newCouponId = CCatalogDiscountCoupon::Add($cu);
- $coupon = "<br /><br />Вам доступна скидка. Введите купон при следующем оформлении заказа " . $newCoupon;
- }
- else if ($arOrd["PRICE"] > 30000)
- {
- $new_status = "orange";
- $free_shipping = 2;
- if(($key = array_search(9,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- if(($key = array_search(11,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- $arGroups[] = 10;
- $coupon = "";
- do
- {
- $allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
- $string1 = '';
- $string2 = '';
- for ($i = 0; $i < 5; $i++)
- {
- $string1 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- }
- for ($i = 0; $i < 7; $i++)
- $string2 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- $newCoupon = "CP-" . $string1 . "-" . $string2;
- $dbCouponCheck = CCatalogDiscountCoupon::GetList(array(), array("COUPON" => $oCoupon), false, false, array());
- } while (intval($dbCouponCheck->SelectedRowsCount()) > 0);
- $cu = array("DISCOUNT_ID" => 5, "ACTIVE" => "Y", "ONE_TIME" => "Y", "DATE_APPLY" => "");
- $cu['COUPON'] = $newCoupon;
- $newCouponId = CCatalogDiscountCoupon::Add($cu);
- $coupon = "<br /><br />Вам доступна скидка. Введите купон при следующем оформлении заказа " . $newCoupon;
- }
- else if ($arOrd["PRICE"] > 15000)
- {
- $new_status = "vanilla";
- if(($key = array_search(11,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- if(($key = array_search(10,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- $arGroups[] = 9;
- } else {
- $new_status = "";
- if(($key = array_search(9,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- if(($key = array_search(10,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- if(($key = array_search(11,$arGroups)) !== FALSE){
- unset($arGroups[$key]);
- }
- }
- CUser::SetUserGroup($ID, $arGroups);
- if ($new_status != "")
- {
- $user = new CUser;
- $fields = Array("UF_STATUS_UPDATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n"), date("d"), date("Y"))),
- "UF_GRACY_STATUS" => $new_status,
- //"UF_FREESHIPPING" => $arOrd["UF_FREESHIPPING"]+$free_shipping,
- );
- $user->Update($ID, $fields);
- $mail_fiedl = Array("EMAIL" => $arOrd["EMAIL"],
- "NAME" => $arOrd["NAME"],
- "STATUS" => strtoupper($new_status),
- "COUPON" => $coupon,
- );
- //ob_start();
- //var_dump($arOrderStatus);
- //var_dump($cu);
- //var_dump($mail_fiedl);
- //$String = ob_get_contents();
- //ob_end_clean();
- //AddMessage2Log($String, "my");
- CEvent::Send('CHANGE_GRACY_STATUS', s1, $mail_fiedl, "N", 57);
- }
- }
- }
- else
- {
- $user = new CUser;
- $fields = Array("UF_STATUS_UPDATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n"), date("d"), date("Y"))),
- );
- $user->Update($ID, $fields);
- }
- }
- */
- return "ChangeGracyStatus();";
- }
- class MyClass2
- {
- // создаем обработчик события "BeforeIndex"
- function BeforeIndexHandler($arFields)
- {
- // элемент инфоблока 180 (не раздел)
- if ($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 3 && substr($arFields["ITEM_ID"], 0, 1) != "S") {
- $arFields["PARAMS"]["iblock_section"] = array();
- //Получаем разделы привязки элемента (их может быть несколько)
- if (!CModule::IncludeModule("iblock")) {
- return;
- }
- $res = CIBlockElement::GetList(array(), array("ID" => $arFields["ITEM_ID"]), false, false, array("IBLOCK_SECTION_ID"));
- if ($ar_res = $res->GetNext()) {
- $rsPath = GetIBlockSectionPath(CATALOG_ID, $ar_res["IBLOCK_SECTION_ID"]);
- while ($arPath = $rsPath->GetNext()) {
- if ($arPath['DEPTH_LEVEL'] == 1) {
- $arFields["PARAMS"]["iblock_section"][] = $arPath["ID"];
- }
- }
- }
- return $arFields;
- }
- if ($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 3 && substr($arFields["ITEM_ID"], 0, 1) == "S") {
- $arFields["PARAMS"]["iblock_section"] = array();
- //Получаем разделы привязки элемента (их может быть несколько)
- if (!CModule::IncludeModule("iblock")) {
- return;
- }
- $rsPath = GetIBlockSectionPath(CATALOG_ID, substr($arFields["ITEM_ID"], 1));
- while ($arPath = $rsPath->GetNext()) {
- if ($arPath['DEPTH_LEVEL'] == 1) {
- $arFields["PARAMS"]["iblock_section"][] = $arPath["ID"];
- }
- }
- return $arFields;
- }
- }
- }
- class regmail
- {
- function OnAfterUserAddHandler(&$arFields)
- {
- if (($arFields["ID"] > 0) && $arFields["NOT_REG"] != "Y") {
- $arSend = array(
- 'LOGIN' => $arFields['EMAIL'],
- 'EMAIL' => $arFields['EMAIL'],
- 'PASSWORD' => $arFields['CONFIRM_PASSWORD']
- );
- CEvent::Send('NEW_USER_CONFIRM', SITE_ID, $arSend);
- }
- }
- }
- class up
- {
- function OnAfterIBlockElementUpdateHandler(&$arFields)
- {
- global $upd;
- if (!isset($upd) || $upd == false) {//для избежания рекурсии при апдейте символьного кода
- if ($arFields["IBLOCK_ID"] == 7) {
- if ($arFields['ACTIVE'] == 'Y') {
- if (!CModule::IncludeModule("iblock")) {
- return;
- }
- BXClearCache(true, "/s1/bitrix/catalog.element/");
- }
- } elseif ($arFields['IBLOCK_ID'] == CATALOG_ID) {
- global $current_brand;
- $current_brand = false;
- if (!empty($arFields["IBLOCK_SECTION"])) {
- foreach ($arFields["IBLOCK_SECTION"] as $section) {
- GetFirstLevelSection($section);
- }
- } else {
- $db_old_groups = CIBlockElement::GetElementGroups($arFields["ID"], true);
- while ($ar_group = $db_old_groups->Fetch()) {
- GetFirstLevelSection($ar_group["ID"]);
- }
- }
- if ($current_brand) {
- $arParams = array("replace_space" => "_", "replace_other" => "");
- $trans = Cutil::translit($current_brand["BRAND_NAME"], "ru", $arParams);
- $property_enums = CIBlockPropertyEnum::GetList(
- array("SORT" => "ASC"),
- array("IBLOCK_ID" => CATALOG_ID, "VALUE" => $current_brand["BRAND_NAME"], "CODE" => "ATT_BRAND_LIST")
- );
- if ($enum_fields = $property_enums->GetNext()) {
- $current_brand["BRAND_LIST_ID"] = $enum_fields["ID"];
- } else {
- $ibpenum = new CIBlockPropertyEnum;
- if ($PropID = $ibpenum->Add(array('PROPERTY_ID' => NEW_BRAND_PROP_ID, 'SORT' => '50000', 'XML_ID' => $trans, 'VALUE' => $current_brand["BRAND_NAME"]))) {
- $current_brand["BRAND_LIST_ID"] = $PropID;
- }
- }
- $arFilter = array('IBLOCK_ID' => BRANDS_IBLOCK_ID, 'NAME' => $current_brand["BRAND_NAME"]);
- $db_list = CIBlockSection::GetList(array("SORT" => "ASC"), $arFilter, true);
- if ($ar_result = $db_list->GetNext()) {
- $current_brand["BRAND_IBLOCK_SECTION"] = $ar_result['ID'];
- } else {
- $bs = new CIBlockSection;
- $arF = array(
- "NAME" => $current_brand["BRAND_NAME"],
- "CODE" => $current_brand["BRAND_LIST_ID"],
- 'IBLOCK_ID' => BRANDS_IBLOCK_ID,
- "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"] . "/bitrix/templates/eshop_gracy/images/logo.png"),
- "PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"] . "/bitrix/templates/eshop_gracy/images/logo.png"),
- "DESCRIPTION" => $current_brand["BRAND_NAME"],
- "IBLOCK_SECTION_ID" => 0,
- );
- $ID = $bs->Add($arF);
- $current_brand["BRAND_IBLOCK_SECTION"] = $ID;
- }
- $db_props = CIBlockElement::GetProperty(CATALOG_ID, $arFields["ID"], array("sort" => "asc"), array("CODE" => "ARTNUMBER"));
- if ($ar_props = $db_props->Fetch()) {
- $upd = true;
- $arcustom_code = CIBlockElement::GetProperty(CATALOG_ID, $arFields["ID"], array("sort" => "asc"), array("CODE" => "CUSTOM_SIMCODE"));
- if ($custom_code = $arcustom_code->Fetch()) {
- if ($custom_code["VALUE"] == 12502) {
- } else {
- $arParams = array("replace_space" => "-", "replace_other" => "-");
- $trans = Cutil::translit($current_brand["BRAND_NAME"], "ru", $arParams);
- $filds = array("CODE" => $trans . "-" . $ar_props["VALUE"]);
- $set_codes = new CIBlockElement;
- $res = $set_codes->Update($arFields["ID"], $filds);
- file_put_contents($_SERVER["DOCUMENT_ROOT"] . '/upload/log.txt', print_r($set_codes->LAST_ERROR, true), FILE_APPEND);
- file_put_contents($_SERVER["DOCUMENT_ROOT"] . '/upload/log.txt', $res, FILE_APPEND);
- file_put_contents($_SERVER["DOCUMENT_ROOT"] . '/upload/log.txt', $filds["CODE"], FILE_APPEND);
- }
- }
- }
- CIBlockElement::SetPropertyValuesEx($arFields["ID"], false, array("ATT_BRAND_LIST" => $current_brand["BRAND_LIST_ID"]));
- CIBlockElement::SetPropertyValuesEx($arFields["ID"], false, array("ATT_BRAND" => $current_brand["BRAND_NAME"]));
- CIBlockElement::SetPropertyValuesEx($arFields["ID"], false, array("MANUFACTURER" => $current_brand["BRAND_IBLOCK_SECTION"]));
- }
- } elseif ($arFields['IBLOCK_ID'] == SKU_IBLOCK_ID) {
- if (isset($arFields["PROPERTY_VALUES"][52]) && !empty($arFields["PROPERTY_VALUES"][52])) {
- foreach ($arFields["PROPERTY_VALUES"][52] as $item) {
- if ($item["VALUE"] != "") {
- $arSelect = array("ID", "NAME", "IBLOCK_ID", "PROPERTY_ATT_AVAILABLE");
- $arFilter = array("IBLOCK_ID" => SKU_IBLOCK_ID, "PROPERTY_PRODUCT" => $item["VALUE"], "ACTIVE" => "Y");
- $res = CIBlockElement::GetList(array(), $arFilter, false, array(), $arSelect);
- $avail = false;
- while ($arF = $res->Fetch()) {
- if ($arF["PROPERTY_ATT_AVAILABLE_VALUE"] != "N") {
- $avail = true;
- }
- }
- $props = array();
- if ($avail) {
- $props['ATT_AVAILABLE'] = 1;
- CIBlockElement::SetPropertyValuesEx($item["VALUE"], CATALOG_ID, $props);
- } else {
- $props['ATT_AVAILABLE'] = 0;
- CIBlockElement::SetPropertyValuesEx($item["VALUE"], CATALOG_ID, $props);
- }
- }
- }
- }
- }
- } else {
- $upd = false;
- }
- }
- }
- function clearSmartFilterCache()
- {
- BXClearCache(true, "/filter_combo_items/");
- BXClearCache(true, "/s1/citfact/catalog.smart.filter/");
- return 'clearSmartFilterCache();';
- }
- class bonus
- {
- function OnSaleStatusOrder_mail($ID, $val)
- {
- global $DB, $globalBonusBuyPercent;
- $res = CSaleUserTransact::GetList(array("TRANSACT_DATE" => "DESC"), array("ORDER_ID" => $ID));
- while ($arFields = $res->Fetch()) {
- $arTrans[] = $arFields;
- }
- if ($val == 'F' or $val == 'P' and $arTrans[0]["NOTES"] != 'bonusplus') {
- if (($arOrder = CSaleOrder::GetByID($ID))) {
- if (CModule::IncludeModule('sale')) {
- $bon = getBonus($arOrder['PRICE'], $arOrder['PRICE_DELIVERY'], $globalBonusBuyPercent);
- CSaleUserAccount::UpdateAccount($arOrder['USER_ID'], $bon, 'RUB', 'Бонус за заказ #' . $arOrder['ID'], '', 'bonusplus');
- }
- }
- } elseif ($val == 'Z' and $arTrans[0]["NOTES"] == 'bonusplus') {
- if ($arOrder = CSaleOrder::GetByID($ID)) {
- if (CModule::IncludeModule('sale')) {
- $bon = getBonus($arOrder['PRICE'], $arOrder['PRICE_DELIVERY'], $globalBonusBuyPercent);
- CSaleUserAccount::UpdateAccount($arOrder['USER_ID'], '-' . $bon, 'RUB', 'Списание бонусных бонусов за отмену заказа #' . $arOrder['ID'], '', 'bonusminus');
- }
- }
- }
- if ($val == 'Z') {
- $arFields = "Y";
- $factObject = new studiofact();
- $factObject->BackBonus($ID, $arFields);
- }
- }
- }
- class flitTranslit
- {
- function OnBeforeIBlockSectionAddHandler(&$arFields)
- {
- if ($arFields["IBLOCK_ID"] == CATALOG_ID) {
- if ($arFields["NAME"] != 'Бренды') {
- if ($arFields["ID"] != 107) {
- if ($arFields["IBLOCK_SECTION_ID"] != BRANDS_SECTION) {
- if ($arFields["ID"]) {
- $arFields["CODE"] = 'c' . $arFields["ID"];
- if (!CModule::IncludeModule("iblock")) {
- return;
- }
- $bs = new CIBlockSection;
- $arFields3 = array("CODE" => 'c' . $arFields["ID"]);
- $bs->Update($arFields["ID"], $arFields3);
- }
- }
- }
- }
- }
- }
- }
- class MyClass
- {
- // создаем обработчик события "OnAfterUserAdd"
- function OnAfterUserAddHandler(&$arFields)
- {
- if (CModule::IncludeModule('sale')) {
- CSaleUserAccount::UpdateAccount($arFields['ID'], "500", 'RUB', 'Бонус за регистрацию', '', 'bonusplus');
- }
- }
- }
- function payBonusOrderUpdate($arOrder)
- {
- AddMessage2Log(print_r($arOrder, 1));
- }
- function onEpilogHandler()
- {
- global $APPLICATION;
- $path = getenv('DOCUMENT_ROOT');
- if ((defined('ERROR_404') && ERROR_404 == 'Y' && !isset($_GET['params_brand_stop_404']))
- || (defined('ERROR_404_BRAND') && ERROR_404_BRAND == 'Y')) {
- $APPLICATION->RestartBuffer();
- require sprintf('%s/%s/header.php', $path, SITE_TEMPLATE_PATH);
- require $path . '/404.php';
- require sprintf('%s/%s/footer.php', $path, SITE_TEMPLATE_PATH);
- }
- }
- /*studiofact*/
- class studiofact
- {
- private static $orderLock = false;
- function OnBeforeIBlockElementAdd(&$arFields)
- {
- /*if (CModule::IncludeModule("iblock"))
- {
- file_put_contents($_SERVER["DOCUMENT_ROOT"] . '/upload/log.txt', print_r($arFields, true), FILE_APPEND);
- $arFields["PROPERTY_VALUES"][1]; //artnumber
- $res = CIBlockSection::GetByID($arFields["PROPERTY_VALUES"][2][0]["VALUE"]);
- if ($ar_res = $res->GetNext())
- {
- $arBrandName = $ar_res["NAME"];
- }
- $el = new CIBlockElement;
- $arParams = array("replace_space" => "-", "replace_other" => "-");
- $vowel = array("'", ".");
- $arBrandName = str_replace($vowel, "", $arBrandName);
- $arBrandName = Cutil::translit(trim($arBrandName), "ru", $arParams);
- $arFields["CODE"] = $arBrandName . "-" . $arFields["PROPERTY_VALUES"][1]["n0"]["VALUE"];
- foreach ($arFields["PROPERTY_VALUES"][130] as $key => &$value)
- {
- $value = $arFields['IBLOCK_SECTION'][0];
- }
- }*/
- }
- function OnBeforeUserAddHandler(&$arFields)
- {
- ob_start();
- var_dump($arFields);
- $String = ob_get_contents();
- ob_end_clean();
- AddMessage2Log($String, "my");
- }
- function ddOnBeforeBasketUpdate($iId, $aFields)
- {
- global $USER;
- if ($aFields["DISCOUNT_COUPON"] != "") {
- $cu = $aFields["DISCOUNT_COUPON"];
- $ob = CCatalogDiscountCoupon::GetList(array("COUPON", "asc"), array("COUPON" => $cu), false, false, array("*"));
- if ($res = $ob->GetNext()) {
- /*if ($res["DISCOUNT_ID"] == 4)
- {
- $arGroups = CUser::GetUserGroup($USER->GetID());
- $arGroups[] = 13;
- CUser::SetUserGroup($USER->GetID(), $arGroups);
- }*/
- if ($res["DISCOUNT_ID"] == 5) {
- $arGroups = CUser::GetUserGroup($USER->GetID());
- $arGroups[] = 14;
- CUser::SetUserGroup($USER->GetID(), $arGroups);
- }
- }
- }
- return true;
- }
- function RemoveUserFromGroup2000($ID, $arFields)
- {
- global $USER;
- $arGroups = CUser::GetUserGroup($USER->GetID());
- foreach ($arGroups as $key => $group) {
- /*if ($group == 13)
- {
- unset($arGroups[$key]);
- }*/
- if ($group == 14) {
- unset($arGroups[$key]);
- }
- }
- CUser::SetUserGroup($USER->GetID(), $arGroups);
- }
- function ChangeFreeDelivery($arFields)
- {
- if ($arFields["DELIVERY_ID"] == 18) {
- $arFilter = array("ID" => $arFields["USER_ID"]);
- $db_user = CUser::GetList($by = 'NAME', $order = 'ASC', $arFilter, array("SELECT" => array("UF_*")));
- while ($ar_user = $db_user->Fetch()) {
- $UF_PROP = $ar_user;
- }
- $countFreeShipping = $UF_PROP["UF_FREESHIPPING"];
- $user = new CUser;
- $fields = array("UF_FREESHIPPING" => $countFreeShipping - 1,
- );
- $user->Update($arFields["USER_ID"], $fields);
- }
- }
- function BackBonus($ID, $arFields)
- {
- global $globalMaximalBonusOnBuy;
- $arBeforeOrder = array();
- if (CModule::IncludeModule("sale")) {
- $arOrder = CSaleOrder::GetByID($ID);
- $BonusUser = new Fact\CUser($arOrder['USER_ID']);
- $globalBonusBuyPercent = $BonusUser->getRatio();
- if ($arOrder["DELIVERY_ID"] == 18 && $arFields == "Y") {
- $arFilter = array("ID" => $arOrder["USER_ID"]);
- $db_user = CUser::GetList($by = 'NAME', $order = 'ASC', $arFilter, array("SELECT" => array("UF_*")));
- while ($ar_user = $db_user->Fetch()) {
- $UF_PROP = $ar_user;
- }
- //AddMessage2Log('$arFields = ' . print_r($UF_PROP, true), 'OnSaleBeforeCancelOrder');
- $countFreeShipping = $UF_PROP["UF_FREESHIPPING"];
- //AddMessage2Log('$arFields = ' . print_r($countFreeShipping, true), 'OnSaleBeforeCancelOrder');
- $user = new CUser;
- $fields = array("UF_FREESHIPPING" => $countFreeShipping + 1);
- $user->Update($arOrder["USER_ID"], $fields);
- }
- if ($arOrder["PAYED"] == "Y" && $arFields == "Y") {
- //$UpdateMoney = round(($arOrder['PRICE'] - $arOrder['PRICE_DELIVERY']) * $globalMaximalBonusOnBuy);
- $BackPayBonus = round(($arOrder["PRICE"] - $arOrder['PRICE_DELIVERY']) * $globalBonusBuyPercent);
- //CSaleUserAccount::UpdateAccount($arOrder["USER_ID"], -$arOrder["PRICE"], $arOrder["CURRENCY"], 'Снимаем всю стоимость заказа', $ID, '-orderprice');
- $res = CSaleUserTransact::GetList(array("ID" => "ASC"), array('USER_ID' => $arOrder['USER_ID'], 'DESCRIPTION' => "Бонус за заказ #" . $ID), false, array('nTopCount' => 1));
- if ($bonusForOrder = $res->Fetch()) {
- CSaleUserAccount::UpdateAccount($arOrder["USER_ID"], -$bonusForOrder['AMOUNT'], $arOrder["CURRENCY"], 'Снятие бонусов за заказ', '', '-BackPayBonus#' . $arOrder['ID']);
- }
- // Bonus back.
- $res = CSaleUserTransact::GetList(array("ID" => "ASC"), array('ORDER_ID' => $arOrder['ID']), false, array('nTopCount' => 1));
- if ($firstTransaction = $res->Fetch()) {
- if (($firstTransaction['DEBIT'] == 'N') && ($firstTransaction['DESCRIPTION'] == 'ORDER_PAY')) {
- //$bonusBack = $firstTransaction['AMOUNT'];
- $firstTransaction['result'] = CSaleUserAccount::UpdateAccount($arOrder["USER_ID"], $firstTransaction['AMOUNT'], $firstTransaction["CURRENCY"], 'Возврат бонусов за заказ', '', 'bonusback#' . $firstTransaction['ID']);
- AddMessage2Log(print_r($firstTransaction, 1));
- }
- }
- }
- }
- }
- function OnOrderAddHandler($ID, $arFields)
- {
- $ids = array();
- $idsQuant = array();
- CModule::IncludeModule("sale");
- CModule::IncludeModule("iblock");
- if ($arFields != false) {
- $dbOrder = CSaleOrder::GetList(array('ID' => 'DESC'), array('ID' => $ID), false, false, array("USER_ID"));
- if ($arOrder = $dbOrder->Fetch()) {
- $USER_ID = $arOrder["USER_ID"];
- }
- $dbBasketItems = CSaleBasket::GetList(
- array("NAME" => "ASC", "ID" => "ASC"),
- array("USER_ID" => $USER_ID,
- "LID" => "s1",
- "ORDER_ID" => $ID
- ),
- false,
- false,
- array("ID",
- "CALLBACK_FUNC",
- "MODULE",
- "PRODUCT_ID",
- "QUANTITY",
- "PRODUCT_PROVIDER_CLASS"
- )
- );
- while ($arItems = $dbBasketItems->Fetch()) {
- $arFilter = array("ID" => $arItems["PRODUCT_ID"], "IBLOCK_ID" => SKU_IBLOCK_ID);
- $arSelect = array("ID", "NAME", "PROPERTY_PRODUCT");
- $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
- if ($arField = $res->Fetch()) {
- $ids[] = $arField["PROPERTY_PRODUCT_VALUE"];
- $idsQuant[$arField["PROPERTY_PRODUCT_VALUE"]]["QUANT"] = $arItems["QUANTITY"];
- } else {
- $ids[] = $arItems["PRODUCT_ID"];
- $idsQuant[$arField["PROPERTY_PRODUCT_VALUE"]]["QUANT"] = $arItems["QUANTITY"];
- }
- }
- $arFilter = array("ID" => $ids, "IBLOCK_ID" => CATALOG_ID);
- $arSelect = array("PROPERTY_NUM_PURCHASE", "ID");
- $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
- while ($arFields = $res->Fetch()) {
- $idsQuant[$arFields["ID"]]["OLD_QUANT"] = $arFields["PROPERTY_NUM_PURCHASE_VALUE"];
- }
- foreach ($ids as $i) {
- CIBlockElement::SetPropertyValuesEx($i, 3, array("NUM_PURCHASE" => intval($idsQuant[$i]["QUANT"]) + intval($idsQuant[$i]["OLD_QUANT"])));
- }
- BXClearCache(true, "/s1/bitrix/catalog.section/");
- BXClearCache(true, "/s1/bitrix/catalog.section.list/");
- }
- }
- function OnAfterIBlockElementAddHandler(&$arFields)
- {
- if ($arFields["IBLOCK_ID"] == 7) {
- $text = "";
- if ($arFields["PROPERTY_VALUES"]["44"] != "") {
- $text .= '<b>Имя: </b>' . $arFields["PROPERTY_VALUES"]["44"] . '<br/>';
- }
- if ($arFields["PROPERTY_VALUES"]["45"] != "") {
- $text .= '<b>Город: </b>' . $arFields["PROPERTY_VALUES"]["45"] . '<br/>';
- }
- if ($arFields["PROPERTY_VALUES"]["49"] != "") {
- $text .= '<b>Тема: </b>' . $arFields["PROPERTY_VALUES"]["49"] . '<br/>';
- }
- if ($arFields["PROPERTY_VALUES"]["46"] != "") {
- $db_props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array("sort" => "asc"), array("ID" => "46"));
- if ($ar_props = $db_props->Fetch()) {
- $PROP_VALUE_NAME = $ar_props["VALUE_ENUM"];
- $text .= '<b>Категория: </b>' . $PROP_VALUE_NAME . '<br/>';
- }
- }
- if ($arFields["PROPERTY_VALUES"]["75"] != "") {
- $arIBlockElement = GetIBlockElement($arFields["PROPERTY_VALUES"]["75"]);
- if ($arFields["ACTIVE"] == "Y") {
- $text .= 'Ответить на отзыв можно на странице товара: ' . $arIBlockElement['NAME'] . '<br />';
- $text .= '<a href="' . $_SERVER["SERVER_NAME"] . $arIBlockElement['DETAIL_PAGE_URL'] . '">' . $_SERVER["SERVER_NAME"] . $arIBlockElement['DETAIL_PAGE_URL'] . '</a><br />';
- } else {
- $text .= 'Отзыв требует премодерации <a href="' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '">' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '</a>,';
- $text .= 'после которой он будет доступен на этой странице <a href="' . $_SERVER["SERVER_NAME"] . $arIBlockElement['DETAIL_PAGE_URL'] . '">' . $_SERVER["SERVER_NAME"] . $arIBlockElement['DETAIL_PAGE_URL'] . '</a><br />';
- }
- } elseif ($arFields["PROPERTY_VALUES"]["109"] != "") {
- $arIBlockElement = GetIBlockSection($arFields["PROPERTY_VALUES"]["109"]);
- if ($arFields["ACTIVE"] == "Y") {
- $text .= 'Ответить на отзыв можно на странице бренда: ' . $arIBlockElement['NAME'] . '<br />';
- $text .= '<a href="' . $_SERVER["SERVER_NAME"] . $arIBlockElement['SECTION_PAGE_URL'] . '">' . $_SERVER["SERVER_NAME"] . $arIBlockElement['SECTION_PAGE_URL'] . '</a><br />';
- } else {
- $text .= 'Отзыв требует премодерации <a href="' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '">' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '</a>,';
- $text .= 'после которой он будет доступен на этой странице <a href="' . $_SERVER["SERVER_NAME"] . $arIBlockElement['SECTION_PAGE_URL'] . '">' . $_SERVER["SERVER_NAME"] . $arIBlockElement['SECTION_PAGE_URL'] . '</a><br />';
- }
- } else {
- if ($arFields["ACTIVE"] == "Y") {
- $text .= 'Ответить на отзыв можно на этой странице <a href="' . $_SERVER["SERVER_NAME"] . '/obratnaya_svyaz/">' . $_SERVER["SERVER_NAME"] . '/obratnaya_svyaz/</a><br />';
- } else {
- $text .= 'Отзыв требует премодерации <a href="' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '">' . $_SERVER["SERVER_NAME"] . '/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=' . $arFields["IBLOCK_ID"] . '&type=feedback&ID=' . $arFields["ID"] . '</a>, после которой он будет доступен на этой странице <a href="' . $_SERVER["SERVER_NAME"] . '/obratnaya_svyaz/">' . $_SERVER["SERVER_NAME"] . '/obratnaya_svyaz/</a><br />';
- }
- }
- if ($arFields["PREVIEW_TEXT"] != "") {
- $text .= '<b>Сообщение: </b><br />' . $arFields["PREVIEW_TEXT"] . '<br/>';
- }
- $arIBlockElement = GetIBlockElement($arFields["ID"]);
- $arSend = array('TEXT' => $text);
- CEvent::Send('NEW_FEEDBACK', SITE_ID, $arSend, "N", 51);
- }
- }
- function OnAfterIBlockElementAction2($ID, $arFields)
- {
- $arFields["PRODUCT_ID"];
- CModule::IncludeModule("catalog");
- $mxResult = CCatalogSKU::GetInfoByProductIBlock(CATALOG_ID);
- if ($mxResult) {
- $arSelect = array("PROPERTY_PRODUCT");
- $arFilter = array("ID" => $arFields["PRODUCT_ID"]);
- $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
- if ($ob = $res->Fetch()) {
- $tovar_id = $ob["PROPERTY_PRODUCT_VALUE"];
- }
- } else {
- $tovar_id = $arFields["PRODUCT_ID"];
- }
- $priceOffers = array();
- if (is_array($mxResult)) {
- $rsOffers = CIBlockElement::GetList(array("CATALOG_PRICE_1" => "ASC"), array('IBLOCK_ID' => $mxResult['IBLOCK_ID'], '>CATALOG_PRICE_1' => 0, 'PROPERTY_' . $mxResult['SKU_PROPERTY_ID'] => $tovar_id), false, false, array("ID"));
- $check = false;
- while ($arOffer = $rsOffers->Fetch()) {
- $priceOffers[]["PRICE"] = $arOffer["CATALOG_PRICE_1"];
- }
- }
- if (!$priceOffers) {
- $priceOffers[] = (CPrice::GetBasePrice($tovar_id));
- }
- CIBlockElement::SetPropertyValuesEx($tovar_id, CATALOG_ID, array("MINIMUM_PRICE" => floatVal($priceOffers[0]["PRICE"])));
- }
- public static function OnOrderUpdateBonuses(&$arFields)
- {
- global $APPLICATION;
- if (($APPLICATION->GetCurPage() == '/bitrix/admin/sale_order_new.php')) {
- if (isset($_GET["ID"]) && ($arFields['PRICE'] > 0)) {
- $t = Fact\CSaleOrder::getOrderInfo($_GET["ID"], 0, 1, 0);
- if (($_GET["ID"] == $t['ID']) && ($t['PAYED'] == 'N')) {
- $newSum = 0;
- foreach ($arFields['BASKET_ITEMS'] as $item) {
- $newSum += $item['PRICE'] * $item['QUANTITY'];
- }
- $oldSum = 0;
- foreach ($t['ITEMS'] as $item) {
- $oldSum += $item['PRICE'] * $item['QUANTITY'];
- }
- if ($oldSum != $newSum) {
- $transactions = CSaleUserTransact::GetList(
- array("ID" => "DESC"),
- array("ORDER_ID" => $_GET["ID"])
- );
- while ($tran = $transactions->GetNext()) {
- $temp[] = $tran;
- }
- $n = array_pop($temp);
- if ($n['DEBIT'] == 'N' && !in_array($t['USER_ID'], array(59474, 59475, 59477))) {
- $BonusUser = new Fact\CUser($t['USER_ID']);
- $globalBonusBuyPercent = $BonusUser->getRatio();
- $bonus = round($globalBonusBuyPercent * $newSum);
- $currentBudget = CSaleUserAccount::GetByUserID($n['USER_ID'], $n['CURRENCY']);
- $currentSum = $currentBudget['CURRENT_BUDGET'] + $n['AMOUNT'];
- CSaleUserTransact::Delete($n['ID']);
- CSaleUserAccount::UpdateAccount(
- $n['USER_ID'],
- $n['AMOUNT'],
- $n['CURRENCY'],
- 'Change items in order #' . $n['ORDER_ID']
- );
- CSaleUserAccount::Withdraw($n['USER_ID'], $bonus, $n['CURRENCY'], $_GET['ID']);
- if (isset($_GET["DEBUG"])) {
- echo '<pre>';
- print_r($arFields);
- echo '$bonus: ' . $bonus . "\n";
- print_r($currentBudget);
- echo '$currentSum: ' . $currentSum . "\n";
- echo 'AMOUNT: ' . $n['AMOUNT'] . "\n";
- print_r($n);
- echo '</pre>';
- die();
- }
- }
- }
- }
- }
- }
- }
- /**
- * Order bonus
- */
- public static function updateSumPaidAfterUpdate($ID, $arFields)
- {
- global $APPLICATION;
- $t = Fact\CSaleOrder::getOrderInfo($ID, 0, 1, 0);
- if (!self::$orderLock) {
- if (($t['PAYED'] == 'N')) {
- $transactions = CSaleUserTransact::GetList(array("ID" => "ASC"), array("ORDER_ID" => $ID));
- while ($tran = $transactions->GetNext()) {
- $temp[] = $tran;
- }
- $n = array_shift($temp);
- if ($n['DEBIT'] == 'N') {
- /*$ar_fields = array(
- "SUM_PAID" => $n['AMOUNT']
- );
- self::$orderLock = true;
- $f = CSaleOrder::Update($ID, $ar_fields);
- */
- }
- }
- }
- }
- }
- if (!function_exists('getProductInfoFromOffer')) {
- function getProductInfoFromOffer($offerId)
- {
- if (!CModule::IncludeModule("iblock")) {
- return;
- }
- $res = CIBlockElement::GetByID($offerId);
- if ($ar_res = $res->GetNextElement()) {
- $props = $ar_res->GetProperties();
- $arSelect = array();
- $arFilter = array("IBLOCK_ID" => $props["PRODUCT"]["LINK_IBLOCK_ID"],
- "ACTIVE_DATE" => "Y",
- "ACTIVE" => "Y",
- "ID" => $props["PRODUCT"]["VALUE"],
- );
- $res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);
- while ($ob = $res->GetNextElement()) {
- $arFields = $ob->GetFields();
- }
- return $arFields;
- }
- }
- }
- if (!function_exists('ShowTitleOrHeader')) {
- function ShowTitleOrHeader()
- {
- global $APPLICATION;
- if ($APPLICATION->GetPageProperty("ADDITIONAL_TITLE")) {
- return $APPLICATION->GetPageProperty("ADDITIONAL_TITLE");
- } else {
- return $APPLICATION->GetTitle(false);
- }
- }
- }
- if (!function_exists('GetUserField')) {
- function GetUserField($entity_id, $value_id, $property_id)
- {
- $arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields($entity_id, $value_id);
- return $arUF[$property_id]["VALUE"];
- }
- }
- function FilterProfileOnAfterUpdate(Entity\Event $event)
- {
- $primary = $event->getParameter("fields");
- if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/include/arrFilters.php')) {
- $arr = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/include/arrFilters.php'));
- } else {
- $arr = array();
- }
- $arr[$primary['UF_NAME']] = $primary;
- $content = serialize($arr);
- //file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/include/arrFilters.php', $content);
- }
- /**
- * @param Main\Event $event
- *
- * Отправляем даные о товарах для заказов по партнерским ссылкам
- */
- function admitRefer(Main\Event $event)
- {
- # Игнорируемые IP
- $arIgnoredIP = [
- "95.26.233.126",
- "78.107.50.194",
- "78.107.232.188",
- "91.122.198.141"
- ];
- global $APPLICATION;
- $admitad_uid = $APPLICATION->get_cookie("admitad_uid");
- if (!in_array($_SERVER["REMOTE_ADDR"], $arIgnoredIP) && $admitad_uid) {
- $order = $event->getParameter("ENTITY");
- $basket = $order->getBasket();
- $orderId = $order->getId();
- $userId = $order->getUserId();
- $basketItems = $basket->getBasketItems();
- $order_goods = [];
- foreach ($basketItems as $item) {
- $order_goods[] = array(
- "ID" => $item->getField("ID"),
- "ORDER_ID" => $item->getField("ORDER_ID"),
- "PRODUCT_ID" => $item->getField("PRODUCT_ID"),
- "PRICE" => $item->getField("PRICE"),
- "CURRENCY" => $item->getField("CURRENCY"),
- "QUANTITY" => (int)$item->getField("QUANTITY"),
- "USER_ID" => $userId
- );
- }
- AddMessage2Log('Поля заказа: ' . print_r($order_goods, true), 'studioleeft');
- if (count($order_goods) > 1) {
- AddMessage2Log('Отправляем больше одного товара', 'studioleeft');
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_admitad.txt', print_r($order_goods, true));
- foreach ($order_goods as $goodKey => $oneGood) {
- AddMessage2Log('Оформляем запрос для товара ' . $oneGood['NAME'], 'studioleeft');
- if ($ch = curl_init()) {
- $link = 'https://ad.admitad.com/r?campaign_code=bf139bb810&postback=1&postback_key=8567F9B3d53ACC7335713187C182433a&action_code=1&uid=' . $admitad_uid . '&order_id=' . $orderId . '&tariff_code=1¤cy_code=' . $oneGood['CURRENCY'] . '&price=' . $oneGood['PRICE'] . '&quantity=' . $oneGood['QUANTITY'] . '&position_id=' . ++$goodKey . '&position_count=' . count($order_goods) . '&product_id=' . $oneGood['PRODUCT_ID'] . '&client_id=' . $oneGood['USER_ID'] . '&payment_type=sale';
- AddMessage2Log($link, 'studioleeft');
- // Устанавливаем URL запроса
- curl_setopt($ch, CURLOPT_URL, $link);
- // Куда помещать результат выполнения запроса:
- // false - в стандартный поток вывода,
- // true - в виде возвращаемого значения функции curl_exec.
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Выполнение запроса
- $data = curl_exec($ch);
- if ($data === false) {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch), 'studioleeft');
- } else {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch) . " " . print_r($data), 'studioleeft');
- }
- // Особождение ресурса
- curl_close($ch);
- }
- }
- } else {
- AddMessage2Log('отправлен заказ с 1 товаром', 'studioleeft');
- // Иницализация библиотеки curl
- if ($ch = curl_init()) {
- $link = 'https://ad.admitad.com/r?campaign_code=bf139bb810&postback=1&postback_key=8567F9B3d53ACC7335713187C182433a&action_code=1&uid=' . $admitad_uid . '&order_id=' . $orderId . '&tariff_code=1¤cy_code=' . $order_goods[0]['CURRENCY'] . '&price=' . $order_goods[0]['PRICE'] . '&quantity=' . $order_goods[0]['QUANTITY'] . '&position_id=1&position_count=1&product_id=' . $order_goods[0]['PRODUCT_ID'] . '&client_id=' . $order_goods[0]['USER_ID'] . '&payment_type=sale';
- AddMessage2Log($link, 'studioleeft');
- // Устанавливаем URL запроса
- curl_setopt($ch, CURLOPT_URL, $link);
- // Куда помещать результат выполнения запроса:
- // false - в стандартный поток вывода,
- // true - в виде возвращаемого значения функции curl_exec.
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Выполнение запроса
- $data = curl_exec($ch);
- if ($data === false) {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch), 'studioleeft');
- }
- // Особождение ресурса
- curl_close($ch);
- }
- }
- }
- }
- function groupCompare($var1, $var2)
- {
- if ($var1 == $var2) {
- return 0;
- } elseif ($var1 > $var2) {
- return 1;
- } else {
- return -1;
- }
- }
- /**
- * @param $userId
- *
- * @return mixed
- *
- * Определяем максимальную скидку бонусами, по группе пользователя
- */
- function getUserBonus($userId)
- {
- global $arStatusGroup;
- global $arMaximumBonusOnBuy;
- $arGroups = CUser::GetUserGroup($userId);
- $group = array_pop(array_uintersect($arStatusGroup, $arGroups, 'groupCompare'));
- $group = $group ? array_search($group, $arStatusGroup) : '0';
- $maximalBonusOnBuy = $arMaximumBonusOnBuy[$group];
- return $maximalBonusOnBuy;
- }
- /**
- * @param $userID
- * @param $bonusDiscount
- *
- * @return int
- *
- * Возвращаем количесво бонусов, которые можно применить как скидку
- */
- function getBonusDiscountValue($userID, $bonusDiscount)
- {
- $bonusCount = 0;
- if (CModule::IncludeModule("sale")) {
- if ($ar = CSaleUserAccount::GetByUserID($userID, "RUB")) {
- $bonusCount = $ar['CURRENT_BUDGET'];
- }
- }
- return $bonusDiscount > $bonusCount ? $bonusCount : $bonusDiscount;
- }
- /**
- * @param $arResult
- *
- * Обрабатываем даные из заказа при визите на старницу заказа
- */
- function OnSaleComponentOrderJsDataHandler(&$arResult)
- {
- if ($_REQUEST['action'] != 'refreshOrderAjax') {
- prepareOrderBasket($arResult['JS_DATA']);
- }
- }
- /**
- * @param $arResult
- *
- * Обрабатываем даные из заказа перед отравкой ajax ответа
- */
- function OnSaleComponentOrderShowAjaxAnswerHandler(&$arResult)
- {
- prepareOrderBasket($arResult['order']);
- }
- /**
- * @param $data
- *
- * Рассчитываем скидку баллами для товаров, без скидок
- */
- function prepareOrderBasket(&$data)
- {
- global $USER;
- $userID = $USER->GetId();
- $discount = getPersonalDiscount($userID);
- $additionDiscount = $bonusCount = $userBudget = 0;
- $activePaySystem = 0;
- foreach ($data["PAY_SYSTEM"] as $paySystem) {
- if ($paySystem["CHECKED"] == "Y") {
- $activePaySystem = $paySystem["ID"];
- }
- }
- if (discountIsAllowed($activePaySystem, $userID)) {
- # Определяем количество бонусов на счете пользователя
- if (CModule::IncludeModule("sale")) {
- if ($ar = CSaleUserAccount::GetByUserID($USER->GetId(), "RUB")) {
- $bonusCount = $ar['CURRENT_BUDGET'];
- }
- }
- if ($bonusCount) {
- foreach ($data['GRID']['ROWS'] as &$item) {
- if ($item['data']['DISCOUNT_PRICE'] == 0) {
- $stepDiscount = $item['data']['PRICE'] * $discount * $item['data']['QUANTITY'];
- if ($stepDiscount > $bonusCount) {
- $stepDiscount = $bonusCount;
- }
- $item['data']['SUM_NUM'] -= $stepDiscount;
- $item['data']['PRICE'] -= $stepDiscount / $item['data']['QUANTITY'] * $discount;
- $item['data']['SUM'] = CCurrencyLang::CurrencyFormat($item['data']['SUM_NUM'], 'RUB');
- $item['data']['DISCOUNT_PRICE'] = $item['data']['BASE_PRICE'] - $item['data']['PRICE'];
- $item['data']['DISCOUNT_PRICE_PERCENT'] = round(100 - ($item['data']['PRICE'] / $item['data']['BASE_PRICE']));
- $item['data']['DISCOUNT_PRICE_PERCENT_FORMATED'] = $item['data']['DISCOUNT_PRICE_PERCENT'] . '%';
- $additionDiscount += $stepDiscount;
- $bonusCount -= $stepDiscount;
- if ($bonusCount < 0) {
- $bonusCount = 0;
- }
- }
- }
- $additionDiscount = getBonusDiscountValue($userID, $additionDiscount);
- $data['TOTAL']['ORDER_PRICE'] -= $additionDiscount;
- $data['TOTAL']['ORDER_PRICE_FORMATED'] = CCurrencyLang::CurrencyFormat(
- $data['TOTAL']['ORDER_PRICE'],
- 'RUB'
- );
- $data['TOTAL']['ORDER_TOTAL_PRICE'] -= $additionDiscount;
- $data['TOTAL']['ORDER_TOTAL_PRICE_FORMATED'] = CCurrencyLang::CurrencyFormat(
- $data['TOTAL']['ORDER_TOTAL_PRICE'],
- 'RUB'
- );
- $data['TOTAL']['DISCOUNT_PRICE'] += $additionDiscount;
- $data['TOTAL']['DISCOUNT_PRICE_FORMATED'] = CCurrencyLang::CurrencyFormat(
- $data['TOTAL']['DISCOUNT_PRICE'],
- 'RUB'
- );
- }
- }
- }
- /**
- * @param $paySystemID
- * @param $userID
- *
- * @return bool
- *
- * Проверяем, разрешена ли пользователю скидка
- */
- function discountIsAllowed($paySystemID, $userID)
- {
- global $online_paysystem;
- if (in_array($paySystemID, $online_paysystem)) {
- return false;
- }
- if (isset($userID)) {
- $arGroups = CUser::GetUserGroup($userID);
- } else {
- global $USER;
- $arGroups = $USER->GetUserGroupArray();
- }
- $managerGroups = array(1, 6, 20);
- $resultGroups = array_intersect($arGroups, $managerGroups);
- if (count($resultGroups) > 0) {
- return false;
- }
- return true;
- }
- function dump($var, $break = false)
- {
- echo '<pre>';
- print_r($var);
- echo '</pre>';
- if ($break) {
- die();
- }
- }
- class Order
- {
- public function OnAfterOrderPaid($orderID = 0, &$eventName, &$arFields)
- {
- $arOrder = CSaleOrder::GetByID($orderID);
- $arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
- if ($arPaySystem["ID"] == 1 && $eventName == "SALE_ORDER_PAID") {
- die();
- } else {
- $ORDER_ID = $orderID;
- $rows = 'Номер заказа: ' . $ORDER_ID . '<br/>';
- if (!empty($arOrder)) {
- # Рассчитываем скидку бонусами, так как на момент отправки письма она еще не записана в заказ
- if (discountIsAllowed($arOrder['PAY_SYSTEM_ID'], $arOrder['USER_ID'])) {
- global $USER;
- $userId = $USER->GetId();
- $basketItems = Bitrix\Sale\Order::load($orderID)->getBasket()->getBasketItems();
- $personalDiscount = getPersonalDiscount($userId);
- # Выбираем из корзины товары без скидки и считаем величину скидки бонусами по этим товарам
- $bonusDiscount = $bonusCount = 0;
- foreach ($basketItems as $basketItem) {
- if ($basketItem->getField('DISCOUNT_PRICE') == 0) {
- $bonusDiscount += ($basketItem->getPrice() * $basketItem->getQuantity()) * $personalDiscount;
- }
- }
- # Получаем количество бонусов, которые можно списать со счета пользователя
- $bonusDiscount = getBonusDiscountValue($userId, $bonusDiscount);
- $arOrder['SUM_PAID'] = round($bonusDiscount);
- }
- $db_props = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
- while ($arProps = $db_props->Fetch()) {
- $rows .= '';
- $val = '';
- switch ($arProps['CODE']) {
- case 'FIO':
- $val = $arProps['VALUE'];
- $label = 'Получатель';
- break;
- case 'LOCATION':
- $loc = CSaleLocation::GetByID($arProps['VALUE']);
- $val = $loc['CITY_NAME_ORIG'];
- $label = 'Город';
- break;
- case 'EMAIL':
- $val = $arProps['VALUE'];
- $label = $arProps['PROPERTY_NAME'];
- break;
- case 'ADDRESS':
- $val = $arProps['VALUE'];
- $label = $arProps['PROPERTY_NAME'];
- break;
- }
- if (!empty($val)) {
- $rows .= '' . $label . ': ';
- $rows .= '' . $val . '';
- $rows .= '<br/>';
- }
- }
- if (!empty($arOrder['PS_STATUS_DESCRIPTION'])) {
- $rows .= 'Платежная система' . $arOrder['PS_STATUS_DESCRIPTION'] . '<br/>';
- }
- if (!empty($arOrder['USER_DESCRIPTION'])) {
- $rows .= 'Доп.инфо: ' . $arOrder['USER_DESCRIPTION'] . ' <br/>';
- }
- $arDeliv = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']);
- if ($arDeliv) {
- $arOrderInfo['DELIVERY'] = $arDeliv['NAME'];
- $rows .= 'Способ доставки: ' . $arDeliv['NAME'] . ' <br/>';
- }
- $dbBasketItems = CSaleBasket::GetList(
- array(
- "NAME" => "ASC",
- "ID" => "ASC"
- ),
- array(
- "ORDER_ID" => $ORDER_ID
- ),
- false,
- false,
- array(
- "ID",
- "NAME",
- "PRODUCT_ID",
- "QUANTITY",
- "PRICE",
- "PROPERTY_PRODUCT"
- )
- );
- $itemProps = array('ART', 'NAME', 'QUANTITY', 'PRICE');
- $i = 1;
- $total = 0;
- $rows .= '<br/><b>Список товаров</b>: <br/>';
- while ($arItems = $dbBasketItems->Fetch()) {
- $n = getProps($arItems['PRODUCT_ID']);
- $arItems['DPU'] = $n['DETAIL_PAGE_URL'];
- $arItems['ART'] = $n['PROPERTY_ARTNUMBER_VALUE'];
- $total += floatval($arItems['PRICE']) * floatval($arItems['QUANTITY']);
- //$t[] = $arItems;
- $rows .= '<a href="http://' . SITE_SERVER_NAME . $arItems['DPU'] . '">' . '[' . $arItems['ART'] . '] ' . $arItems['NAME'] . '</a>' . ' ' . $arItems['QUANTITY'] . ' ' . round($arItems['PRICE'], 2, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- }
- $rows .= '<br/>Стоимость заказа:' . round($total, 0, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- $rows .= 'Доставка: ' . round($arOrder['PRICE_DELIVERY'], 0, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- if ($arOrder['PAYED'] == 'N') {
- $bonus = isset($arOrder['SUM_PAID']) ? $arOrder['SUM_PAID'] : 0;
- if ($bonus > 0) {
- $rows .= 'Бонусная скидка: ' . round($bonus, 0, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- }
- $rows .= 'Сумма к оплате: ' . round(floatval($arOrder['PRICE']) - floatval($bonus), 0, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- } elseif ($arOrder['PAYED'] == 'Y') {
- if (($arOrder['PRICE'] != $arOrder['SUM_PAID']) && (isset($arOrder['SUM_PAID']) > 0)) {
- $bonus = isset($arOrder['SUM_PAID']) ? $arOrder['SUM_PAID'] : 0;
- $rows .= 'Бонусная скидка : ' . round(($arOrder['PRICE']) - floatval($bonus), 0, PHP_ROUND_HALF_UP) . ' руб. <br/>';
- }
- $rows .= 'Оплачено: ' . round($arOrder['SUM_PAID'], 0, PHP_ROUND_HALF_UP) . ' руб. ';
- }
- $table = '<p class="table">' . $rows . '</p>';
- $arFields['TABLE_INFO'] = $table;
- }
- /*echo '<pre>';
- print_r($t);
- echo '</pre>';*/
- /*$res = CSaleUserTransact::GetList(Array("ID" => "DESC"), array("ORDER_ID" => $arOrder['ID']));
- while ($arFields = $res->Fetch()){
- echo '<pre>';
- print_r($arOrder);
- echo '</pre>';
- }*/
- }
- }
- public function helloworld($arr)
- {
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/dump.json', json_encode($arr));
- }
- public function test($id)
- {
- $dbUserAccount = CSaleUserAccount::GetList(
- array(),
- array(
- "USER_ID" => 1,
- )
- );
- if ($arUserAccount = $dbUserAccount->GetNext()) {
- echo '<pre>';
- print_r($arUserAccount);
- echo '</pre>';
- }
- }
- }
- function getProps($prodID)
- {
- $mxResult = CCatalogSku::GetProductInfo($prodID);
- $arOrder = array("SORT" => "ASC");
- $arFilter = array('ID' => $mxResult['ID'], 'IBLOCK_ID' => $mxResult['IBLOCK_ID']);
- $arSelectFields = array("ID", "ACTIVE", "NAME", 'PROPERTY_ARTNUMBER', 'DETAIL_PAGE_URL');
- $rsElements = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelectFields);
- while ($arElement = $rsElements->GetNext()) {
- return $arElement;
- }
- return false;
- }
- /*if (isset($_REQUEST['order_id']) && ($_REQUEST['order_id'] > 0))
- {
- Fact_CSaleOrder::getOrderInfo($_REQUEST['order_id'],1);
- }
- use Fact;
- //Fact\CSaleOrder::getOrderInfo(887,1);
- Fact\CSaleUserTransact::getTransactionsByOrder(882);
- */
- function delete_basket()
- {
- global $DB;
- $nDays = 30;
- $nDays = IntVal($nDays);
- $strSql =
- "SELECT ID " .
- "FROM b_sale_fuser " .
- "WHERE TO_DAYS(DATE_UPDATE)<(TO_DAYS(NOW())-" . $nDays . ") LIMIT 380";
- $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
- while ($ar_res = $db_res->Fetch()) {
- CSaleBasket::DeleteAll($ar_res["ID"], false);
- CSaleUser::Delete($ar_res["ID"]);
- }
- return "delete_basket();";
- }
- function getDelivery($offers)
- {
- $sum = 0;
- $None = 0;
- foreach ($offers as $offer) {
- if ($offer['DISPLAY_PROPERTIES']['ATT_AVAILABLE']['VALUE'] == 'N') {
- $None++;
- } else {
- $sum = $sum + intval($offer['CATALOG_QUANTITY']);
- }
- }
- if (($None > 0) && ($None == (count($offers)))) {
- return -1;
- }
- if ($sum > 0) {
- return 1;
- } else {
- return 0;
- }
- }
- function StudiofactMailOnBuildGlobalMenu(&$aGlobalMenu, &$aModuleMenu)
- {
- $aModuleMenu[] = array(
- 'parent_menu' => 'global_menu_store',
- 'text' => 'Импорт/Экспорт каталога',
- 'url' => '/bitrix/admin/import_to_csv.php',
- 'title' => 'Импорт/Экспорт каталога/',
- 'icon' => 'studiofact_mail_icon',
- );
- }
- function setMetaTagsTemplates()
- {
- CModule::IncludeModule("iblock");
- $arF = array('IBLOCK_ID' => CATALOG_ID, "SECTION_ID" => 0);
- $db_l = CIBlockSection::GetList(array("NAME" => "DESC"), $arF, false, array(), false);
- while ($ar_res = $db_l->GetNext()) {
- echo $ar_res['NAME'] . '<br>';
- if ($ar_res["ID"] == BRANDS_SECTION) {
- $arFilter = array('IBLOCK_ID' => CATALOG_ID, "SECTION_ID" => $ar_res["ID"]);
- $db_list = CIBlockSection::GetList(array("NAME" => "ASC"), $arFilter, false, array(), false);
- while ($ar_result = $db_list->GetNext()) {
- //----------------------
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $ar_result['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => "{=this.Name} купить по лучшим ценам. Только оригинальная продукция на официальном сайте Gracy.ru",
- "SECTION_META_DESCRIPTION" => "{=this.Name}. Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- $ipropValues = new InheritedProperty\SectionValues(3, $ar_result['ID']);
- $values = $ipropValues->getValues();
- echo $values ["SECTION_META_TITLE"] . "<br/>";
- echo $values ["SECTION_META_DESCRIPTION"] . "<br/>";
- $ipropValues->clearValues();
- //----------------------
- $arFilter2 = array('IBLOCK_ID' => CATALOG_ID, "SECTION_ID" => $ar_result['ID']);
- $db_list2 = CIBlockSection::GetList(array("NAME" => "ASC"), $arFilter2, false, array(), false);
- while ($ar_result2 = $db_list2->GetNext()) {
- echo " " . $ar_result2['ID'] . ' ' . $ar_result2['NAME'] . ': ' . $ar_result2['DEPTH_LEVEL'] . '<br>';
- //----------------------
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $ar_result2['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => "{=parent.Name} {=this.Name} купить по лучшим ценам. Только оригинальная продукция на официальном сайте Gracy.ru",
- "SECTION_META_DESCRIPTION" => "{=parent.Name} {=this.Name}. Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- $ipropValues = new InheritedProperty\SectionValues(3, $ar_result2['ID']);
- $values = $ipropValues->getValues();
- echo $values ["SECTION_META_TITLE"] . "<br/>";
- echo $values ["SECTION_META_DESCRIPTION"] . "<br/>";
- $ipropValues->clearValues();
- //----------------------
- }
- }
- } else {
- echo $ar_res['DEPTH_LEVEL'] . " " . $ar_res['ID'] . ' ' . $ar_res['NAME'] . ': <br>';
- $arFilter = array('IBLOCK_ID' => CATALOG_ID, "SECTION_ID" => $ar_res["ID"]);
- $db_list = CIBlockSection::GetList(array("NAME" => "DESC"), $arFilter, false, array(), false);
- //----------------------
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $ar_res['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => " ",
- "SECTION_META_DESCRIPTION" => "{=this.Name}. Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- $ipropValues = new InheritedProperty\SectionValues(3, $ar_res['ID']);
- $values = $ipropValues->getValues();
- echo "t1: " . $values ["SECTION_META_TITLE"] . "<br/>";
- echo "d1: " . $values ["SECTION_META_DESCRIPTION"] . "<br/>";
- $ipropValues->clearValues();
- //----------------------
- while ($ar_result = $db_list->GetNext()) {
- echo $ar_result['DEPTH_LEVEL'] . " " . $ar_result['ID'] . ' ' . $ar_result['NAME'] . ': <br>';
- //----------------------
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $ar_result['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => "{=this.Name}. Купить профессиональную косметику и аксессуары по самым выгодным ценам.",
- "SECTION_META_DESCRIPTION" => "{=this.Name}. Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- $ipropValues = new InheritedProperty\SectionValues(3, $ar_result['ID']);
- $values = $ipropValues->getValues();
- echo "t2: " . $values ["SECTION_META_TITLE"] . "<br/>";
- echo "d2: " . $values ["SECTION_META_DESCRIPTION"] . "<br/>";
- $ipropValues->clearValues();
- //----------------------
- $arFilter2 = array('IBLOCK_ID' => CATALOG_ID, "SECTION_ID" => $ar_result['ID']);
- $db_list2 = CIBlockSection::GetList(array("NAME" => "ASC"), $arFilter2, false, array(), false);
- while ($ar_result2 = $db_list2->GetNext()) {
- echo $ar_result2['DEPTH_LEVEL'] . " " . $ar_result2['ID'] . ' ' . $ar_result2['NAME'] . ': <br>';
- //----------------------
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $ar_result2['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => "{=parent.Name} - {=this.Name}. Купить профессиональную косметику и аксессуары по самым выгодным ценам.",
- "SECTION_META_DESCRIPTION" => "{=parent.Name} - {=this.Name}. Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- $ipropValues = new InheritedProperty\SectionValues(3, $ar_result2['ID']);
- $values = $ipropValues->getValues();
- echo "t3: " . $values ["SECTION_META_TITLE"] . "<br/>";
- echo "d3: " . $values ["SECTION_META_DESCRIPTION"] . "<br/>";
- $ipropValues->clearValues();
- }
- }
- }
- }
- }
- function checkMetaTags($n = 10)
- {
- include("parse.php");
- $dir = $_SERVER["DOCUMENT_ROOT"] . '/upload/pages/';
- $files1 = scandir($dir);
- foreach ($files1 as $file) {
- if ($file != "." || $file != "..") {
- $arr = array("id" => explode(".", $file));
- $html = file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/upload/pages/' . $file);
- $saw = new nokogiri($html);
- $str = $saw->get('h1')->toArray();
- $arr["h1"] = $str["#text"];
- $str = $saw->get('title')->toArray();
- $arr["title"] = $str["#text"];
- $str = $saw->get('meta')->toArray();
- foreach ($str as $descr) {
- if ($descr["name"] == "description") {
- $arr["description"] = $descr["content"];
- }
- }
- }
- var_dump($arr);
- }
- }
- class OnAfterIBlockSectionAdd
- {
- // создаем обработчик события "OnAfterIBlockSectionAdd"
- function OnAfterIBlockSectionAddHandler(&$arFields)
- {
- $arFilter = array("ID" => $arFields['ID']);
- $arSelect = array("ID", "CODE", "NAME", "IBLOCK_SECTION_ID");
- $res = CIBlockSection::GetList(array(), $arFilter, false, $arSelect, array("nPageSize" => 50));
- while ($ar_props = $res->GetNext()) {
- $PROPS = $ar_props['IBLOCK_SECTION_ID'];
- }
- $res = CIBlockSection::GetList(array(), array("ID" => $PROPS), false, $arSelect, array("nPageSize" => 50));
- while ($ar_props = $res->GetNext()) {
- $SECTION_NAME = $ar_props['NAME'] . " ";
- }
- if ($arFields["IBLOCK_SECTION_ID"] == BRANDS_SECTION) {
- $SECTION_NAME = "";
- }
- if ($arFields["IBLOCK_ID"] == CATALOG_ID) {
- $ipropTemplates = new InheritedProperty\SectionTemplates(3, $arFields['ID']);
- $ipropTemplates->set(array(
- "SECTION_META_TITLE" => $SECTION_NAME . $arFields['NAME'] . " купить по лучшим ценам. Только оригинальная продукция на официальном сайте Gracy.ru",
- "SECTION_META_DESCRIPTION" => $SECTION_NAME . $arFields['NAME'] . " Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- }
- }
- }
- class OnAfterIBlockElementAdd
- {
- function OnAfterIBlockElementAddHandler(&$arFields)
- {
- $BRAND = "";
- $db_old_groups = CIBlockElement::GetElementGroups($arFields["ID"], true);
- while ($ar_group = $db_old_groups->Fetch()) {
- $ar_new_groups[] = $ar_group["IBLOCK_SECTION_ID"];
- $ar_codes[] = $ar_group["ID"];
- $need = BRANDS_SECTION;
- }
- if (in_array($need, $ar_new_groups)) {
- foreach ($ar_codes as $key => $group) {
- $product_name = CIBlockSection::GetById($group);
- if ($product = $product_name->GetNext()) {
- if ($product["IBLOCK_SECTION_ID"] == BRANDS_SECTION) {
- $arCode = $ar_codes[$key];
- $BRAND = $product["NAME"];
- }
- }
- }
- } else {
- foreach ($ar_new_groups as $key => $group) {
- $product_name = CIBlockSection::GetById($group);
- if ($product = $product_name->GetNext()) {
- if ($product["IBLOCK_SECTION_ID"] == BRANDS_SECTION) {
- $arCode = $ar_codes[$key];
- $BRAND = $product["NAME"];
- }
- }
- }
- }
- if ($arFields["IBLOCK_ID"] == CATALOG_ID) {
- $ipropTemplates = new InheritedProperty\ElementTemplates(3, $arFields['ID']);
- $ipropTemplates->set(array(
- "ELEMENT_META_TITLE" => $BRAND . " " . $arFields['NAME'] . " купить по выгодной цене на официальном сайте Gracy.ru",
- "ELEMENT_META_DESCRIPTION" => $BRAND . " " . $arFields['NAME'] . " Интернет-магазин Gracy предлагает выгодные цены, бесплатную доставку в любую точку России при сумме заказа от 3000 руб., подарки в каждом заказе, разнообразные скидки и бонусы. Сотрудничаем только с официальными поставщиками!",
- ));
- }
- }
- }
- function BeforeIndexHandler($arFields)
- {
- $arrIblock = array(CATALOG_ID); //ID инфоблоков, для которых производить модификацию
- $arDelFields = array("DETAIL_TEXT" /*, "PREVIEW_TEXT"*/); //стандартные поля, которые нужно исключить
- if (CModule::IncludeModule('iblock') && $arFields["MODULE_ID"] == 'iblock' && in_array($arFields["PARAM2"], $arrIblock) && intval($arFields["ITEM_ID"]) > 0) {
- $dbElement = CIBlockElement::GetList(array(), array("ID" => $arFields["ITEM_ID"]), false, array(), $arDelFields);
- if ($arElement = $dbElement->Fetch()) {
- foreach ($arDelFields as $value) {
- if (isset($arElement[$value]) && strlen($arElement[$value]) > 0) {
- $arFields["BODY"] = str_replace(CSearch::KillTags($arElement[$value]), "", $arFields["BODY"]);
- }
- }
- }
- return $arFields;
- }
- }
- class OnBeforeIBlockElement
- {
- // создаем обработчик события "OnBeforeIBlockElementUpdate"
- function OnBeforeIBlockElementUpdateHandler(&$arFields)
- {
- if ($arFields["IBLOCK_ID"] == CATALOG_ID) {
- CModule::IncludeModule("iblock");
- CModule::IncludeModule("catalog");
- $mxResult = CCatalogSKU::GetInfoByProductIBlock(CATALOG_ID);
- if (is_array($mxResult)) {
- $rsOffers = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $mxResult['IBLOCK_ID'], 'PROPERTY_' . $mxResult['SKU_PROPERTY_ID'] => $arFields["ID"]));
- while ($arOffer = $rsOffers->GetNext()) {
- $link = $offers_id[] = $arOffer["ID"];
- }
- foreach ($offers_id as $key => $offer_id) {
- $db_props = CIBlockElement::GetProperty(SKU_IBLOCK_ID, $offer_id, array("sort" => "asc"), array("CODE" => "ATT_AVAILABLE"));
- //$available = false;
- while ($ar_props = $db_props->Fetch()) {
- if (IntVal($ar_props["VALUE"]) == 12085) {
- $available[] = IntVal($ar_props["VALUE"]);
- } else {
- $db_props1 = CIBlockElement::GetProperty(SKU_IBLOCK_ID, $offer_id, array("sort" => "asc"), array("CODE" => "REPORT"));
- while ($ar_props1 = $db_props1->Fetch()) {
- if (IntVal($ar_props1["VALUE"]) == 12509) {
- $ids[] = $offer_id;
- $available[] = 1;
- CIBlockElement::SetPropertyValuesEx($offer_id, SKU_IBLOCK_ID, array("REPORT" => 12510));
- }
- }
- }
- }
- }
- array_push($ids, $arFields["ID"]);
- }
- if (in_array(1, $available)) {
- $subscr = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 15, "PROPERTY_PRODUCT" => $ids), false, array("nPageSize" => 100), array("NAME", "DETAIL_PAGE_URL", "PROPERTY_EMAIL", "PROPERTY_NAME", "PROPERTY_LINK", "PROPERTY_BRAND"));
- while ($subscribers = $subscr->GetNext()) {
- $toSend = array();
- $toSend["EMAIL_TO"] = $subscribers['PROPERTY_EMAIL_VALUE'];
- $toSend["NAME"] = $subscribers['PROPERTY_NAME_VALUE'];
- $toSend["PRODUCT_LINK"] = $subscribers['PROPERTY_LINK_VALUE'];
- $toSend["PRODUCT_NAME"] = $arFields["NAME"];
- $toSend["PRODUCT_BRAND"] = $subscribers['PROPERTY_BRAND_VALUE'];
- CEvent::SendImmediate("SALE_SUBSCRIBE_PRODUCT", s1, $toSend);
- }
- }
- }
- }
- }
- class SaleHandler
- {
- function payOrder($id, $val)
- {
- global $USER;
- global $DB;
- CModule::IncludeModule("sale");
- CModule::IncludeModule("catalog");
- if (isset($id) && $id != '' && $val = "Y") {
- $dbOrder = CSaleOrder::GetList(array('ID' => 'DESC'), array('ID' => $id), false, false, array("USER_ID"));
- if ($arOrder = $dbOrder->Fetch()) {
- $USER_ID = $arOrder["USER_ID"];
- }
- $arGroups = CUser::GetUserGroup($USER_ID);
- if (!in_array(1, $arGroups) && !in_array(6, $arGroups) && !in_array(20, $arGroups)) {
- $rsUser = CUser::GetByID($USER_ID);
- $arUser = $rsUser->Fetch();
- $current_status = $arUser["UF_GRACY_STATUS"];
- $arOrders = array();
- $sum = 0;
- $new_status = "";
- $current_status = "";
- $coupon_send_cnt = $arUser["UF_GRACY_COUPON_CNT"];
- $arFilter = array("PAYED" => "Y", "USER_ID" => $USER_ID);
- $db_sales = CSaleOrder::GetList(array("DATE_PAYED" => "ASC"), $arFilter, array('USER_ID', 'PRICE', 'DATE_PAYED', 'ID'));
- while ($ar_sales = $db_sales->Fetch()) {
- $dbAccountCurrency = CSaleUserTransact::GetList(
- array(),
- array("ORDER_ID" => $ar_sales["ID"]),
- false,
- false,
- array()
- );
- $sum_bonus = 0;
- while ($arAccountCurrency = $dbAccountCurrency->Fetch()) {
- if ($arAccountCurrency["DEBIT"] == "N") {
- $sum_bonus += $arAccountCurrency["AMOUNT"];
- } else {
- $sum_bonus -= $arAccountCurrency["AMOUNT"];
- }
- }
- $sum += $ar_sales["PRICE"] - $sum_bonus;
- $arOrders = array("USER_ID" => $ar_sales["USER_ID"],
- "EMAIL" => $arUser["EMAIL"],
- "NAME" => $arUser["NAME"],
- "PRICE" => $sum,
- "DATE_PAYED" => $ar_sales["DATE_PAYED"],
- );
- }
- $arGroups = CUser::GetUserGroup($USER_ID);
- if ($arOrders["PRICE"] >= 50000) {
- $new_status = "bordo";
- $sale_for_status = 3;
- if (($key = array_search(9, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- if (($key = array_search(10, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- $arGroups[] = 11;
- $for_next_status = "";
- } elseif ($arOrders["PRICE"] > 30000) {
- $new_status = "orange";
- $sale_for_status = 2;
- $rest_for_bordo = floor(50000 - $arOrders["PRICE"]);
- $for_next_status = "До получения статуса <b>BORDO</b> осталось совершить покупок на сумму <b>" . $rest_for_bordo . " руб.</b>";
- if (($key = array_search(9, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- if (($key = array_search(11, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- $arGroups[] = 10;
- } elseif ($arOrders["PRICE"] > 20000) {
- $new_status = "vanilla";
- $sale_for_status = 1.5;
- $rest_for_orange = floor(30000 - $arOrders["PRICE"]);
- $for_next_status = "До получения статуса <b>ORANGE</b> осталось совершить покупок на сумму <b>" . $rest_for_orange . " руб.</b>";
- if (($key = array_search(11, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- if (($key = array_search(10, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- $arGroups[] = 9;
- } else {
- $new_status = "";
- if (($key = array_search(9, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- if (($key = array_search(10, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- if (($key = array_search(11, $arGroups)) !== false) {
- unset($arGroups[$key]);
- }
- }
- $coupon_could_send = floor($arOrders["PRICE"] / 15000);
- $rest_for_coupon = 15000 - ($arOrders["PRICE"] % 15000);
- if ($coupon_could_send > 0 && $coupon_could_send > $coupon_send_cnt) {
- $coupon = "";
- do {
- $allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
- $string1 = '';
- $string2 = '';
- for ($i = 0; $i < 5; $i++) {
- $string1 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- }
- for ($i = 0; $i < 7; $i++) {
- $string2 .= substr($allchars, round((rand(0, 10) * 0.1) * (strlen($allchars) - 1)), 1);
- }
- $newCoupon = "CP-" . $string1 . "-" . $string2;
- $dbCouponCheck1 = CCatalogDiscountCoupon::GetList(array(), array("COUPON" => $newCoupon), false, false, array());
- } while (intval($dbCouponCheck1->SelectedRowsCount()) > 0);
- $cu1 = array("DISCOUNT_ID" => 4, "ACTIVE" => "Y", "ONE_TIME" => "O", "DATE_APPLY" => "");
- $cu1['COUPON'] = $newCoupon;
- $newCouponId1 = CCatalogDiscountCoupon::Add($cu1);
- $coupon = "<br /><br />Купон на скидку: <b style='font-size:24px;'> " . $newCoupon . "</b>";
- $user = new CUser;
- $coupon_fields = array("UF_GRACY_COUPON_CNT" => $coupon_could_send);
- $user->Update($USER_ID, $coupon_fields);
- $mail_fiedl = array("COUPON" => $coupon,
- "EMAIL" => $arOrders["EMAIL"],
- "NAME" => $arOrders["NAME"],
- "REST_FOR_COUPON" => $rest_for_coupon
- );
- CEvent::Send('NEW_GRACY_COUPON', s1, $mail_fiedl, "N", 71);
- }
- if ($new_status != "" && $current_status != $new_status) {
- CUser::SetUserGroup($USER_ID, $arGroups);
- $user = new CUser;
- $fields = array("UF_STATUS_UPDATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n"), date("d"), date("Y"))),
- "UF_GRACY_STATUS" => $new_status,
- "UF_GRACY_COUPON_CNT" => $coupon_could_send
- );
- $user->Update($USER_ID, $fields);
- $mail_fiedl = array("EMAIL" => $arOrders["EMAIL"],
- "NAME" => $arOrders["NAME"],
- "STATUS" => strtoupper($new_status),
- "SALE_FOR_STATUS" => $sale_for_status,
- "FOR_NEXT_STATUS" => $for_next_status
- );
- CEvent::Send('CHANGE_GRACY_STATUS', s1, $mail_fiedl, "N", 57);
- }
- }
- }
- }
- }
- function OnSaleStatusOrder_mail1($ID, $val)
- {
- $dbOrder = CSaleOrder::GetList(array('ID' => 'DESC'), array('ID' => $ID), false, false, array("PAY_SYSTEM_ID"));
- if ($arOrder = $dbOrder->Fetch()) {
- $paySystem = $arOrder["PAY_SYSTEM_ID"];
- }
- AddMessage2Log('$arOrder = ' . print_r($ID, true), '');
- if ($paySystem == 2) {
- $pay = 'Онлайн оплата банковскими картами Visa, Visa Electron, Master Card, Maestro';
- } elseif ($paySystem == 4) {
- $pay = 'Онлайн оплата в платежной системе Яндекс.Деньги';
- } elseif ($paySystem == 5) {
- $pay = 'Оплата по квитанции в банке';
- } elseif ($paySystem == 9) {
- $pay = 'Оплата в платежной системе QIWI';
- } elseif ($paySystem == 10) {
- $pay = 'Оплата наличными через терминалы и кассы';
- } elseif ($paySystem == 12) {
- $pay = 'Оплата по счету';
- }
- $arEventFields = array(
- "ORDER_ID" => $ID,
- "PAYMENT" => $pay,
- );
- if (($paySystem != 1) && ($paySystem != 8) && ($val == "Y")) {
- CEvent::Send("SALE_ORDER_PAID", s1, $arEventFields, "N", 72);
- }
- }
- function UCHOrderADDHandler($id, $arFields)
- {
- $file = $_SERVER["DOCUMENT_ROOT"] . '/number_bill.txt';
- $current = file_get_contents($file);
- if ($arFields['PERSON_TYPE_ID'] == 2) {
- $arFieldss = array(
- "ORDER_ID" => $id,
- "ORDER_PROPS_ID" => 51,
- "NAME" => 'Номер счета',
- "CODE" => 'NUMBER_SCH_UR',
- "VALUE" => $current
- );
- CSaleOrderPropsValue::Add($arFieldss);
- $current = $current + 1;
- file_put_contents($file, $current);
- }
- if ($arFields['PERSON_TYPE_ID'] == 3) {
- $arFieldss = array(
- "ORDER_ID" => $id,
- "ORDER_PROPS_ID" => 52,
- "NAME" => 'Номер счета',
- "CODE" => 'NUMBER_SCH_IP',
- "VALUE" => $current
- );
- CSaleOrderPropsValue::Add($arFieldss);
- $current = $current + 1;
- file_put_contents($file, $current);
- }
- $dbOrderProps = CSaleOrderPropsValue::GetList(
- array("SORT" => "ASC"),
- array("ORDER_ID" => $id)
- );
- while ($arOrderProps = $dbOrderProps->GetNext()) :
- if ($arOrderProps['NAME'] == 'Телефон') {
- $user = new CUser;
- $fieldss = array(
- "PERSONAL_PHONE" => $arOrderProps['VALUE'],
- );
- $user->Update($arFields['USER_ID'], $fieldss);
- }
- //file_put_contents($_SERVER["DOCUMENT_ROOT"] . '/log_lk.txt',print_r($arOrderProps, true), FILE_APPEND);
- endwhile;
- ?>
- <script>
- var date = new Date(new Date().getTime() + 31536000 * 1000);
- </script><?
- $user = new CUser;
- if ($arFields['PERSON_TYPE_ID'] == 1) {
- $fields = array(
- "UF_TIP_POKUP" => 'физическое'
- ); ?>
- <script>document.cookie = "tip=fiz;path=/; expires=" + date.toUTCString();</script>
- <?
- $user->Update($arFields['USER_ID'], $fields);
- }
- if ($arFields['PERSON_TYPE_ID'] == 2) {
- $fields = array(
- "UF_TIP_POKUP" => 'юридическое'
- );
- ?>
- <script>document.cookie = "tip=ur;path=/; expires=" + date.toUTCString();</script>
- <?
- $user->Update($arFields['USER_ID'], $fields);
- }
- if ($arFields['PERSON_TYPE_ID'] == 3) {
- $fields = array(
- "UF_TIP_POKUP" => 'ип'
- );
- ?>
- <script>document.cookie = "tip=ip;path=/; expires=" + date.toUTCString();</script>
- <?
- $user->Update($arFields['USER_ID'], $fields);
- }
- }
- if (!function_exists('__userGroups')) {
- function __userGroups($group = 0)
- {
- global $USER;
- $arGroups = $USER->GetUserGroupArray();
- foreach ($arGroups as $k => $arG) {
- if (($arG == 16 || $arG == 17 || $arG == 18 || $arG == 19 || $arG == 15)) {
- unset($arGroups[$k]);
- }
- }
- if (intval($group) > 0) {
- $arGroups[] = $group;
- }
- $USER->SetUserGroupArray($arGroups);
- }
- }
- // SDEK
- class studioleeft
- {
- function admitRef($ID, $arFields)
- {
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/studioleeft.log', date("H:i:s", time()) . " " . print_r(__FUNCTION__, 1) . "\r\n", FILE_APPEND);
- //AddMessage2Log("Отправляем curl-запрос!", 'studioleeft');
- if (!isSiteManager()) {
- //AddMessage2Log("Прошла проверка айпишников!", 'studioleeft');
- global $APPLICATION;
- //$basket_id = CSaleBasket::GetBasketUserID();
- $admitad_uid = $APPLICATION->get_cookie("admitad_uid");
- if ($admitad_uid) {
- $order_goods = array();
- $dbBasketItems = CSaleBasket::GetList(
- array(
- "NAME" => "ASC",
- "ID" => "ASC"
- ),
- array(
- "ORDER_ID" => $ID
- ),
- false,
- false,
- array("ID", "ORDER_ID", "PRODUCT_ID", "PRICE", "CURRENCY", "QUANTITY", "USER_ID")
- );
- while ($arItem = $dbBasketItems->Fetch()) {
- $arItem['QUANTITY'] = intval($arItem['QUANTITY']);
- $order_goods[] = $arItem;
- }
- AddMessage2Log('Поля заказа: ' . print_r($order_goods, true), 'studioleeft');
- if (count($order_goods) > 1) {
- AddMessage2Log('Отправляем больше одного товара', 'studioleeft');
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_admitad.txt', print_r($order_goods, true));
- foreach ($order_goods as $goodKey => $oneGood) {
- AddMessage2Log('Оформляем запрос для товара ' . $oneGood['NAME'], 'studioleeft');
- if ($ch = curl_init()) {
- $link = 'https://ad.admitad.com/r?campaign_code=bf139bb810&postback=1&postback_key=8567F9B3d53ACC7335713187C182433a&action_code=1&uid=' . $admitad_uid . '&order_id=' . $ID . '&tariff_code=1¤cy_code=' . $oneGood['CURRENCY'] . '&price=' . $oneGood['PRICE'] . '&quantity=' . $oneGood['QUANTITY'] . '&position_id=' . ++$goodKey . '&position_count=' . count($order_goods) . '&product_id=' . $oneGood['PRODUCT_ID'] . '&client_id=' . $oneGood['USER_ID'] . '&payment_type=sale';
- AddMessage2Log($link, 'studioleeft');
- // Устанавливаем URL запроса
- curl_setopt($ch, CURLOPT_URL, $link);
- // При значении true CURL включает в вывод заголовки
- //curl_setopt($ch, CURLOPT_HEADER, false);
- // Куда помещать результат выполнения запроса:
- // false - в стандартный поток вывода,
- // true - в виде возвращаемого значения функции curl_exec.
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Максимальное время ожидания в секундах
- //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
- // Установим значение поля User-agent
- //curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot');
- // Выполнение запроса
- $data = curl_exec($ch);
- if ($data === false) {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch), 'studioleeft');
- } else {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch) . " " . print_r($data), 'studioleeft');
- }
- // Вывести полученные данные
- //echo '<pre style="display:none;">'; print_r($data); echo '</pre>';
- // Особождение ресурса
- curl_close($ch);
- }
- }
- } else {
- AddMessage2Log('отправлен заказ с 1 товаром', 'studioleeft');
- //AddMessage2Log('Оформляем запрос для товара '.$order_goods[0]['NAME'], 'studioleeft');
- // Иницализация библиотеки curl
- if ($ch = curl_init()) {
- $link = 'https://ad.admitad.com/r?campaign_code=bf139bb810&postback=1&postback_key=8567F9B3d53ACC7335713187C182433a&action_code=1&uid=' . $admitad_uid . '&order_id=' . $ID . '&tariff_code=1¤cy_code=' . $order_goods[0]['CURRENCY'] . '&price=' . $order_goods[0]['PRICE'] . '&quantity=' . $order_goods[0]['QUANTITY'] . '&position_id=1&position_count=1&product_id=' . $order_goods[0]['PRODUCT_ID'] . '&client_id=' . $order_goods[0]['USER_ID'] . '&payment_type=sale';
- AddMessage2Log($link, 'studioleeft');
- // Устанавливаем URL запроса
- curl_setopt($ch, CURLOPT_URL, $link);
- // При значении true CURL включает в вывод заголовки
- //curl_setopt($ch, CURLOPT_HEADER, false);
- // Куда помещать результат выполнения запроса:
- // false - в стандартный поток вывода,
- // true - в виде возвращаемого значения функции curl_exec.
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Максимальное время ожидания в секундах
- //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
- // Установим значение поля User-agent
- //curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot');
- // Выполнение запроса
- $data = curl_exec($ch);
- if ($data === false) {
- AddMessage2Log("Error Number:" . curl_errno($ch) . " " . "Error String:" . curl_error($ch), 'studioleeft');
- }
- // Вывести полученные данные
- //echo '<pre style="display:none;">'; print_r($data); echo '</pre>';
- // Особождение ресурса
- curl_close($ch);
- }
- }
- }
- }
- }
- }
- function OrderDetailAdminContextMenuShow(&$items)
- {
- global $APPLICATION;
- if ($_SERVER['REQUEST_METHOD'] == 'GET'
- && $_REQUEST['ID'] > 0
- && $APPLICATION->GetCurPage() == '/bitrix/admin/sale_order_edit.php'
- || $APPLICATION->GetCurPage() == '/bitrix/admin/sale_order_view.php'
- ) {
- $items[] = array(
- "TEXT" => "Отправить в Grastin",
- "LINK" => "grastin_order.php?ORDER_ID=" . $_REQUEST['ID'],
- "TITLE" => "Отправить в Grastin",
- //"ICON"=>"btn_new",
- );
- }
- }
- # При добавлении товара в корзину, добавляем название бренда
- function OnBeforeBasketAddHandler(&$arFields)
- {
- if (!empty($arFields['PRODUCT_ID'])) {
- $picture = '/bitrix/components/bitrix/sale.basket.basket/templates/.default/images/no_photo.png';
- $res = CIBlockElement::GetList(
- array(),
- array("ID" => $arFields['PRODUCT_ID']),
- false,
- false,
- array('ID', 'IBLOCK_ID', 'PROPERTY_PRODUCT.PROPERTY_ATT_BRAND_LIST', 'PREVIEW_PICTURE', 'PROPERTY_PRODUCT.PREVIEW_PICTURE')
- )->Fetch();
- if ($res) {
- /**
- * После установки одного из обновлений, появилсась ошибка связанная с добавлением дополнительных свойтв к товарам в корзине.
- * Если в корзину уже было полжен товар, и к записе в корзине было добавлено свойтво,
- * то при повторном добавлении этого товара вместо изменения количества товаров,
- * происходит их дублирование.
- * Следующий код проверяет наличие товара в корзине, и изменяет количество вновь добавляемых товаров,
- * удаляя добавленные ранее.
- *
- * ToDo: Если текущая ошибка в поведении корзины будет исправлена, то этот код можно будет удалить.
- */
- $basket = Bitrix\Sale\Basket::loadItemsForFUser(
- Bitrix\Sale\Fuser::getId(),
- Bitrix\Main\Context::getCurrent()->getSite()
- );
- $basketItems = $basket->getBasketItems();
- foreach ($basketItems as $basketItem) {
- if ($basketItem->getField('PRODUCT_ID') == $arFields['PRODUCT_ID']) {
- $arFields['QUANTITY'] += $basketItem->getQuantity();
- $basketItem->delete();
- }
- }
- $basket->save();
- $arFields['PROPS']['BRAND'] = [
- 'CODE' => 'BRAND',
- 'ID' => '',
- 'VALUE' => $res["PROPERTY_PRODUCT_PROPERTY_ATT_BRAND_LIST_VALUE"],
- 'SORT' => '1',
- 'NAME' => 'Бренд'
- ];
- if (!empty($res["PREVIEW_PICTURE"])) {
- $picture = CFile::GetPath($res["PREVIEW_PICTURE"]);
- } elseif (!empty($res["PROPERTY_PRODUCT_PREVIEW_PICTURE"])) {
- $picture = CFile::GetPath($res["PROPERTY_PRODUCT_PREVIEW_PICTURE"]);
- }
- }
- CAgent::AddAgent("send_carrotquest('" . $_COOKIE['PHPSESSID'] . "', '" . $_COOKIE['carrotquest_uid'] . "', '" . $arFields["NAME"] . "', '" . $arFields["DETAIL_PAGE_URL"] . "', '" . $arFields["QUANTITY"] . "', '" . $picture . "');");
- }
- }
- function send_carrotquest($cookie, $carrot_uid, $name, $detail_url, $quantity, $picture)
- {
- $url = 'https://api.carrotquest.io/v1/users/' . $carrot_uid . '/events';
- $result = file_get_contents($url, false, stream_context_create(array(
- 'http' => array(
- 'method' => 'POST',
- 'header' => 'Content-type: application/x-www-form-urlencoded',
- 'content' => http_build_query(array('event' => '$cart_added',
- 'params' => '{
- "$name": "' . $name . '",
- "$url": "' . $detail_url . '",
- "$amount": "' . $quantity . '",
- "$img": "' . $picture . '",
- }',
- 'auth_token' => 'app.192.d9cbbe9c6e18072216f4ad7f08f059342628d12d8fd2c4f0'
- )),
- )
- )));
- return "";
- }
- class AuthorizeHandler
- {
- /**
- * @param $arFields
- *
- * Авторизуем пользователя по e-mail, если он ввел его вместо логина
- */
- function OnBeforeUserLoginHandler(&$arFields)
- {
- if (strpos($arFields['LOGIN'], "@") > 0) {
- $by = "id";
- $order = "desc";
- $rsUsers = CUser::GetList(
- $by,
- $order,
- array(
- "ACTIVE" => "Y",
- "EMAIL" => $arFields['LOGIN'],
- )
- );
- $arUsers = [];
- while ($arUser = $rsUsers->Fetch()) {
- $arUsers[] = $arUser['LOGIN'];
- }
- # Подставляем логин вместо email только в том случае, если на сайте только один пользователь с таким e-mail
- if (count($arUsers) == 1) {
- $arFields['LOGIN'] = end($arUsers);
- }
- }
- }
- }
- function OnEventLogGetAuditTypesHandler()
- {
- return array(
- 'PAYSYSTEM_EDIT' => '[PAYSYSTEM_EDIT] Изменение платежной системы',
- 'DELIVERY_EDIT' => '[DELIVERY_EDIT] Изменение службы доставки',
- 'PROPERS_ORDER_EDIT' => '[PROPERS_ORDER_EDIT] Изменение свойств заказа',
- 'STATUS_EDIT' => '[STATUS_EDIT] Изменение статусов',
- 'LOCATIONS_EDIT' => '[LOCATIONS_EDIT] Изменение местоположений',
- 'PRINT_FORMS_EDIT' => '[PRINT_FORMS_EDIT] Изменение настроек печатных форм',
- 'DISCOUT_EDIT' => '[DISCOUT_EDIT] Изменение скидок'
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement