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