2 /************************************************************************
3 * Mailer v0.2.1-FINAL 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 * Copyright (c) 2009, 2010 by Mailer Developer Team *
22 * For more information visit: http://www.mxchange.org *
24 * This program is free software; you can redistribute it and/or modify *
25 * it under the terms of the GNU General Public License as published by *
26 * the Free Software Foundation; either version 2 of the License, or *
27 * (at your option) any later version. *
29 * This program is distributed in the hope that it will be useful, *
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
32 * GNU General Public License for more details. *
34 * You should have received a copy of the GNU General Public License *
35 * along with this program; if not, write to the Free Software *
36 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
38 ************************************************************************/
40 // Some security stuff...
41 if ((!defined('__SECURITY')) || (!isAdmin())) {
45 // Add description as navigation point
46 addMenuDescription('admin', __FILE__);
51 // Quick actions on a rallye
52 if (isGetRequestParameterSet('rallye')) {
56 if (isGetRequestParameterSet('activate')) {
57 // Activate / deactivate
58 switch (getRequestParameter('activate')) {
60 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='Y' WHERE `id`=%s AND `is_active`='N' LIMIT 1",
61 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
65 case '0': // Deactivate
66 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='N' WHERE `id`=%s AND `is_active`='Y' LIMIT 1",
67 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
71 } elseif (isGetRequestParameterSet('notify')) {
72 // Automatic notification
73 switch (getRequestParameter('notify')) {
75 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='Y' WHERE `id`=%s AND `send_notify`='N' LIMIT 1",
76 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
80 case '0': // Deactivate
81 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='N' WHERE `id`=%s AND `send_notify`='Y' LIMIT 1",
82 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
86 } elseif (isGetRequestParameterSet('auto')) {
87 // Automatic adding of new members
88 switch (getRequestParameter('auto')) {
90 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='Y' WHERE `id`=%s AND `auto_add_new_user`='N' LIMIT 1",
91 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
95 case '0': // Deactivate
96 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='N' WHERE `id`=%s AND `auto_add_new_user`='Y' LIMIT 1",
97 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__, false)
104 runFilterChain('run_sqls');
105 } elseif (isFormSent('remove')) {
107 if (countPostSelection() > 0) {
111 // Delete selected rallyes and all it's data
112 foreach (postRequestParameter('sel') as $id => $selected) {
113 // Remove selected rallye entirely...
114 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_data` WHERE `id`=%s LIMIT 1",
115 array(bigintval($id)), __FILE__, __LINE__, false));
116 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE `rallye_id`=%s",
117 array(bigintval($id)), __FILE__, __LINE__, false));
118 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_users` WHERE `rallye_id`=%s",
119 array(bigintval($id)), __FILE__, __LINE__, false));
123 runFilterChain('run_sqls');
126 $message = getMessage('RALLYE_DELETED');
128 // No rallye selected to delete!
129 $message = getMessage('RALLYE_DELETE_NOTHING_SELECTED');
131 } elseif (isFormSent('change')) {
133 if (countSelection(postRequestParameter('title')) > 0) {
137 // Change selected rallyes and all it's data
138 foreach (postRequestParameter('title') as $id => $title) {
140 $id = bigintval($id);
142 // Generate timestamps
143 $START = mktime(postRequestParameter('start_hour', $id), postRequestParameter('start_min', $id), postRequestParameter('start_sec', $id), postRequestParameter('start_month', $id), postRequestParameter('start_day', $id), postRequestParameter('start_year', $id));
144 $END = mktime(postRequestParameter('end_hour', $id) , postRequestParameter('end_min', $id) , postRequestParameter('end_sec', $id) , postRequestParameter('end_month', $id) , postRequestParameter('end_day', $id) , postRequestParameter('end_year', $id) );
147 addSql(SQL_QUERY_ESC("UPDATE
148 `{?_MYSQL_PREFIX?}_rallye_data`
162 postRequestParameter('descr', $id),
163 postRequestParameter('templ', $id),
166 bigintval(postRequestParameter('min_users', $id)),
167 bigintval(postRequestParameter('min_prices', $id)),
169 ), __FILE__, __LINE__, false));
173 runFilterChain('run_sqls');
176 $message = getMessage('RALLYE_CHANGED');
180 if (isFormSent('edit')) {
181 // Check for selections
182 if (countPostSelection() > 0) {
183 // Make all selected and deactivated rallyes editable
185 foreach (postRequestParameter('sel') as $id => $selected) {
186 // Load rallye basic data
187 $result = SQL_QUERY_ESC("SELECT
188 `title`, `descr`, `template`, `start_time`, `end_time`, `min_users`, `min_prices`
190 `{?_MYSQL_PREFIX?}_rallye_data`
194 array(bigintval($id)), __FILE__, __LINE__);
196 $content = SQL_FETCHARRAY($result);
199 SQL_FREERESULT($result);
202 $content['s_sec'] = addSelectionBox('sec' , date('s', $content['start_time']), 'start', $id);
203 $content['s_min'] = addSelectionBox('min' , date('i', $content['start_time']), 'start', $id);
204 $content['s_hour'] = addSelectionBox('hour' , date('G', $content['start_time']), 'start', $id);
205 $content['s_day'] = addSelectionBox('day' , date('d', $content['start_time']), 'start', $id);
206 $content['s_month'] = addSelectionBox('month', date('m', $content['start_time']), 'start', $id);
207 $content['s_year'] = addSelectionBox('year' , date('Y', $content['start_time']), 'start', $id);
210 $content['e_sec'] = addSelectionBox('sec' , date('s', $content['end_time']) , 'end' , $id);
211 $content['e_min'] = addSelectionBox('min' , date('i', $content['end_time']) , 'end' , $id);
212 $content['e_hour'] = addSelectionBox('hour' , date('G', $content['end_time']) , 'end' , $id);
213 $content['e_day'] = addSelectionBox('day' , date('d', $content['end_time']) , 'end' , $id);
214 $content['e_month'] = addSelectionBox('month', date('m', $content['end_time']) , 'end' , $id);
215 $content['e_year'] = addSelectionBox('year' , date('Y', $content['end_time']) , 'end' , $id);
217 // Remember other values
218 $content['templ'] = addReferalRallyeTemplateSelection('templ['.$id.']', $content['template']);
219 $content['sw'] = $SW;
220 $content['id'] = $id;
223 $OUT .= loadTemplate('admin_edit_rallyes_row', true, $content);
229 // Load final template
230 loadTemplate('admin_edit_rallyes', false, $OUT);
232 // Nothing selected to edit
233 loadTemplate('admin_settings_saved', false, getMessage('RALLYE_NO_RALLYES_SELECTED'));
235 } elseif ((getRequestParameter('sub') == 'users') && (getRequestParameter('rallye') > 0)) {
236 // List users and their refs before start and current
237 $result = SQL_QUERY_ESC("SELECT
238 `userid`, `refs`, `curr_points`
240 `{?_MYSQL_PREFIX?}_rallye_users`
245 array(bigintval(getRequestParameter('rallye'))), __FILE__, __LINE__);
246 if (SQL_NUMROWS($result) > 0) {
248 $content['rallye'] = getRequestParameter('rallye');
249 while ($row = SQL_FETCHARRAY($result)) {
250 // Check for referal count
251 $cnt = getReferalRallyeRefsCount($row['userid'], $row['refs']);
258 if (($row['curr_points'] > 0) && ($cnt > 0)) { $bl = '<strong>'; $br = '</strong>'; }
261 $points = countSumTotalData($row['userid'], 'user_points', 'points', 'userid', false, " AND `ref_depth`=1 LIMIT 1");
262 //* DEBUG: */ debugOutput(basename(__FILE__).':userid='.$row['userid'].',points='.$points.',opoints='.$row['curr_points']);
267 'userid' => $row['userid'],
270 'rews' => $row['refs'],
272 'opoints' => ($points - $row['curr_points']),
275 // Load row template and switch color
276 $OUT .= loadTemplate('admin_list_rallye_usr_row', true, $row);
281 $content['rows'] = $OUT;
282 $content['rallye'] = getRequestParameter('rallye');
285 SQL_FREERESULT($result);
288 loadTemplate('admin_list_rallye_usr', false, $content);
291 loadTemplate('admin_settings_saved', false, getMessage('RALLYE_ADMIN_USERS_404'));
294 // Start listing rallyes
295 $result = SQL_QUERY("SELECT
296 `id`, `admin_id`, `title`, `descr`, `template`, `start_time`, `end_time`,
297 `auto_add_new_user`, `is_active`, `send_notify`, `notified`, `min_users`, `min_prices`
299 `{?_MYSQL_PREFIX?}_rallye_data`
301 `start_time` DESC", __FILE__, __LINE__);
304 if (SQL_NUMROWS($result) > 0) {
305 // List found rallyes
307 while ($data = SQL_FETCHARRAY($result)) {
309 $data['login'] = getAdminLogin($data['admin_id']);
311 // Count joined userids
312 $users = countSumTotalData($data['id'], 'rallye_users', 'id', 'rallye_id', true);
314 // Did some users joined this rallye?
317 $users = '<a href="{%url=modules.php?module=admin&what=list_rallyes&sub=users&rallye=' . $data['id'] . '%}" title="{--RALLYE_LIST_USERS_TITLE--}">' . $users . '</a>';
320 // Alter some variables
321 if (empty($data['login'])) $data['login'] = '???';
322 if (empty($data['template'])) $data['template'] = '---';
323 if (empty($data['descr'])) $data['descr'] = '---';
325 // Transfer data into array for the template
327 'select' => '<input type="checkbox" name="sel[' . $data['id'] . ']" class="admin_normal" value="1" />',
328 'admin_id' => $data['admin_id'],
329 'login' => $data['login'],
332 'title' => $data['title'],
333 'template' => $data['template'],
334 'users_content' => $users,
335 'start_date' => generateDateTime($data['start_time'], 2),
336 'end_date' => generateDateTime($data['end_time'] , 2),
337 'is_active' => $data['is_active'],
338 'send_notify' => $data['send_notify'],
339 'auto_add_new_user' => $data['auto_add_new_user'],
340 'notified' => $data['notified'],
341 'prices_cnt' => countSumTotalData($data['id'], 'rallye_prices', 'id', 'rallye_id', true),
342 'descr' => $data['descr'],
343 'min_users' => $data['min_users'],
344 'min_prices' => $data['min_prices'],
347 // Is the rallye active or not?
348 switch ($data['is_active']) {
350 // Rallye is active so do not edit it!
351 $row['select'] = '<div class="big">' . $row['id'] . '</div>';
352 $row['active_title'] = getMessage('RALLYE_DEACTIVATE_NOW');
353 $row['active'] = '0';
357 $row['active_title'] = getMessage('RALLYE_ACTIVATE_NOW');
362 // Notification to members?
363 switch ($data['send_notify']) {
365 $row['notify_title'] = getMessage('RALLYE_STOP_NOTIFY_NOW');
366 $row['notify'] = '0';
370 $row['notify_title'] = getMessage('RALLYE_START_NOTIFY_NOW');
375 // Auto-add of new joined members?
376 switch ($data['auto_add_new_user']) {
378 $row['auto_title'] = getMessage('RALLYE_STOP_AUTO_ADD_NOW');
383 $row['auto_title'] = getMessage('RALLYE_START_AUTO_ADD_NOW');
389 $OUT .= loadTemplate('admin_list_rallyes_row', true, $row);
394 SQL_FREERESULT($result);
396 // Remember rows in array
397 $content['rows'] = $OUT;
400 loadTemplate('admin_list_rallyes', false, $content);
402 // No rallyes setup so far
403 loadTemplate('admin_settings_saved', false, getMessage('RALLYE_NO_RALLYES_SETUP'));