- /* CARDS */
- if ($is_transition) { // && $user->subst == "asta" superfluo
- $ret .= "|";
-
- for ($i = 0 ; $i < 8 ; $i++) {
- for ($e = 0 ; $e < BRISKIN5_PLAYERS_N ; $e++) {
- $ct = 0;
- for ($o = 0 ; $o < 40 && $ct < $i+1 ; $o++) {
- if ($table->card[$o]->owner == (($e + $table->gstart) % BRISKIN5_PLAYERS_N)) {
- $ct++;
- if ($ct == $i+1)
- break;
- }
- }
- log_rd("O ".$o." VAL ".$table->card[$o]->value." Owner: ".$table->card[$o]->owner);
-
- $ret .= sprintf( ' card_send(%d,%d,%d,%8.2f,%d);|', ($table->gstart + $e) % BRISKIN5_PLAYERS_N,
- $i, ((($e + BRISKIN5_PLAYERS_N - $table_pos + $table->gstart) % BRISKIN5_PLAYERS_N) == 0 ?
- $table->card[$o]->value : -1),
- ($i == 7 && $e == (BRISKIN5_PLAYERS_N - 1) ? 1 : 0.5),$i+1);
+ for ($i = 0 ; $i < $table->player_n ; $i++) {
+ $user_cur = &$this->user[$i];
+
+ if ($user_cur->lacc + (EXPIRE_TIME_RD * 2) >= $curtime) {
+ $is_ab = FALSE;
+ break;
+ }
+ }
+
+ return ($is_ab);
+ }
+
+ static function request_mgr(&$s_a_p, $header, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie)
+ {
+ GLOBAL $G_ban_list, $G_black_list;
+
+ // printf("NEW_SOCKET (root): %d\n", intval($new_socket));
+
+ $enc = get_encoding($header);
+ if (isset($header['User-Agent'])) {
+ if (strstr($header['User-Agent'], "MSIE")) {
+ $transp_type = "htmlfile";
+ }
+ else {
+ $transp_type = "xhr";
+ }
+ }
+ else {
+ $transp_type = "iframe";
+ }
+ force_no_cache($header_out);
+
+ if (($table_idx = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE)
+ unset($table_idx);
+
+ if (($table_token = gpcs_var('table_token', $get, $post, $cookie)) === FALSE)
+ unset($table_token);
+
+
+ switch ($path) {
+ case "":
+ case "index.php":
+ ob_start();
+ bin5_index_main($transp_type, $header, $header_out, $addr, $get, $post, $cookie);
+ $content = ob_get_contents();
+ ob_end_clean();
+
+ $s_a_p->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content);
+ return TRUE;
+
+ break;
+ case "index_wr.php":
+ if (isset($table_idx) && isset($table_token)) {
+ if (($bri = $s_a_p->app->match_get($table_idx, $table_token)) != FALSE) {
+ ob_start();
+ bin5_index_wr_main($bri, $addr, $get, $post, $cookie);
+ $content = ob_get_contents();
+ ob_end_clean();
+ }
+ else {
+ $content = "Bin5 Load data error";
+ }
+ }
+ else {
+ $content = "Bin5 Load data error";
+ }
+ $s_a_p->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content);
+ return TRUE;
+
+ break;
+ case "index_rd.php":
+ case "index_rd_wss.php":
+ if (($transp = gpcs_var('transp', $get, $post, $cookie)) === FALSE)
+ $transp = "iframe";
+ if ($transp == 'websocket' || $transp == 'websocketsec')
+ $enc = 'plain';
+
+ do {
+ if (!isset($table_idx)
+ || !isset($table_token)
+ || !isset($cookie['sess'])
+ || ($bri = $s_a_p->app->match_get($table_idx, $table_token)) == NULL
+ || (($user = $bri->get_user($cookie['sess'], $idx)) == FALSE)) {
+
+ $content = Bin5_user::stream_fini($transp_type, $s_a_p->rndstr, TRUE);
+ $s_a_p->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content);
+
+ return TRUE;
+ break;
+ }
+ $bri->brisk->sess_cur_set($user->sess);
+
+ // close a previous opened index_read_ifra socket, if exists
+ if (($prev = $user->rd_socket_get()) != NULL) {
+ $s_a_p->socks_unset($user->rd_socket_get());
+ fclose($user->rd_socket_get());
+ // printf("CLOSE AND OPEN AGAIN ON IFRA2\n");
+ $user->rd_socket_set(NULL);
+ }
+
+ $content = "";
+ $user->stream_init($s_a_p->rndstr, $enc, $header, $header_out, $content, $get, $post, $cookie);
+
+ $response = headers_render($header_out, -1).$user->chunked_content($content);
+ $response_l = mb_strlen($response, "ASCII");
+
+ $wret = @fwrite($new_socket, $response, $response_l);
+ if ($wret < $response_l) {
+ printf("TROUBLES WITH FWRITE: %d\n", $wret);
+ $user->rd_cache_set(mb_substr($content, $wret, $response_l - $wret, "ASCII"));
+ }
+ else {
+ $user->rd_cache_set("");
+ }
+ fflush($new_socket);
+
+
+ $s_a_p->socks_set($new_socket, $user, NULL);
+ $user->rd_socket_set($new_socket);
+ // printf(" - qui ci siamo - ");
+ return TRUE;
+ } while (FALSE);
+
+ return FALSE;
+ break;
+
+ default:
+ return FALSE;
+ break;