Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/CodeEventListener.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

class
CodeEventListener extends Repository
{
   
/**
     * @return Finder
     */
   
public function findListenersForList()
    {
       
$listeners = $this->finder('XF:CodeEventListener')
            ->
order(['addon_id', 'event_id', 'execute_order']);

        return
$listeners;
    }

    public function
getListenerCacheData()
    {
       
$listeners = $this->finder('XF:CodeEventListener')
            ->
whereAddOnActive(['disableProcessing' => true])
            ->
where('active', 1)
            ->
order(['event_id', 'execute_order', 'addon_id'])
            ->
fetch();

       
$cache = [];

        foreach (
$listeners AS $listener)
        {
           
$hint = $listener['hint'] ? $listener['hint'] : '_';
           
$cache[$listener['event_id']][$hint][] = [$listener['callback_class'], $listener['callback_method']];
        }

        return
$cache;
    }

    public function
rebuildListenerCache()
    {
       
$cache = $this->getListenerCacheData();
        \
XF::registry()->set('codeEventListeners', $cache);
        return
$cache;
    }
}