2020-09-25 12:17:29 +03:00
< ? php
2022-03-02 15:40:53 +03:00
use Bitrix\Main\Loader ;
2024-10-23 17:05:39 +03:00
use Bitrix\Main\Config\Option ;
2025-03-05 10:33:10 +03:00
use Bitrix\Main\Application ;
2020-09-25 12:17:29 +03:00
2025-03-05 10:33:10 +03:00
function update ()
2021-09-08 10:05:09 +03:00
{
2025-03-05 10:33:10 +03:00
Loader :: includeModule ( 'sale' );
Loader :: includeModule ( 'highloadblock' );
Option :: set ( 'intaro.retailcrm' , 'api_version' , 'v5' );
2022-03-02 15:40:53 +03:00
2025-03-05 10:33:10 +03:00
customFieldsCheck ();
addEventSaveOrder ();
loadJsExport ();
2022-03-02 15:40:53 +03:00
}
2020-09-25 12:17:29 +03:00
2025-03-05 10:33:10 +03:00
function loadJsExport ()
2021-09-08 10:05:09 +03:00
{
2025-03-05 10:33:10 +03:00
$pathFrom = $_SERVER [ 'DOCUMENT_ROOT' ] . '/bitrix/modules/intaro.retailcrm/install/export/bitrix/js/intaro/export' ;
2022-03-02 15:40:53 +03:00
2025-03-05 10:33:10 +03:00
CopyDirFiles (
$pathFrom ,
$_SERVER [ 'DOCUMENT_ROOT' ] . '/bitrix/js/intaro/export/' ,
true ,
true ,
false
);
2020-09-25 12:17:29 +03:00
}
2022-03-02 15:40:53 +03:00
2025-03-05 10:33:10 +03:00
function customFieldsCheck ()
2022-03-02 15:40:53 +03:00
{
2025-03-05 10:33:10 +03:00
$option = Option :: get ( 'intaro.retailcrm' , 'custom_fields_toggle' , null );
2022-03-02 15:40:53 +03:00
2025-03-05 10:33:10 +03:00
if ( ! $option ) {
Option :: set ( 'intaro.retailcrm' , 'custom_fields_toggle' , 'N' );
2022-06-28 15:28:28 +03:00
}
2022-03-02 15:40:53 +03:00
}
2025-03-05 10:33:10 +03:00
function addEventSaveOrder ()
2023-08-22 13:09:20 +03:00
{
2025-03-05 10:33:10 +03:00
$loyaltyEventClass = 'Intaro\RetailCrm\Component\Handlers\EventsHandlers' ;
$connection = Application :: getConnection ();
$sqlHelper = $connection -> getSqlHelper ();
$query = sprintf (
" SELECT COUNT(*) FROM b_module_to_module WHERE FROM_MODULE_ID = '%s' AND TO_MODULE_ID = '%s' AND MESSAGE_ID = '%s' and TO_CLASS = '%s' AND TO_METHOD = '%s' " ,
$sqlHelper -> forSql ( 'sale' ),
$sqlHelper -> forSql ( 'intaro.retailcrm' ),
$sqlHelper -> forSql ( 'OnSaleOrderSaved' ),
$sqlHelper -> forSql ( 'RetailCrmEvent' ),
$sqlHelper -> forSql ( 'orderSave' )
);
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
$result = $connection -> queryScalar ( $query );
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
if ( $result <= 0 ) {
RegisterModuleDependences ( 'sale' , 'OnSaleOrderSaved' , 'intaro.retailcrm' , 'RetailCrmEvent' , 'orderSave' , 99 );
2023-08-22 13:09:20 +03:00
}
2025-03-05 10:33:10 +03:00
if ( Option :: get ( 'intaro.retailcrm' , 'loyalty_program_toggle' ) !== 'Y' ) {
$query = sprintf (
" SELECT COUNT(*) FROM b_module_to_module WHERE FROM_MODULE_ID = '%s' AND TO_MODULE_ID = '%s' AND MESSAGE_ID = '%s' and TO_CLASS = '%s' AND TO_METHOD = '%s' " ,
$sqlHelper -> forSql ( 'sale' ),
$sqlHelper -> forSql ( 'intaro.retailcrm' ),
$sqlHelper -> forSql ( 'OnSaleOrderSaved' ),
$sqlHelper -> forSql ( $loyaltyEventClass ),
$sqlHelper -> forSql ( 'OnSaleOrderSavedHandler' )
2023-08-22 13:09:20 +03:00
);
2025-03-05 10:33:10 +03:00
$result = $connection -> queryScalar ( $query );
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
if ( $result > 0 ) {
UnRegisterModuleDependences ( 'sale' , 'OnSaleOrderSaved' , 'intaro.retailcrm' , $loyaltyEventClass , 'OnSaleOrderSavedHandler' );
}
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
$query = sprintf (
" SELECT COUNT(*) FROM b_module_to_module WHERE FROM_MODULE_ID = '%s' AND TO_MODULE_ID = '%s' AND MESSAGE_ID = '%s' and TO_CLASS = '%s' AND TO_METHOD = '%s' " ,
$sqlHelper -> forSql ( 'sale' ),
$sqlHelper -> forSql ( 'intaro.retailcrm' ),
$sqlHelper -> forSql ( 'OnSaleComponentOrderResultPrepared' ),
$sqlHelper -> forSql ( $loyaltyEventClass ),
$sqlHelper -> forSql ( 'OnSaleComponentOrderResultPreparedHandler' )
);
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
$result = $connection -> queryScalar ( $query );
2023-08-22 13:09:20 +03:00
2025-03-05 10:33:10 +03:00
if ( $result > 0 ) {
UnRegisterModuleDependences ( 'sale' , 'OnSaleComponentOrderResultPrepared' , 'intaro.retailcrm' , $loyaltyEventClass , 'OnSaleComponentOrderResultPreparedHandler' );
2023-08-22 13:09:20 +03:00
}
}
}
2022-03-02 15:40:53 +03:00
try {
update ();
2025-03-05 10:33:10 +03:00
} catch ( \Throwable $exception ) {
print_r ( $exception -> getMessage ());
CEventLog :: Add ([
" SEVERITY " => " ERROR " ,
" AUDIT_TYPE_ID " => " UPDATE_MODULE " ,
" MODULE_ID " => " intaro.retailcrm " ,
" DESCRIPTION " => sprintf ( 'Error by processing updater.php: %s' , $exception -> getMessage ()),
]);
2022-03-02 15:40:53 +03:00
return ;
}