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