private function treeToJsonArray(MurmurTree $tree, $connecturlTemplate, $path)
 {
     /**
      * @var MurmurChannel
      */
     $chan = $tree->getRootChannel();
     if ($connecturlTemplate != null && $chan->getParentChannelId() != -1) {
         $path .= '/' . urlencode($chan->getName());
     }
     // subchannels data array
     $prior = array();
     $subChannels = $tree->getSubChannels();
     if (!empty($subChannels)) {
         usort($subChannels, 'self::channelCompare');
         foreach ($subChannels as $subChannel) {
             $prior[] = $this->treeToJsonArray($subChannel, $connecturlTemplate, $path);
         }
     }
     // This channels data array
     $array = array();
     $array['id'] = $chan->getId();
     $array['parent'] = $chan->getParentChannelId();
     $array['temporary'] = $chan->isTemporary();
     $array['position'] = $chan->getPosition();
     $array['name'] = $chan->getName();
     $array['description'] = $chan->getDescription();
     if ($connecturlTemplate != null) {
         // Remove template placeholder. The URL is complete here.
         $array['x_connecturl'] = sprintf($connecturlTemplate, $path);
     }
     $array['channels'] = $prior;
     $array['links'] = $chan->getLinkedChannelIds();
     $array['users'] = $this->usersToJsonArray($tree->getUsers(), $chan->getId());
     return $array;
 }
 private function treeToJsonArray(MurmurTree $tree)
 {
     $array = array();
     $prior = array();
     $subChannels = $tree->getSubChannels();
     if (!empty($subChannels)) {
         foreach ($subChannels as $subChannel) {
             $prior[] = $this->treeToJsonArray($subChannel);
         }
     }
     /**
      * @var MurmurChannel
      */
     $chan = $tree->getRootChannel();
     $array['id'] = $chan->getId();
     $array['parent'] = $chan->getParentChannelId();
     $array['temporary'] = $chan->isTemporary();
     $array['position'] = $chan->getPosition();
     $array['name'] = $chan->getName();
     $array['description'] = $chan->getDescription();
     $array['channels'] = $prior;
     $array['links'] = $chan->getLinkedChannelIds();
     $array['users'] = $this->usersToJsonArray($tree->getUsers(), $chan->getId());
     return $array;
 }