Ejemplo n.º 1
0
 /**
  * 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;
 }