Heavy rewrite:
[mailer.git] / inc / modules / admin / what-list_payouts.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 05/08/2004 *
4  * ================                             Last change: 08/12/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : what-list_payouts.php                            *
8  * -------------------------------------------------------------------- *
9  * Short description : List member's payout requests                    *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Auflistung der Auszahlungsanfragen               *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * Needs to be in all Files and every File needs "svn propset           *
18  * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
19  * -------------------------------------------------------------------- *
20  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
21  * For more information visit: http://www.mxchange.org                  *
22  *                                                                      *
23  * This program is free software; you can redistribute it and/or modify *
24  * it under the terms of the GNU General Public License as published by *
25  * the Free Software Foundation; either version 2 of the License, or    *
26  * (at your option) any later version.                                  *
27  *                                                                      *
28  * This program is distributed in the hope that it will be useful,      *
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
31  * GNU General Public License for more details.                         *
32  *                                                                      *
33  * You should have received a copy of the GNU General Public License    *
34  * along with this program; if not, write to the Free Software          *
35  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
36  * MA  02110-1301  USA                                                  *
37  ************************************************************************/
38
39 // Some security stuff...
40 if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
41         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
42         require($INC);
43 }
44
45 // Add description as navigation point
46 ADD_DESCR('admin', __FILE__);
47
48 if (REQUEST_ISSET_GET(('pid'))) {
49         // First let's get the member's ID
50         $result = SQL_QUERY_ESC("SELECT userid, target_account, payout_total, payout_timestamp, password FROM `{!_MYSQL_PREFIX!}_user_payouts` WHERE `id`=%s LIMIT 1",
51         array(REQUEST_GET('pid')), __FILE__, __LINE__);
52         list($uid, $tuid, $points, $tstamp, $tpass) = SQL_FETCHROW($result);
53         SQL_FREERESULT($result);
54
55         // Obtain some data
56         if (!REQUEST_ISSET_GET(('task')) && (!empty($uid)) && ($uid > 0)) {
57                 // Get task ID from database
58                 $result = SQL_QUERY_ESC("SELECT `id` FROM `{!_MYSQL_PREFIX!}_task_system` WHERE userid=%s AND `task_type`='PAYOUT_REQUEST' AND task_created='".$tstamp."' LIMIT 1",
59                 array(bigintval($uid)), __FILE__, __LINE__);
60                 list($task) = SQL_FETCHROW($result);
61                 SQL_FREERESULT($result);
62                 if (empty($task)) $task = 0;
63         } elseif ((empty($uid)) || ($uid == '0')) {
64                 // Cannot obtain member ID!
65                 LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_FAILED_OBTAIN_USERID'));
66         } else {
67                 // Get task ID from URL
68                 $task = REQUEST_GET('task');
69         }
70
71         if ((!empty($task)) && (!empty($uid)) && ($uid > 0)) {
72                 // Load user's data
73                 $result = SQL_QUERY_ESC("SELECT email, gender, surname, family FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
74                 array(bigintval($uid)), __FILE__, __LINE__);
75                 list($email, $gender, $surname, $family) = SQL_FETCHROW($result);
76                 SQL_FREERESULT($result);
77
78                 // Konstante bauen
79                 define('PAYOUT_USERDATA_VALUE', "<a href=\"".generateEmailLink($email, 'user_data')."\">".translateGender($gender)." ".$surname." ".$family."</a>");
80
81                 if ((REQUEST_GET('do') == 'accept') && (!empty($email))) {
82                         // Ok, now we can output the form or execute accepting
83                         if (isFormSent()) {
84                                 // Obtain payout type and other data
85                                 $result = SQL_QUERY_ESC("SELECT `payout_id` FROM `{!_MYSQL_PREFIX!}_user_payouts` WHERE `id`=%s LIMIT 1",
86                                 array(bigintval(REQUEST_GET('pid'))), __FILE__, __LINE__);
87                                 list($ptype) = SQL_FETCHROW($result);
88                                 SQL_FREERESULT($result);
89
90                                 if (!empty($ptype)) {
91                                         // Obtain data from payout type
92                                         $result = SQL_QUERY_ESC("SELECT `from_account`, `from_pass`, `engine_url`, `engine_ret_ok`, `engine_ret_failed`, `pass_enc`, `allow_url`
93 FROM
94         `{!_MYSQL_PREFIX!}_payout_types`
95 WHERE
96         `id`=%s
97 LIMIT 1",
98                                                 array(bigintval($ptype)), __FILE__, __LINE__);
99                                         list($fuid, $fpass, $eurl, $eok, $failed, $eenc, $allow) = SQL_FETCHROW($result);
100                                         SQL_FREERESULT($result);
101
102                                         if (!empty($eurl)) {
103                                                 // Ok, run URL...
104                                                 $eurl = COMPILE_CODE($eurl);
105                                                 switch ($eenc) {
106                                                         case 'md5':
107                                                                 $fpass = md5($fpass);
108                                                                 $tpass = md5($tpass);
109                                                                 break;
110
111                                                         case 'base64':
112                                                                 $fpass = base64_encode($fpass);
113                                                                 $tpass = base64_encode($tpass);
114                                                                 break;
115                                                 }
116
117                                                 // Transfer variables...
118                                                 $eval = "\$URL = \"".$eurl."\";";
119                                                 $reason = encodeString(getMessage('PAYOUT_REASON_PAYOUT'), false);
120
121                                                 // Run code...
122                                                 eval($eval);
123
124                                                 // Execute transfer
125                                                 $ret = sendGetRequest($URL);
126                                         } else {
127                                                 // No URL to run
128                                                 $ret[0] = $eok;
129                                         }
130
131                                         if ($ret[0] == $eok) {
132                                                 // Clear task
133                                                 if ($task > 0) {
134                                                         runFilterChain('solve_task', $task);
135                                                 }
136
137                                                 // Clear payout request
138                                                 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_payouts` SET `status`='ACCEPTED' WHERE `id`=%s LIMIT 1",
139                                                 array(bigintval(REQUEST_GET('pid'))), __FILE__, __LINE__);
140
141                                                 // Send out mail
142                                                 $msg = LOAD_EMAIL_TEMPLATE('member_payout_accepted', REQUEST_POST('text'), $uid);
143
144                                                 // Output message
145                                                 if ($allow == 'Y') {
146                                                         // Banner / Textlink request
147                                                         LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_BANNER_ACCEPTED_NOTIFIED'));
148                                                 } else {
149                                                         // Normal request
150                                                         LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_ACCEPTED_NOTIFIED'));
151                                                 }
152
153                                                 // Finally send mail
154                                                 sendEmail($email, getMessage('PAYOUT_ACCEPTED_SUBJECT'), $msg);
155                                         } else {
156                                                 // Something goes wrong... :-(
157                                                 $content = implode("<br />", $ret);
158                                                 LOAD_TEMPLATE("admin_payout_failed_transfer", false, $content);
159                                         }
160                                 } else {
161                                         // Cannot load payout id
162                                         LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"admin_failed\">{--PAYOUT_FAILED_OBTAIN_PAYOUT_ID--}</div>");
163                                 }
164                         } else {
165                                 // Prepare content
166                                 $content = array(
167                                         'task' => $task,
168                                         'pid'  => bigintval(REQUEST_GET('pid'))
169                                 );
170
171                                 // Load template
172                                 LOAD_TEMPLATE('admin_payout_accept_form', false, $content);
173                         }
174                 } elseif ((REQUEST_GET('do') == 'reject') && (!empty($email))) {
175                         // Ok, now we can output the form or execute rejecting
176                         if (isFormSent()) {
177                                 if ($task > 0) {
178                                         // Clear task
179                                         runFilterChain('solve_task', $task);
180                                 } // END - if
181
182                                 // Clear payout request
183                                 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_payouts` SET `status`='REJECTED' WHERE `id`=%s LIMIT 1",
184                                         array(bigintval(REQUEST_GET('pid'))), __FILE__, __LINE__);
185
186                                 // Send out mail
187                                 $msg = LOAD_EMAIL_TEMPLATE('member_payout_rejected', REQUEST_POST('text'), $uid);
188
189                                 // Output message
190                                 LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_REJECTED_NOTIFIED'));
191
192                                 // Finally send mail
193                                 sendEmail($email, getMessage('PAYOUT_REJECTED_SUBJECT'), $msg);
194                         } else {
195                                 // Prepare content
196                                 $content = array(
197                                         'task' => $task,
198                                         'pid'  => bigintval(REQUEST_GET('pid'))
199                                 );
200
201                                 // Load template
202                                 LOAD_TEMPLATE('admin_payout_reject_form', false, $content);
203                         }
204                 } else {
205                         // Cannot load user data
206                         LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_FAILED_OBTAIN_USERDATA'));
207                 }
208         } elseif ((empty($task)) || ($task == '0')) {
209                 // Failed loading task ID
210                 LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_FAILED_OBTAIN_TASK_ID'));
211         }
212 } else {
213         if (!REQUEST_ISSET_GET('do')) REQUEST_SET_GET('do', '');
214
215         if (REQUEST_GET('do') == 'delete') {
216                 // Delete all requests
217                 $result = SQL_QUERY("TRUNCATE `{!_MYSQL_PREFIX!}_user_payouts`", __FILE__, __LINE__);
218         } // END - if
219
220         // Search for payouts
221         $result = SQL_QUERY("SELECT
222         p.id, p.userid AS uid, p.payout_total, p.target_account,
223         p.target_bank, t.type, p.payout_timestamp, p.status,
224         t.allow_url AS allow, p.target_url AS url, p.link_text AS alt,
225         p.banner_url AS banner
226 FROM
227         `{!_MYSQL_PREFIX!}_user_payouts` AS p
228 LEFT JOIN
229         `{!_MYSQL_PREFIX!}_payout_types` AS t
230 ON
231         p.payout_id=t.id
232 ORDER BY
233         p.payout_timestamp DESC", __FILE__, __LINE__);
234
235         if (SQL_NUMROWS($result) > 0) {
236                 // List found payouts
237                 $OUT = ''; $SW = 2;
238                 while ($content = SQL_FETCHARRAY($result)) {
239                         if ($content['status'] == 'NEW') {
240                                 // Generate links for direct accepting and rejecting
241                                 $content['status'] = "<a href=\"{!URL!}/modules.php?module=admin&amp;what=list_payouts&amp;do=accept&amp;pid=".$content['id']."\">".PAYOUT_ACCEPT_PAYOUT."</a>&nbsp;|&nbsp;<a href=\"{!URL!}/modules.php?module=admin&amp;what=list_payouts&amp;do=reject&amp;pid=".$content['id']."\">".PAYOUT_REJECT_PAYOUT."</a>";
242                         } else {
243                                 // Translate status
244                                 $content['status'] = constant('PAYOUT_STATUS_'.strtoupper($content['status']).'');
245                                 $content['status'] = "<div class=\"admin_failed\">".$content['status']."</div>";
246                         }
247
248                         // Nothing entered must be secured in member/what-payputs.php !
249                         if ($content['allow'] == 'Y') {
250                                 // Banner/Textlink views/clicks request
251                                 if (!empty($content['banner'])) {
252                                         // Load template for the banner
253                                         $content['target_account'] = LOAD_TEMPLATE('admin_list_payouts_banner', true, $content);
254                                 } else {
255                                         // Textlink
256                                         $content['target_account'] = LOAD_TEMPLATE('admin_list_payouts_txt', true, $content);
257                                 }
258
259                                 // Admins can addionally test the URL for framekillers
260                                 $content['target_bank'] = "<a href=\"".FRAMETESTER($content['url'])."\" target=\"_blank\">{--CLICK_HERE--}</a>";
261                         } else {
262                                 // e-currency payout request
263                                 if (empty($content['target_account'])) $content['target_account'] = '---';
264                                 if (empty($content['target_bank']))    $content['target_bank']    = '---';
265                         }
266
267                         // Remember data in array for the template
268                         $content = array(
269                                 'sw'      => $SW,
270                                 'ulink'   => generateUserProfileLink($content['userid']),
271                                 'ptype'   => translateComma($content['payout_total'])." ".COMPILE_CODE($content['type']),
272                                 'account' => $content['target_account'],
273                                 'bank'    => $content['target_bank'],
274                                 'tstamp'  => generateDateTime($content['payout_timestamp'], '2'),
275                                 'status'  => $content['status'],
276                         );
277
278                         // Add row and switch color
279                         $OUT .= LOAD_TEMPLATE('admin_list_payouts_row', true, $content);
280                         $SW = 3 - $SW;
281                 }
282
283                 // Free memory
284                 SQL_FREERESULT($result);
285                 define('__PAYOUT_ROWS', $OUT);
286
287                 // Load final template
288                 LOAD_TEMPLATE('admin_list_payouts');
289         } else {
290                 // No payout requests are sent so far
291                 LOAD_TEMPLATE('admin_settings_saved', false, getMessage('PAYOUT_ADMIN_NO_REQUESTS_FOUND'));
292         }
293 }
294
295 // [EOF]
296 ?>