-
Notifications
You must be signed in to change notification settings - Fork 28
/
postman-smtp.php
205 lines (176 loc) · 6.55 KB
/
postman-smtp.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/*
* Plugin Name: Post SMTP
* Plugin URI: https://wordpress.org/plugins/post-smtp/
* Description: Email not reliable? Post SMTP is the first and only WordPress SMTP plugin to implement OAuth 2.0 for Gmail, Hotmail and Yahoo Mail. Setup is a breeze with the Configuration Wizard and integrated Port Tester. Enjoy worry-free delivery even if your password changes!
* Version: 3.0.0-beta.1
* Author: Post SMTP
* Text Domain: post-smtp
* Author URI: https://postmansmtp.com
* License: GPLv2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
/*
* Post SMTP (aka Postman SMTP) was originally developed by Jason Hendriks
*/
// The Postman Mail API
//
// filter postman_test_email: before calling wp_mail, implement this filter and return true to disable the success/fail counters
// filter postman_wp_mail_result: apply this filter after calling wp_mail for an array containing the SMTP error, transcript and time
// filter postman_get_plugin_metadata: apply this filter to get plugin metadata
// filter postman_wp_mail_bind_status: apply this filter to get wp_mail bind status
// filter print_postman_status: apply this filter to print the human-readable plugin state
// filter postman_module: implement this filter and return the instance of the module
// filter postman_register_modules: apply this filter to register the module
/**
* Freemius initialization
*
* @since 2.1.1
* @version 1.0
*/
if ( ! function_exists( 'ps_fs' ) ) {
// Create a helper function for easy SDK access.
function ps_fs() {
global $ps_fs;
if ( ! isset( $ps_fs ) ) {
// Include Freemius SDK.
require_once dirname(__FILE__) . '/freemius/start.php';
$ps_fs = fs_dynamic_init( array(
'id' => '10461',
'slug' => 'post-smtp',
'type' => 'plugin',
'public_key' => 'pk_28fcefa3d0ae86f8cdf6b7f71c0cc',
'is_premium' => false,
'has_addons' => false,
'bundle_id' => '10910',
'bundle_public_key' => 'pk_c5110ef04ba30cd57dd970a269a1a',
'has_paid_plans' => false,
'menu' => array(
'slug' => 'postman',
'first-path' => 'admin.php?page=postman/configuration_wizard',
'account' => false,
),
) );
}
return $ps_fs;
}
// Init Freemius.
ps_fs();
// Signal that SDK was initiated.
do_action( 'ps_fs_loaded' );
}
function ps_fs_custom_connect_message_on_update(
$message,
$user_first_name,
$product_title,
$user_login,
$site_link,
$freemius_link
) {
return sprintf(
'<div class="ps-optin-popup">' .
'<h1>' . __( 'Stay on the safe side', 'post-smtp' ) . '</h1>' .
'<p>'.__( 'Receive our plugin\'s alert in case of critical security and feature updates and allow non-sensitive diagnostic tracking.', 'post-smtp' ).'</p>' .
'</div>' .
'<div style="clear: both;"></div>'
);
}
ps_fs()->add_filter('connect_message', 'ps_fs_custom_connect_message_on_update', 10, 6);
function ps_fs_custom_icon() {
return dirname( __FILE__ ) . '/assets/images/icons/optin.png';
}
ps_fs()->add_filter( 'plugin_icon' , 'ps_fs_custom_icon' );
/**
* DO some check and Start Postman
*/
define( 'POST_SMTP_BASE', __FILE__ );
define( 'POST_SMTP_PATH', __DIR__ );
define( 'POST_SMTP_URL', plugins_url('', POST_SMTP_BASE ) );
define( 'POST_SMTP_VER', '3.0.0' );
define( 'POST_SMTP_DB_VERSION', '1.0.1' );
define( 'POST_SMTP_ASSETS', plugin_dir_url( __FILE__ ) . 'assets/' );
$postman_smtp_exist = in_array( 'postman-smtp/postman-smtp.php', (array) get_option( 'active_plugins', array() ) );
$required_php_version = version_compare( PHP_VERSION, '5.6.0', '<' );
if ( $postman_smtp_exist || $required_php_version ) {
add_action( 'admin_init', 'post_smtp_plugin_deactivate' );
if ( $postman_smtp_exist ) {
add_action( 'admin_notices', 'post_smtp_plugin_admin_notice' );
}
if ( $required_php_version ) {
add_action( 'admin_notices', 'post_smtp_plugin_admin_notice_version' );
}
} else {
post_smtp_start( memory_get_usage() );
}
function post_smtp_plugin_deactivate() {
deactivate_plugins( plugin_basename( __FILE__ ) );
}
function post_smtp_plugin_admin_notice_version() {
echo '<div class="error">
<p>
<strong>Post SMTP</strong> plugin require at least PHP version 5.6, contact to your web hostig support to upgrade.
</p>
<p>
<a href="https://secure.php.net/supported-versions.php">See supported versions on PHP.net</a>
</p>
</div>';
if ( isset( $_GET['activate'] ) ) {
unset( $_GET['activate'] ); }
}
function post_smtp_plugin_admin_notice() {
echo '<div class="error"><p><strong>Post SMTP</strong> plugin is a fork (twin brother) of the original Postman SMTP, you must disable Postman SMTP to use this plugin.</p></div>';
if ( isset( $_GET['activate'] ) ) {
unset( $_GET['activate'] ); }
}
/**
* @todo
*/
function post_dismiss_not_configured() {
?>
<script>
(function($) {
$(document).on('click','.postman-not-configured-notice .notice-dismiss', function(e) {
e.preventDefault();
var $this = $(this);
var args = {
action: 'dismiss_version_notify',
security: $('.postman-not-configured-notice').find('.security').val(),
version: 'not_configured',
};
$.post(ajaxurl, args, function() {
$this.parent().slideUp();
});
});
})(jQuery);
</script>
<?php
}
add_action( 'admin_footer', 'post_dismiss_not_configured' );
function post_smtp_general_scripts() {
$localize = include( POST_SMTP_PATH . '/Postman/Localize.php' );
wp_register_script( 'post-smtp-localize', POST_SMTP_URL . '/script/localize.js', [], false );
wp_localize_script( 'post-smtp-localize', 'post_smtp_localize', $localize );
wp_enqueue_script( 'post-smtp-localize' );
wp_enqueue_script( 'post-smtp-hooks', POST_SMTP_URL . '/script/post-smtp-hooks.js', [], false );
}
add_action( 'admin_enqueue_scripts', 'post_smtp_general_scripts', 8 );
/**
* Create the main Postman class to start Postman
*
* @param mixed $startingMemory
*/
function post_smtp_start( $startingMemory ) {
post_setupPostman();
PostmanUtils::logMemoryUse( $startingMemory, 'Postman' );
}
/**
* Instantiate the mail Postman class
*/
function post_setupPostman() {
require_once 'Postman/Postman.php';
$kevinCostner = new Postman( __FILE__, POST_SMTP_VER );
do_action( 'post_smtp_init');
}