/** * 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(); }
/** * Retorna la lista de items a los que puede acceder el usuario * * @param unknown_type $solo_primer_nivel * @param string $proyecto Por defecto el actual * @param string $grupos_acceso Por defecto el del usuario actual * @return array RecordSet contienendo información de los items */ function get_items_menu($proyecto = null, $grupos_acceso = null) { if (!isset($proyecto)) { $proyecto = $this->id; } if (!isset($grupos_acceso)) { $grupos_acceso = toba::manejador_sesiones()->get_perfiles_funcionales_activos(); } if (toba::nucleo()->utilizar_metadatos_compilados($proyecto)) { $rs = $this->recuperar_datos_compilados_grupo('toba_mc_gene__grupo_', $grupos_acceso, 'get_items_menu', true); } else { $rs = toba_proyecto_db::get_items_menu($proyecto, $grupos_acceso); } // Se quitan los items excluidos de la lista de items que puede acceder el usuario. $res = array(); foreach ($rs as $r) { if (!in_array($r['item'], $this->items_excluidos)) { $res[] = $r; } } return $res; }