public function obtenerHijos() { $con = Propel::getConnection(); $query = "SELECT %s as IdGrupo FROM %s WHERE %s = " . $this->getIdGrupo() . " ORDER BY %s"; $query = sprintf($query, GrupoPeer::ID_GRUPO, GrupoPeer::TABLE_NAME, GrupoPeer::PADRE, GrupoPeer::ID_GRUPO); $stmt = $con->prepare($query); $stmt->execute(); $mishijos = array(); while ($row = $stmt->fetch()) { $mishijos[] = $row['IdGrupo']; $hijo_temp = GrupoPeer::retrieveByPk($row['IdGrupo']); $mishijos_temp = $hijo_temp->obtenerHijos(); //array merge casero porque el normal me falla foreach ($mishijos_temp as $value) { $mishijos[] = $value; } } return $mishijos; }
protected function getGrupoOrCreate($id_grupo = 'id_grupo') { if (!$this->getRequestParameter($id_grupo)) { $grupo = new Grupo(); } else { $grupo = GrupoPeer::retrieveByPk($this->getRequestParameter($id_grupo)); //Ana: $grupo->cargarOtrosDatos(); //$padres=Grupo::arbolGrupos(true); $this->forward404Unless($grupo); } return $grupo; }
/** * Operaciones de carga y busqueda de los grupos a los que pertenece el usuario * Dado un grupo lo añade al array * */ protected function _anadirGrupo($id_grupo, $comprobar) { if ($comprobar) { if ($this->_estaGrupo($id_grupo)) { return false; } } $grupo = GrupoPeer::retrieveByPk($id_grupo); $grupo->cargarOtrosDatos(); if (!empty($grupo)) { $this->grupos[] = $grupo; return true; } return false; }