From e255180539a9fdfac8a8b51d1aefc6f4909d8e07 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Sun, 30 Sep 2012 19:55:52 +0000
Subject: [PATCH] Added caching of 'payments' table, rewrote another 'else'
 block

---
 .gitattributes                          |  1 +
 inc/classes/cachesystem.class.php       |  5 +-
 inc/loader/load-payments.php            | 73 +++++++++++++++++++++++++
 inc/modules/admin/what-payments.php     | 13 +++--
 inc/modules/member/what-unconfirmed.php | 21 ++++---
 5 files changed, 101 insertions(+), 12 deletions(-)
 create mode 100644 inc/loader/load-payments.php

diff --git a/.gitattributes b/.gitattributes
index e8d1746f45..69ce45db49 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -402,6 +402,7 @@ inc/loader/load-extensions.php svneol=native#text/plain
 inc/loader/load-filter.php svneol=native#text/plain
 inc/loader/load-imprint.php svneol=native#text/plain
 inc/loader/load-modules.php svneol=native#text/plain
+inc/loader/load-payments.php svneol=native#text/plain
 inc/loader/load-points_data.php svneol=native#text/plain
 inc/loader/load-refdepths.php svneol=native#text/plain
 inc/loader/load-refsystem.php svneol=native#text/plain
diff --git a/inc/classes/cachesystem.class.php b/inc/classes/cachesystem.class.php
index 729197a03d..713c1696ce 100644
--- a/inc/classes/cachesystem.class.php
+++ b/inc/classes/cachesystem.class.php
@@ -213,6 +213,9 @@ class CacheSystem {
 				} elseif ($this->name == 'earning') {
 					// Table 'earning'
 					$GLOBALS['cache_array']['earning'][$k][$data['earning_id']] = $v;
+				} elseif ($this->name == 'payments') {
+					// Table 'payments'
+					$GLOBALS['cache_array']['payments'][$k][$data['id']] = $v;
 				} elseif (is_array($v)) {
 					// Serialize and BASE64-encode the array
 					$v = base64_encode(serialize($v));
@@ -224,7 +227,7 @@ class CacheSystem {
 					$this->removeCacheFile(true);
 
 					// Unsupported/unhandled cache detected
-					reportBug(__METHOD__, __LINE__, 'Unsupported cache ' . $this->name . ' detected.');
+					reportBug(__METHOD__, __LINE__, 'Unsupported cache ' . $this->name . ' detected, data=' . print_r($data, true) . ',k=' . $k . ',v=' . $v);
 				}
 
 				// Write cache line to file
diff --git a/inc/loader/load-payments.php b/inc/loader/load-payments.php
new file mode 100644
index 0000000000..c11c58f63f
--- /dev/null
+++ b/inc/loader/load-payments.php
@@ -0,0 +1,73 @@
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL                                Start: 09/30/2012 *
+ * ===================                          Last change: 09/30/2012 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : load-payments.php                                *
+ * -------------------------------------------------------------------- *
+ * Short description : Load more cache files                            *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Mehr Cache-Dateien nachladen                     *
+ * -------------------------------------------------------------------- *
+ * $Revision::                                                        $ *
+ * $Date::                                                            $ *
+ * $Tag:: 0.2.1-FINAL                                                 $ *
+ * $Author::                                                          $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder                           *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team                   *
+ * For more information visit: http://mxchange.org                      *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+	die();
+} elseif (isInstallationPhase()) {
+	// Use this code if you don't want to run this cache loader on installation phase
+	return;
+}
+
+// Let's start with the admins table...
+if (($GLOBALS['cache_instance']->loadCacheFile('payments')) && ($GLOBALS['cache_instance']->extensionVersionMatches('payments'))) {
+	// Load cache
+	$GLOBALS['cache_array']['payments'] = $GLOBALS['cache_instance']->getArrayFromCache();
+} elseif (isHtmlOutputMode()) {
+	// Create cache file
+	$GLOBALS['cache_instance']->init();
+
+	// Load every data from DB to cache file
+	//$add = runFilterChain('sql_admin_extra_data');
+
+	// Query the database about this
+	$result = SQL_QUERY('SELECT * FROM `{?_MYSQL_PREFIX?}_payments` ORDER BY `id` ASC', __FILE__, __LINE__);
+	while ($dummy = SQL_FETCHARRAY($result)) {
+		// Save row
+		$GLOBALS['cache_instance']->addRow($dummy);
+	} // END - while
+
+	// Free memory
+	SQL_FREERESULT($result);
+
+	// Close cache
+	$GLOBALS['cache_instance']->storeExtensionVersion('payments');
+	$GLOBALS['cache_instance']->finalize();
+}
+
+// [EOF]
+?>
diff --git a/inc/modules/admin/what-payments.php b/inc/modules/admin/what-payments.php
index ef16f138e4..66e61a4694 100644
--- a/inc/modules/admin/what-payments.php
+++ b/inc/modules/admin/what-payments.php
@@ -70,15 +70,20 @@ if (isFormSent()) {
 			break;
 	} // END - switch
 
+	// Nothing has changed by default
+	$content = '<span class="bad">{--SETTINGS_NOT_SAVED--}</span>';
+
 	// Save settings
 	if (countSqls() > 0) {
 		// Run all queries
 		runFilterChain('run_sqls');
+
+		// Purge cache
+		rebuildCache('payments', 'payments');
+
+		// Change message
 		$content = '<span class="good">{--SETTINGS_SAVED--}</span>';
-	} else {
-		// Nothing has changed!
-		$content = '<span class="bad">{--SETTINGS_NOT_SAVED--}</span>';
-	}
+	} // END - if
 
 	// Output template
 	displayMessage($content);
diff --git a/inc/modules/member/what-unconfirmed.php b/inc/modules/member/what-unconfirmed.php
index 16e247338a..1da948a63c 100644
--- a/inc/modules/member/what-unconfirmed.php
+++ b/inc/modules/member/what-unconfirmed.php
@@ -94,20 +94,27 @@ LIMIT 1",
 } elseif (isGetRequestElementSet('mailid')) {
 	// Display regular member mail by loading its full data
 	$result_data = SQL_QUERY_ESC("SELECT
-	s.id, s.subject, p.text, s.timestamp_ordered AS `timestamp`,
-	s.cat_id, pay.price AS `points`, p.sender, pay.time, p.data_type
+	s.`id`,
+	s.`subject`,
+	p.`text`,
+	s.`timestamp_ordered` AS `timestamp`,
+	s.`cat_id`,
+	pay.`price` AS `points`,
+	p.`sender`,
+	pay.`time`,
+	p.`data_type`
 FROM
-	`{?_MYSQL_PREFIX?}_user_stats` AS s
+	`{?_MYSQL_PREFIX?}_user_stats` AS `s`
 LEFT JOIN
-	`{?_MYSQL_PREFIX?}_pool` AS p
+	`{?_MYSQL_PREFIX?}_pool` AS `p`
 ON
 	s.pool_id=p.id
 LEFT JOIN
-	`{?_MYSQL_PREFIX?}_payments` AS pay
+	`{?_MYSQL_PREFIX?}_payments` AS `pay`
 ON
-	p.payment_id=pay.id
+	p.`payment_id`=pay.`id`
 WHERE
-	s.id=%s
+	s.`id`=%s
 LIMIT 1",
 		array(bigintval(getRequestElement('mailid'))), __FILE__, __LINE__);
 
-- 
2.39.5