Доброго времени суток. Хотел бы узнать как можно расширить журнал событий для своего модуля? Например в функции модуля добавляю fn_log_event, собираю данные в message
fn_log_event(
'example_type',
'example_action',
array(
'message' => $message
)
);
Инициализирую хук (my_changes/init.php)
<?php
if (!defined('BOOTSTRAP')) {
die('Access denied');
}
fn_register_hooks(
'save_log'
);
Распределяю по собственному типу
function fn_my_changes_save_log($type, $action, $data, $user_id, &$content)
{
if ($type == 'example_type') {
$content['message'] = $data['message'];
}
}
Но данные не записываются, в чем может быть проблема?
Может, кому пригодится.
addon.xml
<functions>
<item for="install">fn_my_changes_addon_install</item>
<item for="uninstall">fn_my_changes_addon_uninstall</item>
</functions>
func.php
function fn_my_changes_addon_install()
{
fn_my_changes_add_logs();
}
function fn_my_changes_addon_uninstall()
{
$setting = Settings::instance()->getSettingDataByName('log_type_my_changes');
if (!$setting) {
return;
}
Settings::instance()->removeById($setting['object_id']);
}
function fn_my_changes_add_logs()
{
$setting_name = 'log_type_my_changes';
$setting = Settings::instance()->getSettingDataByName($setting_name);
$logging_section = Settings::instance()->getSectionByName('Logging');
$lang_codes = array_keys(Languages::getAll());
if ($setting) {
return;
}
$setting = array(
'name' => $setting_name,
'section_id' => $logging_section['section_id'],
'section_tab_id' => 0,
'type' => 'N',
'position' => 10,
'is_global' => 'N',
'edition_type' => 'ROOT,ULT:VENDOR',
);
$descriptions = [];
foreach ($lang_codes as $lang_code) {
$descriptions[] = [
'object_type' => Settings::SETTING_DESCRIPTION,
'lang_code' => $lang_code,
'value' => __('log_type_my_changes'),
];
}
$setting_id = Settings::instance()->update($setting, null, $descriptions, true);
foreach (fn_my_changes_get_actions() as $position => $variant) {
$variant_id = Settings::instance()->updateVariant(
[
'object_id' => $setting_id,
'name' => $variant,
'position' => $position
]
);
foreach ($lang_codes as $lang_code) {
$description = [
'object_id' => $variant_id,
'object_type' => Settings::VARIANT_DESCRIPTION,
'lang_code' => $lang_code,
'value' => __('log_action_' . $variant)
];
Settings::instance()->updateDescription($description);
}
}
Settings::instance()->updateValue($setting_name, '#M#my_action_1=Y&my_action_2=Y', 'Logging');
}
4 лайка