/**
  * Tries to detect MIME type of a file
  *
  * The method will try to use fileinfo extension if it is available,
  * deprecated mime_content_type() function in the other case. If neither
  * works, default 'application/octet-stream' MIME type is returned
  *
  * @param    string  filename
  * @return   string  file MIME type
  */
 protected static function detectMimeType($filename)
 {
     // finfo extension from PECL available
     if (function_exists('finfo_open')) {
         if (!isset(self::$_fileinfoDb)) {
             self::$_fileinfoDb = @finfo_open(FILEINFO_MIME);
         }
         if (self::$_fileinfoDb) {
             $info = finfo_file(self::$_fileinfoDb, $filename);
         }
     }
     // (deprecated) mime_content_type function available
     if (empty($info) && function_exists('mime_content_type')) {
         return mime_content_type($filename);
     }
     return empty($info) ? 'application/octet-stream' : $info;
 }