Copyright updated
[mailer.git] / 0.2.1 / inc / modules / admin / what-config_points.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 10/12/2003 *\r
4  * ===============                              Last change: 12/12/2004 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : what-config_points.php                           *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Setup welcome-points for registration etc.       *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Einstellen der Willkommensgutschrift usw.        *\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'])) || (!IS_ADMIN()))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
38         require($INC);\r
39 }\r
40 \r
41 global $link;\r
42 \r
43 // Add description as navigation point\r
44 ADD_DESCR("admin", basename(__FILE__));\r
45 \r
46 OPEN_TABLE("100%", "admin_content admin_content_align", "");\r
47 if (!empty($_GET['sub']))\r
48 {\r
49         switch ($_GET['sub'])\r
50         {\r
51         case "points":\r
52                 if ((empty($_POST['points_register'])) || (empty($_POST['points_ref'])))\r
53                 {\r
54                         unset($_POST['ok']);\r
55                 }\r
56                 break;\r
57 \r
58         case "ref":\r
59                 if (isset($_GET['do']))\r
60                 {\r
61                         if (((empty($_POST['lvl'])) || (empty($_POST['perc']))) && ($_GET['do'] == "add"))\r
62                         {\r
63                                 unset($_POST['ok']);\r
64                         }\r
65                 }\r
66                 break;\r
67         }\r
68 }\r
69  else\r
70 {\r
71         // Display overview\r
72         $_GET['sub'] = "overview";\r
73 }\r
74 \r
75 if (isset($_POST['ok']))\r
76 {\r
77         $SQL = array();\r
78         switch ($_GET['sub'])\r
79         {\r
80         case "points":\r
81                 $SQL[] = "UPDATE "._MYSQL_PREFIX."_config SET points_register='".$_POST['points_register']."', points_ref='".$_POST['points_ref']."' WHERE config='0' LIMIT 1";\r
82                 break;\r
83 \r
84         case "ref":\r
85                 switch ($_GET['do'])\r
86                 {\r
87                 case "add":\r
88                         $SQL[] = "INSERT INTO "._MYSQL_PREFIX."_refdepths (level, percents) VALUES ('".$_POST['lvl']."', '".$_POST['perc']."')";\r
89                         break;\r
90 \r
91                 case "edit": // Change entries\r
92                         foreach ($_POST['lvl'] as $id=>$value)\r
93                         {\r
94                                 // Secure ID\r
95                                 $id = bigintval($id);\r
96 \r
97                                 // Update entry\r
98                                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_refdepths SET level='%s', percents='%s' WHERE id=%d LIMIT 1",\r
99                                  array(bigintval($value), $_POST['perc'][$id], $id), __FILE__, __LINE__);\r
100                         }\r
101                         $TEXT = REF_DEPTHS_SAVED;\r
102                         break;\r
103 \r
104                 case "del":\r
105                         foreach ($_POST['id'] as $id=>$value)\r
106                         {\r
107                                 $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_refdepths WHERE id=%d LIMIT 1",\r
108                                  array(bigintval($id)), __FILE__, __LINE__);\r
109                         }\r
110                         $TEXT = REF_DEPTHS_DELETED;\r
111                         break;\r
112                 }\r
113 \r
114                 // Update cache file\r
115                 if (GET_EXT_VERSION("cache") >= "0.1.2")\r
116                 {\r
117                         if ($CACHE->cache_file("refdepths", true)) $CACHE->cache_destroy();\r
118                 }\r
119                 break;\r
120 \r
121         case "settings":\r
122                 $REF = bigintval($_POST['ref_payout']);\r
123                 $SQL[] = sprintf("UPDATE "._MYSQL_PREFIX."_config SET\r
124 allow_direct_pay='%s',\r
125 reg_points_mode='%s',\r
126 ref_payout='%d'\r
127 WHERE config='0' LIMIT 1",\r
128  $_POST['direct_pay'],\r
129  $_POST['refmode'],\r
130  $REF\r
131                 );\r
132                 if (($CONFIG['ref_payout'] == 0) && ($_POST['ref_payout'] > 0))\r
133                 {\r
134                         // Update account's ref_payout for "must-confirm"\r
135                         $SQL[] = sprintf("UPDATE "._MYSQL_PREFIX."_user_data SET ref_payout=(%d - mails_confirmed)\r
136 WHERE mails_confirmed < %d", $REF, $REF);\r
137                 }\r
138                  elseif (($CONFIG['ref_payout'] > 0) && ($_POST['ref_payout'] == 0))\r
139                 {\r
140                         // Update account's ref_payout for "not-must-confirm"\r
141                         $SQL[] = "UPDATE "._MYSQL_PREFIX."_user_data SET ref_payout=0 WHERE ref_payout > 0";\r
142                         $SQL[] = "UPDATE "._MYSQL_PREFIX."_user_points SET points=points+locked_points WHERE locked_points>0";\r
143                         $SQL[] = "UPDATE "._MYSQL_PREFIX."_user_points SET locked_points=0 WHERE locked_points>0";\r
144                 }\r
145                 break;\r
146         }\r
147         if (isset($SQL))\r
148         {\r
149                 if (strpos($SQL[0], "INSERT") > -1)\r
150                 {\r
151                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_refdepths WHERE level='%s' LIMIT 1",\r
152                          array(bigintval($_POST['lvl'])), __FILE__, __LINE__);\r
153                         SQL_FREERESULT($result);\r
154                 }\r
155                 if (count($SQL) > 0)\r
156                 {\r
157                         // Run all SQL commands\r
158                         foreach ($SQL as $s)\r
159                         {\r
160                                 $result = SQL_QUERY($s, __FILE__, __LINE__);\r
161                         }\r
162 \r
163                         $content = "<SPAN class=\"admin_done\">".SETTINGS_SAVED."</SPAN>";\r
164 \r
165                         // Destroy config cache file here...\r
166                         if (GET_EXT_VERSION("cache") >= "0.1.2")\r
167                         {\r
168                                 if ($CACHE->cache_file("config", true)) $CACHE->cache_destroy();\r
169                                 unset($CFG_CACHE);\r
170                         }\r
171                 }\r
172                  else\r
173                 {\r
174                         $content = "<SPAN class=\"admin_failed\">".SETTINGS_NOT_SAVED."</SPAN>";\r
175                 }\r
176                 unset($SQL);\r
177                 LOAD_TEMPLATE("admin_settings_saved", false, $content);\r
178         }\r
179          elseif (isset($TEXT))\r
180         {\r
181                 LOAD_TEMPLATE("admin_settings_saved", false, $TEXT);\r
182         }\r
183 }\r
184  elseif ($_GET['sub'] == "settings")\r
185 {\r
186         // Setup some settings like direct pay and so on\r
187         // Including new add-mode for one-time referral bonus\r
188         switch ($CONFIG['direct_pay'])\r
189         {\r
190         case "Y":\r
191                 define('__DIRECT_Y', " checked");\r
192                 define('__DIRECT_N', "");\r
193                 break;\r
194 \r
195         case "N":\r
196                 define('__DIRECT_Y', "");\r
197                 define('__DIRECT_N', " checked");\r
198                 break;\r
199         }\r
200 \r
201         // One-time referral bonus add-mode\r
202         switch ($CONFIG['reg_points_mode'])\r
203         {\r
204                 case "ref"   : define('__MODE_REF', " checked"); define('__MODE_DIRECT', "");         break;\r
205                 case "direct": define('__MODE_REF', "");         define('__MODE_DIRECT', " checked"); break;\r
206         }\r
207 \r
208         // Referral payout value\r
209         define('__REF_PAYOUT', round($CONFIG['ref_payout']));\r
210 \r
211         // Load template\r
212         LOAD_TEMPLATE("admin_config_point_settings");\r
213 }\r
214  elseif ($_GET['sub'] == "ref")\r
215 {\r
216          if ((isset($_POST['del'])) && ((SELECTION_COUNT($_POST['sel']) > 0) || (isset($_POST['sel'][0]))))\r
217         {\r
218                 // Delete entries\r
219                 $SW = 2; $OUT = "";\r
220                 foreach ($_POST['sel'] as $id=>$value)\r
221                 {\r
222                         $result = SQL_QUERY_ESC("SELECT level, percents FROM "._MYSQL_PREFIX."_refdepths WHERE id=%d LIMIT 1",\r
223                          array(bigintval($id)), __FILE__, __LINE__);\r
224                         list($lvl, $perc) = SQL_FETCHROW($result);\r
225                         SQL_FREERESULT($result);\r
226 \r
227                         // Prepare data for the row template\r
228                         $content = array(\r
229                                 'sw'  => $SW,\r
230                                 'id'  => $id,\r
231                                 'lvl' => $lvl,\r
232                                 'per' => $perc,\r
233                         );\r
234 \r
235                         // Load row template and switch color\r
236                         $OUT .= LOAD_TEMPLATE("admin_points_del_row", true, $content);\r
237                         $SW = 3 - $SW;\r
238                 }\r
239                 define('__LEVEL_ROWS', $OUT);\r
240 \r
241                 // Load main template\r
242                 LOAD_TEMPLATE("admin_points_del");\r
243         }\r
244          elseif ((isset($_POST['edit'])) && ((SELECTION_COUNT($_POST['sel']) > 0) || (isset($_POST['sel'][0]))))\r
245         {\r
246                 // Edit entries\r
247                 $SW = 2; $OUT = "";\r
248                 foreach ($_POST['sel'] as $id=>$value)\r
249                 {\r
250                         $result = SQL_QUERY_ESC("SELECT level, percents FROM "._MYSQL_PREFIX."_refdepths WHERE id=%d LIMIT 1",\r
251                          array(bigintval($id)), __FILE__, __LINE__);\r
252                         list($lvl, $perc) = SQL_FETCHROW($result);\r
253                         SQL_FREERESULT($result);\r
254 \r
255                         // Prepare data for the row template\r
256                         $content = array(\r
257                                 'sw'  => $SW,\r
258                                 'id'  => $id,\r
259                                 'lvl' => $lvl,\r
260                                 'per' => $perc,\r
261                         );\r
262 \r
263                         // Load row template and switch color\r
264                         $OUT .= LOAD_TEMPLATE("admin_points_edit_row", true, $content);\r
265                         $SW = 3 - $SW;\r
266                 }\r
267                 define('__LEVEL_ROWS', $OUT);\r
268 \r
269                 // Load main template\r
270                 LOAD_TEMPLATE("admin_points_edit");\r
271         }\r
272          else\r
273         {\r
274                 // Referral levels\r
275                 $result = SQL_QUERY("SELECT id, level, percents FROM "._MYSQL_PREFIX."_refdepths ORDER BY level", __FILE__, __LINE__);\r
276                 if (SQL_NUMROWS($result) > 0)\r
277                 {\r
278                         // Make referral levels editable and deletable\r
279                         $SW = 2; $OUT = "";\r
280 \r
281                         // List already existing categories for editing\r
282                         while (list($id, $lvl, $perc) = SQL_FETCHROW($result))\r
283                         {\r
284                                 // Prepare data for the row template\r
285                                 $content = array(\r
286                                         'sw'  => $SW,\r
287                                         'id'  => $id,\r
288                                         'lvl' => $lvl,\r
289                                         'per' => $perc,\r
290                                 );\r
291 \r
292                                 // Load row template and switch color\r
293                                 $OUT .= LOAD_TEMPLATE("admin_points_row", true, $content);\r
294                                 $SW = 3 - $SW;\r
295                         }\r
296 \r
297                         // Free memory\r
298                         SQL_FREERESULT($result);\r
299                         define('__LEVEL_ROWS', $OUT);\r
300 \r
301                         // Load main template\r
302                         LOAD_TEMPLATE("admin_points");\r
303                 }\r
304 \r
305                 // Form for adding new referral levels\r
306                 LOAD_TEMPLATE("admin_add_reflvl");\r
307         }\r
308 }\r
309  elseif ($_GET['sub'] == "points")\r
310 {\r
311         // First points for registration and other fixed points including new add-mode for one-time referral bonus...\r
312         define('P_REG_VALUE', $CONFIG['points_register']);\r
313         define('P_REF_VALUE', $CONFIG['points_ref']);\r
314 \r
315         // Load templates\r
316         LOAD_TEMPLATE("admin_config_sub_points");\r
317 }\r
318  else\r
319 {\r
320         // Display selection box\r
321         LOAD_TEMPLATE("admin_config_points");\r
322 }\r
323 \r
324 CLOSE_TABLE();\r
325 //\r
326 ?>\r