/** * Returns a dictionary containing: * 'meaning': a Meaning object * 'sources', 'tags', 'relations': collections of objects related to the meaning * 'children': a recursive dictionary containing this meaning's children **/ private static function buildTree(&$map, $meaningId, &$children) { $results = array('meaning' => $map[$meaningId], 'sources' => MeaningSource::loadSourcesByMeaningId($meaningId), 'tags' => MeaningTag::loadByMeaningId($meaningId), 'relations' => Relation::loadByMeaningId($meaningId), 'children' => array()); foreach ($children[$meaningId] as $childId) { $results['children'][] = self::buildTree($map, $childId, $children); } return $results; }