- obsolete templates/scripts removed
[mailer.git] / 0.2.1 / doubler.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 02/13/2005 *\r
4  * ===============                              Last change: 02/13/2005 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : doubler.php                                      *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Points doubler                                   *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Punkteverdoppler                                 *\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 // Load security stuff here (Oh, I hope this is not unsecure? Am I paranoia??? ;-) )\r
35 require_once("inc/libs/security_functions.php");\r
36 \r
37 // Init "action" and "what"\r
38 global $what, $action;\r
39 $GLOBALS['what'] = ""; $GLOBALS['action'] = "";\r
40 if (!empty($_GET['action'])) $GLOBALS['action'] = secureString($_GET['action']);\r
41 if (!empty($_GET['what'])) $GLOBALS['what'] = secureString($_GET['what']);\r
42 \r
43 // Set module\r
44 $GLOBALS['module'] = "doubler";\r
45 $GLOBALS['refid'] = 0;\r
46 $CSS = "0";\r
47 \r
48 // Load the required file(s)\r
49 require ("inc/config.php");\r
50 \r
51 // Is the script installed?\r
52 if (defined('mxchange_installed') && (mxchange_installed))\r
53 {\r
54         // Probe for referral ID\r
55         if (!empty($_GET['refid'])) $GLOBALS['refid'] = bigintval($_GET['refid']);\r
56 \r
57         // Probe for nickname extension and if a nickname was supplied by URL\r
58         $probe_nickname = ((EXT_IS_ACTIVE("nickname")) && (("".round($GLOBALS['refid'])."") != $GLOBALS['refid']));\r
59         if ($probe_nickname)\r
60         {\r
61                 // Nickname in URL, so load the ID\r
62                 $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' LIMIT 1",\r
63                  array(bigintval($GLOBALS['refid'])), __FILE__, __LINE__);\r
64         }\r
65          else\r
66         {\r
67                 // Direct userid entered\r
68                 $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",\r
69                  array(bigintval($GLOBALS['refid'])), __FILE__, __LINE__);\r
70         }\r
71 \r
72         // Load data\r
73         list($rid, $status_ref) = SQL_FETCHROW($result);\r
74         $GLOBALS['refid'] = bigintval($rid);\r
75 \r
76         // Free memory\r
77         SQL_FREERESULT($result);\r
78         $uid = 0;\r
79 \r
80         // If no account was found set default refid and status to CONFIRMED\r
81         if (empty($GLOBALS['refid'])) { $GLOBALS['refid'] = $CONFIG['def_refid']; $status = "CONFIRMED"; }\r
82 \r
83         // Begin with doubler script...\r
84         if (isset($_POST['ok']))\r
85         {\r
86                 // Secure points (so only integer/double values are allowed\r
87                 $_POST['points'] = bigintval($_POST['points']);\r
88 \r
89                 // Begin with doubling process\r
90                 if ((!empty($_POST['userid'])) && (!empty($_POST['pass'])) && (!empty($_POST['points'])))\r
91                 {\r
92                         // Probe for nickname extension and if a nickname was entered\r
93                         $probe_nickname = ((EXT_IS_ACTIVE("nickname")) && (("".round($_POST['userid'])."") != $_POST['userid']));\r
94                         if ($probe_nickname)\r
95                         {\r
96                                 // Nickname in URL, so load the ID\r
97                                 $result = SQL_QUERY_ESC("SELECT userid, status, password FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' LIMIT 1",\r
98                                  array($_POST['userid']), __FILE__, __LINE__);\r
99                         }\r
100                          else\r
101                         {\r
102                                 // Direct userid entered\r
103                                 $result = SQL_QUERY_ESC("SELECT userid, status, password FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",\r
104                                  array(bigintval($_POST['userid'])), __FILE__, __LINE__);\r
105                         }\r
106 \r
107                         // Load data\r
108                         list($uid, $status, $password) = SQL_FETCHROW($result);\r
109                         $uid = bigintval($uid);\r
110 \r
111                         // Free result\r
112                         SQL_FREERESULT($result);\r
113 \r
114                         // Remove any dots and unwanted chars from the points\r
115                         $_POST['points'] = bigintval(round(str_replace(",", ".", $_POST['points'])));\r
116 \r
117                         // Probe for enough points\r
118                         $probe_points = (($_POST['points'] >= $CONFIG['doubler_min']) && ($_POST['points'] <= $CONFIG['doubler_max']));\r
119 \r
120                         // Check all together\r
121                         if ((!empty($uid)) && ($password == generateHash($_POST['pass'], substr($password, 0, -40))) && ($status == "CONFIRMED") && ($probe_points))\r
122                         {\r
123                                 // Nickname resolved to a unique userid or direct userid entered by the member\r
124                                 $DOUBLER_UID = $uid;\r
125 \r
126                                 // Calulcate points\r
127                                 $POINTS = GET_TOTAL_DATA($uid, "user_points", "points") - GET_TOTAL_DATA($uid, "user_data", "used_points");\r
128 \r
129                                 // So let's continue with probing his points amount\r
130                                 if (($POINTS - $CONFIG['doubler_left'] - $_POST['points'] * $CONFIG['doubler_charge']) >= 0)\r
131                                 {\r
132                                         // Enough points are left so let's continue with the doubling process\r
133                                         // Create doubling "account" width *DOUBLED* points\r
134                                         $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid, refid, points, remote_ip, timemark, completed, is_ref) VALUES ('%s', '%s', '%s', '".$_SERVER['REMOTE_ADDR']."', UNIX_TIMESTAMP(), 'N', 'N')",\r
135                                          array($uid, bigintval($GLOBALS['refid']), bigintval($_POST['points'] * 2)), __FILE__, __LINE__);\r
136 \r
137                                         // Subtract entered points\r
138                                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET used_points=used_points+%s WHERE userid=%d LIMIT 1",\r
139                                          array($_POST['points'], $uid), __FILE__, __LINE__);\r
140 \r
141                                         // Update mediadata as well\r
142                                         if (GET_EXT_VERSION("mediadata") >= "0.0.4")\r
143                                         {\r
144                                                 // Update database\r
145                                                 MEDIA_UPDATE_ENTRY(array("total_points"), "sub", $_POST['points']);\r
146                                         }\r
147 \r
148                                         // Add points to "total payed" including charge\r
149                                         $points = $_POST['points'] - $_POST['points'] * $CONFIG['doubler_charge'];\r
150                                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_config SET doubler_points=doubler_points+%s WHERE config='0' LIMIT 1",\r
151                                          array($points), __FILE__, __LINE__);\r
152                                         $CONFIG['doubler_points'] += $points;\r
153 \r
154                                         // Destroy cache\r
155                                         if (GET_EXT_VERSION("cache") >= "0.1.2")\r
156                                         {\r
157                                                 if ($CACHE->cache_file("config", true)) $CACHE->cache_destroy();\r
158                                         }\r
159 \r
160                                         // Add second line for the referral but only when uid != refid\r
161                                         if (($GLOBALS['refid'] > 0) && ($GLOBALS['refid'] != $uid))\r
162                                         {\r
163                                                 // Okay add a refid line and apply refid percents\r
164                                                 $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid, refid, points, remote_ip, timemark, completed, is_ref) VALUES ('%s', '0', '%s', '".$_SERVER['REMOTE_ADDR']."', UNIX_TIMESTAMP(), 'N', 'Y')",\r
165                                                  array(bigintval($GLOBALS['refid']), bigintval($_POST['points'] * 2 * $CONFIG['doubler_ref'])), __FILE__, __LINE__);\r
166 \r
167                                                 // And that's why we dont't want to you more than one referral level of doubler-points. ^^^\r
168                                         }\r
169 \r
170                                         // Update usage counter\r
171                                         $result = SQL_QUERY("UPDATE "._MYSQL_PREFIX."_config SET doubler_counter=doubler_counter+1 WHERE config='0' LIMIT 1", __FILE__, __LINE__);\r
172                                         $CONFIG['doubler_counter']++;\r
173 \r
174                                         // Set constant\r
175                                         define('__DOUBLER_MSG', LOAD_TEMPLATE("doubler_reflink", true, $_POST['userid']));\r
176                                 }\r
177                                  else\r
178                                 {\r
179                                         // Not enougth points left\r
180                                         define('__ERROR_MSG', DOUBLER_FORM_NO_POINTS_LEFT);\r
181                                 }\r
182 \r
183                         }\r
184                          elseif ($status == "CONFIRMED")\r
185                         {\r
186                                 // Account is unconfirmed!\r
187                                 define('__ERROR_MSG', DOUBLER_FORM_WRONG_PASS);\r
188                         }\r
189                          elseif ($status == "UNCONFIRMED")\r
190                         {\r
191                                 // Account is unconfirmed!\r
192                                 define('__ERROR_MSG', DOUBLER_FORM_STATUS_UNCONFIRMED);\r
193                         }\r
194                          elseif ($status == "LOCKED")\r
195                         {\r
196                                 // Account is locked by admin / holiday!\r
197                                 define('__ERROR_MSG', DOUBLER_FORM_STATUS_LOCKED);\r
198                         }\r
199                          elseif ($_POST['points'] < $CONFIG['doubler_min'])\r
200                         {\r
201                                 // Not enougth points entered\r
202                                 define('__ERROR_MSG', DOUBLER_FORM_POINTS_MIN);\r
203                         }\r
204                          elseif ($_POST['points'] > $CONFIG['doubler_max'])\r
205                         {\r
206                                 // Too much points entered\r
207                                 define('__ERROR_MSG', DOUBLER_FORM_POINTS_MAX);\r
208                         }\r
209                          elseif ($probe_nickname)\r
210                         {\r
211                                 // Cannot resolv nickname -> userid\r
212                                 define('__ERROR_MSG', DOUBLER_FORM_404_NICKNAME);\r
213                         }\r
214                          else\r
215                         {\r
216                                 // Wrong password or account not found\r
217                                 define('__ERROR_MSG', DOUBLER_FORM_404_MEMBER);\r
218                         }\r
219                 }\r
220                  elseif (empty($_POST['userid']))\r
221                 {\r
222                         // Login not entered\r
223                         define('__ERROR_MSG', DOUBLER_FORM_404_LOGIN);\r
224                 }\r
225                  elseif (empty($_POST['pass']))\r
226                 {\r
227                         // Password not entered\r
228                         define('__ERROR_MSG', DOUBLER_FORM_404_PASSWORD);\r
229                 }\r
230                  elseif (empty($_POST['points']))\r
231                 {\r
232                         // points not entered\r
233                         define('__ERROR_MSG', DOUBLER_FORM_404_POINTS);\r
234                 }\r
235         }\r
236 \r
237         // Set messages to nothing\r
238         if (!defined('__DOUBLER_MSG')) define('__DOUBLER_MSG', "");\r
239         if (!defined('__ERROR_MSG'))   define('__ERROR_MSG'  , "");\r
240 \r
241         // Shall I check for points immediately?\r
242         if ($CONFIG['doubler_send_mode'] == "DIRECT") require(PATH."inc/doubler_send.php");\r
243 \r
244         // Output header\r
245         include(PATH."inc/header.php");\r
246 \r
247         // Banner in text\r
248         define('__DOUBLER_BANNER', LOAD_TEMPLATE("doubler_banner", true));\r
249 \r
250         // Load header/footer templates\r
251         define('__DOUBLER_HEADER', LOAD_TEMPLATE("doubler_header", true));\r
252         define('__DOUBLER_FOOTER', LOAD_TEMPLATE("doubler_footer", true));\r
253 \r
254         if (!empty($uid))\r
255         {\r
256                 // Transfer userid/nickname to constant\r
257                 define('__REFID', $uid);\r
258         }\r
259          elseif (!empty($GLOBALS['refid']))\r
260         {\r
261                 // Transfer userid/nickname to constant\r
262                 define('__REFID', $GLOBALS['refid']);\r
263         }\r
264          else\r
265         {\r
266                 // Transfer default refid to constant\r
267                 define('__REFID', $CONFIG['def_refid']);\r
268         }\r
269 \r
270         // Percent values etc.\r
271         define('__CHARGE_VALUE', TRANSLATE_COMMA($CONFIG['doubler_charge'] * 100));\r
272         define('__REF_VALUE'   , TRANSLATE_COMMA($CONFIG['doubler_ref'] * 100));\r
273         define('__TOTAL_VALUE' , TRANSLATE_COMMA($CONFIG['doubler_points']));\r
274         define('__MIN_VALUE'   , TRANSLATE_COMMA($CONFIG['doubler_min']));\r
275         define('__MAX_VALUE'   , TRANSLATE_COMMA($CONFIG['doubler_max']));\r
276 \r
277         // Text "Enter login"\r
278         if (EXT_IS_ACTIVE("nickname"))\r
279         {\r
280                 // Choose login/nickname\r
281                 define('DOUBLER_ENTER_LOGIN', GUEST_ENTER_LOGIN_NICKNAME);\r
282         }\r
283          else\r
284         {\r
285                 // Simple login ID\r
286                 define('DOUBLER_ENTER_LOGIN', GUEST_ENTER_LOGIN);\r
287         }\r
288 \r
289         // Which mail-send-mode did the admin setup?\r
290         switch ($CONFIG['doubler_send_mode'])\r
291         {\r
292         case "DIRECT":\r
293                 define('DOUBLER_PAYOUT_TIME', DOUBLER_PAYOUT_TIME_DIRECT);\r
294                 break;\r
295 \r
296         case "RESET":\r
297                 define('DOUBLER_PAYOUT_TIME', DOUBLER_PAYOUT_TIME_RESET);\r
298                 break;\r
299         }\r
300 \r
301         // Generate table with already payed out doubles\r
302         define('__DOUBLER_PAYOUT_HISTORY', DOUBLER_GENERATE_TABLE("0", "Y", "N", "DESC"));\r
303 \r
304         // Generate timemark\r
305         define('__TIMEOUT_MARK', CREATE_FANCY_TIME($CONFIG['doubler_timeout']));\r
306 \r
307         // Usage counter\r
308         define('__DOUBLER_COUNTER', $CONFIG['doubler_counter']);\r
309 \r
310         // Points left to doubler\r
311         define('__LEFT_VALUE', TRANSLATE_COMMA(DOUBLER_GET_TOTAL_POINTS_LEFT()));\r
312 \r
313         // Output neccessary form for this\r
314         LOAD_TEMPLATE("doubler_index");\r
315 \r
316         // Output footer\r
317         include(PATH."inc/footer.php");\r
318 }\r
319  else\r
320 {\r
321         // You have to configure first!\r
322         LOAD_URL(URL."/install.php");\r
323 }\r
324 \r
325 // Really all done here... ;-)\r
326 ?>\r