<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Config; if (!defined('ABSPATH')) exit; use MailPoet\WP\Functions as WPFunctions; use WP_Role; class Capabilities { const MEMBERS_CAP_GROUP_NAME = 'mailpoet'; private $renderer = null; /** @var WPFunctions */ private $wp; /** @var AccessControl */ private $accessControl; public function __construct( $renderer = null, WPFunctions $wp = null ) { if ($renderer !== null) { $this->renderer = $renderer; } if ($wp == null) { $wp = new WPFunctions; } $this->wp = $wp; $this->accessControl = new AccessControl; } public function init() { $this->setupMembersCapabilities(); } public function setupWPCapabilities() { $permissions = $this->accessControl->getDefaultPermissions(); $roleObjects = []; foreach ($permissions as $name => $roles) { foreach ($roles as $role) { if (!isset($roleObjects[$role])) { $roleObjects[$role] = WPFunctions::get()->getRole($role); } if (!$roleObjects[$role] instanceof WP_Role) continue; $roleObjects[$role]->add_cap($name); } } } public function removeWPCapabilities() { $permissions = $this->accessControl->getDefaultPermissions(); $roleObjects = []; foreach ($permissions as $name => $roles) { foreach ($roles as $role) { if (!isset($roleObjects[$role])) { $roleObjects[$role] = WPFunctions::get()->getRole($role); } if (!$roleObjects[$role] instanceof WP_Role) continue; $roleObjects[$role]->remove_cap($name); } } } public function setupMembersCapabilities() { $this->wp->addAction('admin_enqueue_scripts', [$this, 'enqueueMembersStyles']); $this->wp->addAction('members_register_cap_groups', [$this, 'registerMembersCapGroup']); $this->wp->addAction('members_register_caps', [$this, 'registerMembersCapabilities']); } public function enqueueMembersStyles() { WPFunctions::get()->wpEnqueueStyle( 'mailpoet-admin-global', Env::$assetsUrl . '/dist/css/' . $this->renderer->getCssAsset('mailpoet-admin.css') ); } public function registerMembersCapGroup() { members_register_cap_group( self::MEMBERS_CAP_GROUP_NAME, [ 'label' => __('MailPoet', 'mailpoet'), 'caps' => [], 'icon' => 'mailpoet-icon-logo', 'priority' => 30, ] ); } public function registerMembersCapabilities() { $permissions = $this->accessControl->getPermissionLabels(); foreach ($permissions as $name => $label) { $this->registerMembersCapability($name, $label); } } public function registerMembersCapability($name, $label) { members_register_cap( $name, [ 'label' => $label, 'group' => self::MEMBERS_CAP_GROUP_NAME, ] ); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
PopulatorData | Folder | 0755 |
|
|
AccessControl.php | File | 3.89 KB | 0644 |
|
Activator.php | File | 4.94 KB | 0644 |
|
AssetsLoader.php | File | 1.68 KB | 0644 |
|
Capabilities.php | File | 2.87 KB | 0644 |
|
Changelog.php | File | 5.04 KB | 0644 |
|
DeactivationPoll.php | File | 1.43 KB | 0644 |
|
DeferredAdminNotices.php | File | 1.16 KB | 0644 |
|
Env.php | File | 4.16 KB | 0644 |
|
Hooks.php | File | 20.06 KB | 0644 |
|
HooksWooCommerce.php | File | 6.76 KB | 0644 |
|
Initializer.php | File | 16.58 KB | 0644 |
|
Installer.php | File | 3.12 KB | 0644 |
|
Localizer.php | File | 2.49 KB | 0644 |
|
Menu.php | File | 23.54 KB | 0644 |
|
PersonalDataErasers.php | File | 769 B | 0644 |
|
PersonalDataExporters.php | File | 3.22 KB | 0644 |
|
PluginActivatedHook.php | File | 776 B | 0644 |
|
Populator.php | File | 23.37 KB | 0644 |
|
PrivacyPolicy.php | File | 4.53 KB | 0644 |
|
Renderer.php | File | 4.34 KB | 0644 |
|
RendererFactory.php | File | 670 B | 0644 |
|
RequirementsChecker.php | File | 3.73 KB | 0644 |
|
Router.php | File | 1006 B | 0644 |
|
ServicesChecker.php | File | 7.04 KB | 0644 |
|
Shortcodes.php | File | 8.63 KB | 0644 |
|
SilentUpgraderSkin.php | File | 570 B | 0644 |
|
SubscriberChangesNotifier.php | File | 5 KB | 0644 |
|
TranslationUpdater.php | File | 7.92 KB | 0644 |
|
TwigEnvironment.php | File | 694 B | 0644 |
|
TwigFileSystemCache.php | File | 853 B | 0644 |
|
Updater.php | File | 1.97 KB | 0644 |
|
index.php | File | 6 B | 0644 |
|