This commit is contained in:
2026-07-02 15:54:39 -06:00
commit 9883323161
17470 changed files with 4470592 additions and 0 deletions
@@ -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();
}
}