X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/6dae897ef96ea30feeb2fa6d5de82c9c7775b479..c3e87c06cf63d18cc37264de1bf8c611da031cad:/lib/AI/GrupoSecciones.php diff --git a/lib/AI/GrupoSecciones.php b/lib/AI/GrupoSecciones.php index df21dc6..eef1810 100644 --- a/lib/AI/GrupoSecciones.php +++ b/lib/AI/GrupoSecciones.php @@ -133,10 +133,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; } @@ -240,16 +267,92 @@ S } 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"); + 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"); } // -X2C + /** + * 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. + * + * @return array + * @access public + * @static + */ + 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); + } + // +X2C Operation 537 /** * Obtiene el grupo al que pertenece una sección. @@ -269,10 +372,10 @@ S $conf = $conf['secciones']; } extract($conf); - return $db->getOne(" - SELECT $id - FROM $base.$tabla - WHERE $campo = " . $db->quote($seccion)); + return $db->getOne( + "SELECT $id + FROM $base.$tabla + WHERE $campo = " . $db->quote($seccion)); } // -X2C