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