diff options
-rw-r--r-- | Postman/PostmanLogMeta.php | 76 | ||||
-rw-r--r-- | Postman/PostmanOptions.php | 3 |
2 files changed, 77 insertions, 2 deletions
diff --git a/Postman/PostmanLogMeta.php b/Postman/PostmanLogMeta.php new file mode 100644 index 0000000..8a05b3a --- /dev/null +++ b/Postman/PostmanLogMeta.php @@ -0,0 +1,76 @@ +<?php + +class PostmanLogMeta { + + public $log_meta_type = 'post_smtp_logs'; + + private $meta_fields = array( + 'success', + 'from_header', + 'to_header', + 'cc_header', + 'bcc_header', + 'reply_to_header', + 'transport_uri', + 'original_to', + 'original_subject', + 'original_message', + 'original_headers', + 'session_transcript' + ); + + function install_table() { + + global $wpdb; + + $sql = "CREATE TABLE `{$this->log_meta_type}_{$wpdb->prefix}_{$this->log_meta_type}` (
+ `meta_id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `post_smtp_id` bigint(20) NOT NULL DEFAULT '0',
+ `meta_key` varchar(255) DEFAULT NULL,
`meta_value` longtext,
+ PRIMARY KEY (`meta_id`),
+ KEY `post_smtp_id` (`post_smtp_id`),
+ KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
"; + + dbDelta( $sql ); + } + + function migrate_data() { + $args = array( + 'post_type' => 'postman_sent_mail', + 'posts_per_page' => -1, + ); + + $logs = new WP_Query($args); + + $failed_records = 0; + foreach ( $logs->posts as $log ) { + + foreach ( $this->meta_fields as $key ) { + $value = $this->get_meta( $log->ID, $key, true ); + + if ( $this->add_meta( $log->ID, $key, $value ) ) { + delete_post_meta( $log->ID, $key ); + } else { + $failed_records++; + } + } + } + } + + function add_meta( $post_id = 0, $meta_key = '', $meta_value = '' ) { + return add_metadata( $this->log_meta_type, $post_id, $meta_key, $meta_value ); + } + + function update_meta( $post_id = 0, $meta_key = '', $meta_value = '' ) { + return update_metadata( $this->log_meta_type, $post_id, $meta_key, $meta_value ); + } + + function get_meta( $post_id = 0, $meta_key = '', $single = false ) { + return get_metadata( $this->log_meta_type, $post_id, $meta_key, $single ); + } + + function delete_meta( $post_id = 0, $meta_key = '' ) { + return delete_metadata( $this->log_meta_type, $post_id, $meta_key ); + } + +}
\ No newline at end of file diff --git a/Postman/PostmanOptions.php b/Postman/PostmanOptions.php index b6eaaf4..af88b18 100644 --- a/Postman/PostmanOptions.php +++ b/Postman/PostmanOptions.php @@ -174,10 +174,9 @@ if ( ! class_exists( 'PostmanOptions' ) ) { if ( is_multisite() ) { $network_options = get_site_option( self::POSTMAN_NETWORK_OPTIONS ); + $blog_id = get_current_blog_id(); if ( isset( $network_options['post_smtp_global_settings'] ) ) { $blog_id = apply_filters( 'post_smtp_default_site_option', 1 ); - } elseif ( $options && isset( $network_options['post_smtp_allow_overwrite'] ) ) { - $blog_id = get_current_blog_id(); } switch_to_blog($blog_id); |