/** * Convert a tree produced by the tree editor to the format used by loadTree. * We need this in case validation fails and we cannot save the tree, so we need to display it again. **/ static function convertTree($meanings) { $meaningStack = array(); $results = array(); foreach ($meanings as $tuple) { $row = array(); $m = $tuple->id ? self::get_by_id($tuple->id) : Model::factory('Meaning')->create(); $m->internalRep = $tuple->internalRep; $m->htmlRep = AdminStringUtil::htmlize($m->internalRep, 0); $m->internalEtymology = $tuple->internalEtymology; $m->htmlEtymology = AdminStringUtil::htmlize($m->internalEtymology, 0); $m->internalComment = $tuple->internalComment; $m->htmlComment = AdminStringUtil::htmlize($m->internalComment, 0); $row['meaning'] = $m; $row['sources'] = Source::loadByIds(StringUtil::explode(',', $tuple->sourceIds)); $row['tags'] = MeaningTag::loadByIds(StringUtil::explode(',', $tuple->meaningTagIds)); $row['relations'] = Relation::loadRelatedLexems($tuple->relationIds); $row['children'] = array(); if ($tuple->level) { $meaningStack[$tuple->level - 1]['children'][] =& $row; } else { $results[] =& $row; } $meaningStack[$tuple->level] =& $row; unset($row); } return $results; }