X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2FObj%2Fbrisk.phh;h=9e0eb1268a42694811895b7946d6057e9f1953cd;hb=356cad47d20258b4888caac71b143b6b6e1831e0;hp=a103046afff1ad8337317e9f1ba64de5e9814b11;hpb=5c514b65ef1f702724b213b5967d3a32d8525f0e;p=brisk.git
diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh
index a103046..9e0eb12 100644
--- a/web/Obj/brisk.phh
+++ b/web/Obj/brisk.phh
@@ -150,12 +150,12 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi',
$G_lng = langtolng($G_lang);
$G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "4.13.2";
+$G_brisk_version = "4.14.2";
/* MLANG: ALL THE INFO STRINGS IN brisk.phh */
-$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': nuovo sistema per calcolare le classifiche con bugfix, corretto bug nel comando cont',
+$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': nuovo sistema di registrazione degli utenti, aggiunto reinvio dell\' email di verifica',
'Se vuoi iscriverti alla Mailing List, cliccala!' ),
- 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: new placements calculation system with bugfix, cont command fixed.',
+ 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: new users subscription system.',
'If you want to subscribe our Mailing List, click it!' ) );
$G_room_help = array( 'it' => '
@@ -302,6 +302,113 @@ Copyright 2006-2012 Matteo Nasta
version '.$G_brisk_version.'
Copyright 2006-2012 Matteo Nastasi (aka mop)
');
+
+$G_PG_vow = array("a", "e", "i", "o", "u", "y");
+$G_PG_vow_n = 6;
+$G_PG_cons = array(
+ "b", "bb", "bc", "bd", "bf", "bg", "bk", "bl", "bm", "bn", "bp", "br", "bs", "bt", "bv", "bw", "bz",
+ "c", "cb", "cc", "cd", "cf", "cg", "ck", "cl", "cm", "cn", "cp", "cq", "cr", "cs", "ct", "cv", "cw", "cx", "cz",
+ "d", "db", "dc", "dd", "df", "dg", "dk", "dl", "dm", "dn", "dp", "dr", "ds", "dt", "dv", "dw", "dx", "dz",
+ "f", "fb", "fc", "fd", "ff", "fg", "fk", "fl", "fm", "fn", "fp", "fr", "fs", "ft", "fv", "fw", "fx", "fz",
+ "g", "gb", "gc", "gd", "gf", "gg", "gk", "gl", "gm", "gn", "gp", "gr", "gs", "gt", "gv", "gw", "gx", "gz",
+ "j", "jb", "jc", "jd", "jf", "jg", "jk", "jl", "jm", "jn", "jp", "jq", "jr", "js", "jt", "jv", "jw", "jx", "jz",
+ "k", "kb", "kc", "kd", "kf", "kg", "kk", "kl", "km", "kn", "kp", "kr", "ks", "kt", "kv", "kw", "kx", "kz",
+ "l", "lb", "lc", "ld", "lf", "lg", "lk", "ll", "lm", "ln", "lp", "lr", "ls", "lt", "lv", "lw", "lx", "lz",
+ "m", "mb", "mc", "md", "mf", "mg", "mk", "ml", "mm", "mn", "mp", "mr", "ms", "mt", "mv", "mw", "mx", "mz",
+ "n", "nb", "nc", "nd", "nf", "ng", "nk", "nl", "nm", "nn", "np", "nr", "ns", "nt", "nv", "nw", "nx", "nz",
+ "p", "pb", "pc", "pd", "pf", "pg", "pk", "pl", "pm", "pn", "pp", "pr", "ps", "pt", "pv", "pw", "px", "pz",
+ "q", "qb", "qc", "qd", "qf", "qg", "qk", "ql", "qm", "qn", "qp", "qq", "qr", "qs", "qt", "qv", "qw", "qx", "qz",
+ "r", "rb", "rc", "rd", "rf", "rg", "rk", "rl", "rm", "rn", "rp", "rr", "rs", "rt", "rv", "rw", "rx", "rz",
+ "s", "sb", "sc", "sd", "sf", "sg", "sk", "sl", "sm", "sn", "sp", "sq", "sr", "ss", "st", "sv", "sw", "sx", "sz",
+ "t", "tb", "tc", "td", "tf", "tg", "tk", "tl", "tm", "tn", "tp", "tr", "ts", "tt", "tv", "tw", "tx", "tz",
+ "v", "vb", "vc", "vd", "vf", "vg", "vk", "vl", "vm", "vn", "vp", "vr", "vs", "vt", "vv", "vw", "vx", "vz",
+ "w", "wb", "wc", "wd", "wf", "wg", "wk", "wl", "wm", "wn", "wp", "wr", "ws", "wt", "wv", "ww", "wx", "wz",
+ "x", "xb", "xc", "xd", "xf", "xg", "xk", "xl", "xm", "xn", "xp", "xr", "xs", "xt", "xv", "xw", "xx", "xz",
+ "z", "zb", "zc", "zd", "zf", "zg", "zk", "zl", "zm", "zn", "zp", "zr", "zs", "zt", "zv", "zw", "zx", "zz",
+ );
+// $G_PG_cons_n = count($G_PG_cons);
+// printf("N CONS: %d\n", $G_PG_cons_n);
+$G_PG_cons_n = 345;
+ /* printf("%d %d\n", count($voc), count($cons)); */
+ /* for ($i = 0 ; $i < 26 ; $i++) { */
+ /* if (array_search(chr(ord('a') + $i), $voc) !== FALSE || $i == 7) */
+ /* continue; */
+ /* printf(' "%s", ', chr(ord('a') + $i)); */
+ /* for ($e = 0 ; $e < 26 ; $e++) { */
+ /* if (array_search(chr(ord('a') + $e), $voc) !== FALSE || $e == 7) */
+ /* continue; */
+ /* printf('"%s%s", ', chr(ord('a') + $i), chr(ord('a') + $e)); */
+ /* } */
+ /* printf("\n"); */
+ /* } */
+
+function passwd_gen($seed = NULL)
+{
+ GLOBAL $G_PG_vow, $G_PG_vow_n, $G_PG_cons, $G_PG_cons_n;
+
+ $pw = "";
+
+ if ($seed != NULL)
+ mt_srand($seed);
+ else
+ mt_srand();
+
+ for ($sil = 0 ; $sil < 7 ; $sil++) {
+ if (($sil % 2) == 0) {
+ // vowels
+ for ($n = 0 ; $n < mt_rand(1,2) ; $n++) {
+ if ($n == 0) {
+ $old = mt_rand(0, $G_PG_vow_n-1);
+ $pw .= $G_PG_vow[$old];
+ }
+ else {
+ $new = mt_rand(0, $G_PG_vow_n-1);
+ if ($new == $old)
+ $new = ($new + mt_rand(0, $G_PG_vow_n-2)) % $G_PG_vow_n;
+ $pw .= $G_PG_vow[$new];
+ }
+ }
+ }
+ else {
+ // consonants
+ $pw .= $G_PG_cons[mt_rand(0, $G_PG_cons_n-1)];
+ }
+ }
+
+ return $pw;
+}
+
+function cmd_return($val, $desc)
+{
+ return array('val' => $val, 'desc' => $desc);
+}
+
+function cmd_serialize($attrs)
+{
+ $ret = "";
+
+ $sep = "";
+ foreach ($attrs as $key => $value) {
+ $ret .= $sep . $key . '=' . urlencode($value);
+ $sep = "&";
+ }
+ return $ret;
+}
+
+function cmd_deserialize($cmd)
+{
+ $ret = array();
+ $a = explode('&', $cmd);
+ $i = 0;
+ while ($i < count($a)) {
+ $b = split('=', $a[$i]);
+ $ret[urldecode($b[0])] = urldecode($b[1]);
+ $i++;
+ }
+
+ return $ret;
+}
+
// return values
// -1 v1 < v2
// 0 equal
@@ -402,7 +509,7 @@ function escinput($s)
function eschtml($s)
{
- return htmlentities($s);
+ return htmlentities($s, ENT_COMPAT, "UTF-8");
}
function esclfhtml($s)
@@ -847,39 +954,59 @@ class Brisk
public static $sess_cur;
- function Brisk($crystal_filename) {
- $this->crystal_filename = $crystal_filename;
- $this->user = array();
- $this->table = array();
- $this->match = array();
+ function Brisk()
+ {
+ }
+
+ // constructor
+ static function create($crystal_filename)
+ {
+ if (($brisk_ser = @file_get_contents($crystal_filename)) != FALSE) {
+ if (($brisk = unserialize($brisk_ser)) != FALSE) {
+ fprintf(STDERR, "ROOM FROM FILE\n");
+ rename($crystal_filename, $crystal_filename.".old");
+
+ return($brisk);
+ }
+ }
+
+ fprintf(STDERR, "NEW ROOM\n");
+ $thiz = new Brisk();
+
+ $thiz->crystal_filename = $crystal_filename;
+ $thiz->user = array();
+ $thiz->table = array();
+ $thiz->match = array();
for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- $this->user[$i] = User::create($this, $i, "", "");
+ $thiz->user[$i] = User::create($thiz, $i, "", "");
}
for ($i = 0 ; $i < TABLES_N ; $i++) {
- $this->table[$i] = Table::create($i);
+ $thiz->table[$i] = Table::create($i);
/* OLD METHOD
if ($i < 12) {
$row = ( (((int)($i / 4)) % 2) == 0 );
$col = ($i % 2 == 0);
- $this->table[$i]->auth_only = (($row && $col) || (!$row && !$col));
+ $thiz->table[$i]->auth_only = (($row && $col) || (!$row && !$col));
}
else {
- $this->table[$i]->auth_only = FALSE;
+ $thiz->table[$i]->auth_only = FALSE;
}
*/
if ($i < TABLES_AUTH_N)
- $this->table[$i]->auth_only = TRUE;
+ $thiz->table[$i]->auth_only = TRUE;
else
- $this->table[$i]->auth_only = FALSE;
+ $thiz->table[$i]->auth_only = FALSE;
}
- $this->garbage_timeout = 0;
- $this->shm_sz = SHM_DIMS_MIN;
+ $thiz->garbage_timeout = 0;
+ $thiz->shm_sz = SHM_DIMS_MIN;
- $this->delay_mgr = new Delay_Manager(1.5);
+ $thiz->delay_mgr = new Delay_Manager(1.5);
static::$sess_cur = FALSE;
+
+ return ($thiz);
}
function garbage_manager($force)
@@ -2117,118 +2244,6 @@ class Brisk
}
}
- // Static functions
- static function create($crystal_filename)
- {
- if (($brisk_ser = @file_get_contents($crystal_filename)) == FALSE ||
- ($brisk = unserialize($brisk_ser)) == FALSE) {
- fprintf(STDERR, "NEW ROOM\n");
- $brisk = new Brisk($crystal_filename);
- }
- else {
- fprintf(STDERR, "ROOM FROM FILE\n");
- rename($crystal_filename, $crystal_filename.".old");
- }
-
- return $brisk;
- }
-
-
- function load_data()
- {
- GLOBAL $sess;
-
- do {
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1) {
- log_main("ftok failed");
- break;
- }
-
- if (($shm_sz = sharedmem_sz($tok)) == -1) {
- log_main("shmop_open failed");
- }
-
- if ($shm_sz == -1)
- $shm_sz = SHM_DIMS_MIN;
-
- if ($shm = shm_attach($tok, $shm_sz)) {
- $brisk = @shm_get_var($shm, $tok); // CHECKED BELOW
-
- log_only("bri == ".($brisk == FALSE ? "FALSE" : "TRUE")." bri === ".($brisk === FALSE ? "FALSE" : "TRUE")." bri isset ".(isset($brisk) ? "TRUE" : "FALSE"));
- if (isset($brisk))
- log_only("bri count ".count($brisk));
-
- if ($brisk == FALSE) {
- log_only("INIT MAIN DATA");
- shm_detach($shm);
-
- $brisk = Brisk::create();
-
- log_shme("Brisk::create");
-
- if (Brisk::save_data($brisk) == FALSE)
- return FALSE;
-
- return $brisk;
- }
- $brisk->shm_sz = $shm_sz;
-
- shm_detach($shm);
-
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- if (($brisk->user[$i] = User::load_data($i, FALSE)) == FALSE) {
- log_crit("User::load_data failed");
- break;
- }
- }
- if ($i < MAX_PLAYERS) {
- break;
- }
- }
-
- //
- // SHSPLIT: load users from the shared memory
- //
- return ($brisk);
- } while (0);
-
- return (FALSE);
- }
-
-
- function save_data_orig($brisk)
- {
- GLOBAL $sess;
-
- $shm = FALSE;
-
- // var_dump($brisk);
-
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
- return (FALSE);
-
- while ($brisk->shm_sz < SHM_DIMS_MAX) {
- if (($shm = shm_attach($tok, $brisk->shm_sz)) == FALSE)
- break;
-
- // log_only("PUT_VAR DI ".strlen(serialize($brisk)));
- if (@shm_put_var($shm, $tok, $brisk) != FALSE) {
- shm_detach($shm);
- return (TRUE);
- }
- if (shm_remove($shm) === FALSE) {
- log_only("REMOVE FALLITA");
- break;
- }
- shm_detach($shm);
- $brisk->shm_sz += SHM_DIMS_DLT;
- }
-
- if ($shm)
- shm_detach($shm);
-
- return (FALSE);
- }
function dump_data()
{
$brisk_ser = serialize($this);
@@ -2240,55 +2255,6 @@ class Brisk
return (FALSE);
}
- function save_data($brisk)
- {
- GLOBAL $sess;
-
- $ret = FALSE;
- $shm = FALSE;
-
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
- return (FALSE);
-
- // SHSPLIT: before save the $brisk you must save users,
- // detach from main struct and (then) reattach
- $user_park = array();
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- $user_park[$i] = $brisk->user[$i];
- $brisk->user[$i] = FALSE;
- }
-
- while ($brisk->shm_sz < SHM_DIMS_MAX) {
- if (($shm = shm_attach($tok, $brisk->shm_sz)) == FALSE)
- break;
-
- // log_only("PUT_VAR DI ".strlen(serialize($brisk)));
- if (@shm_put_var($shm, $tok, $brisk) != FALSE) {
- log_shme("Brisk::save_data");
- $ret = TRUE;
- break;
- }
- if (shm_remove($shm) === FALSE) {
- log_only("REMOVE FALLITA");
- break;
- }
- shm_detach($shm);
- $brisk->shm_sz += SHM_DIMS_DLT;
- }
-
- if ($shm)
- shm_detach($shm);
-
- // SHSPLIT: reattach users to the room class
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- User::save_data($user_park[$i], $i);
- $brisk->user[$i] = $user_park[$i];
- }
- log_load("FINISH: ".($ret == TRUE ? "TRUE" : "FALSE"));
-
- return ($ret);
- }
-
static function lock_data($is_exclusive)
{
if (($res = file_lock(FTOK_PATH."/main", $is_exclusive)) != FALSE) {