-
-
Save avshatalov48/b1566b5504a1b79075d904c0eb3dbd42 to your computer and use it in GitHub Desktop.
Logging price update delete etc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
AddEventHandler("catalog", "OnPriceUpdate", array("TestLogger", "OnPriceUpdate")); | |
AddEventHandler("catalog", "OnBeforePriceUpdate", array("TestLogger", "OnBeforePriceUpdate")); | |
AddEventHandler("catalog", "OnBeforePriceAdd", array("TestLogger", "OnBeforePriceAdd")); | |
AddEventHandler("catalog", "OnPriceAdd", array("TestLogger", "OnPriceAdd")); | |
AddEventHandler("catalog", "OnBeforePriceDelete", array("TestLogger", "OnBeforePriceDelete")); | |
AddEventHandler("catalog", "OnBeforeProductPriceDelete", array("TestLogger", "OnBeforeProductPriceDelete")); | |
/* | |
\Bitrix\Main\EventManager::getInstance()->addEventHandler( | |
'catalog', | |
'\Bitrix\Catalog\Model\Price::onBeforeDelete', | |
array("TestLogger", "OnBeforePriceDeleteD7") | |
); */ | |
//Bitrix\Catalog\PriceTable::deleteByProduct - delete with out event // delete on CIBLOCKELEMENT::DELETE | |
/* | |
\Bitrix\Main\EventManager::getInstance()->addEventHandler( | |
'catalog', | |
'OnBeforePriceDelete', | |
array("TestLogger", "OnBeforePriceDeleteD7") | |
); | |
\Bitrix\Main\EventManager::getInstance()->addEventHandler( | |
'catalog', | |
'OnPriceDelete', | |
array("TestLogger", "OnPriceDeleteD7") | |
); | |
\Bitrix\Main\EventManager::getInstance()->addEventHandler( | |
'catalog', | |
'\Bitrix\Catalog\Model\Price::onBeforeDelete', | |
array("TestLogger", "OnBeforePriceDeleteD7") | |
); | |
\Bitrix\Main\EventManager::getInstance()->addEventHandler( | |
'catalog', | |
'\Bitrix\Catalog\Price::onBeforeDelete', | |
array("TestLogger", "OnBeforePriceDeleteD7") | |
); | |
*/ | |
//BITRIX\CATALOG\MODEL\PRICE::ONBEFOREDELETE | |
if (!function_exists("logto")){ | |
function logto($var, $url="/log.txt", $append = false, $admin = false) | |
{ | |
$arg = func_get_args(); | |
if($arg[2] === true){ | |
$append = true; | |
}else{ | |
$append = false; | |
} | |
if($arg[3] === true){ | |
$admin = true; | |
}else{ | |
$admin = false; | |
} | |
unset($arg[0],$arg[1]); | |
$admin_enable = array( | |
"admin","ad","aa", | |
); | |
$append_enable = array( | |
"append","apend","aa","ap", | |
); | |
foreach($arg as $key=>$val){ | |
$val = strtolower($val); | |
if (in_array($val,$admin_enable)){ | |
$admin = true; | |
} | |
if (in_array($val,$append_enable)){ | |
$append = true; | |
} | |
} | |
if ($url === true){ | |
$url="/log.txt"; | |
}elseif(is_numeric($url)){ | |
$url="/log".$url.".txt"; | |
}elseif(substr($url, 0, 1) !== "/"){ | |
$url="/".$url; | |
} | |
if (is_bool($var)){ | |
if ($var === true){ | |
$var = 'true'; | |
}elseif($var === false){ | |
$var = 'false'; | |
} | |
} | |
if(!is_array($var) && !is_object($var)){ | |
if($ex = $GLOBALS["APPLICATION"]->GetException()){ | |
$strError = $ex->GetString(); | |
$var .= "\r\n".$strError; | |
} | |
$var = $var."\r\n"; | |
}else{ | |
if(is_array($var)){ | |
if($ex = $GLOBALS["APPLICATION"]->GetException()){ | |
$strError = $ex->GetString(); | |
$var['EXEPTION'] = $strError; | |
} | |
} | |
$var = var_export($var,true); | |
} | |
$io = CBXVirtualIo::GetInstance(); | |
$path = $io->ExtractPathFromPath($url); | |
$abs_path = $io->RelativeToAbsolutePath($path); | |
if(!$io->DirectoryExists($abs_path)){ | |
$bool = $io->CreateDirectory($abs_path); | |
} | |
$abs_url = $io->RelativeToAbsolutePath($url); | |
if ($admin){ | |
global $USER; | |
if(!is_object($USER)) | |
$USER = new CUser; | |
if ($USER->IsAdmin()){ | |
if ($append){ | |
file_put_contents($abs_url,$var, FILE_APPEND); | |
}else{ | |
file_put_contents($abs_url,$var); | |
} | |
} | |
}else{ | |
if ($append){ | |
file_put_contents($abs_url, $var, FILE_APPEND); | |
}else{ | |
file_put_contents($abs_url, $var); | |
} | |
} | |
} | |
} | |
global $TEST_LOGGER_ARRAY; | |
$TEST_LOGGER_ARRAY = array(116308, 116309, 116310, 116311, 116312); | |
function Is1C(){ | |
if(isset($_SESSION["BX_CML2_IMPORT"]) && count($_SESSION["BX_CML2_IMPORT"])>0){ | |
$STEP = $_SESSION["BX_CML2_IMPORT"]["NS"]["STEP"]; | |
if($STEP > 0 ){ | |
return true; | |
} | |
} | |
return false; | |
} | |
class TestLogger{ | |
function runLogger($product_id = false, $data = false, $func_name = false){ | |
$tmp = "log_"; | |
if($product_id){ | |
$tmp .= $product_id."_"; | |
}else{ | |
$tmp .= "all_"; | |
} | |
if(!$product_id){ | |
return true; | |
} | |
global $TEST_LOGGER_ARRAY; | |
if(!in_array($product_id, $TEST_LOGGER_ARRAY)){ | |
return true; | |
} | |
$tmp .= $func_name; | |
global $USER; | |
$user_id = "no_user"; | |
if(!is_object($USER)){ | |
$user_id = "no_user"; | |
}else{ | |
$user_id = $USER->GetID(); | |
} | |
$debug = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); | |
$arSave = array( | |
"time"=> date('d.m.Y H:i:s'), | |
"user_id"=>$user_id, | |
"data"=> $data, | |
"debug" => $debug, | |
//"1c_s"=>$_SESSION["BX_CML2_IMPORT"], | |
"1c"=>Is1C(), | |
); | |
logto($arSave, "/tmp/".$tmp.".txt",true); | |
} | |
function OnPriceUpdate($ID, $arFields){ | |
if(empty($arFields['PRODUCT_ID']) || empty($arFields['CATALOG_GROUP_ID'])){ | |
$data = CPrice::GetByID($ID); | |
$arFields['PRODUCT_ID'] = $data['PRODUCT_ID']; | |
$arFields['CATALOG_GROUP_ID'] = $data['CATALOG_GROUP_ID']; | |
} | |
self::runLogger($arFields['PRODUCT_ID'], array($ID, $arFields) ,'OnPriceUpdate'); | |
return true; | |
} | |
function OnBeforePriceUpdate($ID, $arFields){ | |
if(empty($arFields['PRODUCT_ID']) || empty($arFields['CATALOG_GROUP_ID'])){ | |
$data = CPrice::GetByID($ID); | |
$arFields['PRODUCT_ID'] = $data['PRODUCT_ID']; | |
$arFields['CATALOG_GROUP_ID'] = $data['CATALOG_GROUP_ID']; | |
} | |
self::runLogger($arFields['PRODUCT_ID'], array($ID, $arFields) ,'OnBeforePriceUpdate'); | |
return true; | |
} | |
function OnBeforePriceAdd($arFields){ | |
self::runLogger($arFields['PRODUCT_ID'], $arFields ,'OnBeforePriceAdd'); | |
return true; | |
} | |
function OnPriceAdd($ID, $arFields){ | |
if(empty($arFields['PRODUCT_ID']) || empty($arFields['CATALOG_GROUP_ID'])){ | |
$data = CPrice::GetByID($ID); | |
$arFields['PRODUCT_ID'] = $data['PRODUCT_ID']; | |
$arFields['CATALOG_GROUP_ID'] = $data['CATALOG_GROUP_ID']; | |
} | |
self::runLogger($arFields['PRODUCT_ID'], array($ID, $arFields), 'OnPriceAdd'); | |
return true; | |
} | |
function OnBeforePriceDelete($ID){ | |
$arFields = CPrice::GetByID($ID); | |
self::runLogger($arFields['PRODUCT_ID'], array($ID, $arFields), 'OnBeforePriceDelete'); | |
return true; | |
} | |
function OnBeforeProductPriceDelete($ProductID, $arExceptionIDs){ | |
$arPrices = array(); | |
$db_res = CPrice::GetList( | |
array(), | |
array( | |
"PRODUCT_ID" => $ProductID, | |
) | |
); | |
while ($ar_res = $db_res->Fetch()) | |
{ | |
$arPrices[] = $ar_res; | |
} | |
self::runLogger($ProductID, array($ProductID, $arExceptionIDs,$arPrices), 'OnBeforeProductPriceDelete'); | |
return true; | |
} | |
function OnPriceDelete($ID){ | |
//logto($ID,1); | |
//pre($ID); die(); | |
} | |
function OnBeforePriceDeleteD7($event){ | |
//$arFields = $event->getParameters(); | |
//logto($arFields,1); | |
//pre($arFields); die(); | |
} | |
function OnPriceDeleteD7($event){ | |
//$arFields = $event->getParameters(); | |
//logto($arFields,2); | |
//pre($arFields); die(); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment