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