+ foreach(P10_Channel::getChannels() as $channel) {
+ $sorted_users = array('ov' => array(), 'o' => array(), 'v' => array(), '-' => array());
+ $local_users = false;
+ foreach($channel->getUsers() as $user) {
+ if(substr($user->getNumeric(), 0, 2) != $this->server->getNumeric()) continue; //skip users that are not on the local server
+ $privs = $channel->getUserPrivs($user);
+ $strPrivs = "";
+ if(($privs & P10_Channel::USERPRIV_OPED)) $strPrivs .= "o";
+ if(($privs & P10_Channel::USERPRIV_VOICE)) $strPrivs .= "v";
+ if($strPrivs == "") $strPrivs = "-";
+ $local_users = true;
+ $sorted_users[$strPrivs][] = $user;
+ }
+ if(!$local_users) continue;
+ $userStr = "";
+ foreach($sorted_users['-'] as $user) {
+ if($userStr != "") $userStr.=",";
+ $userStr .= $user->getNumeric();
+ }
+ foreach($sorted_users['ov'] as $i => $user) {
+ if($userStr != "") $userStr.=",";
+ $userStr .= $user->getNumeric();
+ if($i == 0) $userStr .= ":ov";
+ }
+ foreach($sorted_users['o'] as $i => $user) {
+ if($userStr != "") $userStr.=",";
+ $userStr .= $user->getNumeric();
+ if($i == 0) $userStr .= ":o";
+ }
+ foreach($sorted_users['v'] as $i => $user) {
+ if($userStr != "") $userStr.=",";
+ $userStr .= $user->getNumeric();
+ if($i == 0) $userStr .= ":v";
+ }
+ $banString = "";
+ //TODO: Build ban String
+ $burstString = "";
+ $modeString = $channel->getModes()->getModeString();
+ if($modeString != "+") {
+ $burstString .= $modeString;
+ }
+ if($userStr != "") {
+ if($burstString != "") $burstString .= " ";
+ $burstString .= $userStr;
+ }
+ if($banString != "") {
+ if($burstString != "") $burstString .= " ";
+ $burstString .= ":%".$banString;
+ }
+ $this->send("B", $channel->getName(), $channel->getCreateTime(), $burstString);
+ }