<?php //codigo por jpcoseani //script que devuelve el listado de modulos de un rol determinado global $ari; $ari->popup = 1; // no mostrar el main_frame //falta controlar si viene el id del rol y validar si el rol se crea correctamente if (isset($_POST['id'])) { $role = new seguridad_role($_POST['id']); } else { throw new OOB_Exception_400("La variable [id] no esta definida"); } //ARRAY CON LOS MODULOS DEL ROLE $modules_role = false; $modules_role = seguridad_role::listModulesFor($role, false); $modulos = array(); if ($modules = OOB_module::listModules()) { foreach ($modules as $m) { $padre = array(); $padre['leaf'] = false; $padre['id'] = "m_" . $m->name(); $padre['text'] = $m->nicename(); $padre['expanded'] = true; $padre['iconCls'] = 'Clsmodule'; $name = ''; $name = $m->name(); //VEO SI EL MODULO ESTA EN EL ROL if ($modules_role) { if (in_array($name, $modules_role)) { $padre['checked'] = true;
public static function adminFullMenu() { global $ari; // $return = OOB_module::listModules ('enabled', false); $roles = array(); $mismodulos = array(); $return = false; if ($ari->get('user') == false) { return false; } //----------- // cache del menu para cada usuario // Set a id for this cache $id = 'admin_fullmenu__' . $ari->agent->getLang() . '__' . $ari->user->get('user') . '.php'; //Set cache options $options = array('cacheDir' => $ari->cachedir . DIRECTORY_SEPARATOR, 'lifeTime' => 9000, 'fileNameProtection' => false, 'automaticSerialization' => true); // 'onlyMemoryCaching' => true, // 'memoryCaching' => true // Create a Cache_Lite object $Cache_Lite = new Cache_Lite($options); // Test if thereis a valide cache for this id if ($return = $Cache_Lite->get($id)) { return $return; } else { // No valid cache found if ($roles = seguridad_role::myRoles($ari->get('user'))) { foreach ($roles as $role) { if ($mods = seguridad_role::listModulesFor($role)) { $mismodulos = array_merge($mismodulos, $mods); } } } // in some weird situations array_unique doesn't work, probably because // it s an object array $out = array(); $list = array(); foreach ($mismodulos as $key => $so) { if (!in_array($so->name(), $list)) { $list[] = $so->name(); $out[$key] = $so; } } $mismodulos = $out; if (count($mismodulos) > 0) { $i = 0; foreach ($mismodulos as $modula) { $menu = $modula->adminMenu(); if ($modula->isenabled() && count($menu)) { $return[$i]["name"] = $modula->nicename(); $return[$i]["id"] = $modula->name(); $return[$i]['menu'] = $menu; $i++; } } } $Cache_Lite->save($return); return $return; } }