| // +--------------------------------------------------------------------+ // // $Id$ // require_once 'AIError.php'; // +X2C Class 486 :GrupoSecciones /** * Grupo de secciones. * * @access public */ class GrupoSecciones { /** * ID del grupo de secciones. * * @var int $grupo * @access public */ var $grupo = 0; /** * Nombre. * * @var string $nombre * @access public */ var $nombre = ''; /** * @var int $grupo_padre * @access public */ var $grupo_padre = 0; /** * Grupos de secciones que tiene este grupo. * * @var array $hijos * @access protected */ var $_hijos = array(); /** * Secciones que pertenecen a este grupo. * * @var array $secciones * @access public */ var $secciones = array(); /** * Antigedad (en d?s) de las noticias a mostrar. * * @var int $antiguedad * @access public */ var $antiguedad = 0; /** * True si hay que mostrar los grupos hijos (?? FIXME). * * @var bool $mostrar_hijos * @access public */ var $mostrar_hijos = false; /** * Indica si esta habilitado. * * @var bool $habilitado * @access public */ var $habilitado = true; /** * Gets Hijos. * * @return array * @access public */ function getHijos() { return $this->_hijos; } // ~X2C // +X2C Operation 495 /** * @param int $grupo ID del grupo. * * @return void * @access public */ function GrupoSecciones($grupo = 0) // ~X2C { $this->grupo = $grupo; } // -X2C // +X2C Operation 496 /** * @param mixed $db Base de datos o Resultado a utilizar. * * @return PEAR_Error * @access public */ function cargar($db) // ~X2C { $grupo = intval($this->grupo); if (is_a($db, 'db_result')) { $result = $db; $db = $result->dbh; // Si no es un resultado, hago el query. } else { $result = $db->query( "SELECT * FROM grupo_secciones WHERE grupo = $grupo" ); if (DB::isError($result)) { return $result; } } // Obtengo la fila. $row = $result->fetchRow(DB_FETCHMODE_ASSOC); if (!$row) { return new AIError(AIERROR_NO_RESULTADOS, "No hay más resultados en la DB [grupo=$grupo]"); } // Asigno valores al objeto. extract($row); $this->grupo = $grupo; $this->nombre = $nombre; $this->grupo_padre = $grupo_padre; $this->habilitado = $habilitado; $this->antiguedad = $antiguedad; $this->mostrar_hijos= $mostrar_hijos; // Obtengo secciones. $secciones = $db->getCol( "SELECT seccion FROM grupo_secciones_seccion WHERE grupo = $grupo" ); if (DB::isError($secciones)) { return $secciones; } if ($secciones) { $this->secciones = $secciones; } else { $this->secciones = array(); } return true; } // -X2C // +X2C Operation 497 /** * @param DB $db DB donde guardar. * * @return PEAR_Error * @access public */ function guardar($db) // ~X2C { $grupo = intval($this->grupo); $where = ''; $datos = array( 'grupo_padre' => intval($this->grupo_padre), 'nombre' => $this->nombre, 'habilitado' => $this->habilitado ? 1 : 0, 'antiguedad' => intval($this->antiguedad), 'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0, ); if ($grupo) { $accion = DB_AUTOQUERY_UPDATE; $where = "grupo = $grupo"; } else { $accion = DB_AUTOQUERY_INSERT; $grupo = $db->nextId('grupo_secciones'); if (DB::isError($grupo)) { return $grupo; } // Asigno el nuevo id de grupo. $this->grupo = $grupo; $datos['grupo'] = $grupo; } $res = $db->autoExecute('grupo_secciones', $datos, $accion, $where); if (DB::isError($res)) { return $res; } $res = $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo"); if (DB::isError($res)) { return $res; } $prepare = $db->prepare("INSERT INTO grupo_secciones_seccion (grupo, seccion) VALUES ($grupo, ?)"); if (DB::isError($prepare)) { return $prepare; } $res = $db->executeMultiple($prepare, $this->secciones); if (DB::isError($res)) { return $res; } return true; } // -X2C // +X2C Operation 498 /** * @param DB $db DB de donde borrar. * * @return PEAR_Error * @access public */ function borrar($db) // ~X2C { $grupo = intval($this->grupo); if ($grupo) { $res = $db->query( "DELETE FROM grupo_secciones WHERE grupo = $grupo"); if (DB::isError($res)) { return $res; } $res = $db->query( "DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo"); if (DB::isError($res)) { return $res; } return true; } return PEAR::raiseError("No hay un grupo válido para borrar"); } // -X2C // +X2C Operation 499 /** * @param DB $db DB de donde cargar los hijos. * * @return PEAR_Error * @access public */ function cargarHijos($db) // ~X2C { $grupo = intval($this->grupo); $result = $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo"); if (DB::isError($result)) { return $result; } $this->_hijos = array(); $hijo = new GrupoSecciones; $err = $hijo->cargar($result); while (!PEAR::isError($err)) { $this->_hijos[] = $hijo->__clone(); $err = $hijo->cargar($result); } // Si no hay mas resultados, entonces terminó bien. if (is_a($err, 'aierror') and $err->getCode() == AIERROR_NO_RESULTADOS) { return true; } // Si no, se devuelve el error. return $err; } // -X2C // +X2C Operation 500 /** * @return GrupoSecciones * @access public */ function __clone() // ~X2C { return $this; } // -X2C } // -X2C Class :GrupoSecciones ?>