コード例 #1
0
ファイル: updatejs.php プロジェクト: evanjt/core
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // Fetch all the aliases
        $aliases = $this->mimetypeDetector->getAllAliases();
        // Remove comments
        $keys = array_filter(array_keys($aliases), function ($k) {
            return $k[0] === '_';
        });
        foreach ($keys as $key) {
            unset($aliases[$key]);
        }
        // Fetch all files
        $dir = new \DirectoryIterator(\OC::$SERVERROOT . '/core/img/filetypes');
        $files = [];
        foreach ($dir as $fileInfo) {
            if ($fileInfo->isFile()) {
                $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
                $files[] = $file;
            }
        }
        //Remove duplicates
        $files = array_values(array_unique($files));
        // Fetch all themes!
        $themes = [];
        $dirs = new \DirectoryIterator(\OC::$SERVERROOT . '/themes/');
        foreach ($dirs as $dir) {
            //Valid theme dir
            if ($dir->isFile() || $dir->isDot()) {
                continue;
            }
            $theme = $dir->getFilename();
            $themeDir = $dir->getPath() . '/' . $theme . '/core/img/filetypes/';
            // Check if this theme has its own filetype icons
            if (!file_exists($themeDir)) {
                continue;
            }
            $themes[$theme] = [];
            // Fetch all the theme icons!
            $themeIt = new \DirectoryIterator($themeDir);
            foreach ($themeIt as $fileInfo) {
                if ($fileInfo->isFile()) {
                    $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
                    $themes[$theme][] = $file;
                }
            }
            //Remove Duplicates
            $themes[$theme] = array_values(array_unique($themes[$theme]));
        }
        //Generate the JS
        $js = '/**
* This file is automatically generated
* DO NOT EDIT MANUALLY!
*
* You can update the list of MimeType Aliases in config/mimetypealiases.json
* The list of files is fetched from core/img/filetypes
* To regenerate this file run ./occ maintenance:mimetypesjs
*/
OC.MimeTypeList={
	aliases: ' . json_encode($aliases, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . ',
	files: ' . json_encode($files, JSON_PRETTY_PRINT) . ',
	themes: ' . json_encode($themes, JSON_PRETTY_PRINT) . '
};
';
        //Output the JS
        file_put_contents(\OC::$SERVERROOT . '/core/js/mimetypelist.js', $js);
        $output->writeln('<info>mimetypelist.js is updated');
    }