Merge branch 'release/3.2' into release/3.3

This commit is contained in:
Dylan K. Taylor 2018-09-14 17:09:51 +01:00
commit 0d65f9c4b8
3 changed files with 23 additions and 3 deletions

View File

@ -166,9 +166,7 @@ class PermissibleBase implements Permissible{
public function clearPermissions(){ public function clearPermissions(){
$permManager = PermissionManager::getInstance(); $permManager = PermissionManager::getInstance();
foreach(array_keys($this->permissions) as $name){ $permManager->unsubscribeFromAllPermissions($this->parent ?? $this);
$permManager->unsubscribeFromPermission($name, $this->parent ?? $this);
}
$permManager->unsubscribeFromDefaultPerms(false, $this->parent ?? $this); $permManager->unsubscribeFromDefaultPerms(false, $this->parent ?? $this);
$permManager->unsubscribeFromDefaultPerms(true, $this->parent ?? $this); $permManager->unsubscribeFromDefaultPerms(true, $this->parent ?? $this);

View File

@ -160,6 +160,18 @@ class PermissionManager{
} }
} }
/**
* @param Permissible $permissible
*/
public function unsubscribeFromAllPermissions(Permissible $permissible) : void{
foreach($this->permSubs as $permission => &$subs){
unset($subs[spl_object_hash($permissible)]);
if(empty($subs)){
unset($this->permSubs[$permission]);
}
}
}
/** /**
* @param string $permission * @param string $permission
* *

View File

@ -475,6 +475,16 @@ class PluginManager{
PermissionManager::getInstance()->unsubscribeFromPermission($permission, $permissible); PermissionManager::getInstance()->unsubscribeFromPermission($permission, $permissible);
} }
/**
* @deprecated
* @see PermissionManager::unsubscribeFromAllPermissions()
*
* @param Permissible $permissible
*/
public function unsubscribeFromAllPermissions(Permissible $permissible) : void{
PermissionManager::getInstance()->unsubscribeFromAllPermissions($permissible);
}
/** /**
* @deprecated * @deprecated
* @see PermissionManager::getPermissionSubscriptions() * @see PermissionManager::getPermissionSubscriptions()