[Zeroc Ice] Murmur Channel Viewer

walle_89

Mitglied
Hallo liebe Community ;)

Ich beschäftige mich seit Kurzem mit dem Voice-Tool Murmur und möchte gerne ein Channel Viewer dafür erstellen. Ich besitze ein Debian etch mit PHP5, Apache und Zeroc Ice - und da liegt auch das kleine Problem ;)
Anhand des Beispielskriptes erhalte ich zwar $players und $channels, aber weiß nicht recht wie ich sie miteinander "verbinden" soll, damit eine (Baum-)Struktur entsteht. Ich habe dennoch schonmal geschafft die Struktur der Channels anzuzeigen: LINK

Das Script dazu
PHP:
<html>
<head>
<title>Userlist</title>
</head>
<body>
<?php

Ice_loadProfile();

try {
  $base = $ICE->stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502");
  $meta = $base->ice_checkedCast("::Murmur::Meta");

  $servers = $meta->getBootedServers();
  $default = $meta->getDefaultConf();
  foreach($servers as $s) {
    $name = $s->getConf("registername");
    if (! $name) {
      $name =  $default["registername"];
    }
    echo "<h1>SERVER #" . $s->id() . " " .$name ."</h1>\n";
    echo "<table><tr><th>Name</th><th>Channel</th></tr>\n";

    $channels = $s->getChannels();
    $players = $s->getPlayers();

    foreach($players as $id => $state) {
      $chan = $channels[$state->channel];
      echo "<tr><td>".$state->name."</td><td>".$chan->name."</td></tr>\n";
    }
    echo "</table>\n";
	
	echo "<h1>Baumstruktur</h1>";
	
    foreach($channels as $id => $state) {
      $play = $players[$state->channel];
      echo $state->name."<br>";
    }

	
  }
} catch (Ice_LocalException $ex) {
  print_r($ex);
}

?>
</body>
</html>

Nun müsste das Script nur noch überprüfen, ob ein User ggf. auf dem jeweiligen Channel ist oder nicht. Muss ich das dann mit einer While oder einer Foreach-Schleife lösen? Oder müsste man einen komplett anderen Weg gehen?

Gruß, walle_89

P.S. Die beiden Arrays ($channels und $players) liefern dafür die nötigen Informationen.
 
Zurück