+ - /cont and /rules just during 'bidding' phase
+ DONE - Not sequence of 3 same chars
+ DONE . check server side with test
+ DONE - Global vars checker
+ <release>
+ - usermgmt: add user delete
+ DONE - 10002 message when already clicked
+ DONE - trim spaces in apprentice form
+ DONE - Remove books from chat
+ DONE - usermgmt: add email
+
+
+ FEATURES |
+ ----------+
+ * multiple rules
+ DONE - show current rules
+ DONE - select tournment dropdown menu (send a 'cont' like message for each change)
+ WIP - new rules for 'together for fun' turnment
+ DONE . strange 4 abandoned rule for auction
+ DONE . check of max points
+ DONE . check of suit at the end of bet
+
+ DONE - increase constraint for rules change
+ DONE - select rules dropdown 'selected' to the current rule or the current
+
+ POSTPONED - no points multiplication for abandon
+ POSTPONED - cache data structure for tournments
+ POSTPONED . reload on SIGHUP
+
+
+ WIP * inherited info
+ * Users Network construction
+ DONE - sql
+ DONE - dbase API
+ DONE - add apprentices tables
+ DONE - remove entry when set unknown
+ DONE - enhance info interface
+ DONE . SQL to show current evaluation
+ DONE . disable parts of interface
+ WIP . add title to items
+ . fix SELECT
+ <release>
+ - minisplash at end of the match
+ - differentiate table authorization
+ * add new kind of isolation for apprentice
+
+ * Double click on chat to open preferences
+
+ * APPRENTICE
+ Phase2
+ DONE - match counters (part 2)
+ DONE . migration script for old users
+ - guarantee for apprentice
+
+
+
+---------
+ - APPRENTICE
+ Phase2
+ DONE - match counters (part 2)
+ DONE . migration script for old users
+
+ - APPRENTICE
+ Phase1
+ DONE - correggere minuta giornaliera
+ DONE - aggiungere mask per autogar
+ DONE - correggere email per apprentice
+ DONE - verificare la variabile per tout IP ban apprentice
+ DONE - chat ban for apprentice
+
+ DONE - ip check and time limit
+ DONE . sql
+ DONE . temporary table limitation
+ DONE . message
+ DONE - usermgmt extension
+ DONE - add close button
+ DONE - add apprentice icon
+ DONE - match counters (part 1)
+ DONE . sql for match counters
+ DONE - new info system
+ DONE - click management
+ DONE - show user info (RO)
+ DONE - require command/info
+ DONE - fix fiverank table
+ DONE - fix bug with bitwise
+ DONE - fix layout of tables
+ DONE - aggiungere books.png
+
+ - MENTORS
+ - listen all
+
+ - BUDDY LIST
+ - white list
+ - black list
+ - delegate
+
+ - DEANONYMIZER
+ . study how to move login delta injection
+
+ - CERTIFICATIONS
+ DONE . Guarantes for certified-only (buttons choice managed)
+ DONE . Tables for certified-only
+ . Term Of Use
+ . Placing for certified-only
+
+ - IP CLASSES BAN
+ DONE . BAN and BLACK lists added
+ DONE . update method to SIGHUP manager
+ DONE . create constructor refactored
+
+ - PLACEMENT-NORMALIZATION
+ DONE . Normalize previous points
+ DONE . Denormalize "Info" view
+ DONE . Denormalize explained matches
+ DONE . Check placement
+ DONE . Distinguish between inherited mult and local mult
+
+ - AUTO-MAINTENANCE
+ DONE . Terms Of Service acceptance
+ DONE . print date of hard switch
+ DONE . TOS version
+ DONE . user TOS acceptance (db field)
+ DONE . show TOS ([show me later, yes, no]/[yes, no])
+ DONE . switch-off date
+ DONE . manage accept
+ DONE . manage refuse
+ DONE . show current TOS
+ DONE . disable user reason integer field and remove SUSPEND state (db, php)
+ DONE . fix tos layout
+ DONE . opt - download TOS
+ . opt - checkbox for anonimous users with message when not checked
+ . opt - button enabled when arrived to the bottom of the TOS only
+ . opt - check TOS version between config file and TOS file
+ DONE . show guarantee (/guar <login> command)
+ DONE . multi-language
+ DONE . command documentation
+ DONE . manage disagreeding users investigation
+ DONE . self guaranteed
+ . DONE New Users Guarantee Procedure
+ . DONE Change guarantee workflow
+ . DONE Db update
+
+ UserA UserB Admin
+-------------------------------------------------------------------------
+ guarante UserB
+ |
+ v
+ Save on mail
+ table,
+ email to UserB
+ (Disabled, MAILED)
+-------------------------------------------------------------------------
+ Receive email
+ to check address
+ |
+ v
+ Click on link
+ |
+ v
+ Check on mail
+ table,
+ update user status,
+ delete mail rec
+ (Disabled, TOBECHK)
+-------------------------------------------------------------------------
+ admin panel
+ accept user
+ |
+ v
+ send email with
+ password,
+ update user status
+ (Normal, NONE)
+-------------------------------------------------------------------------
+ Receive email
+ with password
+-------------------------------------------------------------------------
+
+ DONE . More user info in the list
+ DONE . Manage date to display when a user was required
+ . Email-address expiration check
+ . Account expiration
+
+
+ DONE - CONTINUE FEATURE
+ DONE . replace explicit strings with multilanguage array
+ DONE . add a php downloader with filtering on allowed requests
+ DONE . save points every game
+ DONE . modify points calculation to include order and mazzo
+ DONE . exclude not standard types from statistics
+ DONE . daily reports (1 for each active tournament)
+ DONE . monthly stats (for normal match only)
+ DONE . show current match ID when created
+ DONE . add info about continue to the info page
+ DONE . add command to continue
+ DONE . check consistency of the request
+ DONE . rearrange users and game status to continue the selected match
+ DONE . investigate user reordering ??
+
+ - WEBSOCKET TRANSPORT
+ . refactoring $enc attribute management
+ DONE . reintroduced $enc = 'plain' for websocket
+ DONE . fallback for not correct WS version
+ DONE . fini of ws stream
+ DONE . reactivate compression
+ DONE . fix xynt_test01
+ DONE M2: brisk working
+ DONE . manage multiport apache config
+ DONE . manage headers correctly in sac-a-push
+ DONE . manage transport.close method where required
+ DONE . xynt_stream: manage fallback to multiple ports
+ DONE . manage fini for ws
+ POST . server: manage input data from clients
+ POST . manage ping/pong (seems not required)
+
+ DONE . client (xynt_streaming.js)
+ DONE . server (transport.phh)
+
+ DONE M1: xynt_test01.php working
+
+
+ - improved S
+ . db update (add components, maybe single string)
+ . filter in index.php
+ . filter in index_wr.php
+
+ - prefs API:
+ . prefs_assign(content): assign json content as output var
+ . prefs_apply(prefs_new): apply new content to g_prefs and system
+ . prefs_load(content): load json content and apply to g_prefs and system
+
+ . prefs_update: update preferences temporarly
+ . prefs_save: save to the server the new prefs
+
+ - preferences (listen into preferences)
+ // js var, volatile server, (db server || cookie)
+ temporary: js var, volatile server
+ permanent: js var, volatile server, (db server || cookie)
+
+ . data from db OR, if missing, from cookies
+
+ . update values
+ . database change
+ . MANAGE NOT AUTH USERS
+
+ - preferences (with "modifiable S")
+ . Mod. S: new flag into database
+ . graph infrastructure
+ . new box to edit color
+
+ MAJOR |
+ -------+
+ - BUG: some connection to the named socket fails
+ - Not simultaneous more then one stream
+
+
+ MINOR |
+ -------+
+ WIP - try to be more antivirus-friendly
+ - multiple rows between games
+ - packetize and automatize php-ancillary and apache module
+ - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
+
+
+ DONE |
+ ------+
+ DONE - temporarly server hung not reflected on user timeouts
+ DONE - timeouted users are still be able to sit down (only the first at the table is banned)
+ DONE - page still opened after the server restart
+ DONE - log_legal address fix
+ DONE - manage too fast reload in xynt-streaming
+ DONE - add xhr as transport layer and manage different streams better
+ TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
+ TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
+ DONE - save/restore database
+ DONE - into the room local step remains -1
+ DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
+ DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found"
+ in the first tentative, the second works
+ DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the
+ problem was a call to a static parent method instead of the overrided child method,
+ substitute self:: with the dynamically get class::)
+ DONE - garbage management
+
+ DONE/FROZEN - problem with getpeer (HOSTADDR)
+
+ DONE - slow cards distribution
+ DONE - substr to mb_substr
+ DONE - parametrizations:
+ . parametrization of $DOCUMENT_ROOT var in brisk-spush.phh file
+ . parametrization of SITE_PREFIX(_LEN) define
+ . move the name of the named socket into the configuration file
+ DONE - manage and test cross forwarder between table and room
+ DONE - setcookie (for tables only and persist prefs)
+ DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
+ DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
+ DONE - unneeded garbage_time.expired access
+ DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
+ DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
+ DONE - 404 wrong page management (remove directories redirections (es. brisk/))
+ DONE - configuration file management
+ DONE - app level keep-alive
+ DONE - index_wr other issues
+ DONE - from room to table
+ DONE - from table to room
+ DONE - chunked
+ DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
+ DONE - partial write for normal page management
+ DONE - index_rd_ifra: last_clean issue
+ DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
+ DONE - bug: after restart index_rd.php receive from prev clients a lot of req
+ DONE - index_wr.php::chat
+ DONE - index_wr.php::exit
+ DONE - index_rd.php porting
+ DONE - generic var management from internet
+ DONE - index.php auth part
+ ABRT - index_wr.php::reload - reload is js-only function
+ ABRT - keepalive management - not interesting for our purposes
+
+ BRISK4 (mammuth)
+ ======
+
+ - STEP MANAGEMENT VERIFY
+ Slim Paragraph
+ DONE - move the garbage timeout on file
+ DONE - in index_rd load all data only when required
+ - briskin5 alignment
+ DONE . extern del garb_timeout
+ DONE . user_load parameters verify
+ DONE . Bin5::load_data and Bin5::save_data refactoring with
+ data split
+ . move many function into "Bin5 class"
+ - garbaging of .step files
+
+ DB: - initial usage
+ DONE - configurabilità file o db
+ DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
+ DONE - travasatore file to pg
+ DONE - travaso punteggi
+ DONE - memorizzazione nuovi i punteggi nel db
+ DONE - gestione classifiche in SQL
+ DONE - produrle
+ DONE - mostrarle
+
+ STEP 1.1
+ DONE - points archiver
+
+ STEP 1.2
+ DONE - partial usability if database go down.
+
+ STEP 1.5
+ - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
+
+ STEP 2
+ - modifica password
+ - ripristino password
+
+ STEP 3
+ - comunicazioni di aggiornamento (stato salvato sul server)
+
+ DONE - var $G_base aggiunta per gestire include in include da path differenti
+
+ BRISK3 (trusty)
+ ======
+ DONE - donameter
+ DONE - G_donors
+ DONE (WOW!) - js object with infos
+ DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
+ to prevent fast reload)
+ DONE - cookie per non assillare e visualizz.
+ DONE - graphical donameter
+ WIP content (in conf.)
+
+ DONE - numero di tavoli auth-only nel .brisk-install
+ - isolation
+ TEST - ricalcolo delle persone in piedi quando si cambia modalità
+ DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
+ DONE - non leggere le chat di quelli non autenticati (in isolation)
+ DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati)
+ DONE - treni non auth da nascondere
+ DONE - verso gli altri ??: uguale a prima
+
+ finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
+ coniglio
+ only auth strictly
+ placing limits to config file
+
+Dunque,
+
+- come vengono aggiornate le classifiche: ogni giorno alle 23:58
+
+- cosa cambia tra le tre coppie di classifiche:
+ ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese, e quelle dell' ultimo trimestre,
+ 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.
+
+- 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.
+
+Un esempio per chiarire:
+
+ l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
+ -2, 1, 2, 1
+ lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 } * 100 = 50.0
+
+ a parità di score tra utenti va più in alto chi ha giocato più partite.
+
+Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata
+sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
+
+
+
+
+
+
+
+ BUG
+ ---
+
+ DONE - paste da demauroparavia
+ DONE - recupero partita per re-login con password
+ DONE - problema "|" nei nomi (manca enhance degli script lato server)
+ - problema col treno se mouse sopra mentre stringe (verif)
+
+ MINOR
+ -----
+
+ NORMAL
+ ------
+
+ - win test
+ WIP - /listen
+ DONE - skin della textarea
+ DONE - set cookie
+ DONE - init client (read from cookie) - ALWAYS BY SERVER
+ DONE - init server
+ DONE - after cookie check auth-only when no-auth case
+ DONE - aggiungi info accanto a "Chat"
+ DONE - /mesgtoadm
+ DONE - img dei comandi
+
+ DONE - form per garantire utenti (accoda in un file nel formato corretto)
+ DONE - process request
+ DONE - show form
+ DONE - close butt
+ DONE - submit form
+ DONE - process form js side
+ DONE - process form
+ DONE - documentazione in help
+
+ DONE - user status
+
+ DONE - aggiornare help
+ DONE - overflow management
+ DONE - for status
+ - for password
+
+ DONE - reload home
+ - notify for long pages
+
+ - buddy list
+ - silenziastolti vari (fino al buddy import)
+ - restrict challenge per IP
+ - restricted charset for login
+ - watchdog
+
+ - db (minimal)
+ - db admin page
+ - user db admin
+ - use db
+ - admin db
+
+ - studiare un anti-dos
+ - login modify
+ DONE - db (fake)
+ DONE - display auth
+ - manage preferences
+
+ minor
+ -----
+ - auth after login
+
+----- done ------
+
+ BUG
+ ---
+ DONE righe troncate
+ DONE - questione "a monte" che:
+ DONE - lascia fuori il bottone
+ DONE - scrive à e compagnia
+ DONE - refresh act_table when unauthorized
+ DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
+
+ MINOR
+ -----
+ DONE - refactoring of the owner name (auth attr for owner name)
+ DONE - room
+ DONE - at chat input line
+ DONE - in the chat output line
+ DONE - deauth management
+ DONE - table
+ DONE - at chat input line
+ DONE - in the chat output line
+ DONE - for user area of other users
+ DONE - deauth management
+ DONE - alart to one user
+
+
+ NORMAL
+ ------
+ DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
+ DONE - login: se auth - verifica solo gli expire per quel nick
+ DONE - se non auth - verifica gli expire per IP e sessione
+ DONE - riscrivere messaggi
+
+ DONE - login
+ DONE - se pass:
+ DONE - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
+ DONE - lo legge, ci hasha la password
+ DONE - invia la pass al server hashata
+ DONE - se non pass:
+ DONE - check del login e return corretto
+ DONE - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
+ DONE - rename ghost if logged
+ DONE - onunload_cb e onbeforeunload_cb !!!
+ DONE - da change attrs a change class (input field)
+ DONE - colore del bg per arrivare ad essere omogeneo
+ DONE - cambiare path e file di config
+ DONE - login with or without pass
+ DONE - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
+ DONE - segnalare tavoli solo per auth
+ DONE - rename restriction at auth table
+ DONE - change nick (strcasecmp)
+ DONE - refact js tables to handle flags
+ DONE - room javascript refactoring
+
+ DONE - work background
+ DONE - reserved tables
+
+
+ BRISK2 (spawn)
+ ======
+