Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Data/CodeLanguage.php
<?php

namespace XF\Data;

use
XF\Util\Arr;

class
CodeLanguage
{
    public function
getSupportedLanguages($filterDisabled = false)
    {
       
$languages = [
           
'apacheconf' => [],
           
'bash' => [
               
'modes' => 'shell'
           
],
           
'c' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-csrc'
           
],
           
'clike' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-csrc'
           
],
           
'coffeescript' => [
               
'modes' => 'coffeescript'
           
],
           
'cpp' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-c++src'
           
],
           
'csharp' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-csharp'
           
],
           
'css' => [
               
'modes' => 'css',
               
'common' => true,
            ],
           
'diff' => [
               
'modes' => 'diff'
           
],
           
'html' => [
               
'addons' => [
                   
'edit/closetag',
                   
'fold/xml-fold'
               
],
               
'config' => [
                   
'autoCloseTags' => true
               
],
               
'modes' => [
                   
'htmlmixed',
                   
'css',
                   
'javascript',
                   
'xml'
               
],
               
'common' => true
           
],
           
'http' => [
               
'modes' => 'http'
           
],
           
'ini' => [],
           
'java' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-java'
           
],
           
'javascript' => [
               
'modes' => 'javascript',
               
'common' => true
           
],
           
'json' => [
               
'modes' => 'javascript',
               
'config' => [
                   
'json' => true
               
]
            ],
           
'less' => [
               
'modes' => 'css',
               
'mime' => 'text/x-less'
           
],
           
'makefile' => [],
           
'markdown' => [
               
'addons' => [
                   
'mode/overlay',
                   
'edit/closetag',
                   
'fold/markdown-fold',
                   
'fold/xml-fold'
               
],
               
'config' => [
                   
'autoCloseTags' => true
               
],
               
'modes' => [
                   
'gfm',
                   
'clike',
                   
'css',
                   
'htmlmixed',
                   
'javascript',
                   
'markdown',
                   
'php',
                   
'xml'
               
]
            ],
           
'nginx' => [
               
'modes' => 'nginx'
           
],
           
'objectivec' => [
               
'modes' => 'clike',
               
'mime' => 'text/x-objectivec'
           
],
           
'perl' => [
               
'modes' => 'perl'
           
],
           
'php' => [
               
'modes' => [
                   
'clike',
                   
'php'
               
],
               
'mime' => 'text/x-php',
               
'common' => true
           
],
           
'python' => [
               
'modes' => 'python'
           
],
           
'ruby' => [
               
'modes' => 'ruby'
           
],
           
'sass' => [
               
'modes' => 'sass'
           
],
           
'scss' => [
               
'modes' => 'css',
               
'mime' => 'text/x-scss'
           
],
           
'sql' => [
               
'modes' => 'sql',
               
'mime' => 'text/x-mysql'
           
],
           
'svg' => [],
           
'swift' => [
               
'modes' => 'swift'
           
],
           
'xml' => [
               
'modes' => 'xml',
               
'config' => [
                   
'htmlMode' => false
               
]
            ]
        ];

       
$enabledLanguages = Arr::stringToArray(\XF::options()->allowedCodeLanguages,'/\r?\n/');

        foreach (
$enabledLanguages AS $language)
        {
            if (isset(
$languages[$language]))
            {
               
// we have some sort of code editor definition for this language
                // so we can just skip doing anything here.
               
continue;
            }
            else
            {
               
// this adds the supported language into the code editor, but will not add
                // any custom definition for the code editor (essentially, no syntax highlighting)
               
$languages[$language] = [];
            }
        }

       
array_walk($languages, function(&$language, $key)
        {
           
$language['phrase'] = \XF::phrase('code_language.' . $key);
            return
$language;
        });

        \
XF::app()->fire('code_languages', [&$languages]);

        if (
$filterDisabled)
        {
           
$languages = array_intersect_key($languages, array_flip($enabledLanguages));
        }

       
ksort($languages);

        return
$languages;
    }
}