initial
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Users;
|
||||
|
||||
use Gravity_Forms\Gravity_SMTP\Environment\Environment_Details;
|
||||
|
||||
/**
|
||||
* Handles integration with the Members plugin for capability management.
|
||||
*
|
||||
* @since 2.1.1
|
||||
*/
|
||||
class Members_Integration {
|
||||
|
||||
/**
|
||||
* Register the Gravity SMTP capabilities group with the Members plugin.
|
||||
*
|
||||
* @since 2.1.1
|
||||
* @access public
|
||||
*/
|
||||
public function register() {
|
||||
|
||||
if ( $this->is_members_page() ) {
|
||||
add_action( 'admin_enqueue_scripts', function () {
|
||||
$version = ( new Environment_Details() )->get_version();
|
||||
$min = ( new Environment_Details() )->get_min();
|
||||
wp_register_style( 'gravitysmtp_styles_members_icons', \Gravity_Forms\Gravity_SMTP\Gravity_SMTP::get_base_url() . "/assets/css/dist/admin-icons{$min}.css", null, $version );
|
||||
wp_enqueue_style( 'gravitysmtp_styles_members_icons' );
|
||||
} );
|
||||
}
|
||||
if ( function_exists( 'members_register_cap_group' ) && function_exists( 'members_register_cap' ) ) {
|
||||
add_action( 'members_register_cap_groups', array( $this, 'members_register_cap_group' ), 97 );
|
||||
add_action( 'members_register_caps', array( $this, 'members_register_caps' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the Gravity SMTP capabilities group with the Members plugin.
|
||||
*
|
||||
* @since 2.1.1
|
||||
* @access public
|
||||
*/
|
||||
public function members_register_cap_group() {
|
||||
members_register_cap_group(
|
||||
'gravitysmtp',
|
||||
array(
|
||||
'label' => esc_html__( 'Gravity SMTP', 'gravitysmtp' ),
|
||||
'icon' => 'gravity-admin-icon gravity-admin-icon--gravitysmtp-logo',
|
||||
'caps' => array(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the Gravity SMTP capabilities and their human readable labels with the Members plugin.
|
||||
*
|
||||
* @since 2.1.1
|
||||
* @access public
|
||||
*/
|
||||
public function members_register_caps() {
|
||||
foreach ( $this->get_members_caps() as $cap => $label ) {
|
||||
members_register_cap(
|
||||
$cap,
|
||||
array(
|
||||
'label' => $label,
|
||||
'group' => 'gravitysmtp',
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the capabilities for Members plugin integration.
|
||||
*
|
||||
* @since 2.1.1
|
||||
* @access private
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function get_members_caps() {
|
||||
return array(
|
||||
Roles::DELETE_DEBUG_LOG => esc_html__( 'Delete Debug Log', 'gravitysmtp' ),
|
||||
Roles::DELETE_EMAIL_LOG => esc_html__( 'Delete Email Log', 'gravitysmtp' ),
|
||||
Roles::DELETE_EMAIL_LOG_DETAILS => esc_html__( 'Delete Email Log Details', 'gravitysmtp' ),
|
||||
Roles::EDIT_ALERTS => esc_html__( 'Edit Alerts', 'gravitysmtp' ),
|
||||
Roles::EDIT_ALERTS_SLACK_SETTINGS => esc_html__( 'Edit Alerts Slack Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_ALERTS_TWILIO_SETTINGS => esc_html__( 'Edit Alerts Twilio Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_DEBUG_LOG => esc_html__( 'Edit Debug Log', 'gravitysmtp' ),
|
||||
Roles::EDIT_DEBUG_LOG_SETTINGS => esc_html__( 'Edit Debug Log Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_EMAIL_LOG => esc_html__( 'Edit Email Log', 'gravitysmtp' ),
|
||||
Roles::EDIT_EMAIL_LOG_DETAILS => esc_html__( 'Edit Email Log Details', 'gravitysmtp' ),
|
||||
Roles::EDIT_EMAIL_LOG_SETTINGS => esc_html__( 'Edit Email Log Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_EMAIL_MANAGEMENT_SETTINGS => esc_html__( 'Edit Email Management Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_GENERAL_SETTINGS => esc_html__( 'Edit General Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_INTEGRATIONS => esc_html__( 'Edit Integrations', 'gravitysmtp' ),
|
||||
Roles::EDIT_LICENSE_KEY => esc_html__( 'Edit License Key', 'gravitysmtp' ),
|
||||
Roles::EDIT_NOTIFICATIONS_SETTINGS => esc_html__( 'Edit Notifications Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_TEST_MODE => esc_html__( 'Edit Test Mode', 'gravitysmtp' ),
|
||||
Roles::EDIT_UNINSTALL => esc_html__( 'Edit Uninstall', 'gravitysmtp' ),
|
||||
Roles::EDIT_USAGE_ANALYTICS => esc_html__( 'Edit Usage Analytics', 'gravitysmtp' ),
|
||||
Roles::VIEW_ALERTS => esc_html__( 'View Alerts', 'gravitysmtp' ),
|
||||
Roles::VIEW_ALERTS_SLACK_SETTINGS => esc_html__( 'View Alerts Slack Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_ALERTS_TWILIO_SETTINGS => esc_html__( 'View Alerts Twilio Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_DASHBOARD => esc_html__( 'View Dashboard', 'gravitysmtp' ),
|
||||
Roles::VIEW_DEBUG_LOG => esc_html__( 'View Debug Log', 'gravitysmtp' ),
|
||||
Roles::VIEW_DEBUG_LOG_SETTINGS => esc_html__( 'View Debug Log Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_LOG => esc_html__( 'View Email Log', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_LOG_DETAILS => esc_html__( 'View Email Log Details', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_LOG_PREVIEW => esc_html__( 'View Email Log Preview', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_LOG_SETTINGS => esc_html__( 'View Email Log Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_MANAGEMENT_SETTINGS => esc_html__( 'View Email Management Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_GENERAL_SETTINGS => esc_html__( 'View General Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_INTEGRATIONS => esc_html__( 'View Integrations', 'gravitysmtp' ),
|
||||
Roles::VIEW_LICENSE_KEY => esc_html__( 'View License Key', 'gravitysmtp' ),
|
||||
Roles::VIEW_NOTIFICATIONS_SETTINGS => esc_html__( 'View Notifications Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_TEST_MODE => esc_html__( 'View Test Mode', 'gravitysmtp' ),
|
||||
Roles::VIEW_TOOLS => esc_html__( 'View Tools', 'gravitysmtp' ),
|
||||
Roles::VIEW_TOOLS_SENDATEST => esc_html__( 'View Tools Send a Test', 'gravitysmtp' ),
|
||||
Roles::VIEW_TOOLS_SYSTEMREPORT => esc_html__( 'View Tools System Report', 'gravitysmtp' ),
|
||||
Roles::VIEW_UNINSTALL => esc_html__( 'View Uninstall', 'gravitysmtp' ),
|
||||
Roles::VIEW_USAGE_ANALYTICS => esc_html__( 'View Usage Analytics', 'gravitysmtp' ),
|
||||
Roles::VIEW_EMAIL_SUPPRESSION_SETTINGS => esc_html__( 'View Email Suppression Settings', 'gravitysmtp' ),
|
||||
Roles::EDIT_EMAIL_SUPPRESSION_SETTINGS => esc_html__( 'Edit Email Suppression Settings', 'gravitysmtp' ),
|
||||
Roles::VIEW_EXPERIMENTAL_FEATURES => esc_html__( 'View Experimental Features', 'gravitysmtp' ),
|
||||
Roles::EDIT_EXPERIMENTAL_FEATURES => esc_html__( 'Edit Experimental Features', 'gravitysmtp' ),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current page is a Members plugin page.
|
||||
*
|
||||
* @since 2.1.1
|
||||
* @access private
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function is_members_page() {
|
||||
$page = filter_input( INPUT_GET, 'page' );
|
||||
|
||||
if ( ! is_string( $page ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$page = htmlspecialchars( $page );
|
||||
|
||||
return strncmp( $page, 'roles', 5 ) === 0 || strncmp( $page, 'members', 7 ) === 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Users;
|
||||
|
||||
class Roles {
|
||||
|
||||
const DELETE_DEBUG_LOG = 'gravitysmtp_delete_debug_log';
|
||||
const DELETE_EMAIL_LOG = 'gravitysmtp_delete_email_log';
|
||||
const DELETE_EMAIL_LOG_DETAILS = 'gravitysmtp_delete_email_log_details';
|
||||
const EDIT_ALERTS = 'gravitysmtp_edit_alerts';
|
||||
const EDIT_ALERTS_SLACK_SETTINGS = 'gravitysmtp_edit_alerts_slack_settings';
|
||||
const EDIT_ALERTS_TWILIO_SETTINGS = 'gravitysmtp_edit_alerts_twilio_settings';
|
||||
const EDIT_DEBUG_LOG = 'gravitysmtp_edit_debug_log';
|
||||
const EDIT_DEBUG_LOG_SETTINGS = 'gravitysmtp_edit_debug_log_settings';
|
||||
const EDIT_EMAIL_LOG = 'gravitysmtp_edit_email_log';
|
||||
const EDIT_EMAIL_LOG_DETAILS = 'gravitysmtp_edit_email_log_details';
|
||||
const EDIT_EMAIL_LOG_SETTINGS = 'gravitysmtp_edit_email_log_settings';
|
||||
const EDIT_EMAIL_MANAGEMENT_SETTINGS = 'gravitysmtp_edit_email_management_settings';
|
||||
const EDIT_GENERAL_SETTINGS = 'gravitysmtp_edit_general_settings';
|
||||
const EDIT_INTEGRATIONS = 'gravitysmtp_edit_integrations';
|
||||
const EDIT_LICENSE_KEY = 'gravitysmtp_edit_license_key';
|
||||
const EDIT_NOTIFICATIONS_SETTINGS = 'gravitysmtp_edit_notifications_settings';
|
||||
const EDIT_TEST_MODE = 'gravitysmtp_edit_test_mode';
|
||||
const EDIT_UNINSTALL = 'gravitysmtp_edit_uninstall';
|
||||
const EDIT_USAGE_ANALYTICS = 'gravitysmtp_edit_usage_analytics';
|
||||
const VIEW_ALERTS = 'gravitysmtp_view_alerts';
|
||||
const VIEW_ALERTS_SLACK_SETTINGS = 'gravitysmtp_view_alerts_slack_settings';
|
||||
const VIEW_ALERTS_TWILIO_SETTINGS = 'gravitysmtp_view_alerts_twilio_settings';
|
||||
const VIEW_DASHBOARD = 'gravitysmtp_view_dashboard';
|
||||
const VIEW_DEBUG_LOG = 'gravitysmtp_view_debug_log';
|
||||
const VIEW_DEBUG_LOG_SETTINGS = 'gravitysmtp_view_debug_log_settings';
|
||||
const VIEW_EMAIL_LOG = 'gravitysmtp_view_email_log';
|
||||
const VIEW_EMAIL_LOG_DETAILS = 'gravitysmtp_view_email_log_details';
|
||||
const VIEW_EMAIL_LOG_PREVIEW = 'gravitysmtp_view_email_log_preview';
|
||||
const VIEW_EMAIL_LOG_SETTINGS = 'gravitysmtp_view_email_log_settings';
|
||||
const VIEW_EMAIL_MANAGEMENT_SETTINGS = 'gravitysmtp_view_email_management_settings';
|
||||
const VIEW_GENERAL_SETTINGS = 'gravitysmtp_view_general_settings';
|
||||
const VIEW_INTEGRATIONS = 'gravitysmtp_view_integrations';
|
||||
const VIEW_LICENSE_KEY = 'gravitysmtp_view_license_key';
|
||||
const VIEW_NOTIFICATIONS_SETTINGS = 'gravitysmtp_view_notifications_settings';
|
||||
const VIEW_TEST_MODE = 'gravitysmtp_view_test_mode';
|
||||
const VIEW_TOOLS = 'gravitysmtp_view_tools';
|
||||
const VIEW_TOOLS_SENDATEST = 'gravitysmtp_view_tools_sendatest';
|
||||
const VIEW_TOOLS_SYSTEMREPORT = 'gravitysmtp_view_tools_systemreport';
|
||||
const VIEW_UNINSTALL = 'gravitysmtp_view_uninstall';
|
||||
const VIEW_USAGE_ANALYTICS = 'gravitysmtp_view_usage_analytics';
|
||||
|
||||
const VIEW_EMAIL_SUPPRESSION_SETTINGS = 'gravitysmtp_view_email_suppression_settings';
|
||||
const EDIT_EMAIL_SUPPRESSION_SETTINGS = 'gravitysmtp_edit_email_suppression_settings';
|
||||
|
||||
const VIEW_EXPERIMENTAL_FEATURES = 'gravitysmtp_view_experimental_features';
|
||||
const EDIT_EXPERIMENTAL_FEATURES = 'gravitysmtp_edit_experimental_features';
|
||||
|
||||
private $caps = array(
|
||||
self::DELETE_DEBUG_LOG,
|
||||
self::DELETE_EMAIL_LOG,
|
||||
self::DELETE_EMAIL_LOG,
|
||||
self::DELETE_EMAIL_LOG_DETAILS,
|
||||
self::EDIT_ALERTS,
|
||||
self::EDIT_ALERTS_SLACK_SETTINGS,
|
||||
self::EDIT_ALERTS_TWILIO_SETTINGS,
|
||||
self::EDIT_DEBUG_LOG,
|
||||
self::EDIT_DEBUG_LOG_SETTINGS,
|
||||
self::EDIT_EMAIL_LOG,
|
||||
self::EDIT_EMAIL_LOG_DETAILS,
|
||||
self::EDIT_EMAIL_LOG_SETTINGS,
|
||||
self::EDIT_EMAIL_MANAGEMENT_SETTINGS,
|
||||
self::EDIT_GENERAL_SETTINGS,
|
||||
self::EDIT_INTEGRATIONS,
|
||||
self::EDIT_LICENSE_KEY,
|
||||
self::EDIT_NOTIFICATIONS_SETTINGS,
|
||||
self::EDIT_TEST_MODE,
|
||||
self::EDIT_UNINSTALL,
|
||||
self::EDIT_USAGE_ANALYTICS,
|
||||
self::VIEW_ALERTS,
|
||||
self::VIEW_ALERTS_SLACK_SETTINGS,
|
||||
self::VIEW_ALERTS_TWILIO_SETTINGS,
|
||||
self::VIEW_DASHBOARD,
|
||||
self::VIEW_DEBUG_LOG,
|
||||
self::VIEW_DEBUG_LOG_SETTINGS,
|
||||
self::VIEW_EMAIL_LOG,
|
||||
self::VIEW_EMAIL_LOG_DETAILS,
|
||||
self::VIEW_EMAIL_LOG_PREVIEW,
|
||||
self::VIEW_EMAIL_LOG_SETTINGS,
|
||||
self::VIEW_EMAIL_MANAGEMENT_SETTINGS,
|
||||
self::VIEW_GENERAL_SETTINGS,
|
||||
self::VIEW_INTEGRATIONS,
|
||||
self::VIEW_LICENSE_KEY,
|
||||
self::VIEW_NOTIFICATIONS_SETTINGS,
|
||||
self::VIEW_TEST_MODE,
|
||||
self::VIEW_TOOLS,
|
||||
self::VIEW_TOOLS_SENDATEST,
|
||||
self::VIEW_TOOLS_SYSTEMREPORT,
|
||||
self::VIEW_EMAIL_SUPPRESSION_SETTINGS,
|
||||
self::EDIT_EMAIL_SUPPRESSION_SETTINGS,
|
||||
self::VIEW_UNINSTALL,
|
||||
self::VIEW_USAGE_ANALYTICS,
|
||||
self::VIEW_EXPERIMENTAL_FEATURES,
|
||||
self::EDIT_EXPERIMENTAL_FEATURES,
|
||||
);
|
||||
|
||||
public function register() {
|
||||
$admin = get_role( 'administrator' );
|
||||
foreach ( $this->caps as $cap ) {
|
||||
// this ensures that capability is not re-granted after having been denied via Members plugin
|
||||
if ( ! array_key_exists( $cap, $admin->capabilities ) ) {
|
||||
$admin->add_cap( $cap );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Users;
|
||||
|
||||
use Gravity_Forms\Gravity_Tools\Service_Container;
|
||||
use Gravity_Forms\Gravity_Tools\Service_Provider;
|
||||
|
||||
class Users_Service_Provider extends Service_Provider {
|
||||
|
||||
const ROLES = 'roles';
|
||||
const MEMBERS_INTEGRATION = 'members_integration';
|
||||
|
||||
public function register( \Gravity_Forms\Gravity_Tools\Service_Container $container ) {
|
||||
$container->add( self::ROLES, function() {
|
||||
return new Roles();
|
||||
});
|
||||
|
||||
$container->add( self::MEMBERS_INTEGRATION, function() {
|
||||
return new Members_Integration();
|
||||
});
|
||||
}
|
||||
|
||||
public function init( \Gravity_Forms\Gravity_Tools\Service_Container $container ) {
|
||||
$container->get( self::ROLES )->register();
|
||||
$container->get( self::MEMBERS_INTEGRATION )->register();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user