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