From f6af8b30ef4051ddb46df88728fe73d80515e950 Mon Sep 17 00:00:00 2001
From: CaMer0n <cameron@e107coders.org>
Date: Fri, 18 Sep 2009 22:20:40 +0000
Subject: [PATCH] e_sc renamed to e_shortcode and activated in shortcode
 handler. /banner.php now uses the banner plugin. Banner language file
 cleanup.

---
 banner.php                                    | 119 ++----------------
 e107_files/shortcode/banner.php               |  59 ---------
 e107_handlers/shortcode_handler.php           |  50 +++++++-
 e107_plugins/banner/banner.php                |  19 ++-
 e107_plugins/banner/banner_menu.php           |   8 +-
 e107_plugins/banner/e_sc.php                  |  59 ---------
 e107_plugins/banner/e_shortcode.php           |  68 ++++++++++
 .../{lan_banner.php => English_banner.php}    |   4 +-
 .../{English.php => English_menu_banner.php}  |   4 +-
 9 files changed, 145 insertions(+), 245 deletions(-)
 delete mode 100644 e107_files/shortcode/banner.php
 delete mode 100644 e107_plugins/banner/e_sc.php
 create mode 100644 e107_plugins/banner/e_shortcode.php
 rename e107_plugins/banner/languages/{lan_banner.php => English_banner.php} (92%)
 rename e107_plugins/banner/languages/{English.php => English_menu_banner.php} (95%)

diff --git a/banner.php b/banner.php
index b92196cc2..20e0bab0f 100644
--- a/banner.php
+++ b/banner.php
@@ -9,119 +9,14 @@
  * 
  *
  * $Source: /cvs_backup/e107_0.8/banner.php,v $
- * $Revision: 1.6 $
- * $Date: 2009-08-28 15:30:25 $
- * $Author: marj_nl_fr $
+ * $Revision: 1.7 $
+ * $Date: 2009-09-18 22:20:39 $
+ * $Author: e107coders $
  */
 
 require_once("class2.php");
-include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_'.e_PAGE);
 
-require_once(e_HANDLER."form_handler.php");
-$rs = new form;
-	
-if (e_QUERY) {
-	$query_string = intval(e_QUERY);
-	$sql->db_Select("banner", "*", "banner_id = '{$query_string}' ");
-	$row = $sql->db_Fetch();
-	$ip = $e107->getip();
-	$newip = (strpos($row['banner_ip'], "{$ip}^") !== FALSE) ? $row['banner_ip'] : "{$row['banner_ip']}{$ip}^";
-	$sql->db_Update("banner", "banner_clicks = banner_clicks + 1, `banner_ip` = '{$newip}' WHERE `banner_id` = '{$query_string}'");
-	header("Location: {$row['banner_clickurl']}");
-	exit;
-}
-	
-require_once(HEADERF);
-	
-if (isset($_POST['clientsubmit'])) {
-	
-	$clean_login = $tp -> toDB($_POST['clientlogin']);
-	$clean_password = $tp -> toDB($_POST['clientpassword']);
-	
-	if (!$sql->db_Select("banner", "*", "`banner_clientlogin` = '{$clean_login}' AND `banner_clientpassword` = '{$clean_password}'")) {
-		$ns->tablerender(LAN_ERROR, "<br /><div style='text-align:center'>".BANNERLAN_20."</div><br />");
-		require_once(FOOTERF);
-		exit;
-	}
-	 
-	$row = $sql->db_Fetch();
-	$banner_total = $sql->db_Select("banner", "*", "`banner_clientname` = '{$row['banner_clientname']}'");
-	 
-	if (!$banner_total) {
-		$ns->tablerender(LAN_ERROR, "<br /><div style='text-align:center'>".BANNERLAN_29."</div><br />");
-		require_once(FOOTERF);
-		exit;
-	} else {
-		while ($row = $sql->db_Fetch()) {
-			 
-			$start_date = ($row['banner_startdate'] ? strftime("%d %B %Y", $row['banner_startdate']) : BANNERLAN_31);
-			$end_date = ($row['banner_enddate'] ? strftime("%d %B %Y", $row['banner_enddate']) : BANNERLAN_31);
-			 
-			$BANNER_TABLE_CLICKPERCENTAGE = ($row['banner_clicks'] && $row['banner_impressions'] ? round(($row['banner_clicks'] / $row['banner_impressions']) * 100)."%" : "-");
-			$BANNER_TABLE_IMPRESSIONS_LEFT = ($row['banner_impurchased'] ? $row['banner_impurchased'] - $row['banner_impressions'] : BANNERLAN_30);
-			$BANNER_TABLE_IMPRESSIONS_PURCHASED = ($row['banner_impurchased'] ? $row['banner_impurchased'] : BANNERLAN_30);
-			$BANNER_TABLE_CLIENTNAME = $row['banner_clientname'];
-			$BANNER_TABLE_BANNER_ID = $row['banner_id'];
-			$BANNER_TABLE_BANNER_CLICKS = $row['banner_clicks'];
-			$BANNER_TABLE_BANNER_IMPRESSIONS = $row['banner_impressions'];
-			$BANNER_TABLE_ACTIVE = BANNERLAN_36.($row['banner_active'] != "255" ? LAN_YES : "<b>".LAN_NO."</b>");
-			$BANNER_TABLE_STARTDATE = BANNERLAN_37." ".$start_date;
-			$BANNER_TABLE_ENDDATE = BANNERLAN_34." ".$end_date;
-			
-			if ($row['banner_ip']) 
-			{
-				$tmp = explode("^", $row['banner_ip']);
-				$BANNER_TABLE_IP_LAN = (count($tmp)-1);
-				for($a = 0; $a <= (count($tmp)-2); $a++) {
-					$BANNER_TABLE_IP .= $tmp[$a]."<br />";
-				}
-			}
-			 
-			if (!$BANNER_TABLE) 
-			{
-				if (file_exists(THEME."banner_template.php")) {
-					require(THEME."banner_template.php");
-				} else {
-					require(e_BASE.$THEMES_DIRECTORY."templates/banner_template.php");
-				}
-			}
-			$textstring .= preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE);
-		}
-	}
-	 
-	if (!$BANNER_TABLE) 
-	{
-		if (file_exists(THEME."banner_template.php")) {
-			require(THEME."banner_template.php");
-		} else {
-			require(e_BASE.$THEMES_DIRECTORY."templates/banner_template.php");
-		}
-	}
-	$textstart = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_START);
-	$textend = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_END);
-	$text = $textstart.$textstring.$textend;
-	 
-	echo $text;
-	 
-	require_once(FOOTERF);
-	exit;
-}
-	
-	
-$BANNER_LOGIN_TABLE_LOGIN = $rs->form_text("clientlogin", 30, $id, 20, "tbox");
-$BANNER_LOGIN_TABLE_PASSW = $rs->form_password("clientpassword", 30, "", 20, "tbox");
-$BANNER_LOGIN_TABLE_SUBMIT = $rs->form_button("submit", "clientsubmit", LAN_CONTINUE);
-	
-if (!$BANNER_LOGIN_TABLE) {
-	if (file_exists(THEME."banner_template.php")) {
-		require_once(THEME."banner_template.php");
-	} else {
-		require_once(e_BASE.$THEMES_DIRECTORY."templates/banner_template.php");
-	}
-}
-$text = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_LOGIN_TABLE);
-$ns->tablerender(BANNERLAN_19, $text);
-	
-	
-require_once(FOOTERF);
-	
+require_once(e_PLUGIN."banner/banner.php");
+
+exit();
+?>
\ No newline at end of file
diff --git a/e107_files/shortcode/banner.php b/e107_files/shortcode/banner.php
deleted file mode 100644
index df15a1afe..000000000
--- a/e107_files/shortcode/banner.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-// $Id: banner.php,v 1.1 2009-01-08 19:28:11 mcfly_e107 Exp $
-
-function banner_shortcode($parm)
-{
-	global $menu_pref;
-	$e107 = e107::getInstance();
-	$ret = '';
-
-	$text = '';
-	mt_srand ((double) microtime() * 1000000);
-	$seed = mt_rand(1,2000000000);
-	$time = time();
-
-	$query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)".($parm ? " AND banner_campaign='".$e107->tp->toDB($parm)."'" : '')."
-	AND banner_active IN (".USERCLASS_LIST.")
-	ORDER BY RAND($seed) LIMIT 1";
-
-	if($e107->sql->db_Select('banner', 'banner_id, banner_image, banner_clickurl', $query))
-	{
-		$row = $e107->sql->db_Fetch();
-
-		if(!$row['banner_image'])
-		{
-			return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>no image assigned to this banner</a>";
-		}
-
-		$fileext1 = substr(strrchr($row['banner_image'], '.'), 1);
-		$e107->sql->db_Update('banner', 'banner_impressions=banner_impressions+1 WHERE banner_id='.(int)$row['banner_id']);
-		switch ($fileext1)
-		{
-			case 'swf':
-				return  "
-				<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width=\"468\" height=\"60\">\n
-				<param name=\"movie\" value=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\">\n
-				<param name=\"quality\" value=\"high\">\n
-				<param name=\"SCALE\" value=\"noborder\">\n
-				<embed src=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\" width=\"468\" height=\"60\" scale=\"noborder\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\"></embed>
-				</object>
-				";
-				break;
-			case 'html':
-			case 'js':
-			case 'php':			// Code - may 'echo' text, or may return it as a value
-				$file_data = file_get_contents(e_IMAGE.'banners/'.$row['banner_image']);
-				return $file_data;
-				break;
-			default:
-				$ban_ret = "<img src='".e_IMAGE_ABS.'banners/'.$row['banner_image']."' alt='".$row['banner_clickurl']."' style='border:0' />";
-				break;
-		}
-		return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>".$ban_ret.'</a>';
-	}
-	else
-	{
-		return '&nbsp;';
-	}
-}
-?>
\ No newline at end of file
diff --git a/e107_handlers/shortcode_handler.php b/e107_handlers/shortcode_handler.php
index c9c6d825e..88eb7744e 100644
--- a/e107_handlers/shortcode_handler.php
+++ b/e107_handlers/shortcode_handler.php
@@ -9,9 +9,9 @@
  * e107 Shortcode handler
  *
  * $Source: /cvs_backup/e107_0.8/e107_handlers/shortcode_handler.php,v $
- * $Revision: 1.29 $
- * $Date: 2009-08-20 16:41:29 $
- * $Author: secretr $
+ * $Revision: 1.30 $
+ * $Date: 2009-09-18 22:20:39 $
+ * $Author: e107coders $
 */
 
 if (!defined('e107_INIT')) { exit; }
@@ -116,6 +116,8 @@ function initShortcodeClass($class, $force = false)
 	}
 }
 
+	
+
 class e_shortcode
 {
 	var $scList = array();						// The actual code - added by parsing files or when plugin codes encountered. Array key is the shortcode name.
@@ -157,6 +159,9 @@ class e_shortcode
 			}
 		}
 
+
+		$this->loadPluginShortcodes();
+		
 		// Register all .sc files found in plugin directories (via pref)
 		if(varset($pref['shortcode_list'], '') != '')
 		{
@@ -182,6 +187,45 @@ class e_shortcode
 			}
 		}
 	}
+	/**
+	 * Load Plugin Shortcode Batch files (e_shortcode.php) for use site-wide. 
+	 * Equivalent to multiple .sc files in the plugin's folder. 
+	 * @return 
+	 */
+	function loadPluginShortcodes()
+	{
+		$pref = e107::getConfig('core')->getPref();
+		
+		if(!vartrue($pref['e_shortcode_list']))
+		{
+			return;
+		}
+
+		foreach($pref['e_shortcode_list'] as $key=>$val)
+		{
+			if(!e107::isInstalled($key) || !include_once(e_PLUGIN.$key.'/e_shortcode.php'))
+			{
+				continue;
+			}
+			$path = e_PLUGIN.$key.'/e_shortcode.php';
+			$classFunc = $key.'_shortcodes';
+			$this->scClasses[$classFunc] = new $classFunc;
+			
+			$tmp = get_class_methods($classFunc);
+			foreach($tmp as $c)
+			{				
+				if(strpos($c, 'sc_') === 0)
+				{
+					$sc_func = substr($c, 3);
+					$code = strtoupper($sc_func);
+					if(!$this->isRegistered($scode))
+					{
+						$this->registered_codes[$code] = array('type' => 'class', 'path' => $path, 'class' => $classFunc);
+					}							
+				}
+			}			
+		}
+	}
 
 	function loadCoreShortcodes()
 	{
diff --git a/e107_plugins/banner/banner.php b/e107_plugins/banner/banner.php
index e73fec3a7..3a320c47c 100644
--- a/e107_plugins/banner/banner.php
+++ b/e107_plugins/banner/banner.php
@@ -2,19 +2,30 @@
 /*
  * e107 website system
  *
- * Copyright (C) 2001-2008 e107 Inc (e107.org)
+ * Copyright (C) 2009 e107 Inc (e107.org)
  * Released under the terms and conditions of the
  * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
  *
  * 
  *
  * $Source: /cvs_backup/e107_0.8/e107_plugins/banner/banner.php,v $
- * $Revision: 1.1 $
- * $Date: 2009-07-23 16:43:03 $
+ * $Revision: 1.2 $
+ * $Date: 2009-09-18 22:20:39 $
  * $Author: e107coders $
  */
 
-require_once("class2.php");
+if (!defined('e107_INIT'))
+{ 
+	require_once("../../class2.php");
+}
+
+if (!e107::isInstalled('banner'))
+{
+	header("location:".e_BASE."index.php"); 
+}
+
+e107::getLan(e_PLUGIN."banner/languages/".e_LANGUAGE."_banner.php");
+
 require_once(e_HANDLER."form_handler.php");
 $rs = new form;
 	
diff --git a/e107_plugins/banner/banner_menu.php b/e107_plugins/banner/banner_menu.php
index d5cf1e3ba..f0fd674da 100644
--- a/e107_plugins/banner/banner_menu.php
+++ b/e107_plugins/banner/banner_menu.php
@@ -3,7 +3,7 @@
 + ----------------------------------------------------------------------------+
 |     e107 website system
 |
-|     �Steve Dunstan 2001-2002
+|     �Steve Dunstan 2001-2002
 |     http://e107.org
 |     jalist@e107.org
 |
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $Source: /cvs_backup/e107_0.8/e107_plugins/banner/banner_menu.php,v $
-|     $Revision: 1.1 $
-|     $Date: 2009-07-23 16:43:03 $
+|     $Revision: 1.2 $
+|     $Date: 2009-09-18 22:20:39 $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -30,7 +30,7 @@ To define your own banner to use here ...
 3. Save file
 */
 
-
+e107::getLan(e_PLUGIN."banner/languages/".e_LANGUAGE."_menu_banner.php");
 global $THEMES_DIRECTORY;
 if (file_exists(THEME."banner_template.php")) 
 {
diff --git a/e107_plugins/banner/e_sc.php b/e107_plugins/banner/e_sc.php
deleted file mode 100644
index 711a076e4..000000000
--- a/e107_plugins/banner/e_sc.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-// $Id: e_sc.php,v 1.1 2009-07-23 16:43:03 e107coders Exp $
-
-function banner_shortcode($parm)
-{
-	global $menu_pref;
-	$e107 = e107::getInstance();
-	$ret = '';
-
-	$text = '';
-	mt_srand ((double) microtime() * 1000000);
-	$seed = mt_rand(1,2000000000);
-	$time = time();
-
-	$query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)".($parm ? " AND banner_campaign='".$e107->tp->toDB($parm)."'" : '')."
-	AND banner_active IN (".USERCLASS_LIST.")
-	ORDER BY RAND($seed) LIMIT 1";
-
-	if($e107->sql->db_Select('banner', 'banner_id, banner_image, banner_clickurl', $query))
-	{
-		$row = $e107->sql->db_Fetch();
-
-		if(!$row['banner_image'])
-		{
-			return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>no image assigned to this banner</a>";
-		}
-
-		$fileext1 = substr(strrchr($row['banner_image'], '.'), 1);
-		$e107->sql->db_Update('banner', 'banner_impressions=banner_impressions+1 WHERE banner_id='.(int)$row['banner_id']);
-		switch ($fileext1)
-		{
-			case 'swf':
-				return  "
-				<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width=\"468\" height=\"60\">\n
-				<param name=\"movie\" value=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\">\n
-				<param name=\"quality\" value=\"high\">\n
-				<param name=\"SCALE\" value=\"noborder\">\n
-				<embed src=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\" width=\"468\" height=\"60\" scale=\"noborder\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\"></embed>
-				</object>
-				";
-				break;
-			case 'html':
-			case 'js':
-			case 'php':			// Code - may 'echo' text, or may return it as a value
-				$file_data = file_get_contents(e_IMAGE.'banners/'.$row['banner_image']);
-				return $file_data;
-				break;
-			default:
-				$ban_ret = "<img src='".e_IMAGE_ABS.'banners/'.$row['banner_image']."' alt='".$row['banner_clickurl']."' style='border:0' />";
-				break;
-		}
-		return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>".$ban_ret.'</a>';
-	}
-	else
-	{
-		return '&nbsp;';
-	}
-}
-?>
\ No newline at end of file
diff --git a/e107_plugins/banner/e_shortcode.php b/e107_plugins/banner/e_shortcode.php
new file mode 100644
index 000000000..ef85734e0
--- /dev/null
+++ b/e107_plugins/banner/e_shortcode.php
@@ -0,0 +1,68 @@
+<?php
+/*
+* Copyright (c) e107 Inc 2009 - e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
+* $Id: e_shortcode.php,v 1.1 2009-09-18 22:20:39 e107coders Exp $
+*
+* Banner shortcode batch class - shortcodes available site-wide. ie. equivalent to multiple .sc files.
+*/
+
+class banner_shortcodes // must match the plugin's folder name. ie. [PLUGIN_FOLDER]_shortcodes
+{	
+	function sc_banner($parm)
+	{
+		global $menu_pref;
+		$e107 = e107::getInstance();
+			
+		$ret = '';
+	
+		$text = '';
+		mt_srand ((double) microtime() * 1000000);
+		$seed = mt_rand(1,2000000000);
+		$time = time();
+	
+		$query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)".($parm ? " AND banner_campaign='".$e107->tp->toDB($parm)."'" : '')."
+		AND banner_active IN (".USERCLASS_LIST.")
+		ORDER BY RAND($seed) LIMIT 1";
+	
+		if($e107->sql->db_Select('banner', 'banner_id, banner_image, banner_clickurl', $query))
+		{
+			$row = $e107->sql->db_Fetch();
+	
+			if(!$row['banner_image'])
+			{
+				return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>no image assigned to this banner</a>";
+			}
+	
+			$fileext1 = substr(strrchr($row['banner_image'], '.'), 1);
+			$e107->sql->db_Update('banner', 'banner_impressions=banner_impressions+1 WHERE banner_id='.(int)$row['banner_id']);
+			switch ($fileext1)
+			{
+				case 'swf':
+					return  "
+					<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width=\"468\" height=\"60\">\n
+					<param name=\"movie\" value=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\">\n
+					<param name=\"quality\" value=\"high\">\n
+					<param name=\"SCALE\" value=\"noborder\">\n
+					<embed src=\"".e_IMAGE_ABS."banners/".$row['banner_image']."\" width=\"468\" height=\"60\" scale=\"noborder\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\"></embed>
+					</object>
+					";
+					break;
+				case 'html':
+				case 'js':
+				case 'php':			// Code - may 'echo' text, or may return it as a value
+					$file_data = file_get_contents(e_IMAGE.'banners/'.$row['banner_image']);
+					return $file_data;
+					break;
+				default:
+					$ban_ret = "<img src='".e_IMAGE_ABS.'banners/'.$row['banner_image']."' alt='".$row['banner_clickurl']."' style='border:0' />";
+					break;
+			}
+			return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>".$ban_ret.'</a>';
+		}
+		else
+		{
+			return '&nbsp;';
+		}
+	}
+}
+?>
\ No newline at end of file
diff --git a/e107_plugins/banner/languages/lan_banner.php b/e107_plugins/banner/languages/English_banner.php
similarity index 92%
rename from e107_plugins/banner/languages/lan_banner.php
rename to e107_plugins/banner/languages/English_banner.php
index 3e1ab981a..71cfcd391 100644
--- a/e107_plugins/banner/languages/lan_banner.php
+++ b/e107_plugins/banner/languages/English_banner.php
@@ -8,9 +8,9 @@
  *
  * 
  *
- * $Source: /cvs_backup/e107_0.8/e107_plugins/banner/languages/lan_banner.php,v $
+ * $Source: /cvs_backup/e107_0.8/e107_plugins/banner/languages/English_banner.php,v $
  * $Revision: 1.1 $
- * $Date: 2009-07-23 16:43:03 $
+ * $Date: 2009-09-18 22:20:39 $
  * $Author: e107coders $
  */
  
diff --git a/e107_plugins/banner/languages/English.php b/e107_plugins/banner/languages/English_menu_banner.php
similarity index 95%
rename from e107_plugins/banner/languages/English.php
rename to e107_plugins/banner/languages/English_menu_banner.php
index 079025287..ea1d661e9 100644
--- a/e107_plugins/banner/languages/English.php
+++ b/e107_plugins/banner/languages/English_menu_banner.php
@@ -3,9 +3,9 @@
 + ----------------------------------------------------------------------------+
 |     e107 website system - Language File.
 |
-|     $Source: /cvs_backup/e107_0.8/e107_plugins/banner/languages/English.php,v $
+|     $Source: /cvs_backup/e107_0.8/e107_plugins/banner/languages/English_menu_banner.php,v $
 |     $Revision: 1.1 $
-|     $Date: 2009-07-23 16:43:03 $
+|     $Date: 2009-09-18 22:20:39 $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */