| | |
| | | |
| | | header("Expires: ".gmdate("D, d M Y H:i:s")." GMT"); |
| | | header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); |
| | | header("Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); |
| | | header("Cache-Control: private, must-revalidate, post-check=0, pre-check=0"); |
| | | header("Pragma: no-cache"); |
| | | |
| | | // We need to set the following headers to make downloads work using IE in HTTPS mode. |
| | |
| | | return $brackets{0} . implode(',', $pairs) . $brackets{1}; |
| | | } |
| | | } |
| | | else if (is_numeric($var) && strval(intval($var)) === strval($var)) |
| | | else if (!is_string($var) && strval(intval($var)) === strval($var)) |
| | | return $var; |
| | | else if (is_bool($var)) |
| | | return $var ? '1' : '0'; |
| | |
| | | return $path; |
| | | |
| | | // cut base_url to the last directory |
| | | if (strpos($base_url, '/')>7) |
| | | if (strrpos($base_url, '/')>7) |
| | | { |
| | | $host_url = substr($base_url, 0, strpos($base_url, '/')); |
| | | $base_url = substr($base_url, 0, strrpos($base_url, '/')); |
| | |
| | | return mb_strtolower($str); |
| | | else |
| | | return strtolower($str); |
| | | } |
| | | |
| | | /** |
| | | * Wrapper function for strtoupper |
| | | */ |
| | | function rc_strtoupper($str) |
| | | { |
| | | if (function_exists('mb_strtoupper')) |
| | | return mb_strtoupper($str); |
| | | else |
| | | return strtoupper($str); |
| | | } |
| | | |
| | | /** |
| | |
| | | * A method to guess the mime_type of an attachment. |
| | | * |
| | | * @param string $path Path to the file. |
| | | * @param string $name File name (with suffix) |
| | | * @param string $failover Mime type supplied for failover. |
| | | * |
| | | * @return string |
| | |
| | | * @see http://de2.php.net/manual/en/ref.fileinfo.php |
| | | * @see http://de2.php.net/mime_content_type |
| | | */ |
| | | function rc_mime_content_type($path, $failover = 'application/octet-stream') |
| | | function rc_mime_content_type($path, $name, $failover = 'application/octet-stream') |
| | | { |
| | | $mime_type = null; |
| | | $mime_magic = rcmail::get_instance()->config->get('mime_magic'); |
| | | $mime_ext = @include(RCMAIL_CONFIG_DIR . '/mimetypes.php'); |
| | | $suffix = $name ? substr($name, strrpos($name, '.')+1) : '*'; |
| | | |
| | | if (!extension_loaded('fileinfo')) { |
| | | @dl('fileinfo.' . PHP_SHLIB_SUFFIX); |
| | | // use file name suffix with hard-coded mime-type map |
| | | if (is_array($mime_ext)) { |
| | | $mime_type = $mime_ext[$suffix]; |
| | | } |
| | | |
| | | if (function_exists('finfo_open')) { |
| | | if ($finfo = finfo_open(FILEINFO_MIME, $mime_magic)) { |
| | | $mime_type = finfo_file($finfo, $path); |
| | | finfo_close($finfo); |
| | | // try fileinfo extension if available |
| | | if (!$mime_type) { |
| | | if (!extension_loaded('fileinfo')) { |
| | | @dl('fileinfo.' . PHP_SHLIB_SUFFIX); |
| | | } |
| | | if (function_exists('finfo_open')) { |
| | | if ($finfo = finfo_open(FILEINFO_MIME, $mime_magic)) { |
| | | $mime_type = finfo_file($finfo, $path); |
| | | finfo_close($finfo); |
| | | } |
| | | } |
| | | } |
| | | // try PHP's mime_content_type |
| | | if (!$mime_type && function_exists('mime_content_type')) { |
| | | $mime_type = mime_content_type($path); |
| | | } |
| | | |
| | | // fall back to user-submitted string |
| | | if (!$mime_type) { |
| | | $mime_type = $failover; |
| | | } |
| | |
| | | return $result ? $result : $failover; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Explode quoted string |
| | | * |
| | | * @param string Delimiter expression string for preg_match() |
| | | * @param string Input string |
| | | */ |
| | | function rcube_explode_quoted_string($delimiter, $string) |
| | | { |
| | | $result = array(); |
| | | $strlen = strlen($string); |
| | | |
| | | for ($q=$p=$i=0; $i < $strlen; $i++) { |
| | | if ($string[$i] == "\"" && $string[$i-1] != "\\") { |
| | | $q = $q ? false : true; |
| | | } |
| | | else if (!$q && preg_match("/$delimiter/", $string[$i])) { |
| | | $result[] = substr($string, $p, $i - $p); |
| | | $p = $i + 1; |
| | | } |
| | | } |
| | | |
| | | $result[] = substr($string, $p); |
| | | return $result; |
| | | } |
| | | |
| | | ?> |