<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ra23.net &#187; grid</title>
	<atom:link href="http://ra23.net/wop/tag/grid/feed/" rel="self" type="application/rss+xml" />
	<link>http://ra23.net/wop</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 08 Mar 2010 18:14:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mumble Online User anzeigen</title>
		<link>http://ra23.net/wop/2010/03/mumble-online-user-anzeigen/</link>
		<comments>http://ra23.net/wop/2010/03/mumble-online-user-anzeigen/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 18:07:45 +0000</pubDate>
		<dc:creator>Andre Rein</dc:creator>
				<category><![CDATA[mumble]]></category>
		<category><![CDATA[baum]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://ra23.net/wop/?p=33</guid>
		<description><![CDATA[Die Ausgabe von Kanälen in Mumble ist Anfangs leicht verwirrend, da ich im Netz keine Anleitung gefunden habe, wie man so eine Anzeige generiert,
hier eine kleine Einstiegshilfe. Dazu sollte ich noch sagen, das es um die Darstellung der Kanäle/Benutzer in einer Baumstruktur geht.
Die Kanäle/Benutzer einfach in einer Anzeige-Ebene als HTML ausgeben, stellt kein Problem dar. [...]]]></description>
			<content:encoded><![CDATA[<p>Die Ausgabe von Kanälen in Mumble ist Anfangs leicht verwirrend, da ich im Netz keine Anleitung gefunden habe, wie man so eine Anzeige generiert,<br />
hier eine kleine Einstiegshilfe. Dazu sollte ich noch sagen, das es um die Darstellung der Kanäle/Benutzer in einer Baumstruktur geht.<br />
Die Kanäle/Benutzer einfach in einer Anzeige-Ebene als HTML ausgeben, stellt kein Problem dar. Dafür sind Funktionen vorhanden.</p>
<p>Es geht hier explizit um die Darstellung, die die Tiefe der Kanäle und der Benutzer beachtet und demnach ausgibt:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#root-channel
</span>  <span style="color: #339933;">-</span>subchannel1
  <span style="color: #339933;">-</span>subchannel2
    <span style="color: #339933;">-</span> subsubchannel21
      o User1
      o User2
  <span style="color: #339933;">-</span>subchannel3</pre></div></div>

<p>Mumble verwendet eine Schnittstelle mit dem Namen Ice, die in PHP registriert sein muss.</p>
<p>Unter Debian benötigt man das Paket &#8220;php-zeroc-ice&#8221;<br />
Aktiviert wird das ganze unter: /etc/php5/conf.d/IcePHP.ini</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">extension <span style="color: #339933;">=</span> IcePHP<span style="color: #339933;">.</span>so</pre></div></div>

<p>In der Konfigurationsdatei von php, gibt man den Link zu Murmur.ice ein. (Ist im Serverdownload enthalten)</p>
<p>php.ini</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">ice<span style="color: #339933;">.</span>slice<span style="color: #339933;">=/</span>pfad<span style="color: #339933;">/</span>zu<span style="color: #339933;">/</span>Murmur<span style="color: #339933;">.</span>ice</pre></div></div>

<p>Nun stellt man noch sicher, das in der Konfigurationsdatei von Murmur folgendes enthalten ist:<br />
Murmur.ini</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">ice<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tcp -h 127.0.0.1 -p 6502&quot;</span></pre></div></div>

<p>Wenn man nun den Murmur Server startet, sollte die ICE-Schnittstelle auf dem angegebenen Port zur Verfügung stehen, mit der wir jetzt agieren können.</p>
<p>Achtet darauf, das die Variable $ICE global sein muss, ansonsten funktioniert es leider nicht.<br />
Aufgerufen wird das ganze folgendermaßen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$ICE</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$output</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
  try<span style="color: #009900;">&#123;</span>
    Ice_loadProfile<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$base</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ICE</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">stringToProxy</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Meta:tcp -h 127.0.0.1 -p 6502&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$meta</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$base</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ice_checkedCast</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;::Murmur::Meta&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//paste in your serverid!</span>
    <span style="color: #000088;">$server</span><span style="color: #339933;">=</span> <span style="color: #000088;">$meta</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getServer</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$myoutput</span><span style="color: #339933;">=</span>plotTreePlainTest<span style="color: #009900;">&#40;</span><span style="color: #000088;">$server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTree</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  catch <span style="color: #009900;">&#40;</span>Ice_Exception <span style="color: #000088;">$ex</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ex</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$myoutput</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Auch hier findet wieder eine globale Variable Verwendung. Die Variable kann natürlich auch als Referenz übergeben werden.</p>
<p>Hier die Funktion, die uns die HTML-Ausgabe macht:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> plotTreePlainTest<span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">,</span><span style="color: #000088;">$indent</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$first_run</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_object</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;div '</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$first_run</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_object</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&gt;'</span><span style="color: #339933;">.</span><span style="color: #990000;">str_repeat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;nbsp;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$indent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'+ '</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_null</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">users</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$display</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'style=&quot;display: none;&quot; '</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
          <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #000088;">$display</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&gt;'</span><span style="color: #339933;">.</span><span style="color: #990000;">str_repeat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;nbsp;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$indent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'- '</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&gt;o &quot;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #000088;">$channelname</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;=&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">c</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$channelname</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;|&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$channelname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$channelname</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;-&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$channelname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$channelname</span><span style="color: #339933;">=</span><span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^[0-9]\ (.*)/&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$1</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$channelname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #000088;">$channelname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">users</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #990000;">str_repeat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;nbsp;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$indent</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$output</span><span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;span style=&quot;color: green;&quot;&gt;&lt;b&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$v</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/b&gt;&lt;/span&gt;&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_object</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        plotTreePlainTest<span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$indent</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Das alles soll nur eine kleine Hilfestellung zur Anzeige der Channel und Benutzer unter Mumble geben.<br />
Ggf. erweitere ich den Code noch ein wenig, bzw. erläutere noch etwas mehr dazu, falls dies erwünscht ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra23.net/wop/2010/03/mumble-online-user-anzeigen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
