permissions = self::getDefaultPermissions(); $this->user_roles = $this->getUserRoles(); $this->user_capabilities = $this->getUserCapabilities(); } static function getDefaultPermissions() { return array( self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPHooks::applyFilters( 'mailpoet_permission_access_plugin_admin', array( 'administrator', 'editor' ) ), self::PERMISSION_MANAGE_SETTINGS => WPHooks::applyFilters( 'mailpoet_permission_manage_settings', array( 'administrator' ) ), self::PERMISSION_MANAGE_EMAILS => WPHooks::applyFilters( 'mailpoet_permission_manage_emails', array( 'administrator', 'editor' ) ), self::PERMISSION_MANAGE_SUBSCRIBERS => WPHooks::applyFilters( 'mailpoet_permission_manage_subscribers', array( 'administrator' ) ), self::PERMISSION_MANAGE_FORMS => WPHooks::applyFilters( 'mailpoet_permission_manage_forms', array( 'administrator' ) ), self::PERMISSION_MANAGE_SEGMENTS => WPHooks::applyFilters( 'mailpoet_permission_manage_segments', array( 'administrator' ) ), ); } static function getPermissionLabels() { return array( self::PERMISSION_ACCESS_PLUGIN_ADMIN => __('Admin menu item', 'mailpoet'), self::PERMISSION_MANAGE_SETTINGS => __('Manage settings', 'mailpoet'), self::PERMISSION_MANAGE_EMAILS => __('Manage emails', 'mailpoet'), self::PERMISSION_MANAGE_SUBSCRIBERS => __('Manage subscribers', 'mailpoet'), self::PERMISSION_MANAGE_FORMS => __('Manage forms', 'mailpoet'), self::PERMISSION_MANAGE_SEGMENTS => __('Manage segments', 'mailpoet'), ); } function getUserRoles() { $user = wp_get_current_user(); return $user->roles; } function getUserCapabilities() { $user = wp_get_current_user(); return array_keys($user->allcaps); } function getUserFirstCapability() { return (!empty($this->user_capabilities)) ? $this->user_capabilities[0] : null; } function validatePermission($permission) { if($permission === self::NO_ACCESS_RESTRICTION) return true; foreach($this->user_roles as $role) { $role_object = get_role($role); if($role_object && $role_object->has_cap($permission)) { return true; } } return false; } }