Merge branch 'master' into 1.4.0

This commit is contained in:
WolverinDEV 2019-07-23 15:54:04 +02:00
commit e38199e6c7
2 changed files with 10 additions and 2 deletions

View File

@ -1707,9 +1707,13 @@ CommandResult ConnectedClient::handleCommandChannelEdit(Command &cmd) {
bool target_channel_type_changed = false; bool target_channel_type_changed = false;
ChannelType::ChannelType target_channel_type = channel->channelType(); ChannelType::ChannelType target_channel_type = channel->channelType();
CHANNEL_PERM_TEST_INIT; CHANNEL_PERM_TEST_INIT;
CHANNEL_PERMISSION_TEST(permission::i_channel_modify_power, permission::i_channel_needed_modify_power, channel, true);
for (const auto &key : cmd[0].keys()) { for (const auto &key : cmd[0].keys()) {
if(key == "cid") if(key == "cid")
continue; continue;
if(key == "return_code")
continue;
const auto &property = property::info<property::ChannelProperties>(key); const auto &property = property::info<property::ChannelProperties>(key);
if(*property == property::CHANNEL_UNDEFINED) { if(*property == property::CHANNEL_UNDEFINED) {
@ -1727,6 +1731,9 @@ CommandResult ConnectedClient::handleCommandChannelEdit(Command &cmd) {
continue; continue;
} }
if(channel->properties()[*property].as<string>() == cmd[key].as<string>())
continue; /* we dont need to update stuff which is the same */
if(key == "channel_icon_id") { if(key == "channel_icon_id") {
CHANNEL_PERMISSION_TEST(permission::i_channel_permission_modify_power, permission::i_channel_needed_permission_modify_power, channel, true); CHANNEL_PERMISSION_TEST(permission::i_channel_permission_modify_power, permission::i_channel_needed_permission_modify_power, channel, true);
} else if (key == "channel_order") { } else if (key == "channel_order") {

View File

@ -61,6 +61,7 @@ bool ConnectedClient::notifyServerGroupList() {
return true; return true;
} }
bool ConnectedClient::notifyGroupPermList(const std::shared_ptr<Group>& group, bool as_sid) { bool ConnectedClient::notifyGroupPermList(const std::shared_ptr<Group>& group, bool as_sid) {
Command cmd(this->getExternalType() == CLIENT_TEAMSPEAK ? group->target() == GROUPTARGET_SERVER ? "notifyservergrouppermlist" : "notifychannelgrouppermlist" : ""); Command cmd(this->getExternalType() == CLIENT_TEAMSPEAK ? group->target() == GROUPTARGET_SERVER ? "notifyservergrouppermlist" : "notifychannelgrouppermlist" : "");
if (group->target() == GROUPTARGET_SERVER) if (group->target() == GROUPTARGET_SERVER)
@ -94,9 +95,9 @@ bool ConnectedClient::notifyGroupPermList(const std::shared_ptr<Group>& group, b
auto type = permission::resolvePermissionData(get<0>(permission_data)); auto type = permission::resolvePermissionData(get<0>(permission_data));
if(as_sid) { if(as_sid) {
cmd[index]["permsid"] = type->name; cmd[index]["permsid"] = type->grant_name;
} else { } else {
cmd[index]["permid"] = (uint16_t) type->type; cmd[index]["permid"] = (uint16_t) (type->type | PERM_ID_GRANT);
} }
cmd[index]["permvalue"] = permission.values.value; cmd[index]["permvalue"] = permission.values.value;
cmd[index]["permnegated"] = permission.flags.negate; cmd[index]["permnegated"] = permission.flags.negate;