diff --git a/application/core/Formatter.php b/application/core/Formatter.php index 7735b92a..6d44c0d1 100644 --- a/application/core/Formatter.php +++ b/application/core/Formatter.php @@ -55,7 +55,7 @@ abstract class Formatter { /** * Strip all codes except colors from the string */ - public static function stripCodesWithoutColors($string) { + public static function stripCodesWithoutColors($string) { //Todo don't remove $i, $s $string = preg_replace('/(?pid = $rpcInfos['PlayerId']; $this->login = $rpcInfos['Login']; - $this->nickname = Formatter::stripCodesWithoutColors($rpcInfos['NickName']); + $this->nickname = Formatter::stripCodesWithoutColors($rpcInfos['NickName']); //TODO don't remove $s, $i $this->path = $rpcInfos['Path']; $this->language = $rpcInfos['Language']; $this->avatar = $rpcInfos['Avatar']['FileName']; - $this->allies = $rpcInfos['Allies']; $this->clubLink = $rpcInfos['ClubLink']; $this->teamId = $rpcInfos['TeamId']; diff --git a/application/core/Players/PlayerActions.php b/application/core/Players/PlayerActions.php index 43e78df0..baee3623 100644 --- a/application/core/Players/PlayerActions.php +++ b/application/core/Players/PlayerActions.php @@ -225,4 +225,63 @@ class PlayerActions { // log console message $this->maniaControl->log($title .' ' . Formatter::stripCodes($admin->nickname) . ' banned player '. Formatter::stripCodes($target->nickname)); } + + /** + * Grands Player an authorization level + * @param $adminLogin + * @param $targetLogin + * @param $authLevel + */ + public function grandAuthLevel($adminLogin, $targetLogin, $authLevel){ + $admin = $this->maniaControl->playerManager->getPlayer($adminLogin); + $target = $this->maniaControl->playerManager->getPlayer($targetLogin); + $title = $this->maniaControl->authenticationManager->getAuthLevelName($admin->authLevel); + //TODO check for bot + if($this->maniaControl->authenticationManager->checkRight($target,$authLevel)){ + $this->maniaControl->chat->sendError('This admin is already ' . $this->maniaControl->authenticationManager->getAuthLevelName($target->authLevel), $admin->login); + return; + } + + $success = $this->maniaControl->authenticationManager->grantAuthLevel($target, $authLevel); + + if (!$success) { + $this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login); + return; + } + + $authLevelName = $this->maniaControl->authenticationManager->getAuthLevelName($authLevel); + + $this->maniaControl->chat->sendInformation($title . ' $<' . $admin->nickname . '$> added $<' . $target->nickname . '$> as $< ' . $authLevelName. '$>!'); + + // log console message + $this->maniaControl->log($title .' ' . Formatter::stripCodes($admin->nickname) . ' added player '. Formatter::stripCodes($target->nickname) . ' as ' . $authLevelName); + } + + /** + * Revokes all rights from a Admin + * @param $adminLogin + * @param $targetLogin + */ + public function revokeAuthLevel($adminLogin, $targetLogin){ + $admin = $this->maniaControl->playerManager->getPlayer($adminLogin); + $target = $this->maniaControl->playerManager->getPlayer($targetLogin); + $title = $this->maniaControl->authenticationManager->getAuthLevelName($admin->authLevel); + + if($this->maniaControl->authenticationManager->checkRight($target,AuthenticationManager::AUTH_LEVEL_MASTERADMIN)){ + $this->maniaControl->chat->sendError('MasterAdmins can\'t be removed ', $admin->login); + return; + } + + $success = $this->maniaControl->authenticationManager->grantAuthLevel($target, AuthenticationManager::AUTH_LEVEL_PLAYER); + + if (!$success) { + $this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login); + return; + } + + $this->maniaControl->chat->sendInformation($title . ' $<' . $admin->nickname . '$> revokes $<' . $target->nickname . '$> rights!'); + + // log console message + $this->maniaControl->log($title .' ' . Formatter::stripCodes($admin->nickname) . ' revokes '. Formatter::stripCodes($target->nickname) . ' rights'); + } } \ No newline at end of file diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index 4073a579..210144f9 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -45,6 +45,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { const ACTION_ADD_AS_MASTER = 'PlayerList.PlayerAddAsMaster'; const ACTION_ADD_AS_ADMIN = 'PlayerList.PlayerAddAsAdmin'; const ACTION_ADD_AS_MOD = 'PlayerList.PlayerAddAsModerator'; + const ACTION_REVOKE_RIGHTS = 'PlayerList.RevokeRights'; /** * Private properties @@ -310,11 +311,12 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { //todo all configurable or as constants $x = $this->width / 2 + 2.5; $width = 35; - $height = $this->height * 0.6; + $height = $this->height * 0.7; $hAlign = Control::LEFT; $style = Label_Text::STYLE_TextCardSmall; $textSize = 1.5; $textColor = 'FFF'; + $quadWidth = $width - 7; //mainframe $frame = new Frame(); @@ -322,7 +324,6 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $frame->setSize($width,$height); $frame->setPosition($x + $width / 2, 0); - // Add Close Quad (X) $closeQuad = new Quad_Icons64x64_1(); $frame->add($closeQuad); @@ -370,7 +371,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_WARN_PLAYER . "." .$login); $label = new Label_Button(); @@ -390,7 +391,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_KICK_PLAYER . "." .$login); $label = new Label_Button(); @@ -410,7 +411,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_BAN_PLAYER . "." .$login); $label = new Label_Button(); @@ -430,7 +431,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_ADD_AS_MASTER . "." .$login); $label = new Label_Button(); @@ -440,7 +441,9 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setY($y); $label->setStyle($style); $label->setTextSize($textSize); + $label->setText("Add MasterAdmin"); + $label->setTextColor($textColor); $y -= 5; @@ -450,7 +453,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_ADD_AS_ADMIN . "." .$login); $label = new Label_Button(); @@ -470,7 +473,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); - $quad->setSize($width - 10,5); + $quad->setSize($quadWidth, 5); $quad->setAction(self::ACTION_ADD_AS_MOD . "." .$login); $label = new Label_Button(); @@ -483,6 +486,29 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setText("Add Moderator"); $label->setTextColor($textColor); + + if($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_OPERATOR)){ + $y -= 5; + //Revoke Rights + $quad = new Quad_BgsPlayerCard(); + $frame->add($quad); + $quad->setX(0); + $quad->setY($y); + $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCard); + $quad->setSize($quadWidth, 5); + $quad->setAction(self::ACTION_REVOKE_RIGHTS . "." .$login); + + $label = new Label_Button(); + $frame->add($label); + $label->setAlign(Control::CENTER,Control::CENTER); + $label->setX(0); + $label->setY($y); + $label->setStyle($style); + $label->setTextSize($textSize); + $label->setText("Revoke Rights"); + $label->setTextColor($textColor); + } + //render and display xml $this->maniaControl->manialinkManager->displayWidget($maniaLink, $caller); @@ -540,17 +566,19 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $player = $this->maniaControl->playerManager->getPlayer($callback[1][1]); $this->advancedPlayerWidget($callback, $player, $actionArray[2]); break; + case self::ACTION_ADD_AS_MASTER: + $this->maniaControl->playerManager->playerActions->grandAuthLevel($callback[1][1], $actionArray[2], AuthenticationManager::AUTH_LEVEL_SUPERADMIN); + break; + case self::ACTION_ADD_AS_ADMIN: + $this->maniaControl->playerManager->playerActions->grandAuthLevel($callback[1][1], $actionArray[2], AuthenticationManager::AUTH_LEVEL_ADMIN); + break; + case self::ACTION_ADD_AS_MOD: + $this->maniaControl->playerManager->playerActions->grandAuthLevel($callback[1][1], $actionArray[2], AuthenticationManager::AUTH_LEVEL_OPERATOR); + break; + case self::ACTION_REVOKE_RIGHTS: + $this->maniaControl->playerManager->playerActions->revokeAuthLevel($callback[1][1], $actionArray[2]); + break; } - - - /* - $addMaster = (strpos($actionId, self::ACTION_ADD_AS_MASTER) === 0); - $addAdmin = (strpos($actionId, self::ACTION_ADD_AS_ADMIN) === 0); - $addModerator = (strpos($actionId, self::ACTION_ADD_AS_MOD) === 0); - */ - - - } /** @@ -563,6 +591,8 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $player = $this->maniaControl->playerManager->getPlayer($login); if($player != null) $this->showPlayerList($player); + else + unset($this->playersListShown[$login]); } } }