Skip to content

Instantly share code, notes, and snippets.

@JamesBondsky
Forked from EscApp2/init.php
Created February 12, 2021 18:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JamesBondsky/c62eefabc18f0514b223931b378de0b6 to your computer and use it in GitHub Desktop.
Save JamesBondsky/c62eefabc18f0514b223931b378de0b6 to your computer and use it in GitHub Desktop.
Logging price update delete etc
<?
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