New function isDirectory() introduced, fixed GET_DIR_AS_ARRAY() (replaces scandir())
[mailer.git] / inc / modules / admin / what-del_email.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 02/12/2004 *
4  * ================                             Last change: 02/27/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : what-del_email.php                               *
8  * -------------------------------------------------------------------- *
9  * Short description : Delete a bonus or normal mail                    *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Bonus- / Normal-Mail loeschen                    *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  *  Module by Robert Niedziela, Megacomputing                           *
15  *          web : http://mc-p.mcserver.de                               *
16  *                                                                      *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
19  * For more information visit: http://www.mxchange.org                  *
20  *                                                                      *
21  * This program is free software; you can redistribute it and/or modify *
22  * it under the terms of the GNU General Public License as published by *
23  * the Free Software Foundation; either version 2 of the License, or    *
24  * (at your option) any later version.                                  *
25  *                                                                      *
26  * This program is distributed in the hope that it will be useful,      *
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
29  * GNU General Public License for more details.                         *
30  *                                                                      *
31  * You should have received a copy of the GNU General Public License    *
32  * along with this program; if not, write to the Free Software          *
33  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
34  * MA  02110-1301  USA                                                  *
35  ************************************************************************/
36
37 // Some security stuff...
38 if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
39         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
40         require($INC);
41 }
42
43 // Add description as navigation point
44 ADD_DESCR("admin", __FILE__);
45
46 // Init counter for deleted mails
47 $cnt = 0;
48
49 if (REQUEST_ISSET_GET(('mid'))) {
50         // Load email data
51         $result = SQL_QUERY_ESC("SELECT id, sender, subject, url, timestamp, payment_id FROM `{!_MYSQL_PREFIX!}_pool` WHERE id=%s LIMIT 1",
52                 array(bigintval(REQUEST_GET('mid'))), __FILE__, __LINE__);
53
54         // Delete mail only once
55         if (SQL_NUMROWS($result) == 1) {
56                 // Load data
57                 list ($id, $sender, $subject, $url, $timestamp, $payId) = SQL_FETCHROW($result);
58                 SQL_FREERESULT($result);
59
60                 // Get points we shall pay back per mail
61                 $price = GET_PAY_POINTS($payId, "price");
62
63                 // Prepare data for the template
64                 define('__ID'     , $id);
65                 define('__SENDER' , ADMIN_USER_PROFILE_LINK($sender));
66                 define('__SUBJECT', $subject);
67                 define('__URL'    , DEREFERER($url));
68                 define('__ORDERED', MAKE_DATETIME($timestamp, "0"));
69
70                 // Load template
71                 LOAD_TEMPLATE("admin_del_email_normal");
72
73                 // Transfer data to data array
74                 $DATA = array('url' => $url, 'subject' => $subject);
75
76                 // Load email template and send the email away
77                 $msg_user = LOAD_EMAIL_TEMPLATE("order-deleted", array(), $sender);
78                 SEND_EMAIL($sender, getMessage('MEMBER_ORDER_DELETED'), $msg_user);
79
80                 // Fetch right stats_id from pool
81                 $result_pool = SQL_QUERY_ESC("SELECT s.id FROM `{!_MYSQL_PREFIX!}_user_stats` AS s
82 LEFT JOIN `{!_MYSQL_PREFIX!}_pool` AS p
83 ON s.pool_id=p.id
84 WHERE s.pool_id=%s LIMIT 1",
85  array(bigintval(REQUEST_GET('mid'))), __FILE__, __LINE__);
86                 if (SQL_NUMROWS($result_pool) == 1) {
87                         // Fetch stats id
88                         list($stats_id) = SQL_FETCHROW($result_pool);
89
90                         // Get all user links
91                         $links = GET_TOTAL_DATA($stats_id, "user_links", "userid", "stats_id", true);
92
93                         // Reset sent mails for recipient(s)
94                         REDUCED_RECIPIENT_RECEIVED_MAILS("stats_id", REQUEST_GET('mid'), $links);
95
96                         // Calc total points and pay them back
97                         $totalPoints = $links * $price;
98
99                         // Shall we pay the points back to the user?
100                         if (getConfig('repay_deleted_mails') != "SHRED") {
101                                 //* DEBUG: */ echo $stats_id.":".$totalPoints."/".$links."/".$price."<br />\n";
102                                 if ($totalPoints > 0) {
103                                         // Shall we payback to user or jackpot?
104                                         if (getConfig('repay_deleted_mails') == "JACKPOT") {
105                                                 // Set jackpot
106                                                 $sender = 0;
107                                         } // END - if
108
109                                         // Pay back points
110                                         //* DEBUG: */ echo "PAYBACK:".$sender."<br />\n";
111                                         ADD_POINTS_REFSYSTEM("mail_deleted", $sender, $totalPoints, true, "0", false,"direct");
112
113                                         // Output message
114                                         if (getConfig('repay_deleted_mails') == "REPAY") {
115                                                 // Repayed
116                                                 LOAD_TEMPLATE("admin_settings_saved", false, sprintf(getMessage('ADMIN_POINTS_REPAYED'),
117                                                         TRANSLATE_COMMA($totalPoints)
118                                                 ));
119                                         } else {
120                                                 // To jackpot
121                                                 LOAD_TEMPLATE("admin_settings_saved", false, sprintf(getMessage('ADMIN_POINTS_TO_JACKPOT'),
122                                                         TRANSLATE_COMMA($totalPoints)
123                                                 ));
124                                         }
125                                 } else {
126                                         // No points repayed!
127                                         LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_NO_POINTS_REPAYED'));
128                                 }
129                         } else {
130                                 // Points shredded!
131                                 LOAD_TEMPLATE("admin_settings_saved", false, sprintf(getMessage('ADMIN_POINTS_SHREDDED'), $totalPoints));
132                         }
133
134                         // Remove links from DB
135                         SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_links` WHERE stats_id=%s",
136                                 array(bigintval($stats_id)), __FILE__, __LINE__);
137                         $cnt += SQL_AFFECTEDROWS();
138
139                         // Load template for link
140                         LOAD_TEMPLATE("admin_settings_saved", false, "<a href=\"{!URL!}/modules.php?module=admin&amp;what=del_email&amp;pid=".bigintval(REQUEST_GET('mid'))."\">".ADMIN_REMOVE_STATS_ENTRY."</a>");
141                 } // END - if
142
143                 // Free the result
144                 SQL_FREERESULT($result_pool);
145
146                 // Delete mail from queue
147                 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_pool` WHERE id=%s LIMIT 1",
148                         array(bigintval(REQUEST_GET('mid'))), __FILE__, __LINE__);
149                 $cnt += SQL_AFFECTEDROWS();
150
151                 // Output link for manually removing stats entry
152                 OUTPUT_HTML(sprintf(ADMIN_DELETED_MAILS_COUNT, $cnt));
153         } else {
154                 // Mail already deleted!
155                 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_NORMAL_MAIL_ALREADY_DELETED'));
156         }
157 } elseif (REQUEST_ISSET_GET(('pid'))) {
158         // Remove stats entries
159         SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_stats` WHERE pool_id=%s LIMIT 1",
160                 array(bigintval(REQUEST_GET('pid'))), __FILE__, __LINE__);
161
162         // Output message
163         LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_USER_STATS_REMOVED'));
164 } elseif ((REQUEST_ISSET_GET(('bid'))) && (EXT_IS_ACTIVE("bonus"))) {
165         // Load data from bonus mail
166         $result = SQL_QUERY_ESC("SELECT id, subject, url, timestamp, mails_sent FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s",
167                 array(bigintval(REQUEST_GET('bid'))), __FILE__, __LINE__);
168
169         // Delete mail only once
170         if (SQL_NUMROWS($result) == 1) {
171                 // Load data
172                 list ($id, $subject, $url, $timestamp, $sent) = SQL_FETCHROW($result);
173
174                 // Reset sent mails for recipient(s)
175                 REDUCED_RECIPIENT_RECEIVED_MAILS("bonus_id", REQUEST_GET('bid'), $sent);
176
177                 // Init counter for deleted mails
178                 $cnt = 0;
179
180                 // Delete bonus mail entirely from database
181                 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s LIMIT 1",
182                         array(bigintval(REQUEST_GET('bid'))), __FILE__, __LINE__);
183                 $cnt += SQL_AFFECTEDROWS();
184                 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_links` WHERE bonus_id=%s",
185                         array(bigintval(REQUEST_GET('bid'))), __FILE__, __LINE__);
186                 $cnt += SQL_AFFECTEDROWS();
187
188                 // Prepare data for the template
189                 define('__ID'     , $id);
190                 define('__SUBJECT', $subject);
191                 define('__URL'    , DEREFERER($url));
192                 define('__ORDERED', MAKE_DATETIME($timestamp, "0"));
193                 define('__CNT'    , $cnt);
194
195                 // Load template
196                 LOAD_TEMPLATE("admin_del_email_bonus");
197         } else {
198                 // Mail already deleted!
199                 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_BONUS_MAIL_ALREADY_DELETED'));
200         }
201
202         // Free result
203         SQL_FREERESULT($result);
204 } elseif ((REQUEST_ISSET_GET(('nid'))) && (GET_EXT_VERSION("bonus") >= "0.8.7")) {
205         // Load data from bonus mail
206         $result = SQL_QUERY_ESC("SELECT id, subject, url, timestamp FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s",
207                 array(bigintval(REQUEST_GET('nid'))), __FILE__, __LINE__);
208
209         // Delete mail only once
210         if (SQL_NUMROWS($result) == 1) {
211                 // Load data
212                 list ($id, $subject, $url, $timestamp) = SQL_FETCHROW($result);
213                 SQL_FREERESULT($result);
214
215                 // Init counter for deleted mails
216                 $cnt = 0;
217
218                 // Delete bonus mail entirely from database
219                 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s LIMIT 1",
220                         array(bigintval(REQUEST_GET('nid'))), __FILE__, __LINE__);
221                 $cnt += SQL_AFFECTEDROWS();
222                 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_links` WHERE bonus_id=%s",
223                         array(bigintval(REQUEST_GET('nid'))), __FILE__, __LINE__);
224                 $cnt += SQL_AFFECTEDROWS();
225
226                 // Prepare data for the template
227                 define('__ID'     , $id);
228                 define('__SUBJECT', $subject);
229                 define('__URL'    , DEREFERER($url));
230                 define('__ORDERED', MAKE_DATETIME($timestamp, "0"));
231                 define('__CNT'    , $cnt);
232
233                 // Load template
234                 LOAD_TEMPLATE("admin_del_email_notify");
235         } else {
236                 // Mail already deleted!
237                 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_NOTIFY_MAIL_ALREADY_DELETED'));
238         }
239 } else {
240         // No mail orders fond
241         LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_WRONG_CALL'));
242 }
243
244 //
245 ?>