Code rewritings, load base config improved and many minor fixes...
[mailer.git] / 0.2.1 / inc / modules / member / what-payout.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 04/12/2004 *\r
4  * ================                             Last change: 12/01/2008 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : what-payout.php                                  *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Payout requests                                  *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Auszahlungsanfragen                              *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2008 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         // Don't call this directly!\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";\r
38         require($INC);\r
39 } elseif (!IS_LOGGED_IN()) {\r
40         // Not logged in\r
41         LOAD_URL(URL."/modules.php?module=index");\r
42 } elseif ((!EXT_IS_ACTIVE("payout")) && (!IS_ADMIN())) {\r
43         // Extension "payout" is not active\r
44         ADD_FATAL(EXTENSION_PROBLEM_EXT_INACTIVE, "payout");\r
45         return;\r
46 }\r
47 \r
48 // Add description as navigation point\r
49 ADD_DESCR("member", basename(__FILE__));\r
50 \r
51 $result_depths = SQL_QUERY("SELECT level, percents FROM "._MYSQL_PREFIX."_refdepths ORDER BY level", __FILE__, __LINE__);\r
52 $TPTS = "0";\r
53 while (list($lvl, $per) = SQL_FETCHROW($result_depths))\r
54 {\r
55         // Load referral points\r
56         $result_points = SQL_QUERY_ESC("SELECT points FROM "._MYSQL_PREFIX."_user_points WHERE userid=%d AND ref_depth='%s' LIMIT 1",\r
57          array($GLOBALS['userid'], bigintval($lvl)), __FILE__, __LINE__);\r
58         if (SQL_NUMROWS($result_points) == 1)\r
59         {\r
60                 list($POINTS) = SQL_FETCHROW($result_points);\r
61                 SQL_FREERESULT($result_points);\r
62                 $TPTS += $POINTS;\r
63         }\r
64 }\r
65 \r
66 // Free memory\r
67 SQL_FREERESULT($result_depths);\r
68 \r
69 $result = SQL_QUERY_ESC("SELECT used_points FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",\r
70  array($GLOBALS['userid']), __FILE__, __LINE__);\r
71 list($USED) = SQL_FETCHROW($result);\r
72 SQL_FREERESULT($result);\r
73 \r
74 // Translate point into comma\r
75 $TPTS = TRANSLATE_COMMA($TPTS - $USED);\r
76 \r
77 // Sanity check...\r
78 if (empty($TPTS)) $TPTS = "0.00000";\r
79 \r
80 if (empty($_GET['payout']))\r
81 {\r
82         // Load payout types\r
83         $result = SQL_QUERY_ESC("SELECT id, type, rate, min_points, allow_url\r
84 FROM "._MYSQL_PREFIX."_payout_types\r
85 WHERE %d >= min_points\r
86 ORDER BY type", array(str_replace(",", ".", $TPTS)), __FILE__, __LINE__);\r
87         if (SQL_NUMROWS($result) > 0)\r
88         {\r
89                 // Free memory\r
90                 SQL_FREERESULT($result);\r
91 \r
92                 // Check for his payouts\r
93                 $result_payouts = SQL_QUERY_ESC("SELECT DISTINCT p.id, p.payout_total, p.target_account, p.target_bank, t.type, p.payout_timestamp, p.status, t.allow_url AS allow, p.target_url AS url, p.link_text AS alt, p.banner_url AS bannerm\r
94 FROM "._MYSQL_PREFIX."_user_payouts AS p\r
95 LEFT JOIN "._MYSQL_PREFIX."_payout_types AS t\r
96 ON p.payout_id = t.id\r
97 WHERE p.userid = %d\r
98 ORDER BY p.payout_timestamp DESC",\r
99                  array($GLOBALS['userid']), __FILE__, __LINE__);\r
100                 if (SQL_NUMROWS($result_payouts) > 0)\r
101                 {\r
102                         // List all his requests\r
103                         $SW = 2; $OUT = "";\r
104                         while (list($pid, $total, $account, $bank, $type, $tstamp, $status, $allow, $url, $alt, $banner) = SQL_FETCHROW($result_payouts))\r
105                         {\r
106                                 // Translate status\r
107                                 $evl = "\$status = PAYOUT_MEMBER_STATUS_".strtoupper($status).";";\r
108                                 eval($evl);\r
109                                 $status = "<FONT class=\"member_failed\">".$status."</FONT>";\r
110 \r
111                                 // Nothing entered must be secured in member/what-payputs.php !\r
112                                 if ($allow == "Y")\r
113                                 {\r
114                                         // Banner/Textlink views/clicks request\r
115                                         if (!empty($banner))\r
116                                         {\r
117                                                 // Banner\r
118                                                 $account = "<IMG src=\"".$banner."\" alt=\"".$alt."\" title=\"".$alt."\" border=\"0\">";\r
119                                         }\r
120                                          else\r
121                                         {\r
122                                                 // Textlink\r
123                                                 $account = $alt;\r
124                                         }\r
125                                         $bank = "<A href=\"".DEREFERER($url)."\" target=\"_blank\">".CLICK_HERE."</A>";\r
126                                 }\r
127                                  else\r
128                                 {\r
129                                         // e-currency payout request\r
130                                         if (empty($account)) $account = "---";\r
131                                         if (empty($bank))    $bank    = "---";\r
132                                 }\r
133 \r
134                                 // Prepare data for the template\r
135                                 $content = array(\r
136                                         'sw'     => $SW,\r
137                                         'acc'    => $account,\r
138                                         'points' => TRANSLATE_COMMA($total)." ".COMPILE_CODE($type),\r
139                                         'bank'   => $bank,\r
140                                         'stamp'  => MAKE_DATETIME($tstamp, "2"),\r
141                                         'status' => $status\r
142                                 );\r
143                                 // Load row template and switch colors\r
144                                 $OUT .= LOAD_TEMPLATE("member_payout_row", true, $content);\r
145                                 $SW = 3 - $SW;\r
146                         }\r
147 \r
148                         // Remember rows in constant\r
149                         define('__PAYOUT_ROWS', $OUT);\r
150 \r
151                         // Load template\r
152                         LOAD_TEMPLATE("member_payout");\r
153                 }\r
154 \r
155                 // Free memory\r
156                 SQL_FREERESULT($result_payouts);\r
157 \r
158                 // Output payout list\r
159                 PAYOUT_OUTPUT_PAYOUT_LIST($TPTS);\r
160         }\r
161 }\r
162  else\r
163 {\r
164         // Chedk if he can get paid by selected type\r
165         $result = SQL_QUERY_ESC("SELECT type, rate, min_points, allow_url FROM "._MYSQL_PREFIX."_payout_types WHERE id=%d LIMIT 1",\r
166          array(bigintval($_GET['payout'])), __FILE__, __LINE__);\r
167 \r
168         if (SQL_NUMROWS($result) == 1)\r
169         {\r
170                 // ID is valid\r
171                 list($type, $rate, $min, $allow) = SQL_FETCHROW($result);\r
172                 SQL_FREERESULT($result);\r
173 \r
174                 // Calculate maximum value\r
175                 $max = round($TPTS * $rate - 0.5);\r
176 \r
177                 // Calulcate points from submitted amount\r
178                 $PAYOUT = 0;\r
179                 if (!empty($_POST['payout']))\r
180                 {\r
181                         $PAYOUT  = bigintval($_POST['payout']) / $rate;\r
182                         $PAY_MAX = $max / $rate;\r
183                 }\r
184 \r
185                 // Move variables into constants for templates\r
186                 define('PAYOUT_MAX_VALUE' , $max);\r
187                 define('PAYOUT_TYPE_VALUE', COMPILE_CODE($type));\r
188 \r
189                 if (str_replace(",", ".", $TPTS) >= $min)\r
190                 {\r
191                         // Ok, he can get be paid\r
192                         if ((isset($_POST['ok'])) && ($PAYOUT <= $PAY_MAX) && ($PAYOUT >= $min))\r
193                         {\r
194                                 // Calculate exact value\r
195                                 define('PAYOUT_POINTS_VALUE', $PAYOUT);\r
196 \r
197                                 // Subtract points from member's account\r
198                                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET used_points=used_points+%s WHERE userid=%d LIMIT 1",\r
199                                  array($PAYOUT, $GLOBALS['userid']), __FILE__, __LINE__);\r
200 \r
201                                 // Update mediadata as well\r
202                                 if (GET_EXT_VERSION("mediadata") >= "0.0.4")\r
203                                 {\r
204                                         // Update database\r
205                                         MEDIA_UPDATE_ENTRY(array("total_points"), "sub", $PAYOUT);\r
206                                 }\r
207 \r
208                                 // Add entry to his tranfer history\r
209                                 if ($allow == "Y")\r
210                                 {\r
211                                         // Banner/textlink ordered\r
212                                         $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_payouts (userid, payout_total, payout_id, payout_timestamp, status, target_url, link_text, banner_url)\r
213 VALUES (%d, %d, %d, UNIX_TIMESTAMP(), 'NEW', '%s', '%s', '%s')",\r
214  array(\r
215         $GLOBALS['userid'],\r
216         bigintval($_POST['payout']),\r
217         bigintval($_GET['payout']),\r
218         $_POST['turl'],\r
219         $_POST['alt'],\r
220         $_POST['banner']\r
221 ), __FILE__, __LINE__);\r
222 \r
223                                         // Load templates\r
224                                         $msg_mem = LOAD_EMAIL_TEMPLATE("member_payout_request_banner", "", $GLOBALS['userid']);\r
225                                         if (GET_EXT_VERSION("admins") >= "0.4.1")\r
226                                         {\r
227                                                 $adm_tpl = "admin_payout_request_banner";\r
228                                         }\r
229                                          else\r
230                                         {\r
231                                                 $msg_adm = addslashes(LOAD_EMAIL_TEMPLATE("admin_payout_request_banner", "", $GLOBALS['userid']));\r
232                                         }\r
233                                 }\r
234                                  else\r
235                                 {\r
236                                         // e-currency payout requested\r
237                                         $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_payouts (userid, payout_total, target_account, target_bank, payout_id, payout_timestamp, status, password)\r
238 VALUES (%d, %d, %d, '%s', %d, UNIX_TIMESTAMP(), 'NEW', '%s')",\r
239  array(\r
240         $GLOBALS['userid'],\r
241         bigintval($_POST['payout']),\r
242         bigintval($_POST['account']),\r
243         $_POST['bank'],\r
244         bigintval($_GET['payout']),\r
245         $_POST['pass']\r
246 ), __FILE__, __LINE__);\r
247 \r
248                                         // Load templates\r
249                                         $msg_mem = LOAD_EMAIL_TEMPLATE("member_payout_request", "", $GLOBALS['userid']);\r
250                                         $msg_adm = addslashes(LOAD_EMAIL_TEMPLATE("admin_payout_request", "", $GLOBALS['userid']));\r
251                                         $admin_tpl = "";\r
252                                         if (GET_EXT_VERSION("admins") >= "0.4.1")\r
253                                         {\r
254                                                 $admin_tpl = "admin_payout_request";\r
255                                         }\r
256                                 }\r
257 \r
258                                 // Generate task\r
259                                 $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (assigned_admin, status, task_type, subject, text, task_created, userid)\r
260 VALUES (0, 'NEW', 'PAYOUT_REQUEST', '[payout:] ".PAYOUT_REQUEST_ADMIN."', '%s', UNIX_TIMESTAMP(), %d)",\r
261  array(\r
262         $msg_adm,\r
263         $GLOBALS['userid']\r
264 ), __FILE__, __LINE__);\r
265 \r
266                                 // Send out mails\r
267                                 SEND_EMAIL($GLOBALS['userid'], PAYOUT_REQUEST_MEMBER, $msg_mem);\r
268 \r
269                                 // To admin(s)\r
270                                 if (GET_EXT_VERSION("admins") >= "0.4.1")\r
271                                 {\r
272                                         // Use new method\r
273                                         SEND_ADMIN_EMAILS_PRO(PAYOUT_REQUEST_ADMIN, $admin_tpl, "", $GLOBALS['userid']);\r
274                                 }\r
275                                  else\r
276                                 {\r
277                                         // Use old method\r
278                                         SEND_ADMIN_EMAILS(PAYOUT_REQUEST_ADMIN, $msg_adm);\r
279                                 }\r
280 \r
281                                 // Load template and output it\r
282                                 LOAD_TEMPLATE("admin_settings_saved", false, PAYOUT_REQUEST_SENT);\r
283                         }\r
284                          elseif ($allow == "Y")\r
285                         {\r
286                                 // Generate banner order form\r
287                                 LOAD_TEMPLATE("member_payout_form_banner");\r
288                         }\r
289                          else\r
290                         {\r
291                                 // Generate normal form\r
292                                 LOAD_TEMPLATE("member_payout_form");\r
293                         }\r
294                 }\r
295                  else\r
296                 {\r
297                         // Not enougth points\r
298                         LOAD_TEMPLATE("admin_settings_saved", false, PAYOUT_POINTS_NOT_ENOUGTH);\r
299                 }\r
300         }\r
301          else\r
302         {\r
303                 // ID is invalid\r
304                 LOAD_TEMPLATE("admin_settings_saved", false, PAYOUT_ID_INVALID);\r
305         }\r
306 }\r
307 //\r
308 ?>\r