public function create($data = NULL) { if (!isset($data['level'])) { $data['level'] = 0; } $entities = $this->_mapper->entities(); $entity = $entities[$data['level']]; $my_data = array(); foreach ($data as $k => $v) { if (strstr($k, $entity . '_') == $k) { $my_data[str_replace($entity . '_', '', $k)] = $v; } } $my_data['type'] = $entity; if (!isset($this->_objects[$my_data['type']][$my_data['id']])) { $this->_objects[$my_data['type']][$my_data['id']] = new RM_Gpc_Tree_Entity($my_data); } if ($data['level'] < count($entities) - 1) { $this->_objects[$my_data['type']][$my_data['id']]->addChildren($this->create(array_merge($data, array('level' => ++$data['level'])))); } return $this->_objects[$my_data['type']][$my_data['id']]; }
/** * @see RM_Gpc_Mapper::entities() **/ public function entities() { return $this->_mapper->entities(); }