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

namespace XF\Repository;

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

class
Editor extends Repository
{
   
/**
     * @return Finder
     */
   
public function findEditorDropdownsForList()
    {
        return
$this->finder('XF:EditorDropdown')
            ->
setDefaultOrder('display_order');
    }

    public function
getEditorDropdownCache()
    {
       
$db = $this->db();

       
$output = $db->fetchAllKeyed('
            SELECT cmd, icon, buttons
            FROM xf_editor_dropdown
            WHERE active = 1
            ORDER BY display_order
        '
, 'cmd');

       
$output = array_map(function($row)
        {
           
$row['buttons'] = (array)json_decode($row['buttons'], true);
            return
$row;
        },
$output);

        return
$output;
    }

    public function
rebuildEditorDropdownCache()
    {
       
$dropdownCache = $this->getEditorDropdownCache();

       
/** @var Option $optionRepo */
       
$optionRepo = $this->repository('XF:Option');
       
$optionRepo->updateOption('editorDropdownConfig', $dropdownCache);
    }

    public function
getToolbarTypes()
    {
       
/** @var \XF\Repository\Editor $editorRepo */
       
$editorRepo = $this->repository('XF:Editor');
       
$toolbarSizes = $editorRepo->getToolbarSizes();

        return [
           
'toolbarButtons' => [
               
'title' => \XF::phrase('large_toolbar'),
               
'description' => \XF::phrase('large_toolbar_desc', [
                   
'min' => $toolbarSizes['LG']
                ])
            ],
           
'toolbarButtonsMD' => [
               
'title' => \XF::phrase('medium_toolbar'),
               
'description' => \XF::phrase('medium_toolbar_desc', [
                   
'max' => $toolbarSizes['LG']-1,
                   
'min' => $toolbarSizes['MD']
                ])
            ],
           
'toolbarButtonsSM' => [
               
'title' => \XF::phrase('small_toolbar'),
               
'description' => \XF::phrase('small_toolbar_desc', [
                   
'max' => $toolbarSizes['MD']-1,
                   
'min' => $toolbarSizes['SM']
                ])
            ],
           
'toolbarButtonsXS' => [
               
'title' => \XF::phrase('extra_small_toolbar'),
               
'description' => \XF::phrase('extra_small_toolbar_desc', [
                   
'max' => $toolbarSizes['SM']
                ])
            ]
        ];
    }

    public function
getToolbarSizes()
    {
        return
$this->app()->container('editorToolbarSizes');
    }

    public function
getDefaultToolbarConfig($type): array
    {
       
$default = json_decode($this->db()->fetchOne("
            SELECT default_value
            FROM xf_option
            WHERE option_id = 'editorToolbarConfig'
        "
), true);

        return
$default[$type] ?? [];
    }
}