Moodle 活动 API

Moodle Events API

我正在尝试为 Moodle 开发一个插件,使用事件 API 将在创建新博客 post 时发送电子邮件。我用以下结构创建了我的插件:

blog_observer/
├── classes
│   └── observer.php
├── db
│   └── events.php
└── version.php

db/events.php:

defined('MOODLE_INTERNAL') || die();

$observers = array(
    array(
        'eventname'   => '\core\event\blog_entry_created',
        'callback'    => '\blog_observer\blog_observer::blog_created',
    ),
);

我从这里得到了事件名称 /blog/locallib.php

classes/observer.php:

namespace blog_observer;

defined('MOODLE_INTERNAL') || die();

class blog_observer {

    /**
     * The observer monitoring all the events.
     *
     * @param \core\event\base $event event object.
     * @return bool
     */
    public static function blog_created(\core\event\base $event) {
        file_put_contents('php://stderr', print_r("observed an event", TRUE));

        return false;

    }
}

但是我没有看到那个日志,好像它甚至没有到达那个 class,为什么?

我明白了,是命名空间...

所以更新的文件是(我也将我的插件重命名为newsletter):

newsletter/
├── classes
│   └── observer.php
├── db
│   └── events.php
└── version.php

db/events.php:

defined('MOODLE_INTERNAL') || die();

$observers = array(
    array(
        'eventname'   => '\core\event\blog_entry_created',
        'callback'    => '\local_newsletter\observer::blog_created',
    ),
);

classes/observer.php:

namespace local_newsletter;

defined('MOODLE_INTERNAL') || die();

class observer {

// The rest is same here

}