История изменений не отслеживает items::update_by_id
История изменений не отслеживает items::update_by_id
Здравствуйте.
Столкнулся с проблемой, есть несколько кастомных форм/плагинов, которые работают с базой через items::update_by_id($entity_id,$item_id,$data); , но в таком случае изменения не попадают в отчёт "Истории изменений". До этого форма работала через API, изменения попадали в отчёт, но решил переписать форму на более нативный PHP и столкнулся с такой проблемой.
Собственно вопрос, есть ли возможность обновлять значения через php функцию чтобы они трекались в "Истории изменений"?
Столкнулся с проблемой, есть несколько кастомных форм/плагинов, которые работают с базой через items::update_by_id($entity_id,$item_id,$data); , но в таком случае изменения не попадают в отчёт "Истории изменений". До этого форма работала через API, изменения попадали в отчёт, но решил переписать форму на более нативный PHP и столкнулся с такой проблемой.
Собственно вопрос, есть ли возможность обновлять значения через php функцию чтобы они трекались в "Истории изменений"?
- Fait
- Инвестор
- Сообщения: 1077
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: История изменений не отслеживает items::update_by_id
Да, есть такое.
По смыслу то должно обновляться, конечно.
Но этого не происходит.
Как вариант, можно добавить код, который будет напрямую в базу записывать в историю изменений все изменения
По смыслу то должно обновляться, конечно.
Но этого не происходит.
Как вариант, можно добавить код, который будет напрямую в базу записывать в историю изменений все изменения
- Antonyous99
- Сообщения: 703
- Зарегистрирован: 18 авг 2019, 09:22
- Имя: Антон Владимирович
- Откуда: Санкт-Петербург
- Организация: ООО "РИКОМ-Сервис"
- Контактная информация:
Re: История изменений не отслеживает items::update_by_id
А помоему это перебор каждый инсерт и апдейт в историю писать.
Хотя есть же к функции items::update_by_id опцинальный параметр
что снижает нагрузку на сервер.
Можно было бы тут про запись в исторю добавить.
Хотя есть же к функции items::update_by_id опцинальный параметр
Код: Выделить всё
['run_email_rules'=>false,'run_process'=>false]
Можно было бы тут про запись в исторю добавить.
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
ERP/CRM "под ключ"
Re: История изменений не отслеживает items::update_by_id
А не подскажете код? Я вчера игрался с подсмотренным в модуле API и других модулях кодом типа:
Код: Выделить всё
if(isset($_POST['update_fix_price'])) {
$entity_id = 40;
$item_id = $_POST['id'];
// Get current item info before update for track changes
$item_info_query = db_query("select * from app_entity_" . $entity_id . " where id='" . $item_id . "'");
$item_info = db_fetch_array($item_info_query);
$data = [
'field_578' => $_POST['price'],
'field_783' => time()
];
// Perform the update
items::update_by_id($entity_id, $item_id, $data);
// Log changes
$log = new track_changes($entity_id, $item_id);
$log->log_update($item_info);
exit;
}
- Fait
- Инвестор
- Сообщения: 1077
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: История изменений не отслеживает items::update_by_id
Да не, вы напрямую в БД запрос посылайте.
Типа
И так же записать изменённые поля в другую таблицу, в которой поля указаны (не помню, как называется).
Так-то интересно, я наверное скоро тоже поиграюсь с этим функционалом)
Типа
Код: Выделить всё
db_query('insert into app_track_changes (поля из бд) values (значения полей)');
Так-то интересно, я наверное скоро тоже поиграюсь с этим функционалом)
Re: История изменений не отслеживает items::update_by_id
В общем работает вот так (там захардкожен report_id = 1, ну и обновляемые поля):
Хотя только что увидел что оно нормально не трекает юзера, вместо имени пишет "Public Form" и в базе значение created_by = 0, так что ещё нужно подправить.
Код: Выделить всё
if(isset($_POST['update_fix_price'])) {
global $app_user;
$entity_id = 40;
$item_id = $_POST['id'];
// Get current item info before update
$item_info_query = db_query("select e.* from app_entity_" . $entity_id . " e where e.id='" . $item_id . "'");
$item_info = db_fetch_array($item_info_query);
// Do the update
db_perform('app_entity_' . $entity_id, array(
'field_578' => $_POST['price'],
'field_783' => time(),
'date_updated' => time()
), 'update', "id='" . db_input($item_id) . "'");
// Log change and field
db_perform('app_ext_track_changes_log', array(
'reports_id' => 1,
'type' => 'update',
'entities_id' => $entity_id,
'items_id' => $item_id,
'date_added' => time(),
'created_by' => $app_user['id']
));
db_perform('app_ext_track_changes_log_fields', array(
'log_id' => db_insert_id(),
'fields_id' => 578,
'value' => $_POST['price'],
'previous_value' => $item_info['field_578']
));
exit;
}
Re: История изменений не отслеживает items::update_by_id
В общем понял, в Custom PHP (я туда эту функцию запихнул, чтобы использовать sitewide) переменная $app_user не работает, потому нужно либо вызывать эту функцию из плагина, либо передавать переменную юзера из формы.
////
Перенёс фукнцию в плагин вместо кастоминого php, переменнар $app_user работает нормально, история изменения заносится корректно.
////
Перенёс фукнцию в плагин вместо кастоминого php, переменнар $app_user работает нормально, история изменения заносится корректно.
- Fait
- Инвестор
- Сообщения: 1077
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: История изменений не отслеживает items::update_by_id
Главное, чтобы работало)
Хотя, код можно и попроще сделать, без db_perform и пр.
Хотя, код можно и попроще сделать, без db_perform и пр.