From f202c9902a49a837da0f379b98afdcade115b66b Mon Sep 17 00:00:00 2001 From: PEMapModder Date: Tue, 17 Jun 2014 22:14:15 +0800 Subject: [PATCH] Multiple permissions checked in Server::getInstance() This is done like the one in `Command::testPermissionSilent()`, where permissions are connected via semicolons (`;`) and they are checked with `OR`, where the player must have at least one permission to read. --- src/pocketmine/Server.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 06898f0d7..75f6ac83f 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1476,21 +1476,24 @@ class Server{ /** * @param string $message - * @param string $permission + * @param string $permissions * * @return int */ - public function broadcast($message, $permission){ - $count = 0; - foreach($this->pluginManager->getPermissionSubscriptions($permission) as $permissible){ - if($permissible instanceof CommandSender and $permissible->hasPermission($permission)){ - $permissible->sendMessage($message); - ++$count; + public function broadcast($message, $permissions){ + $recipients = []; + foreach(explode(";", $permissions) as $permission){ + foreach($this->pluginManager->getPermissionSubscriptions($permission) as $permissible){ + if($permissible instanceof CommandSender and $permissible->hasPermission($permission)){ + $recipients[spl_object_hash($permissible)] = $permissible; // do not send messages directly, or some might be repeated + } } } - - return $count; - } + foreach($recipients as $recipient){ + $recipient->sendMessage($message); + } + return count($recipients); + } /** * Broadcasts a Minecraft packet to a list of players