cleanup permissions related classes
This commit is contained in:
@ -18,7 +18,7 @@ textarea.parsley-error
|
||||
list-style-type none
|
||||
font-size 0.9em
|
||||
line-height 0.9em
|
||||
color: #B94A48
|
||||
color #B94A48
|
||||
opacity 0
|
||||
transition all .3s ease-in
|
||||
-o-transition all .3s ease-in
|
||||
|
@ -33,7 +33,6 @@ class Initializer {
|
||||
$this->setupRenderer();
|
||||
$this->setupLocalizer();
|
||||
$this->setupMenu();
|
||||
$this->setupPermissions();
|
||||
$this->setupAnalytics();
|
||||
$this->setupChangelog();
|
||||
$this->setupShortcodes();
|
||||
@ -146,11 +145,6 @@ class Initializer {
|
||||
$widget->init();
|
||||
}
|
||||
|
||||
function setupPermissions() {
|
||||
$permissions = new Permissions();
|
||||
$permissions->init();
|
||||
}
|
||||
|
||||
function setupChangelog() {
|
||||
$changelog = new Changelog();
|
||||
$changelog->init();
|
||||
|
@ -11,7 +11,6 @@ use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
|
||||
use MailPoet\Settings\Hosts;
|
||||
use MailPoet\Settings\Pages;
|
||||
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
|
||||
use MailPoet\Util\Permissions;
|
||||
use MailPoet\Listing;
|
||||
use MailPoet\WP\DateTime;
|
||||
|
||||
@ -259,7 +258,6 @@ class Menu {
|
||||
'pages' => Pages::getAll(),
|
||||
'flags' => $flags,
|
||||
'current_user' => wp_get_current_user(),
|
||||
'permissions' => Permissions::getAll(),
|
||||
'hosts' => array(
|
||||
'web' => Hosts::getWebHosts(),
|
||||
'smtp' => Hosts::getSMTPHosts()
|
||||
|
@ -1,43 +0,0 @@
|
||||
<?php
|
||||
namespace MailPoet\Config;
|
||||
|
||||
class Permissions {
|
||||
function __construct() {
|
||||
}
|
||||
|
||||
function init() {
|
||||
add_action(
|
||||
'admin_init',
|
||||
array($this, 'setup')
|
||||
);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
// administrative roles
|
||||
$roles = array('administrator', 'super_admin');
|
||||
|
||||
// mailpoet capabilities
|
||||
$capabilities = array(
|
||||
'mailpoet_newsletters',
|
||||
'mailpoet_newsletter_styles',
|
||||
'mailpoet_subscribers',
|
||||
'mailpoet_settings',
|
||||
'mailpoet_statistics'
|
||||
);
|
||||
|
||||
foreach($roles as $role_key) {
|
||||
// get role based on role key
|
||||
$role = get_role($role_key);
|
||||
|
||||
// if the role doesn't exist, skip it
|
||||
if($role !== null) {
|
||||
// add capability
|
||||
foreach($capabilities as $capability) {
|
||||
if(!$role->has_cap($capability)) {
|
||||
$role->add_cap($capability);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<?php
|
||||
namespace MailPoet\Router;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
class Permissions {
|
||||
function __construct() {
|
||||
}
|
||||
|
||||
function set($permissions = array()) {
|
||||
return \MailPoet\Util\Permissions::set($permissions);
|
||||
}
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
<?php
|
||||
namespace MailPoet\Util;
|
||||
|
||||
class Permissions {
|
||||
static function getCapabilities() {
|
||||
$capabilities = array(
|
||||
'mailpoet_newsletters' =>
|
||||
__('Who can create newsletters?'),
|
||||
'mailpoet_newsletter_styles' =>
|
||||
__('Who can see the Styles tab in the visual editor?'),
|
||||
'mailpoet_subscribers' =>
|
||||
__('Who can manage subscribers?'),
|
||||
'mailpoet_settings' =>
|
||||
__("Who can change MailPoet's settings?")
|
||||
);
|
||||
$capabilities = apply_filters('mailpoet_capabilities', $capabilities);
|
||||
|
||||
return $capabilities;
|
||||
}
|
||||
|
||||
static function getRoles() {
|
||||
$roles = array();
|
||||
|
||||
global $wp_roles;
|
||||
$editable_roles = apply_filters('editable_roles', $wp_roles->roles);
|
||||
foreach($editable_roles as $role => $role_data) {
|
||||
$roles[$role] = translate_user_role($role_data['name']);
|
||||
}
|
||||
|
||||
return $roles;
|
||||
}
|
||||
|
||||
static function getAll() {
|
||||
$roles = static::getRoles();
|
||||
$capabilities = static::getCapabilities();
|
||||
|
||||
// go over each capability
|
||||
foreach($capabilities as $capability => $label) {
|
||||
$capability_roles = array();
|
||||
// go over each role and check permission
|
||||
foreach($roles as $role_key => $role_data) {
|
||||
// get role object based on role key
|
||||
$role = get_role($role_key);
|
||||
|
||||
// assign role capability
|
||||
$capability_roles[$role_key] = array(
|
||||
'capability' => $capability,
|
||||
'is_capable' => (
|
||||
in_array($role_key, array('administrator', 'super_admin'))
|
||||
|| ($role->has_cap($capability))
|
||||
),
|
||||
'is_disabled' =>(
|
||||
in_array($role_key, array('administrator', 'super_admin'))
|
||||
)
|
||||
);
|
||||
}
|
||||
$capabilities[$capability] = array(
|
||||
'label' => $label,
|
||||
'roles' => $capability_roles
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'roles' => $roles,
|
||||
'capabilities' => $capabilities
|
||||
);
|
||||
}
|
||||
|
||||
static function set($permissions = array()) {
|
||||
if(empty($permissions)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($permissions as $permission) {
|
||||
// ignore administrator & superadmin roles
|
||||
if(in_array(
|
||||
$permission['role'],
|
||||
array('administrator', 'superadmin'))
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// get role
|
||||
$role = get_role($permission['role']);
|
||||
if((bool)$permission['is_capable'] === true) {
|
||||
// add capability to role
|
||||
$role->add_cap($permission['capability']);
|
||||
} else {
|
||||
// remove capability to role
|
||||
if($role->has_cap($permission['capability'])) {
|
||||
$role->remove_cap($permission['capability']);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user