PluginProbe
Email Log / 0.5
Email Log v0.5
2.63 2.4.8 2.4.9 2.6 2.61 2.62 trunk 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.8.1 0.9 0.9.1 0.9.2 1.1 1.5 1.5.1 1.5.2 1.5.3 1.5.4 All 61 releases
email-log / email-log.php

email-log.php in Email Log 0.5, at email-log.php

589 lines 25.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 Plugin Name: Email Log
4 Plugin URI: http://sudarmuthu.com/wordpress/email-log
5 Description: Logs every email sent through WordPress. Compatiable with WPMU too.
6 Author: Sudar
7 Version: 0.5
8 Author URI: http://sudarmuthu.com/
9 Text Domain: email-log
10
11 === RELEASE NOTES ===
12 2009-10-08 - v0.1 - Initial Release
13 2009-10-15 - v0.2 - Added compatability for MySQL 4
14 2009-10-19 - v0.3 - Added compatability for MySQL 4 (Thanks Frank)
15 2010-01-02 - v0.4 - Added german translation (Thanks Frank)
16 2012-01-01 - v0.5 - Fixed a deprecation notice
17 */
18 /* Copyright 2009 Sudar Muthu (email : sudar@sudarmuthu.com)
19
20 This program is free software; you can redistribute it and/or modify
21 it under the terms of the GNU General Public License, version 2, as
22 published by the Free Software Foundation.
23
24 This program is distributed in the hope that it will be useful,
25 but WITHOUT ANY WARRANTY; without even the implied warranty of
26 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 GNU General Public License for more details.
28
29 You should have received a copy of the GNU General Public License
30 along with this program; if not, write to the Free Software
31 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
32 */
33
34 global $wpdb;
35 global $smel_table_name;
36 $smel_table_name = $wpdb->prefix . "email_log";
37
38 // TODO - Should find some way to get away with these global variables.
39 global $smel_db_version;
40 $smel_db_version = "0.1";
41
42 class EmailLog {
43
44 private $table_name ; /* Database table name */
45 private $db_version ; /* Database version */
46
47 /**
48 * Initalize the plugin by registering the hooks
49 */
50 function __construct() {
51
52 global $wpdb;
53 global $smel_table_name;
54 global $smel_db_version;
55
56 // Load localization domain
57 load_plugin_textdomain( 'email-log', false, dirname(plugin_basename(__FILE__)) . '/languages' );
58
59 // Register hooks
60 add_action( 'admin_menu', array(&$this, 'register_settings_page') );
61
62 // Register Filter
63 add_filter('wp_mail', array(&$this, 'log_email'));
64
65 $plugin = plugin_basename(__FILE__);
66 add_filter("plugin_action_links_$plugin", array(&$this, 'add_action_links'));
67
68 // Initialize Variables
69 $this->table_name = $smel_table_name;
70 $this->db_version = $smel_db_version;
71 }
72
73 /**
74 * Register the settings page
75 */
76 function register_settings_page() {
77 add_options_page( __('Email Log', 'email-log'), __('Email Log', 'email-log'), 'manage_options', 'email-log', array(&$this, 'settings_page') );
78 }
79
80 /**
81 * hook to add action links
82 *
83 * @param <type> $links
84 * @return <type>
85 */
86 function add_action_links( $links ) {
87 // Add a link to this plugin's settings page
88 $settings_link = '<a href="options-general.php?page=email-log">' . __("Settings", 'email-log') . '</a>';
89 array_unshift( $links, $settings_link );
90 return $links;
91 }
92
93 /**
94 * Adds Footer links. Based on http://striderweb.com/nerdaphernalia/2008/06/give-your-wordpress-plugin-credit/
95 */
96 function add_footer_links() {
97 $plugin_data = get_plugin_data( __FILE__ );
98 printf('%1$s ' . __("plugin", 'email-log') .' | ' . __("Version", 'email-log') . ' %2$s | '. __('by', 'email-log') . ' %3$s<br />', $plugin_data['Title'], $plugin_data['Version'], $plugin_data['Author']);
99 }
100
101 /**
102 * Dipslay the Settings page
103 *
104 * Some parts of this function is based on the wp-rattings Plugin http://wordpress.org/extend/plugins/email-log/
105 */
106 function settings_page() {
107 global $wpdb;
108 global $text_direction;
109
110 $base_name = plugin_basename('email-log');
111 $base_page = 'admin.php?page='.$base_name;
112
113 $email_log_page = intval($_GET['emaillog_page']);
114 $emaillogs_filterid = trim(addslashes($_GET['id']));
115 $emaillogs_filter_to_email = trim(addslashes($_GET['to_email']));
116 $emaillogs_filter_subject = trim(addslashes($_GET['subject']));
117 $emaillog_sort_by = trim($_GET['by']);
118 $emaillog_sortby_text = '';
119 $emaillog_sortorder = trim($_GET['order']);
120 $emaillog_sortorder_text = '';
121 $email_log_perpage = intval($_GET['perpage']);
122 $emaillog_sort_url = '';
123
124 ### Form Processing
125 if(!empty($_POST['do'])) {
126 // Decide What To Do
127 switch($_POST['do']) {
128 case __('Delete Logs', 'email-log'):
129 $delete_datalog = intval($_POST['delete_datalog']);
130 switch($delete_datalog) {
131 case 1:
132 // Delete based on condition
133 $to_email = trim(addslashes( $_POST['delete_to_email']));
134 if ('' != $to_email) {
135 $delete_logs = $wpdb->query("DELETE FROM $this->table_name where to_email = '$to_email'");
136 if($delete_logs) {
137 $text = '<font color="green">'.sprintf(__('All Email Logs For email id %s Have Been Deleted.', 'email-log'), $to_email).'</font>';
138 } else {
139 $text = '<font color="red">'.sprintf(__('An Error Has Occured while deleting All Email Logs For email id %s.', 'email-log'), $to_email).'</font>';
140 }
141 }
142
143 $subject = trim(addslashes( $_POST['delete_subject']));
144 if ('' != $subject) {
145 $delete_logs = $wpdb->query("DELETE FROM $this->table_name where subject = '$subject'");
146 if($delete_logs) {
147 $text .= '<font color="green">'.sprintf(__('All Email Logs With Subject %s Have Been Deleted.', 'email-log'), $subject).'</font>';
148 } else {
149 $text .= '<font color="red">'.sprintf(__('An Error Has Occured While Deleting All Email Logs With Subject %s.', 'email-log'), $subject).'</font>';
150 }
151 }
152 break;
153 case 2:
154 // Delete all
155 $delete_logs = $wpdb->query("DELETE FROM $this->table_name ");
156 if ($delete_logs) {
157 $text = '<font color="green">'.__('All Email log Has Been Deleted.', 'email-log').'</font><br />';
158 } else {
159 $text = '<font color="red">'.__('An Error Has Occured While Deleting All Email Logs', 'email-log').'</font>';
160 }
161 break;
162 }
163 break;
164 }
165 }
166
167 ### Form Sorting URL
168 if(!empty($emaillogs_filterid)) {
169 $emaillogs_filterid = intval($emaillogs_filterid);
170 $emaillog_sort_url .= '&amp;id='.$emaillogs_filterid;
171 }
172 if(!empty($emaillogs_filter_to_email)) {
173 $emaillog_sort_url .= '&amp;to_email='.$emaillogs_filter_to_email;
174 }
175 if(!empty($emaillogs_filter_subject)) {
176 $emaillog_sort_url .= '&amp;subject='.$emaillogs_filter_subject;
177 }
178 if(!empty($emaillog_sort_by)) {
179 $emaillog_sort_url .= '&amp;by='.$emaillog_sort_by;
180 }
181 if(!empty($emaillog_sortorder)) {
182 $emaillog_sort_url .= '&amp;order='.$emaillog_sortorder;
183 }
184 if(!empty($email_log_perpage)) {
185 $email_log_perpage = intval($email_log_perpage);
186 $emaillog_sort_url .= '&amp;perpage='.$email_log_perpage;
187 }
188
189 ### Get Order By
190 switch($emaillog_sort_by) {
191 case 'id':
192 $emaillog_sort_by = 'id';
193 $emaillog_sortby_text = __('ID', 'email-log');
194 break;
195 case 'to_email':
196 $emaillog_sort_by = 'to_email';
197 $emaillog_sortby_text = __('To Email', 'email-log');
198 break;
199 case 'subject':
200 $emaillog_sort_by = 'subject';
201 $emaillog_sortby_text = __('Subject', 'email-log');
202 break;
203 case 'date':
204 default:
205 $emaillog_sort_by = 'sent_date';
206 $emaillog_sortby_text = __('Date', 'email-log');
207 }
208
209 ### Get Sort Order
210 switch($emaillog_sortorder) {
211 case 'asc':
212 $emaillog_sortorder = 'ASC';
213 $emaillog_sortorder_text = __('Ascending', 'email-log');
214 break;
215 case 'desc':
216 default:
217 $emaillog_sortorder = 'DESC';
218 $emaillog_sortorder_text = __('Descending', 'email-log');
219 }
220
221 // Where
222 $emaillog_where = '';
223 if(!empty($emaillogs_filterid)) {
224 $emaillog_where = "AND id =$emaillogs_filterid";
225 }
226 if(!empty($emaillogs_filter_to_email)) {
227 $emaillog_where .= " AND to_email like '%$emaillogs_filter_to_email%'";
228 }
229 if(!empty($emaillogs_filter_subject)) {
230 $emaillog_where .= " AND subject like '%$emaillogs_filter_subject%'";
231 }
232
233 // Get email Logs Data
234 $total_logs = $wpdb->get_var("SELECT COUNT(id) FROM $this->table_name WHERE 1=1 $emaillog_where");
235
236 // Checking $postratings_page and $offset
237 if(empty($email_log_page) || $email_log_page == 0) { $email_log_page = 1; }
238 if(empty($offset)) { $offset = 0; }
239 if(empty($email_log_perpage) || $email_log_perpage == 0) { $email_log_perpage = 20; }
240
241 // Determin $offset
242 $offset = ($email_log_page-1) * $email_log_perpage;
243
244 // Determine Max Number Of Logs To Display On Page
245 if(($offset + $email_log_perpage) > $total_logs) {
246 $max_on_page = $total_logs;
247 } else {
248 $max_on_page = ($offset + $email_log_perpage);
249 }
250
251 // Determine Number Of Logs To Display On Page
252 if (($offset + 1) > ($total_logs)) {
253 $display_on_page = $total_logs;
254 } else {
255 $display_on_page = ($offset + 1);
256 }
257
258 // Determing Total Amount Of Pages
259 $total_pages = ceil($total_logs / $email_log_perpage);
260
261 // Get The Logs
262 $email_logs = $wpdb->get_results("SELECT * FROM $this->table_name WHERE 1=1 $emaillog_where ORDER BY $emaillog_sort_by $emaillog_sortorder LIMIT $offset, $email_log_perpage");
263 ?>
264 <?php if(!empty($text)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$text.'</p></div>'; } ?>
265 <div class="wrap">
266 <?php screen_icon(); ?>
267 <h2><?php _e( 'Email Log Settings', 'email-log' ); ?></h2>
268 <p><?php printf(__('Displaying <strong>%s</strong> to <strong>%s</strong> of <strong>%s</strong> Email log entries.', 'email-log'), number_format_i18n($display_on_page), number_format_i18n($max_on_page), number_format_i18n($total_logs)); ?></p>
269 <p><?php printf(__('Sorted by <strong>%s</strong> in <strong>%s</strong> order.', 'email-log'), $emaillog_sortby_text, $emaillog_sortorder_text); ?></p>
270
271 <?php
272 if($total_pages > 1) {
273 ?>
274 <br />
275 <table class="widefat">
276 <tr>
277 <td align="<?php echo ('rtl' == $text_direction) ? 'right' : 'left'; ?>" width="40%">
278 <?php
279 if($email_log_page > 1 && ((($email_log_page*$email_log_perpage)-($email_log_perpage-1)) <= $total_logs)) {
280 echo '<strong>&laquo;</strong> <a href="'.$base_page.'&amp;emaillog_page='.($email_log_page-1).$emaillog_sort_url.'" title="&laquo; '.__('Previous Page', 'email-log').'">'.__('Previous Page', 'email-log').'</a>';
281 } else {
282 echo '&nbsp;';
283 }
284 ?>
285 </td>
286 <td align="center" width="20%">
287 <?php printf(__('Pages (%s): ', 'email-log'), number_format_i18n($total_pages)); ?>
288 <?php
289 if ($email_log_page >= 4) {
290 echo '<strong><a href="'.$base_page.'&amp;emaillog_page=1'.$emaillog_sort_url.$emaillog_sort_url.'" title="'.__('Go to First Page', 'email-log').'">&laquo; '.__('First', 'email-log').'</a></strong> ... ';
291 }
292 if($email_log_page > 1) {
293 echo ' <strong><a href="'.$base_page.'&amp;emaillog_page='.($email_log_page-1).$emaillog_sort_url.'" title="&laquo; '.__('Go to Page', 'email-log').' '.number_format_i18n($email_log_page-1).'">&laquo;</a></strong> ';
294 }
295 for($i = $email_log_page - 2 ; $i <= $email_log_page +2; $i++) {
296 if ($i >= 1 && $i <= $total_pages) {
297 if($i == $email_log_page) {
298 echo '<strong>['.number_format_i18n($i).']</strong> ';
299 } else {
300 echo '<a href="'.$base_page.'&amp;emaillog_page='.($i).$emaillog_sort_url.'" title="'.__('Page', 'email-log').' '.number_format_i18n($i).'">'.number_format_i18n($i).'</a> ';
301 }
302 }
303 }
304 if($email_log_page < $total_pages) {
305 echo ' <strong><a href="'.$base_page.'&amp;emaillog_page='.($email_log_page+1).$emaillog_sort_url.'" title="'.__('Go to Page', 'email-log').' '.number_format_i18n($email_log_page+1).' &raquo;">&raquo;</a></strong> ';
306 }
307 if (($email_log_page+2) < $total_pages) {
308 echo ' ... <strong><a href="'.$base_page.'&amp;emaillog_page='.($total_pages).$emaillog_sort_url.'" title="'.__('Go to Last Page', 'email-log').'">'.__('Last', 'email-log').' &raquo;</a></strong>';
309 }
310 ?>
311 </td>
312 <td align="<?php echo ('rtl' == $text_direction) ? 'left' : 'right'; ?>" width="40%">
313 <?php
314 if($email_log_page >= 1 && ((($email_log_page*$email_log_perpage)+1) <= $total_logs)) {
315 echo '<a href="'.$base_page.'&amp;emaillog_page='.($email_log_page+1).$emaillog_sort_url.'" title="'.__('Next Page', 'email-log').' &raquo;">'.__('Next Page', 'email-log').'</a> <strong>&raquo;</strong>';
316 } else {
317 echo '&nbsp;';
318 }
319 ?>
320 </td>
321 </tr>
322 </table>
323 <!-- </Paging> -->
324 <?php
325 }
326 ?>
327 <table class="widefat">
328 <thead>
329 <tr>
330 <th width="5%"><?php _e('ID', 'email-log'); ?></th>
331 <th width="20%"><?php _e('Date / Time', 'email-log'); ?></th>
332 <th width="30%"><?php _e('To', 'email-log'); ?></th>
333 <th width="45%"><?php _e('Subject', 'email-log'); ?></th>
334 </tr>
335 </thead>
336 <tbody>
337 <?php
338 if($email_logs) {
339 $i = 0;
340 foreach($email_logs as $email_log) {
341 if($i%2 == 0) {
342 $style = 'class="alternate"';
343 } else {
344 $style = '';
345 }
346 $email_id = intval($email_log->id);
347 $email_date = mysql2date(sprintf(__('%s @ %s', 'email-log'), get_option('date_format'), get_option('time_format')), $email_log->sent_date);
348 $email_to = stripslashes($email_log->to_email);
349 $email_subject = stripslashes($email_log->subject);
350 echo "<tr $style>\n";
351 echo '<td>'.$email_id.'</td>'."\n";
352 echo "<td>$email_date</td>\n";
353 echo "<td>$email_to</td>\n";
354 echo "<td>$email_subject</td>\n";
355 echo '</tr>';
356 $i++;
357 }
358 } else {
359 echo '<tr><td colspan="7" align="center"><strong>'.__('No email Logs Found', 'email-log').'</strong></td></tr>';
360 }
361 ?>
362 </tbody>
363 <tfoot>
364 <tr>
365 <th width="5%"><?php _e('ID', 'email-log'); ?></th>
366 <th width="20%"><?php _e('Date / Time', 'email-log'); ?></th>
367 <th width="30%"><?php _e('To', 'email-log'); ?></th>
368 <th width="45%"><?php _e('Subject', 'email-log'); ?></th>
369 </tr>
370 </tfoot>
371 </table>
372 <?php
373 if($total_pages > 1) {
374 ?>
375 <table class="widefat">
376 <tr>
377 <td align="<?php echo ('rtl' == $text_direction) ? 'right' : 'left'; ?>" width="40%">
378 <?php
379 if($email_log_page > 1 && ((($email_log_page*$email_log_perpage)-($email_log_perpage-1)) <= $total_logs)) {
380 echo '<strong>&laquo;</strong> <a href="'.$base_page.'&amp;emaillog_page='.($email_log_page-1).$emaillog_sort_url.'" title="&laquo; '.__('Previous Page', 'email-log').'">'.__('Previous Page', 'email-log').'</a>';
381 } else {
382 echo '&nbsp;';
383 }
384 ?>
385 </td>
386 <td align="center" width="20%">
387 <?php printf(__('Pages (%s): ', 'email-log'), number_format_i18n($total_pages)); ?>
388 <?php
389 if ($email_log_page >= 4) {
390 echo '<strong><a href="'.$base_page.'&amp;emaillog_page=1'.$emaillog_sort_url.$emaillog_sort_url.'" title="'.__('Go to First Page', 'email-log').'">&laquo; '.__('First', 'email-log').'</a></strong> ... ';
391 }
392 if($email_log_page > 1) {
393 echo ' <strong><a href="'.$base_page.'&amp;emaillog_page='.($email_log_page-1).$emaillog_sort_url.'" title="&laquo; '.__('Go to Page', 'email-log').' '.number_format_i18n($email_log_page-1).'">&laquo;</a></strong> ';
394 }
395 for($i = $email_log_page - 2 ; $i <= $email_log_page +2; $i++) {
396 if ($i >= 1 && $i <= $total_pages) {
397 if($i == $email_log_page) {
398 echo '<strong>['.number_format_i18n($i).']</strong> ';
399 } else {
400 echo '<a href="'.$base_page.'&amp;emaillog_page='.($i).$emaillog_sort_url.'" title="'.__('Page', 'email-log').' '.number_format_i18n($i).'">'.number_format_i18n($i).'</a> ';
401 }
402 }
403 }
404 if($email_log_page < $total_pages) {
405 echo ' <strong><a href="'.$base_page.'&amp;emaillog_page='.($email_log_page+1).$emaillog_sort_url.'" title="'.__('Go to Page', 'email-log').' '.number_format_i18n($email_log_page+1).' &raquo;">&raquo;</a></strong> ';
406 }
407 if (($email_log_page+2) < $total_pages) {
408 echo ' ... <strong><a href="'.$base_page.'&amp;emaillog_page='.($total_pages).$emaillog_sort_url.'" title="'.__('Go to Last Page', 'email-log').'">'.__('Last', 'email-log').' &raquo;</a></strong>';
409 }
410 ?>
411 </td>
412 <td align="<?php echo ('rtl' == $text_direction) ? 'left' : 'right'; ?>" width="40%">
413 <?php
414 if($email_log_page >= 1 && ((($email_log_page*$email_log_perpage)+1) <= $total_logs)) {
415 echo '<a href="'.$base_page.'&amp;emaillog_page='.($email_log_page+1).$emaillog_sort_url.'" title="'.__('Next Page', 'email-log').' &raquo;">'.__('Next Page', 'email-log').'</a> <strong>&raquo;</strong>';
416 } else {
417 echo '&nbsp;';
418 }
419 ?>
420 </td>
421 </tr>
422 <tr class="alternate">
423 </tr>
424 </table>
425 <!-- </Paging> -->
426 <?php
427 }
428 ?>
429 <br />
430
431 <form action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>" method="get">
432 <input type="hidden" name="page" value="<?php echo $base_name; ?>" />
433 <table class="widefat">
434 <tr>
435 <th><?php _e('Filter Options:', 'email-log'); ?></th>
436 <td>
437 <?php _e('ID:', 'email-log'); ?>&nbsp;<input type="text" name="id" value="<?php echo $emaillogs_filterid; ?>" size="5" maxlength="5" />
438 &nbsp;&nbsp;&nbsp;
439 <?php _e('To Email:', 'email-log'); ?>&nbsp;<input type="text" name="to_email" value="<?php echo $emaillogs_filter_to_email; ?>" size="40" maxlength="50" />
440 &nbsp;&nbsp;&nbsp;
441 <?php _e('Subject:', 'email-log'); ?>&nbsp;<input type="text" name="subject" value="<?php echo $emaillogs_filter_subject; ?>" size="40" maxlength="50" />
442 &nbsp;&nbsp;&nbsp;
443 </td>
444 </tr>
445 <tr class="alternate">
446 <th><?php _e('Sort Options:', 'email-log'); ?></th>
447 <td>
448 <select name="by" size="1">
449 <option value="id"<?php if($emaillog_sort_by == 'id') { echo ' selected="selected"'; }?>><?php _e('ID', 'email-log'); ?></option>
450 <option value="to_email"<?php if($emaillog_sort_by == 'to_email') { echo ' selected="selected"'; }?>><?php _e('To Email', 'email-log'); ?></option>
451 <option value="subject"<?php if($emaillog_sort_by == 'subject') { echo ' selected="selected"'; }?>><?php _e('Subject', 'email-log'); ?></option>
452 <option value="sent_date"<?php if($emaillog_sort_by == 'sent_date') { echo ' selected="selected"'; }?>><?php _e('Date', 'email-log'); ?></option>
453 </select>
454 &nbsp;&nbsp;&nbsp;
455 <select name="order" size="1">
456 <option value="asc"<?php if($emaillog_sortorder == 'ASC') { echo ' selected="selected"'; }?>><?php _e('Ascending', 'email-log'); ?></option>
457 <option value="desc"<?php if($emaillog_sortorder == 'DESC') { echo ' selected="selected"'; } ?>><?php _e('Descending', 'email-log'); ?></option>
458 </select>
459 &nbsp;&nbsp;&nbsp;
460 <select name="perpage" size="1">
461 <?php
462 for($i=10; $i <= 100; $i+=10) {
463 if($email_log_perpage == $i) {
464 echo "<option value=\"$i\" selected=\"selected\">".__('Per Page', 'email-log').": ".number_format_i18n($i)."</option>\n";
465 } else {
466 echo "<option value=\"$i\">".__('Per Page', 'email-log').": ".number_format_i18n($i)."</option>\n";
467 }
468 }
469 ?>
470 </select>
471 </td>
472 </tr>
473 <tr>
474 <td colspan="2" align="center"><input type="submit" value="<?php _e('Go', 'email-log'); ?>" class="button" /></td>
475 </tr>
476 </table>
477 </form>
478 </div>
479 <p>&nbsp;</p>
480 <!-- Delete Email Logs -->
481 <div class="wrap">
482 <h3><?php _e('Delete Logs', 'email-log'); ?></h3>
483 <br style="clear" />
484 <div align="center">
485 <form method="post" action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>?page=<?php echo $base_name; ?>">
486 <table class="widefat">
487 <tr>
488 <td valign="top"><b><?php _e('Delete Type : ', 'email-log'); ?></b></td>
489 <td valign="top">
490 <select size="1" name="delete_datalog">
491 <option value="1"><?php _e('Based on', 'email-log'); ?></option>
492 <option value="2"><?php _e('All Logs', 'email-log'); ?></option>
493 </select>
494 </td>
495 </tr>
496 <tr>
497 <td valign="top"><b><?php _e('Condition:', 'email-log'); ?></b></td>
498 <td valign="top">
499 <label for ="delete_to_email"><?php _e('To Email', 'email-log');?> <input type="text" name="delete_to_email" size="20" dir="ltr" /></label>
500 <?php _e('or', 'email-log');?>
501 <label for ="delete_subject"><?php _e('Subject', 'email-log');?> <input type="text" name="delete_subject" size="20" dir="ltr" /></label>
502 </td>
503 </tr>
504 <tr>
505 <td colspan="2" align="center">
506 <input type="submit" name="do" value="<?php _e('Delete Logs', 'email-log'); ?>" class="button" onclick="return confirm('<?php _e('You Are About To Delete Email Logs.\nThis Action Is Not Reversible.\n\n Choose \\\'Cancel\\\' to stop, \\\'OK\\\' to delete.', 'email-log'); ?>')" />
507 </td>
508 </tr>
509 </table>
510 </form>
511 </div>
512 </div>
513 <?php
514 // Display credits in Footer
515 add_action( 'in_admin_footer', array(&$this, 'add_footer_links'));
516 }
517
518 /**
519 * Log all email to database
520 *
521 * @global object $wpdb
522 * @param array $mail_info Information about email
523 * @return array Information about email
524 */
525 function log_email($mail_info) {
526
527 global $wpdb;
528
529 $attachment_present = (count ($mail_info['attachments']) > 0) ? "true" : "false";
530
531 // Log into the database
532 $wpdb->insert($this->table_name, array(
533 'to_email' => $mail_info['to'],
534 'subject' => $mail_info['subject'],
535 'message' => $mail_info['message'],
536 'headers' => $mail_info['headers'],
537 'attachments' => $attachment_present
538 ));
539
540 // return unmodifiyed array
541 return $mail_info;
542 }
543
544 // PHP4 compatibility
545 function EmailLog() {
546 $this->__construct();
547 }
548 }
549
550 /**
551 * Create database table when the Plugin is installed for the first time
552 *
553 * @global object $wpdb
554 * @global string $smel_table_name Table Name
555 * @global string $smel_db_version DB Version
556 */
557 function smel_on_install() {
558
559 global $wpdb;
560 global $smel_table_name;
561 global $smel_db_version;
562
563 if($wpdb->get_var("show tables like '{$smel_table_name}'") != $smel_table_name) {
564
565 $sql = "CREATE TABLE " . $smel_table_name . " (
566 id mediumint(9) NOT NULL AUTO_INCREMENT,
567 to_email VARCHAR(100) NOT NULL,
568 subject VARCHAR(250) NOT NULL,
569 message TEXT NOT NULL,
570 headers TEXT NOT NULL,
571 attachments TEXT NOT NULL,
572 sent_date timestamp(14) NOT NULL,
573 PRIMARY KEY (id)
574 );";
575
576 require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
577 dbDelta($sql);
578
579 add_option("email-log-db", $smel_db_version);
580 }
581 }
582
583 // When installed
584 register_activation_hook(__FILE__, 'smel_on_install');
585
586 // Start this plugin once all other plugins are fully loaded
587 add_action( 'init', 'EmailLog' ); function EmailLog() { global $EmailLog; $EmailLog = new EmailLog(); }
588
589 ?>