function get_permissions_list($module) { if ($_SESSION['super'] || $_SESSION['admin']) { $this->permissions_module = array('view', 'modify', 'delete'); $this->add = true; return 3; } else { $user = new users(); $id_user = $_SESSION['ident_user']; $user->validate_per_user($id_user); $this->permissions_module = array(); for ($i = 0; $i < $user->num_modules; $i++) { //Si coincide el modulo a buscar con el que estamos estudiando if ($user->per_modules[$i]->module_name == $module) { $j = 0; for ($k = 0; $k < $user->per_modules[$i]->num_methods; $k++) { //Si tiene permiso sobre el metodo se a�ade al array if ($user->per_modules[$i]->per_methods[$k]->per == 1) { $this->per_add = false; if ($user->per_modules[$i]->per_methods[$k]->method_name == 'view' || $user->per_modules[$i]->per_methods[$k]->method_name == 'modify' || $user->per_modules[$i]->per_methods[$k]->method_name == 'delete') { $this->permissions_module[$j] = $user->per_modules[$i]->per_methods[$k]->method_name; $j++; } if ($user->per_modules[$i]->per_methods[$k]->method_name == 'add') { $this->add = true; } } } return $j - 1; } } } }
function get_list_modules_menu() { //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; $cero = 0; $name = modules; $name1 = modules_gestion; if ($_SESSION['super']) { $this->sql = "SELECT * FROM `modules` WHERE `active`=" . $uno . " AND `public`=" . $cero . " ORDER BY `order`"; } else { if ($_SESSION['admin']) { $this->sql = "SELECT * FROM `modules` WHERE `active`=" . $uno . " AND `public`=" . $cero . " AND `name`<>\"" . $name . "\" AND `name`<>\"" . $name1 . "\"ORDER BY `order`"; } else { $user = new users(); $id_user = $_SESSION['ident_user']; $user->validate_per_user($id_user); $i = 0; $j = 0; $num_padres = 0; while ($i != $user->num_modules) { if ($user->per_modules[$i]->per == 1) { if ($user->per_modules[$i]->active == 1 && $user->per_modules[$i]->publico == 0) { if ($user->per_modules[$i]->parent != 0) { //Comprobamos que el padre no esté ya en la lísta, si no está lo incluimos $k = 0; $esta = false; while ($esta == false && $k != $num_padres) { if ($padres[$k]['id'] == $user->per_modules[$i]->parent) { $esta = true; } $k++; } //Comprobamos cómo se salió del while if (!$esta) { $padres[$num_padres]['id'] = $user->per_modules[$i]->parent; //Se introduce en la lista //cogemos los datos del usuario $this->read($user->per_modules[$i]->parent); $this->modules_list_menu[$j][$this->ddbb_id_module] = $this->id_module; $this->modules_list_menu[$j][$this->ddbb_name_web] = $this->name_web; $this->modules_list_menu[$j][$this->ddbb_name] = $this->name; $this->modules_list_menu[$j][$this->ddbb_path] = $this->path; $this->modules_list_menu[$j][$this->ddbb_active] = $this->active; $this->modules_list_menu[$j][$this->ddbb_public] = $this->publico; $this->modules_list_menu[$j][$this->ddbb_parent] = $this->parent; //Nos adelantamos para seguir el orden de la bbdd $j++; $num_padres++; } //cogemos los datos del usuario $this->modules_list_menu[$j][$this->ddbb_id_module] = $user->per_modules[$i]->id_module; $this->modules_list_menu[$j][$this->ddbb_name_web] = $user->per_modules[$i]->web_name; $this->modules_list_menu[$j][$this->ddbb_name] = $user->per_modules[$i]->name; $this->modules_list_menu[$j][$this->ddbb_path] = $user->per_modules[$i]->path; $this->modules_list_menu[$j][$this->ddbb_active] = $user->per_modules[$i]->active; $this->modules_list_menu[$j][$this->ddbb_public] = $user->per_modules[$i]->publico; $this->modules_list_menu[$j][$this->ddbb_parent] = $user->per_modules[$i]->parent; } else { //Comprobamos que el padre no esté ya en la lísta, si no está lo incluimos $k = 0; $esta = false; while ($esta == false && $k != $num_padres) { if ($padres[$k]['id'] == $user->per_modules[$i][$this->ddbb_id_module]) { $esta = true; } $k++; } //Comprobamos cómo se salió del while if (!$esta) { $padres[$num_padres]['lista'] = $user->per_modules[$i][$this->ddbb_parent]; //Se introduce en la lista //cogemos los datos del usuario $this->modules_list_menu[$j][$this->ddbb_id_module] = $user->per_modules[$i]->id_module; $this->modules_list_menu[$j][$this->ddbb_name_web] = $user->per_modules[$i]->web_name; $this->modules_list_menu[$j][$this->ddbb_name] = $user->per_modules[$i]->name; $this->modules_list_menu[$j][$this->ddbb_path] = $user->per_modules[$i]->path; $this->modules_list_menu[$j][$this->ddbb_active] = $user->per_modules[$i]->active; $this->modules_list_menu[$j][$this->ddbb_public] = $user->per_modules[$i]->publico; $this->modules_list_menu[$j][$this->ddbb_parent] = $user->per_modules[$i]->parent; $num_padres++; } } //else (ser padre) $j++; } //if } $i++; } //while return $j; } } //la ejecuta y guarda los resultados $this->result = $this->db->Execute($this->sql); //si falla if ($this->result === false) { $this->error = 1; $this->db->close(); return 0; } $this->num = 0; while (!$this->result->EOF) { //cogemos los datos del usuario $this->modules_list_menu[$this->num][$this->ddbb_id_module] = $this->result->fields[$this->ddbb_id_module]; $this->modules_list_menu[$this->num][$this->ddbb_name_web] = $this->result->fields[$this->ddbb_name_web]; $this->modules_list_menu[$this->num][$this->ddbb_name] = $this->result->fields[$this->ddbb_name]; $this->modules_list_menu[$this->num][$this->ddbb_path] = $this->result->fields[$this->ddbb_path]; $this->modules_list_menu[$this->num][$this->ddbb_active] = $this->result->fields[$this->ddbb_active]; $this->modules_list_menu[$this->num][$this->ddbb_public] = $this->result->fields[$this->ddbb_public]; $this->modules_list_menu[$this->num][$this->ddbb_parent] = $this->result->fields[$this->ddbb_parent]; $this->modules_list_menu[$this->num][$this->ddbb_order] = $this->result->fields[$this->ddbb_order]; //nos movemos hasta el siguiente registro de resultado de la consulta $this->result->MoveNext(); $this->num++; } $this->db->close(); return $this->num; }
function view($id, $tpl) { /* Cosas que faltan por hacer: De forma general, mirar los permisos del usuario que vaya a acceder aqui, para saber si tiene permisos de borrar editar ver etc... Averiguar como pasar el numero de registros, si va a ser a grupos a grupos, si va a ser a modulos, a modulos Order By (y mantener la búsqueda en el caso de que hubiera hecha una y averiguar la "pestaña" a la que hace referencia) Busquedas */ $cadena = ''; // Leemos el vehículo y se lo pasamos a la plantilla $this->read($id); $tpl->assign('objeto', $this); $user = new users(); $id_user = $_SESSION['ident_user']; $user->validate_per_user($id_user); if (!$_SESSION['super'] && !$_SESSION['admin']) { $drivers = false; $laborers = false; $i = 0; while ($i != $user->num_modules) { if ($user->per_modules[$i]->per == 1 && $user->per_modules[$i]->module_name == 'drivers') { //Se comprueba si se tiene permiso para ver $j = 0; while ($j < $user->per_modules[$i]->num_methods) { if ($user->per_modules[$i]->per_methods[$j]->per == 1 && $user->per_modules[$i]->per_methods[$j]->method_name == 'view') { $drivers = true; } $j++; } } else { if ($user->per_modules[$i]->per == 1 && $user->per_modules[$i]->module_name == 'laborers') { //Se comprueba si se tiene permiso para ver $j = 0; while ($j < $user->per_modules[$i]->num_methods) { if ($user->per_modules[$i]->per_methods[$j]->per == 1 && $user->per_modules[$i]->per_methods[$j]->method_name == 'view') { $laborers = true; } $j++; } } } $i++; } } else { $drivers = true; $laborers = true; } $mensaje = null; $mensaje[0]['id_mensaje'] = 1; $mensaje[0]['mes'] = "Sentimos informarle de que no tiene permiso para acceder a esta información"; //listado de conductores $tabla_listado_drivers = new table(false); if ($drivers) { $conductor = new drivers(); $num_drivers = $conductor->get_list_drivers_vehicle($_GET['id']); if ($num_drivers == 0) { $cadena = $cadena . $tabla_listado_drivers->tabla_vacia('drivers', false); $variables_drivers = $tabla_listado_drivers->nombres_variables; } else { $cadena = $cadena . $tabla_listado_drivers->make_tables('drivers', $conductor->drivers_list, array('Nombre', 20, 'Primer Apellido', 20, 'Segundo Apellido', 20), array($conductor->ddbb_id_driver, $conductor->ddbb_name, $conductor->ddbb_last_name, $conductor->ddbb_last_name2), $_SESSION['num_regs'], array(), false); $variables_drivers = $tabla_listado_drivers->nombres_variables; } } else { $cadena = $cadena . $tabla_listado_drivers->make_tables('drivers', $mensaje, array('ACCION NO PERMITIDA', 50), array('id_mensaje', 'mes'), 10, null, false); $variables_drivers = $tabla_listado_drivers->nombres_variables; } //listado de permisos por modulos $tabla_listado_laborers = new table(false); if ($laborers) { $peon = new laborers(); $num_laborers = $peon->get_list_laborers_vehicle($_GET['id']); if ($num_laborers == 0) { $cadena = $cadena . $cadena . $tabla_listado_laborers->tabla_vacia('laborers', false); //print ("Cadena".$cadena); $variables_laborers = $tabla_listado_laborers->nombres_variables; } else { $cadena = $cadena . $tabla_listado_laborers->make_tables('laborers', $peon->laborers_list, array('Nombre', 20, 'Primer Apellido', 20, 'Segundo Apellido', 20), array($peon->ddbb_id_laborer, $peon->ddbb_name, $peon->ddbb_last_name, $peon->ddbb_last_name2), $_SESSION['num_regs'], array(), false); $variables_laborers = $tabla_listado_laborers->nombres_variables; } } else { $cadena = $cadena . $tabla_listado_laborers->make_tables('laborers', $mensaje, array('ACCION NO PERMITIDA', 50), array('id_mensaje', 'mes'), 10, null, false); $variables_laborers = $tabla_listado_laborers->nombres_variables; } $i = 0; while ($i < count($variables_grupos) + count($variables_modulos)) { for ($j = 0; $j < count($variables_drivers); $j++) { $variables[$i] = $variables_drivers[$j]; $i++; } for ($k = 0; $k < count($variables_laborers); $k++) { $variables[$i] = $variables_laborers[$k]; $i++; } } $tpl->assign('variables', $variables); $tpl->assign('cadena', $cadena); return $tpl; }
function view($id, $tpl) { /* Cosas que faltan por hacer: De forma general, mirar los permisos del usuario que vaya a acceder aqui, para saber si tiene permisos de borrar editar ver etc... Averiguar como pasar el numero de registros, si va a ser a grupos a grupos, si va a ser a modulos, a modulos Order By (y mantener la b�squeda en el caso de que hubiera hecha una y averiguar la "pesta�a" a la que hace referencia) Busquedas */ $cadena = ''; // Leemos el usuario y se lo pasamos a la plantilla $this->read($id); $tpl->assign('objeto', $this); $user = new users(); $user->validate_per_user($_SESSION['user']); if (!$_SESSION['super'] || !$_SESSION['admin']) { $modules = false; $i = 0; while ($i != $user->num_modules) { if ($user->per_modules[$i]->per == 1 && $user->per_modules[$i]->module_name == 'modules') { //Se comprueba si se tiene permiso para ver $j = 0; while ($j < $user->per_modules[$i]->num_methods) { if ($user->per_modules[$i]->per_methods[$j]->per == 1 && $user->per_modules[$i]->per_methods[$j]->method_name == 'view') { $modules = true; } $j++; } } $i++; } } else { $modules = true; } $mensaje = null; $mensaje[0]['id_mensaje'] = 1; $mensaje[0]['mes'] = "Sentimos informarle de que no tiene permiso para acceder a esta informaci�n"; //listado de modulos $tabla_modulos = new table(false); if ($modules) { if ($this->num_modules == 0) { $cadena = $cadena . $tabla_modulos->tabla_vacia('modules'); $variables_modulos = $tabla_modulos->nombres_variables; } else { //Se prepara el array de permisos $k = 0; $permissions = null; for ($i = 0; $i < $this->num_modules; $i++) { if ($this->per_modules[$i]->per == 1 && $this->per_modules[$i]->module_name != 'error') { $permissions[$k]['id_module'] = $this->per_modules[$i]->id_module; $permissions[$k]['name'] = $this->per_modules[$i]->web_name; $permissions[$k]['methods'] = ""; for ($j = 0; $j < $this->per_modules[$i]->num_methods; $j++) { if ($this->per_modules[$i]->per_methods[$j]->per == 1) { $permissions[$k]['methods'] = $permissions[$k]['methods'] . ' ' . $this->per_modules[$i]->per_methods[$j]->method_name_web; } } $k++; } } $cadena = $cadena . $tabla_modulos->make_tables('modules', $permissions, array('Nombre del modulo', 20, 'M�todos en los que se tiene permiso', 120), array('id_module', 'name', 'methods'), $_SESSION['num_regs'], null, false); $variables_modulos = $tabla_modulos->nombres_variables; } } else { $cadena = $cadena . $tabla_modulos->make_tables('modules', $mensaje, array('ACCION NO PERMITIDA', 50), array('id_mensaje', 'mes'), 10, null, false); $variables_modulos = $tabla_modulos->nombres_variables; } $i = 0; $variables = null; while ($i < count($variables_modulos)) { for ($k = 0; $k < count($variables_modulos); $k++) { $variables[$i] = $variables_modulos[$k]; $i++; } } //Se comprueba si hay permiso para borrar o modificar $permisos_mod_del = new permissions(); $permisos_mod_del->get_permissions_modify_delete('groups'); $tpl->assign('acciones', $permisos_mod_del->per_mod_del); $tpl->assign('variables', $variables); $tpl->assign('cadena', $cadena); return $tpl; }