1
0
mirror of https://github.com/php/web-php.git synced 2026-03-23 23:02:13 +01:00
Files
archived-web-php/images/logo.php
Peter Kokot dd8d8bf863 Sync final and leading newlines
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
2018-10-17 12:37:26 +02:00

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);