summaryrefslogtreecommitdiff
path: root/Postman/PostmanOptions.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/PostmanOptions.php')
-rw-r--r--Postman/PostmanOptions.php679
1 files changed, 679 insertions, 0 deletions
diff --git a/Postman/PostmanOptions.php b/Postman/PostmanOptions.php
new file mode 100644
index 0000000..e2e78d6
--- /dev/null
+++ b/Postman/PostmanOptions.php
@@ -0,0 +1,679 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly
+}
+if ( ! interface_exists( 'PostmanOptionsInterface' ) ) {
+ interface PostmanOptionsInterface {
+ /**
+ * I'm stuck with these methods because of Gmail API Extension
+ */
+ public function save();
+ public function isNew();
+ public function getLogLevel();
+ public function getHostname();
+ public function getPort();
+ public function getMessageSenderEmail();
+ public function getMessageSenderName();
+ public function getClientId();
+ public function getClientSecret();
+ public function getTransportType();
+ public function getAuthenticationType();
+ public function getEncryptionType();
+ public function getUsername();
+ public function getPassword();
+ public function getReplyTo();
+ public function getConnectionTimeout();
+ public function getReadTimeout();
+ public function isSenderNameOverridePrevented();
+ public function isAuthTypePassword();
+ public function isAuthTypeOAuth2();
+ public function isAuthTypeLogin();
+ public function isAuthTypePlain();
+ public function isAuthTypeCrammd5();
+ public function isAuthTypeNone();
+
+ /**
+ *
+ * @deprecated
+ */
+ public function getSenderEmail();
+ /**
+ *
+ * @deprecated
+ */
+ public function getSenderName();
+ }
+}
+
+if ( ! class_exists( 'PostmanOptions' ) ) {
+
+ /**
+ * http://stackoverflow.com/questions/23880928/use-oauth-refresh-token-to-obtain-new-access-token-google-api
+ * http://pastebin.com/jA9sBNTk
+ *
+ * Make sure these emails are permitted (see http://en.wikipedia.org/wiki/E-mail_address#Internationalization):
+ */
+ class PostmanOptions implements PostmanOptionsInterface {
+
+ // the option database name
+ const POSTMAN_OPTIONS = 'postman_options';
+ const POSTMAN_NETWORK_OPTIONS = 'postman_network_options';
+
+ // the options fields
+ const VERSION = 'version';
+ const ENVELOPE_SENDER = 'envelope_sender';
+ const MESSAGE_SENDER_EMAIL = 'sender_email';
+ const MESSAGE_SENDER_NAME = 'sender_name';
+ const REPLY_TO = 'reply_to';
+ const FORCED_TO_RECIPIENTS = 'forced_to';
+ const FORCED_CC_RECIPIENTS = 'forced_cc';
+ const FORCED_BCC_RECIPIENTS = 'forced_bcc';
+ const ADDITIONAL_HEADERS = 'headers';
+ const TEST_EMAIL = 'test_email';
+ const HOSTNAME = 'hostname';
+ const PORT = 'port';
+ const TRANSPORT_TYPE = 'transport_type';
+ const AUTHENTICATION_TYPE = 'auth_type';
+ const AUTHENTICATION_TYPE_NONE = 'none';
+ const AUTHENTICATION_TYPE_PLAIN = 'plain';
+ const AUTHENTICATION_TYPE_LOGIN = 'login';
+ const AUTHENTICATION_TYPE_CRAMMD5 = 'crammd5';
+ const AUTHENTICATION_TYPE_OAUTH2 = 'oauth2';
+ const SECURITY_TYPE = 'enc_type';
+ const SECURITY_TYPE_NONE = 'none';
+ const SECURITY_TYPE_SMTPS = 'ssl';
+ const SECURITY_TYPE_STARTTLS = 'tls';
+ const CLIENT_ID = 'oauth_client_id';
+ const CLIENT_SECRET = 'oauth_client_secret';
+ const BASIC_AUTH_USERNAME = 'basic_auth_username';
+ const BASIC_AUTH_PASSWORD = 'basic_auth_password';
+ const MANDRILL_API_KEY = 'mandrill_api_key';
+ const SENDGRID_API_KEY = 'sendgrid_api_key';
+ const MAILGUN_API_KEY = 'mailgun_api_key';
+ const MAILGUN_DOMAIN_NAME = 'mailgun_domain_name';
+ const MAILGUN_REGION = 'mailgun_region';
+ const PREVENT_MESSAGE_SENDER_NAME_OVERRIDE = 'prevent_sender_name_override';
+ const PREVENT_MESSAGE_SENDER_EMAIL_OVERRIDE = 'prevent_sender_email_override';
+ const CONNECTION_TIMEOUT = 'connection_timeout';
+ const READ_TIMEOUT = 'read_timeout';
+ const LOG_LEVEL = 'log_level';
+ const RUN_MODE = 'run_mode';
+ const RUN_MODE_PRODUCTION = 'production';
+ const RUN_MODE_LOG_ONLY = 'log_only';
+ const RUN_MODE_IGNORE = 'ignore';
+ const MAIL_LOG_ENABLED_OPTION = 'mail_log_enabled';
+ const MAIL_LOG_ENABLED_OPTION_YES = 'true';
+ const MAIL_LOG_ENABLED_OPTION_NO = 'false';
+ const MAIL_LOG_MAX_ENTRIES = 'mail_log_max_entries';
+ const STEALTH_MODE = 'stealth_mode';
+ const TRANSCRIPT_SIZE = 'transcript_size';
+ const TEMPORARY_DIRECTORY = 'tmp_dir';
+ const DISABLE_EMAIL_VALIDAITON = 'disable_email_validation';
+ const NOTIFICATION_SERVICE = 'notification_service';
+ const NOTIFICATION_USE_CHROME = 'notification_use_chrome';
+ const NOTIFICATION_CHROME_UID = 'notification_chrome_uid';
+ const PUSHOVER_USER = 'pushover_user';
+ const PUSHOVER_TOKEN = 'pushover_token';
+ const SLACK_TOKEN = 'slack_token';
+
+ // Fallback
+ const FALLBACK_SMTP_ENABLED = 'fallback_smtp_enabled';
+ const FALLBACK_SMTP_HOSTNAME = 'fallback_smtp_hostname';
+ const FALLBACK_SMTP_PORT = 'fallback_smtp_port';
+ const FALLBACK_SMTP_SECURITY = 'fallback_smtp_security';
+ const FALLBACK_FROM_EMAIL = 'fallback_from_email';
+ const FALLBACK_SMTP_USE_AUTH = 'fallback_smtp_use_auth';
+ const FALLBACK_SMTP_USERNAME = 'fallback_smtp_username';
+ const FALLBACK_SMTP_PASSWORD = 'fallback_smtp_password';
+
+ // defaults
+ const DEFAULT_TRANSCRIPT_SIZE = 128;
+ const DEFAULT_STEALTH_MODE = false;
+ const DEFAULT_RUN_MODE = self::RUN_MODE_PRODUCTION;
+ const DEFAULT_MAIL_LOG_ENABLED = self::MAIL_LOG_ENABLED_OPTION_YES;
+ const DEFAULT_MAIL_LOG_ENTRIES = 250;
+ const DEFAULT_LOG_LEVEL = PostmanLogger::ERROR_INT;
+ const DEFAULT_NOTIFICATION_SERVICE = 'default';
+ const DEFAULT_TRANSPORT_TYPE = 'smtp'; // must match what's in PostmanSmtpModuleTransport
+ const DEFAULT_TCP_READ_TIMEOUT = 60;
+ const DEFAULT_TCP_CONNECTION_TIMEOUT = 10;
+ const DEFAULT_PLUGIN_MESSAGE_SENDER_NAME_ENFORCED = false;
+ const DEFAULT_PLUGIN_MESSAGE_SENDER_EMAIL_ENFORCED = false;
+ const DEFAULT_TEMP_DIRECTORY = '/tmp';
+
+ const SMTP_MAILERS = [
+ 'phpmailer' => 'PHPMailer',
+ 'postsmtp' => 'PostSMTP'
+ ];
+
+ public $is_fallback = false;
+
+ // options data
+ private $options;
+
+ // singleton instance
+ public static function getInstance() {
+ static $inst = null;
+ if ( $inst === null ) {
+ $inst = new PostmanOptions();
+ }
+ return $inst;
+ }
+
+ /**
+ * private constructor
+ */
+ private function __construct() {
+ $this->load();
+ }
+
+ public function save() {
+ update_option( PostmanOptions::POSTMAN_OPTIONS, $this->options );
+ }
+
+ public function reload() {
+ $this->load();
+ }
+
+ public function load() {
+
+ $options = get_option( self::POSTMAN_OPTIONS );
+
+ 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 );
+ }
+
+ switch_to_blog($blog_id);
+ $options = get_option( self::POSTMAN_OPTIONS );
+ restore_current_blog();
+ }
+
+ $this->options = $options;
+ }
+
+ public function isNew() {
+ return ! isset( $this->options [ PostmanOptions::TRANSPORT_TYPE ] );
+ }
+ public function isMailLoggingEnabled() {
+ $allowed = $this->isMailLoggingAllowed();
+ $enabled = $this->getMailLoggingEnabled() == self::MAIL_LOG_ENABLED_OPTION_YES;
+ return $allowed && $enabled;
+ }
+ public function getTempDirectory() {
+ if ( isset( $this->options [ self::TEMPORARY_DIRECTORY ] ) ) {
+ return $this->options [ self::TEMPORARY_DIRECTORY ];
+ } else { return self::DEFAULT_TEMP_DIRECTORY; }
+ }
+ public function isMailLoggingAllowed() {
+ return true;
+ }
+ public function isStealthModeEnabled() {
+ if ( isset( $this->options [ PostmanOptions::STEALTH_MODE ] ) ) {
+ return $this->options [ PostmanOptions::STEALTH_MODE ];
+ } else { return self::DEFAULT_STEALTH_MODE; }
+ }
+ public function getMailLoggingEnabled() {
+ if ( isset( $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ] ) ) {
+ return $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ];
+ } else { return self::DEFAULT_MAIL_LOG_ENABLED; }
+ }
+ public function getRunMode() {
+ if ( defined( 'POST_SMTP_RUN_MODE' ) ) {
+ return POST_SMTP_RUN_MODE;
+ }
+
+ if ( isset( $this->options [ self::RUN_MODE ] ) ) {
+ return $this->options [ self::RUN_MODE ];
+ } else { return self::DEFAULT_RUN_MODE; }
+ }
+ public function getMailLoggingMaxEntries() {
+ if ( isset( $this->options [ PostmanOptions::MAIL_LOG_MAX_ENTRIES ] ) ) {
+ return $this->options [ PostmanOptions::MAIL_LOG_MAX_ENTRIES ];
+ } else { return self::DEFAULT_MAIL_LOG_ENTRIES; }
+ }
+ public function getTranscriptSize() {
+ if ( isset( $this->options [ PostmanOptions::TRANSCRIPT_SIZE ] ) ) {
+ return $this->options [ PostmanOptions::TRANSCRIPT_SIZE ];
+ } else { return self::DEFAULT_TRANSCRIPT_SIZE; }
+ }
+
+ public function getLogLevel() {
+ if ( isset( $this->options [ PostmanOptions::LOG_LEVEL ] ) ) {
+ return $this->options [ PostmanOptions::LOG_LEVEL ];
+ } else { return self::DEFAULT_LOG_LEVEL; }
+ }
+
+ public function getNotificationService() {
+ if ( isset( $this->options [ PostmanOptions::NOTIFICATION_SERVICE ] ) ) {
+ return $this->options [ PostmanOptions::NOTIFICATION_SERVICE ];
+ } else {
+ return self::DEFAULT_NOTIFICATION_SERVICE;
+ }
+ }
+
+ public function getForcedToRecipients() {
+ if ( isset( $this->options [ self::FORCED_TO_RECIPIENTS ] ) ) {
+ return $this->options [ self::FORCED_TO_RECIPIENTS ]; }
+ }
+ public function getForcedCcRecipients() {
+ if ( isset( $this->options [ self::FORCED_CC_RECIPIENTS ] ) ) {
+ return $this->options [ self::FORCED_CC_RECIPIENTS ]; }
+ }
+ public function getForcedBccRecipients() {
+ if ( isset( $this->options [ self::FORCED_BCC_RECIPIENTS ] ) ) {
+ return $this->options [ self::FORCED_BCC_RECIPIENTS ]; }
+ }
+ public function getAdditionalHeaders() {
+ if ( isset( $this->options [ self::ADDITIONAL_HEADERS ] ) ) {
+ return $this->options [ self::ADDITIONAL_HEADERS ]; }
+ }
+ public function getHostname() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackHostname();
+ }
+
+ if ( isset( $this->options [ PostmanOptions::HOSTNAME ] ) ) {
+ return $this->options [ PostmanOptions::HOSTNAME ]; }
+ }
+
+ public function getPort() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackPort();
+ }
+
+ if ( isset( $this->options [ PostmanOptions::PORT ] ) ) {
+ return $this->options [ PostmanOptions::PORT ]; }
+ }
+
+ public function getEnvelopeSender() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackFromEmail();
+ }
+
+ if ( isset( $this->options [ PostmanOptions::ENVELOPE_SENDER ] ) ) {
+ return $this->options [ PostmanOptions::ENVELOPE_SENDER ]; }
+ }
+
+ public function getMessageSenderEmail() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackFromEmail();
+ }
+
+ if ( isset( $this->options [ PostmanOptions::MESSAGE_SENDER_EMAIL ] ) ) {
+ return $this->options [ PostmanOptions::MESSAGE_SENDER_EMAIL ]; }
+ }
+
+ public function getFallbackFromEmail() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_FROM_EMAIL ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_FROM_EMAIL ]; }
+ }
+
+ public function getMessageSenderName() {
+ if ( isset( $this->options [ PostmanOptions::MESSAGE_SENDER_NAME ] ) ) {
+ return $this->options [ PostmanOptions::MESSAGE_SENDER_NAME ]; }
+ }
+ public function getClientId() {
+ if ( isset( $this->options [ PostmanOptions::CLIENT_ID ] ) ) {
+ return $this->options [ PostmanOptions::CLIENT_ID ]; }
+ }
+ public function getClientSecret() {
+ if ( isset( $this->options [ PostmanOptions::CLIENT_SECRET ] ) ) {
+ return $this->options [ PostmanOptions::CLIENT_SECRET ]; }
+ }
+
+ public function getTransportType() {
+
+ if ( $this->is_fallback ) {
+ return 'smtp';
+ }
+
+ if ( isset( $this->options [ PostmanOptions::TRANSPORT_TYPE ] ) ) {
+ return $this->options [ PostmanOptions::TRANSPORT_TYPE ]; }
+ }
+
+ public function getAuthenticationType() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackAuth();
+ }
+
+ if ( isset( $this->options [ PostmanOptions::AUTHENTICATION_TYPE ] ) ) {
+ return $this->options [ PostmanOptions::AUTHENTICATION_TYPE ]; }
+ }
+
+ public function getEncryptionType() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackSecurity();
+ }
+
+
+ if ( isset( $this->options [ PostmanOptions::SECURITY_TYPE ] ) ) {
+ return $this->options [ PostmanOptions::SECURITY_TYPE ];
+ }
+ }
+
+ public function getUsername() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackUsername();
+ }
+
+ if ( defined( 'POST_SMTP_AUTH_USERNAME' ) ) {
+ return POST_SMTP_AUTH_USERNAME;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::BASIC_AUTH_USERNAME ] ) ) {
+ return $this->options [ PostmanOptions::BASIC_AUTH_USERNAME ];
+ }
+ }
+
+ public function getPassword() {
+
+ if ( $this->is_fallback ) {
+ return $this->getFallbackPassword();
+ }
+
+ if ( defined( 'POST_SMTP_AUTH_PASSWORD' ) ) {
+ return POST_SMTP_AUTH_PASSWORD;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::BASIC_AUTH_PASSWORD ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::BASIC_AUTH_PASSWORD ] );
+ }
+ }
+
+ // Fallback
+ public function getFallbackIsEnabled() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_ENABLED ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_ENABLED ];
+ }
+ return false;
+ }
+
+ public function getFallbackHostname() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_HOSTNAME ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_HOSTNAME ];
+ }
+ }
+
+ public function getFallbackPort() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_PORT ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_PORT ];
+ }
+ }
+
+ public function getFallbackSecurity() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_SECURITY ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_SECURITY ];
+ }
+ }
+
+ public function getFallbackAuth() {
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_USE_AUTH ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_USE_AUTH ];
+ }
+ }
+
+ public function getFallbackUsername() {
+ if ( defined( 'POST_SMTP_FALLBACK_AUTH_USERNAME' ) ) {
+ return POST_SMTP_FALLBACK_AUTH_USERNAME;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_USERNAME ] ) ) {
+ return $this->options [ PostmanOptions::FALLBACK_SMTP_USERNAME ];
+ }
+ }
+
+
+ public function getFallbackPassword() {
+ if ( defined( 'POST_SMTP_FALLBACK_AUTH_PASSWORD' ) ) {
+ return POST_SMTP_FALLBACK_AUTH_PASSWORD;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::FALLBACK_SMTP_PASSWORD ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::FALLBACK_SMTP_PASSWORD ] );
+ }
+ }
+
+ // End Fallback
+
+ public function getMandrillApiKey() {
+ if ( defined( 'POST_SMTP_API_KEY' ) ) {
+ return POST_SMTP_API_KEY;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ); }
+ }
+ public function getSendGridApiKey() {
+ if ( defined( 'POST_SMTP_API_KEY' ) ) {
+ return POST_SMTP_API_KEY;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::SENDGRID_API_KEY ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::SENDGRID_API_KEY ] ); }
+ }
+ public function getMailgunApiKey() {
+ if ( defined( 'POST_SMTP_API_KEY' ) ) {
+ return POST_SMTP_API_KEY;
+ }
+
+ if ( isset( $this->options [ PostmanOptions::MAILGUN_API_KEY ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::MAILGUN_API_KEY ] ); }
+ }
+ public function getMailgunDomainName() {
+ if ( isset( $this->options [ PostmanOptions::MAILGUN_DOMAIN_NAME ] ) ) {
+ return $this->options [ PostmanOptions::MAILGUN_DOMAIN_NAME ];
+ }
+ }
+
+ public function getMailgunRegion() {
+ if ( isset( $this->options [ PostmanOptions::MAILGUN_REGION ] ) ) {
+ return $this->options [ PostmanOptions::MAILGUN_REGION ];
+ }
+ }
+
+ public function getPushoverUser() {
+ if ( isset( $this->options [ PostmanOptions::PUSHOVER_USER ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::PUSHOVER_USER ] );
+ }
+ }
+
+ public function getPushoverToken() {
+ if ( isset( $this->options [ PostmanOptions::PUSHOVER_TOKEN ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::PUSHOVER_TOKEN ] );
+ }
+ }
+
+ public function getSlackToken() {
+ if ( isset( $this->options [ PostmanOptions::SLACK_TOKEN ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::SLACK_TOKEN ] );
+ }
+ }
+
+ public function useChromeExtension() {
+ if ( isset( $this->options [ PostmanOptions::NOTIFICATION_USE_CHROME ] ) ) {
+ return $this->options [ PostmanOptions::NOTIFICATION_USE_CHROME ];
+ }
+ }
+
+ public function getNotificationChromeUid() {
+ if ( isset( $this->options [ PostmanOptions::NOTIFICATION_CHROME_UID ] ) ) {
+ return base64_decode( $this->options [ PostmanOptions::NOTIFICATION_CHROME_UID ] );
+ }
+ }
+
+ public function getReplyTo() {
+ if ( isset( $this->options [ PostmanOptions::REPLY_TO ] ) ) {
+ return $this->options [ PostmanOptions::REPLY_TO ]; }
+ }
+ public function getConnectionTimeout() {
+ if ( ! empty( $this->options [ self::CONNECTION_TIMEOUT ] ) ) {
+ return $this->options [ self::CONNECTION_TIMEOUT ];
+ } else { return self::DEFAULT_TCP_CONNECTION_TIMEOUT; }
+ }
+ public function getReadTimeout() {
+ if ( ! empty( $this->options [ self::READ_TIMEOUT ] ) ) {
+ return $this->options [ self::READ_TIMEOUT ];
+ } else { return self::DEFAULT_TCP_READ_TIMEOUT; }
+ }
+ public function isPluginSenderNameEnforced() {
+ if ( $this->isNew() ) {
+ return self::DEFAULT_PLUGIN_MESSAGE_SENDER_NAME_ENFORCED; }
+ if ( isset( $this->options [ PostmanOptions::PREVENT_MESSAGE_SENDER_NAME_OVERRIDE ] ) ) {
+ return $this->options [ PostmanOptions::PREVENT_MESSAGE_SENDER_NAME_OVERRIDE ]; }
+ }
+
+ public function isEmailValidationDisabled() {
+ if ( isset( $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ] ) ) {
+ return $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ]; }
+ }
+
+ /**
+ * (non-PHPdoc)
+ *
+ * @see PostmanOptions::isSenderNameOverridePrevented()
+ * @deprecated by isPluginSenderNameEnforced
+ */
+ public function isSenderNameOverridePrevented() {
+ return $this->isPluginSenderEmailEnforced();
+ }
+ public function isPluginSenderEmailEnforced() {
+
+ if ( $this->isNew() ) {
+ return self::DEFAULT_PLUGIN_MESSAGE_SENDER_EMAIL_ENFORCED; }
+ if ( isset( $this->options [ PostmanOptions::PREVENT_MESSAGE_SENDER_EMAIL_OVERRIDE ] ) ) {
+ return $this->options [ PostmanOptions::PREVENT_MESSAGE_SENDER_EMAIL_OVERRIDE ]; }
+ }
+ /**
+ *
+ * @deprecated by isPluginSenderEmailEnforced
+ */
+ public function isSenderEmailOverridePrevented() {
+ return $this->isPluginSenderEmailEnforced();
+ }
+ private function setSenderEmail( $senderEmail ) {
+ $this->options [ PostmanOptions::MESSAGE_SENDER_EMAIL ] = $senderEmail;
+ }
+ public function setMessageSenderEmailIfEmpty( $senderEmail ) {
+ if ( empty( $this->options [ PostmanOptions::MESSAGE_SENDER_EMAIL ] ) ) {
+ $this->setSenderEmail( $senderEmail );
+ }
+ }
+ private function setSenderName( $senderName ) {
+ $this->options [ PostmanOptions::MESSAGE_SENDER_NAME ] = $senderName;
+ }
+ public function setMessageSenderNameIfEmpty( $senderName ) {
+ if ( empty( $this->options [ PostmanOptions::MESSAGE_SENDER_NAME ] ) ) {
+ $this->setSenderName( $senderName );
+ }
+ }
+
+ public function getSmtpMailer() {
+ if ( empty($this->options [ 'smtp_mailers' ]) ) {
+ return 'postsmtp';
+ }
+
+ return $this->options [ 'smtp_mailers' ];
+ }
+
+ public function isAuthTypePassword() {
+ return $this->isAuthTypeLogin() || $this->isAuthTypeCrammd5() || $this->isAuthTypePlain();
+ }
+ public function isAuthTypeOAuth2() {
+ return PostmanOptions::AUTHENTICATION_TYPE_OAUTH2 == $this->getAuthenticationType();
+ }
+ public function isAuthTypeLogin() {
+ return PostmanOptions::AUTHENTICATION_TYPE_LOGIN == $this->getAuthenticationType();
+ }
+ public function isAuthTypePlain() {
+ return PostmanOptions::AUTHENTICATION_TYPE_PLAIN == $this->getAuthenticationType();
+ }
+ public function isAuthTypeCrammd5() {
+ return PostmanOptions::AUTHENTICATION_TYPE_CRAMMD5 == $this->getAuthenticationType();
+ }
+ public function isAuthTypeNone() {
+ return PostmanOptions::AUTHENTICATION_TYPE_NONE == $this->getAuthenticationType();
+ }
+ /**
+ *
+ * @deprecated Required by the Postman Gmail Extension
+ *
+ * @see PostmanOptionsInterface::getSenderEmail()
+ */
+ public function getSenderEmail() {
+ return $this->getMessageSenderEmail();
+ }
+ /**
+ *
+ * @deprecated Required by the Postman Gmail Extension
+ *
+ * @see PostmanOptionsInterface::getSenderEmail()
+ */
+ public function getSenderName() {
+ return $this->getMessageSenderName();
+ }
+
+ /**
+ *
+ * @return string
+ */
+ public function export() {
+ if ( PostmanPreRequisitesCheck::checkZlibEncode() ) {
+ $data = $this->options;
+ $data ['version'] = PostmanState::getInstance()->getVersion();
+ foreach ( PostmanTransportRegistry::getInstance()->getTransports() as $transport ) {
+ $data = $transport->prepareOptionsForExport( $data );
+ }
+ $data = base64_encode( gzcompress( json_encode( $data ), 9 ) );
+ return $data;
+ }
+ }
+
+ /**
+ *
+ * @param mixed $data
+ */
+ public function import( $data ) {
+ if ( PostmanPreRequisitesCheck::checkZlibEncode() ) {
+ $logger = new PostmanLogger( get_class( $this ) );
+ $logger->debug( 'Importing Settings' );
+ $base64 = $data;
+ $logger->trace( $base64 );
+ $gz = base64_decode( $base64 );
+ $logger->trace( $gz );
+ $json = @gzuncompress( $gz );
+ $logger->trace( $json );
+ if ( ! empty( $json ) ) {
+ $data = json_decode( $json, true );
+ $logger->trace( $data );
+ {
+ // overwrite the current version with the version from the imported options
+ // this way database upgrading can occur
+ $postmanState = get_option( 'postman_state' );
+ $postmanState ['version'] = $data ['version'];
+ $logger->trace( sprintf( 'Setting Postman version to %s', $postmanState ['version'] ) );
+ assert( $postmanState ['version'] == $data ['version'] );
+ update_option( 'postman_state', $postmanState );
+ }
+ $this->options = $data;
+ $logger->info( 'Imported data' );
+ $this->save();
+ return true;
+ } else {
+ $logger->error( 'Could not import data - data error' );
+ return false;
+ }
+ }
+ }
+ }
+}