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