2 /************************************************************************
3 * Mailer v0.2.1-FINAL 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 : Unbestaetigte Mails *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
17 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009 - 2011 by Mailer Developer Team *
20 * For more information visit: http://www.mxchange.org *
22 * This program is free software; you can redistribute it and/or modify *
23 * it under the terms of the GNU General Public License as published by *
24 * the Free Software Foundation; either version 2 of the License, or *
25 * (at your option) any later version. *
27 * This program is distributed in the hope that it will be useful, *
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
30 * GNU General Public License for more details. *
32 * You should have received a copy of the GNU General Public License *
33 * along with this program; if not, write to the Free Software *
34 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
41 } elseif (!isMember()) {
42 redirectToIndexMemberOnlyModule();
45 // Add description as navigation point
46 addYouAreHereLink('member', __FILE__);
48 // Essential extension ext-mailid must be active
49 if (!isExtensionActive('mailid')) {
50 displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=mailid%}');
54 // Shall we display a mail?
55 if ((isGetRequestParameterSet('bonusid')) && (isExtensionActive('bonus'))) {
56 // Display bonus mail by loading it's full data
57 $result_data = SQL_QUERY_ESC("SELECT
58 `id`,`subject`,`timestamp`,`cat_id`,`points`,`text`,`is_notify`,`data_type`,`time`,`url`
60 `{?_MYSQL_PREFIX?}_bonus`
64 array(bigintval(getRequestParameter('bonusid'))), __FILE__, __LINE__);
67 $content = SQL_FETCHARRAY($result_data);
69 // Translate some data
70 $content['timestamp'] = generateDateTime($content['timestamp'], '2');
71 $content['userid'] = getMemberId();
72 $content['user_mail_status'] = '{%message,MEMBER_MAIL_BONUS_CONFIRMED_UNKNOWN=' . $content['id'] . '%}';
74 // Is ext-user active?
75 if (isExtensionActive('user')) {
76 // Default is never confirmed
77 $content['user_mail_status'] = '{%message,MEMBER_MAIL_BONUS_NEVER_CONFIRMED=' . $content['id'] . '%}';
79 // Get the timestamp from the mail
80 $confirmedStamp = getEpocheTimeFromUserStats('bonusid', $content['id']);
83 if ($confirmedStamp > 0) {
84 // Get timestamp from insert
85 $content['user_mail_status'] = '{%message,MEMBER_MAIL_BONUS_CONFIRMED_ON=' . generateDateTime($confirmedStamp, '2') . '%}';
89 // Display it depending on mail (data) type
90 loadTemplate('member_mail_bonus_' . strtolower($content['data_type']), false, $content);
93 SQL_FREERESULT($result_data);
94 } elseif (isGetRequestParameterSet('mailid')) {
95 // Display regular member mail by loading its full data
96 $result_data = SQL_QUERY_ESC("SELECT
97 s.id, s.subject, p.text, s.timestamp_ordered AS `timestamp`,
98 s.cat_id, pay.price AS `points`, p.sender, pay.time, p.data_type
100 `{?_MYSQL_PREFIX?}_user_stats` AS s
102 `{?_MYSQL_PREFIX?}_pool` AS p
106 `{?_MYSQL_PREFIX?}_payments` AS pay
112 array(bigintval(getRequestParameter('mailid'))), __FILE__, __LINE__);
115 $content = SQL_FETCHARRAY($result_data);
117 // Translate some data
118 $content['timestamp'] = generateDateTime($content['timestamp'], '2');
119 $content['userid'] = getMemberId();
120 $content['user_mail_status'] = '{%message,MEMBER_MAIL_NORMAL_CONFIRMED_UNKNOWN=' . $content['id'] . '%}';
122 // Is ext-user active?
123 if (isExtensionActive('user')) {
124 // Default is never confirmed
125 $content['user_mail_status'] = '{%message,MEMBER_MAIL_NORMAL_NEVER_CONFIRMED=' . $content['id'] . '%}';
127 // Get the timestamp from the mail
128 $confirmedStamp = getEpocheTimeFromUserStats('mailid', $content['id']);
130 // Have confirmed it?
131 if ($confirmedStamp > 0) {
132 // Get timestamp from insert
133 $content['user_mail_status'] = '{%message,MEMBER_MAIL_NORMAL_CONFIRMED_ON=' . generateDateTime($confirmedStamp, '2') . '%}';
137 // Display it depending on mail (data) type
138 loadTemplate('member_mail_normal_' . strtolower($content['data_type']), false, $content);
141 SQL_FREERESULT($result_data);
144 if (isExtensionActive('bonus')) {
146 $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",
147 array(getMemberId()), __FILE__, __LINE__);
149 // Don't load bonus id if ext-bonus is not installed
150 $result = SQL_QUERY_ESC("SELECT `stats_id`,`link_type` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY `stats_id` DESC",
151 array(getMemberId()), __FILE__, __LINE__);
154 // Mails left for confirmation?
155 if (!SQL_HASZERONUMS($result)) {
156 // Please confirm these mails!
157 $sum = '0'; $OUT = '';
162 // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
163 while ($row = SQL_FETCHARRAY($result)) {
164 // Load data from stats table...
166 $result_data = false;
167 $message = '{--MEMBER_GENERAL_MAIL_PROBLEM--}';
168 $data = $row['stats_id'] . '/' . $row['bonus_id'] . '/' . $row['link_type'];
169 switch ($row['link_type']) {
171 $result_data = SQL_QUERY_ESC("SELECT
172 s.subject, s.timestamp_ordered, s.cat_id, s.payment_id, p.sender
174 `{?_MYSQL_PREFIX?}_user_stats` AS s
176 `{?_MYSQL_PREFIX?}_pool` AS p
182 array(bigintval($row['stats_id'])), __FILE__, __LINE__);
183 $row['link_type'] = 'mailid';
184 $data = $row['stats_id'];
185 $message = '{--NORMAL_MAIL_PROBLEM--}';
189 $result_data = SQL_QUERY_ESC("SELECT `subject`,`timestamp`,`cat_id`,`points`, 0 FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `id`=%s LIMIT 1",
190 array(bigintval($row['bonus_id'])), __FILE__, __LINE__);
191 $row['link_type'] = 'bonusid';
192 $data = $row['bonus_id'];
193 $message = '{--BONUS_MAIL_PROBLEM--}';
196 default: // Unknown type detected!
197 debug_report_bug(__FILE__, __LINE__, sprintf("Unknown mail type %s detected.", $row['link_type']));
201 // Data found to this mail?
202 if ((SQL_NUMROWS($result_data) == 1) && (($row['link_type'] == 'mailid') || ($row['link_type'] == 'bonusid'))) {
204 list($subject, $timestamp, $cat, $pay, $sender) = SQL_FETCHROW($result_data);
206 // Subject line found?
207 if (empty($subject)) {
209 $subject = '{--DEFAULT_SUBJECT_LINE--}';
213 if ((isValidUserId($sender)) && ($row['link_type'] == 'mailid')) {
215 $sender = bigintval($sender);
216 } elseif ($row['link_type'] == 'bonusid') {
218 $sender = '{--USERNAME_ADMIN_SHORT--}';
221 $sender = '{--EMAIL_STATUS_DELETED--}';
224 // Prepare data for template
226 'data' => bigintval($data),
227 // @TODO This 'userid' cannot be saved because of encapsulated EL code
228 'userid' => getMemberId(),
229 'link_type' => $row['link_type'],
230 'subject' => $subject,
232 'timestamp' => generateDateTime($timestamp, 2),
237 if (getConfig('show_points_unconfirmed') == 'Y') {
238 $OUT .= loadTemplate('member_unconfirmed_row', true, $content);
240 $OUT .= loadTemplate('member_unconfirmed_row_nopoints', true, $content);
246 // Prepare data for template
249 'message' => $message,
252 // Display points or not?
253 if (getConfig('show_points_unconfirmed') == 'Y') {
254 $OUT .= loadTemplate('member_unconfirmed_404', true, $content);
256 $OUT .= loadTemplate('member_unconfirmed_404_nopoints', true, $content);
261 SQL_FREERESULT($result_data);
265 SQL_FREERESULT($result);
267 // Remember total points
268 $content['total_points'] = $sum;
270 // Remember all generated rows in constant for the template
271 $content['rows'] = $OUT;
273 // Load main template
274 if (getConfig('show_points_unconfirmed') == 'Y') {
275 loadTemplate('member_unconfirmed_table', false, $content);
277 loadTemplate('member_unconfirmed_table_nopoints', false, $content);
280 // No mails left to confirm... :)
281 displayMessage('{--MEMBER_NO_MAILS_TO_CONFIRM--}');