]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/commitdiff
Channel modes: Split up larger strings
authorValerie Pond <redacted>
Wed, 5 Jul 2023 00:20:09 +0000 (01:20 +0100)
committerValerie Pond <redacted>
Wed, 5 Jul 2023 00:20:09 +0000 (01:20 +0100)
misc/channel-lookup-misc.php

index 0ec18720adbbd1a47a8b63db1baa956622887079..101f9ec88d482c3f815bdb486825985ef9ca717a 100644 (file)
@@ -397,16 +397,30 @@ function _do_chan_item_delete($chan, string $type, array $list, array &$errors)
 
        foreach($list as $l)
        {
+               // check if the string needs therapy
+               if ((strlen($n) + 1) + (strlen($str) + strlen($l)) > 150)
+               {
+                       // send what we've got already and prepare for the next lot
+                       if (!$rpc->channel()->set_mode($chan->name, htmlspecialchars("-$n"), htmlspecialchars($str)))
+                               $errors[] = $rpc->error . " ($rpc->errno)";
+
+                       // prepare for the next set
+                       $n = "";
+                       $str = "";
+               } 
                $n .= $char;
                $str .= " ".$l;
        }
+       // if multiple, this will be the last one so we return here
        if ($rpc->channel()->set_mode($chan->name, htmlspecialchars("-$n"), htmlspecialchars($str)))
        {
+               if (!empty($errors))
+                       Message::Fail("One or more errors occurred:", $errors);
                Message::Success("Deleted successfully");
                return true;
        }
        $errors[] = $rpc->error . " ($rpc->errno)";
-               Message::Fail("An error occurred: $rpc->error");
+               Message::Fail("An error occurred:", $errors);
        return false;
 }