Add support for disabling channel logging

This commit is contained in:
2023-09-21 20:07:25 +02:00
parent 549c84c6ef
commit 6c2bf4aacf
4 changed files with 52 additions and 19 deletions

View File

@@ -129,16 +129,17 @@ sub handlePath {
$userbar.="</form>";
}
my $query = $aConnection->prepare(qq(select channels.id, channels.name, servers.name from channels inner join servers on channels.server_id=servers.id where channels.public=1;));
my $query = $aConnection->prepare(qq(select channels.id, channels.name, channels.enabled, servers.name from channels inner join servers on channels.server_id=servers.id where channels.public=1;));
$query->execute();
my $table = "";
while(my @row = $query->fetchrow_array()) {
my $channelID = $row[0];
my $channelName = $row[1];
my $serverName = $row[2];
my $channelEnabled = $row[2];
my $serverName = $row[3];
$channelName =~ s/%23/#/;
$table.="<tr><td><a href=\"view_logs?channel=$channelID\">$channelName</a></td><td>$serverName</td></tr>";
my $status = $channelEnabled?"<span style=\"color:green\">Enabled</span>":"<span style=\"color:gray\">Disabled</span>";
$table.="<tr><td><a href=\"view_logs?channel=$channelID\">$channelName</a></td><td>$serverName</td><td>$status</td></tr>";
}
my $privateChannels = "";
@@ -158,13 +159,15 @@ sub handlePath {
}
while(@row = $query->fetchrow_array()) {
my $channelID = $row[0];
my $channelQuery = $aConnection->prepare(qq(select channels.name, servers.name from channels inner join servers on channels.server_id=servers.id where channels.id=$channelID;));
my $channelQuery = $aConnection->prepare(qq(select channels.name, channels.enabled, servers.name from channels inner join servers on channels.server_id=servers.id where channels.id=$channelID;));
$channelQuery->execute();
@row = $channelQuery->fetchrow_array();
my $channelName = $row[0];
$channelName =~ s/%23/#/;
my $serverName = $row[1];
$privateChannels.="<tr><td><a href=\"view_logs?channel=$channelID\">$channelName</a></td><td>$serverName</td></tr>";
my $channelEnabled = $row[1];
my $serverName = $row[2];
my $status = $channelEnabled?"<span style=\"color:green\">Enabled</span>":"<span style=\"color:gray\">Disabled</span>";
$privateChannels.="<tr><td><a href=\"view_logs?channel=$channelID\">$channelName</a></td><td>$serverName</td><td>$status</td></tr>";
}
}
@@ -304,6 +307,7 @@ sub handlePath {
$updateChannel.="<form action=\"update_channel_action\" method=\"POST\">";
$updateChannel.=enumerateChannels($aConnection)."<br />";
$updateChannel.="<input name=\"public\" type=\"checkbox\" />Public<br />";
$updateChannel.="<input name=\"enabled\" type=\"checkbox\" checked=\"true\" />Enabled<br />";
$updateChannel.="<input type=\"submit\" value=\"Update\" />";
$updateChannel.="</form>";
}
@@ -495,7 +499,7 @@ sub handlePath {
$lastID = $row[0]+1;
}
$query = $aConnection->prepare(qq(insert into servers values($lastID, ?, ?, ?);));
$query = $aConnection->prepare(qq(insert into servers values($lastID, ?, ?, ?, 1);));
$query->execute($parameters{"name"}, $parameters{"address"}, $port);
frontend::redirect($aClient, "/server_added.html");
logger::createLogger($parameters{"name"}, $parameters{"address"}, $port, ());
@@ -541,7 +545,7 @@ sub handlePath {
$lastID = $row[0]+1;
}
$query = $aConnection->prepare(qq(insert into channels values($lastID, ?, ?, ?);));
$query = $aConnection->prepare(qq(insert into channels values($lastID, ?, ?, ?, 1);));
$query->execute($parameters{"server"}, $parameters{"channel"}, defined($parameters{"public"})?1:0);
my $actionQueue = logger::getActionQueueByServerName($serverName);
push(@$actionQueue, "JOIN", $parameters{"channel"});
@@ -558,15 +562,28 @@ sub handlePath {
frontend::sendBadRequest($aClient, "Channel required");
return 1;
}
my $query = $aConnection->prepare(qq(select id from channels where id=?;));
my $query = $aConnection->prepare(qq(select name, server_id, enabled from channels where id=?;));
$query->execute($parameters{"channel"});
my @row = $query->fetchrow_array();
if(scalar(@row)==0) {
frontend::sendBadRequest($aClient, "Channel with ID $parameters{'channel'} doesn't exist");
return 1;
}
$query = $aConnection->prepare(qq(update channels set public=? where id=?;));
$query->execute(defined($parameters{"public"})?1:0, $parameters{"channel"});
my $channel = $row[0];
my $channelEnabled = $row[2];
$query = $aConnection->prepare(qq(select name from servers where id=?;));
$query->execute($row[1]);
@row = $query->fetchrow_array();
my $actionQueue = logger::getActionQueueByServerName($row[0]);
if(defined($parameters{"enabled"}) && !$channelEnabled) {
push(@$actionQueue, "JOIN", $channel);
print("Joining\n");
}
elsif($channelEnabled) {
push(@$actionQueue, "PART", $channel);
}
$query = $aConnection->prepare(qq(update channels set public=?, enabled=? where id=?;));
$query->execute(defined($parameters{"public"})?1:0, defined($parameters{"enabled"})?1:0, $parameters{"channel"});
frontend::redirect($aClient, "/channel_updated.html");
return 1;
}