Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/AdminSearch/AdminNavigation.php
<?php

namespace XF\AdminSearch;

use
XF\Mvc\Entity\Entity;

class
AdminNavigation extends AbstractHandler
{
    public function
getDisplayOrder()
    {
        return
20;
    }

    public function
search($text, $limit, array $previousMatchIds = [])
    {
        if (!
$previousMatchIds)
        {
            return
$this->app->em()->getEmptyCollection();
        }

       
$finder = $this->app->finder('XF:AdminNavigation');

       
$finder
           
->where('navigation_id', $previousMatchIds)
            ->
order($finder->caseInsensitive('navigation_id'))
            ->
limit($limit);

       
$results = $finder->fetch();

       
$visitor = \XF::visitor();
       
$results = $results->filter(function($record) use ($visitor)
        {
            if (!
$record->link)
            {
                return
false;
            }
            if (
$record->admin_permission_id && !$visitor->hasAdminPermission($record->admin_permission_id))
            {
                return
false;
            }
            if (
$record->debug_only && !\XF::$debugMode)
            {
                return
false;
            }
            if (
$record->development_only && !\XF::$developmentMode)
            {
                return
false;
            }

            return
true;
        });

        return
$results;
    }

    public function
getRelatedPhraseGroups()
    {
        return [
'admin_navigation'];
    }

    public function
getTemplateData(Entity $record)
    {
       
/** @var \XF\Mvc\Router $router */
       
$router = $this->app->container('router.admin');

        return [
           
'link' => $router->buildLink($record->link),
           
'title' => $record->title,
           
'extra' => $record->navigation_id
       
];
    }
}