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