new users management (incomplete)
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - PLACEMENT-NORMALIZATION
7       DONE . Normalize previous points
8       DONE . Denormalize "Info" view
9       DONE . Denormalize explained matches
10       DONE . Check placement
11       DONE . Distinguish between inherited mult and local mult
12
13    - AUTO-MAINTENANCE
14      DONE . Terms Of Service acceptance
15        DONE . print date of hard switch
16        DONE . TOS version
17        DONE . user TOS acceptance (db field)
18        DONE . show TOS ([show me later, yes, no]/[yes, no])
19        DONE . switch-off date
20        DONE . manage accept
21        DONE . manage refuse
22        DONE . show current TOS
23        DONE . disable user reason integer field and remove SUSPEND state (db, php)
24        DONE . fix tos layout
25        DONE . opt - download TOS
26        . opt - checkbox for anonimous users with message when not checked
27        . opt - button enabled when arrived to the bottom of the TOS only
28        . opt - check TOS version between config file and TOS file
29      DONE . show guarantee (/guar <login> command)
30        DONE . multi-language
31        DONE . command documentation
32        DONE . manage disagreeding users investigation
33        DONE . self guaranteed
34
35      DONE . userauth command works
36      DONE . use it by the usermgmt page
37      . finish to implement the user management system
38      . email validation
39      . account expiration
40      . New Users Guarantee Procedure
41        . Change guarantee workflow
42        . Db update
43        . Send email with appropriate headers
44            |
45            V
46          brisk   ->      mail-table
47            |                 |
48            V
49           user               |
50            |
51            V                 |
52       click-link -> check with mail-table
53                              |
54                              V
55                          and update DB
56                       (needs ad-hoc page)
57
58        . Admin panel
59        . Write automatic procmail filter
60          . Procmail configuration
61          . Mail-recipient-side
62          . Server-side
63      . Email validation
64      . Account expiration
65
66    DONE - CONTINUE FEATURE
67      DONE . replace explicit strings with multilanguage array
68      DONE . add a php downloader with filtering on allowed requests
69      DONE . save points every game
70      DONE . modify points calculation to include order and mazzo
71      DONE . exclude not standard types from statistics
72          DONE . daily reports (1 for each active tournament)
73          DONE . monthly stats (for normal match only)
74      DONE . show current match ID when created
75      DONE . add info about continue to the info page
76      DONE . add command to continue
77          DONE . check consistency of the request
78      DONE . rearrange users and game status to continue the selected match
79      DONE . investigate user reordering ??
80
81    - WEBSOCKET TRANSPORT
82      . refactoring $enc attribute management
83      DONE . reintroduced $enc = 'plain' for websocket
84      DONE . fallback for not correct WS version
85      DONE . fini of ws stream
86      DONE . reactivate compression
87      DONE . fix xynt_test01
88      DONE M2: brisk working
89      DONE . manage multiport apache config
90      DONE . manage headers correctly in sac-a-push
91      DONE . manage transport.close method where required
92      DONE . xynt_stream: manage fallback to multiple ports
93      DONE . manage fini for ws
94      POST . server: manage input data from clients
95      POST . manage ping/pong (seems not required)
96
97      DONE . client (xynt_streaming.js)
98      DONE . server (transport.phh)
99
100      DONE M1: xynt_test01.php working
101
102
103    - improved S
104      . db update (add components, maybe single string)
105      . filter in index.php
106      . filter in index_wr.php
107
108    - prefs API:
109      . prefs_assign(content): assign json content as output var
110      . prefs_apply(prefs_new): apply new content to g_prefs and system
111      . prefs_load(content): load json content and apply to g_prefs and system
112
113      . prefs_update: update preferences temporarly
114      . prefs_save: save to the server the new prefs
115
116    - preferences (listen into preferences)
117         // js var, volatile server, (db server || cookie)
118         temporary: js var, volatile server
119         permanent: js var, volatile server, (db server || cookie)
120
121      . data from db OR, if missing, from cookies
122
123      . update values
124      . database change
125      . MANAGE NOT AUTH USERS
126
127    - preferences (with "modifiable S")
128      . Mod. S: new flag into database
129      . graph infrastructure
130      . new box to edit color
131
132   MAJOR |
133  -------+
134    - BUG: some connection to the named socket fails
135    - Not simultaneous more then one stream
136
137
138   MINOR |
139  -------+
140    WIP - try to be more antivirus-friendly
141    - multiple rows between games
142    - packetize and automatize php-ancillary and apache module
143    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
144
145
146   DONE |
147  ------+
148    DONE - temporarly server hung not reflected on user timeouts
149    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
150    DONE - page still opened after the server restart
151    DONE - log_legal address fix
152    DONE - manage too fast reload in xynt-streaming
153    DONE - add xhr as transport layer and manage different streams better
154    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
155    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
156    DONE - save/restore database
157    DONE - into the room local step remains -1
158    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
159    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
160           in the first tentative, the second works
161    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
162           problem was a call to a static parent method instead of the overrided child method,
163           substitute self:: with the dynamically get class::)
164    DONE - garbage management
165
166    DONE/FROZEN - problem with getpeer (HOSTADDR)
167
168    DONE - slow cards distribution
169    DONE - substr to mb_substr
170    DONE - parametrizations:
171           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
172           . parametrization of SITE_PREFIX(_LEN) define
173           . move the name of the named socket into the configuration file
174    DONE - manage and test cross forwarder between table and room
175    DONE - setcookie (for tables only and persist prefs)
176    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
177    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
178    DONE - unneeded garbage_time.expired access
179    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
180    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
181    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
182    DONE - configuration file management
183    DONE - app level keep-alive
184    DONE - index_wr other issues
185    DONE - from room to table
186    DONE - from table to room
187    DONE - chunked
188    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
189    DONE - partial write for normal page management
190    DONE - index_rd_ifra: last_clean issue
191    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
192    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
193    DONE - index_wr.php::chat
194    DONE - index_wr.php::exit
195    DONE - index_rd.php porting
196    DONE - generic var management from internet
197    DONE - index.php auth part
198    ABRT - index_wr.php::reload - reload is js-only function
199    ABRT - keepalive management - not interesting for our purposes
200
201  BRISK4 (mammuth)
202  ======
203
204  - STEP MANAGEMENT VERIFY
205  Slim Paragraph
206  DONE - move the garbage timeout on file
207  DONE - in index_rd load all data only when required
208  - briskin5 alignment
209    DONE . extern del garb_timeout
210    DONE . user_load parameters verify
211    DONE . Bin5::load_data and Bin5::save_data refactoring with
212           data split
213    . move many function into "Bin5 class"
214  - garbaging of .step files
215
216  DB: - initial usage
217      DONE - configurabilità file o db
218      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
219      DONE - travasatore file to pg
220        DONE - travaso punteggi
221        DONE - memorizzazione nuovi i punteggi nel db
222        DONE - gestione classifiche in SQL
223          DONE - produrle
224          DONE - mostrarle
225
226      STEP 1.1
227        DONE - points archiver
228
229      STEP 1.2
230        DONE - partial usability if database go down.
231
232      STEP 1.5
233      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
234
235      STEP 2
236      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
237      - modifica password   
238      - ripristino password 
239
240      STEP 3
241      - comunicazioni di aggiornamento (stato salvato sul server) 
242
243  DONE - var $G_base aggiunta per gestire include in include da path differenti
244
245  BRISK3 (trusty)
246  ======
247   DONE - donameter
248     DONE - G_donors
249     DONE (WOW!) - js object with infos
250     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
251            to prevent fast reload)
252     DONE - cookie per non assillare e visualizz.
253     DONE - graphical donameter
254     WIP content (in conf.)
255
256   DONE - numero di tavoli auth-only nel .brisk-install
257   - isolation
258     TEST - ricalcolo delle persone in piedi quando si cambia modalità
259     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
260     DONE - non leggere le chat di quelli non autenticati (in isolation)
261     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
262     DONE - treni non auth da nascondere 
263     DONE - verso gli altri ??: uguale a prima
264
265   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
266   coniglio
267   only auth strictly
268   placing limits to config file
269
270 Dunque, 
271
272 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
273
274 - cosa cambia tra le tre coppie di classifiche: 
275   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
276   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
277
278 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
279
280 Un esempio per chiarire:
281
282   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
283     -2, 1, 2, 1
284   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
285   
286   a parità di score tra utenti va più in alto chi ha giocato più partite.
287
288 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
289 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
290
291
292   
293
294
295
296
297  BUG
298  ---
299  
300   DONE - paste da demauroparavia
301   DONE - recupero partita per re-login con password
302   DONE - problema "|" nei nomi (manca enhance degli script lato server)
303   - problema col treno se mouse sopra mentre stringe (verif)
304   
305  MINOR
306  -----
307
308  NORMAL
309  ------
310
311   - win test
312   WIP - /listen 
313     DONE - skin della textarea
314     DONE - set cookie 
315     DONE - init client (read from cookie) - ALWAYS BY SERVER
316     DONE - init server
317     DONE - after cookie check auth-only when no-auth case
318     DONE - aggiungi info accanto a "Chat"
319   DONE - /mesgtoadm
320   DONE - img dei comandi
321
322   DONE - form per garantire utenti (accoda in un file nel formato corretto)
323   DONE -   process request
324   DONE -   show form
325   DONE -   close butt
326   DONE -   submit form
327   DONE -   process form js side 
328   DONE -   process form
329   DONE -   documentazione in help
330
331   DONE - user status
332
333   DONE - aggiornare help
334   DONE -   overflow management
335   DONE -   for status
336   -   for password
337
338   DONE - reload home
339   - notify for long pages
340
341   - buddy list
342   - silenziastolti vari (fino al buddy import)
343   - restrict challenge per IP
344   - restricted charset for login
345   - watchdog
346
347   - db (minimal)
348     - db admin page
349     - user db admin
350     - use db 
351     - admin db
352
353     - studiare un anti-dos
354   - login modify
355  DONE  - db (fake)
356  DONE  - display auth
357     - manage preferences 
358
359  minor
360  -----
361    - auth after login
362
363 ----- done ------
364
365  BUG
366  ---
367   DONE   righe troncate
368   DONE - questione "a monte" che:
369   DONE   - lascia fuori il bottone
370   DONE   - scrive &agrave e compagnia
371   DONE - refresh act_table when unauthorized
372   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
373
374  MINOR
375  -----
376   DONE - refactoring of the owner name (auth attr for owner name)
377   DONE   - room
378   DONE     - at chat input line 
379   DONE     - in the chat output line
380   DONE     - deauth management
381   DONE - table
382   DONE   - at chat input line
383   DONE   - in the chat output line
384   DONE   - for user area of other users
385   DONE   - deauth management
386   DONE - alart to one user
387
388
389  NORMAL
390  ------
391   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
392   DONE   - login: se auth      -  verifica solo gli expire per quel nick
393   DONE   -        se non auth  -  verifica gli expire per IP e sessione
394   DONE   - riscrivere messaggi
395
396   DONE - login 
397   DONE   - se pass:
398   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
399   DONE     - lo legge, ci hasha la password
400   DONE     - invia la pass al server hashata
401   DONE   - se non pass:
402   DONE     - check del login e return corretto
403   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
404   DONE     - rename ghost if logged
405   DONE     - onunload_cb e onbeforeunload_cb !!! 
406   DONE   - da change attrs a change class (input field)
407   DONE     - colore del bg per arrivare ad essere omogeneo
408   DONE     - cambiare path e file di config
409   DONE   - login with or without pass
410   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
411   DONE     - segnalare tavoli solo per auth
412   DONE     - rename restriction at auth table
413   DONE     - change nick (strcasecmp)
414   DONE   - refact js tables to handle flags
415   DONE - room javascript refactoring
416
417   DONE - work background
418   DONE - reserved tables
419
420
421  BRISK2 (spawn)
422  ======
423
424    
425    URGENT - tables spawn
426             DONE - link with photos
427             DONE - top banner in Etc file
428             DONE - spawn of a table
429             DONE - data to cookies (removed table_idx from xhr calls also)
430             DONE - set subst to shutdowner/shutdowned
431             DONE - return to index.php
432             DONE - game's token
433             DONE - recover of corrupted table data
434             DONE - closure of a table
435             DONE - flush of the table
436             DONE - security checks for right scope access
437             DONE - garbage collector management
438             DONE -    recursive garbage - howto ?
439             DONE - stat & subst in browser
440             DONE - laccwr setting and exit if all players are unactive for some time
441             DONE - the list of test case
442             DONE - shm dimension
443             DONE - remove unused parts
444             DONE - move images
445             DONE - optimizations
446             DONE - cambiare titolo al tavolo
447             DONE - shutdowning lock tables
448             DONE - topbanner
449             DONE - public announcements
450             DONE - 10 sec to exit from table
451
452             FAR - inheritances
453    
454    TRAIN  -  DONE - add again in reload   
455              DONE - wag_set refact
456              DONE - filtra char speciali per title
457              DONE - chatt_send refact 
458              DONE - elenco dei giocatori
459              DONE - documentazione online
460              DONE - timeout management     
461              LATER - border color a muzzo
462        
463    NORM   - testament
464    NORM   - public announcements
465    NORM   - 10 sec to exit from table
466    NORM   - moving label for tables click
467
468 ----------------- join -----------------
469    NORM   - map
470
471    NORM   - restart preload img
472    NORM   - tools dir with a main and some pages where check briscola tools.
473    NORM   - watchdog
474
475    NORM   - chat vecchie in reload (forse)
476
477  MIDDLE TODO
478  ===========
479
480    - user assistant (with button to enable disable)
481    - documentation
482
483
484  FAR TODO
485  ========
486    NORM - internationalization
487    NORM - img -> div + css
488    
489  WEB
490  ===
491
492    - link to stable/unstable
493
494 -------------------------------------------------------------------
495  DONE
496  ====
497
498    ABORTED - asta: highlight buttons (css hover) - change pointer when over
499    DONE - step proxy
500    DONE - special chars in js
501    DONE - ban temporaneo dai tavoli
502    DONE - flash player to play sound
503    DONEBUG - (aum. il timeout) - carte giocate che restano girate
504          Sembra non migliorare di molto la cosa, gestita la cache
505          correttamente, sono apposto.
506
507    DONE - one player reject a game, to less points (<= 2)
508    DONE - help page
509    DONE - test di download per la cache
510    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
511           Corretto il codice, occorre verificare se questo
512           ingenera qualche problema.
513    DONE - raddoppiato il numero di righe nella chat
514    DONE - corretto bug del /nick
515    DONE - carosello pubblicità altout
516    DONE - smammamorti
517    DONE - unload of the stream
518    DONE - standup centrati
519    DONE - current player - in info
520    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
521    DONE - welcome lines in the chats (room and table)
522    DONE - welcome lines in the chats (room and table)
523    DONE - nomi in primo piano se vai sul quadrato   
524    DONE - to pass explicit config file to INSTALL.sh
525    DONE - flag to create a config file
526    ABRT - bottoni => immagini
527    DONE - aggiungere bottone al login
528    DONE - nomi in primo piano se vai sul quadrato   
529    DONE - installer to set cookie path
530    DONE - change name
531    DONE - automatic and manual logout
532    DONE - cache problems solved via .htaccess
533    DONE - all players out of the auction
534    DONE - time to send cards
535    DONE - hide cards before sends at a new game
536    DONE - well recognization of the browser and O.S.
537    DONE - login consistency !!!!
538    DONE - functionalization of garbage
539    DONE - call garbage function into login
540    DONE - game
541    DONE - manage the reload from scratch of the table page
542    DONE - table reset
543    DONE - sendcard => card_send(idx, ....)
544    DONE - show table for game
545    DONE - points calculation
546    DONE - make-up of the chooser
547    DONE - where place the briscola on the table
548    DONE - users info
549    DONE - show current auction position
550    DONE - table with internal management of the transition between pages.
551    DONE - server side page abort management  
552    DONE - cookie problem with Ajax
553    DONE - spostare il tasto "esco"
554    DONE - to pass explicit config file to INSTALL.sh 
555    DONE - 8 tables
556    DONE - safety out management
557    DONE - info enhancement and related button (how win the last game and
558           with how much points ?)
559
560  WEB
561    DONE - homepage
562    DONE - screenshots
563
564 DOC
565    CHAPTERS
566       HTTP Streaming
567       Local serializer
568       Database on shmem
569       Page abort (reload on http streaming case)
570       Chat
571       Cookies management
572       CSS tricks
573
574 CHECK ON NEW SERVERS
575 .htaccess AllowOverwrite mode for Cache-Control directive
576
577
578
579
580 */
581