cleanup permissions related classes

This commit is contained in:
Jonathan Labreuille
2016-07-07 15:49:03 +02:00
parent a88017400b
commit e7ee356f90
6 changed files with 1 additions and 162 deletions

View File

@ -18,7 +18,7 @@ textarea.parsley-error
list-style-type none list-style-type none
font-size 0.9em font-size 0.9em
line-height 0.9em line-height 0.9em
color: #B94A48 color #B94A48
opacity 0 opacity 0
transition all .3s ease-in transition all .3s ease-in
-o-transition all .3s ease-in -o-transition all .3s ease-in

View File

@ -33,7 +33,6 @@ class Initializer {
$this->setupRenderer(); $this->setupRenderer();
$this->setupLocalizer(); $this->setupLocalizer();
$this->setupMenu(); $this->setupMenu();
$this->setupPermissions();
$this->setupAnalytics(); $this->setupAnalytics();
$this->setupChangelog(); $this->setupChangelog();
$this->setupShortcodes(); $this->setupShortcodes();
@ -146,11 +145,6 @@ class Initializer {
$widget->init(); $widget->init();
} }
function setupPermissions() {
$permissions = new Permissions();
$permissions->init();
}
function setupChangelog() { function setupChangelog() {
$changelog = new Changelog(); $changelog = new Changelog();
$changelog->init(); $changelog->init();

View File

@ -11,7 +11,6 @@ use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
use MailPoet\Settings\Hosts; use MailPoet\Settings\Hosts;
use MailPoet\Settings\Pages; use MailPoet\Settings\Pages;
use MailPoet\Subscribers\ImportExport\ImportExportFactory; use MailPoet\Subscribers\ImportExport\ImportExportFactory;
use MailPoet\Util\Permissions;
use MailPoet\Listing; use MailPoet\Listing;
use MailPoet\WP\DateTime; use MailPoet\WP\DateTime;
@ -259,7 +258,6 @@ class Menu {
'pages' => Pages::getAll(), 'pages' => Pages::getAll(),
'flags' => $flags, 'flags' => $flags,
'current_user' => wp_get_current_user(), 'current_user' => wp_get_current_user(),
'permissions' => Permissions::getAll(),
'hosts' => array( 'hosts' => array(
'web' => Hosts::getWebHosts(), 'web' => Hosts::getWebHosts(),
'smtp' => Hosts::getSMTPHosts() 'smtp' => Hosts::getSMTPHosts()

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}