uawdijnntqw1x1x1
IP : 216.73.216.30
Hostname : xhost1.intravision.ru
Kernel : Linux xhost1.intravision.ru 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
.
/
.
/
backup
/
.
/
.
/
.
/
external_www
/
new02.medcomp.ru
/
bitrix
/
.
/
php_interface
/
eventslog.php
/
/
<? use Bitrix\Main, Bitrix\Main\Loader, Bitrix\Main\Config\Option, Bitrix\Sale, Bitrix\Sale\Order, Bitrix\Main\Application, Bitrix\Sale\DiscountCouponsManager, Bitrix\Currency, Bitrix\Sale\Internals\CompanyTable; use Bitrix\Highloadblock as HL; use Bitrix\Main\Entity; if(!(Loader::IncludeModule('sale') && Loader::IncludeModule('catalog') && Loader::IncludeModule('iblock') && Loader::IncludeModule('highloadblock'))) die('eventslog.php error!'); AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("EventsLogClass", "OnAfterIBlockElementAddHandler")); AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("EventsLogClass", "OnBeforeIBlockElementUpdateHandler")); AddEventHandler("iblock", "OnAfterIBlockElementDelete", Array("EventsLogClass", "OnAfterIBlockElementDeleteHandler")); AddEventHandler("catalog", "OnBeforePriceUpdate", Array("EventsLogClass", "OnBeforePriceUpdateHandler")); AddEventHandler("iblock", "OnAfterIBlockSectionAdd", Array("EventsLogClass", "OnAfterIBlockSectionAddHandler")); AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate", Array("EventsLogClass", "OnBeforeIBlockSectionUpdateHandler")); AddEventHandler("iblock", "OnAfterIBlockSectionDelete", Array("EventsLogClass", "OnAfterIBlockSectionDeleteHandler")); AddEventHandler("main", "OnAfterUserAdd", Array("EventsLogClass", "OnAfterUserAddHandler")); AddEventHandler("main", "OnBeforeUserUpdate", Array("EventsLogClass", "OnBeforeUserUpdateHandler")); AddEventHandler("main", "OnUserDelete", Array("EventsLogClass", "OnUserDeleteHandler")); AddEventHandler("sale", "OnOrderAdd", Array("EventsLogClass", "OnOrderAddHandler")); AddEventHandler("sale", "OnSaleCancelOrder", Array("EventsLogClass", "OnSaleCancelOrderHandler")); AddEventHandler("sale", "OnOrderDelete", Array("EventsLogClass", "OnOrderDeleteHandler")); AddEventHandler("sale", "OnSaleBeforeStatusOrder", Array("EventsLogClass", "OnSaleBeforeStatusOrderHandler")); //AddEventHandler("sale", "OnBeforeBasketUpdate", Array("EventsLogClass", "OnBeforeBasketUpdateHandler")); AddEventHandler("sale", "OnSaleCalculateOrderProps", Array("EventsLogClass", "OnSaleCalculateOrderPropsHandler")); AddEventHandler("sale", "OnBeforeOrderUpdate", Array("EventsLogClass", "OnBeforeOrderUpdateHandler")); AddEventHandler("main", "OnAdminContextMenuShow", "MyOnAdminContextMenuShow"); function MyOnAdminContextMenuShow(&$items) { if(($GLOBALS["APPLICATION"]->GetCurPage(true) == "/bitrix/admin/highloadblock_rows_list.php")&&($_REQUEST['ENTITY_ID']==EventsLogClass::$ENTITY_ID)){ $items[] = array("TEXT"=>"Очистить журнал", "ICON"=>"", "TITLE"=>"Очистить журнал до определённой даты включительно", "LINK"=>"/local/tools/admin/eventslogclear.php"); } } class EventsLogClass { public static $ENTITY_ID = 10; public function hl_elem_add($ENTITY_ID, $arLoadProductArray){ $hlblock = Bitrix\Highloadblock\HighloadBlockTable::getById($ENTITY_ID)->fetch(); $entity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity( $hlblock ); $entity_data_class = $entity->getDataClass(); $result = $entity_data_class::add($arLoadProductArray); if($result->isSuccess()){ return $result->getId(); }else{ return $result->getErrors(); } } public function hlelem_info_list($entity_id, $sort=array("ID"=>"ASC"), $filter=array()){ $arResult = array(); $hlblock = Bitrix\Highloadblock\HighloadBlockTable::getById($entity_id)->fetch(); $entity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity( $hlblock ); $entity_data_class = $entity->getDataClass(); $entity_table_name = $hlblock['TABLE_NAME']; $sTableID = 'tbl_'.$entity_table_name; $rsData = $entity_data_class::getList(array( "select" => array('*'), "filter" => $filter, "order" => $sort )); $rsData = new CDBResult($rsData, $sTableID); while($arRes = $rsData->Fetch()){ $element = $arRes; $arResult[] = $element; } return $arResult; } public function user_info_by_id($id){ $element = array(); $order = array('sort' => 'asc'); $tmp = 'sort'; $rsUsers = CUser::GetList($order, $tmp, array('ID'=>$id), array('SELECT'=>array('UF_*'),'FIELDS'=>array())); if($arUser = $rsUsers->Fetch()){ $element = $arUser; } return $element; } public function get_enum_id_by_xml_id($xml_id, $USER_FIELD_ID){ $result = ''; $rsRes = CUserFieldEnum::GetList(array(), array( "XML_ID" => $xml_id, "USER_FIELD_ID" => $USER_FIELD_ID )); if($prop = $rsRes->GetNext()){ $result = $prop['ID']; } return $result; } public function GetOrderPropById($order_id, $prop_id){ $result = ''; $db_vals = CSaleOrderPropsValue::GetList( array("SORT" => "ASC"), array( "ORDER_ID" => $order_id, "ORDER_PROPS_ID" => $prop_id ) ); if ($arVals = $db_vals->Fetch()){ $result = $arVals['VALUE']; } return $result; } public function elem_info_by_id($iblock_id, $elem_id){ $r_elems = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$iblock_id, "ID" => $elem_id), false, false, Array('NAME','ID','ACTIVE','IBLOCK_ID','IBLOCK_SECTION_ID','DETAIL_PAGE_URL','PREVIEW_TEXT','DETAIL_TEXT','XML_ID','PREVIEW_PICTURE','DETAIL_PICTURE','PROPERTY_*','CATALOG_GROUP_1','CATALOG_GROUP_2','CATALOG_GROUP_3')); if ($ob = $r_elems->GetNextElement()){ $arFields = $ob->GetFields(); $arProps = $ob->GetProperties(); $section_res = CIBlockElement::GetElementGroups($arFields['ID'],false,array('ID')); $IBLOCK_SECTION = array(); while($arSect = $section_res->Fetch()){ $IBLOCK_SECTION[] = $arSect['ID']; } $element = $arFields; $element['IBLOCK_SECTION'] = $IBLOCK_SECTION; $element['PROPERTIES'] = $arProps; } return $element; } function order_info_by_id($order_id){ $rsSales = CSaleOrder::GetList(array("ID" => "ASC"), array('ID'=>$order_id),false,false,array('*')); if ($arOrder = $rsSales->Fetch()){ $element = $arOrder; } return $element; } function section_info_by_id($iblock_id, $section_id){ $r_sects = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$iblock_id, "ID" => $section_id), false, Array('NAME','ID','ACTIVE','IBLOCK_ID','IBLOCK_SECTION_ID','SECTION_PAGE_URL','DEPTH_LEVEL','DESCRIPTION','XML_ID','SORT','UF_*')); if ($sect = $r_sects->GetNext()){ $section = $sect; } return $section; } function OnAfterIBlockElementAddHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('ADD_IBLOCK_ELEM',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arLoadProductArray['UF_EVENT'] = 'Создан элемент инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] (xml_id:'.$arFields["XML_ID"].') ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ]'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnAfterIBlockElementDeleteHandler($arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('DELETE_IBLOCK_ELEM',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arLoadProductArray['UF_EVENT'] = 'Удалён элемент инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ](xml_id:'.$arFields["XML_ID"].')'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnBeforeIBlockElementUpdateHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_IBLOCK_ELEM',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($arFields["MODIFIED_BY"]); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arElem = EventsLogClass::elem_info_by_id($arFields['IBLOCK_ID'], $arFields['ID']); $arFieldsForTest = array('NAME','SORT','IBLOCK_SECTION','PREVIEW_TEXT','DETAIL_TEXT','XML_ID','ACTIVE'); $str_changes = ''; foreach($arFieldsForTest as $field){ $before = html_entity_decode(trim($arElem[$field])); $after = html_entity_decode(trim($arFields[$field])); if($field=='IBLOCK_SECTION'){ $match = true; foreach($arFields[$field] as $sec_id){ if(count($arFields[$field])==count($arElem[$field])){ if(!in_array($sec_id,$arElem[$field])){ $match = false; break; } }else{ $match = false; break; } } if($match===false){ $str_sections = ''; foreach($arFields[$field] as $sec_id){ $arSection = EventsLogClass::section_info_by_id($arFields['IBLOCK_ID'], $sec_id); if(strlen($str_sections)>0){ $str_sections .= ', '.$arSection['NAME']; }else{ $str_sections .= $arSection['NAME']; } } if(strlen($str_changes)>0){ $str_changes .= ', Разделы: '.$str_sections; }else{ $str_changes .= 'Разделы: '.$str_sections; } } }elseif($before!=$after){ /*echo '<pre>'; print_r(strlen($before).' Было : '.$before); echo '</pre>'; echo '<pre>'; print_r(strlen($after).' Стало: '.$after); echo '</pre>';*/ if(strlen($str_changes)>0){ $str_changes .= ', '.$field.': '.$arFields[$field]; }else{ $str_changes .= $field.': '.$arFields[$field]; } } } //Проверим свойства $str_changes_props = ''; foreach($arElem['PROPERTIES'] as $arProp){ if( ($arProp['PROPERTY_TYPE']=='F')|| ($arProp['USER_TYPE']=='HTML') ) continue; $change = false; $newPropValue = $arFields['PROPERTY_VALUES'][$arProp['ID']]; $newPropValue = array_values($newPropValue); if(count($newPropValue)>1){ $array = ''; foreach($newPropValue as $arVal){ if(empty($arVal['VALUE'])) continue; $arVal['VALUE'] = html_entity_decode(trim($arVal['VALUE'])); $array[] = $arVal['VALUE']; } $newPropValue = $array; }else{ $newPropValue[0]['VALUE'] = html_entity_decode(trim($newPropValue[0]['VALUE'])); $newPropValue = $newPropValue[0]['VALUE']; } if($arProp['PROPERTY_TYPE']=='L'){ $f = 'VALUE_ENUM_ID'; }else{ $f = 'VALUE'; } $oldPropValue = $arProp[$f]; if(!is_array($oldPropValue)){ $oldPropValue = html_entity_decode(trim($oldPropValue)); } if($newPropValue!=$oldPropValue){ /*echo '<pre>'; print_r('newPropValue:'); echo '</pre>'; echo '<pre>'; print_r(strlen($newPropValue).' '.$newPropValue); echo '</pre>'; echo '<pre>'; print_r('oldPropValue:'); echo '</pre>'; echo '<pre>'; print_r(strlen($oldPropValue).' '.$oldPropValue); echo '</pre>';*/ if(is_array($newPropValue)){ $str = ''; foreach($newPropValue as $val){ if(strlen($str)>0){ $str .= ', '.$val; }else{ $str .= $val; } } $newPropValue = $str; } if(strlen($str_changes_props)>0){ $str_changes_props .= '; '.$arProp['NAME'].': '.$newPropValue; }else{ $str_changes_props .= '; Изменились свойства: '.$arProp['NAME'].': '.$newPropValue; } } } if( (strlen($str_changes)>0)|| (strlen($str_changes_props)>0) ){ $arLoadProductArray['UF_EVENT'] = 'Изменён элемент инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ](xml_id:'.$arFields["XML_ID"].')'; if(strlen($str_changes)>0){ $arLoadProductArray['UF_EVENT'] .= 'Изменились поля: '.$str_changes; } if(strlen($str_changes_props)>0){ $arLoadProductArray['UF_EVENT'] .= $str_changes_props; } $arLoadProductArray['UF_EVENT'] .= ' - '.$_SERVER['PHP_SELF']. ' - '.$_SERVER['HTTP_REFERER']; /*echo '<pre>'; print_r($arFields); echo '</pre>'; echo '<pre>'; print_r('---------------------------'); echo '</pre>'; echo '<pre>'; print_r($arElem); echo '</pre>'; echo '<pre>'; print_r($arLoadProductArray); echo '</pre>'; die('!');*/ $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } } function OnBeforePriceUpdateHandler($ID, &$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_IBLOCK_ELEM',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $arElem = EventsLogClass::elem_info_by_id(2, $arFields['PRODUCT_ID']); if(intval($arElem['ID'])>0){ $PRICE_TYPE = 'розничная'; $PRICE_ID = 'CATALOG_PRICE_1'; $CURRENCY_ID = 'CATALOG_CURRENCY_1'; if(intval($arFields["CATALOG_GROUP_ID"])==2){ $PRICE_TYPE = 'оптовая'; $PRICE_ID = 'CATALOG_PRICE_2'; $CURRENCY_ID = 'CATALOG_CURRENCY_2'; }elseif(intval($arFields["CATALOG_GROUP_ID"])==3){ $PRICE_TYPE = 'специальная'; $PRICE_ID = 'CATALOG_PRICE_3'; $CURRENCY_ID = 'CATALOG_CURRENCY_3'; } $arLoadProductArray['UF_EVENT'] = 'Изменена '.$PRICE_TYPE.' цена у товара '.$arElem["NAME"].' ['.$arElem["ID"].']. Была '.$arElem[$PRICE_ID].' '.$arElem[$CURRENCY_ID].' Изменилась на '.$arFields['PRICE'].' '.$arFields['CURRENCY']; if( (floatval($arElem[$PRICE_ID])!=floatval($arFields['PRICE']))|| ($arElem[$CURRENCY_ID]!=$arFields['CURRENCY']) ){ $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnAfterIBlockSectionAddHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('ADD_IBLOCK_SECTION',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arLoadProductArray['UF_EVENT'] = 'Создан раздел инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ]'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnAfterIBlockSectionDeleteHandler($arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('DELETE_IBLOCK_SECTION',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arLoadProductArray['UF_EVENT'] = 'Удалён раздел инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ]'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnBeforeIBlockSectionUpdateHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_IBLOCK_SECTION',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($arFields["MODIFIED_BY"]); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $res = CIBlock::GetList( Array(), Array( 'ID'=>$arFields["IBLOCK_ID"] ), true ); if($arIBlock = $res->Fetch()){ if($arFields["ID"]>0){ $arSection = EventsLogClass::section_info_by_id($arFields['IBLOCK_ID'], $arFields['ID']); $arFieldsForTest = array('NAME','ACTIVE','IBLOCK_SECTION_ID','DESCRIPTION','SORT','XML_ID','UF_H1','UF_BROWSER_TITLE','UF_KEYWORDS','UF_META_DESCRIPTION','UF_VIEW','UF_FILTER','UF_COLUMN','F_VIEWMODE','UF_NO_MENU','UF_SORT_FIELD','UF_SORT_ORDER','UF_CANONICAL'); $str_changes = ''; foreach($arFieldsForTest as $field){ $before = html_entity_decode(trim($arSection[$field])); $after = html_entity_decode(trim($arFields[$field])); if($before!=$after){ /*echo '<pre>'; print_r(strlen($before).' Было : '.$before); echo '</pre>'; echo '<pre>'; print_r(strlen($after).' Стало: '.$after); echo '</pre>';*/ if(strlen($str_changes)>0){ $str_changes .= ', '.$field.': '.$arFields[$field]; }else{ $str_changes .= $field.': '.$arFields[$field]; } } } $arLoadProductArray['UF_EVENT'] = 'Изменён раздел инфоблока ( '.$arIBlock['CODE'].' ['.$arFields["IBLOCK_ID"].'] ) '.$arFields["NAME"].' [ id: '.$arFields["ID"].' ] Изменились поля: '.$str_changes; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnAfterUserAddHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('ADD_USER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($arFields["ID"]>0){ $arLoadProductArray['UF_EVENT'] = 'Создан новый пользователь с id: '.$arFields["ID"].' ( '.$arFields["LOGIN"].' )'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } function OnUserDeleteHandler($id) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('DELETE_USER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($id>0){ $arLoadProductArray['UF_EVENT'] = 'Удалён пользователь с id: '.$id; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } function OnBeforeUserUpdateHandler(&$arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_USER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($arFields["ID"]>0){ $arUser = EventsLogClass::user_info_by_id($arFields['ID']); $str_changes = ''; foreach($arFields as $field => $val){ $before = trim($arUser[$field]); if( ($field=='PERSONAL_COUNTRY')|| ($field=='WORK_COUNTRY') ){ if($before == 0){ $before = ''; } } $after = trim($val); if($after!=$before){ if(strlen($str_changes)>0){ $str_changes .= ' '.$field.': '.$val.';'; }else{ $str_changes .= ' Изменены поля: '.$field.': '.$val.';'; } } } if( (strlen($str_changes)>0) ){ $arLoadProductArray['UF_EVENT'] = 'Изменён пользователь с id: '.$arFields["ID"].' ('.$arFields["LOGIN"].');'; if(strlen($str_changes)>0){ $arLoadProductArray['UF_EVENT'] .= $str_changes; } /*echo '<pre>'; print_r($arFields); echo '</pre>'; echo '<pre>'; print_r('---------------------------'); echo '</pre>'; echo '<pre>'; print_r($arUser); echo '</pre>'; echo '<pre>'; print_r($arLoadProductArray); echo '</pre>'; die('!');*/ $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } function OnOrderAddHandler($ID, $arFields) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('ADD_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($ID>0){ $arLoadProductArray['UF_EVENT'] = 'Создан новый заказ с id: '.$ID; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } function OnOrderDeleteHandler($ID, $Success) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('DELETE_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($Success){ $arLoadProductArray['UF_EVENT'] = 'Удалён заказ с id: '.$ID; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } public function OnSaleCancelOrderHandler($ID, $value, $desc) { $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($ID>0){ $arLoadProductArray['UF_EVENT'] = 'Изменён заказ с id: '.$ID.' Поле отмена заказа стало: '.$value; if(strlen($desc)>0){ $arLoadProductArray['UF_EVENT'] .= ', Причина отмены: '.$desc; } $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } public function OnSaleBeforeStatusOrderHandler($ID, $val){ $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($ID>0){ $arOrder = EventsLogClass::order_info_by_id($ID); if($arOrder['STATUS_ID']!=$val){ $arStatus = CSaleStatus::GetByID($arOrder['STATUS_ID']); $old_status = $arStatus['NAME']; $arStatus = CSaleStatus::GetByID($val); $new_status = $arStatus['NAME']; $arLoadProductArray['UF_EVENT'] = 'Изменён заказ с id: '.$ID.' Статус заказа изменился с "'.$old_status.'" на "'.$new_status.'"'; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } public function OnBeforeBasketUpdateHandler($ID, &$arFields){ $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if($arFields['ORDER_ID']>0){ $arLoadProductArray['UF_EVENT'] = 'Изменён заказ с id: '.$arFields['ORDER_ID'].' Изменили корзину с товаром: "'.$arFields['NAME'].' цена '.$arFields['PRICE'].' '.$arFields['CURRENCY'].' кол-во '.$arFields['QUANTITY']; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } public function OnSaleCalculateOrderPropsHandler($arOrder){ $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; $BASKET_ID = intval($arOrder['BASKET_ITEMS'][0]['BASKET_ID']); $arBasket = CSaleBasket::GetByID($BASKET_ID); $arOrderBefore = CSaleOrder::GetByID($arBasket["ORDER_ID"]); $str_change = ''; foreach($arOrder['ORDER_PROP'] as $prop_id => $prop_val){ $before = EventsLogClass::GetOrderPropById($arBasket["ORDER_ID"],$prop_id); $after = $prop_val; if($before!=$after){ $str_change .= ' Свойство заказа с id: '.$prop_id.' изменилось с '.$before.' на '.$after.';'; } } /*echo '<pre>'; print_r($arOrder); echo '</pre>'; echo '<pre>'; print_r($arOrderBefore); echo '</pre>'; die('!');*/ if(strlen($str_change)>0){ $arLoadProductArray['UF_EVENT'] = 'Изменён заказ с id: '.$arBasket["ORDER_ID"].$str_change; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } public function OnBeforeOrderUpdateHandler($ID, $arFields){ $rsData = CUserTypeEntity::GetList( array('ID'=>'ASC'), array('ENTITY_ID'=>'HLBLOCK_'.EventsLogClass::$ENTITY_ID) ); if($arRes = $rsData->Fetch()){ $arLoadProductArray['UF_TYPE'] = EventsLogClass::get_enum_id_by_xml_id('EDIT_ORDER',$arRes["ID"]); } $arLoadProductArray['UF_DATE'] = date($GLOBALS['DB']->DateFormatToPHP(CSite::GetDateFormat("FULL"))); $arUser = EventsLogClass::user_info_by_id($GLOBALS['USER']->GetID()); $arLoadProductArray['UF_USER'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' ['.$arUser['LOGIN'].'] ('.$arUser['ID'].')'; if(intval($arFields['LOCKED_BY'])==0){ $arOrderBefore = CSaleOrder::GetByID($ID); $str_change = ''; $arIgnore = array('~VERSION','DATE_LOCK','LOCKED_BY'); foreach($arFields as $field => $val){ if(in_array($field,$arIgnore)) continue; $after = $val; $before = $arOrderBefore[$field]; if ($field == 'BASKET_ITEMS') { global $aGlobalPrices; $arIDS = array(); foreach($val as $dd) $arIDS[$dd['PRODUCT_ID']] = $aGlobalPrices[$dd['PRODUCT_ID']]; } if($after!=$before){ $str_change .= ' Поле заказа: '.$field.' изменилось с '.json_encode($before, JSON_UNESCAPED_UNICODE).' на '.json_encode($after, JSON_UNESCAPED_UNICODE).';'; } } $str_change .= 'price-'.json_encode($arIDS, JSON_UNESCAPED_UNICODE).';'; $str_change .= 'cof-'.getPriceLevel(null, 'kof').';'; /*echo '<pre>'; print_r($arFields); echo '</pre>'; echo '<pre>'; print_r($arOrderBefore); echo '</pre>'; die('!');*/ } if(strlen($str_change)>0){ $arLoadProductArray['UF_EVENT'] = 'Изменён заказ с id: '.$ID.$str_change; $result = EventsLogClass::hl_elem_add(EventsLogClass::$ENTITY_ID, $arLoadProductArray); } } } ?>
/var/././backup/./././external_www/new02.medcomp.ru/bitrix/./php_interface/eventslog.php