summaryrefslogtreecommitdiff
path: root/Postman/Postman.php
diff options
context:
space:
mode:
authoryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-10-17 12:11:01 +0000
committeryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-10-17 12:11:01 +0000
commit263bc7987e090b0b25d241fa6951f32b8eb2552f (patch)
tree8ee9ded48d8abc15fd09655fd7a42097c2adf751 /Postman/Postman.php
parentf69ba14997be3e8cc5ac86a1da74c1f29756d9df (diff)
downloadPost-SMTP-263bc7987e090b0b25d241fa6951f32b8eb2552f.zip
= 1.7.6 - 2017-10-17
* Missing sendgrid files * Fixed: Localization slug * Minor typo
Diffstat (limited to 'Postman/Postman.php')
-rw-r--r--Postman/Postman.php312
1 files changed, 154 insertions, 158 deletions
diff --git a/Postman/Postman.php b/Postman/Postman.php
index a706636..46a69f9 100644
--- a/Postman/Postman.php
+++ b/Postman/Postman.php
@@ -15,30 +15,28 @@
* @copyright Jan 16, 2015
*/
class Postman {
-
- //
- const ADMINISTRATOR_ROLE_NAME = 'administrator';
+
+ const ADMINISTRATOR_ROLE_NAME = 'administrator';
const MANAGE_POSTMAN_CAPABILITY_NAME = 'manage_postman_smtp';
- const TEXT_DOMAIN = 'postman-smtp';
-
- //
+ const TEXT_DOMAIN = 'post-smtp';
+
private $logger;
private $messageHandler;
private $wpMailBinder;
private $pluginData;
private $rootPluginFilenameAndPath;
-
+
/**
* The constructor
*
* @param unknown $rootPluginFilenameAndPath
* - the __FILE__ of the caller
*/
- public function __construct($rootPluginFilenameAndPath, $version) {
- assert ( ! empty ( $rootPluginFilenameAndPath ) );
- assert ( ! empty ( $version ) );
+ public function __construct( $rootPluginFilenameAndPath, $version ) {
+ assert( ! empty( $rootPluginFilenameAndPath ) );
+ assert( ! empty( $version ) );
$this->rootPluginFilenameAndPath = $rootPluginFilenameAndPath;
-
+
// load the dependencies
require_once 'PostmanOptions.php';
require_once 'PostmanState.php';
@@ -55,88 +53,88 @@ class Postman {
require_once 'PostmanConfigTextHelper.php';
require_once 'Postman-Email-Log/PostmanEmailLogPostType.php';
require_once 'Postman-Mail/PostmanMyMailConnector.php';
-
+
// get plugin metadata - alternative to get_plugin_data
- $this->pluginData = array (
- 'name' => __ ( 'Postman SMTP', Postman::TEXT_DOMAIN ),
- 'version' => $version
+ $this->pluginData = array(
+ 'name' => __( 'Postman SMTP', Postman::TEXT_DOMAIN ),
+ 'version' => $version,
);
-
+
// register the plugin metadata filter (part of the Postman API)
- add_filter ( 'postman_get_plugin_metadata', array (
+ add_filter( 'postman_get_plugin_metadata', array(
$this,
- 'getPluginMetaData'
+ 'getPluginMetaData',
) );
-
+
// create an instance of the logger
- $this->logger = new PostmanLogger ( get_class ( $this ) );
- if ($this->logger->isDebug ()) {
- $this->logger->debug ( sprintf ( '%1$s v%2$s starting', $this->pluginData ['name'], $this->pluginData ['version'] ) );
+ $this->logger = new PostmanLogger( get_class( $this ) );
+ if ( $this->logger->isDebug() ) {
+ $this->logger->debug( sprintf( '%1$s v%2$s starting', $this->pluginData ['name'], $this->pluginData ['version'] ) );
}
-
- if (isset ( $_REQUEST ['page'] ) && $this->logger->isTrace ()) {
- $this->logger->trace ( 'Current page: ' . $_REQUEST ['page'] );
+
+ if ( isset( $_REQUEST ['page'] ) && $this->logger->isTrace() ) {
+ $this->logger->trace( 'Current page: ' . $_REQUEST ['page'] );
}
-
+
// register the email transports
- $this->registerTransports ( $rootPluginFilenameAndPath );
-
+ $this->registerTransports( $rootPluginFilenameAndPath );
+
// store an instance of the WpMailBinder
- $this->wpMailBinder = PostmanWpMailBinder::getInstance ();
-
+ $this->wpMailBinder = PostmanWpMailBinder::getInstance();
+
// bind to wp_mail - this has to happen before the "init" action
// this design allows other plugins to register a Postman transport and call bind()
// bind may be called more than once
- $this->wpMailBinder->bind ();
-
+ $this->wpMailBinder->bind();
+
// registers the custom post type for all callers
- PostmanEmailLogPostType::automaticallyCreatePostType ();
-
+ PostmanEmailLogPostType::automaticallyCreatePostType();
+
// run the DatastoreUpgrader any time there is a version mismatch
- if (PostmanState::getInstance ()->getVersion () != $this->pluginData ['version']) {
+ if ( PostmanState::getInstance()->getVersion() != $this->pluginData ['version'] ) {
// manually trigger the activation hook
- if ($this->logger->isInfo ()) {
- $this->logger->info ( sprintf ( "Upgrading datastore from version %s to %s", PostmanState::getInstance ()->getVersion (), $this->pluginData ['version'] ) );
+ if ( $this->logger->isInfo() ) {
+ $this->logger->info( sprintf( 'Upgrading datastore from version %s to %s', PostmanState::getInstance()->getVersion(), $this->pluginData ['version'] ) );
}
require_once 'PostmanInstaller.php';
- $upgrader = new PostmanInstaller ();
- $upgrader->activatePostman ();
+ $upgrader = new PostmanInstaller();
+ $upgrader->activatePostman();
}
-
+
// MyMail integration
- new PostmanMyMailConnector ( $rootPluginFilenameAndPath );
-
+ new PostmanMyMailConnector( $rootPluginFilenameAndPath );
+
// register the shortcode handler on the add_shortcode event
- add_shortcode ( 'postman-version', array (
+ add_shortcode( 'postman-version', array(
$this,
- 'version_shortcode'
+ 'version_shortcode',
) );
-
+
// hook on the plugins_loaded event
- add_action ( 'plugins_loaded', array (
+ add_action( 'plugins_loaded', array(
$this,
- 'on_plugins_loaded'
+ 'on_plugins_loaded',
) );
-
+
// hook on the wp_loaded event
- add_action ( 'wp_loaded', array (
+ add_action( 'wp_loaded', array(
$this,
- 'on_wp_loaded'
+ 'on_wp_loaded',
) );
-
+
// hook on the acivation event
- register_activation_hook ( $rootPluginFilenameAndPath, array (
+ register_activation_hook( $rootPluginFilenameAndPath, array(
$this,
- 'on_activation'
+ 'on_activation',
) );
-
+
// hook on the deactivation event
- register_deactivation_hook ( $rootPluginFilenameAndPath, array (
+ register_deactivation_hook( $rootPluginFilenameAndPath, array(
$this,
- 'on_deactivation'
+ 'on_deactivation',
) );
}
-
+
/**
* Functions to execute on the plugins_loaded event
*
@@ -145,15 +143,15 @@ class Postman {
*/
public function on_plugins_loaded() {
// load the text domain
- $this->loadTextDomain ();
-
+ $this->loadTextDomain();
+
// register the setup_admin function on plugins_loaded because we need to call
// current_user_can to verify the capability of the current user
- if (PostmanUtils::isAdmin () && is_admin ()) {
- $this->setup_admin ();
+ if ( PostmanUtils::isAdmin() && is_admin() ) {
+ $this->setup_admin();
}
}
-
+
/**
* Functions to execute on the wp_loaded event
*
@@ -163,45 +161,45 @@ class Postman {
public function on_wp_loaded() {
// register the check for configuration errors on the wp_loaded hook,
// because we want it to run after the OAuth Grant Code check on the init hook
- $this->check_for_configuration_errors ();
+ $this->check_for_configuration_errors();
}
-
+
/**
* Functions to execute on the register_activation_hook
* ref: https://codex.wordpress.org/Function_Reference/register_activation_hook
*/
public function on_activation() {
- if ($this->logger->isInfo ()) {
- $this->logger->info ( 'Activating plugin' );
+ if ( $this->logger->isInfo() ) {
+ $this->logger->info( 'Activating plugin' );
}
require_once 'PostmanInstaller.php';
- $upgrader = new PostmanInstaller ();
- $upgrader->activatePostman ();
+ $upgrader = new PostmanInstaller();
+ $upgrader->activatePostman();
}
-
+
/**
* Functions to execute on the register_deactivation_hook
* ref: https://codex.wordpress.org/Function_Reference/register_deactivation_hook
*/
public function on_deactivation() {
- if ($this->logger->isInfo ()) {
- $this->logger->info ( 'Deactivating plugin' );
+ if ( $this->logger->isInfo() ) {
+ $this->logger->info( 'Deactivating plugin' );
}
require_once 'PostmanInstaller.php';
- $upgrader = new PostmanInstaller ();
- $upgrader->deactivatePostman ();
+ $upgrader = new PostmanInstaller();
+ $upgrader->deactivatePostman();
}
-
+
/**
* If the user is on the WordPress Admin page, creates the Admin screens
*/
public function setup_admin() {
- $this->logger->debug ( 'Admin start-up sequence' );
-
- $options = PostmanOptions::getInstance ();
- $authToken = PostmanOAuthToken::getInstance ();
+ $this->logger->debug( 'Admin start-up sequence' );
+
+ $options = PostmanOptions::getInstance();
+ $authToken = PostmanOAuthToken::getInstance();
$rootPluginFilenameAndPath = $this->rootPluginFilenameAndPath;
-
+
// load the dependencies
require_once 'PostmanMessageHandler.php';
require_once 'PostmanAdminController.php';
@@ -212,85 +210,83 @@ class Postman {
require_once 'Postman-Configuration/PostmanConfigurationController.php';
require_once 'Postman-Send-Test-Email/PostmanSendTestEmailController.php';
require_once 'Postman-Diagnostic-Test/PostmanDiagnosticTestController.php';
-
+
// create and store an instance of the MessageHandler
- $this->messageHandler = new PostmanMessageHandler ();
-
+ $this->messageHandler = new PostmanMessageHandler();
+
// create the Admin Controllers
- new PostmanDashboardWidgetController ( $rootPluginFilenameAndPath, $options, $authToken, $this->wpMailBinder );
- new PostmanAdminController ( $rootPluginFilenameAndPath, $options, $authToken, $this->messageHandler, $this->wpMailBinder );
- new PostmanEmailLogController ( $rootPluginFilenameAndPath );
- new PostmanConnectivityTestController ( $rootPluginFilenameAndPath );
- new PostmanConfigurationController ( $rootPluginFilenameAndPath );
- new PostmanSendTestEmailController ( $rootPluginFilenameAndPath );
- new PostmanDiagnosticTestController ( $rootPluginFilenameAndPath );
-
+ new PostmanDashboardWidgetController( $rootPluginFilenameAndPath, $options, $authToken, $this->wpMailBinder );
+ new PostmanAdminController( $rootPluginFilenameAndPath, $options, $authToken, $this->messageHandler, $this->wpMailBinder );
+ new PostmanEmailLogController( $rootPluginFilenameAndPath );
+ new PostmanConnectivityTestController( $rootPluginFilenameAndPath );
+ new PostmanConfigurationController( $rootPluginFilenameAndPath );
+ new PostmanSendTestEmailController( $rootPluginFilenameAndPath );
+ new PostmanDiagnosticTestController( $rootPluginFilenameAndPath );
+
// register the Postman signature (only if we're on a postman admin screen) on the in_admin_footer event
- if (PostmanUtils::isCurrentPagePostmanAdmin ()) {
- add_action ( 'in_admin_footer', array (
+ if ( PostmanUtils::isCurrentPagePostmanAdmin() ) {
+ add_action( 'in_admin_footer', array(
$this,
- 'print_signature'
+ 'print_signature',
) );
}
}
-
+
/**
* Check for configuration errors and displays messages to the user
*/
public function check_for_configuration_errors() {
- $options = PostmanOptions::getInstance ();
- $authToken = PostmanOAuthToken::getInstance ();
-
+ $options = PostmanOptions::getInstance();
+ $authToken = PostmanOAuthToken::getInstance();
+
// did Postman fail binding to wp_mail()?
- if ($this->wpMailBinder->isUnboundDueToException ()) {
+ if ( $this->wpMailBinder->isUnboundDueToException() ) {
// this message gets printed on ANY WordPress admin page, as it's a fatal error that
// may occur just by activating a new plugin
-
// log the fatal message
- $this->logger->fatal ( 'Postman: wp_mail has been declared by another plugin or theme, so you won\'t be able to use Postman until the conflict is resolved.' );
-
- if (PostmanUtils::isAdmin () && is_admin ()) {
+ $this->logger->fatal( 'Postman: wp_mail has been declared by another plugin or theme, so you won\'t be able to use Postman until the conflict is resolved.' );
+
+ if ( PostmanUtils::isAdmin() && is_admin() ) {
// on any admin pages, show this error message
-
// I noticed the wpMandrill and SendGrid plugins have the exact same error message here
// I've adopted their error message as well, for shits and giggles .... :D
- $message = __ ( 'Postman: wp_mail has been declared by another plugin or theme, so you won\'t be able to use Postman until the conflict is resolved.', Postman::TEXT_DOMAIN );
- $this->messageHandler->addError ( $message );
+ $message = __( 'Postman: wp_mail has been declared by another plugin or theme, so you won\'t be able to use Postman until the conflict is resolved.', Postman::TEXT_DOMAIN );
+ $this->messageHandler->addError( $message );
}
} else {
- $transport = PostmanTransportRegistry::getInstance ()->getCurrentTransport ();
- $scribe = $transport->getScribe ();
-
- $virgin = $options->isNew ();
- if (! $transport->isConfiguredAndReady ()) {
+ $transport = PostmanTransportRegistry::getInstance()->getCurrentTransport();
+ $scribe = $transport->getScribe();
+
+ $virgin = $options->isNew();
+ if ( ! $transport->isConfiguredAndReady() ) {
// if the configuration is broken, and the user has started to configure the plugin
// show this error message
- $messages = $transport->getConfigurationMessages ();
+ $messages = $transport->getConfigurationMessages();
foreach ( $messages as $message ) {
- if ($message) {
+ if ( $message ) {
// log the warning message
- $this->logger->warn ( sprintf ( '%s Transport has a configuration problem: %s', $transport->getName (), $message ) );
-
- if (PostmanUtils::isAdmin () && PostmanUtils::isCurrentPagePostmanAdmin ()) {
+ $this->logger->warn( sprintf( '%s Transport has a configuration problem: %s', $transport->getName(), $message ) );
+
+ if ( PostmanUtils::isAdmin() && PostmanUtils::isCurrentPagePostmanAdmin() ) {
// on pages that are Postman admin pages only, show this error message
- $this->messageHandler->addError ( $message );
+ $this->messageHandler->addError( $message );
}
}
}
}
-
+
// on pages that are NOT Postman admin pages only, show this error message
- if (PostmanUtils::isAdmin () && ! PostmanUtils::isCurrentPagePostmanAdmin () && ! $transport->isConfiguredAndReady ()) {
+ if ( PostmanUtils::isAdmin() && ! PostmanUtils::isCurrentPagePostmanAdmin() && ! $transport->isConfiguredAndReady() ) {
// on pages that are *NOT* Postman admin pages only....
// if the configuration is broken show this error message
- add_action ( 'admin_notices', Array (
+ add_action( 'admin_notices', array(
$this,
- 'display_configuration_required_warning'
+ 'display_configuration_required_warning',
) );
}
}
}
-
+
/**
* Returns the plugin version number and name
* Part of the Postman API
@@ -301,74 +297,74 @@ class Postman {
// get plugin metadata
return $this->pluginData;
}
-
+
/**
* This is the general message that Postman requires configuration, to warn users who think
* the plugin is ready-to-go as soon as it is activated.
* This message only goes away once the plugin is configured.
*/
public function display_configuration_required_warning() {
- if (PostmanUtils::isAdmin ()) {
- if ($this->logger->isDebug ()) {
- $this->logger->debug ( 'Displaying configuration required warning' );
+ if ( PostmanUtils::isAdmin() ) {
+ if ( $this->logger->isDebug() ) {
+ $this->logger->debug( 'Displaying configuration required warning' );
}
- $message = sprintf ( PostmanTransportRegistry::getInstance ()->getReadyMessage () );
- $goToSettings = sprintf ( '<a href="%s">%s</a>', PostmanUtils::getSettingsPageUrl (), __ ( 'Settings', Postman::TEXT_DOMAIN ) );
- $goToEmailLog = sprintf ( '%s', _x ( 'Email Log', 'The log of Emails that have been delivered', Postman::TEXT_DOMAIN ) );
- if (PostmanOptions::getInstance ()->isMailLoggingEnabled ()) {
- $goToEmailLog = sprintf ( '<a href="%s">%s</a>', PostmanUtils::getEmailLogPageUrl (), $goToEmailLog );
+ $message = sprintf( PostmanTransportRegistry::getInstance()->getReadyMessage() );
+ $goToSettings = sprintf( '<a href="%s">%s</a>', PostmanUtils::getSettingsPageUrl(), __( 'Settings', Postman::TEXT_DOMAIN ) );
+ $goToEmailLog = sprintf( '%s', _x( 'Email Log', 'The log of Emails that have been delivered', Postman::TEXT_DOMAIN ) );
+ if ( PostmanOptions::getInstance()->isMailLoggingEnabled() ) {
+ $goToEmailLog = sprintf( '<a href="%s">%s</a>', PostmanUtils::getEmailLogPageUrl(), $goToEmailLog );
}
- $message .= (sprintf ( ' %s | %s', $goToEmailLog, $goToSettings ));
+ $message .= (sprintf( ' %s | %s', $goToEmailLog, $goToSettings ));
;
- $this->messageHandler->printMessage ( $message, PostmanMessageHandler::WARNING_CLASS );
+ $this->messageHandler->printMessage( $message, PostmanMessageHandler::WARNING_CLASS );
}
}
-
+
/**
* Register the email transports.
*
* The Gmail API used to be a separate plugin which was registered when that plugin
* was loaded. But now both the SMTP, Gmail API and other transports are registered here.
*
- * @param unknown $pluginData
+ * @param unknown $pluginData
*/
- private function registerTransports($rootPluginFilenameAndPath) {
- PostmanTransportRegistry::getInstance ()->registerTransport ( new PostmanDefaultModuleTransport ( $rootPluginFilenameAndPath ) );
- PostmanTransportRegistry::getInstance ()->registerTransport ( new PostmanSmtpModuleTransport ( $rootPluginFilenameAndPath ) );
- PostmanTransportRegistry::getInstance ()->registerTransport ( new PostmanGmailApiModuleTransport ( $rootPluginFilenameAndPath ) );
- PostmanTransportRegistry::getInstance ()->registerTransport ( new PostmanMandrillTransport ( $rootPluginFilenameAndPath ) );
- PostmanTransportRegistry::getInstance ()->registerTransport ( new PostmanSendGridTransport ( $rootPluginFilenameAndPath ) );
+ private function registerTransports( $rootPluginFilenameAndPath ) {
+ PostmanTransportRegistry::getInstance()->registerTransport( new PostmanDefaultModuleTransport( $rootPluginFilenameAndPath ) );
+ PostmanTransportRegistry::getInstance()->registerTransport( new PostmanSmtpModuleTransport( $rootPluginFilenameAndPath ) );
+ PostmanTransportRegistry::getInstance()->registerTransport( new PostmanGmailApiModuleTransport( $rootPluginFilenameAndPath ) );
+ PostmanTransportRegistry::getInstance()->registerTransport( new PostmanMandrillTransport( $rootPluginFilenameAndPath ) );
+ PostmanTransportRegistry::getInstance()->registerTransport( new PostmanSendGridTransport( $rootPluginFilenameAndPath ) );
}
-
+
/**
* Print the Postman signature on the bottom of the page
*
* http://striderweb.com/nerdaphernalia/2008/06/give-your-wordpress-plugin-credit/
*/
function print_signature() {
- printf ( '<a href="https://wordpress.org/plugins/postman-smtp/">%s</a> %s<br/>', $this->pluginData ['name'], $this->pluginData ['version'] );
+ printf( '<a href="https://wordpress.org/plugins/postman-smtp/">%s</a> %s<br/>', $this->pluginData ['name'], $this->pluginData ['version'] );
}
-
+
/**
* Loads the appropriate language file
*/
private function loadTextDomain() {
// had to hardcode the third parameter, Relative path to WP_PLUGIN_DIR,
// because __FILE__ returns the wrong path if the plugin is installed as a symlink
- $shortLocale = substr ( get_locale (), 0, 2 );
- if ($shortLocale != 'en') {
+ $shortLocale = substr( get_locale(), 0, 2 );
+ if ( $shortLocale != 'en' ) {
$langDir = 'postman-smtp/Postman/languages';
- $success = load_plugin_textdomain ( Postman::TEXT_DOMAIN, false, $langDir );
- if ($this->logger->isDebug ()) {
- if ($success) {
- $this->logger->debug ( sprintf ( 'local translation file loaded for locale=%s', get_locale () ) );
+ $success = load_plugin_textdomain( Postman::TEXT_DOMAIN, false, $langDir );
+ if ( $this->logger->isDebug() ) {
+ if ( $success ) {
+ $this->logger->debug( sprintf( 'local translation file loaded for locale=%s', get_locale() ) );
} else {
- $this->logger->debug ( sprintf ( 'failed to load local translation file: locale=%s file=%s/%s-%s.mo', get_locale (), $langDir, Postman::TEXT_DOMAIN, get_locale () ) );
+ $this->logger->debug( sprintf( 'failed to load local translation file: locale=%s file=%s/%s-%s.mo', get_locale(), $langDir, Postman::TEXT_DOMAIN, get_locale() ) );
}
}
}
}
-
+
/**
* Shortcode to return the current plugin version.
*
@@ -381,19 +377,19 @@ class Postman {
}
}
-if (! function_exists ( 'str_getcsv' )) {
+if ( ! function_exists( 'str_getcsv' ) ) {
/**
* PHP version less than 5.3 don't have str_getcsv natively.
*
- * @param unknown $string
+ * @param unknown $string
* @return multitype:
*/
- function str_getcsv($string) {
- $logger = new PostmanLogger ( 'postman-common-functions' );
- if ($logger->isDebug ()) {
- $logger->debug ( 'Using custom str_getcsv' );
+ function str_getcsv( $string ) {
+ $logger = new PostmanLogger( 'postman-common-functions' );
+ if ( $logger->isDebug() ) {
+ $logger->debug( 'Using custom str_getcsv' );
}
- return PostmanUtils::postman_strgetcsv_impl ( $string );
+ return PostmanUtils::postman_strgetcsv_impl( $string );
}
}