2 /************************************************************************
3 * MXChange v0.2.1 Start: 06/29/2004 *
4 * ================ Last change: 02/11/2005 *
6 * -------------------------------------------------------------------- *
7 * File : what-list_rallyes.php *
8 * -------------------------------------------------------------------- *
9 * Short description : List existing rallyes *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Bestehende Rallyes auflisten *
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 - 2009 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')) || (!isAdmin())) {
44 // Add description as navigation point
45 addMenuDescription('admin', __FILE__);
47 if (!isGetRequestElementSet('sub')) setRequestGetElement('sub', '');
50 // Quick actions on a rallye
51 if (isGetRequestElementSet('rallye')) {
55 if (isGetRequestElementSet('activate')) {
56 // Activate / deactivate
57 switch (getRequestElement('activate')) {
59 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='Y' WHERE `id`=%s AND `is_active`='N' LIMIT 1");
63 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='N' WHERE `id`=%s AND `is_active`='Y' LIMIT 1");
66 } elseif (isGetRequestElementSet('notify')) {
67 // Automatic notification
68 switch (getRequestElement('notify')) {
70 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='Y' WHERE `id`=%s AND `send_notify`='N' LIMIT 1");
74 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='N' WHERE `id`=%s AND `send_notify`='Y' LIMIT 1");
77 } elseif (isGetRequestElementSet('auto')) {
78 // Automatic adding of new members
79 switch (getRequestElement('auto')) {
81 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='Y' WHERE `id`=%s AND `auto_add_new_user`='N' LIMIT 1");
85 addSql("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='N' WHERE `id`=%s AND `auto_add_new_user`='Y' LIMIT 1");
91 runFilterChain('run_sqls');
92 } elseif (isPostRequestElementSet('remove')) {
94 $SEL = countPostSelection();
99 // Delete selected rallyes and all it's data
100 foreach (postRequestElement('sel') as $id => $selected) {
101 // Remove selected rallye entirely...
102 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_data` WHERE `id`=%s LIMIT 1",
103 array(bigintval($id)), __FILE__, __LINE__, false));
104 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE rallye_id=%s",
105 array(bigintval($id)), __FILE__, __LINE__, false));
106 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_users` WHERE rallye_id=%s",
107 array(bigintval($id)), __FILE__, __LINE__, false));
111 runFilterChain('run_sqls');
114 $message = getMessage('RALLYE_DELETED');
116 // No rallye selected to delete!
117 $message = getMessage('RALLYE_DELETE_NOTHING_SELECTED');
119 } elseif (isPostRequestElementSet('change')) {
121 $SEL = countSelection(postRequestElement('title'));
126 // Change selected rallyes and all it's data
127 foreach (postRequestElement('title') as $id => $title) {
129 $id = bigintval($id);
131 // Generate timestamps
132 $START = mktime(postRequestElement('start_hour', $id), postRequestElement('start_min', $id), postRequestElement('start_sec', $id), postRequestElement('start_month', $id), postRequestElement('start_day', $id), postRequestElement('start_year', $id));
133 $END = mktime(postRequestElement('end_hour', $id) , postRequestElement('end_min', $id) , postRequestElement('end_sec', $id) , postRequestElement('end_month', $id) , postRequestElement('end_day', $id) , postRequestElement('end_year', $id) );
136 addSql(SQL_QUERY_ESC("UPDATE
137 `{?_MYSQL_PREFIX?}_rallye_data`
151 postRequestElement('descr', $id),
152 postRequestElement('templ', $id),
155 bigintval(postRequestElement('min_users', $id)),
156 bigintval(postRequestElement('min_prices', $id)),
158 ), __FILE__, __LINE__, false));
162 runFilterChain('run_sqls');
165 $message = getMessage('RALLYE_CHANGED');
169 if (isPostRequestElementSet('edit')) {
170 // Check for selections
171 $SEL = countPostSelection();
173 // Make all selected and deactivated rallyes editable
175 foreach (postRequestElement('sel') as $id => $selected) {
176 // Load rallye basic data
177 $result = SQL_QUERY_ESC("SELECT
178 `title`, `descr`, `template`, `start_time`, `end_time`, `min_users`, `min_prices`
180 `{?_MYSQL_PREFIX?}_rallye_data`
184 array(bigintval($id)), __FILE__, __LINE__);
186 $content = SQL_FETCHARRAY($result);
189 SQL_FREERESULT($result);
192 $content['s_sec'] = addSelectionBox('sec' , date('s', $content['start_time']), 'start', $id);
193 $content['s_min'] = addSelectionBox('min' , date('i', $content['start_time']), 'start', $id);
194 $content['s_hour'] = addSelectionBox('hour' , date('G', $content['start_time']), 'start', $id);
195 $content['s_day'] = addSelectionBox('day' , date('d', $content['start_time']), 'start', $id);
196 $content['s_month'] = addSelectionBox('month', date('m', $content['start_time']), 'start', $id);
197 $content['s_year'] = addSelectionBox('year' , date('Y', $content['start_time']), 'start', $id);
200 $content['e_sec'] = addSelectionBox('sec' , date('s', $content['end_time']) , 'end' , $id);
201 $content['e_min'] = addSelectionBox('min' , date('i', $content['end_time']) , 'end' , $id);
202 $content['e_hour'] = addSelectionBox('hour' , date('G', $content['end_time']) , 'end' , $id);
203 $content['e_day'] = addSelectionBox('day' , date('d', $content['end_time']) , 'end' , $id);
204 $content['e_month'] = addSelectionBox('month', date('m', $content['end_time']) , 'end' , $id);
205 $content['e_year'] = addSelectionBox('year' , date('Y', $content['end_time']) , 'end' , $id);
207 // Remember other values
208 $content['templ'] = addReferalRallyeTemplateSelection('templ['.$id.']', $content['template']);
209 $content['sw'] = $SW;
210 $content['id'] = $id;
213 $OUT .= loadTemplate('admin_edit_rallyes_row', true, $content);
219 // Load final template
220 loadTemplate('admin_edit_rallyes', false, $OUT);
222 // Nothing selected to edit
223 loadTemplate('admin_settings_saved', false, loadTemplate('admin_list_rallye_noselect', true));
225 } elseif ((getRequestElement('sub') == 'users') && (getRequestElement('rallye') > 0)) {
226 // List users and their refs before start and current
227 $result = SQL_QUERY_ESC("SELECT `userid`, `refs`, `curr_points` FROM `{?_MYSQL_PREFIX?}_rallye_users` WHERE `rallye_id`=%s ORDER BY `userid` ASC",
228 array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__);
229 if (SQL_NUMROWS($result) > 0) {
231 $content['rallye'] = getRequestElement('rallye');
232 while ($row = SQL_FETCHARRAY($result)) {
233 // Check for referal count
234 $cnt = getReferalRallyeRefsCount($row['userid'], $row['refs']);
241 if (($row['curr_points'] > 0) && ($cnt > 0)) { $bl = "<strong>"; $br = "</strong>"; }
242 if (($row['refs'] > 0) || ($cnt > 0)) {
243 // Insert link to referal list
244 //* DEBUG: */ outputHtml('-'.$row['userid'].'/'.$cnt.'/'.$row['refs']."-<br />");
245 $cnt = generateUserProfileLink($row['userid'], $cnt, 'list_refs');
246 $row['refs'] = generateUserProfileLink($row['userid'], $row['refs'], 'list_refs');
250 $points = countSumTotalData($row['userid'], 'user_points', 'points', 'userid', false, " AND `ref_depth`=1 LIMIT 1");
251 //* DEBUG: */ outputHtml(basename(__FILE__).":userid={$row['userid']},points={$points},opoints={$row['curr_points']}<br />");
254 // @TODO Rewritings: userid->userid,opoints->curr_points,old->refs in template
257 'userid' => $row['userid'],
260 'old' => $row['refs'],
262 'opoints' => translateComma($points - $row['curr_points']),
265 // Load row template and switch color
266 $OUT .= loadTemplate('admin_list_rallye_usr_row', true, $row);
271 SQL_FREERESULT($result);
274 loadTemplate('admin_list_rallye_usr', false, $OUT);
277 loadTemplate('admin_settings_saved', false, getMessage('RALLYE_ADMIN_USERS_404'));
280 // Start listing rallyes
281 $result = SQL_QUERY("SELECT
282 `id`, `admin_id`, `title`, `descr`, `template`, `start_time`, `end_time`, `auto_add_new_user`, `is_active`, `send_notify`, `notified`, `min_users`, `min_prices`
284 `{?_MYSQL_PREFIX?}_rallye_data`
286 `start_time` DESC", __FILE__, __LINE__);
289 if (SQL_NUMROWS($result) > 0) {
290 // List found rallyes
292 while ($data = SQL_FETCHARRAY($result)) {
294 $data['login'] = getAdminLogin($data['admin_id']);
296 // Count joined userids
297 $joined = countSumTotalData($data['id'], 'rallye_users', 'id', 'rallye_id', true);
299 // Did some users joined this rallye?
302 $joined = "<a href=\"{?URL?}/modules.php?module=admin&what=list_rallyes&sub=users&rallye=".$data['id']."\" title=\"{--RALLYE_LIST_USERS_TITLE--}\">".$joined."</a>";
305 // Alter some variables
306 if (empty($data['login'])) $data['login'] = '???';
307 if (empty($data['template'])) $data['template'] = '---';
308 if (empty($data['descr'])) $data['descr'] = '---';
310 // Transfer data into array for the template
312 'select' => "<input type=\"checkbox\" name=\"sel[".$data['id']."]\" class=\"admin_normal\" value=\"1\" />",
313 'admin_id' => $data['admin_id'],
314 'email_link' => generateEmailLink($data['admin_id']),
315 'login' => $data['login'],
318 'title' => $data['title'],
319 'template' => $data['template'],
321 'start_date' => generateDateTime($data['start_time'], 2),
322 'end_date' => generateDateTime($data['end_time'] , 2),
323 'active_lnk' => translateYesNo($data['is_active']),
324 'notify_lnk' => translateYesNo($data['send_notify']),
325 'auto_lnk' => translateYesNo($data['auto_add_new_user']),
326 'notified' => translateYesNo($data['notified']),
327 'prices_cnt' => translateComma(countSumTotalData($data['id'], 'rallye_prices', 'id', 'rallye_id', true)),
328 'descr' => $data['descr'],
329 'min_users' => $data['min_users'],
330 'min_prices' => $data['min_prices'],
333 // Is the rallye active or not?
334 switch ($data['is_active']) {
336 // Rallye is active so do not edit it!
337 $row['select'] = "<div class=\"big\">".$row['id']."</div>";
338 $row['active_title'] = getMessage('RALLYE_DEACTIVATE_NOW');
343 $row['active_title'] = getMessage('RALLYE_ACTIVATE_NOW');
348 // Notification to members?
349 switch ($data['send_notify']) {
351 $row['notify_title'] = getMessage('RALLYE_STOP_NOTIFY_NOW');
356 $row['notify_title'] = getMessage('RALLYE_START_NOTIFY_NOW');
361 // Auto-add of new joined members?
362 switch ($data['auto_add_new_user']) {
364 $row['auto_title'] = getMessage('RALLYE_STOP_AUTO_ADD_NOW');
369 $row['auto_title'] = getMessage('RALLYE_START_AUTO_ADD_NOW');
375 $OUT .= loadTemplate('admin_list_rallyes_row', true, $row);
380 SQL_FREERESULT($result);
382 // Remember rows in array
383 $content['rows'] = $OUT;
386 loadTemplate('admin_list_rallyes', false, $content);
388 // No rallyes setup so far
389 loadTemplate('admin_settings_saved', false, getMessage('RALLYE_NO_RALLYES_SETUP'));