function aplicar_restricciones_funcionales() { parent::aplicar_restricciones_funcionales(); //-- Restricción funcional efs no-visibles y no-editables ------ $no_visibles = toba::perfil_funcional()->get_rf_form_efs_no_visibles($this->_id[1]); $no_editables = toba::perfil_funcional()->get_rf_form_efs_no_editables($this->_id[1]); if (!empty($no_visibles) || !empty($no_editables)) { for ($a = 0; $a < count($this->_info_formulario_ef); $a++) { $id_ef = $this->_info_formulario_ef[$a]['identificador']; //Existe el ef luego de la configuración? if (isset($this->_elemento_formulario[$id_ef])) { $id_metadato = $this->_info_formulario_ef[$a]['objeto_ei_formulario_fila']; if (in_array($id_metadato, $no_editables)) { $this->ef($id_ef)->set_solo_lectura(true); } if (in_array($id_metadato, $no_visibles)) { if (in_array($id_ef, $this->_lista_ef_post)) { //Si no existe el ef.. la RF que lo desactiva no tiene sentido, puede pasar por excepcion en etapa eventos $this->desactivar_efs(array($id_ef)); } } } } } //---------------- }
/** * Retorna la lista de tabs de la pantalla actual * @return array de toba_tab */ function get_lista_tabs() { //-- Restricción funcional pantalla no-visible ------ //Se modifica el metodo para que el ci almacene la lista de tabs modificados por las restricciones (caso wizard) $lista = array(); $no_visibles = toba::perfil_funcional()->get_rf_pantallas_no_visibles($this->_id[1]); for ($a = 0; $a < count($this->_info_ci_me_pantalla); $a++) { $id = $this->_info_ci_me_pantalla[$a]["identificador"]; if (!in_array($this->_info_ci_me_pantalla[$a]['pantalla'], $no_visibles)) { if (isset($this->_lista_tabs[$id])) { $lista[$id] = $this->_lista_tabs[$id]; } } } return $lista; }
/** * @ignore */ function aplicar_restricciones_funcionales() { parent::aplicar_restricciones_funcionales(); //-- Restricción funcional Columnas no-visibles ------ $no_visibles = toba::perfil_funcional()->get_rf_cuadro_cols_no_visibles($this->_id[1]); if (!empty($no_visibles)) { $alguno_eliminado = false; $limite = count($this->_info_cuadro_columna); //Para evitar el recalculo en cada vuelta for ($a = 0; $a < $limite; $a++) { if (in_array($this->_info_cuadro_columna[$a]['objeto_cuadro_col'], $no_visibles)) { $clave = $this->_info_cuadro_columna[$a]['clave']; array_splice($this->_info_cuadro_columna, $a, 1); //Elimina el elemento y reorganiza indices $a--; $limite--; //por eso vuelvo puntero atras y descuento 1 del maximo $alguno_eliminado = true; toba::logger()->debug("Restricción funcional. Se filtro la columna: {$clave}", 'toba'); } } if ($alguno_eliminado) { $this->procesar_definicion_columnas(); } } //---------------- }
/** * Se aplican las restricciones funcionales posibles para este componente * @ignore */ protected function aplicar_restricciones_funcionales() { //-- Restricción funcional eventos no-visibles ------ $no_visibles = toba::perfil_funcional()->get_rf_eventos_no_visibles(); if (!empty($no_visibles)) { foreach ($this->_eventos_usuario_utilizados as $id => $evento) { if (in_array($evento->get_id_metadato(), $no_visibles)) { $evento->ocultar(); toba::logger()->debug("Restricción funcional. Se filtro el evento: {$id}", 'toba'); } } } //-------------------------------------------------- }
/** * Se aplican las restricciones funcionales necesarias a cada columna. * @ignore */ function aplicar_restricciones_funcionales() { parent::aplicar_restricciones_funcionales(); //-- Restricción funcional columnas no-visibles ------ $no_visibles = toba::perfil_funcional()->get_rf_filtro_cols_no_visibles($this->_id[1]); if (!empty($no_visibles)) { foreach ($this->_columnas as $id => $columna) { if (in_array($columna->get_id_metadato(), $no_visibles)) { unset($this->_columnas[$id]); } } } //---------------- }
/** * El perfil funcional permite agrupar derechos y restricciones a acceder a determinados elementos de un proyecto * @return toba_perfil_funcional */ static function perfil_funcional() { if (!isset(self::$perfil_funcional)) { self::$perfil_funcional = new toba_perfil_funcional(); } return self::$perfil_funcional; }
/** * Cambia la pantalla a utilizar en el servicio actual * El cambio recien sera efectivo cuando se utilize la pantalla con el metodo pantalla() * @param string $id Identificador de la pantalla, tal como se definio en el editor */ function set_pantalla($id) { $no_visibles = toba::perfil_funcional()->get_rf_pantallas_no_visibles($this->_id[1]); $ok = false; foreach ($this->_info_ci_me_pantalla as $info_pantalla) { if (!$ok && $info_pantalla['identificador'] == $id) { if (in_array($info_pantalla['pantalla'], $no_visibles)) { //-- Restricción funcional pantalla no-visible ------ throw new toba_error_def($this->get_txt() . "No es posible navegar hacia la pantalla '" . $id . "' ya que se encuentra oculta por una restricción funcional"); //-------------- } else { $ok = true; } } } if (!$ok) { throw new toba_error_def($this->get_txt() . "El identificador de pantalla '" . $id . "' no está definido en el ci."); } if (isset($this->_pantalla_servicio)) { throw new toba_error_def($this->get_txt() . "No es posible cambiar la pantalla a mostrar porque ya ha sido utilizada."); } $this->_pantalla_id_servicio = $id; }