Actualment no hi ha cap taula a la base de dades que estableixi una relació entre un usuari i el grup de recerca al qual pertany, i aquest relació s'ha d'establir indirectament a través dels projecte als quals pot carregar reserves un usuari. Això no és cap problema en el cas d'una relació unívoca com la del'User 1 amb el Group A a través del Project A, però genera incertesa en el cas de projectes compartits entre grups. Per exemple, no està clar a quin grup pertany l'User 2 ja que pot fer reserves a un projecte compartit pels grups Group A i Group B. En canvi, tot i que l'User 3 també fa reserves a aquest projecte compartit, el fet que pugui fer reserves al Project B que només pertany al Group B ens indica que pertany a aquest grup.
En qualsevol cas tot serà més senzill si establim un vincle directe entre l'usuari i el grup o grups a què pertany,
La consulta següent no funciona com s'esperava, ja que el llistat inclou els usuaris que pertanyen al grup i a més pertanyen a un altre grup. Seria més útil que el llistat només inclogués els usuaris que no pertanyen al grup.
-- Table structure for table `usergroups` -- CREATE TABLE `usergroups` ( `userid` smallint(5) unsigned NOT NULL default '0', `groupid` smallint(5) unsigned NOT NULL default '0', `isdefault` tinyint(1) default '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
on isdefault
es podria fer servir per indicar el grup que es triarà per defecte en cas de pertànyer a més d'un grup.
Això permetrà consultar els usuaris que pertanyen a un grup, per exemple, el Grup 2
SELECT users.name, groups.longname, groups.id FROM users, usergroups, groups WHERE users.id = usergroups.userid AND usergroups.groupid = groups.id AND groups.id = 2
o a quin grup pertany un usuari, per exemple, l'Usuari 2
,
SELECT users.id, users.name, groups.longname, groups.id FROM users, usergroups, groups WHERE groups.id = usergroups.groupid AND usergroups.userid = users.id AND users.id = 2
o els usuaris aliens al grup de recerca (per exemple, el Grup 1
), però que estan autoritzats a fer reserves a projectes del grup, i a quin projecte o projectes estan autoritzats a fer reserves,
SELECT DISTINCT users.id, users.username, projects.longname, projects.id, groups.longname, groups.id FROM users, userprojects, projects, projectgroups, groups, usergroups WHERE users.id = userprojects.userid AND userprojects.projectid = projects.id AND projects.id = projectgroups.projectid AND projectgroups.groupid = groups.id AND groups.id = 1 AND users.id = usergroups.userid AND usergroups.groupid <> 1
Com implementar la relació usuari-grup al formulari de edició i creació d'usuaris????? Possibles solucions:
A la major part de les comandes en SQL generades pel programa de reserves, es fa servir LIMIT 1
. Això és deu a que no s'han definit camps índex únics, de forma que podria haver més d'un registre amb la mateixa informació, i per això cal limitar el nombre de respostes a la consulta.
Mentre que el motor de taules per defecte de MySQL, MyISAM, no permet l'existència de FOREIGN KEYS
, el motor InoDB si que les permet. No és un canvi a curt termini, però a la llarga convindrà plantejar-se redissenyar la base de dades per tal d'incorporar-hi mecanismes de control d'integritat. Per més informació consultar, entre altre,
Les modificacions que es citen a continuació encara no s'han plantejat ben bé con s'haurien de ser fer.
Hores d'ara no és possible conèixer a través del programa de reserves quins usuaris tenen accés a un determinat instrument, tot i que la informació hi és a la base de dades (taula permissions
). Afegir aquesta opció… on?
SELECT users.name, instruments.longname, instruments.id FROM users, permissions, instruments WHERE users.id = permissions.userid AND permissions.instrid = instruments.id AND instruments.id = 2
De moment es mostra el llistat al formulari de edició del instrument.De forma semblant al mostrat al formulari de grups També hi ha un menú llistat però queda polir-ho ampliar-ho per a poder escollir més opcions. Queda pendent pensar quin seria el millor lloc per mostrar aquests llistats i com.
No s'ha plantejat com seria el formulari per la edició de costos ni la part de facturació.
Possibilitat de enviar correus electrònics des de la aplicació. Per exemple, des de el calendari de reserves o als menús de email lists i my account. Es pot ampliar la classe emailer.
Menú de edició de permisos per poder crear nous tipus d'usuaris.
L'aplicació incorpora un instal·lador. Aparentment es va solucionar un petit error que deixava penjada la instal·lació. Faltaria comprovar que realment no te cap altre error i que la part de actualitzar a una nova versió també funciona. De la mateixa manera, del tema RADIUS i LDAP no s'han tocat res.