first working match
authorMatteo Nastasi <nastasi@alternativeoutput.it>
Sat, 4 Aug 2012 11:53:50 +0000 (13:53 +0200)
committerMatteo Nastasi <nastasi@alternativeoutput.it>
Sat, 4 Aug 2012 11:53:50 +0000 (13:53 +0200)
web/Obj/brisk.phh
web/Obj/sac-a-push.phh
web/Obj/user.phh
web/briskin5/Obj/briskin5.phh
web/briskin5/index.php
web/briskin5/index_wr.php
web/index.php
web/index_wr.php
web/spush/brisk-spush.php

index 000722b..60ea624 100644 (file)
@@ -666,14 +666,16 @@ class Room {
 
   var $user;
   var $table;
+  var $match;
   var $comm; // commands for many people
   var $step; // current step of the comm array
   // externalized var $garbage_timeout;
   var $shm_sz;
 
   function Room () {
-    $this->user = array();
+    $this->user  = array();
     $this->table = array();
+    $this->match = array();
 
     for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
         $this->user[$i] = User::create($this, $i, "", "");
@@ -718,157 +720,152 @@ class Room {
     }
       
     webservers_check();
-      // FIXME BRISK4: include for each kind of table
-      require_once("${G_base}briskin5/Obj/briskin5.phh");
-
-      // Before all align times with table timeout
-      for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) {
+    
+    // Before all align times with table timeout
+    for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) {
        $table_cur = $this->table[$table_idx];
        // if the table is complete and exists its shared mem we get the info about users lacc
-
+        
        if ($table_cur->player_n == PLAYERS_N) {
-         log_main("PLAYERS == N TABLE ".$table_idx);
-         
-         if (($sem = Bin5::lock_data(TRUE, $table_idx)) != FALSE) { 
-           log_main("bin5 lock data success");
-           
-           $no_recovery = FALSE;
-           if (($bri = Bin5::load_data($table_idx)) != FALSE) {
-             if ($table_cur->table_token != $bri->table_token) {
-               log_main("ERROR: not matching table_token. Room: ".$table_cur->table_token."  Table: ".$bri->table_token);
-               log_main("ERROR: not matching table_start. Room: ".$table_cur->table_start."  Table: ".$bri->table_start);
-               $no_recovery = TRUE;
-               $bri = FALSE;
-             }
-           }
-           
-           if ($bri != FALSE) {
-             //
-             //  SPAWN: JOIN
-             //
-             log_main("garbage_manager: bri loaded successfully.");
-             $bri->garbage_manager(TRUE);
-             
-             $bri_table = $bri->table[0];
-
-             // is the end of the table
-             if ($bri->the_end == TRUE) {
-                  /*
-                *  DESTROY OF FINISHED TABLE && MOVE PLAYER TO ROOM AGAIN
-                */
-               log_main("garbage_manager: INSIDE THE END.");
-
-                $plist = "$table_cur->table_token|$table_cur->idx|$table_cur->player_n";
-                for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
-                  $plist .= '|'.$this->user[$table_cur->player[$i]]->sess;
+            log_main("PLAYERS == N TABLE ".$table_idx);
+            
+            
+            $no_recovery = FALSE;
+            if (isset($this->match[$table_idx])) {
+                $bri = $this->match[$table_idx];
+
+                if ($table_cur->table_token != $bri->table_token) {
+                    log_main("ERROR: not matching table_token. Room: ".$table_cur->table_token."  Table: ".$bri->table_token);
+                    log_main("ERROR: not matching table_start. Room: ".$table_cur->table_start."  Table: ".$bri->table_start);
+                    $no_recovery = TRUE;
+                    $bri = FALSE;
                 }
 
-               for ($i = 0 ; $i < $bri_table->player_n ; $i++) {
-                 // stat must be "table" by definition
-                 $user_cur = $this->user[$table_cur->player[$i]];
-                 $bri_user = $bri->user[$i];
-                 
-                 $user_cur->subst      = $bri_user->subst;
-                 $user_cur->step       = $bri_user->step;
-                 $user_cur->lacc       = $bri_user->lacc;
-                 $user_cur->laccwr     = $bri_user->lacc;
-                 $user_cur->bantime    = $bri_user->bantime;
-               }
-
-                log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME", $plist);
-
-               $this->room_join_wakeup($user_cur, FALSE, 0); 
-               $table_cur->table_token = "";
-                $table_cur->wakeup_time = $curtime + WAKEUP_TIME;
-                        
-                        $bri->destroy_data($table_idx);
-             }
-             else {
-               log_main("gm:: save_data");
-
-               for ($i = 0 ; $i < $bri_table->player_n ; $i++) {
-                 $this->user[$table_cur->player[$i]]->lacc = $bri->user[$i]->lacc;
-               }
-             
-               Bin5::save_data($bri);
-             }
-           } // else if (($bri = Bin5::load_data($table_idx)) != FALSE) {
-           else if ($no_recovery == FALSE) {
-             log_crit("ERROR: table ".$table_idx." unrecoverable join");
-
-             for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
-               $user_cur = $this->user[$table_cur->player[$i]];
-               $user_cur->subst = "shutdowner";
-               $user_cur->step_inc();
-               
-               $ret = sprintf('stat = "%s"; subst = "%s";',  $user_cur->stat, $user_cur->subst);
-               $ret .= "gst.st = ".($user_cur->step+1)."; ";
-                // MLANG <br>I dati del tavolo n&deg; ".$user_cur->table." sono inconsistenti, verranno resettati.<br><br>Torni in piedi.<br><br>
-                $prestr = sprintf($mlang_brisk['tabincon'][$G_lang], $user_cur->table);
-               $ret .= show_notify($prestr, 2000, $mlang_brisk['btn_close'][$G_lang], 400, 110);
-               $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-               $user_cur->step_inc();
-             }
-
-              $plist = "$table_cur->table_token|$user_cur->table|$table_cur->player_n";
-              for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
-                $plist .= '|'.$this->user[$table_cur->player[$i]]->sess;
-              }
-              log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME(RECOVERY)", $plist);
-              
-             $this->room_join_wakeup($user_cur, TRUE, -2); 
-             $table_cur->table_token = "";
-           }
 
-           Bin5::unlock_data($sem);
-         } // bri::lock_data
-       } //  if ($table_cur->player_n == PLAYERS_N) {
-      } //  for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) {
+                if ($bri != FALSE) {
+                    //
+                    //  SPAWN: JOIN
+                    //
+                    log_main("garbage_manager: bri loaded successfully.");
+                    $bri->garbage_manager(TRUE);
+                    
+                    $bri_table = $bri->table[0];
+                    
+                    // is the end of the table
+                    
+                    if ($bri->the_end == TRUE) {
+                        /*
+                         *  DESTROY OF FINISHED TABLE && MOVE PLAYER TO ROOM AGAIN
+                         */
+                        log_main("garbage_manager: INSIDE THE END.");
+                        
+                        $plist = "$table_cur->table_token|$table_cur->idx|$table_cur->player_n";
+                        for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
+                            $plist .= '|'.$this->user[$table_cur->player[$i]]->sess;
+                        }
+                        
+                        for ($i = 0 ; $i < $bri_table->player_n ; $i++) {
+                            // stat must be "table" by definition
+                            $user_cur = $this->user[$table_cur->player[$i]];
+                            $bri_user = $bri->user[$i];
+                            
+                            $user_cur->subst      = $bri_user->subst;
+                            $user_cur->step       = $bri_user->step;
+                            $user_cur->lacc       = $bri_user->lacc;
+                            $user_cur->laccwr     = $bri_user->lacc;
+                            $user_cur->bantime    = $bri_user->bantime;
+                        }
+                        
+                        log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME", $plist);
+                        
+                        $this->room_join_wakeup($user_cur, FALSE, 0); 
+                        $table_cur->table_token = "";
+                        $table_cur->wakeup_time = $curtime + WAKEUP_TIME;
+                        
+                        $this->match_del($table_idx);
+                    }
+                    else {
+                        log_main("gm:: save_data");
+                        
+                        for ($i = 0 ; $i < $bri_table->player_n ; $i++) {
+                            $this->user[$table_cur->player[$i]]->lacc = $bri->user[$i]->lacc;
+                        }
+                    }
+                } // if ($bri == FALSE
+                else if ($no_recovery == FALSE) {
+                    log_crit("ERROR: table ".$table_idx." unrecoverable join");
+                    
+                    for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
+                        $user_cur = $this->user[$table_cur->player[$i]];
+                        $user_cur->subst = "shutdowner";
+                        $user_cur->step_inc();
+                        
+                        $ret = sprintf('stat = "%s"; subst = "%s";',  $user_cur->stat, $user_cur->subst);
+                        $ret .= "gst.st = ".($user_cur->step+1)."; ";
+                        // MLANG <br>I dati del tavolo n&deg; ".$user_cur->table." sono inconsistenti, verranno resettati.<br><br>Torni in piedi.<br><br>
+                        $prestr = sprintf($mlang_brisk['tabincon'][$G_lang], $user_cur->table);
+                        $ret .= show_notify($prestr, 2000, $mlang_brisk['btn_close'][$G_lang], 400, 110);
+                        $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                        $user_cur->step_inc();
+                    }
+                    
+                    $plist = "$table_cur->table_token|$user_cur->table|$table_cur->player_n";
+                    for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
+                        $plist .= '|'.$this->user[$table_cur->player[$i]]->sess;
+                    }
+                    log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME(RECOVERY)", $plist);
+                    
+                    $this->room_join_wakeup($user_cur, TRUE, -2); 
+                    $table_cur->table_token = "";
+                }
+            }
+        } //  if ($table_cur->player_n == PLAYERS_N) {
+    } //  for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) {
     
-      log_rd2("out new loop.");
-               
-      for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
+    log_rd2("out new loop.");
+    
+    for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
        $user_cur = $this->user[$i];
        
        log_rd2("User: ".$user_cur->name."  stat: ".$user_cur->stat."  subst: ".$user_cur->subst);
-         
+       
        if ($user_cur->sess == "") 
-         continue;
+            continue;
        
        if ($user_cur->lacc + EXPIRE_TIME_RD < $curtime) {
-         // Auto logout dell'utente
-         log_rd2("AUTO LOGOUT.".($user_cur->lacc + EXPIRE_TIME_RD)." curtime ".$curtime);
-         
-         if ($user_cur->stat == 'table' || $user_cur->stat == 'room') {
-           log_auth($user_cur->sess, "Autologout session.");
-           
-           $user_cur->reset();
+            // Auto logout dell'utente
+            log_rd2("AUTO LOGOUT.".($user_cur->lacc + EXPIRE_TIME_RD)." curtime ".$curtime);
+            
+            if ($user_cur->stat == 'table' || $user_cur->stat == 'room') {
+                log_auth($user_cur->sess, "Autologout session.");
+                
+                $user_cur->reset();
            
-           log_rd2("AUTO LOGOUT.");
-           if ($user_cur->subst == 'sitdown' || $user_cur->stat == 'table')
-             $this->room_wakeup($user_cur);
-           else if ($user_cur->subst == 'standup')
-             $this->room_outstandup($user_cur);
-           else
-             log_rd2("LOGOUT FROM WHAT ???");
-         }
+                log_rd2("AUTO LOGOUT.");
+                if ($user_cur->subst == 'sitdown' || $user_cur->stat == 'table')
+                    $this->room_wakeup($user_cur);
+                else if ($user_cur->subst == 'standup')
+                    $this->room_outstandup($user_cur);
+                else
+                    log_rd2("LOGOUT FROM WHAT ???");
+            }
        }
 
        if ($user_cur->laccwr + EXPIRE_TIME_SMAMMA < $curtime) { // lo rimettiamo in piedi
-         if ($user_cur->stat == 'room' && $user_cur->subst == 'sitdown') {
-           $this->room_wakeup($user_cur);
-           $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ";
-            /* MLANG: <br>Sei stato inattivo per ".(EXPIRE_TIME_SMAMMA/60.0)." minuti. <br><br>Quindi ritorni tra i <b>Giocatori in piedi</b>.", "torna ai tavoli" */
-           $user_cur->comm[$user_cur->step % COMM_N] .=  show_notify($mlang_brisk['tabtout_a'][$G_lang].(EXPIRE_TIME_SMAMMA/60.0).$mlang_brisk['tabtout_b'][$G_lang], 0, $mlang_brisk['btn_backstand'][$G_lang], 400, 100);
-           $user_cur->step_inc();
-         }
+            if ($user_cur->stat == 'room' && $user_cur->subst == 'sitdown') {
+                $this->room_wakeup($user_cur);
+                $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ";
+                /* MLANG: <br>Sei stato inattivo per ".(EXPIRE_TIME_SMAMMA/60.0)." minuti. <br><br>Quindi ritorni tra i <b>Giocatori in piedi</b>.", "torna ai tavoli" */
+                $user_cur->comm[$user_cur->step % COMM_N] .=  show_notify($mlang_brisk['tabtout_a'][$G_lang].(EXPIRE_TIME_SMAMMA/60.0).$mlang_brisk['tabtout_b'][$G_lang], 0, $mlang_brisk['btn_backstand'][$G_lang], 400, 100);
+                $user_cur->step_inc();
+            }
        }
-      }
-      log_rd2("GARBAGE UPDATED!");
-      
-      // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
-      Room::garbage_time_expire_set($curtime + GARBAGE_TIMEOUT);
-      $ismod = TRUE;
+    }
+    log_rd2("GARBAGE UPDATED!");
+    
+    // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
+    Room::garbage_time_expire_set($curtime + GARBAGE_TIMEOUT);
+    $ismod = TRUE;
 
     return ($ismod);
   }
@@ -2174,8 +2171,8 @@ class Room {
       printf("NEW_SOCKET (root): %d\n", intval($new_socket));
 
       switch ($path) {
-      case SITE_PREFIX:
-      case SITE_PREFIX."index.php":
+      case "":
+      case "index.php":
           ob_start();
       index_main($this, $header_out, $addr, $get, $post, $cookie);
       $content = ob_get_contents();
@@ -2185,7 +2182,7 @@ class Room {
       return TRUE;
 
       break;
-      case SITE_PREFIX."index_wr.php":
+      case "index_wr.php":
           ob_start();
           index_wr_main($this, $addr, $get, $post, $cookie);
           $content = ob_get_contents();
@@ -2195,7 +2192,7 @@ class Room {
           return TRUE;
 
           break;
-      case SITE_PREFIX."index_rd_ifra.php":
+      case "index_rd_ifra.php":
           do {
               if (!isset($cookie['sess'])
                   || (($user = $this->get_user($cookie['sess'], $idx)) == FALSE)) {
@@ -2239,11 +2236,42 @@ class Room {
           
           return FALSE;
           break;
+
+      default:
+          /* FAR TODO: move all into an array of registered sub-apps */
+          $subs = "briskin5/";
+          $subs_l = strlen($subs);
+          if (!strncmp($path, $subs, $subs_l)) {
+              $ret = Bin5::request_mgr(&$s_a_p, &$header_out, &$new_socket, substr($path, $subs_l) , $addr, $get, $post, $cookie);
+              return ($ret);
+          }
+          break;
       }
 
       return (FALSE);
   }
 
+  function match_add($idx, $match)
+  {
+      $this->match[$idx] = $match;
+  }
+
+  function match_del($idx)
+  {
+      unset($this->match[$idx]);
+  }
+
+  function match_get($idx, $token)
+  {
+      if (isset($this->match[$idx])) {
+          if (   $token == NULL 
+              || $token == $this->match[$idx]->table_token) {
+              return ($this->match[$idx]);
+          }
+      }
+      return NULL;
+  }
+
 } // end class Room
 
 function make_seed()
index bdb4b59..746f7ec 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 define('SITE_PREFIX', '/brisk/');
+define('SITE_PREFIX_LEN', 7);
 
 function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cookie)
 {
@@ -326,7 +327,16 @@ class Sac_a_push {
                             $addr = stream_socket_get_name($new_socket, TRUE);
                             $header_out = array();
 
-                            $this->app->request_mgr($this, $header_out, $new_socket, $path, $addr, $get, $post, $cookie);
+                            $subs = SITE_PREFIX."briskin5/";
+                            $subs_l = strlen($subs);
+                            $rret = FALSE;
+                            if (!strncmp($path, SITE_PREFIX, SITE_PREFIX_LEN)) {
+                                $rret = $this->app->request_mgr($this, $header_out, $new_socket, substr($path, SITE_PREFIX_LEN), $addr, $get, $post, $cookie);
+                            }
+                            if ($rret == FALSE) { 
+                                // FIXME: manage 404 !!!
+                                printf("TODO: fix unknown page\n");
+                            }
                             printf("number of sockets after %d\n", count($this->socks));
                         }
                         else {
@@ -380,6 +390,9 @@ class Sac_a_push {
             }
             
 
+            $this->app->garbage_manager(FALSE);
+
+
             /* manage unfinished pages */
             foreach ($this->pages_flush as $k => $pgflush) {
                 if ($pgflush->try_flush($this->curtime) == TRUE) {
index a4e6e10..e94b4aa 100644 (file)
@@ -186,6 +186,8 @@ class User {
   var $chat_dlt;      // Delta t for ban
   var $shm_sz;
 
+  const BASE = "";    // basepath for absolute web references
+
   function User() {
   }
 
@@ -676,22 +678,22 @@ class User {
       $ret = FALSE;
       $curtime = time();
       
-      if ((($curtime - $this->lacc) >  STREAM_TIMEOUT) || Room::garbage_time_is_expired($curtime)) {
-          $S_load_stat['lL_laccgarb']++;
+      /* if ((($curtime - $this->lacc) >  STREAM_TIMEOUT) || Room::garbage_time_is_expired($curtime)) { */
+      /*     $S_load_stat['lL_laccgarb']++; */
           
-          if (($curtime - $this->lacc) >=  STREAM_TIMEOUT) {
-              $S_load_stat['wU_lacc_upd']++;
-              $this->lacc = $curtime;
-          }
+      /*     if (($curtime - $this->lacc) >=  STREAM_TIMEOUT) { */
+      /*         $S_load_stat['wU_lacc_upd']++; */
+      /*         $this->lacc = $curtime; */
+      /*     } */
           
-          if (Room::garbage_time_is_expired($curtime)) {
-              log_only("F");
+      /*     if (Room::garbage_time_is_expired($curtime)) { */
+      /*         log_only("F"); */
               
-              $S_load_stat['wR_garbage']++;
-              log_main("pre garbage_manager TRE");
-              $this->room->garbage_manager(FALSE);
-          }
-      }
+      /*         $S_load_stat['wR_garbage']++; */
+      /*         log_main("pre garbage_manager TRE"); */
+      /*         $this->room->garbage_manager(FALSE); */
+      /*     } */
+      /* } */
       
       /* Nothing changed, return. */
       if ($cur_step == $this->step) 
@@ -824,10 +826,10 @@ static function stream_fini($is_unrecoverable)
     $body = "";
     $body .= sprintf("<html>
 <head>
-<script type=\"text/javascript\" src=\"commons.js\"></script>
-<script type=\"text/javascript\" src=\"xynt-http-streaming-ifra.js\"></script>
+<script type=\"text/javascript\" src=\"%scommons.js\"></script>
+<script type=\"text/javascript\" src=\"%sxynt-http-streaming-ifra.js\"></script>
 <script type=\"text/javascript\">
-var http_streaming = \"ready\";");
+var http_streaming = \"ready\";", self::base_get(), self::base_get());
     $body .= sprintf("
 window.onload = function () { if (http_streaming != \"ready\") { http_streaming.reload(); } };
 </script>
@@ -859,6 +861,8 @@ function stream_init(&$header_out, &$body, $get, $post, $cookie)
 
     $curtime = time();
 
+    printf("CLASS: [%s] base: [%s]\n", get_class($this), self::base_get());
+
     $is_page_streaming = FALSE; // (webservers_exceeded() || stristr($HTTP_USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0)") || stristr($HTTP_USER_AGENT, "MSIE") || stristr($HTTP_USER_AGENT, "CHROME") ? TRUE : FALSE);
 
     $header_out['Cache-Control'] = 'no-cache, must-revalidate';     // HTTP/1.1
@@ -877,13 +881,14 @@ function stream_init(&$header_out, &$body, $get, $post, $cookie)
         unset($step);
     
     $this->rd_data_set($curtime, $stat, $subst, $step, $from);
+    $cc = get_called_class();
 
     $body .= sprintf("<html>
 <head>
-<script type=\"text/javascript\" src=\"commons.js\"></script>
-<script type=\"text/javascript\" src=\"xynt-http-streaming-ifra.js\"></script>
+<script type=\"text/javascript\" src=\"%scommons.js\"></script>
+<script type=\"text/javascript\" src=\"%sxynt-http-streaming-ifra.js\"></script>
 <script type=\"text/javascript\">
-var http_streaming = \"ready\";");
+var http_streaming = \"ready\";", self::base_get(), self::base_get());
     if ($this->rd_scristp > 0)
         $body .= sprintf("last_clean = %d;\n", ($this->rd_scristp-1));
     $body .= sprintf("
@@ -915,7 +920,7 @@ function stream_main(&$body, $get, $post, $cookie)
     $old_stat  = $this->rd_stat;
     $old_subst = $this->rd_subst;
     $old_step  = $this->rd_step;
-    if (($ret = maincheck($this, $old_stat, $old_subst, $old_step, $this->rd_stat, $this->rd_subst, $this->rd_step, $splashdate)) != FALSE) {
+    if (($ret = $this->maincheck($old_stat, $old_subst, $old_step, $this->rd_stat, $this->rd_subst, $this->rd_step, $splashdate)) != FALSE) {
         $body .= sprintf("<script id='hs%d' type='text/javascript'><!--
 push(\"%s\");
 // -->
@@ -938,35 +943,12 @@ push(null);
     
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    static function base_get()
+    {
+        $c = get_called_class();
+        printf("CALLED_CLASS: [%s]\n", $c);
+        return $c::BASE;
+    }
 
 } // end class User
 
index ae7ae3b..2bdb236 100644 (file)
@@ -428,6 +428,8 @@ class Bin5_user extends User {
     var $handpt;     // Total card points at the beginning of the current hand.
     var $exitislock; // Player can exit from the table ?
     var $privflags;  // Flags for briskin5 only 
+
+    const BASE = "../";
     
     function User() {
     }
@@ -1249,6 +1251,96 @@ class Bin5 {
         return (FALSE);
     }
 
+    static function request_mgr(&$s_a_p, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie)
+    {
+        printf("NEW_SOCKET (root): %d\n", intval($new_socket));
+        
+        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($header_out, $addr, $get, $post, $cookie);
+            $content = ob_get_contents();
+            ob_end_clean();
+        
+            $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
+            return TRUE;
+        
+        break;
+        case "index_wr.php":
+            $bri = $s_a_p->app->match_get($table_idx, $table_token);
+            ob_start();
+            bin5_index_wr_main($bri, $addr, $get, $post, $cookie);
+            $content = ob_get_contents();
+            ob_end_clean();
+            
+            $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
+            return TRUE;
+            
+            break;
+        case "index_rd_ifra.php":
+            do {
+                if (($bri = $s_a_p->app->match_get($table_idx, $table_token)) == NULL) {
+                    return (FALSE);
+                }
+                if (!isset($cookie['sess'])
+                    || (($user = $bri->get_user($cookie['sess'], $idx)) == FALSE)) {
+                    $content = Bin5_user::stream_fini(TRUE);
+                    
+                    $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
+                    return TRUE;
+                    
+                    break;
+                }
+                // 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($header_out, $content, $get, $post, $cookie);
+                $response = headers_render($header_out, -1).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);
+                $user->rd_socket_set($new_socket);
+                printf(" - qui ci siamo - ");
+                return TRUE;
+            } while (FALSE);
+            
+            return FALSE;
+            break;
+            
+        default:
+            return FALSE;
+            break;
+      }
+
+      return (FALSE);
+  }
+
+
+
 } // end class Bin5
 
 function locshm_exists($tok)
@@ -1783,15 +1875,13 @@ function game_result($asta_pnt, $pnt)
     }
 }
 
-function log_points($curtime, $user, $where, $mesg) 
+function log_points($remote_addr, $curtime, $user, $where, $mesg) 
 {
-    GLOBAL $_SERVER;
-
     if (($fp = @fopen(LEGAL_PATH."/points.log", 'a')) != FALSE) {
         /* Unix time | session | nickname | IP | where was | mesg */
         fwrite($fp, sprintf("%ld|%s|%s|%s|%s|%s|%s|\n", $curtime, $user->sess,
                             ($user->flags & USER_FLAG_AUTH ? 'A' : 'N'),
-                            $user->name, $_SERVER['REMOTE_ADDR'], $where , $mesg));
+                            $user->name, $remote_addr, $where , $mesg));
         fclose($fp);
     }
 }
index b646609..f4fc60f 100644 (file)
@@ -41,13 +41,23 @@ $mlang_bin5_index = array( 'aucwin' => array( 'it' => 'Hai vinto l\'asta.<br> Sc
                            );
 
 
-// Use of proxies isn't allowed.
-if (is_proxy()) {
-    return (FALSE);
-}
+function bin5_index_main(&$header_out, $addr, $get, $post, $cookie)
+{
+    GLOBAL $G_lang, $mlang_bin5_index;
+    if (($table_idx = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE)
+        unset ($table_idx);
+    if (($laststate = gpcs_var('laststate', $get, $post, $cookie)) === FALSE)
+        unset ($laststate);
+    if (($sess = gpcs_var('sess', $get, $post, $cookie)) === FALSE)
+        unset ($sess);
 
+    // Use of proxies isn't allowed.
+    // if (is_proxy()) {
+    // return (FALSE);
+    // }
+    
 // header('Content-type: text/html; charset="utf-8"',true);
-?>
+    ?>
 <html>
 <head>
 <title>Brisk - Tavolo <?php echo "$table_idx";?></title>
@@ -78,13 +88,13 @@ if (is_proxy()) {
 
    var gst  = new globst();
    gst.st = <?php 
-log_load("bin5/index.php");
+       log_load("bin5/index.php");
 
-if (isset($laststate) == false) {
-  $laststate = -1;
-}
-echo $laststate;
-?>;
+   if (isset($laststate) == false) {
+       $laststate = -1;
+   }
+   echo $laststate;
+   ?>;
 var g_is_spawn=1;
 // var g_table_idx=<?php echo "$table_idx";?>;
 
@@ -297,3 +307,6 @@ window.onload = function() {
 
 </body>
 </html>
+<?php
+}
+?>
\ No newline at end of file
index 6cb1580..d865972 100644 (file)
@@ -35,508 +35,506 @@ require_once("Obj/briskin5.phh");
 //   exit;
 //}
 
-if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
-  echo "Debugging time!";
-  exit;
-}
-
-log_load("bin5/index_wr.php");
-
 /*
  *  MAIN
  */
-log_wr('COMM: '.$mesg);
-
-$table_idx = (int)$table_idx;
-if ($table_idx < 0 || $table_idx >= TABLES_N)
-     exit;
-
-log_wr(0, 'bin::index_wr.php: COMM: '.xcapemesg($mesg));
-
-$sem = Bin5::lock_data(TRUE, $table_idx);
-
-if (($bri = Bin5::load_data($table_idx,$table_token)) == FALSE) {
-  echo "Bin5 Load data error";
-  log_wr("Bin5 Load data error");
-  Bin5::unlock_data($sem);
-  exit;
-}
-
-if (($user = &$bri->get_user($sess, &$idx)) == FALSE) {
-  echo "Get User Error";
-  log_wr("Get User Error");
-  Bin5::unlock_data($sem);
-  exit;
-}
-$argz = explode('|', $mesg);
-
-log_wr('POSTSPLIT: '.$argz[0].'  user->stat: ['.$user->stat.']');
-log_wr($user->step, 'bin::index_wr.php: after get_user()');
+function bin5_index_wr_main(&$bri, $remote_addr, $get, $post, $cookie)
+{
+    GLOBAL $G_base, $G_dbasetype;
 
-if (false && $argz[0] == 'shutdown') {
-  log_auth($user_cur->sess, "Shutdown session. delegate to room gc the autologout");
-  
-  log_rd2("bin5/index_wr.php: AUTO LOGOUT.");
-  if ($user->stat == 'table') {
-    $bri->table_wakeup($user);
-    // to force the logout
-    $user->lacc = 0;
-  }
-  else
-    log_rd2("SHUTDOWN FROM WHAT ???");
-}
-/*********************
- *                   *
- *    STAT: table    *
- *                   *
- *********************/
-else if ($user->stat == 'table') {
-  $user->laccwr = time();
-  $table = $bri->table[$user->table];
+    if ($bri == NULL) {
+        return FALSE;
+    }
+    
+    if (($mesg = gpcs_var('mesg', $get, $post, $cookie)) === FALSE) 
+        unset($mesg);
+    
+    if (($sess = gpcs_var('sess', $get, $post, $cookie)) === FALSE) 
+        $sess = "";
 
-  if ($argz[0] == 'tableinfo') {
-    log_wr("PER DI TABLEINFO");
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .= show_table_info(&$bri, &$table, $user->table_pos);
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
-  }
-  else if ($argz[0] == 'chatt') {
-    $bri->chatt_send(&$user,$mesg);
-  }
-  else if ($argz[0] == 'preferences_update') {
-    GLOBAL $CO_bin5_pref_ring_endauct;
+    log_wr('COMM: '.$mesg);
 
-    log_wr("PER DI TABLEINFO");
 
-    if ($CO_bin5_pref_ring_endauct == "true")
-      $user->privflags |= BIN5_USER_FLAG_RING_ENDAUCT;
-    else
-      $user->privflags &= ~BIN5_USER_FLAG_RING_ENDAUCT;
-  }
-  else if ($argz[0] == 'logout') {
-    $remcalc = $argz[1];
+    if (($CO_bin5_pref_ring_endauct = gpcs_var('CO_bin5_pref_ring_endauct', $get, $post, $cookie)) === FALSE) 
+        $CO_bin5_pref_ring_endauct = "";
 
-    if ($user->exitislock == TRUE) {
-      $remcalc++;
-      $user->exitislock = FALSE;
-    }
 
-    $logout_cont = TRUE;
-    if ($remcalc >= 3) {
-      $lockcalc = $table->exitlock_calc(&$bri->user, $user->table_pos);
-      if ($lockcalc < 3) {
-       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-       $user->comm[$user->step % COMM_N] .= $table->exitlock_show(&$bri->user, $user->table_pos);
-       $user->comm[$user->step % COMM_N] .=  show_notify("<br>I dati presenti sul server non erano allineati con quelli inviati dal tuo browser, adesso lo sono. Riprova ora.", 2000, "torna alla partita.", 400, 100);
-       
-       log_wr($user->comm[$user->step % COMM_N]);
-       $user->step_inc();
-       $logout_cont = FALSE;
-      }
-    }
-    else {
-      require_once("../Obj/hardban.phh");
-      Hardbans::add(($user->flags & USER_FLAG_AUTH ? $user->name : FALSE),
-                    $user->ip, $user->sess, $user->laccwr + BAN_TIME);
-    }
-    //      $user->bantime = $user->laccwr + BAN_TIME;
     
-    if ($logout_cont == TRUE) {
-      $bri->table_wakeup(&$user);
-    }
-  }
-  else if ($argz[0] == 'exitlock') {
-    if ($user->exitislock == TRUE) {
-      $user->exitislock = ($user->exitislock == TRUE ? FALSE : TRUE);
-      for ($ct = 0, $i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {     
-        $user_cur[$i] = &$bri->user[$table->player[$i]];
-        if ($user_cur[$i]->exitislock == FALSE)
-          $ct++;
-      }
-      for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-        $ret = sprintf('gst.st = %d;', $user_cur[$i]->step+1);
-        $ret .= sprintf('exitlock_show(%d, %s);', $ct, 
-                        ($user_cur[$i]->exitislock ? 'true' : 'false'));
-        $user_cur[$i]->comm[$user_cur[$i]->step % COMM_N] = $ret;
-        log_wr($user_cur[$i]->comm[$user_cur[$i]->step % COMM_N]);
-        $user_cur[$i]->step_inc();
-      }
-    }
-  }
-  else if ($user->subst == 'asta') {
-    if ($argz[0] == 'lascio' && $user->handpt <= 2) {
-      $index_cur = $table->gstart % BIN5_PLAYERS_N;
+    log_wr(0, 'bin::index_wr.php: COMM: '.xcapemesg($mesg));
     
-      log_wr(sprintf("GIOCO FINITO !!!"));
     
-      $table->mult += 1; 
-      $table->old_reason = sprintf("Ha lasciato %s perché aveva al massimo 2 punti.", xcape($user->name));
-
-      $table->game_next();
-      $table->game_init(&$bri->user);
-    
-      for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {      
-       $user_cur = &$bri->user[$table->player[$i]];
-
-       $ret = sprintf('gst.st = %d;', $user_cur->step+1);
-       $ret .= show_table(&$bri,&$user_cur,$user_cur->step+1, TRUE, TRUE);
-       $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-       $user_cur->step_inc();      
-      }
+    if (($user = &$bri->get_user($sess, &$idx)) == FALSE) {
+        echo "Get User Error";
+        log_wr("Get User Error");
+        return FALSE;
     }
-    else if ($argz[0] == 'asta') {
-      $again = TRUE;
+    $argz = explode('|', $mesg);
     
-      $index_cur = $table->gstart % BIN5_PLAYERS_N;
-      if ($user->table_pos == $index_cur &&
-         $table->asta_pla[$index_cur]) {
-       $a_card = $argz[1];
-       $a_pnt  = $argz[2];
-      
-       log_wr("CI SIAMO  a_card ".$a_card."  asta_card ".$table->asta_card);
-      
-       // Abbandono dell'asta
-       if ($a_card <= -1) {
-         log_wr("Abbandona l'asta.");
-         $table->asta_pla[$index_cur] = FALSE;
-         $user->asta_card  = -1;
-         $table->asta_pla_n--;
-         $again = FALSE;
-       }
-       else if ($a_card <= 9) {
-         if ($a_card >= 0 && $a_card < 9 && $a_card > $table->asta_card)
-           $again = FALSE;
-         else if ($a_card == 9 && $a_pnt > ($table->asta_pnt >= 61 ? $table->asta_pnt : 60) && $a_pnt <= 120)
-           $again = FALSE;
-         
-
-         if ($again == FALSE) {
-           log_wr("NUOVI ORZI.");
-           $user->asta_card  = $a_card;
-           $table->asta_card = $a_card;
-           if ($a_card == 9) {
-             $user->asta_pnt   = $a_pnt;
-             $table->asta_pnt  = $a_pnt;
-           }
-         }
-       }
-      
-      
-      
-       if ($again) { // Qualcosa non andato bene, rifare
-         $ret = sprintf('gst.st = %d; asta_pnt_set(%d);', $user->step+1, 
-                         ($table->asta_pnt > 60 ? $table->asta_pnt + 1 : 61) );
-         $user->comm[$user->step % COMM_N] = $ret;
-         $user->step_inc();
-
-         log_wr("Ripetere.");
-       }
-       else {
-         /* next step */
-         $showst = "show_astat("; 
-         for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-           $user_cur = &$bri->user[$table->player[$i]];
-           $showst .= sprintf("%s%d", ($i == 0 ? "" : ", "), 
-                              ($user_cur->asta_card < 9 ? $user_cur->asta_card : $user_cur->asta_pnt));
-         }
-         if (BIN5_PLAYERS_N == 3)
-           $showst .= ",-2,-2";
-         $showst .= ");";
-
-         $maxcard = -2;
-         for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-           $user_cur = &$bri->user[$table->player[$i]];
-           if ($maxcard < $user_cur->asta_card)
-             $maxcard = $user_cur->asta_card;
-         }
-
-         if (($table->asta_pla_n > ($maxcard > -1 ? 1 : 0)) &&
-             !($table->asta_card == 9 && $table->asta_pnt == 120)) {
-           log_wr("ALLOPPA QUI");
-           for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) {
-             $index_next = ($table->gstart + $i) % BIN5_PLAYERS_N;
-             if ($table->asta_pla[$index_next]) {
-               log_wr("GSTART 1");
-               $table->gstart += $i;
-               break;
-             }
-           }
-         
-         
-           for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-             $user_cur = &$bri->user[$table->player[$i]];
-             $ret = sprintf('gst.st = %d; %s', $user_cur->step+1, $showst);
-             if ($user_cur->table_pos == ($table->gstart % BIN5_PLAYERS_N)) 
-               $ret .= sprintf('dispose_asta(%d,%d, %s); remark_on();', 
-                               $table->asta_card + 1, $table->asta_pnt+1, ($user_cur->handpt <= 2 ? "true" : "false"));
-             else
-               $ret .= sprintf('dispose_asta(%d,%d, %s); remark_off();',
-                               $table->asta_card + 1, -($table->asta_pnt+1), ($user_cur->handpt <= 2 ? "true" : "false"));
-             $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-             $user_cur->step_inc();
-           }
-         }
-         else if ($table->asta_pla_n == 0) {
-           log_wr("PASSANO TUTTI!");
-
-           log_wr(sprintf("GIOCO FINITO !!!"));
-         
-           $table->old_reason = "Hanno passato tutti.";
-           $table->mult += 1; 
-
-           $table->game_next();
-           $table->game_init(&$bri->user);
-         
-           for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) { 
-             $user_cur = &$bri->user[$table->player[$i]];
-
-             $ret = sprintf('gst.st = %d;', $user_cur->step+1);
-             $ret .= show_table(&$bri,&$user_cur,$user_cur->step+1, TRUE, TRUE);
-             $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-             $user_cur->step_inc();        
-           }
-         }
-         else {
-           log_wr("FINITA !");
-           // if a_pnt == 120 supergame ! else abbandono
-           if ($a_pnt == 120 || $user->asta_card != -1) {
-             $chooser = $index_cur;
-             for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) 
-               if ($i != $chooser)
-                 $table->asta_pla[$i] = FALSE;
-           }
-           else {
-              /*
-             $user->comm[$user->step % COMM_N] = sprintf( "gst.st = %d; dispose_asta(%d, %d, false); remark_off();", 
-                                                           $user->step+1, $table->asta_card + 1,-($table->asta_pnt));
-             $user->step_inc();
-              */
-             for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) {
-               $chooser = ($table->gstart + $i) % BIN5_PLAYERS_N;
-               if ($table->asta_pla[$chooser]) {
-                 break;
-               }
-             }
-           }
-           $table->asta_win = $chooser;
-
-           for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-             $user_cur = &$bri->user[$table->player[$i]];
-             $ret = sprintf('gst.st = %d; %s dispose_asta(%d, %d, false);', $user_cur->step+1, $showst,
-                             $table->asta_card + 1,-($table->asta_pnt));
-
-             if ($i == $chooser) {
-               $ret .= "choose_seed(". $table->asta_card."); remark_on();";
-             }
-             else {
-               $ret .= "remark_off();";
-             }
-
-             $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-             $user_cur->step_inc();        
-           }
-         }
-       }
-      }
-      else {
-       log_wr("NON CI SIAMO");
-      }
+    log_wr('POSTSPLIT: '.$argz[0].'  user->stat: ['.$user->stat.']');
+    log_wr($user->step, 'bin::index_wr.php: after get_user()');
+    
+    if (false && $argz[0] == 'shutdown') {
+        log_auth($user_cur->sess, "Shutdown session. delegate to room gc the autologout");
+        
+        log_rd2("bin5/index_wr.php: AUTO LOGOUT.");
+        if ($user->stat == 'table') {
+            $bri->table_wakeup($user);
+            // to force the logout
+            $user->lacc = 0;
+        }
+        else
+            log_rd2("SHUTDOWN FROM WHAT ???");
     }
-    /*  asta::choose */
-    else if ($argz[0] == 'choose') {
-      if ($table->asta_win > -1 && 
-         $user->table_pos == $table->asta_win) {
-       $a_brisco = $argz[1];
-       if ($a_brisco >= 0 && $a_brisco < 40) {
-         $table->briscola = $a_brisco;
-         $table->friend   = $table->card[$a_brisco]->owner;
-         log_wr("GSTART 2");
-         $table->gstart = ($table->mazzo+1) % BIN5_PLAYERS_N;
-         log_wr("Setta la briscola a ".$a_brisco);
-
-         $chooser = $table->asta_win;
-         $user_chooser = &$bri->user[$table->player[$chooser]];
-         for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-           $user_cur = &$bri->user[$table->player[$i]];
-           $user_cur->subst = 'game';
-           $ret = sprintf('gst.st = %d; subst = "game";', $user_cur->step+1);
-         
-            if ($user_cur->privflags & BIN5_USER_FLAG_RING_ENDAUCT) {
-              // $ret .= "var de_che= 33;";
-              $ret .= playsound("ringbell.mp3");
+    /*********************
+     *                   *
+     *    STAT: table    *
+     *                   *
+     *********************/
+    else if ($user->stat == 'table') {
+        $user->laccwr = time();
+        $table = $bri->table[$user->table];
+        
+        if ($argz[0] == 'tableinfo') {
+            log_wr("PER DI TABLEINFO");
+            $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+            $user->comm[$user->step % COMM_N] .= show_table_info(&$bri, &$table, $user->table_pos);
+            log_wr($user->comm[$user->step % COMM_N]);
+            $user->step_inc();
+        }
+        else if ($argz[0] == 'chatt') {
+            $bri->chatt_send(&$user,$mesg);
+        }
+        else if ($argz[0] == 'preferences_update') {
+            GLOBAL $CO_bin5_pref_ring_endauct;
+            
+            log_wr("PER DI PREFERENCES_UPDATE");
+            
+            if ($CO_bin5_pref_ring_endauct == "true")
+                $user->privflags |= BIN5_USER_FLAG_RING_ENDAUCT;
+            else
+                $user->privflags &= ~BIN5_USER_FLAG_RING_ENDAUCT;
+        }
+        else if ($argz[0] == 'logout') {
+            $remcalc = $argz[1];
+            
+            if ($user->exitislock == TRUE) {
+                $remcalc++;
+                $user->exitislock = FALSE;
             }
-            $ret .= sprintf('document.title = "Brisk - Tavolo %d";', $user->table_orig);
-
-           /* bg of caller cell */
-           $ret .= briscola_show($bri, $table, $user_cur);
-
-           /* first gamer */
-           if ($i == ($table->gstart % BIN5_PLAYERS_N))
-             $ret .= "is_my_time = true; remark_on();";
-           else
-             $ret .= "is_my_time = false; remark_off();";
-
-           $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-           $user_cur->step_inc();          
-         }
-         /*
-            TUTTE LE VARIABILI DI STATO PER PASSARE A GIOCARE E LE
-            VAR PER PASSARE ALLA FASE DI GIOCO
-         */
-       
-       }
-      }
-    }
-  }
-  else if ($user->subst == 'game') {
-    log_wr("state: table::game".$argz[0]);
-
-    if ($argz[0] == 'play') {
-      $a_play = $argz[1];
-      $a_x =    $argz[2];
-      $a_y =    $argz[3];
-
-      if (strpos($a_x, "px") != FALSE)
-       $a_x = substr($a_x,0,-2);
-      if (strpos($a_y, "px") != FALSE)
-       $a_y = substr($a_y,0,-2);
-
-      $loggo = sprintf("A_play %s, table_pos %d == %d, mazzo %d, gstart %d, card_stat %d, card_own %d",
-                      $a_play, $user->table_pos, ($table->gstart % BIN5_PLAYERS_N),
-                      $table->mazzo, $table->gstart,
-                      $table->card[$a_play]->stat, $table->card[$a_play]->owner);
-      log_wr("CIC".$loggo);
-                         
-      /* se era il suo turno e la carta era sua ed era in mano */
-      if ($a_play >=0 && $a_play < (BIN5_PLAYERS_N == 5 ? 40 : 24) &&
-         ($user->table_pos == (($table->gstart + $table->turn) % BIN5_PLAYERS_N)) &&
-         $table->card[$a_play]->stat == 'hand' &&
-         $table->card[$a_play]->owner == $user->table_pos) {
-       log_wr(sprintf("User: %s Play: %d",$user->name, $a_play));
-
-       /* Change the card status. */
-       $table->card[$a_play]->play($a_x, $a_y);
-
-       /*
-        *  !!!! TURN INCREMENTED BEFORE !!!!
-        */
-       $turn_cur = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
-       $table->turn++;
-
-       $card_play = sprintf("card_play(%d,%d,%d,%d);|",
-                            $user->table_pos, $a_play, $a_x, $a_y);
-       if (($table->turn % BIN5_PLAYERS_N) != 0) {     /* manche not finished */
-         $turn_nex = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
-
-         $player_cur = "remark_off();";
-         $player_nex = $card_play . "is_my_time = true; remark_on();";
-         $player_oth = $card_play;
-       }
-       else if ($table->turn <= (BIN5_PLAYERS_N * 8)) { /* manche finished */
-         $winner = calculate_winner($table);
-         log_wr("GSTART 3");
-         $table->gstart = $winner;
-         $turn_nex = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
-
-         log_wr(sprintf("The winner is: [%d] [%s]", $winner, $bri->user[$table->player[$winner]]->name));
-         $card_take = sprintf("sleep(gst,2000);|cards_take(%d);|", $winner);
-         $player_cur = "remark_off();" . $card_take; 
-         if ($turn_cur != $turn_nex)
-           $player_nex = $card_play . $card_take;
-         else
-           $player_nex = "";
-         if ($table->turn < (BIN5_PLAYERS_N * 8))  /* game NOT finished */
-           $player_nex .= "is_my_time = true; remark_on();";
-         $player_oth = $card_play . $card_take;
-       }
-
-       log_wr(sprintf("Turn Cur %d Turn Nex %d",$turn_cur, $turn_nex));
-       for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {     
-         $user_cur = &$bri->user[$table->player[$i]];
-
-         $ret = sprintf('gst.st = %d; ', $user_cur->step+1);
-
-       
-         if ($i == $turn_cur) {
-           $ret .= $player_cur;          
-         }
-         if ($i == $turn_nex) {
-           $ret .= $player_nex;          
-         }
-         if ($i != $turn_cur && $i != $turn_nex) {
-           $ret .= $player_oth;
-         }
-
-         $retar[$i] = $ret;
-       }
-
-       if ($table->turn == (BIN5_PLAYERS_N * 8)) { /* game finished */
-         log_wr(sprintf("GIOCO FINITO !!!"));
-
-
-         /* ************************************************ */
-         /*    PRIMA LA PARTE PER LO SHOW DI CHI HA VINTO    */
-         /* ************************************************ */
-         $pt_cur = calculate_points(&$table);
-
-          $plist = "$table->table_token|$user->table_orig|$table->player_n";
-          $curtime = time();
-          $ucodes = array();
-          for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-            $user_cur = &$bri->user[$table->player[$i]];
-            $plist .= '|'.xcapelt($user_cur->name).'|'.$pt_cur[$i];
-            $ucodes[$i] = $user_cur->code_get();
-          }
-          for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-            $plist .= '|'.xcapelt($ucodes[$i]);
-          }
-          log_legal($curtime, 'xxx', $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
-          if ($user->table_orig < TABLES_AUTH_N) {
-            require_once("../Obj/dbase_".$G_dbasetype.".phh");
-  
-            if (($bdb = BriskDB::create()) != FALSE) {
-                $bdb->bin5_points_save($curtime, $table->table_token, $user->table_orig, $ucodes, $pt_cur);
-                unset($bdb);
+            
+            $logout_cont = TRUE;
+            if ($remcalc >= 3) {
+                $lockcalc = $table->exitlock_calc(&$bri->user, $user->table_pos);
+                if ($lockcalc < 3) {
+                    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+                    $user->comm[$user->step % COMM_N] .= $table->exitlock_show(&$bri->user, $user->table_pos);
+                    $user->comm[$user->step % COMM_N] .=  show_notify("<br>I dati presenti sul server non erano allineati con quelli inviati dal tuo browser, adesso lo sono. Riprova ora.", 2000, "torna alla partita.", 400, 100);
+                    
+                    log_wr($user->comm[$user->step % COMM_N]);
+                    $user->step_inc();
+                    $logout_cont = FALSE;
+                }
             }
             else {
-                log_points($curtime, $user, "STAT:BRISKIN5:FINISH_GAME", "DATABASE CONNECTION FAILED");
+                require_once("../Obj/hardban.phh");
+                Hardbans::add(($user->flags & USER_FLAG_AUTH ? $user->name : FALSE),
+                              $user->ip, $user->sess, $user->laccwr + BAN_TIME);
             }
-            log_points($curtime, $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
-          }
-
-         $table->game_next();
-         $table->game_init(&$bri->user);
-         
-         for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
-           $user_cur = &$bri->user[$table->player[$i]];
-           $retar[$i] .= show_table(&$bri,&$user_cur,$user_cur->step+1,TRUE, TRUE);
-         }
-       }
-
-
-       for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {     
-         $user_cur = &$bri->user[$table->player[$i]];
-       
-         $user_cur->comm[$user_cur->step % COMM_N] = $retar[$i];
-         $user_cur->step_inc();            
-       }
-
-       log_wr(sprintf("TURN: %d",$table->turn));
-       /* Have played all the players ? */
-       /* NO:  switch the focus and enable the next player to play. */
+            //      $user->bantime = $user->laccwr + BAN_TIME;
+            
+            if ($logout_cont == TRUE) {
+                $bri->table_wakeup(&$user);
+            }
+        }
+        else if ($argz[0] == 'exitlock') {
+            if ($user->exitislock == TRUE) {
+                $user->exitislock = ($user->exitislock == TRUE ? FALSE : TRUE);
+                for ($ct = 0, $i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {   
+                    $user_cur[$i] = &$bri->user[$table->player[$i]];
+                    if ($user_cur[$i]->exitislock == FALSE)
+                        $ct++;
+                }
+                for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                    $ret = sprintf('gst.st = %d;', $user_cur[$i]->step+1);
+                    $ret .= sprintf('exitlock_show(%d, %s);', $ct, 
+                                    ($user_cur[$i]->exitislock ? 'true' : 'false'));
+                    $user_cur[$i]->comm[$user_cur[$i]->step % COMM_N] = $ret;
+                    log_wr($user_cur[$i]->comm[$user_cur[$i]->step % COMM_N]);
+                    $user_cur[$i]->step_inc();
+                }
+            }
+        }
+        else if ($user->subst == 'asta') {
+            if ($argz[0] == 'lascio' && $user->handpt <= 2) {
+                $index_cur = $table->gstart % BIN5_PLAYERS_N;
+                
+                log_wr(sprintf("GIOCO FINITO !!!"));
+                
+                $table->mult += 1; 
+                $table->old_reason = sprintf("Ha lasciato %s perché aveva al massimo 2 punti.", xcape($user->name));
+                
+                $table->game_next();
+                $table->game_init(&$bri->user);
+                
+                for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {    
+                    $user_cur = &$bri->user[$table->player[$i]];
+                    
+                    $ret = sprintf('gst.st = %d;', $user_cur->step+1);
+                    $ret .= show_table(&$bri,&$user_cur,$user_cur->step+1, TRUE, TRUE);
+                    $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                    $user_cur->step_inc();         
+                }
+            }
+            else if ($argz[0] == 'asta') {
+                $again = TRUE;
+                
+                $index_cur = $table->gstart % BIN5_PLAYERS_N;
+                if ($user->table_pos == $index_cur &&
+                    $table->asta_pla[$index_cur]) {
+                    $a_card = $argz[1];
+                    $a_pnt  = $argz[2];
+                    
+                    log_wr("CI SIAMO  a_card ".$a_card."  asta_card ".$table->asta_card);
+                    
+                    // Abbandono dell'asta
+                    if ($a_card <= -1) {
+                        log_wr("Abbandona l'asta.");
+                        $table->asta_pla[$index_cur] = FALSE;
+                        $user->asta_card  = -1;
+                        $table->asta_pla_n--;
+                        $again = FALSE;
+                    }
+                    else if ($a_card <= 9) {
+                        if ($a_card >= 0 && $a_card < 9 && $a_card > $table->asta_card)
+                            $again = FALSE;
+                        else if ($a_card == 9 && $a_pnt > ($table->asta_pnt >= 61 ? $table->asta_pnt : 60) && $a_pnt <= 120)
+                            $again = FALSE;
+                        
+                        
+                        if ($again == FALSE) {
+                            log_wr("NUOVI ORZI.");
+                            $user->asta_card  = $a_card;
+                            $table->asta_card = $a_card;
+                            if ($a_card == 9) {
+                                $user->asta_pnt   = $a_pnt;
+                                $table->asta_pnt  = $a_pnt;
+                            }
+                        }
+                    }
+                    
+      
       
-       /* YES: calculate who win and go to the next turn. */
-      }
+                    if ($again) { // Qualcosa non andato bene, rifare
+                        $ret = sprintf('gst.st = %d; asta_pnt_set(%d);', $user->step+1, 
+                                       ($table->asta_pnt > 60 ? $table->asta_pnt + 1 : 61) );
+                        $user->comm[$user->step % COMM_N] = $ret;
+                        $user->step_inc();
+                        
+                        log_wr("Ripetere.");
+                    }
+                    else {
+                        /* next step */
+                        $showst = "show_astat("; 
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $user_cur = &$bri->user[$table->player[$i]];
+                            $showst .= sprintf("%s%d", ($i == 0 ? "" : ", "), 
+                                               ($user_cur->asta_card < 9 ? $user_cur->asta_card : $user_cur->asta_pnt));
+                        }
+                        if (BIN5_PLAYERS_N == 3)
+                            $showst .= ",-2,-2";
+                        $showst .= ");";
+                        
+                        $maxcard = -2;
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $user_cur = &$bri->user[$table->player[$i]];
+                            if ($maxcard < $user_cur->asta_card)
+                                $maxcard = $user_cur->asta_card;
+                        }
+                        
+                        if (($table->asta_pla_n > ($maxcard > -1 ? 1 : 0)) &&
+                            !($table->asta_card == 9 && $table->asta_pnt == 120)) {
+                            log_wr("ALLOPPA QUI");
+                            for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) {
+                                $index_next = ($table->gstart + $i) % BIN5_PLAYERS_N;
+                                if ($table->asta_pla[$index_next]) {
+                                    log_wr("GSTART 1");
+                                    $table->gstart += $i;
+                                    break;
+                                }
+                            }
+                            
+                            
+                            for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                                $user_cur = &$bri->user[$table->player[$i]];
+                                $ret = sprintf('gst.st = %d; %s', $user_cur->step+1, $showst);
+                                if ($user_cur->table_pos == ($table->gstart % BIN5_PLAYERS_N)) 
+                                    $ret .= sprintf('dispose_asta(%d,%d, %s); remark_on();', 
+                                                    $table->asta_card + 1, $table->asta_pnt+1, ($user_cur->handpt <= 2 ? "true" : "false"));
+                                else
+                                    $ret .= sprintf('dispose_asta(%d,%d, %s); remark_off();',
+                                                    $table->asta_card + 1, -($table->asta_pnt+1), ($user_cur->handpt <= 2 ? "true" : "false"));
+                                $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                                $user_cur->step_inc();
+                            }
+                        }
+                        else if ($table->asta_pla_n == 0) {
+                            log_wr("PASSANO TUTTI!");
+                            
+                            log_wr(sprintf("GIOCO FINITO !!!"));
+                            
+                            $table->old_reason = "Hanno passato tutti.";
+                            $table->mult += 1; 
+                            
+                            $table->game_next();
+                            $table->game_init(&$bri->user);
+                            
+                            for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {        
+                                $user_cur = &$bri->user[$table->player[$i]];
+                                
+                                $ret = sprintf('gst.st = %d;', $user_cur->step+1);
+                                $ret .= show_table(&$bri,&$user_cur,$user_cur->step+1, TRUE, TRUE);
+                                $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                                $user_cur->step_inc();     
+                            }
+                        }
+                        else {
+                            log_wr("FINITA !");
+                            // if a_pnt == 120 supergame ! else abbandono
+                            if ($a_pnt == 120 || $user->asta_card != -1) {
+                                $chooser = $index_cur;
+                                for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) 
+                                    if ($i != $chooser)
+                                        $table->asta_pla[$i] = FALSE;
+                            }
+                            else {
+                                /*
+                                  $user->comm[$user->step % COMM_N] = sprintf( "gst.st = %d; dispose_asta(%d, %d, false); remark_off();", 
+                                  $user->step+1, $table->asta_card + 1,-($table->asta_pnt));
+                                  $user->step_inc();
+                                */
+                                for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) {
+                                    $chooser = ($table->gstart + $i) % BIN5_PLAYERS_N;
+                                    if ($table->asta_pla[$chooser]) {
+                                        break;
+                                    }
+                                }
+                            }
+                            $table->asta_win = $chooser;
+                            
+                            for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                                $user_cur = &$bri->user[$table->player[$i]];
+                                $ret = sprintf('gst.st = %d; %s dispose_asta(%d, %d, false);', $user_cur->step+1, $showst,
+                                               $table->asta_card + 1,-($table->asta_pnt));
+                                
+                                if ($i == $chooser) {
+                                    $ret .= "choose_seed(". $table->asta_card."); remark_on();";
+                                }
+                                else {
+                                    $ret .= "remark_off();";
+                                }
+                                
+                                $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                                $user_cur->step_inc();     
+                            }
+                        }
+                    }
+                }
+                else {
+                    log_wr("NON CI SIAMO");
+                }
+            }
+            /*  asta::choose */
+            else if ($argz[0] == 'choose') {
+                if ($table->asta_win > -1 && 
+                    $user->table_pos == $table->asta_win) {
+                    $a_brisco = $argz[1];
+                    if ($a_brisco >= 0 && $a_brisco < 40) {
+                        $table->briscola = $a_brisco;
+                        $table->friend   = $table->card[$a_brisco]->owner;
+                        log_wr("GSTART 2");
+                        $table->gstart = ($table->mazzo+1) % BIN5_PLAYERS_N;
+                        log_wr("Setta la briscola a ".$a_brisco);
+                        
+                        $chooser = $table->asta_win;
+                        $user_chooser = &$bri->user[$table->player[$chooser]];
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $user_cur = &$bri->user[$table->player[$i]];
+                            $user_cur->subst = 'game';
+                            $ret = sprintf('gst.st = %d; subst = "game";', $user_cur->step+1);
+                            
+                            if ($user_cur->privflags & BIN5_USER_FLAG_RING_ENDAUCT) {
+                                // $ret .= "var de_che= 33;";
+                                $ret .= playsound("ringbell.mp3");
+                            }
+                            $ret .= sprintf('document.title = "Brisk - Tavolo %d";', $user->table_orig);
+                            
+                            /* bg of caller cell */
+                            $ret .= briscola_show($bri, $table, $user_cur);
+                            
+                            /* first gamer */
+                            if ($i == ($table->gstart % BIN5_PLAYERS_N))
+                                $ret .= "is_my_time = true; remark_on();";
+                            else
+                                $ret .= "is_my_time = false; remark_off();";
+                            
+                            $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+                            $user_cur->step_inc();         
+                        }
+                        /*
+                          TUTTE LE VARIABILI DI STATO PER PASSARE A GIOCARE E LE
+                          VAR PER PASSARE ALLA FASE DI GIOCO
+                        */
+                        
+                    }
+                }
+            }
+        }
+        else if ($user->subst == 'game') {
+            log_wr("state: table::game".$argz[0]);
+            
+            if ($argz[0] == 'play') {
+                $a_play = $argz[1];
+                $a_x =    $argz[2];
+                $a_y =    $argz[3];
+                
+                if (strpos($a_x, "px") != FALSE)
+                    $a_x = substr($a_x,0,-2);
+                if (strpos($a_y, "px") != FALSE)
+                    $a_y = substr($a_y,0,-2);
+                
+                $loggo = sprintf("A_play %s, table_pos %d == %d, mazzo %d, gstart %d, card_stat %d, card_own %d",
+                                 $a_play, $user->table_pos, ($table->gstart % BIN5_PLAYERS_N),
+                                 $table->mazzo, $table->gstart,
+                                 $table->card[$a_play]->stat, $table->card[$a_play]->owner);
+                log_wr("CIC".$loggo);
+                
+                /* se era il suo turno e la carta era sua ed era in mano */
+                if ($a_play >=0 && $a_play < (BIN5_PLAYERS_N == 5 ? 40 : 24) &&
+                    ($user->table_pos == (($table->gstart + $table->turn) % BIN5_PLAYERS_N)) &&
+                    $table->card[$a_play]->stat == 'hand' &&
+                    $table->card[$a_play]->owner == $user->table_pos) {
+                    log_wr(sprintf("User: %s Play: %d",$user->name, $a_play));
+                    
+                    /* Change the card status. */
+                    $table->card[$a_play]->play($a_x, $a_y);
+                    
+                    /*
+                     *  !!!! TURN INCREMENTED BEFORE !!!!
+                     */
+                    $turn_cur = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
+                    $table->turn++;
+                    
+                    $card_play = sprintf("card_play(%d,%d,%d,%d);|",
+                                         $user->table_pos, $a_play, $a_x, $a_y);
+                    if (($table->turn % BIN5_PLAYERS_N) != 0) {     /* manche not finished */
+                        $turn_nex = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
+                        
+                        $player_cur = "remark_off();";
+                        $player_nex = $card_play . "is_my_time = true; remark_on();";
+                        $player_oth = $card_play;
+                    }
+                    else if ($table->turn <= (BIN5_PLAYERS_N * 8)) { /* manche finished */
+                        $winner = calculate_winner($table);
+                        log_wr("GSTART 3");
+                        $table->gstart = $winner;
+                        $turn_nex = ($table->gstart + $table->turn) % BIN5_PLAYERS_N;
+                        
+                        log_wr(sprintf("The winner is: [%d] [%s]", $winner, $bri->user[$table->player[$winner]]->name));
+                        $card_take = sprintf("sleep(gst,2000);|cards_take(%d);|", $winner);
+                        $player_cur = "remark_off();" . $card_take; 
+                        if ($turn_cur != $turn_nex)
+                            $player_nex = $card_play . $card_take;
+                        else
+                            $player_nex = "";
+                        if ($table->turn < (BIN5_PLAYERS_N * 8))  /* game NOT finished */
+                            $player_nex .= "is_my_time = true; remark_on();";
+                        $player_oth = $card_play . $card_take;
+                    }
+                    
+                    log_wr(sprintf("Turn Cur %d Turn Nex %d",$turn_cur, $turn_nex));
+                    for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {        
+                        $user_cur = &$bri->user[$table->player[$i]];
+                        
+                        $ret = sprintf('gst.st = %d; ', $user_cur->step+1);
+                        
+                        
+                        if ($i == $turn_cur) {
+                            $ret .= $player_cur;         
+                        }
+                        if ($i == $turn_nex) {
+                            $ret .= $player_nex;         
+                        }
+                        if ($i != $turn_cur && $i != $turn_nex) {
+                            $ret .= $player_oth;
+                        }
+                        
+                        $retar[$i] = $ret;
+                    }
+                    
+                    if ($table->turn == (BIN5_PLAYERS_N * 8)) { /* game finished */
+                        log_wr(sprintf("GIOCO FINITO !!!"));
+                        
+                        
+                        /* ************************************************ */
+                        /*    PRIMA LA PARTE PER LO SHOW DI CHI HA VINTO    */
+                        /* ************************************************ */
+                        $pt_cur = calculate_points(&$table);
+                        
+                        $plist = "$table->table_token|$user->table_orig|$table->player_n";
+                        $curtime = time();
+                        $ucodes = array();
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $user_cur = &$bri->user[$table->player[$i]];
+                            $plist .= '|'.xcapelt($user_cur->name).'|'.$pt_cur[$i];
+                            $ucodes[$i] = $user_cur->code_get();
+                        }
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $plist .= '|'.xcapelt($ucodes[$i]);
+                        }
+                        log_legal($curtime, 'xxx', $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
+                        if ($user->table_orig < TABLES_AUTH_N) {
+                            require_once("../Obj/dbase_".$G_dbasetype.".phh");
+                            
+                            if (($bdb = BriskDB::create()) != FALSE) {
+                                $bdb->bin5_points_save($curtime, $table->table_token, $user->table_orig, $ucodes, $pt_cur);
+                                unset($bdb);
+                            }
+                            else {
+                                log_points($remote_addr, $curtime, $user, "STAT:BRISKIN5:FINISH_GAME", "DATABASE CONNECTION FAILED");
+                            }
+                            log_points($curtime, $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
+                        }
+                        
+                        $table->game_next();
+                        $table->game_init(&$bri->user);
+                        
+                        for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
+                            $user_cur = &$bri->user[$table->player[$i]];
+                            $retar[$i] .= show_table(&$bri,&$user_cur,$user_cur->step+1,TRUE, TRUE);
+                        }
+                    }
+                    
+                    
+                    for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {        
+                        $user_cur = &$bri->user[$table->player[$i]];
+                        
+                        $user_cur->comm[$user_cur->step % COMM_N] = $retar[$i];
+                        $user_cur->step_inc();     
+                    }
+                    
+                    log_wr(sprintf("TURN: %d",$table->turn));
+                    /* Have played all the players ? */
+                    /* NO:  switch the focus and enable the next player to play. */
+                    
+                    /* YES: calculate who win and go to the next turn. */
+                }
+            }
+            else
+                log_wr("NOSENSE");
+        }
     }
-    else
-      log_wr("NOSENSE");
-  }
+    log_wr("before save data");
+    log_wr($user->step, 'bin::index_wr.php: after save_data()');
+    return TRUE;
 }
-log_wr("before save data");
-Bin5::save_data($bri);
-log_wr($user->step, 'bin::index_wr.php: after save_data()');
-
-Bin5::unlock_data($sem);
-exit;
 ?>
index 84c3ce6..1294ad6 100644 (file)
@@ -182,13 +182,6 @@ $mlang_room = array( 'userpasserr'  => array('it' => 'Utente e/o password errati
 
 
 require_once("briskin5/Obj/briskin5.phh");
-if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
-  echo "Debugging time!";
-  exit;
-}
-
-log_load("index.php");
-
 
 function poll_dom() {
   GLOBAL $G_with_poll, $G_poll_title, $G_poll_entries;
index caf406f..99213b7 100644 (file)
@@ -656,6 +656,7 @@ function index_wr_main(&$room, $remote_addr, $get, $post, $cookie)
                         $user_cur->step_inc();
                     }
                     log_wr("presave bri");
+                    $room->match_add($table_idx, $bri);
                     log_wr("postsave bri");
                 }
                 // change room
index ff09ded..0c4ee8e 100755 (executable)
@@ -62,8 +62,9 @@ require_once($G_base."Obj/auth.phh");
 // require_once("../Obj/proxyscan.phh");
 require_once($G_base."index.php");
 require_once($G_base."index_wr.php");
-require_once($G_base."index_rd_ifra.php");
 require_once($G_base."briskin5/Obj/briskin5.phh");
+require_once($G_base."briskin5/index.php");
+require_once($G_base."briskin5/index_wr.php");
 
 
 function main()