From 5d1175ef0a3555a5042a7ab07f0e67db544b4685 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 7 Nov 2003 20:41:31 +0000 Subject: [PATCH] Se agrega pantalla de carga de secciones ocultas. --- lib/AI/GrupoSecciones.ini | 7 +++ lib/AI/GrupoSecciones.php | 75 +++++++++++++++++++++++ sistema/www/secciones_ocultas.php | 98 +++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+) create mode 100644 sistema/www/secciones_ocultas.php diff --git a/lib/AI/GrupoSecciones.ini b/lib/AI/GrupoSecciones.ini index eae6a86..42e04a3 100644 --- a/lib/AI/GrupoSecciones.ini +++ b/lib/AI/GrupoSecciones.ini @@ -15,9 +15,16 @@ tabla = grupo_secciones_seccion id = grupo campo = seccion +; Tabla de secciones ocultas. +[ocultas] +base = intranet +tabla = secciones_censuradas +id = seccion + ; Vinculación con MEconDAV. [mecondav] base = MEconDAV tabla = Sections id = section_id campo = description + diff --git a/lib/AI/GrupoSecciones.php b/lib/AI/GrupoSecciones.php index a9c3839..eef1810 100644 --- a/lib/AI/GrupoSecciones.php +++ b/lib/AI/GrupoSecciones.php @@ -278,6 +278,81 @@ S } // -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. diff --git a/sistema/www/secciones_ocultas.php b/sistema/www/secciones_ocultas.php new file mode 100644 index 0000000..1c34f31 --- /dev/null +++ b/sistema/www/secciones_ocultas.php @@ -0,0 +1,98 @@ + | +// +--------------------------------------------------------------------+ +// +// $Id$ +// + +// Requires {{{ +require_once 'MECON/general.php'; +prepend_include_path('/var/www/sistemas/ai/sistema/local_lib'); +require_once 'permisos.php'; +require_once 'AI/GrupoSecciones.php'; +require_once 'MECON/HTML/QuickForm.php'; +//require_once 'MECON/HTML/Error.php'; +// }}} + +// Si no está logueado, se redirige a la Intranet. {{{ +if (!@$_SESSION['usuario']) { + header('Location: /sistemas/intranet/login?redirect=' + . urlencode($_SERVER['REQUEST_URI'])); +} +// }}} + +// Debug. {{{ +require_once 'PEAR.php'; +#PEAR::setErrorHandling(PEAR_ERROR_TRIGGER); +PEAR::setErrorHandling(PEAR_ERROR_RETURN); +// }}} + +// Creo la base de datos. {{{ +require_once 'AI/DB.php'; +$db =& AI_DB::connect('../conf/DB.ini'); +if (DB::isError($db)) { + die($db->getMessage()); +} +// }}} + +// Creo el objeto de permisos y chequeo que tenga permiso para administrar noticias para seguir. {{{ +require_once 'SAMURAI/Perm.php'; +$perm = new SAMURAI_Perm($_SESSION['usuario'], AI_PERM, $db); +$perm->chequear(AI_PERM_NOTICIAS); +// }}} + +// Creo el Marco. {{{ +require_once 'MECON/Marco.php'; +$marco = new MECON_Marco('../conf/Marco.php', $perm); +// }}} + +// Creo formulario. {{{ +$form =& new MECON_HTML_QuickForm('', 'post', $_SERVER['PHP_SELF']); +$form->renderer->tabla->updateAttributes(array('width' => '400')); +$form->addElement('header','cabecera', 'Secciones Ocultas'); +$f_secciones =& $form->addElement('select', 'secciones', 'Secciones', + AI_GrupoSecciones::getAllSeccionesArray($db), + array('multiple' => 'multiple', 'size' => 8)); +$form_btn_actualizar =& MECON_HTML_QuickForm::createElement('submit', 'actualizar' , 'Actualizar'); +$form->addGroup(array(&$form_btn_actualizar), 'botones'); +$marco->addBody($form); +// }}} + +// Si los datos del formulario son válidos, hago el ABM. {{{ +if ($form->validate()) { + $secciones = $form->getSubmitValue('secciones'); + $res = AI_GrupoSecciones::setSeccionesOcultas($db, $secciones); +} +// }}} + +// Cargo formulario con los datos actualizados. {{{ +$f_secciones->setSelected(AI_GrupoSecciones::getSeccionesOcultasArray($db)); +// }}} + +// Muestro la página. {{{ +$marco->display(); +// }}} + +?> -- 2.43.0