[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