X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/df9d0deaca85d998cd966a75db730202e0f7c993..HEAD:/lib/AI/GrupoSecciones.php?ds=sidebyside diff --git a/lib/AI/GrupoSecciones.php b/lib/AI/GrupoSecciones.php index b842671..b7dc567 100644 --- a/lib/AI/GrupoSecciones.php +++ b/lib/AI/GrupoSecciones.php @@ -27,13 +27,14 @@ // $Id$ // -// +X2C includes require_once 'AI/DBTreeObject.php'; -// ~X2C - require_once 'AI/Error.php'; -// +X2C Class 486 :AI_GrupoSecciones +/** + * Archivo de configuración. + */ +define('AI_GRUPOSECCIONES_CONFFILE', dirname(__FILE__).'/GrupoSecciones.ini'); + /** * Grupo de secciones. * @@ -72,7 +73,7 @@ class AI_GrupoSecciones extends AI_DBTreeObject { var $secciones = array(); /** - * Antigedad (en d?s) de las noticias a mostrar. + * Antigüedad (en días) de las noticias a mostrar. * * @var int $antiguedad * @access public @@ -80,7 +81,7 @@ class AI_GrupoSecciones extends AI_DBTreeObject { var $antiguedad = 0; /** - * True si hay que mostrar los grupos hijos (?? FIXME). + * True si hay que mostrar los grupos hijos. * * @var bool $mostrar_hijos * @access public @@ -95,29 +96,24 @@ class AI_GrupoSecciones extends AI_DBTreeObject { */ var $habilitado = true; - // ~X2C - - // +X2C Operation 495 /** * @param int $grupo ID del grupo. * * @return void * @access public */ - function AI_GrupoSecciones($grupo = 0) // ~X2C + function AI_GrupoSecciones($grupo = 0) { - parent::AI_DBTreeObject($grupo, dirname(__FILE__) . '/GrupoSecciones.ini'); + parent::AI_DBTreeObject($grupo, AI_GRUPOSECCIONES_CONFFILE); } - // -X2C - // +X2C Operation 496 /** * @param mixed $db Base de datos o Resultado a utilizar. * * @return PEAR_Error * @access public */ - function cargar($db) // ~X2C + function cargar($db) { // Obtengo campos comunes. $err = parent::cargar($db); @@ -128,10 +124,37 @@ class AI_GrupoSecciones extends AI_DBTreeObject { $id = intval($this->grupo); extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf'); $secciones = $db->getCol( - "SELECT $cnf_campo - FROM $cnf_base.$cnf_tabla + "SELECT $cnf_campo + FROM $cnf_base.$cnf_tabla WHERE $cnf_id = $id" ); + //Busco los hijos si corresponde + //Agregado por gmeray + if($this->mostrar_hijos) + { + //hijos + $secciones = array_merge($secciones, + $db->getCol( + "SELECT GSS.$cnf_campo + FROM $cnf_base.$cnf_tabla GSS, $cnf_base.grupo_secciones GS + WHERE GSS.$cnf_id = GS.grupo + AND GS.grupo_padre = $id" + ) + ); + //nietos + $secciones = array_merge($secciones, + $db->getCol( + "SELECT GSS.$cnf_campo + FROM $cnf_base.$cnf_tabla GSS, $cnf_base.grupo_secciones GS, $cnf_base.grupo_secciones GS2 + WHERE GSS.$cnf_id = GS.grupo + AND GS.grupo_padre = GS2.grupo + AND GS2.grupo_padre = $id" + ) + ); + //Si hace falta agreguen los bisnietos. + } + //Fin Agregado + if (DB::isError($secciones)) { return $secciones; } @@ -142,17 +165,16 @@ class AI_GrupoSecciones extends AI_DBTreeObject { } return true; } - // -X2C - // +X2C Operation 497 /** * @param DB $db DB donde guardar. - * @param bool $nuevo Si es true, se fuerza a guardar el Grupo de Secciones como nuevo. + * @param bool $nuevo Si es true, se fuerza a guardar el Grupo de + * Secciones como nuevo. * * @return PEAR_Error * @access public */ - function guardar($db, $nuevo = false) // ~X2C + function guardar($db, $nuevo = false) { // Guardo datos generales. $datos = array( @@ -185,16 +207,14 @@ class AI_GrupoSecciones extends AI_DBTreeObject { } return true; } - // -X2C - // +X2C Operation 498 /** * @param DB $db DB de donde borrar. * * @return PEAR_Error * @access public */ - function borrar($db) // ~X2C + function borrar($db) { // Obtengo campos comunes. $err = parent::borrar($db); @@ -211,12 +231,65 @@ class AI_GrupoSecciones extends AI_DBTreeObject { } return true; } - // -X2C - - // +X2C Operation 512 /** * Obtiene un array con una lista de secciones. + * Sólo se obtienen las secciones que todavía no pertenecen a ningún + * grupo. Si se especifica un grupo, se agregan las secciones de ese grupo + * al array resultante. + * + * @param DB $db Base de datos a usar para obtener los datos. + * @param int $grupo Grupo del cual obtener las secciones. + * + * @return array + * @access public + * @static + */ + function getSeccionesArray($db = null, $grupo = 0) + { + static $conf_dav, $conf_sec; + if (!$conf_dav or !$conf_sec) { + $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true); + $conf_dav = $conf['mecondav']; + $conf_sec = $conf['secciones']; + } + extract($conf_dav, EXTR_PREFIX_ALL, 'dav'); + extract($conf_sec, EXTR_PREFIX_ALL, 'sec'); + return $db->getAssoc( + "SELECT d.$dav_id, d.$dav_campo + FROM $dav_base.$dav_tabla as d + LEFT JOIN $sec_base.$sec_tabla AS s + ON s.$sec_campo = d.$dav_id + WHERE s.$sec_campo IS NULL + OR s.$sec_id = $grupo + ORDER BY d.$dav_campo ASC"); + } + + /** + * Obtiene un array con una lista de todas las secciones. + * + * @param DB $db Base de datos a usar para obtener los datos. + * + * @return array + * @access public + * @static + */ + function getAllSeccionesArray($db = null) + { + static $conf; + if (!$conf) { + $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true); + $conf = $conf['mecondav']; + } + extract($conf, EXTR_PREFIX_ALL, 'dav'); + return $db->getAssoc( + "SELECT d.$dav_id, d.$dav_campo + FROM $dav_base.$dav_tabla as d + ORDER BY d.$dav_campo ASC"); + } + + /** + * Obtiene un array con una lista de las secciones ocultas. * * @param DB $db Base de datos a usar para obtener los datos. * @@ -224,22 +297,73 @@ class AI_GrupoSecciones extends AI_DBTreeObject { * @access public * @static */ - function getSeccionesArray($db = null) // ~X2C + function getSeccionesOcultasArray($db = null) + { + static $conf; + if (!$conf) { + $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true); + $conf = $conf['ocultas']; + } + extract($conf, EXTR_PREFIX_ALL, 'ocu'); + return $db->getCol("SELECT d.$ocu_id FROM $ocu_base.$ocu_tabla as d"); + } + + /** + * Establece las secciones ocultas. + * + * @param DB $db Base de datos a usar para grabar los datos. + * + * @return Cantidad de secciones insertadas o PEAR_Error. + * @access public + * @static + */ + function setSeccionesOcultas($db = null, $secciones) + { + static $conf; + if (!$conf) { + $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true); + $conf = $conf['ocultas']; + } + extract($conf, EXTR_PREFIX_ALL, 'ocu'); + $res = $db->query("DELETE FROM $ocu_base.$ocu_tabla"); + if (DB::isError($res)) { + return $res; + } + foreach ($secciones as $seccion) { + $res = $db->query( + "INSERT INTO $ocu_base.$ocu_tabla VALUES (" + . $db->quote($seccion) . ")"); + if (DB::isError($res)) { + return $res; + } + } + return count($secciones); + } + + /** + * Obtiene el grupo al que pertenece una sección. + * + * @param int $seccion Sección a buscar. + * @param DB $db DB a usar. + * + * @return AI_GrupoSecciones + * @access public + * @static + */ + function getGrupo($seccion, $db = null) { - if ($db === null) { - $db =& DB::connect('mysql://mark:mark@intranet-db.mecon.ar/MEconDAV', - array('persistent' => true)); - } - if (DB::isError($db)) { - return $db; - } - return $db->getAssoc(' - SELECT S.section_id, S.description - FROM MEconDAV.Sections as S - ORDER BY description'); + static $conf; + if (!$conf) { + $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true); + $conf = $conf['secciones']; + } + extract($conf); + return $db->getOne( + "SELECT $id + FROM $base.$tabla + WHERE $campo = " . $db->quote($seccion)); } - // -X2C -} // -X2C Class :AI_GrupoSecciones +} ?> \ No newline at end of file