header('Content-type: text/css; charset=' . LANG_CHARSET);
if (IS_installed === false) {
    if (file_exists(S9Y_INCLUDE_PATH . 'templates/' . $serendipity['defaultTemplate'] . '/' . $css_file)) {
        echo serendipity_printStylesheet('templates/' . $serendipity['defaultTemplate'] . '/' . $css_file, 'templates/' . $serendipity['defaultTemplate'] . '/' . $css_file);
    }
    die;
}
// Use output buffering to capture all output. This is necessary
// because a plugin might call 'echo' directly instead of adding
// the desired output to the hook parameter '$out'.
ob_start();
// First all of our fallback classes, so they can be overridden by the usual template.
$out = serendipity_printStylesheet(serendipity_getTemplateFile('style_fallback.css', 'serendipityPath'), serendipity_getTemplateFile('style_fallback.css', ''));
$out .= serendipity_printStylesheet(serendipity_getTemplateFile($css_file, 'serendipityPath'), serendipity_getTemplateFile($css_file, ''));
serendipity_plugin_api::hook_event($css_hook, $out);
$out .= serendipity_printStylesheet(serendipity_getTemplateFile($css_userfile, 'serendipityPath', true), serendipity_getTemplateFile($css_userfile, '', true));
echo $out;
//
// Fetch output buffer containing the CSS output and create eTag header
//
$ob_buffer = ob_get_contents();
if ($ob_buffer) {
    // Calculate hash for eTag and get request header. The hash value
    // changes with every modification to any part of the CSS styles.
    // This includes the installation of a plugin that adds plugin
    // specific styles.
    // Send ETag header using the hash value of the CSS code
    $hashValue = md5($ob_buffer);
    @header('ETag: "' . $hashValue . '"');
    // Compare value of If-None-Match header (if available) to hash value
    if (!empty($_SERVER['HTTP_IF_NONE_MATCH'])) {
        break;
    case 'serendipity_admin.css':
        $css_hook = 'css_backend';
        $css_file = 'admin/style.css';
        break;
}
function serendipity_printStylesheet($file, $dir = '')
{
    global $serendipity;
    return "/* {$dir}  */\n" . str_replace(array('{TEMPLATE_PATH}', '{LANG_DIRECTION}'), array(dirname($dir) . '/', LANG_DIRECTION), @file_get_contents($file, 1));
}
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
    header('Cache-Control: no-cache');
} else {
    header('Cache-Control:');
    header('Pragma:');
    header('Expires: ' . gmdate('D, d M Y H:i:s \\G\\M\\T', time() + 3600));
}
header('Content-type: text/css; charset=' . LANG_CHARSET);
if (IS_installed === false) {
    if (file_exists(S9Y_INCLUDE_PATH . 'templates/' . $serendipity['defaultTemplate'] . '/' . $css_file)) {
        echo serendipity_printStylesheet('templates/' . $serendipity['defaultTemplate'] . '/' . $css_file, 'templates/' . $serendipity['defaultTemplate'] . '/' . $css_file);
    }
    die;
}
// First all of our fallback classes, so they can be overridden by the usual template.
$out = serendipity_printStylesheet(serendipity_getTemplateFile('style_fallback.css', 'serendipityPath'), serendipity_getTemplateFile('style_fallback.css', ''));
$out .= serendipity_printStylesheet(serendipity_getTemplateFile($css_file, 'serendipityPath'), serendipity_getTemplateFile($css_file, ''));
serendipity_plugin_api::hook_event($css_hook, $out);
echo $out;
/* vim: set sts=4 ts=4 expandtab : */