sitdown disable when shutdowning
[brisk.git] / web / index_wr.php
index 57142d6..6493201 100644 (file)
  */
 
 require_once("Obj/brisk.phh");
+// require_once("Obj/proxyscan.phh");
 require_once("briskin5/Obj/briskin5.phh");
 
+// Use of proxies isn't allowed.
+// if (is_proxy()) {
+//   sleep(5);
+//   exit;
+// }
+log_load("index_rd.php");
+
 if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
   echo "Debugging time!";
   exit;
@@ -39,7 +47,12 @@ $is_spawn = FALSE;
 log_wr('COMM: '.$mesg);
 
 $sem = Room::lock_data();
-$room = &Room::load_data();
+if (($room = &Room::load_data()) == FALSE) {
+  echo "Load data error";
+  log_wr("Load data error");
+  Room::unlock_data($sem);
+  exit;
+}
 if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
   echo "Get User Error";
   log_wr("Get User Error");
@@ -51,13 +64,19 @@ $argz = explode('|', $mesg);
 log_wr('POSTSPLIT: '.$argz[0]);
 
 if ($argz[0] == 'shutdown') {
-  log_auth($user_cur->sess, "Shutdown session.");
+  log_auth($user->sess, "Shutdown session.");
+
+  $user->reset();
+  /* factorized with ->reset()
   $tmp_sess = $user->sess;
   $user->sess = "";
   step_unproxy($tmp_sess);
   $user->name = "";
+  while (array_pop($user->comm) != NULL);
+  $user->step = 0;
   $user->the_end = FALSE;
-  
+  */
+
   log_rd2("AUTO LOGOUT.");
   if ($user->subst == 'sitdown' || $user->stat == 'table')
     $room->room_wakeup(&$user);
@@ -103,6 +122,19 @@ else if ($user->stat == 'room') {
     if ($argz[0] == 'sitdown') {
       log_wr("SITDOWN command");
 
+      if ($G_shutdown) {
+       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+
+       $timecur = time();
+       $dt = date("H:i ", $timecur);
+       $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s","<b>Il server sta per essere riavviato, non possono avere inizio nuove partite.</b>");', $dt.NICKSERV);
+
+       $user->step_inc();
+       Room::save_data($room);
+       Room::unlock_data($sem);
+       exit;
+      }
+
       if ($user->the_end == TRUE) {
        log_wr("INFO:SKIP:argz == sitdown && the_end == TRUE => ignore request.");
        Room::unlock_data($sem);
@@ -111,7 +143,7 @@ else if ($user->stat == 'room') {
       /* TODO: refact to a function */
       if ($user->bantime > $user->laccwr) {
        $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-       $user->comm[$user->step % COMM_N] .= show_notify("<br>Ti sei alzato da un tavolo senza il consenso degli altri giocatori. Dovrai aspettare ancora ".secstoword($user->bantime - $user->laccwr)." prima di poterti sedere nuovamente.", 2000, "Torna in piedi.", 400, 100);
+       $user->comm[$user->step % COMM_N] .= show_notify("<br>Ti sei alzato da un tavolo senza il consenso degli altri giocatori. Dovrai aspettare ancora ".secstoword($user->bantime - $user->laccwr)." prima di poterti sedere nuovamente.", 2000, "resta in piedi.", 400, 100);
        
        $user->step_inc();
        Room::save_data($room);
@@ -185,6 +217,10 @@ else if ($user->stat == 'room') {
 
            log_wr("Pre if!");
            
+//          ARRAY_POP DISABLED
+//         // CHECK
+           while (array_pop($user_cur->comm) != NULL);
+
            $ret = "";
            $ret .= sprintf('gst.st_loc++; gst.st=%d; createCookie("table_idx", %d, 24*365, cookiepath); createCookie("table_token", "%s", 24*365, cookiepath); the_end=true; window.onunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token);