mirror of https://github.com/nextcloud/server.git
Mimetype list integrity check should not fail if it's changed (#15810)
Mimetype list integrity check should not fail if it's changedpull/16153/head
commit
5a03189ce7
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 Xheni Myrtaj <xheni@protonmail.com>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\Core\Command\Maintenance\Mimetype;
|
||||
|
||||
|
||||
class GenerateMimetypeFileBuilder
|
||||
{
|
||||
/**
|
||||
* Generate mime type list file
|
||||
* @param $aliases
|
||||
* @return string
|
||||
*/
|
||||
public function generateFile(array $aliases): string {
|
||||
// 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));
|
||||
sort($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]));
|
||||
sort($themes[$theme]);
|
||||
}
|
||||
|
||||
//Generate the JS
|
||||
return '/**
|
||||
* 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:mimetype:update-js
|
||||
*/
|
||||
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) . '
|
||||
};
|
||||
';
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
/**
|
||||
* 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:mimetype:update-js
|
||||
*/
|
||||
OC.MimeTypeList={
|
||||
aliases: {
|
||||
"application/coreldraw": "image",
|
||||
"application/test": "image",
|
||||
"application/epub+zip": "text",
|
||||
"application/font-sfnt": "image",
|
||||
"application/font-woff": "image",
|
||||
"application/gpx+xml": "location",
|
||||
"application/illustrator": "image",
|
||||
"application/javascript": "text/code",
|
||||
"application/json": "text/code",
|
||||
"application/msaccess": "file",
|
||||
"application/msexcel": "x-office/spreadsheet",
|
||||
"application/msonenote": "x-office/document",
|
||||
"application/mspowerpoint": "x-office/presentation",
|
||||
"application/msword": "x-office/document",
|
||||
"application/octet-stream": "file",
|
||||
"application/postscript": "image",
|
||||
"application/rss+xml": "application/xml",
|
||||
"application/vnd.android.package-archive": "package/x-generic",
|
||||
"application/vnd.lotus-wordpro": "x-office/document",
|
||||
"application/vnd.garmin.tcx+xml": "location",
|
||||
"application/vnd.google-earth.kml+xml": "location",
|
||||
"application/vnd.google-earth.kmz": "location",
|
||||
"application/vnd.ms-excel": "x-office/spreadsheet",
|
||||
"application/vnd.ms-excel.addin.macroEnabled.12": "x-office/spreadsheet",
|
||||
"application/vnd.ms-excel.sheet.binary.macroEnabled.12": "x-office/spreadsheet",
|
||||
"application/vnd.ms-excel.sheet.macroEnabled.12": "x-office/spreadsheet",
|
||||
"application/vnd.ms-excel.template.macroEnabled.12": "x-office/spreadsheet",
|
||||
"application/vnd.ms-fontobject": "image",
|
||||
"application/vnd.ms-powerpoint": "x-office/presentation",
|
||||
"application/vnd.ms-powerpoint.addin.macroEnabled.12": "x-office/presentation",
|
||||
"application/vnd.ms-powerpoint.presentation.macroEnabled.12": "x-office/presentation",
|
||||
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12": "x-office/presentation",
|
||||
"application/vnd.ms-powerpoint.template.macroEnabled.12": "x-office/presentation",
|
||||
"application/vnd.ms-visio.drawing.macroEnabled.12": "application/vnd.visio",
|
||||
"application/vnd.ms-visio.drawing": "application/vnd.visio",
|
||||
"application/vnd.ms-visio.stencil.macroEnabled.12": "application/vnd.visio",
|
||||
"application/vnd.ms-visio.stencil": "application/vnd.visio",
|
||||
"application/vnd.ms-visio.template.macroEnabled.12": "application/vnd.visio",
|
||||
"application/vnd.ms-visio.template": "application/vnd.visio",
|
||||
"application/vnd.ms-word.document.macroEnabled.12": "x-office/document",
|
||||
"application/vnd.ms-word.template.macroEnabled.12": "x-office/document",
|
||||
"application/vnd.oasis.opendocument.presentation": "x-office/presentation",
|
||||
"application/vnd.oasis.opendocument.presentation-template": "x-office/presentation",
|
||||
"application/vnd.oasis.opendocument.spreadsheet": "x-office/spreadsheet",
|
||||
"application/vnd.oasis.opendocument.spreadsheet-template": "x-office/spreadsheet",
|
||||
"application/vnd.oasis.opendocument.text": "x-office/document",
|
||||
"application/vnd.oasis.opendocument.text-master": "x-office/document",
|
||||
"application/vnd.oasis.opendocument.text-template": "x-office/document",
|
||||
"application/vnd.oasis.opendocument.text-web": "x-office/document",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation": "x-office/presentation",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.slideshow": "x-office/presentation",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.template": "x-office/presentation",
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "x-office/spreadsheet",
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": "x-office/spreadsheet",
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "x-office/document",
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.template": "x-office/document",
|
||||
"application/vnd.visio": "x-office/document",
|
||||
"application/vnd.wordperfect": "x-office/document",
|
||||
"application/x-7z-compressed": "package/x-generic",
|
||||
"application/x-bzip2": "package/x-generic",
|
||||
"application/x-cbr": "text",
|
||||
"application/x-compressed": "package/x-generic",
|
||||
"application/x-dcraw": "image",
|
||||
"application/x-deb": "package/x-generic",
|
||||
"application/x-fictionbook+xml": "text",
|
||||
"application/x-font": "image",
|
||||
"application/x-gimp": "image",
|
||||
"application/x-gzip": "package/x-generic",
|
||||
"application/x-iwork-keynote-sffkey": "x-office/presentation",
|
||||
"application/x-iwork-numbers-sffnumbers": "x-office/spreadsheet",
|
||||
"application/x-iwork-pages-sffpages": "x-office/document",
|
||||
"application/x-mobipocket-ebook": "text",
|
||||
"application/x-perl": "text/code",
|
||||
"application/x-photoshop": "image",
|
||||
"application/x-php": "text/code",
|
||||
"application/x-rar-compressed": "package/x-generic",
|
||||
"application/x-tar": "package/x-generic",
|
||||
"application/x-tex": "text",
|
||||
"application/xml": "text/html",
|
||||
"application/yaml": "text/code",
|
||||
"application/zip": "package/x-generic",
|
||||
"database": "file",
|
||||
"httpd/unix-directory": "dir",
|
||||
"text/css": "text/code",
|
||||
"text/csv": "x-office/spreadsheet",
|
||||
"text/html": "text/code",
|
||||
"text/x-c": "text/code",
|
||||
"text/x-c++src": "text/code",
|
||||
"text/x-h": "text/code",
|
||||
"text/x-java-source": "text/code",
|
||||
"text/x-ldif": "text/code",
|
||||
"text/x-python": "text/code",
|
||||
"text/x-shellscript": "text/code",
|
||||
"web": "text/code",
|
||||
"application/internet-shortcut": "link"
|
||||
},
|
||||
files: [
|
||||
"application",
|
||||
"application-pdf",
|
||||
"audio",
|
||||
"file",
|
||||
"folder",
|
||||
"folder-drag-accept",
|
||||
"folder-encrypted",
|
||||
"folder-external",
|
||||
"folder-public",
|
||||
"folder-shared",
|
||||
"folder-starred",
|
||||
"image",
|
||||
"link",
|
||||
"location",
|
||||
"package-x-generic",
|
||||
"text",
|
||||
"text-calendar",
|
||||
"text-code",
|
||||
"text-vcard",
|
||||
"video",
|
||||
"x-office-document",
|
||||
"x-office-presentation",
|
||||
"x-office-spreadsheet"
|
||||
],
|
||||
themes: []
|
||||
};
|
Loading…
Reference in New Issue