/** * 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(); }
/** * 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]); }