PluginProbe
Email Log / 0.4
Email Log v0.4
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.4, at email-log.php

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