====== Esbós previ per la futura versió 1.1.6 ====== ===== Login ===== * Tres intents per a fer login. * Crear un enllaç per a confirmar l'alta o el canvi de contrasenya (després d'utilitzar l'opció de //I forgot my password//) semblant al que hi ha implementat als fòrums i wikis del servei. ===== Grups de Recerca ===== 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. {{:sermn_wiki:userpages:marta:group-project-user.png?500|Relació Usuari-Projecte(s)-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: * Automàticament al seleccionar es projectes. * Només es pot escollir el grup per defecte tenint en compte els projectes assignats. * Escollir els grups (i el de per defecte) i després limitar els projectes depenent dels grups assignats. * ... ===== Base de dades ===== ==== 'LIMIT 1' a les comandes en SQL ==== 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. ==== FOREIGN KEYS a MySQL ==== 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, * [[http://articles.techrepublic.com.com/5100-10878_11-6035435.html | An introduction to foreign keys and referential integrity in MySQL]] * [[http://www.databasejournal.com/features/mysql/article.php/2248101/Referential-Integrity-in-MySQL.htm | Referential Integrity in MySQL]] * [[http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html | MySQL 5.1 Reference Manual :: 13 Storage Engines]] * [[http://blogs.sitepoint.com/2009/03/25/mysql-myisam-table-pros-con/ | MySQL: the Pros and Cons of MyISAM Tables]] ===== Altres modificacions ===== Les modificacions que es citen a continuació encara no s'han plantejat ben bé con s'haurien de ser fer. ==== Afegir llistat d'usuaris amb accés a un instrument ==== 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. ==== Edició de costos ==== No s'ha plantejat com seria el formulari per la edició de costos ni la part de facturació. ==== Emails ==== 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//. ==== Permisos ==== Menú de edició de permisos per poder crear nous tipus d'usuaris. ===== Installer ===== 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. ===== Referències i enllaços d'interès ===== * [[wp>Entity-relationship_model | Entity-relationship model]] * [[http://databases.about.com/cs/specificproducts/a/designmenu.htm | Database Design from the Ground Up.]] By Mike Chapple, [[http://www.about.com | About.com Guide]] * [[http://www.databaseanswers.org/modelling_tools.htm | Database Modelling Tools]] a [[http://www.databaseanswers.org/ | Database Answers]] * [[http://code.google.com/p/wwwsqldesigner/ | wwwsqldesigner.]] Visual web-based SQL modelling tool. ([[http://ondras.zarovi.cz/sql/demo/?keyword=default | Demo available]]) * [[http://ppms.info/ | The Pasteur Platform Management System (PPMS)]] is a web based application for the management of technology related shared facilities (platforms). PPMS is a time based booking management system, allowing users to easily log in and reserve time easily in a calendar based interface. However, PPMS goes far beyond this in the advanced functions it offers to the both the users and the facility staff.