2 /************************************************************************
3 * MXChange v0.2.1 Start: 10/19/2003 *
4 * =============== Last change: 07/13/2004 *
6 * -------------------------------------------------------------------- *
7 * File : what-unconfirmed.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Unconfirmed mails *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Unbestätigte Mails *
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')) {
42 } elseif (!isMember()) {
43 redirectToIndexMemberOnlyModule();
44 } elseif ((!isExtensionActive('mailid')) && (!isAdmin())) {
45 redirectToUrl('modules.php?module=login');
48 // Add description as navigation point
49 addMenuDescription('member', __FILE__);
51 // Shall we display a mail?
52 if ((isGetRequestElementSet(('bonusid'))) && (isExtensionActive('bonus'))) {
53 // Display bonus mail by loading it's full data
54 $result_data = SQL_QUERY_ESC("SELECT id, subject, timestamp, cat_id, points, text, is_notify, data_type, time, url
55 FROM `{?_MYSQL_PREFIX?}_bonus`
56 WHERE `id`=%s LIMIT 1",
57 array(bigintval(getRequestElement('bonusid'))), __FILE__, __LINE__);
60 $content = SQL_FETCHARRAY($result_data);
62 // Translate some data
63 $content['timestamp'] = generateDateTime($content['timestamp'], '2');
64 $content['category'] = getCategory($content['cat_id']);
65 $content['points'] = translateComma($content['points']);
66 $content['is_notify'] = translateYesNo($content['is_notify']);
67 $content['sender'] = getMessage('_ADMIN_SHORT');
68 $content['time'] = createFancyTime($content['time']);
69 $content['userid'] = getUserId();
71 // Get timestamp from insert
72 $content['user_status'] = sprintf(getMessage('MEMBER_MAIL_BONUS_CONFIRMED_ON'),
73 generateDateTime(getTimestampFromUserStats('bonusid', $content['id']), '2')
76 // Display it depending on mail (data) type
77 loadTemplate('member_mail_bonus_'.strtolower($content['data_type']), false, $content);
80 SQL_FREERESULT($result_data);
81 } elseif (isGetRequestElementSet(('mailid'))) {
82 // Display regular member mail by loading its full data
83 $result_data = SQL_QUERY_ESC("SELECT s.id, s.subject, p.text, s.timestamp_ordered AS `timestamp`, s.cat_id, pay.price AS points, p.sender, pay.time, p.data_type
84 FROM `{?_MYSQL_PREFIX?}_user_stats` AS s
85 LEFT JOIN `{?_MYSQL_PREFIX?}_pool` AS p
87 LEFT JOIN `{?_MYSQL_PREFIX?}_payments` AS pay
88 ON p.payment_id=pay.id
89 WHERE s.id=%s LIMIT 1",
90 array(bigintval(getRequestElement('mailid'))), __FILE__, __LINE__);
93 $content = SQL_FETCHARRAY($result_data);
95 // Translate some data
96 $content['timestamp'] = generateDateTime($content['timestamp'], '2');
97 $content['category'] = getCategory($content['cat_id']);
98 $content['points'] = translateComma($content['points']);
99 $content['time'] = createFancyTime($content['time']);
100 $content['userid'] = getUserId();
102 // Get timestamp from insert
103 $content['user_status'] = sprintf(getMessage('MEMBER_MAIL_NORMAL_CONFIRMED_ON'),
104 generateDateTime(getTimestampFromUserStats('mailid', $content['id']), '2')
107 // Display it depending on mail (data) type
108 loadTemplate('member_mail_normal_'.strtolower($content['data_type']), false, $content);
111 SQL_FREERESULT($result_data);
114 if (isExtensionActive('bonus')) {
116 $result = SQL_QUERY_ESC("SELECT stats_id, bonus_id, link_type FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY bonus_id DESC, stats_id DESC",
117 array(getUserId()), __FILE__, __LINE__);
119 // Don't load bonus ID
120 $result = SQL_QUERY_ESC("SELECT stats_id, stats_id, link_type FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY stats_id DESC",
121 array(getUserId()), __FILE__, __LINE__);
124 // Mails left for confirmation?
125 if (SQL_NUMROWS($result) > 0) {
126 // Please confirm these mails!
127 $sum = 0; $OUT = ''; $SW = 2;
132 // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
133 while (list($id, $id2, $type) = SQL_FETCHROW($result)) {
134 // Load data from stats table...
135 $cat = ''; $result_data = false;
139 $result_data = SQL_QUERY_ESC("SELECT s.subject, s.timestamp_ordered, s.cat_id, s.payment_id, p.sender
140 FROM `{?_MYSQL_PREFIX?}_user_stats` AS s
141 LEFT JOIN `{?_MYSQL_PREFIX?}_pool` AS p
145 array(bigintval($id)), __FILE__, __LINE__);
146 $type = 'mailid'; $DATA = $id; $PROBLEM = getMessage('NORMAL_MAIL_PROBLEM');
150 $result_data = SQL_QUERY_ESC("SELECT subject, timestamp, cat_id, points, 0 FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `id`=%s LIMIT 1",
151 array(bigintval($id2)), __FILE__, __LINE__);
152 $type = 'bonusid'; $DATA = $id2; $PROBLEM = getMessage('BONUS_MAIL_PROBLEM');
155 default: // Unknown type detected!
156 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown mail type %s detected.", $type));
160 // Data found to this mail?
161 if ((SQL_NUMROWS($result_data) == 1) && (($type == 'mailid') || ($type == 'bonusid'))) {
163 list($subject, $timestamp, $cat, $pay, $sender) = SQL_FETCHROW($result_data);
165 // Subject line found?
166 if (empty($subject)) {
168 $subject = getMessage('DEFAULT_SUBJECT_LINE');
172 if (($sender > 0) && ($type == 'mailid')) {
174 $sender = bigintval($sender);
175 } elseif ($type == 'bonusid') {
177 $sender = getMessage('_ADMIN_SHORT');
180 $sender = getMessage('EMAIL_STATUS_DELETED');
183 // Prepare data for template
186 'userid' => getUserId(),
187 'data' => bigintval($DATA),
189 'subject' => $subject,
191 'stamp' => generateDateTime($timestamp, '2'),
192 'cat' => getCategory($cat),
193 'points' => translateComma($pay),
197 if (getConfig('show_points_unconfirmed') == 'Y') {
198 $OUT .= loadTemplate('member_unconfirmed_row', true, $content);
200 $OUT .= loadTemplate('member_unconfirmed_row_nopoints', true, $content);
206 // Prepare data for template
213 // Display points or not?
214 if (getConfig('show_points_unconfirmed') == 'Y') {
215 $OUT .= loadTemplate('member_unconfirmed_404', true, $content);
217 $OUT .= loadTemplate('member_unconfirmed_404_nopoints', true, $content);
222 SQL_FREERESULT($result_data);
229 SQL_FREERESULT($result);
231 // Remember total points
232 $content['total_points'] = translateComma($sum);
234 // Remember all generated rows in constant for the template
235 $content['rows'] = $OUT;
237 // Load main template
238 if (getConfig('show_points_unconfirmed') == 'Y') {
239 loadTemplate('member_unconfirmed_table', false, $content);
241 loadTemplate('member_unconfirmed_table_nopoints', false, $content);
244 // No mails left to confirm... :)
245 loadTemplate('admin_settings_saved', false, getMessage('MEMBER_NO_MAILS_TO_CONFIRM'));