Example #1
0
 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));
                     }
                 }
             }
         }
     }
     //----------------
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * @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();
         }
     }
     //----------------
 }
Example #4
0
 /**
  * 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');
             }
         }
     }
     //--------------------------------------------------
 }
Example #5
0
 /**
  *  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]);
             }
         }
     }
     //----------------
 }
Example #6
0
 /**
  * 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;
 }
Example #7
0
 /**
  * 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;
 }