/** * Trigger new event. * * @internal to be used only from \core\event\base::trigger() method. * @param \core\event\base $event * * @throws \coding_Exception if used directly. */ public static function dispatch(\core\event\base $event) { if (during_initial_install()) { return; } if (!$event->is_triggered() or $event->is_dispatched()) { throw new \coding_exception('Illegal event dispatching attempted.'); } self::$buffer[] = $event; if (self::$dispatching) { return; } self::$dispatching = true; self::process_buffers(); self::$dispatching = false; }