2 /************************************************************************
3 * MXChange v0.2.1 Start: 10/12/2003 *
4 * =============== Last change: 12/12/2004 *
6 * -------------------------------------------------------------------- *
7 * File : what-config_points.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Setup welcome-points for registration etc. *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Einstellen der Willkommensgutschrift usw. *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
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 *
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. *
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. *
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, *
37 ************************************************************************/
39 // Some security stuff...
40 if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
41 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
45 // Add description as navigation point
46 ADD_DESCR('admin', __FILE__);
51 // Is the 'sub' parameter set?
52 if (REQUEST_ISSET_GET('sub')) {
53 // Yes, then do some sanity-checks
54 switch (REQUEST_GET('sub')) {
56 if ((!REQUEST_ISSET_POST(('points_register'))) || (!REQUEST_ISSET_POST(('points_ref')))) {
57 REQUEST_UNSET_POST('ok');
62 if (REQUEST_ISSET_GET('do')) {
63 if (((!REQUEST_ISSET_POST(('lvl'))) || (!REQUEST_ISSET_POST(('perc')))) && (REQUEST_GET('do') == 'add')) {
64 REQUEST_UNSET_POST('ok');
71 REQUEST_SET_GET('sub', 'overview');
76 switch (REQUEST_GET('sub')) {
78 updateConfiguration(array('points_register', 'points_ref'), array(REQUEST_POST('points_register'), REQUEST_POST('points_ref')));
82 switch (REQUEST_GET('do'))
85 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_refdepths` (level, percents) VALUES ('".REQUEST_POST('lvl')."','".REQUEST_POST('perc')."')");
88 case 'edit': // Change entries
89 foreach (REQUEST_POST('lvl') as $id => $value) {
93 // Revert german commata
94 REQUEST_SET_POST('perc', array($id => convertCommaToDot(REQUEST_POST('perc', $id))));
97 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_refdepths` SET level='%s', percents='%s' WHERE `id`=%s LIMIT 1",
98 array(bigintval($value), REQUEST_POST('perc', $id), $id), __FILE__, __LINE__);
100 $message = getMessage('REF_DEPTHS_SAVED');
104 foreach (REQUEST_POST('id') as $id => $value) {
105 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_refdepths` WHERE `id`=%s LIMIT 1",
106 array(bigintval($id)), __FILE__, __LINE__);
108 $message = getMessage('REF_DEPTHS_DELETED');
113 if (GET_EXT_VERSION('cache') >= '0.1.2') {
114 if ($GLOBALS['cache_instance']->loadCacheFile("refdepths")) $GLOBALS['cache_instance']->destroyCacheFile();
119 $REF = bigintval(REQUEST_POST('ref_payout'));
121 array('allow_direct_pay', 'reg_points_mode', 'ref_payout'),
122 array(REQUEST_POST('allow_direct_pay'), REQUEST_POST('reg_points_mode'), $REF)
124 if ((getConfig('ref_payout') == 0) && (REQUEST_POST('ref_payout') > 0)) {
125 // Update account's ref_payout for "must-confirm"
126 ADD_SQL(sprintf("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET `ref_payout`=(%s - `mails_confirmed`)
127 WHERE `mails_confirmed` < %s", $REF, $REF));
128 } elseif ((getConfig('ref_payout') > 0) && (REQUEST_POST('ref_payout') == 0)) {
129 // Update account's ref_payout for "not-must-confirm"
130 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET `ref_payout`=0 WHERE `ref_payout` > 0");
131 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_user_points` SET `points`=`points`+`locked_points` WHERE `locked_points` > 0");
132 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_user_points` SET `locked_points`=0 WHERE `locked_points` > 0");
137 if ((IS_SQLS_VALID()) && (IS_SQLS_VALID())) {
138 if (strpos($GLOBALS['sqls'][0], "INSERT") > -1) {
139 $result = SQL_QUERY_ESC("SELECT `id` FROM `{!_MYSQL_PREFIX!}_refdepths` WHERE level='%s' LIMIT 1",
140 array(bigintval(REQUEST_POST('lvl'))), __FILE__, __LINE__);
141 SQL_FREERESULT($result);
144 if (COUNT_SQLS() > 0) {
145 // Run all SQL commands
146 runFilterChain('run_sqls');
149 $message = getMessage('SETTINGS_SAVED');
151 // Destroy config cache file here...
152 rebuildCacheFiles("config", "config");
154 // Prepare failed-message
155 $message = "<span class=\"admin_failed\">{--SETTINGS_NOT_SAVED--}</span>";
158 // Remove SQL queries
162 // Shall we display a message?
163 if (!empty($message)) {
165 LOAD_TEMPLATE('admin_settings_saved', false, $message);
167 } elseif (REQUEST_GET('sub') == "settings") {
168 // Setup some settings like direct pay and so on
169 // Including new add-mode for one-time referal bonus
170 switch (getConfig('allow_direct_pay')) {
172 define('__DIRECT_Y', ' checked="checked"');
173 define('__DIRECT_N', '');
177 define('__DIRECT_Y', '');
178 define('__DIRECT_N', ' checked="checked"');
182 // One-time referal bonus add-mode
183 switch (getConfig('reg_points_mode')) {
185 define('__MODE_REF', ' checked="checked"');
186 define('__MODE_DIRECT', '');
190 define('__MODE_REF', '');
191 define('__MODE_DIRECT', ' checked="checked"');
195 // Referal payout value
196 define('__REF_PAYOUT', round(getConfig('ref_payout')));
199 LOAD_TEMPLATE("admin_config_point_settings");
200 } elseif (REQUEST_GET('sub') == "ref") {
201 // 12 3 32 2 3 32 2 3 4 43 21
202 if ((REQUEST_ISSET_POST('del')) && (REQUEST_ISSET_POST('sel')) && (countPostSelection() > 0)) {
205 foreach (REQUEST_POST('sel') as $id => $value) {
206 $result = SQL_QUERY_ESC("SELECT level, percents FROM `{!_MYSQL_PREFIX!}_refdepths` WHERE `id`=%s LIMIT 1",
207 array(bigintval($id)), __FILE__, __LINE__);
208 list($lvl, $perc) = SQL_FETCHROW($result);
209 SQL_FREERESULT($result);
211 // Prepare data for the row template
216 'per' => translateComma($perc),
219 // Load row template and switch color
220 $OUT .= LOAD_TEMPLATE("admin_points_del_row", true, $content);
223 define('__LEVEL_ROWS', $OUT);
225 // Load main template
226 LOAD_TEMPLATE("admin_points_del");
227 } elseif ((REQUEST_ISSET_POST('edit')) && (REQUEST_ISSET_POST('sel')) && (countPostSelection() > 0)) {
230 foreach (REQUEST_POST('sel') as $id => $value) {
231 $result = SQL_QUERY_ESC("SELECT level, percents FROM `{!_MYSQL_PREFIX!}_refdepths` WHERE `id`=%s LIMIT 1",
232 array(bigintval($id)), __FILE__, __LINE__);
233 list($lvl, $perc) = SQL_FETCHROW($result);
234 SQL_FREERESULT($result);
236 // Prepare data for the row template
241 'per' => translateComma($perc),
244 // Load row template and switch color
245 $OUT .= LOAD_TEMPLATE("admin_points_edit_row", true, $content);
248 define('__LEVEL_ROWS', $OUT);
250 // Load main template
251 LOAD_TEMPLATE("admin_points_edit");
254 $result = SQL_QUERY("SELECT `id`, `level`, `percents` FROM `{!_MYSQL_PREFIX!}_refdepths` ORDER BY `level` ASC", __FILE__, __LINE__);
255 if (SQL_NUMROWS($result) > 0) {
256 // Make referal levels editable and deletable
259 // List already existing categories for editing
260 while ($content = SQL_FETCHARRAY($result)) {
261 // Prepare data for the row template
262 // @TODO Rewritings: lvl->level, per->percents in template
265 'id' => $content['id'],
266 'lvl' => $content['level'],
267 'per' => translateComma($content['percents']),
270 // Load row template and switch color
271 $OUT .= LOAD_TEMPLATE('admin_points_row', true, $content);
276 SQL_FREERESULT($result);
277 define('__LEVEL_ROWS', $OUT);
279 // Load main template
280 LOAD_TEMPLATE('admin_points');
283 // Form for adding new referal levels
284 LOAD_TEMPLATE('admin_add_reflvl');
286 } elseif (REQUEST_GET('sub') == 'points') {
287 // First points for registration and other fixed points including new add-mode for one-time referal bonus...
288 define('P_REG_VALUE', getConfig('points_register'));
289 define('P_REF_VALUE', getConfig('points_ref'));
292 LOAD_TEMPLATE('admin_config_sub_points');
294 // Display selection box
295 LOAD_TEMPLATE('admin_config_points');