[QUOTE]
Сергей . написал:
возможно init.php[/QUOTE]
<?php
use Bitrix\Sale;
use Bitrix\Main\Loader;
AddEventHandler("main", "OnBeforeUserLogin", ["CUserEx", "OnBeforeUserLogin"]);
AddEventHandler("main", "OnBeforeUserRegister", ["CUserEx", "OnBeforeUserRegister"]);
AddEventHandler("main", "OnBeforeUserRegister", ["CUserEx", "OnBeforeUserUpdate"]);
AddEventHandler("sale", "OnOrderNewSendEmail", "orderNewSendEmail");
function orderNewSendEmail($id, &$eventName, &$arFields)
{
$arFields['EMAIL_BODY'] = "";
}
class CUserEx
{
function OnBeforeUserLogin($arFields)
{
$filter = ["EMAIL" => $arFields["LOGIN"]];
$rsUsers = CUser::GetList(($by = "LAST_NAME"), ($order = "asc"), $filter);
if ($user = $rsUsers->GetNext()) {
$arFields["LOGIN"] = $user["LOGIN"];
// $arr = explode("@",$arFields["EMAIL"]);
// $arFields["LOGIN"] = $arr[0];
} else {
// $arFields["LOGIN"] = ""; //- для запрета авторизации по Логину
}
}
function OnBeforeUserRegister($arFields)
{
$arFields["LOGIN"] = $arFields["EMAIL"];
}
}
function OnOrderNewSendEmailRWF($ID, &$eventName, &$arFields)
{
return false;
$order = Sale\Order::load($ID);
$deliveryCollection = $order->getShipmentCollection();
foreach ($deliveryCollection as $delivery) {
$arDeliv = CSaleDelivery::GetByID($delivery->getDeliveryId());
$arFields['ORDER_LIST'] .= '<br>'.strip_tags($arDeliv['DESCRIPTION']);
$delivery_price = $order->getDeliveryPrice();
$delivery_currency = $order->getCurrency();
if(LANGUAGE_ID == 'ru') {
$arFields['ORDER_LIST'] .= ' - 1 pcs.: '.CurrencyFormat($delivery_price, $delivery_currency);
} else {
$arFields['ORDER_LIST'] .= ' - 1 шт.: '.CurrencyFormat($delivery_price, $delivery_currency);
}
break;
}
$first_product_name = "";
$city_name = "";
$dbBasketItems = CSaleBasket::GetList([
"NAME" => "ASC",
"ID" => "ASC"
], [
"LID" => SITE_ID,
"ORDER_ID" => $ID
], false, false, ["ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "PRODUCT_PROVIDER_CLASS"]);
if ($arItems = $dbBasketItems->Fetch()) {
//var_dump($arItems);
$res = CIBlockElement::GetByID($arItems["PRODUCT_ID"]);
if ($ar_res = $res->GetNext()) {
$first_product_name = $ar_res['NAME'];
}
}
//var_dump($arFields);
$db_props = CSaleOrderPropsValue::GetOrderProps($ID);
while ($arProps = $db_props->Fetch()) {
if ($arProps["PROP_ID"] != 5) {
continue;
}
$city_name = $arProps["VALUE"];
//var_dump($arProps);
}
$arFields["FPNAME"] = $first_product_name;
$arFields["SITY_NAME"] = $city_name;
//exit;
$newDate = split(' ', $arFields["ORDER_DATE"]);
$arFields["ORDER_DATE"] = $newDate[0];
//file_put_contents(dirname(__FILE__)."/logir.log", print_r($arFields, true), FILE_APPEND);
}
AddEventHandler("sale", "OnOrderNewSendEmail", "OnOrderNewSendEmailRWF", 1);
if (isset($_GET['noinitRealweb']) && !empty($_GET['noinitRealweb'])) {
$strNoInit = strval($_GET['noinitRealweb']);
if ($strNoInit == 'N') {
if (isset($_SESSION['NO_INIT'])) {
unset($_SESSION['NO_INIT']);
}
} elseif ($strNoInit == 'Y') {
$_SESSION['NO_INIT'] = 'Y';
}
}
if (!(isset($_SESSION['NO_INIT']) && $_SESSION['NO_INIT'] == 'Y')) {
$classesDir = str_replace($_SERVER["DOCUMENT_ROOT"], '', __DIR__)."/classes";
CModule::AddAutoloadClasses('', [
'SiteWrapper' => '/local/php_interface/classes/SiteWrapper.php',
'CUserTypeHLHtmlField' => '/local/php_interface/classes/CUserTypeHLHtmlField.php',
]);
AddEventHandler("main", "OnProlog", ["SiteWrapper", "setSortCatalogField"], 10);
AddEventHandler("main", "OnProlog", ["SiteWrapper", "setCookieCatalogView"], 10);
AddEventHandler("main", "OnProlog", ["SiteWrapper", "isDefaultPage"], 10);
AddEventHandler('main', 'OnUserTypeBuildList', ['CUserTypeHLHtmlField', 'GetUserTypeDescription'], 6000);
}
// AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice");
// global $LocalPrice;
// $LocalPrice = 0;
// function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false)
// {
// global $LocalPrice;
// if($LocalPrice <= 0)
// {
// // Выведем актуальную корзину для текущего пользователя
// $dbBasketItems = CSaleBasket::GetList(false,
// array(
// "FUSER_ID" => CSaleBasket::GetBasketUserID(),
// "LID" => SITE_ID,
// "ORDER_ID" => "NULL"
// ),
// false,
// false,
// array("ID", "MODULE", "PRODUCT_ID", "CALLBACK_FUNC", "QUANTITY", "DELAY", "CAN_BUY", "PRICE")
// );
// while ($arItem = $dbBasketItems->Fetch())
// {
// if($arItem['DELAY'] == 'N' && $arItem['CAN_BUY'] == 'Y')
// {
// $LocalPrice += $arItem['PRICE']*$arItem['QUANTITY'];
// }
// }
// }
// //ОПТ 1 при сумме заказа до 10 000 рублей
// //ОПТ 2 при сумме заказа до 20 000 рублей
// //ОПТ 3 при сумме заказа более 20 000 рублей
// // получаем все типы цен, возможные для данного товара
// $arOptPrices = CCatalogProduct::GetByIDEx($productID);
// if($LocalPrice < 10000){
// $price = $arOptPrices['PRICES'][1]['PRICE'];
// $catalog_group_id = 1;
// }
// elseif($LocalPrice >= 10000 and $LocalPrice < 20000){
// $price = $arOptPrices['PRICES'][2]['PRICE'];
// $catalog_group_id = 2;
// }
// elseif($LocalPrice >= 20000){
// $price = $arOptPrices['PRICES'][3]['PRICE'];
// $catalog_group_id = 3;
// }
// return array(
// 'PRICE' => array(
// "ID" => $productID,
// 'CATALOG_GROUP_ID' => $catalog_group_id,
// 'PRICE' => $price,
// 'CURRENCY' => "RUB",
// 'ELEMENT_IBLOCK_ID' => $productID,
// 'VAT_INCLUDED' => "Y",
// ),
// 'DISCOUNT' => array(
// 'VALUE' => $discount,
// 'CURRENCY' => "RUB",
// ),
// );
// }
if (!function_exists("getSaleFilter")) {
function getSaleFilter()
{
$return = ["ID" => []];
if (CModule::IncludeModule("catalog")) {
$discounts = [];
$objDiscount = new CCatalogDiscount();
if ($res = $objDiscount->GetDiscountProductsList([], ["ACTIVE" => "Y"], false, false, ["*", "ACTIVE"])) {
while ($ob = $res->GetNext()) {
$discounts[$ob["DISCOUNT_ID"]][] = $ob["PRODUCT_ID"];
}
}
$arFilter = ['ID' => array_keys($discounts)];
$dbCoupon = $objDiscount->GetList([], $arFilter);
while ($arCoupon = $dbCoupon->Fetch()) {
if ($arCoupon["ACTIVE"] !== "Y") {
unset($discounts[$arCoupon["ID"]]);
}
}
foreach ($discounts as $item) {
$return["ID"] = array_merge($return["ID"], $item);
}
}
return $return;
}
}
AddEventHandler("main", "OnBeforeUserAdd", Array("EventsUser", "OnBeforeUserAddHandler"));
class EventsUser
{
// создаем обработчик события "OnBeforeUserAdd"
function OnBeforeUserAddHandler(&$arFields)
{
if(!$arFields["GROUP_ID"]) {
$LIST_LANGUAGE = array('en', 6, 'cs', 7, 'de', 8, 'ru', 5, 'la', 9, 'es', 10 ,'pt', 11,'it', 12,'fi', 13,'nl', 19,'fr', 14,'se', 18,'dk', 17,'no', 16, 'pl', 15);
$key = array_search(LANGUAGE_ID,$LIST_LANGUAGE);
$arFields["GROUP_ID"] = [$LIST_LANGUAGE[$key+1]];
}
}
}
//вырезаем type="text/javascript"
AddEventHandler("main", "OnEndBufferContent", "removeType");
function removeType(&$content)
{
$content = replace_output($content);
}
function replace_output($d)
{
return str_replace(' type="text/javascript"', "", $d);
}
/* Last Modified */
/*AddEventHandler('main', 'OnEpilog', array('CBDPEpilogHooks', 'CheckIfModifiedSince'));
class CBDPEpilogHooks
{
function CheckIfModifiedSince()
{
GLOBAL $lastModified;
if (!$lastModified) $lastModified=getlastmod();
if ($lastModified)
{
header("Cache-Control: public");
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModified) {
$GLOBALS['APPLICATION']->RestartBuffer();CHTTP::SetStatus('304 Not Modified');
exit();
/*header('HTTP/1.1 304 Not Modified');
exit;*/
/* }
}
}
}*/
/*
header("Expires: ".gmdate("D, d M Y H:i:s", time() - 1)." GMT");
$LastModified_unix = 1294844676;
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) {
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
}
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
}
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');
exit;
}
header('Last-Modified: '.$LastModified);
*/
if(!headers_sent())
{
header("Content-type: text/html; charset=".LANG_CHARSET);
/**
* Last Modified
**/
if(CModule::IncludeModule("iblock"))
{
$arFilter = Array("ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'CODE' => $_REQUEST['CODE']);
$res = CIBlockElement::GetList(Array(), $arFilter, false);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
}
}
$last_modified_time = (!empty($arFields)) ? strtotime($arFields['TIMESTAMP_X']) : filemtime(__FILE__);
header("Cache-Control: public");
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified_time)
{
header('HTTP/1.1 304 Not Modified'); exit();
}
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_modified_time).' GMT');
}
?>