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