Thomas Bruederli
2013-09-07 9e9d62d7862bf8fddbf56ae3b0f0d9d9ac0d4c4c
Respect (multiple) config dirs from RCUBE_CONFIG_PATH when reading configured mimetypes mapping
2 files modified
20 ■■■■ changed files
program/lib/Roundcube/rcube_config.php 2 ●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_mime.php 18 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_config.php
@@ -232,7 +232,7 @@
     * @param boolean Return -$env file path if exists
     * @return array  List of candidates in config dir path(s)
     */
    private function resolve_paths($file, $use_env = true)
    public function resolve_paths($file, $use_env = true)
    {
        $files = array();
        $abs_path = $this->_is_absolute($file);
program/lib/Roundcube/rcube_mime.php
@@ -708,12 +708,20 @@
     */
    public static function file_content_type($path, $name, $failover = 'application/octet-stream', $is_stream = false, $skip_suffix = false)
    {
        static $mime_ext = array();
        $mime_type = null;
        $mime_magic = rcube::get_instance()->config->get('mime_magic');
        $mime_ext = $skip_suffix ? null : @include(RCUBE_CONFIG_DIR . '/mimetypes.php');
        $config = rcube::get_instance()->config;
        $mime_magic = $config->get('mime_magic');
        if (!$skip_suffix && empty($mime_ext)) {
            foreach ($config->resolve_paths('mimetypes.php') as $fpath) {
                $mime_ext = array_merge($mime_ext, (array) @include($fpath));
            }
        }
        // use file name suffix with hard-coded mime-type map
        if (is_array($mime_ext) && $name) {
        if (!$skip_suffix && is_array($mime_ext) && $name) {
            if ($suffix = substr($name, strrpos($name, '.')+1)) {
                $mime_type = $mime_ext[strtolower($suffix)];
            }
@@ -818,7 +826,9 @@
        // fallback to some well-known types most important for daily emails
        if (empty($mime_types)) {
            $mime_extensions = (array) @include(RCUBE_CONFIG_DIR . '/mimetypes.php');
            foreach (rcube::get_instance()->config->resolve_paths('mimetypes.php') as $fpath) {
                $mime_extensions = array_merge($mime_extensions, (array) @include($fpath));
            }
            foreach ($mime_extensions as $ext => $mime) {
                $mime_types[$mime][] = $ext;