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; }