diff options
| author | Thomas Bruederli <thomas@roundcube.net> | 2013-09-07 19:16:40 +0200 | 
|---|---|---|
| committer | Thomas Bruederli <thomas@roundcube.net> | 2013-09-07 19:16:40 +0200 | 
| commit | 9e9d62d7862bf8fddbf56ae3b0f0d9d9ac0d4c4c (patch) | |
| tree | 8bfd401b8f272b984341195934ca67ca1ef9781a | |
| parent | fb5f5232b939959f70525f063af699b0cc778840 (diff) | |
Respect (multiple) config dirs from RCUBE_CONFIG_PATH when reading configured mimetypes mapping
| -rw-r--r-- | program/lib/Roundcube/rcube_config.php | 2 | ||||
| -rw-r--r-- | program/lib/Roundcube/rcube_mime.php | 18 | 
2 files changed, 15 insertions, 5 deletions
| diff --git a/program/lib/Roundcube/rcube_config.php b/program/lib/Roundcube/rcube_config.php index 2ac611fe3..781f8a765 100644 --- a/program/lib/Roundcube/rcube_config.php +++ b/program/lib/Roundcube/rcube_config.php @@ -232,7 +232,7 @@ class rcube_config       * @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); diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php index 572540f47..96a8eac61 100644 --- a/program/lib/Roundcube/rcube_mime.php +++ b/program/lib/Roundcube/rcube_mime.php @@ -708,12 +708,20 @@ class rcube_mime       */      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 @@ class rcube_mime          // 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; | 
