[geeklog-cvs] tools: Redesigned version checker script, written and designed b...
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Wed Jan 19 14:38:46 EST 2011
changeset 51:9678596cc4c7
url: http://project.geeklog.net/cgi-bin/hgwebdir.cgi/tools/rev/9678596cc4c7
user: Dirk Haun <dirk at haun-online.de>
date: Tue Jan 18 21:38:50 2011 +0100
description:
Redesigned version checker script, written and designed by Rouslan Placella
diffstat:
versionchecker/versionchecker.php | 98 +-----
versionchecker/versionchecker/README | 4 +
versionchecker/versionchecker/config.php | 36 +
versionchecker/versionchecker/fonts/DejaVuSans-Bold.ttf | 0
versionchecker/versionchecker/fonts/DejaVuSans.ttf | 0
versionchecker/versionchecker/fonts/LICENSE | 1 +
versionchecker/versionchecker/graph.php | 219 +++++++++++
versionchecker/versionchecker/img/bg.png | 0
versionchecker/versionchecker/img/bottom.png | 0
versionchecker/versionchecker/img/graph/arrow.png | 0
versionchecker/versionchecker/img/graph/dot1.png | 0
versionchecker/versionchecker/img/graph/dot2.png | 0
versionchecker/versionchecker/img/highlight.png | 0
versionchecker/versionchecker/img/icons/critical.png | 0
versionchecker/versionchecker/img/icons/info.png | 0
versionchecker/versionchecker/img/icons/ok.png | 0
versionchecker/versionchecker/img/icons/warning.png | 0
versionchecker/versionchecker/img/speck.gif | 0
versionchecker/versionchecker/img/top.png | 0
versionchecker/versionchecker/img/wrap.png | 0
versionchecker/versionchecker/style.css | 67 +++
versionchecker/versionchecker/versionchecker.php | 294 ++++++++++++++++
22 files changed, 622 insertions(+), 97 deletions(-)
diffs (truncated from 777 to 300 lines):
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker.php
--- a/versionchecker/versionchecker.php Sun Jan 02 18:51:38 2011 +0100
+++ b/versionchecker/versionchecker.php Tue Jan 18 21:38:50 2011 +0100
@@ -1,97 +1,1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>Geeklog Version Check</title>
- <link rel="stylesheet" type="text/css" href="http://www.geeklog.net/docs/docstyle.css" title="Dev Stylesheet">
-</head>
-
-<body>
-<p align="left"><a href="http://www.geeklog.net/" title="go to the Geeklog homepage"><img src="http://www.geeklog.net/docs/images/newlogo.gif" alt="" width="243" height="90" border="0"></a></p>
-<?php
-
-$current = '1.7.1sr1';
-$version = '';
-if (isset ($_GET['version'])) {
- $version = strip_tags ($_GET['version']);
-}
-
-$upgrade = array (
-/*
- '1.3.9' => '1.3.9sr4',
- '1.3.9sr1' => '1.3.9sr4',
- '1.3.9sr2' => '1.3.9sr4',
- '1.3.9sr3' => '1.3.9sr4',
- '1.3.10' => '1.3.11sr7-1',
- '1.3.11' => '1.3.11sr7-1',
- '1.3.11sr1' => '1.3.11sr7-1',
- '1.3.11sr2' => '1.3.11sr7-1',
- '1.3.11sr3' => '1.3.11sr7-1',
- '1.3.11sr4' => '1.3.11sr7-1',
- '1.3.11sr5' => '1.3.11sr7-1',
- '1.3.11sr6' => '1.3.11sr7-1',
- '1.3.11sr7' => '1.3.11sr7-1',
- '1.4.0' => '1.5.2sr4',
- '1.4.0sr1' => '1.5.2sr4',
- '1.4.0sr2' => '1.5.2sr4',
- '1.4.0sr3' => '1.5.2sr4',
- '1.4.0sr4' => '1.5.2sr4',
- '1.4.0sr5' => '1.5.2sr4',
- '1.4.0sr5-1' => '1.5.2sr4',
- '1.4.0sr6' => '1.5.2sr4',
- '1.4.1' => '1.6.1',
- '1.5.0' => '1.7.1',
- '1.5.1' => '1.7.1',
- '1.5.2' => '1.7.1',
- '1.5.2sr1' => '1.7.1',
- '1.5.2sr2' => '1.7.1',
- '1.5.2sr3' => '1.7.1',
- '1.5.2sr4' => '1.7.1',
- '1.5.2sr5' => '1.7.1',
- '1.5.2sr6' => '1.7.1',
-*/
- '1.6.0' => '1.7.1sr1',
- '1.6.0sr1' => '1.7.1sr1',
- '1.6.0sr2' => '1.7.1sr1',
- '1.6.1' => '1.6.1sr2',
- '1.6.1sr1' => '1.7.1sr1',
- '1.7.0' => '1.7.1sr1',
- '1.7.1' => '1.7.1sr1'
-);
-
-$v = explode ('.', $version);
-
-// some minimal parameter filtering ...
-if ((count ($v) != 3) || !is_numeric ($v[0]) || !is_numeric ($v[1])) {
- echo '<p>Version number not recognized.</p></body></html>';
- exit;
-}
-
-$v2 = (int) $v[1];
-
-if ($version == $current) {
- echo '<p>Your Geeklog installation is up-to-date.</p>';
-} else {
- $version = htmlentities ($version);
- if ($v2 < 4) {
- echo '<h1>Upgrade recommendation</h1>';
- echo '<p>The Geeklog version you are running (' . $version . ') is rather old and not supported any more. In your own interest, we strongly encourage you to upgrade to the current release, ' . $current . ', which is <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=8" title="go to the Geeklog download section">available for download</a> from the Geeklog homepage.</p>';
- } else {
- if (isset ($upgrade[$version])) {
- if ($upgrade[$version] == $current) {
- echo '<h1>Upgrade recommendation</h1>';
- // echo '<p>The Geeklog version you are running (' . $version . ') is out of date and possibly insecure. Please <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=8" title="go to the Geeklog download section">update to the current version</a>, ' . $current . ', as soon as possible.</p>';
- echo '<p>The Geeklog version you are running (' . $version . ') is out of date. We recommend <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=8" title="go to the Geeklog download section">updating to the current version</a>, ' . $current . ', at your earliest convenience.</p>';
- } else {
- echo '<h1>Upgrade recommendation</h1>';
- echo '<p>For the Geeklog version you are running (' . $version . '), there are two upgrade paths available: You can either <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=8" title="go to the Geeklog download section">upgrade to the most recent version</a> (' . $current . ') or, if you don\'t want to do that just yet, we suggest that you at least <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=10" title="go to the Geeklog download section">upgrade to version ' . $upgrade[$version] . '</a> as soon as possible.</p>';
- }
- } else {
- echo '<p>The current version of Geeklog is <strong>' . $current . '</strong> but it seems you are running Geeklog ' . $version . '.</p>';
- echo '<p>You are running either an old version of Geeklog <em>or</em> you are running a beta version. If you are running an older version of Geeklog you are encouraged to <a href="http://www.geeklog.net/filemgmt/viewcat.php?cid=8" title="go to the Geeklog download section">upgrade now</a>.</p>';
- }
- }
-}
-
-?>
-</body>
-</html>
+<?php require 'versionchecker/versionchecker.php'; ?>
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/versionchecker/versionchecker/README Tue Jan 18 21:38:50 2011 +0100
@@ -0,0 +1,4 @@
+versionchecker.php - Creates the web page.
+graph.php - Creates an image with the timeline of recent releases.
+config.php - Stores information about releases.
+
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/config.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/versionchecker/versionchecker/config.php Tue Jan 18 21:38:50 2011 +0100
@@ -0,0 +1,36 @@
+<?php
+// this file can't be used on its own
+if (strpos(strtolower($_SERVER['PHP_SELF']), 'config.php') !== false) {
+ die('This file cannot be used on its own!');
+}
+// ******************************
+// ******** CONFIGURATION *******
+// ******************************
+
+// All releases ordered by version number
+$releases = array (
+ array('version' => '1.4.1', 'date' => '31-Dec-06', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.0', 'date' => '15-Jun-08', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.1', 'date' => '22-Sep-08', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2', 'date' => '08-Feb-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr1', 'date' => '30-Mar-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr2', 'date' => '04-Apr-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr3', 'date' => '13-Apr-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr4', 'date' => '18-Apr-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr5', 'date' => '30-Jul-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.5.2sr6', 'date' => '09-May-10', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.6.0', 'date' => '19-Jul-09', 'supported' => false, 'upgrade' => ''),
+ array('version' => '1.6.0sr1', 'date' => '30-Jul-09', 'supported' => true, 'upgrade' => ''),
+ array('version' => '1.6.0sr2', 'date' => '30-Aug-09', 'supported' => true, 'upgrade' => ''),
+ array('version' => '1.6.1', 'date' => '22-Nov-09', 'supported' => true, 'upgrade' => '1.6.1sr2'),
+ array('version' => '1.6.1sr1', 'date' => '09-May-10', 'supported' => true, 'upgrade' => ''),
+ array('version' => '1.6.1sr2', 'date' => '02-Jan-11', 'supported' => true, 'upgrade' => ''),
+ array('version' => '1.7.0', 'date' => '01-Jul-10', 'supported' => true, 'upgrade' => ''),
+ array('version' => '1.7.1', 'date' => '31-Oct-10', 'supported' => true, 'upgrade' => '1.6.1sr2'),
+ array('version' => '1.7.1sr1', 'date' => '02-Jan-11', 'supported' => true, 'upgrade' => '')
+);
+
+// Current stable version
+$current = $releases[count($releases)-1]['version']; // Last entry in the $releases array
+
+?>
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/fonts/DejaVuSans-Bold.ttf
Binary file versionchecker/versionchecker/fonts/DejaVuSans-Bold.ttf has changed
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/fonts/DejaVuSans.ttf
Binary file versionchecker/versionchecker/fonts/DejaVuSans.ttf has changed
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/fonts/LICENSE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/versionchecker/versionchecker/fonts/LICENSE Tue Jan 18 21:38:50 2011 +0100
@@ -0,0 +1,1 @@
+http://dejavu-fonts.org/wiki/License
diff -r e8071eb3cdb8 -r 9678596cc4c7 versionchecker/versionchecker/graph.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/versionchecker/versionchecker/graph.php Tue Jan 18 21:38:50 2011 +0100
@@ -0,0 +1,219 @@
+<?php
+// this file can't be used on its own
+if (strpos(strtolower($_SERVER['PHP_SELF']), 'graph.php') !== false) {
+ die('This file cannot be used on its own!');
+}
+// Init images
+$im = imagecreatetruecolor(825, 200); // Working canvas
+$arrow = imagecreatefrompng('img/graph/arrow.png');
+$dot1 = imagecreatefrompng('img/graph/dot1.png');
+$dot2 = imagecreatefrompng('img/graph/dot2.png');
+// Init colours
+$white = imagecolorallocate($im, 255, 255, 255);
+$green = imagecolorallocate($im, 0, 100, 0);
+$lightgray = imagecolorallocate($im, 132, 132, 120);
+$shadow = imagecolorallocate($im, 200, 200, 200);
+$gray = imagecolorallocate($im, 46, 52, 54);
+$black = imagecolorallocate($im, 0, 3, 7);
+imagefill($im, 1, 1, $white);
+imageantialias($im, true);
+imageinterlace($im, true);
+
+// If there is an available alternative upgrade option, I want to know about it now
+$upgrade = '';
+if ($case == 4) {
+ foreach ($releases as $key => $value) {
+ if ($value['version'] == $version) {
+ $upgrade = $value['upgrade'];
+ break;
+ }
+ }
+ $alt_upgrade_exists = false;
+ foreach ($releases as $key => $value) {
+ if ($value['version'] == $upgrade) {
+ $alt_upgrade_exists = true;
+ break;
+ }
+ }
+ if (!$alt_upgrade_exists) { // No alternative upgrade found in $releases
+ $case = 3; // switching to single upgrade mode
+ }
+}
+
+// Sort releases by date
+$r = $releases;
+foreach ($r as $key => $value) {
+ $v[] = $value['version'];
+ $t[] = strtotime($value['date']);
+ $d[] = $value['date'];
+ $u[] = $value['upgrade'];
+}
+array_multisort($t, SORT_DESC, $v, SORT_DESC, $d, $u);
+foreach ($t as $key => $value) {
+ $r[$key] = array('version' => $v[$key], 'date' => $d[$key], 'upgrade' => $u[$key]);
+}
+
+// Initialise position for the timeline
+$initpos= 780;
+$pos = $initpos;
+$path_drawn = false;
+
+// Draw a line
+imagefilledrectangle($im, 15, 100, $initpos+20, 103, $green);
+imagecopymerge($im, $arrow, $initpos+20, 97, 0, 0, 7, 10, 100);
+
+// Print label for current version
+$offset = imagettfbbox(11, 0, 'fonts/DejaVuSans.ttf', "Current");
+$offset = (int)($offset[2] / 2);
+imagettftext($im, 11, 0, $pos-$offset+1, 171, $shadow, 'fonts/DejaVuSans.ttf', "Current");
+imagettftext($im, 11, 0, $pos-$offset, 170, $black, 'fonts/DejaVuSans.ttf', "Current");
+$offset = imagettfbbox(11, 0, 'fonts/DejaVuSans.ttf', "version");
+$offset = (int)($offset[2] / 2);
+imagettftext($im, 11, 0, $pos-$offset+1, 186, $shadow, 'fonts/DejaVuSans.ttf', "version");
+imagettftext($im, 11, 0, $pos-$offset, 185, $black, 'fonts/DejaVuSans.ttf', "version");
+
+// Create the timeline
+$index = 0;
+while ($pos > 30) {
+ // Print version
+ $offset = imagettfbbox(10, 0, 'fonts/DejaVuSans.ttf', $r[$index]['version']);
+ $offset = (int)($offset[2] / 2);
+ imagettftext($im, 10, 0, $pos-$offset, 125, $gray, 'fonts/DejaVuSans.ttf', $r[$index]['version']);
+ imagettftext($im, 10, 0, $pos-$offset, 125, $gray, 'fonts/DejaVuSans.ttf', $r[$index]['version']);
+ // Print release date
+ $offset = imagettfbbox(8, 0, 'fonts/DejaVuSans.ttf', $r[$index]['date']);
+ $offset = (int)($offset[2] / 2);
+ imagettftext($im, 8, 0, $pos-$offset, 140, $lightgray, 'fonts/DejaVuSans.ttf', $r[$index]['date']);
+ // Print "Your version"
+ if ($version == $r[$index]['version'] && $version != $current) {
+ $offset = imagettfbbox(11, 0, 'fonts/DejaVuSans.ttf', "Your");
+ $offset = (int)($offset[2] / 2);
+ imagettftext($im, 11, 0, $pos-$offset+1, 171, $shadow, 'fonts/DejaVuSans.ttf', "Your");
+ imagettftext($im, 11, 0, $pos-$offset, 170, $black, 'fonts/DejaVuSans.ttf', "Your");
+ $offset = imagettfbbox(11, 0, 'fonts/DejaVuSans.ttf', "version");
+ $offset = (int)($offset[2] / 2);
+ imagettftext($im, 11, 0, $pos-$offset+1, 186, $shadow, 'fonts/DejaVuSans.ttf', "version");
+ imagettftext($im, 11, 0, $pos-$offset, 185, $black, 'fonts/DejaVuSans.ttf', "version");
+ }
+ // Draw the upgrade path
+ if ($version == $r[$index]['version'] && $version != $current && ($case == 3 || $case == 4)) {
+ $path_drawn = true;
+ if ($case == 4) {
+ $y = 20;
+ $offset = 30;
+ } else {
+ $y = 60;
+ $offset = 15;
+ }
+ imageline($im, $pos, 100, $pos+$offset, $y, $green);
+ imageline($im, $pos+$offset, $y, $initpos+$offset, $y, $green);
+ imageline($im, $initpos+$offset, $y, $initpos, 100, $green);
+ // Add an arrow
+ $arrowpos = (int)(($initpos-$pos)/2)+$pos+13;
+ imageline($im, $arrowpos, $y, $arrowpos-4, $y+4, $green);
+ imageline($im, $arrowpos, $y, $arrowpos-4, $y-4, $green);
+ imageline($im, $arrowpos+1, $y, $arrowpos-3, $y+4, $green);
+ imageline($im, $arrowpos+1, $y, $arrowpos-3, $y-4, $green);
+ // Print label (prevent clipping)
+ $width = imagettfbbox(11, 0, 'fonts/DejaVuSans.ttf', "Recommended upgrade");
+ if (($pos + $offset + $width[2]) < 824) {
+ imagettftext($im, 8, 0, $pos+$offset, $y-8, $black, 'fonts/DejaVuSans.ttf', "Recommended upgrade");
+ } else {
+ imagettftext($im, 8, 0, 824-$width[2], $y-8, $black, 'fonts/DejaVuSans.ttf', "Recommended upgrade");
+ }
+ }
+ // Remember co-ordinates for the alternative upgrade path. We will draw that later
+ if ($version == $r[$index]['version'] && $version != $current && $case == 4) {
+ $alt_path_src = $pos;
+ }
+ if ($upgrade == $r[$index]['version']) {
+ $alt_path_dest = $pos;
+ }
+ // Draw a dot
+ if (strpos($r[$index]['version'], 'sr') !== false) {
+ imagecopymerge($im, $dot2, $pos-4, 97, 0, 0, 10, 10, 100);
+ } else {
+ imagecopymerge($im, $dot1, $pos-4, 97, 0, 0, 10, 10, 100);
+ }
More information about the geeklog-cvs
mailing list