Multiple Features to improve ManiaControl usability (#234)
* ServerUIPropertiesMenu for Configurator to edit builtin UIProperties of MP * fixed unregister-functions of CallbackManager * Reducing menuItemHeight in Configurator to avoid overlapping of the menu items * Fully rebuild the admins menu after a player rights changed * Added function to FileUtil to improve realpath, so symbolic links can be resolved * Fixed indentation * Update FileUtil.php Fixed error in case of an absolute path on Unix-like systems. * New CallQueue which runs once inbetween the MC-loops * Added important queued call to be executed earlier * ErrorMethod made optional, as in some cases, there might be nothing to fail * Clean up repository from unnecessary files * Added easy installation script for DB on Unix-like systems * Replaced deprecated is_real by is_float * Add milliseconds with dot instead of double colon * Resolved deprecated curly braces error * gitignore all hidden files (except git and gitignore) * Update MC-update-check-interval, so that a restart is not required * Update gitignore to not ignore changes in MCTeam-Plugins * Update gitignore again * And another try * fixed MasterAdmin //delrec, added personal /delrec-command with permission-setting * Increase version number of local records plugin * Add Permission to delete any record * Reworked notifications of locals, removed private only, added private at rank * Fix formatting * Allow AuthenticationManager to store Plugin Permissions * Method to check, if a named function call is already queued * Added command disable feature * Reset timer if DeltaTime updated, so it does not try to catch up missed timings * Added private notification setting * To reduce load of multiple records (especially in rounds), queue call chat notifications * Added internal function to plugin manager to return plugin menu * restore .idea codestyle files * Update MC-Version number to 0.250
This commit is contained in:
@ -14,6 +14,7 @@ use ManiaControl\Logger;
|
||||
use ManiaControl\ManiaControl;
|
||||
use ManiaControl\Players\Player;
|
||||
use ManiaControl\Players\PlayerManager;
|
||||
use ManiaControl\Plugins\Plugin;
|
||||
use ManiaControl\Settings\Setting;
|
||||
|
||||
/**
|
||||
@ -133,8 +134,10 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
|
||||
return self::AUTH_NAME_ADMIN;
|
||||
case self::AUTH_LEVEL_MODERATOR:
|
||||
return self::AUTH_NAME_MODERATOR;
|
||||
case self::AUTH_LEVEL_PLAYER:
|
||||
return self::AUTH_NAME_PLAYER;
|
||||
}
|
||||
return self::AUTH_NAME_PLAYER;
|
||||
return '-';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -172,8 +175,10 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
|
||||
return self::AUTH_LEVEL_ADMIN;
|
||||
case self::AUTH_NAME_MODERATOR:
|
||||
return self::AUTH_LEVEL_MODERATOR;
|
||||
case self::AUTH_NAME_PLAYER:
|
||||
return self::AUTH_LEVEL_PLAYER;
|
||||
}
|
||||
return self::AUTH_LEVEL_PLAYER;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -420,7 +425,21 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
|
||||
*/
|
||||
public function checkPermission(Player $player, $rightName) {
|
||||
$right = $this->maniaControl->getSettingManager()->getSettingValue($this, $rightName);
|
||||
return $this->checkRight($player, $this->getAuthLevel($right));
|
||||
return self::checkRight($player, self::getAuthLevel($right));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the permission by a right name
|
||||
*
|
||||
* @api
|
||||
* @param Plugin $plugin
|
||||
* @param Player $player
|
||||
* @param $rightName
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPluginPermission(Plugin $plugin, Player $player, $rightName) {
|
||||
$right = $this->maniaControl->getSettingManager()->getSettingValue($plugin, $rightName);
|
||||
return self::checkRight($player, self::getAuthLevel($right));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -429,9 +448,23 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
|
||||
* @api
|
||||
* @param string $rightName
|
||||
* @param int $authLevelNeeded
|
||||
* @param string $authLevelsAllowed
|
||||
*/
|
||||
public function definePermissionLevel($rightName, $authLevelNeeded) {
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, $rightName, self::getPermissionLevelNameArray($authLevelNeeded));
|
||||
public function definePermissionLevel($rightName, $authLevelNeeded, $authLevelsAllowed = self::AUTH_LEVEL_MODERATOR) {
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, $rightName, self::getPermissionLevelNameArray($authLevelNeeded, $authLevelsAllowed));
|
||||
}
|
||||
|
||||
/**
|
||||
* Define a Minimum Right Level needed for an Action
|
||||
*
|
||||
* @api
|
||||
* @param Plugin $plugin
|
||||
* @param string $rightName
|
||||
* @param int $authLevelNeeded
|
||||
* @param string $authLevelsAllowed
|
||||
*/
|
||||
public function definePluginPermissionLevel(Plugin $plugin, $rightName, $authLevelNeeded, $authLevelsAllowed = self::AUTH_LEVEL_MODERATOR) {
|
||||
$this->maniaControl->getSettingManager()->initSetting($plugin, $rightName, self::getPermissionLevelNameArray($authLevelNeeded, $authLevelsAllowed));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -439,19 +472,70 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
|
||||
*
|
||||
* @api
|
||||
* @param $authLevelNeeded
|
||||
* @param $authLevelsAllowed
|
||||
* @return array[]
|
||||
*/
|
||||
public static function getPermissionLevelNameArray($authLevelNeeded) {
|
||||
switch ($authLevelNeeded) {
|
||||
public static function getPermissionLevelNameArray($authLevelNeeded, $authLevelsAllowed = self::AUTH_LEVEL_MODERATOR) {
|
||||
assert($authLevelNeeded >= $authLevelsAllowed);
|
||||
|
||||
switch ($authLevelsAllowed) {
|
||||
case self::AUTH_LEVEL_PLAYER:
|
||||
switch ($authLevelNeeded) {
|
||||
case self::AUTH_LEVEL_PLAYER:
|
||||
return array(self::AUTH_NAME_PLAYER, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN);
|
||||
case self::AUTH_LEVEL_MODERATOR:
|
||||
return array(self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_PLAYER);
|
||||
case self::AUTH_LEVEL_ADMIN:
|
||||
return array(self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_PLAYER, self::AUTH_NAME_MODERATOR);
|
||||
case self::AUTH_LEVEL_SUPERADMIN:
|
||||
return array(self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_PLAYER, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN);
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_PLAYER, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN);
|
||||
}
|
||||
break;
|
||||
|
||||
case self::AUTH_LEVEL_MODERATOR:
|
||||
return array(self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN);
|
||||
switch ($authLevelNeeded) {
|
||||
case self::AUTH_LEVEL_MODERATOR:
|
||||
return array(self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN);
|
||||
case self::AUTH_LEVEL_ADMIN:
|
||||
return array(self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR);
|
||||
case self::AUTH_LEVEL_SUPERADMIN:
|
||||
return array(self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN);
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN);
|
||||
}
|
||||
break;
|
||||
|
||||
case self::AUTH_LEVEL_ADMIN:
|
||||
return array(self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR);
|
||||
switch ($authLevelNeeded) {
|
||||
case self::AUTH_LEVEL_ADMIN:
|
||||
return array(self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN);
|
||||
case self::AUTH_LEVEL_SUPERADMIN:
|
||||
return array(self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_ADMIN);
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN);
|
||||
}
|
||||
break;
|
||||
|
||||
case self::AUTH_LEVEL_SUPERADMIN:
|
||||
return array(self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN);
|
||||
switch ($authLevelNeeded) {
|
||||
case self::AUTH_LEVEL_SUPERADMIN:
|
||||
return array(self::AUTH_NAME_SUPERADMIN, self::AUTH_NAME_MASTERADMIN);
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_SUPERADMIN);
|
||||
}
|
||||
break;
|
||||
|
||||
// just for completeness, should not be used this way
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN, self::AUTH_NAME_MODERATOR, self::AUTH_NAME_ADMIN, self::AUTH_NAME_SUPERADMIN);
|
||||
switch ($authLevelNeeded) {
|
||||
case self::AUTH_LEVEL_MASTERADMIN:
|
||||
return array(self::AUTH_NAME_MASTERADMIN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return array("-");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user