но не сработал ни один из моих способов запуска
Я пробовал:
Очистить все кеши. -- не работает
записать в файл. -- не работает
записывать в базу данных. -- не работает
die() -- не работает
В моем коде ошибка?
Событие сработало, но код журнала не работает
Код: Выделить всё
db/events.php
Код: Выделить всё
defined('MOODLE_INTERNAL') || die();
use moodle_local_plugin\event\events_observer;
$observers = [
[
'eventname' => '\core\event\course_module_updated',
'callback' => 'events_observer::course_module_updated',
'includefile' => null,
'internal' => true,
'priority' => 9999
],
[
'eventname' => '\core\event\course_module_created',
'callback' => 'events_observer::course_module_updated',
'includefile' => null,
'internal' => true,
'priority' => 9999
],
];
Код: Выделить всё
classes/event/observer.php
Код: Выделить всё
namespace moodle_local_plugin\event;
defined('MOODLE_INTERNAL') || die();
class events_observer
{
/**
* Triggered when 'course_module_updated' event is triggered.
*
* @param \core\event\course_module_updated $event
* @return bool
*/
public static function course_module_updated(\core\event\course_module_updated $event)
{
global $DB, $CFG;
// Log to DB
$logdata = new \stdClass();
$logdata->eventname = $event->eventname;
$logdata->component = 'local_course_editor';
$logdata->action = 'updated';
$logdata->target = 'course_module';
$logdata->objectid = $event->objectid;
$logdata->timecreated = time();
$DB->insert_record('log', $logdata);
// Log the event data to a file
$logfile = $CFG->dirroot . '/local/moodle_local_plugin/log.txt';
$timestamp = date('Y-m-d H:i:s');
$eventData = json_encode($event->get_data(), JSON_PRETTY_PRINT);
$logMessage = "[{$timestamp}] Course module updated:\n{$eventData}\n\n";
file_put_contents($logfile, $logMessage, FILE_APPEND);
// end
die(var_dump($event));
// return true;
}
}
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-moodle