]> git.mxchange.org Git - mailer.git/commitdiff
Fixes for transfer list and per-user temporary tables (concurrent access)
authorRoland Häder <roland@mxchange.org>
Mon, 27 Sep 2010 15:42:41 +0000 (15:42 +0000)
committerRoland Häder <roland@mxchange.org>
Mon, 27 Sep 2010 15:42:41 +0000 (15:42 +0000)
inc/extensions/ext-booking.php
inc/modules/member/what-transfer.php

index e201416f831d140cb6715ae067a64aafbbd19bb6..028bf2bddc1b97d5b8bc2038e0b7c55bc52206e6 100644 (file)
@@ -63,6 +63,7 @@ switch (getExtensionMode()) {
 `subject` VARCHAR(255) NOT NULL DEFAULT 'missing',
 `mode` ENUM('add','sub') NOT NULL DEFAULT 'add',
 `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.0000,
+`comments` TINYTEXT NULL DEFAULT NULL,
 `recorded` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 INDEX (`userid`),
 PRIMARY KEY (`id`)
@@ -70,7 +71,7 @@ PRIMARY KEY (`id`)
 
                // Admin menu
                addAdminMenuSql('setup','config_booking','Kontoauszug','Einstellungen am Kontoauszug f&uuml;r Mitglieder vornehmen.', 14);
-               addAdminMenuSql('user','list_booking','Kontoauszug','Kontoausz&uuml;ge aller Ihrer Mitglieder oder eines einzelnen Mitgliedes anzeigen.',10);
+               addAdminMenuSql('user','list_booking','Kontoausz&uuml;ge','Kontoausz&uuml;ge aller Ihrer Mitglieder oder eines einzelnen Mitgliedes anzeigen.',10);
 
                // Member menu
                addMemberMenuSql('main','booking','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Kontoauszug','N','Y',5);
index b5b2ad477255d063c15f57abbf4acf313f994b77..3c6d3e1c1bebec10f1d10f32dd3a02fdafef47dc 100644 (file)
@@ -52,10 +52,14 @@ if ((!isExtensionActive('transfer')) && (!isAdmin())) {
 
 // Check for mode in GET
 $mode = '';
-if (isGetRequestParameterSet('mode')) $mode = getRequestParameter('mode');
+if (isGetRequestParameterSet('mode')) {
+       $mode = getRequestParameter('mode');
+} // END - if
 
 // Check for "faker"
-if ((getUserData('opt_in') != 'Y') && ($mode == 'new')) $mode = '';
+if ((getUserData('opt_in') != 'Y') && ($mode == 'new')) {
+       $mode = '';
+} // END - if
 
 switch ($mode) {
        case 'new': // Start new transfer
@@ -247,9 +251,16 @@ switch ($mode) {
 
                        // Generate Code
                        if (getConfig('transfer_code') > 0) {
+                               // Generate random number
                                $rand = mt_rand(0, 99999);
+
+                               // Generate CAPTCHA code
                                $code = generateRandomCode(getConfig('transfer_code'), $rand, getMemberId(), $content['max_transferable']);
+
+                               // Generate image (HTML code)
                                $img = generateImageOrCode($code, false);
+
+                               // Add all and hidden field
                                $content['captcha_code'] = '<input type="hidden" name="code_chk" value="' . $rand . '" /><input type="text" name="code" class="form_field" size="5" maxlength="7"' . $content['to_disabled'] . ' />&nbsp;' . $img;
                        } else {
                                $code = '00000';
@@ -337,12 +348,14 @@ switch ($mode) {
                break;
 
        case 'list_all': // List all transactions
-               // We fill a temporary table with data from both tables. This is much easier
-               // to code and unstand by you as sub-SELECT queries. I know this is not the
-               // fastest way but it shall be fine for now.
-               //
-               // First of all create the temporary table
-               $result = SQL_QUERY("CREATE TEMPORARY TABLE `{?_MYSQL_PREFIX?}_transfers_tmp` (
+               /*
+                * Fill a temporary table with data from both tables. This is much
+                * easier to code and unstandable by you as sub-SELECT queries. I know
+                * this is not the fastest way but it shall be fine for now.
+                */
+
+               // First of all create the per-user temporary table
+               $result = SQL_QUERY_ESC("CREATE TEMPORARY TABLE `{?_MYSQL_PREFIX?}_%s_transfers_tmp` (
 `trans_id` VARCHAR(12) NOT NULL DEFAULT '',
 `party_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 `points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
@@ -350,7 +363,7 @@ switch ($mode) {
 `time_trans` VARCHAR(10) NOT NULL DEFAULT 0,
 `trans_type` ENUM('IN','OUT') NOT NULL DEFAULT 'IN',
 KEY (`party_userid`)
-) TYPE=HEAP", __FILE__, __LINE__);
+) TYPE=HEAP", array(getMemberId()), __FILE__, __LINE__);
 
                // Let's begin with the incoming list
                $result = SQL_QUERY_ESC("SELECT `trans_id`, `from_userid`, `points`, `reason`, `time_trans` FROM `{?_MYSQL_PREFIX?}_user_transfers_in` WHERE `userid`=%s ORDER BY `id` ASC LIMIT {?transfer_max?}",
@@ -358,7 +371,7 @@ KEY (`party_userid`)
                while ($DATA = SQL_FETCHROW($result)) {
                        $DATA[] = 'IN';
                        $DATA = implode("','", $DATA);
-                       $res_temp = SQL_QUERY("INSERT INTO `{?_MYSQL_PREFIX?}_transfers_tmp` (`trans_id`, `party_userid`, `points`, `reason`, `time_trans`, `trans_type`) VALUES ('" . $DATA . "')", __FILE__, __LINE__);
+                       $res_temp = SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_%s_transfers_tmp` (`trans_id`, `party_userid`, `points`, `reason`, `time_trans`, `trans_type`) VALUES ('" . $DATA . "')", array(getMemberId()), __FILE__, __LINE__);
                } // END - while
 
                // Free memory
@@ -370,23 +383,25 @@ KEY (`party_userid`)
                while ($DATA = SQL_FETCHROW($result)) {
                        $DATA[] = 'OUT';
                        $DATA = implode("','", $DATA);
-                       $res_temp = SQL_QUERY("INSERT INTO `{?_MYSQL_PREFIX?}_transfers_tmp` (`trans_id`, `party_userid`, `points`, `reason`, `time_trans`, `trans_type`) VALUES ('" . $DATA . "')", __FILE__, __LINE__);
+                       $res_temp = SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_%s_transfers_tmp` (`trans_id`, `party_userid`, `points`, `reason`, `time_trans`, `trans_type`) VALUES ('" . $DATA . "')", array(getMemberId()), __FILE__, __LINE__);
                } // END - while
 
                // Free memory
                SQL_FREERESULT($result);
 
+               // Search for entries
+               $result = SQL_QUERY_ESC("SELECT `party_userid`, `trans_id`, `points`, `reason`, `time_trans`, `trans_type` FROM `{?_MYSQL_PREFIX?}_%s_transfers_tmp` ORDER BY `time_trans` DESC",
+                       array(getMemberId()), __FILE__, __LINE__);
+
                $total = '0';
                if (!SQL_HASZERONUMS($result)) {
-                       // Search for entries
-                       $result = SQL_QUERY("SELECT `party_userid`, `trans_id`, `points`, `reason`, `time_trans`, `trans_type` FROM `{?_MYSQL_PREFIX?}_transfers_tmp` ORDER BY `time_trans` DESC",
-                               __FILE__, __LINE__);
-
                        // Output rows
                        $OUT = '';
                        while ($content = SQL_FETCHARRAY($result)) {
-                               // Rewrite points
-                               if ($content['trans_type'] == 'OUT') $content['points'] = '-'.$content['points']."";
+                               // Rewrite points if OUT
+                               if ($content['trans_type'] == 'OUT') {
+                                       $content['points'] = $content['points'] * -1;
+                               } // END - if
 
                                // Prepare content for template
                                $content['time']   = generateDateTime($content['time_trans'], 3);
@@ -397,9 +412,6 @@ KEY (`party_userid`)
                                // Add points and switch color
                                $total += $content['points'];
                        } // END - while
-
-                       // Free memory
-                       SQL_FREERESULT($result);
                } else {
                        // Nothing for in and out
                        $OUT = '<tr>
@@ -409,6 +421,9 @@ KEY (`party_userid`)
 </tr>';
                }
 
+               // Free memory
+               SQL_FREERESULT($result);
+
                // ... and add them to a constant for the template
                $content['rows'] =  $OUT;
 
@@ -422,7 +437,7 @@ KEY (`party_userid`)
                $content['balance'] = '{--TRANSFER_TOTAL_BALANCE--}';
 
                // At the end we don't need a temporary table in memory
-               $result = SQL_QUERY("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_transfers_tmp`", __FILE__, __LINE__);
+               $result = SQL_QUERY_ESC("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_%s_transfers_tmp`", array(getMemberId()), __FILE__, __LINE__);
 
                // Load final template
                loadTemplate('member_transfer_list', false, $content);