X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=87185da28b58a1a463528a6034913faacc9c6300;hb=182eff6ad1aafbdcb765a4190a24a1c8f2f93f6b;hp=3f65f171d7dc203e0d6dbd70dee437db3fd0608b;hpb=44f4d1b333ecb3cc3c3666cc5acb2422edcf029d;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 3f65f17..87185da 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -134,12 +134,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 = "3.4.2"; +$G_brisk_version = "3.4.3"; /* MLANG: ALL THE INFO STRINGS IN brisk.phh */ -$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': versione di test per la nuova gestione dei dati volatili.', +$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': versione di test per la nuova gestione dei dati volatili, rivista gestione del ticker.', 'Se vuoi iscriverti alla Mailing List, cliccala!' ), - 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: test version for the new volatile data management.', + 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: test version for the new volatile data management, ticker management refactored.', 'If you want to subscribe our Mailing List, click it!' ) ); $G_room_help = array( 'it' => ' @@ -694,8 +694,10 @@ class User { $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N)); for ($i = $i_start ; $i < $from->step ; $i++) { - $ii = $i % COMM_N; - $this->comm[$ii] = $from->comm[$ii]; + $ii = $i % COMM_N; + if (isset($from->comm[$ii])) { + $this->comm[$ii] = $from->comm[$ii]; + } } $this->asta_card = $from->asta_card; $this->asta_pnt = $from->asta_pnt; @@ -806,39 +808,46 @@ class User { */ } - function step_set($step) { - $this->step = $step; - - do { - if (validate_sess($this->sess) == FALSE) - break; - if (file_exists(PROXY_PATH) == FALSE) - mkdir(PROXY_PATH); - if (($fp = @fopen(PROXY_PATH."/".$this->sess.".step", 'w')) == FALSE) - break; - fwrite($fp, pack("LL",$this->step, $this->idx)); - fclose($fp); - - return (TRUE); - } while (0); + function step_set($step) + { + $this->step = $step & 0x7fffffff; + + do { + if (validate_sess($this->sess) == FALSE) + break; + if (file_exists(PROXY_PATH) == FALSE) + mkdir(PROXY_PATH); + if (($fp = @fopen(PROXY_PATH."/".$this->sess.".step", 'w')) == FALSE) + break; + fwrite($fp, pack("LL",$this->step, $this->idx)); + fclose($fp); - return (FALSE); + log_main("step_set [".$this->sess. "] [".$this->step."]"); + + return (TRUE); + } while (0); + + return (FALSE); } - + function step_inc($delta = 1) { - $this->step += $delta; - - if (validate_sess($this->sess)) { - if (file_exists(PROXY_PATH) == FALSE) - mkdir(PROXY_PATH); - $fp = fopen(PROXY_PATH."/".$this->sess.".step", 'w'); - fwrite($fp, pack("LL", $this->step, $this->idx)); - fclose($fp); - - return (TRUE); - } - - return (FALSE); + $this->step += $delta; + /* modularization because unpack() not manage unsigned 32bit int correctly */ + $this->step &= 0x7fffffff; + + if (validate_sess($this->sess)) { + if (file_exists(PROXY_PATH) == FALSE) + mkdir(PROXY_PATH); + $fp = fopen(PROXY_PATH."/".$this->sess.".step", 'w'); + fwrite($fp, pack("LL", $this->step, $this->idx)); + fclose($fp); + + log_main("step_inc [".$this->sess. "] [".$this->step."]"); + + return (TRUE); + } + + return (FALSE); } function reset() { @@ -862,12 +871,12 @@ class User { // SHSPLIT save and load function for the User class. - function load_data($id) + static function load_data($id, $sess) { - GLOBAL $sess; - // error_log("User::load_data BEGIN", 0); + log_main("load_data: id [".$id."] sess [".($sess == FALSE ? "FALSE" : $sess)."] "); + $doexit = FALSE; do { if (($tok = @ftok(FTOK_PATH."/user".$id, "B")) == -1) { @@ -886,7 +895,11 @@ class User { if ($shm = shm_attach($tok, $shm_sz)) { $user = @shm_get_var($shm, $tok); - log_only("bri == ".($user == FALSE ? "FALSE" : "TRUE")." bri === ".($user === FALSE ? "FALSE" : "TRUE")." bri isset ".(isset($user) ? "TRUE" : "FALSE")); + if ($sess != FALSE && $user->sess != $sess) { + $doexit = TRUE; + break; + } + log_only("user == ".($user == FALSE ? "FALSE" : "TRUE")." user === ".($user === FALSE ? "FALSE" : "TRUE")." user isset ".(isset($user) ? "TRUE" : "FALSE")); if (isset($user)) log_only("bri count ".count($user)); @@ -894,7 +907,7 @@ class User { log_only("INIT MAIN DATA"); // SHSPLIT FIXME: init_data for User class ?? - $user =& User::create($id, "", ""); + $user = User::create($id, "", ""); if (@shm_put_var($shm, $tok, $user) == FALSE) { log_only("PUT_VAR FALLITA ".strlen(serialize($user))); log_only(serialize($user)); @@ -919,7 +932,7 @@ class User { } - function save_data(&$user, $id) + function save_data($user, $id) { GLOBAL $sess; @@ -955,39 +968,39 @@ class User { } + static function step_get($sess) + { + $fp = FALSE; + do { + if (validate_sess($sess) == FALSE) + break; + + if (file_exists(PROXY_PATH) == FALSE) + mkdir(PROXY_PATH); + if (($fp = @fopen(PROXY_PATH."/".$sess.".step", 'rb')) == FALSE) + break; + if (($s = fread($fp, 8)) == FALSE) + break; + if (strlen($s) != 8) + break; + $arr = unpack('Ls/Li', $s); + fclose($fp); + + // log_rd2("A0: ".$arr[0]." A1: ".$arr[1]); + return ($arr); + } while (0); + + if ($fp != FALSE) + fclose($fp); + + log_rd2("STEP_GET [".$sess."]: return false "); + + return (FALSE); + } } // end class User -function step_get($sess) { - $fp = FALSE; - do { - if (validate_sess($sess) == FALSE) - break; - - if (file_exists(PROXY_PATH) == FALSE) - mkdir(PROXY_PATH); - if (($fp = @fopen(PROXY_PATH."/".$sess.".step", 'rb')) == FALSE) - break; - if (($s = fread($fp, 8)) == FALSE) - break; - if (strlen($s) != 8) - break; - $arr = unpack('Ls/Li', $s); - fclose($fp); - - // log_rd2("A0: ".$arr[0]." A1: ".$arr[1]); - return ($arr); - } while (0); - - if ($fp != FALSE) - fclose($fp); - - log_rd2("STEP_GET: return false "); - - return (FALSE); -} - function step_unproxy($sess) { log_rd2("UNPROXY: ".PROXY_PATH."/".$sess.".step"); if (file_exists(PROXY_PATH) == FALSE) @@ -1267,7 +1280,7 @@ class Room { $user_cur = &$this->user[$table->player[$i]]; log_main("PREIMPOST: INLOOP name: ".$user_cur->name); - if ($user_cur != $user) { + if ($user->idx_get() != $table->player[$i]) { $user_cur->stat_set("room"); $user_cur->subst = "sitdown"; $user_cur->laccwr = $curtime; @@ -1304,7 +1317,7 @@ class Room { // log_main("VALORI: name: ".$user_cur->name."from_table: ".$from_table." tab: ".$user_cur->table." taix: ".$table_idx." ucur: ".$user_cur." us: ".$user); $ret = "gst.st = ".($user_cur->step+1)."; ".($remove_wagon ? sprintf("tra.rem(%d);",$table_idx) : ""); - if ($from_table && ($user_cur->table == $table_idx || $user_cur == $user)) { + if ($from_table && ($user_cur->table == $table_idx || $user->idx_get() == $i)) { $ret .= 'gst.st_loc++; the_end=true; window.onunload = null; window.onbeforeunload = null; document.location.assign("index.php");|'; // $ret .= 'gst.st_loc++; document.location.assign("index.php");|'; log_main("DOCUMENT.index.php: from table"); @@ -1318,7 +1331,7 @@ class Room { // $ret .= table_act_content(FALSE, 0, $table_idx, $user->table, FALSE); $ret .= $table->act_content($user); - if ($user_cur == $user) { + if ($user->idx_get() == $i) { // set the new status $ret .= 'subst = "standup"; tra.show(); '; // clean the action buttons in other tables @@ -1374,13 +1387,13 @@ class Room { $user_cur->table = -1; $user_wup[$user_wup_n++] = &$user_cur; - $remove_wagon = false; - if($table->wag_own == $user_cur) { - $remove_wagon = true; + $remove_wagon = FALSE; + if($table->wag_own == $table->player[$i]) { + $remove_wagon = TRUE; $table->wag_reset($curtime); } } - $user_tab[$user_tab_n++] = &$user_cur; + $user_tab[$user_tab_n++] = $table->player[$i]; } } @@ -1413,8 +1426,8 @@ class Room { for ($tab_idx = 0 ; $tab_idx < $user_tab_n ; $tab_idx++) - if ($user_cur == $user_tab[$tab_idx]) - break; + if ($user_tab[$tab_idx] == $i) + break; // for users that wakeup the room will be reconstructed by index_rd.php if ($tab_idx < $user_tab_n) { @@ -1472,7 +1485,7 @@ class Room { if ($table_idx > -1) $ret .= $this->table_content($user_cur, $table_idx); - if ($user_cur == $user) { + if ($user->idx_get() == $i) { $itin = ($user->flags & USER_FLAG_AUTH ? "" : ""); $itou = ($user->flags & USER_FLAG_AUTH ? "" : ""); $ret .= sprintf('$("myname").innerHTML = "%s%s%s: ";', $itin, xcape($user->name), $itou); @@ -1516,7 +1529,7 @@ class Room { $ret .= $this->table_content($user_cur, $table_idx); $ret .= $this->standup_content($user_cur); - if ($user_cur == $user) { + if ($user->idx_get() == $i) { $ret .= 'subst = "sitdown"; tra.hide(); '; // clean the action buttons in other tables for ($e = 0 ; $e < TABLES_N ; $e++) { @@ -1858,8 +1871,7 @@ class Room { $user_cur = $this->user[$i]; if ($target != "" && $user_cur->name != $target) continue; - // if ($user_cur->sess == '' || $user_cur->stat != 'room') - if ($user_cur->sess == '' || $user_cur->stat == 'table' || $user_cur == $user) + if ($user_cur->sess == '' || $user_cur->stat == 'table' || $user->idx_get() == $i) continue; if ($is_normchat == TRUE) { @@ -2197,7 +2209,7 @@ class Room { if ($user_cur->stat == 'room') { $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ".$this->standup_content($user_cur); - if ($user_cur == $user) { + if ($user->idx_get() == $i) { $itin = ($user->flags & USER_FLAG_AUTH ? "" : ""); $itou = ($user->flags & USER_FLAG_AUTH ? "" : ""); @@ -2407,8 +2419,8 @@ class Room { if ($user->stat != 'room') return; - for ($e = 0 , $ct = 0 ; $ct < 4 && $e < MAX_PLAYERS ; $e++) { - if ($this->user[$e]->sess == "" || $this->user[$e]->stat != "room" || $this->user[$e]->name == "") + for ($i = 0 , $ct = 0 ; $ct < 4 && $i < MAX_PLAYERS ; $i++) { + if ($this->user[$i]->sess == "" || $this->user[$i]->stat != "room" || $this->user[$i]->name == "") continue; $ct++; } @@ -2417,20 +2429,19 @@ class Room { $content = ' j_stand_cont( [ '; - for ($e = 0 , $ct = 0 ; $e < MAX_PLAYERS ; $e++) { - if ($this->user[$e]->sess == "" || $this->user[$e]->stat != "room" || $this->user[$e]->name == "") + for ($i = 0 , $ct = 0 ; $i < MAX_PLAYERS ; $i++) { + if ($this->user[$i]->sess == "" || $this->user[$i]->stat != "room" || $this->user[$i]->name == "") continue; - $flags = $this->user[$e]->flags; + $flags = $this->user[$i]->flags; - if ($this->user[$e]->subst == "standup") { - if ($this->user[$e] == $user) - { - $flags |= 1; + if ($this->user[$i]->subst == "standup") { + if ($user->idx_get() == $i) { + $flags |= 1; } - - $content .= sprintf('%s[ %d, "%s" ]',($ct > 0 ? ', ' : ''), $flags, xcape($this->user[$e]->name)); - $ct++; + + $content .= sprintf('%s[ %d, "%s" ]',($ct > 0 ? ', ' : ''), $flags, xcape($this->user[$i]->name)); + $ct++; } } $content .= ' ]);'; @@ -2455,16 +2466,16 @@ class Room { $content = "[ "; for ($i = 0 ; $i < $table->player_n ; $i++) { - $user_cur = &$this->user[$table->player[$i]]; - - $flags = $user_cur->flags; - - if ($user_cur == $user) - $flags |= 1; - - log_main($user_cur->name. sprintf(" IN TABLE [%d]", $table_idx)); - - $content .= sprintf('%s[ %d, "%s" ]',($i == 0 ? '' : ', '), $flags, xcape($user_cur->name)); + $user_cur = &$this->user[$table->player[$i]]; + + $flags = $user_cur->flags; + + if ($user->idx_get() == $table->player[$i]) + $flags |= 1; + + log_main($user_cur->name. sprintf(" IN TABLE [%d]", $table_idx)); + + $content .= sprintf('%s[ %d, "%s" ]',($i == 0 ? '' : ', '), $flags, xcape($user_cur->name)); } $content .= ' ]';