Пример #1
0
 /**
  *	Compilacion de GRUPOS de ACCESO
  */
 function compilar_metadatos_generales_grupos_acceso($limpiar_existentes = false)
 {
     toba_proyecto_db::set_db($this->db);
     if ($limpiar_existentes) {
         $archivos = toba_manejador_archivos::get_archivos_directorio($this->get_dir_generales_compilados(), '/toba_mc_gene__grupo/');
         foreach ($archivos as $archivo) {
             unlink($archivo);
         }
     }
     $this->manejador_interface->mensaje('Perfiles funcionales', false);
     foreach ($this->get_indice_grupos_acceso() as $grupo_acceso) {
         $nombre_clase = 'toba_mc_gene__grupo_' . $grupo_acceso;
         $archivo = $this->get_dir_generales_compilados() . '/' . $nombre_clase . '.php';
         $clase = new toba_clase_datos($nombre_clase);
         //-- Menu -------------------------------
         $datos = toba_proyecto_db::get_items_menu($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
         }
         $clase->agregar_metodo_datos('get_items_menu', $temp);
         //-- Control acceso ---------------------
         $datos = toba_proyecto_db::get_items_accesibles($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
         }
         $clase->agregar_metodo_datos('get_items_accesibles', $temp);
         //-- Permisos ---------------------------
         $datos = toba_proyecto_db::get_lista_permisos($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['nombre'] . '-'] = $dato;
             //Se concatena un string porque asi el merge unifica si o si aunque el nombre sea un numero
         }
         $clase->agregar_metodo_datos('get_lista_permisos', $temp);
         //-- Acceso items zonas -----------------
         foreach ($this->get_indice_zonas() as $zona) {
             $datos = toba_proyecto_db::get_items_zona($this->get_id(), array($grupo_acceso), $zona);
             $temp = array();
             foreach ($datos as $dato) {
                 $temp[$dato['item_proyecto'] . '-' . $dato['item']] = $dato;
             }
             $clase->agregar_metodo_datos('get_items_zona__' . $zona, $temp);
         }
         //-- Membresía -------------------
         $miembros = toba_proyecto_db::get_perfiles_funcionales_asociados($this->get_id(), $grupo_acceso);
         $clase->agregar_metodo_datos('get_membresia', $miembros);
         //Guardo el archivo
         $clase->guardar($archivo);
         $this->manejador_interface->progreso_avanzar();
     }
     //-- Agrego los items publicos en un archivo aparte, para que el usuario no autentificado pueda navegarlos
     $nombre_clase = 'toba_mc_gene__items_publicos';
     $archivo = $this->get_dir_generales_compilados() . '/' . $nombre_clase . '.php';
     $clase = new toba_clase_datos($nombre_clase);
     $datos = toba_proyecto_db::get_items_accesibles($this->get_id(), array());
     $temp = array();
     foreach ($datos as $dato) {
         $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
     }
     $clase->agregar_metodo_datos('get_items_accesibles', $temp);
     $clase->guardar($archivo);
     $this->manejador_interface->progreso_avanzar();
     $this->manejador_interface->progreso_fin();
 }
Пример #2
0
 /**
  * Valida que un grupo de acceso tenga acceso a un item
  */
 function puede_grupo_acceder_item($item)
 {
     $grupos_acceso = toba::manejador_sesiones()->get_perfiles_funcionales_activos();
     //Recupero los items y los formateo en un indice consultable
     if (!isset($this->indice_items_accesibles)) {
         $this->indice_items_accesibles = array();
         if (toba::nucleo()->utilizar_metadatos_compilados($this->id, 'compilados')) {
             ///-- Metadatos compilados
             if (!empty($grupos_acceso)) {
                 //-- Busca los items accesibles por grupo
                 $this->indice_items_accesibles = $this->recuperar_datos_compilados_grupo('toba_mc_gene__grupo_', $grupos_acceso, 'get_items_accesibles', false);
             } else {
                 //-- Si no tiene grupo, busca aquellos items que son públicos
                 $this->indice_items_accesibles = $this->recuperar_datos_compilados_grupo('toba_mc_gene__items_', array('publicos'), 'get_items_accesibles', false);
             }
         } else {
             //-- Metadatos salen de la base
             $rs = toba_proyecto_db::get_items_accesibles($this->id, $grupos_acceso);
             foreach ($rs as $accesible) {
                 $this->indice_items_accesibles[$accesible['proyecto'] . '-' . $accesible['item']] = 1;
             }
         }
     }
     return isset($this->indice_items_accesibles[$this->id . '-' . $item]);
 }