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;
 }