Как я могу запустить функцию, когда модуль курса добавляется или обновляется в Moodle?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу запустить функцию, когда модуль курса добавляется или обновляется в Moodle?

Сообщение Anonymous »

Я пытаюсь добавить наблюдателей в Course_module_updated и Course_module_created
но не сработал ни один из моих способов запуска
Я пробовал:
Очистить все кеши. -- не работает
записать в файл. -- не работает
записывать в базу данных. -- не работает
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»