summaryrefslogtreecommitdiff
path: root/Postman/PostmanInstaller.php
diff options
context:
space:
mode:
authoryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-12-05 21:53:16 +0000
committeryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-12-05 21:53:16 +0000
commit82f78770cb8c6058bf506db617ed95c21e3c7b0a (patch)
treeb33b8a3d3eb8eac9fe6f8272f62e626ea4de0623 /Postman/PostmanInstaller.php
parent362ab9579ed96c1ec9b24b9c0f4097081ba3516f (diff)
downloadPost-SMTP-82f78770cb8c6058bf506db617ed95c21e3c7b0a.zip
* Welcome on activation
* email log records per page * email logs trash all * remove gmail hosts for non gmail host
Diffstat (limited to 'Postman/PostmanInstaller.php')
-rw-r--r--Postman/PostmanInstaller.php201
1 files changed, 103 insertions, 98 deletions
diff --git a/Postman/PostmanInstaller.php b/Postman/PostmanInstaller.php
index 170ccf1..812f122 100644
--- a/Postman/PostmanInstaller.php
+++ b/Postman/PostmanInstaller.php
@@ -1,6 +1,6 @@
<?php
-require_once ('PostmanOAuthToken.php');
-require_once ('PostmanOptions.php');
+require_once( 'PostmanOAuthToken.php' );
+require_once( 'PostmanOptions.php' );
/**
* If required, database upgrades are made during activation
@@ -11,129 +11,137 @@ require_once ('PostmanOptions.php');
*/
class PostmanInstaller {
private $logger;
-
+
/**
*/
public function __construct() {
- $this->logger = new PostmanLogger ( get_class ( $this ) );
+ $this->logger = new PostmanLogger( get_class( $this ) );
}
-
+
/**
* Handle activation of the plugin
*/
public function activatePostman() {
- if (function_exists ( 'is_multisite' ) && is_multisite ()) {
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
// handle network activation
// from https://wordpress.org/support/topic/new-function-wp_get_sites?replies=11
-
// run the activation function for each blog id
- $old_blog = get_current_blog_id ();
+ $old_blog = get_current_blog_id();
// Get all blog ids
- $subsites = wp_get_sites ();
+ $subsites = wp_get_sites();
foreach ( $subsites as $subsite ) {
- $this->logger->trace ( 'multisite: switching to blog ' . $subsite ['blog_id'] );
- switch_to_blog ( $subsite ['blog_id'] );
- $this->handleOptionUpdates ();
- $this->addCapability ();
+ $this->logger->trace( 'multisite: switching to blog ' . $subsite ['blog_id'] );
+ switch_to_blog( $subsite ['blog_id'] );
+ $this->handleOptionUpdates();
+ $this->addCapability();
}
- switch_to_blog ( $old_blog );
+ switch_to_blog( $old_blog );
} else {
// handle single-site activation
- $this->handleOptionUpdates ();
- $this->addCapability ();
+ $this->handleOptionUpdates();
+ $this->addCapability();
}
+
+ $this->add_activation_redirect();
+ }
+
+ function add_activation_redirect() {
+
+ // Bail if activating from network, or bulk
+ if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
+ return; }
+
+ // Add the transient to redirect
+ set_transient( '_post_activation_redirect', true, 30 );
}
-
+
/**
* Handle deactivation of the plugin
*/
public function deactivatePostman() {
- if (function_exists ( 'is_multisite' ) && is_multisite ()) {
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
// handle network deactivation
// from https://wordpress.org/support/topic/new-function-wp_get_sites?replies=11
-
// run the deactivation function for each blog id
- $old_blog = get_current_blog_id ();
+ $old_blog = get_current_blog_id();
// Get all blog ids
- $subsites = wp_get_sites ();
+ $subsites = wp_get_sites();
foreach ( $subsites as $subsite ) {
- $this->logger->trace ( 'multisite: switching to blog ' . $subsite ['blog_id'] );
- switch_to_blog ( $subsite ['blog_id'] );
- $this->removeCapability ();
+ $this->logger->trace( 'multisite: switching to blog ' . $subsite ['blog_id'] );
+ switch_to_blog( $subsite ['blog_id'] );
+ $this->removeCapability();
}
- switch_to_blog ( $old_blog );
+ switch_to_blog( $old_blog );
} else {
// handle single-site deactivation
- $this->removeCapability ();
+ $this->removeCapability();
}
}
-
+
/**
* Add the capability to manage postman
*/
public function addCapability() {
- if ($this->logger->isDebug ()) {
- $this->logger->debug ( 'Adding admin capability' );
+ if ( $this->logger->isDebug() ) {
+ $this->logger->debug( 'Adding admin capability' );
}
// ref: https://codex.wordpress.org/Function_Reference/add_cap
// NB: This setting is saved to the database, so it might be better to run this on theme/plugin activation
-
// add the custom capability to the administrator role
- $role = get_role ( Postman::ADMINISTRATOR_ROLE_NAME );
- $role->add_cap ( Postman::MANAGE_POSTMAN_CAPABILITY_NAME );
+ $role = get_role( Postman::ADMINISTRATOR_ROLE_NAME );
+ $role->add_cap( Postman::MANAGE_POSTMAN_CAPABILITY_NAME );
}
-
+
/**
* Remove the capability to manage postman
*/
public function removeCapability() {
- if ($this->logger->isDebug ()) {
- $this->logger->debug ( 'Removing admin capability' );
+ if ( $this->logger->isDebug() ) {
+ $this->logger->debug( 'Removing admin capability' );
}
// ref: https://codex.wordpress.org/Function_Reference/add_cap
// NB: This setting is saved to the database, so it might be better to run this on theme/plugin activation
-
// remove the custom capability from the administrator role
- $role = get_role ( Postman::ADMINISTRATOR_ROLE_NAME );
- $role->remove_cap ( Postman::MANAGE_POSTMAN_CAPABILITY_NAME );
+ $role = get_role( Postman::ADMINISTRATOR_ROLE_NAME );
+ $role->remove_cap( Postman::MANAGE_POSTMAN_CAPABILITY_NAME );
}
-
+
/**
* Handle activation of plugin
*/
private function handleOptionUpdates() {
- $this->logger->debug ( "Activating plugin" );
+ $this->logger->debug( 'Activating plugin' );
// prior to version 0.2.5, $authOptions did not exist
- $authOptions = get_option ( 'postman_auth_token' );
- $options = get_option ( 'postman_options' );
- $postmanState = get_option ( 'postman_state' );
- if (empty ( $authOptions ) && ! (empty ( $options )) && ! empty ( $options ['access_token'] )) {
- $this->logger->debug ( "Upgrading database: copying Authorization token from postman_options to postman_auth_token" );
+ $authOptions = get_option( 'postman_auth_token' );
+ $options = get_option( 'postman_options' );
+ $postmanState = get_option( 'postman_state' );
+ if ( empty( $authOptions ) && ! (empty( $options )) && ! empty( $options ['access_token'] ) ) {
+ $this->logger->debug( 'Upgrading database: copying Authorization token from postman_options to postman_auth_token' );
// copy the variables from $options to $authToken
$authOptions ['access_token'] = $options ['access_token'];
$authOptions ['refresh_token'] = $options ['refresh_token'];
// there was a bug where we weren't setting the expiry time
- if (! empty ( $options ['auth_token_expires'] )) {
+ if ( ! empty( $options ['auth_token_expires'] ) ) {
$authOptions ['auth_token_expires'] = $options ['auth_token_expires'];
}
- update_option ( 'postman_auth_token', $authOptions );
+ update_option( 'postman_auth_token', $authOptions );
}
- if (! isset ( $options ['authorization_type'] ) && ! isset ( $options ['auth_type'] )) {
+ if ( ! isset( $options ['authorization_type'] ) && ! isset( $options ['auth_type'] ) ) {
// prior to 1.0.0, access tokens were saved in authOptions without an auth type
// prior to 0.2.5, access tokens were save in options without an auth type
// either way, only oauth2 was supported
- if (isset ( $authOptions ['access_token'] ) || isset ( $options ['access_token'] )) {
- $this->logger->debug ( "Upgrading database: setting authorization_type to 'oauth2'" );
+ if ( isset( $authOptions ['access_token'] ) || isset( $options ['access_token'] ) ) {
+ $this->logger->debug( "Upgrading database: setting authorization_type to 'oauth2'" );
$options ['authorization_type'] = 'oauth2';
- update_option ( 'postman_options', $options );
+ update_option( 'postman_options', $options );
}
}
- if (! isset ( $options ['enc_type'] )) {
+ if ( ! isset( $options ['enc_type'] ) ) {
// prior to 1.3, encryption type was combined with authentication type
- if (isset ( $options ['authorization_type'] )) {
- $this->logger->debug ( "Upgrading database: creating auth_type and enc_type from authorization_type" );
+ if ( isset( $options ['authorization_type'] ) ) {
+ $this->logger->debug( 'Upgrading database: creating auth_type and enc_type from authorization_type' );
$authType = $options ['authorization_type'];
- switch ($authType) {
+ switch ( $authType ) {
case 'none' :
$options ['auth_type'] = 'none';
$options ['enc_type'] = 'none';
@@ -152,81 +160,78 @@ class PostmanInstaller {
break;
default :
}
- update_option ( 'postman_options', $options );
+ update_option( 'postman_options', $options );
}
}
// prior to 1.3.3, the version identifier was not stored and the passwords were plaintext
- if (isset ( $options ['enc_type'] ) && ! (isset ( $options ['version'] ) || isset ( $postmanState ['version'] ))) {
- $this->logger->debug ( "Upgrading database: added plugin version and encoding password" );
+ if ( isset( $options ['enc_type'] ) && ! (isset( $options ['version'] ) || isset( $postmanState ['version'] )) ) {
+ $this->logger->debug( 'Upgrading database: added plugin version and encoding password' );
$options ['version'] = '1.3.3';
- if (isset ( $options ['basic_auth_password'] )) {
- $options ['basic_auth_password'] = base64_encode ( $options ['basic_auth_password'] );
+ if ( isset( $options ['basic_auth_password'] ) ) {
+ $options ['basic_auth_password'] = base64_encode( $options ['basic_auth_password'] );
}
- update_option ( 'postman_options', $options );
+ update_option( 'postman_options', $options );
}
// prior to 1.4.2, the transport was not identified and the auth token had no vendor
- if (isset ( $options ['auth_type'] ) && ! isset ( $options ['transport_type'] )) {
- $this->logger->debug ( "Upgrading database: added transport_type and vendor_name" );
+ if ( isset( $options ['auth_type'] ) && ! isset( $options ['transport_type'] ) ) {
+ $this->logger->debug( 'Upgrading database: added transport_type and vendor_name' );
$options ['transport_type'] = 'smtp';
- update_option ( 'postman_options', $options );
- if (isset ( $authOptions ['access_token'] ) && isset ( $options ['oauth_client_id'] )) {
+ update_option( 'postman_options', $options );
+ if ( isset( $authOptions ['access_token'] ) && isset( $options ['oauth_client_id'] ) ) {
// if there is a stored token..
- if (PostmanUtils::endsWith ( $options ['oauth_client_id'], 'googleusercontent.com' ))
- $authOptions ['vendor_name'] = 'google';
- else if (strlen ( $options ['oauth_client_id'] < strlen ( $options ['oauth_client_secret'] ) ))
+ if ( PostmanUtils::endsWith( $options ['oauth_client_id'], 'googleusercontent.com' ) ) {
+ $authOptions ['vendor_name'] = 'google'; } else if ( strlen( $options ['oauth_client_id'] < strlen( $options ['oauth_client_secret'] ) ) ) {
$authOptions ['vendor_name'] = 'microsoft';
- else
- $authOptions ['vendor_name'] = 'yahoo';
- update_option ( 'postman_auth_token', $authOptions );
+ } else { $authOptions ['vendor_name'] = 'yahoo'; }
+ update_option( 'postman_auth_token', $authOptions );
}
}
-
+
// for version 1.6.18, the envelope from was introduced
- if (! empty ( $options ['sender_email'] ) && empty ( $options ['envelope_sender'] )) {
- $this->logger->debug ( "Upgrading database: adding envelope_sender" );
+ if ( ! empty( $options ['sender_email'] ) && empty( $options ['envelope_sender'] ) ) {
+ $this->logger->debug( 'Upgrading database: adding envelope_sender' );
$options ['envelope_sender'] = $options ['sender_email'];
- update_option ( 'postman_options', $options );
+ update_option( 'postman_options', $options );
}
-
- if (isset ( $postmanState ['version'] ) && version_compare ( $postmanState ['version'], '1.7.0', '<' )) {
- if ($options ['mail_log_max_entries'] == 10) {
+
+ if ( isset( $postmanState ['version'] ) && version_compare( $postmanState ['version'], '1.7.0', '<' ) ) {
+ if ( $options ['mail_log_max_entries'] == 10 ) {
$options ['mail_log_max_entries'] = 250;
}
- $postmanStats = get_option ( 'postman_stats' );
+ $postmanStats = get_option( 'postman_stats' );
$stateCleared = false;
- if (! isset ( $postmanState ['delivery_success_total'] ) && isset ( $postmanStats ['delivery_success_total'] )) {
+ if ( ! isset( $postmanState ['delivery_success_total'] ) && isset( $postmanStats ['delivery_success_total'] ) ) {
$postmanState ['delivery_success_total'] = $postmanStats ['delivery_success_total'];
$stateCleared = true;
}
- if (! isset ( $postmanState ['delivery_fail_total'] ) && isset ( $postmanStats ['delivery_fail_total'] )) {
+ if ( ! isset( $postmanState ['delivery_fail_total'] ) && isset( $postmanStats ['delivery_fail_total'] ) ) {
$postmanState ['delivery_fail_total'] = $postmanStats ['delivery_fail_total'];
$stateCleared = true;
}
- if ($stateCleared) {
- delete_option ( 'postman_stats' );
+ if ( $stateCleared ) {
+ delete_option( 'postman_stats' );
}
}
-
+
// can we create a tmp file? - this code is duplicated in InputSanitizer
- PostmanUtils::deleteLockFile ();
- $lockSuccess = PostmanUtils::createLockFile ();
+ PostmanUtils::deleteLockFile();
+ $lockSuccess = PostmanUtils::createLockFile();
// &= does not work as expected in my PHP
- $lockSuccess = $lockSuccess && PostmanUtils::deleteLockFile ();
+ $lockSuccess = $lockSuccess && PostmanUtils::deleteLockFile();
$postmanState ['locking_enabled'] = $lockSuccess;
-
+
// always update the version number
- if (! isset ( $postmanState ['install_date'] )) {
- $this->logger->debug ( "Upgrading database: adding install_date" );
- $postmanState ['install_date'] = time ();
+ if ( ! isset( $postmanState ['install_date'] ) ) {
+ $this->logger->debug( 'Upgrading database: adding install_date' );
+ $postmanState ['install_date'] = time();
}
- $pluginData = apply_filters ( 'postman_get_plugin_metadata', null );
+ $pluginData = apply_filters( 'postman_get_plugin_metadata', null );
$postmanState ['version'] = $pluginData ['version'];
- update_option ( 'postman_state', $postmanState );
- //
- delete_option ( 'postman_session' );
-
+ update_option( 'postman_state', $postmanState );
+ delete_option( 'postman_session' );
+
// reload options
- PostmanState::getInstance ()->reload ();
- PostmanOptions::getInstance ()->reload ();
+ PostmanState::getInstance()->reload();
+ PostmanOptions::getInstance()->reload();
}
}