<?php 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' => WPFunctions::get()->__('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.23 KB | 0644 |
|
Activator.php | File | 2.22 KB | 0644 |
|
AssetsLoader.php | File | 801 B | 0644 |
|
Capabilities.php | File | 2.8 KB | 0644 |
|
Changelog.php | File | 3.9 KB | 0644 |
|
Database.php | File | 2.78 KB | 0644 |
|
DatabaseInitializer.php | File | 601 B | 0644 |
|
DeferredAdminNotices.php | File | 1.07 KB | 0644 |
|
Env.php | File | 3.93 KB | 0644 |
|
Hooks.php | File | 10.32 KB | 0644 |
|
HooksWooCommerce.php | File | 3.97 KB | 0644 |
|
Initializer.php | File | 9.92 KB | 0644 |
|
Installer.php | File | 2.69 KB | 0644 |
|
Localizer.php | File | 1.15 KB | 0644 |
|
MP2Migrator.php | File | 35.34 KB | 0644 |
|
Menu.php | File | 14.04 KB | 0644 |
|
Migrator.php | File | 25.73 KB | 0644 |
|
PersonalDataErasers.php | File | 622 B | 0644 |
|
PersonalDataExporters.php | File | 2.64 KB | 0644 |
|
PluginActivatedHook.php | File | 682 B | 0644 |
|
Populator.php | File | 29.67 KB | 0644 |
|
PrivacyPolicy.php | File | 3.37 KB | 0644 |
|
Renderer.php | File | 3.95 KB | 0644 |
|
RendererFactory.php | File | 474 B | 0644 |
|
RequirementsChecker.php | File | 4.3 KB | 0644 |
|
Router.php | File | 846 B | 0644 |
|
ServicesChecker.php | File | 4.93 KB | 0644 |
|
Shortcodes.php | File | 6.22 KB | 0644 |
|
Updater.php | File | 1.71 KB | 0644 |
|
index.php | File | 0 B | 0644 |
|