Channel move improvements
This commit is contained in:
parent
1a2dd4a008
commit
e3bf46a89b
@ -1 +1 @@
|
||||
Subproject commit ee5090232867df795348b84f1c6d96561ea24d90
|
||||
Subproject commit a8a0aabd7fca05b950de9f781a3cd6ba5b799f79
|
@ -122,7 +122,6 @@ bool VirtualServer::initialize(bool test_properties) {
|
||||
|
||||
channelTree = new ServerChannelTree(self.lock(), this->sql);
|
||||
channelTree->loadChannelsFromDatabase();
|
||||
channelTree->deleteSemiPermanentChannels();
|
||||
|
||||
this->groups = new GroupManager(self.lock(), this->sql, serverInstance->getGroupManager());
|
||||
if(!this->groups->loadGroupFormDatabase()){ //TODO exception etc
|
||||
@ -130,6 +129,7 @@ bool VirtualServer::initialize(bool test_properties) {
|
||||
return false;
|
||||
}
|
||||
|
||||
channelTree->deleteSemiPermanentChannels();
|
||||
if(channelTree->channel_count() == 0){
|
||||
logMessage(this->serverId, "Creating new channel tree (Copy from server 0)");
|
||||
LOG_SQL_CMD(sql::command(this->getSql(), "INSERT INTO `channels` (`serverId`, `channelId`, `type`, `parentId`) SELECT :serverId AS `serverId`, `channelId`, `type`, `parentId` FROM `channels` WHERE `serverId` = 0", variable{":serverId", this->serverId}).execute());
|
||||
|
@ -102,8 +102,6 @@ command_result ConnectedClient::handleCommandClientKick(Command &cmd) {
|
||||
clients.emplace_back(std::move(client));
|
||||
result.emplace_result(error::ok);
|
||||
}
|
||||
if (clients.empty())
|
||||
return command_result{error::database_empty_result};
|
||||
|
||||
for(auto& client : clients) {
|
||||
if (target_channel) {
|
||||
@ -170,6 +168,7 @@ command_result ConnectedClient::handleCommandClientMove(Command &cmd) {
|
||||
auto permission_cache = make_shared<CalculateCache>();
|
||||
if(!cmd[0].has("cpw"))
|
||||
cmd["cpw"] = "";
|
||||
|
||||
if (!channel->passwordMatch(cmd["cpw"], true))
|
||||
if (!permission::v2::permission_granted(1, this->calculate_permission(permission::b_channel_join_ignore_password, channel->channelId())))
|
||||
return command_result{error::channel_invalid_password};
|
||||
@ -196,9 +195,17 @@ command_result ConnectedClient::handleCommandClientMove(Command &cmd) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(target_client->getChannel() == channel) {
|
||||
result.emplace_result(error::ok);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(target_client.client != this) {
|
||||
if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, 0), this->calculate_permission(permission::i_client_move_power, 0))) {
|
||||
if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, target_client->getChannelId()), this->calculate_permission(permission::i_client_move_power, target_client->getChannelId()))) {
|
||||
result.emplace_result(permission::i_client_move_power);
|
||||
continue;
|
||||
}
|
||||
if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, channel->channelId()), this->calculate_permission(permission::i_client_move_power, channel->channelId()))) {
|
||||
result.emplace_result(permission::i_client_move_power);
|
||||
continue;
|
||||
}
|
||||
|
2
shared
2
shared
@ -1 +1 @@
|
||||
Subproject commit b60608ff94b06145bc808426392871ebd95fe9d3
|
||||
Subproject commit a4febf7b5af191d41c566292958c55155128f16f
|
Loading…
Reference in New Issue
Block a user