(no commit message)
[mailer.git] / 0.2.1 / inc / modules / member / what-transfer.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 10/07/2004 *\r
4  * ================                             Last change: 10/07/2004 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : what-transfer.php                                *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Point transfers                                  *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Punktetransfers                                  *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2007 by Roland Haeder                           *\r
16  * For more information visit: http://www.mxchange.org                  *\r
17  *                                                                      *\r
18  * This program is free software; you can redistribute it and/or modify *\r
19  * it under the terms of the GNU General Public License as published by *\r
20  * the Free Software Foundation; either version 2 of the License, or    *\r
21  * (at your option) any later version.                                  *\r
22  *                                                                      *\r
23  * This program is distributed in the hope that it will be useful,      *\r
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
26  * GNU General Public License for more details.                         *\r
27  *                                                                      *\r
28  * You should have received a copy of the GNU General Public License    *\r
29  * along with this program; if not, write to the Free Software          *\r
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
31  * MA  02110-1301  USA                                                  *\r
32  ************************************************************************/\r
33 \r
34 // Some security stuff...\r
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
38         require($INC);\r
39 }\r
40  elseif (!IS_LOGGED_IN())\r
41 {\r
42         LOAD_URL(URL."/modules.php?module=index");\r
43 }\r
44  elseif ((!EXT_IS_ACTIVE("transfer")) && (!IS_ADMIN()))\r
45 {\r
46         ADD_FATAL(EXTENSION_PROBLEM_EXT_INACTIVE, "transfer");\r
47         return;\r
48 }\r
49 \r
50 // Add description as navigation point\r
51 ADD_DESCR("member", basename(__FILE__));\r
52 \r
53 // Load data\r
54 $result = SQL_QUERY_ESC("SELECT opt_in FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",\r
55  array($GLOBALS['userid']), __FILE__, __LINE__);\r
56 list($opt_in) = SQL_FETCHROW($result);\r
57 \r
58 // Free memory\r
59 SQL_FREERESULT($result);\r
60 \r
61 $MODE = "";\r
62 if (!empty($_GET['mode'])) $MODE = $_GET['mode'];\r
63 \r
64 // Check for "faker"\r
65 if (($opt_in == "N") && ($MODE == "new")) $MODE = "";\r
66 \r
67 switch ($MODE)\r
68 {\r
69 case "new": // Start new transfer\r
70         // Get total points and subtract the balance amount from it = maximum transferable points\r
71         $result = SQL_QUERY_ESC("SELECT SUM(points) FROM "._MYSQL_PREFIX."_user_points WHERE userid=%d AND points > 0",\r
72          array($GLOBALS['userid']), __FILE__, __LINE__);\r
73         list($total) = SQL_FETCHROW($result);\r
74         SQL_FREERESULT($result);\r
75 \r
76         // Get totally used points and password\r
77         $result = SQL_QUERY_ESC("SELECT used_points, password FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",\r
78          array($GLOBALS['userid']), __FILE__, __LINE__);\r
79         list($used, $pass) = SQL_FETCHROW($result);\r
80         SQL_FREERESULT($result);\r
81 \r
82         // Remember maximum value for template\r
83         define('__TRANSFER_MAX_VALUE', round($total - $used - $CONFIG['transfer_balance'] - 0.5));\r
84 \r
85         if (isset($_POST['ok']))\r
86         {\r
87                 // Add new transfer\r
88                 if ($CONFIG['transfer_code'] > 0)\r
89                 {\r
90                         // Check for code\r
91                         $code = GEN_RANDOM_CODE($CONFIG['transfer_code'], $_POST['code_chk'], $GLOBALS['userid'], __TRANSFER_MAX_VALUE);\r
92                         $valid_code = ($code == $_POST['code']);\r
93                 }\r
94                  else\r
95                 {\r
96                         // Zero length (= disabled) is always valid!\r
97                         $valid_code = true;\r
98                 }\r
99 \r
100                 // Test password\r
101                 $valid_pass = ($pass == generateHash($_POST['password'], $pass));\r
102 \r
103                 // Test transfer amount\r
104                 $valid_amount = ((!empty($_POST['points'])) && ($_POST['points'] <= __TRANSFER_MAX_VALUE));\r
105 \r
106                 // Test reason for transfer\r
107                 $valid_reason = (!empty($_POST['reason']));\r
108 \r
109                 // Test if a recipient is selected\r
110                 $valid_recipient = ($_POST['to_uid'] > 0);\r
111 \r
112                 // Check for nickname extension and set additional data\r
113                 $nick = false; $ADD = ", userid";\r
114                 if (EXT_IS_ACTIVE("nickname"))\r
115                 {\r
116                         $ADD = ", nickname";\r
117                         $nick = true;\r
118                 }\r
119                 // Re-check receivers and own personal data\r
120                 $result = SQL_QUERY_ESC("SELECT userid, sex, surname, family, email".$ADD." FROM "._MYSQL_PREFIX."_user_data WHERE userid IN ('%s', '%s') AND status='CONFIRMED' ORDER BY userid LIMIT 2",\r
121                  array($GLOBALS['userid'], bigintval($_POST['to_uid'])), __FILE__, __LINE__);\r
122                 $valid_data = (SQL_NUMROWS($result) == 2);\r
123 \r
124                 if ($valid_code && $valid_pass && $valid_amount && $valid_reason && $valid_recipient)\r
125                 {\r
126                         // Let's start the transfer and load user data\r
127                         list($uid1, $sex1, $sname1, $fname1, $email1, $nick1) = SQL_FETCHROW($result);\r
128                         list($uid2, $sex2, $sname2, $fname2, $email2, $nick2) = SQL_FETCHROW($result);\r
129                         SQL_FREERESULT($result);\r
130                         if ($uid1 == $GLOBALS['userid'])\r
131                         {\r
132                                 // Data row 1 is sender's data\r
133                                 define('__SENDER_SEX'     , TRANSLATE_SEX($sex1));\r
134                                 define('__SENDER_NICK'    , $nick1);\r
135                                 define('__SENDER_SNAME'   , $sname1);\r
136                                 define('__SENDER_FNAME'   , $fname1);\r
137                                 define('__SENDER_EMAIL'   , $email1);\r
138                                 // Data row 2 is recpient's data\r
139                                 define('__RECIPIENT_SEX'  , TRANSLATE_SEX($sex2));\r
140                                 define('__RECIPIENT_NICK' , $nick2);\r
141                                 define('__RECIPIENT_SNAME', $sname2);\r
142                                 define('__RECIPIENT_FNAME', $fname2);\r
143                                 define('__RECIPIENT_EMAIL', $email2);\r
144 \r
145                                 // Prepare variables for testing\r
146                                 $TEST_NICK_SENDER = $nick1;\r
147                                 $TEST_NICK_REC = $nick2;\r
148                         }\r
149                          else\r
150                         {\r
151                                 // Data row 2 is sender's data\r
152                                 define('__SENDER_SEX'     , TRANSLATE_SEX($sex2));\r
153                                 define('__SENDER_NICK'    , $nick2);\r
154                                 define('__SENDER_SNAME'   , $sname2);\r
155                                 define('__SENDER_FNAME'   , $fname2);\r
156                                 define('__SENDER_EMAIL'   , $email2);\r
157                                 // Data row 1 is recpient's data\r
158                                 define('__RECIPIENT_SEX'  , TRANSLATE_SEX($sex1));\r
159                                 define('__RECIPIENT_NICK' , $nick1);\r
160                                 define('__RECIPIENT_SNAME', $sname1);\r
161                                 define('__RECIPIENT_FNAME', $fname1);\r
162                                 define('__RECIPIENT_EMAIL', $email1);\r
163 \r
164                                 // Prepare variables for testing\r
165                                 $TEST_NICK_SENDER = $nick2;\r
166                                 $TEST_NICK_REC = $nick1;\r
167                         }\r
168                         // Sender's UID is always currently stored in cookie userid...\r
169                         define('__SENDER_UID'     , $GLOBALS['userid']);\r
170                         define('__RECIPIENT_UID'  , $_POST['to_uid']);\r
171 \r
172                         $SENDER = __SENDER_UID;\r
173                         $RECIPIENT = __RECIPIENT_UID;\r
174                         if ($nick)\r
175                         {\r
176                                 if (($TEST_NICK_SENDER != __SENDER_UID) && (!empty($TEST_NICK_SENDER)))\r
177                                 {\r
178                                         $SENDER = __SENDER_NICK;\r
179                                 }\r
180                                 if (($TEST_NICK_REC != __RECIPIENT_UID) && (!empty($TEST_NICK_REC)))\r
181                                 {\r
182                                         $RECIPIENT = __RECIPIENT_NICK;\r
183                                 }\r
184                         }\r
185 \r
186                         // Remember transfer reason and fancy date/time in constants\r
187                         define('__TRANSFER_REASON', $_POST['reason']);\r
188                         if (function_exists('CREATE_FANCY_TIME'))\r
189                         {\r
190                                 define('__TRANSFER_EXPIRES', CREATE_FANCY_TIME($CONFIG['transfer_age']));\r
191                         }\r
192                          else\r
193                         {\r
194                                 define('__TRANSFER_EXPIRES', round($CONFIG['transfer_age']/60/60/24)." ".DAYS);\r
195                         }\r
196 \r
197                         // Generate tranafer id\r
198                         define('__TRANS_ID', bigintval(GEN_RANDOM_CODE("10", rand(0, 99999), $GLOBALS['userid'], $_POST['reason'])));\r
199 \r
200                         // Add entries to both tables\r
201                         $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_transfers_in (userid, from_uid, points, reason, time_trans, trans_id) VALUES ('%s', '%s', '%s', '%s', UNIX_TIMESTAMP(), '%s')",\r
202                          array(bigintval($_POST['to_uid']), $GLOBALS['userid'], bigintval($_POST['points']), addslashes($_POST['reason']), __TRANS_ID),\r
203                          __FILE__, __LINE__);\r
204                         $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_transfers_out (userid, to_uid, points, reason, time_trans, trans_id) VALUES ('%s', '%s', '%s', '%s', UNIX_TIMESTAMP(), '%s')",\r
205                          array($GLOBALS['userid'], bigintval($_POST['to_uid']), bigintval($_POST['points']), addslashes($_POST['reason']), __TRANS_ID),\r
206                          __FILE__, __LINE__);\r
207 \r
208                         // Add points to account *directly* ...\r
209                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_points SET points=points+%s WHERE userid=%d AND ref_depth='0' LIMIT 1",\r
210                          array(bigintval($_POST['points']), bigintval($_POST['to_uid'])), __FILE__, __LINE__);\r
211 \r
212                         // ... and add it to current user's used points\r
213                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET used_points=used_points+%s WHERE userid=%d LIMIT 1",\r
214                          array(bigintval($_POST['points']), $GLOBALS['userid']), __FILE__, __LINE__);\r
215 \r
216                         // First send email to recipient\r
217                         $msg = LOAD_EMAIL_TEMPLATE("member_transfer_recipient", "", __RECIPIENT_UID);\r
218                         SEND_EMAIL(__RECIPIENT_EMAIL, TRANSFER_MEMBER_RECIPIENT_SUBJ.": ".$SENDER, $msg);\r
219 \r
220                         // Second send email to sender\r
221                         $msg = LOAD_EMAIL_TEMPLATE("member_transfer_sender", "", __SENDER_UID);\r
222                         SEND_EMAIL(__SENDER_EMAIL, TRANSFER_MEMBER_SENDER_SUBJ.": ".$RECIPIENT, $msg);\r
223 \r
224                         // At last send admin mail(s)\r
225                         $ADMIN_SUBJ = TRANSFER_ADMIN_SUBJECT." (".$SENDER."->".$RECIPIENT.")";\r
226                         if (GET_EXT_VERSION("admins") >= "0.4.1")\r
227                         {\r
228                                 SEND_ADMIN_EMAILS_PRO($ADMIN_SUBJ, "admin_transfer_points");\r
229                         }\r
230                          else\r
231                         {\r
232                                 $msg = LOAD_EMAIL_TEMPLATE("admin_transfer_points");\r
233                                 SEND_ADMIN_EMAILS($ADMIN_SUBJ, $msg);\r
234                         }\r
235 \r
236                         // Transfer is completed\r
237                         OUTPUT_HTML ("<P>");\r
238                         LOAD_TEMPLATE("admin_settings_saved", false, TRANSFER_COMPLETED."<BR><A href=\"".URL."/modules.php?module=login&amp;what=transfer\">".TRANSFER_CONTINUE_OVERVIEW."</A>");\r
239                         OUTPUT_HTML ("</P>");\r
240                 }\r
241                  elseif (!$valid_code)\r
242                 {\r
243                         // Invalid Touring code!\r
244                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_CODE."</STRONG></P>");\r
245                         unset($_POST['ok']);\r
246                 }\r
247                  elseif (!$valid_pass)\r
248                 {\r
249                         // Wrong password entered\r
250                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_PASSWORD."</STRONG></P>");\r
251                         unset($_POST['ok']);\r
252                 }\r
253                  elseif (!$valid_amount)\r
254                 {\r
255                         // Too much points entered\r
256                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_POINTS."</STRONG></P>");\r
257                         unset($_POST['ok']);\r
258                 }\r
259                  elseif (!$valid_reason)\r
260                 {\r
261                         // No transfer reason entered\r
262                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_REASON."</STRONG></P>");\r
263                         unset($_POST['ok']);\r
264                 }\r
265                  elseif (!$valid_recipient)\r
266                 {\r
267                         // No recipient selected\r
268                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_RECIPIENT."</STRONG></P>");\r
269                         unset($_POST['ok']);\r
270                 }\r
271                  elseif (!$valid_data)\r
272                 {\r
273                         // No recipient selected\r
274                         OUTPUT_HTML ("<P><STRONG class=\"member_note\">".TRANSFER_INVALID_DATA."</STRONG></P>");\r
275                         unset($_POST['ok']);\r
276                 }\r
277         }\r
278         if (!isset($_POST['ok']))\r
279         {\r
280                 // Load member list\r
281                 if (EXT_IS_ACTIVE("nickname"))\r
282                 {\r
283                         // Load userid and nickname\r
284                         $result = SQL_QUERY_ESC("SELECT userid, nickname FROM "._MYSQL_PREFIX."_user_data WHERE status='CONFIRMED' AND opt_in='Y' AND userid != '%s' ORDER BY userid",\r
285                          array($GLOBALS['userid']), __FILE__, __LINE__);\r
286                 }\r
287                  else\r
288                 {\r
289                         // Load only userid\r
290                         $result = SQL_QUERY_ESC("SELECT userid, userid FROM "._MYSQL_PREFIX."_user_data WHERE status='CONFIRMED' AND opt_in='Y' AND userid != '%s' ORDER BY userid",\r
291                          array($GLOBALS['userid']), __FILE__, __LINE__);\r
292                 }\r
293                 if (SQL_NUMROWS($result) > 0)\r
294                 {\r
295                         // Load list\r
296                         $OUT  = "<SELECT name=\"to_uid\" size=\"1\" class=\"member_select\">\r
297   <OPTION value=\"0\">".SELECT_NONE."</OPTION>\n";\r
298                         while (list($uid, $nick) = SQL_FETCHROW($result))\r
299                         {\r
300                                 $OUT .= "<OPTION value=\"".$uid."\"";\r
301                                 if ((isset($_POST['to_uid'])) && ($_POST['to_uid'] == $uid)) $OUT .= " selected=\"selected\"";\r
302                                 $OUT .= ">";\r
303                                 if (($nick != $uid) && (!empty($nick)))\r
304                                 {\r
305                                         // Output nickname\r
306                                         $OUT .= $nick;\r
307                                 }\r
308                                  else\r
309                                 {\r
310                                         // Output userid\r
311                                         $OUT .= $uid;\r
312                                 }\r
313                                 $OUT .= "</OPTION>\n";\r
314                         }\r
315                         $OUT .= "</SELECT>\n";\r
316                         define('__TRANSFER_TO_DISABLED', "");\r
317 \r
318                         // Free memory\r
319                         SQL_FREERESULT($result);\r
320                 }\r
321                  else\r
322                 {\r
323                         // No one else is opt-in\r
324                         $OUT = TRANSFER_NO_ONE_ELSE_OPT_IN;\r
325                         define('__TRANSFER_TO_DISABLED', " disabled");\r
326                 }\r
327                 // Transfer output to constant for the template\r
328                 define('__TRANSFER_USERID_SELECTION', $OUT);\r
329 \r
330                 // Generate Code\r
331                 if ($CONFIG['transfer_code'] > 0)\r
332                 {\r
333                         $rand = rand(0, 99999);\r
334                         $code = GEN_RANDOM_CODE($CONFIG['transfer_code'], $rand, $GLOBALS['userid'], __TRANSFER_MAX_VALUE);\r
335                         $img = GENERATE_IMAGE($code, false);\r
336                         define('__TRANSFER_IMAGE_INPUT', "<INPUT type=\"hidden\" name=\"code_chk\" value=\"".$rand."\"><INPUT type=\"text\" name=\"code\" class=\"member_normal\" size=\"5\" maxlength=\"7\"".__TRANSFER_TO_DISABLED.">&nbsp;".$img);\r
337                 }\r
338                  else\r
339                 {\r
340                         $code = "00000";\r
341                         define('__TRANSFER_IMAGE_INPUT', TRANSFER_NO_CODE);\r
342                 }\r
343 \r
344                 // Transfer maybe already entered valued'\r
345                 if (isset($_GET['ok'])) {\r
346                         // Get values from form\r
347                         define('__TRANSFER_POINTS_VALUE', bigintval($_POST['points']));\r
348                         define('__TRANSFER_REASON_VALUE', strip_tags($_POST['reason']));\r
349                 } else {\r
350                         // Set empty values\r
351                         define('__TRANSFER_POINTS_VALUE', "");\r
352                         define('__TRANSFER_REASON_VALUE', "");\r
353                 }\r
354 \r
355                 // Output form\r
356                 LOAD_TEMPLATE("member_transfer_new");\r
357         }\r
358         break;\r
359 \r
360 case "list_in": // List only incoming transactions\r
361 case "list_out": // List only outgoing transactions\r
362         // As you can see I put list_in and list_out together. I now do a switch() again on it for the right SQL command\r
363         switch ($MODE)\r
364         {\r
365         case "list_in":\r
366                 $SQL = "SELECT trans_id, from_uid, points, reason, time_trans FROM "._MYSQL_PREFIX."_user_transfers_in WHERE userid=%d ORDER BY time_trans DESC LIMIT ".$CONFIG['transfer_max'];\r
367                 $NOTHING = TRANSFER_NO_INCOMING_TRANSFERS;\r
368                 define('__TRANSFER_SUM', TRANSFER_TOTAL_INCOMING);\r
369                 define('__TRANSFER_TITLE', TRANSFER_LIST_INCOMING);\r
370                 break;\r
371 \r
372         case "list_out":\r
373                 $SQL = "SELECT trans_id, to_uid, points, reason, time_trans FROM "._MYSQL_PREFIX."_user_transfers_out WHERE userid=%d ORDER BY time_trans DESC LIMIT ".$CONFIG['transfer_max'];\r
374                 $NOTHING = TRANSFER_NO_OUTGOING_TRANSFERS;\r
375                 define('__TRANSFER_SUM', TRANSFER_TOTAL_OUTGOING);\r
376                 define('__TRANSFER_TITLE', TRANSFER_LIST_OUTGOING);\r
377                 break;\r
378         }\r
379 \r
380         // Run the SQL command\r
381         $total = "0";\r
382         $result = SQL_QUERY_ESC($SQL, array($GLOBALS['userid']), __FILE__, __LINE__);\r
383         if (SQL_NUMROWS($result) > 0)\r
384         {\r
385                 $OUT = ""; $SW = 2;\r
386                 while (list($tid, $uid, $points, $reason, $stamp) = SQL_FETCHROW($result))\r
387                 {\r
388                         if ($type == "OUT") $points = "$points-";\r
389                         $OUT .= "<TR>\r
390   <TD class=\"transfer_row1 switch_sw".$SW." bottom2 right2\">\r
391     <FONT class=\"transfer_row1\">".$tid."</FONT>\r
392   </TD>\r
393   <TD class=\"transfer_row2 switch_sw".$SW." bottom2 right2\">\r
394     <FONT class=\"transfer_row2\">".MAKE_DATETIME($stamp, "3")."</FONT>\r
395   </TD>\r
396   <TD class=\"transfer_row3 switch_sw".$SW." bottom2 right2\">\r
397     <FONT class=\"transfer_row3\">".$uid."</FONT>\r
398   </TD>\r
399   <TD class=\"transfer_row4 switch_sw".$SW." bottom2 right2\">\r
400     <FONT class=\"transfer_row4\">".$reason."</FONT>\r
401   </TD>\r
402   <TD class=\"transfer_row5 switch_sw".$SW." bottom2\">\r
403     <FONT class=\"transfer_row5\">".$points."</FONT>\r
404   </TD>\r
405 </TR>\n";\r
406                         $total += $points;\r
407                         $SW = 3 - $SW;\r
408                 }\r
409 \r
410                 // Free memory\r
411                 SQL_FREERESULT($result);\r
412         }\r
413          else\r
414         {\r
415                 // Nothing for in or out\r
416                 $OUT = "<TR>\r
417   <TD colspan=\"5\" align=\"center\" class=\"bottom2\" height=\"70\">\r
418     ".LOAD_TEMPLATE("admin_settings_saved", true, $NOTHING)."\r
419   </TD>\r
420 </TR>";\r
421         }\r
422 \r
423         // ... and add them to a constant for the template\r
424         define('__TRANSFER_ROWS', $OUT);\r
425 \r
426         // Remeber total amount\r
427         define('__TRANSFER_TOTAL_VALUE', $total);\r
428 \r
429         // Load final template\r
430         LOAD_TEMPLATE("member_transfer_list");\r
431         break;\r
432 \r
433 case "list_all": // List all transactions\r
434         // We fill a temporay table with data from both tables. This is much easier\r
435         // to code and unstand by you as sub-SELECT queries. I know this is not the\r
436         // fastest way but it shall be fine for now.\r
437         //\r
438         // First of all create the temporary table\r
439         $result = SQL_QUERY("CREATE TEMPORARY TABLE "._MYSQL_PREFIX."_transfers_tmp (\r
440 trans_id varchar(12) not null default '',\r
441 party_uid bigint(20) not null default '0',\r
442 points bigint(20) not null default '0',\r
443 reason varchar(255) not null default '',\r
444 time_trans varchar(10) not null default '0',\r
445 trans_type enum('IN', 'OUT') not null default 'IN',\r
446 KEY(party_uid)\r
447 ) TYPE=HEAP", __FILE__, __LINE__);\r
448 \r
449         // Let's begin with the incoming list\r
450         $result = SQL_QUERY_ESC("SELECT trans_id, from_uid, points, reason, time_trans FROM "._MYSQL_PREFIX."_user_transfers_in WHERE userid=%d ORDER BY id LIMIT %s",\r
451 array($GLOBALS['userid'], $CONFIG['transfer_max']), __FILE__, __LINE__);\r
452         while ($DATA = SQL_FETCHROW($result))\r
453         {\r
454                 $DATA[] = "IN";\r
455                 $DATA = implode("', '", $DATA);\r
456                 $res_temp = SQL_QUERY("INSERT INTO "._MYSQL_PREFIX."_transfers_tmp (trans_id, party_uid, points, reason, time_trans, trans_type) VALUES ('".$DATA."')", __FILE__, __LINE__);\r
457         }\r
458 \r
459         // Free memory\r
460         SQL_FREERESULT($result);\r
461 \r
462         // As the last table transfer data from outgoing table to temporary\r
463         $result = SQL_QUERY_ESC("SELECT trans_id, to_uid, points, reason, time_trans FROM "._MYSQL_PREFIX."_user_transfers_out WHERE userid=%d ORDER BY id LIMIT %s",\r
464 array($GLOBALS['userid'], $CONFIG['transfer_max']), __FILE__, __LINE__);\r
465         while ($DATA = SQL_FETCHROW($result))\r
466         {\r
467                 $DATA[] = "OUT";\r
468                 $DATA = implode("', '", $DATA);\r
469                 $res_temp = SQL_QUERY("INSERT INTO "._MYSQL_PREFIX."_transfers_tmp (trans_id, party_uid, points, reason, time_trans, trans_type) VALUES ('".$DATA."')", __FILE__, __LINE__);\r
470         }\r
471 \r
472         // Free memory\r
473         SQL_FREERESULT($result);\r
474 \r
475         $total = "0";\r
476         if (SQL_NUMROWS($result) > 0)\r
477         {\r
478                 // Output rows\r
479                 $OUT = ""; $SW = 2;\r
480                 $result = SQL_QUERY("SELECT party_uid, trans_id, points, reason, time_trans, trans_type FROM "._MYSQL_PREFIX."_transfers_tmp ORDER BY time_trans DESC", __FILE__, __LINE__);\r
481                 while(list($uid, $idx, $points, $reason, $stamp, $type) = SQL_FETCHROW($result))\r
482                 {\r
483                         if ($type == "OUT") $points = "-$points";\r
484                         $OUT .= "<TR>\r
485   <TD class=\"transfer_row1 switch_sw".$SW." bottom2 right2\">\r
486     <FONT class=\"transfer_row1\">".$idx."</FONT>\r
487   </TD>\r
488   <TD class=\"transfer_row2 switch_sw".$SW." bottom2 right2\">\r
489     <FONT class=\"transfer_row2\">".MAKE_DATETIME($stamp, "3")."</FONT>\r
490   </TD>\r
491   <TD class=\"transfer_row3 switch_sw".$SW." bottom2 right2\">\r
492     <FONT class=\"transfer_row3\">".$uid."</FONT>\r
493   </TD>\r
494   <TD class=\"transfer_row4 switch_sw".$SW." bottom2 right2\">\r
495     <FONT class=\"transfer_row4\">".$reason."</FONT>\r
496   </TD>\r
497   <TD class=\"transfer_row5 switch_sw".$SW." bottom2\">\r
498     <FONT class=\"transfer_row5\">".$points."</FONT>\r
499   </TD>\r
500 </TR>\n";\r
501                         $total += $points;\r
502                         $SW = 3 - $SW;\r
503                 }\r
504 \r
505                 // Free memory\r
506                 SQL_FREERESULT($result);\r
507         }\r
508          else\r
509         {\r
510                 // Nothing for in and out\r
511                 $OUT = "<TR>\r
512   <TD colspan=\"5\" align=\"center\" class=\"bottom2\" height=\"70\">\r
513     ".LOAD_TEMPLATE("admin_settings_saved", true, TRANSFER_NO_INOUT_TRANSFERS)."\r
514   </TD>\r
515 </TR>";\r
516         }\r
517 \r
518         // ... and add them to a constant for the template\r
519         define('__TRANSFER_ROWS', $OUT);\r
520 \r
521         // Remeber total amount\r
522         define('__TRANSFER_TOTAL_VALUE', $total);\r
523 \r
524         // Set title\r
525         define('__TRANSFER_TITLE', TRANSFER_LIST_ALL);\r
526 \r
527         // Set "balance" word\r
528         define('__TRANSFER_SUM', TRANSFER_TOTAL_BALANCE);\r
529 \r
530         // Load final template\r
531         LOAD_TEMPLATE("member_transfer_list");\r
532 \r
533         // At the end we don't need a temporay table in memory\r
534         $result = SQL_QUERY("DROP TABLE IF EXISTS "._MYSQL_PREFIX."_transfers_tmp", __FILE__, __LINE__);\r
535 \r
536         // Free some memory...\r
537         SQL_FREERESULT($result);\r
538         break;\r
539 \r
540 case "": // Overview page\r
541         // Check incoming transfers\r
542         $result = SQL_QUERY_ESC("SELECT COUNT(id) FROM "._MYSQL_PREFIX."_user_transfers_in WHERE userid=%d", array($GLOBALS['userid']), __FILE__, __LINE__);\r
543         list($dmy) = SQL_FETCHROW($result);\r
544         SQL_FREERESULT($result);\r
545 \r
546         $total=$dmy;\r
547         if ($dmy > 0)\r
548         {\r
549                 define('__TRANSFER_IN_LINK', "<A href=\"".URL."/modules.php?module=login&amp;what=transfer&amp;mode=list_in\">".$dmy."</A>");\r
550         }\r
551          else\r
552         {\r
553                 define('__TRANSFER_IN_LINK', $dmy);\r
554         }\r
555 \r
556         // Check outgoing transfers\r
557         $result = SQL_QUERY_ESC("SELECT COUNT(id) FROM "._MYSQL_PREFIX."_user_transfers_out WHERE userid=%d", array($GLOBALS['userid']), __FILE__, __LINE__);\r
558         list($dmy) = SQL_FETCHROW($result);\r
559         SQL_FREERESULT($result);\r
560 \r
561         $total+=$dmy;\r
562         if ($dmy > 0)\r
563         {\r
564                 define('__TRANSFER_OUT_LINK', "<A href=\"".URL."/modules.php?module=login&amp;what=transfer&amp;mode=list_out\">".$dmy."</A>");\r
565         }\r
566          else\r
567         {\r
568                 define('__TRANSFER_OUT_LINK', $dmy);\r
569         }\r
570 \r
571         // Total transactions\r
572         if ($total > 0)\r
573         {\r
574                 define('__TRANSFER_ALL_LINK', "<A href=\"".URL."/modules.php?module=login&amp;what=transfer&amp;mode=list_all\">".$total."</A>");\r
575         }\r
576          else\r
577         {\r
578                 define('__TRANSFER_ALL_LINK', $total);\r
579         }\r
580 \r
581         if (isset($_POST['ok']))\r
582         {\r
583                 // Save settings\r
584                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET opt_in='%s' WHERE userid=%d LIMIT 1",\r
585                  array($_POST['opt_in'], $GLOBALS['userid']), __FILE__, __LINE__);\r
586 \r
587                 // Rember for next switch() command\r
588                 $opt_in = $_POST['opt_in'];\r
589 \r
590                 // "Settings saved..."\r
591                 OUTPUT_HTML ("<P><STRONG class=\"member_done\">".SETTINGS_SAVED."</STRONG></P>");\r
592         }\r
593         switch ($opt_in)\r
594         {\r
595         case "Y":\r
596                 define('__TRANSFER_ALLOW_Y', " checked");\r
597                 define('__TRANSFER_ALLOW_N', "");\r
598                 define('__TRANSFER_NEW_LINK', "<A href=\"".URL."/modules.php?module=login&amp;what=transfer&amp;mode=new\">".TRANSFER_NOW_LINK."</A>");\r
599                 break;\r
600 \r
601         case "N":\r
602                 define('__TRANSFER_ALLOW_Y', "");\r
603                 define('__TRANSFER_ALLOW_N', " checked");\r
604                 define('__TRANSFER_NEW_LINK', TRANSFER_PLEASE_ALLOW_OPT_IN);\r
605                 break;\r
606         }\r
607 \r
608         // Check for latest out-transfers\r
609         $result = SQL_QUERY_ESC("SELECT time_trans FROM "._MYSQL_PREFIX."_user_transfers_out WHERE time_trans > ".(time() - $CONFIG['transfer_timeout'])." AND userid=%d ORDER BY time_trans DESC LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
610         if (SQL_NUMROWS($result) == 0)\r
611         {\r
612                 // Load template\r
613                 define('__TRANSFER_SETTINGS_CONTENT', LOAD_TEMPLATE("member_transfer_settings", true));\r
614         }\r
615          else\r
616         {\r
617                 // Load newest transaction\r
618                 list($newest) = SQL_FETCHROW($result);\r
619                 SQL_FREERESULT($result);\r
620                 define('__TRANSFER_SETTINGS_CONTENT', TRANSFER_LATEST_IS_1.MAKE_DATETIME($newest, "3").TRANSFER_LATEST_IS_2);\r
621         }\r
622         // Load template\r
623         LOAD_TEMPLATE("member_transfer_overview");\r
624         break;\r
625 }\r
626 //\r
627 ?>\r