function get_modules($id, $all) { //coge las variables globales del fichero config.inc.php global $DDBB_TYPE, $DDBB_NAME, $IP_DDBB, $DDBB_USER, $DDBB_PASS, $DDBB_PORT, $TABLE_PREFIX; $this->db_type = $DDBB_TYPE; $this->db_name = $DDBB_NAME; $this->db_ip = $IP_DDBB; $this->db_user = $DDBB_USER; $this->db_passwd = $DDBB_PASS; $this->db_port = $DDBB_PORT; $this->table_prefix = $TABLE_PREFIX; //El parametro $all nos indica si se quieren todos los hijos, nietos... //a partir del id dado (0 para los padres), o solo los hijos de un solo padre. //se puede acceder a los usuarios por numero de campo o por nombre de campo $ADODB_FETCH_MODE = ADODB_FETCH_BOTH; //crea una nueva conexin con una bbdd (mysql) $this->db = NewADOConnection($this->db_type); //le dice que no salgan los errores de conexin de la ddbb por pantalla $this->db->debug = false; //realiza una conexin permanente con la bbdd $this->db->Connect($this->db_ip, $this->db_user, $this->db_passwd, $this->db_name); //mete la consulta $uno = 1; $this->sql = 'SELECT * FROM `modules` WHERE `parent` = \'' . $id . '\' AND `active` = ' . $uno . ' ORDER BY `order`'; //la ejecuta y guarda los resultados $this->result = $this->db->Execute($this->sql); if ($this->result === false) { $this->error = 1; $this->db->close(); return 0; } if ($id == 0 || $id == -2 || $_SESSION['super'] || $_SESSION['admin'] && $this->result->fields['name'] != 'modules') { $this->num = 0; while (!$this->result->EOF) { //cogemos los datos $tabla[$this->num]['id_module'] = $this->result->fields['id_module']; $tabla[$this->num]['name'] = $this->result->fields['name']; $tabla[$this->num]['name_web'] = $this->result->fields['name_web']; $tabla[$this->num]['path'] = $this->result->fields['path']; $tabla[$this->num]['parent'] = $this->result->fields['parent']; //nos movemos hasta el siguiente registro de resultado de la consulta $this->result->MoveNext(); $this->num++; } } else { $this->num = 0; while (!$this->result->EOF) { //cogemos los datos $temp[$this->num]['id_module'] = $this->result->fields['id_module']; $temp[$this->num]['name'] = $this->result->fields['name']; $temp[$this->num]['name_web'] = $this->result->fields['name_web']; $temp[$this->num]['path'] = $this->result->fields['path']; $temp[$this->num]['parent'] = $this->result->fields['parent']; //nos movemos hasta el siguiente registro de resultado de la consulta $this->result->MoveNext(); $this->num++; } $i = 0; $j = 0; $user = new users(); $id_user = $_SESSION['ident_user']; $permission = new permissions_modules(); while ($i != $this->num) { if ($permission->validate_per_module_menus($id_user, $temp[$i]['id_module']) == 1) { $tabla[$j]['id_module'] = $temp[$i]['id_module']; $tabla[$j]['name'] = $temp[$i]['name']; $tabla[$j]['name_web'] = $temp[$i]['name_web']; $tabla[$j]['path'] = $temp[$i]['path']; $tabla[$j]['parent'] = $temp[$i]['parent']; $j++; } //if $i++; } } //else $this->db->close(); if ($all) { for ($i = 0; $i < count($tabla); $i++) { $tabla[$i]['hijos'] = $this->get_modules($tabla[$i]['id_module'], true); } } return $tabla; }
//- El usuario no est� logeado pero el m�dulo es p�blico, en cuyo caso no habr�a problema //- El usuario est� logeado pero intenta entrar en un m�udlo donde no tiene permisos if (!isset($_SESSION['user']) && isset($_GET['module']) && $_GET['module'] != 'user_corps') { //Se comprueba si el modulo es p�blico, sino es as� se indica el error if ($modules->is_public_module($_GET['module']) == 0) { $module_name = 'error'; } else { $module_name = $_GET['module']; } } //Se comprueba que el usuario tenga permisos sobre el m�dulo que aparece en la barra de direccion if (isset($_SESSION['user']) && isset($_GET['module'])) { if (!$_SESSION['super'] && !$_SESSION['admin']) { //Se comprueba si el modulo es p�blico si es as� se deja no hay problema, pero sino se tendr� que saber si tiene o no acceso a �l if ($modules->is_public_module($_GET['module']) == 0) { $permiso = new permissions_modules(); //Se prepara para poder investigar los permisos en el modulo if (!isset($_GET['method'])) { $method = null; } else { $method = $_GET['method']; } if ($_GET['module'] != 'user_corps' && $method != 'select') { if ($permiso->validate_per($_SESSION['user'], $_GET['module'], $method) == 0) { $module_name = 'error'; } } } } else { if ($_SESSION['admin'] && !$_SESSION['super'] && ($_GET['module'] == 'modules' || $_GET['module'] == 'methods')) { $module_name = 'error';