/** * find terms recursive * * @param Term $parent */ protected function findTermsRecursive($parent, $level = 0, $path = '/', $state = Term::STATE_ACTIVE, $orderBy = 'ordering') { $data = $parent->attributes; $data['level'] = $level++; $vob = Vocabulary::model()->findByPk($parent->v_id); if (is_object($vob)) { $propertyClassName = $vob->propertyClassName; if (!empty($propertyClassName)) { $model = new $propertyClassName(); $property = $model->findByAttributes(array('term_id' => $parent->id, 'status' => $state)); if (is_object($property)) { $properties = $property->attributes; unset($properties['id'], $properties['status'], $properties['creation_datetime'], $properties['last_update'], $properties['created_by'], $properties['updated_by'], $properties['term_id']); $data['properties'] = $properties; } } } $children = $parent->children(array('order' => $orderBy, 'condition' => 'children.state=:state', 'params' => array(':state' => $state))); if (is_array($children) && count($children)) { $data['children'] = array(); foreach ($children as $term) { Yii::trace('findTermsRecursive in ' . $orderBy, 'system.db.abc'); $data['children'][] = $this->findTermsRecursive($term, $level, '/', $state, $orderBy); } } return $data; }