mirror of
https://github.com/php/web-php.git
synced 2026-03-23 23:02:13 +01:00
This patch adds some missing newlines, trims some multiple redundant final newlines into a single one, and trims few redundant leading newlines. According to POSIX, a line is a sequence of zero or more non-'<newline>' characters plus a terminating '<newline>' character. [1] Files should normally have at least one final newline character. C89 [2] and later standards [3] mention a final newline: "A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character." Although it is not mandatory for all files to have a final newline fixed, a more consistent and homogeneous approach brings less of commit differences issues and a better development experience in certain text editors and IDEs. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206 [2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2 [3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
95 lines
2.4 KiB
PHP
95 lines
2.4 KiB
PHP
<?php
|
|
|
|
$refresh = isset($_GET['refresh']) ? true : false;
|
|
|
|
// Be 100% sure the timezone is set
|
|
if (ini_get('date.timezone') === '' && function_exists('date_default_timezone_set')) {
|
|
date_default_timezone_set('UTC');
|
|
}
|
|
|
|
$now = $_SERVER['REQUEST_TIME'];
|
|
|
|
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
|
|
$last = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
|
|
|
|
// Use the same logo for a day
|
|
if (strtotime('+1 day', $last) > $now && !$refresh) {
|
|
header('HTTP/1.1 304 Not Modified');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function imgheader($filename) {
|
|
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
|
|
switch ($ext) {
|
|
case 'gif':
|
|
$hdr = 'image/gif';
|
|
break;
|
|
case 'png':
|
|
$hdr = 'image/png';
|
|
break;
|
|
case 'jpg':
|
|
case 'jpeg':
|
|
$hdr = 'image/jpeg';
|
|
break;
|
|
case 'svg':
|
|
$hdr = 'image/svg+xml';
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
header("Content-Type: $hdr");
|
|
}
|
|
|
|
|
|
function get_accepted_encodings() {
|
|
if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
|
|
$encodings = explode(',', $_SERVER['HTTP_ACCEPT_ENCODING']);
|
|
return array_map(function ($x) {
|
|
return trim($x);
|
|
}, $encodings);
|
|
}
|
|
return array();
|
|
}
|
|
|
|
|
|
function serve_compressed_if_available($logo) {
|
|
$encodings = get_accepted_encodings();
|
|
if (!empty($encodings)) {
|
|
foreach ($encodings as $encoding) {
|
|
if ($encoding === 'gzip') {
|
|
$encoded_file = "$logo.gz";
|
|
if (file_exists($encoded_file)) {
|
|
header("Content-Encoding: $encoding");
|
|
readfile($encoded_file);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
readfile($logo);
|
|
}
|
|
|
|
$logo = './logos/php-logo.svg';
|
|
if (isset($_SERVER['QUERY_STRING'])) {
|
|
switch ($_SERVER['QUERY_STRING']) {
|
|
case 'QA':
|
|
case 'qa':
|
|
$logo = './logos/qa.jpg';
|
|
break;
|
|
}
|
|
}
|
|
|
|
// xmas season, december and the first week of January
|
|
$day = date('z', $now) - date('L', $now);
|
|
if ($day < 6 || 365 - $day < 32) {
|
|
$logo = './logos/php-xmas-2013.png';
|
|
}
|
|
|
|
$future = strtotime('+1 day', $now);
|
|
$tsstring = gmdate('D, d M Y H:i:s ', $now) . 'GMT';
|
|
header('Last-Modified: ' . $tsstring);
|
|
header('Expires: ' . date(DATE_RSS, $future));
|
|
imgheader($logo);
|
|
serve_compressed_if_available($logo);
|