-// User flags
-define(USER_FLAG_AUTH, 0x02);
-define(USER_FLAG_LISTAUTH, 0x04);
-
-// user status
-define(USER_FLAG_S_NORM, 0x000); // done
-define(USER_FLAG_S_PAU, 0x100); // done
-define(USER_FLAG_S_OUT, 0x200); // done
-define(USER_FLAG_S_DOG, 0x300); // done
-define(USER_FLAG_S_EAT, 0x400); // done
-define(USER_FLAG_S_WRK, 0x500); // done
-define(USER_FLAG_S_SMK, 0x600); // done
-define(USER_FLAG_S_EYE, 0x700); // done
-
-define(USER_FLAG_S_ALL, 0xf00); // done
-
-class User {
- var $name; // name of the user
- var $sess; // session of the user
- var $ip; // ip of the user
- var $lacc; // last access (for the cleanup)
- var $laccwr; // last access (for the cleanup)
- var $bantime; // timeout to temporary ban
- var $stat; // status (outdoor, room, table, game, ...)
- var $subst; // substatus for each status
- var $step; // step of the current status
- var $trans_step; // step to enable transition between pages (disable == -1)
- var $comm; // commands array
- // var $asta_card; //
- // var $asta_pnt; //
- // var $handpt; // Total card points at the beginning of the current hand.
- // var $exitislock; // Player can exit from the table ?
-
- // FIXME: the table_orig field must be removed after table field verify of index management (in spawned table
- // it is allways ZERO
- var $table_orig; // id of the current table (if in table state)
- var $table; // id of the current table (if in table state)
- var $table_pos; // idx on the table
- var $table_token;// token that identify a game on a table
- var $flags; // Bitfield with: AUTHENTICATE: 0x02
- var $the_end; // Flag to change the end of the session
-
- var $chat_lst; // Last chat line
- var $chattime; // Array of chat times
- var $chat_cur; // Current chat line number
- var $chat_ban; // Time for ban chat
- var $chat_dlt; // Delta t for ban
- function User() {
- }
-
- function &create($name, $sess, $stat = "", $subst = "", $table = -1, $ip="0.0.0.0") {
- GLOBAL $G_false;
-
- if (($thiz =& new User()) == FALSE)
- return ($G_false);
-
- $thiz->name = $name;
- $thiz->sess = $sess;
- $thiz->ip = $ip;
- $thiz->lacc = time();
- $thiz->laccwr = time();
- $thiz->bantime = 0;
- $thiz->stat = $stat;
- $thiz->subst = $subst;
- $thiz->step = 1;
- $thiz->trans_step = -1;
- $thiz->comm = array();
- $thiz->asta_card = -2;
- $thiz->asta_pnt = -1;
- $thiz->handpt = -1;
- $thiz->exitislock = TRUE;
-
- $thiz->flags = 0x00;
-
- $thiz->chattime = array_fill(0, CHAT_N, 0);
- $thiz->chat_cur = 0;
- $thiz->chat_lst = "";
- $thiz->chat_ban = 0;
- $thiz->chat_dlt = 0;
-
- $thiz->table_orig = $table;
- $thiz->table = $table;
- $thiz->table_pos = -1;
- $thiz->table_token = "";
-
- return ($thiz);
- }
-
- function copy(&$from)
- {
- GLOBAL $G_false;
-
- $this->name = $from->name;
- $this->sess = $from->sess;
- $this->ip = $from->ip;
- $this->lacc = $from->lacc;
- $this->laccwr = $from->laccwr;
- $this->bantime = $from->bantime;
- $this->stat = $from->stat;
- $this->subst = $from->subst;
- $this->step = $from->step;
- $this->trans_step = $from->trans_step;
- $this->comm = array();
-
- $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];
- }
- $this->asta_card = $from->asta_card;
- $this->asta_pnt = $from->asta_pnt;
- $this->handpt = $from->handpt;
- $this->exitislock = $from->exitislock;
-
- $this->flags = $from->flags;
-
- $this->chattime = array();
- for ($i = 0 ; $i < CHAT_N ; $i++)
- $this->chattime[$i] = $from->chattime[$i];
- $this->chat_cur = $from->chat_cur;
- $this->chat_lst = $from->chat_lst;
- $this->chat_ban = $from->chat_ban;
- $this->chat_dlt = $from->chat_dlt;
-
- $this->table_orig = $from->table_orig;
- $this->table = $from->table;
- $this->table_pos = $from->table_pos;
- $this->table_token = $from->table_token;
- $this->the_end = $from->the_end;
-
- return (TRUE);
- }
-
-
- function &clone(&$from)
- {
- GLOBAL $G_false;
-
- if (($thiz =& new User()) == FALSE)
- return ($G_false);
-
- $thiz->copy($from);
-
- return ($thiz);
- }
-
- function &spawn(&$from, $table, $table_pos)
- {
- GLOBAL $G_false;
-
- if (($thiz =& new User()) == FALSE)
- return ($G_false);
-
- $thiz->name = $from->name;
- $thiz->sess = $from->sess;
- $thiz->ip = $from->ip;
- $thiz->lacc = $from->lacc;
- $thiz->laccwr = $from->laccwr;
- $thiz->bantime = $from->bantime;
- $thiz->stat = $from->stat;
- $thiz->subst = $from->subst;
- $thiz->step = $from->step;
- $thiz->trans_step = $from->trans_step;
- $thiz->comm = array();
-
- /*
- $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N));
- for ($i = $i_start ; $i < $from->step ; $i++) {
- log_wr("TRY PUSH:".$i);
- $ii = $i % COMM_N;
- $thiz->comm[$ii] = $from->comm[$ii];
- }
- */
- $thiz->asta_card = $from->asta_card;
- $thiz->asta_pnt = $from->asta_pnt;
- $thiz->handpt = $from->handpt;
- $thiz->exitislock = $from->exitislock;
- $thiz->the_end = $from->the_end;
-
- $thiz->flags = $from->flags;
-
- $thiz->chattime = array_fill(0, CHAT_N, 0);
- $thiz->chat_cur = 0;
- $thiz->chat_lst = "";
- $thiz->chat_ban = 0;
- $thiz->chat_dlt = 0;
-
-
- $thiz->table_orig = $table;
- $thiz->table = 0;
- $thiz->table_pos = $table_pos;
- $thiz->table_token = $from->table_token;
-
- return ($thiz);
- }
-
- function stat_set($stat) {
- log_main("sess: [".$this->sess. "] NEW STAT: [".$stat."]");
- $this->stat = "$stat";
-
- /*
- if (validate_sess($this->sess)) {
- if (file_exists(PROXY_PATH) == FALSE)
- mkdir(PROXY_PATH);
- $fp = fopen(PROXY_PATH."/".$this->sess.".stat", 'w');
- fwrite($fp, sprintf("%s\n",$this->stat));
- fclose($fp);
- }
- */
- }
-
- 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("l",$this->step), 4);
- fclose($fp);
-
- 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("l",$this->step), 4);
- fclose($fp);
-
- return (TRUE);
- }
-
- return (FALSE);
- }
-
- function reset() {
- $curtime = time();
- log_legal($curtime, $this, "STAT:LOGOUT", '');
-
- $tmp_sess = $this->sess;
- $this->sess = "";
- step_unproxy($tmp_sess);
- $this->name = ""; // OK here
- while (array_pop($this->comm) != NULL);
- $this->step = 0;
- $this->chattime = array_fill(0, CHAT_N, 0);
- $this->chat_cur = 0;
- $this->chat_lst = "";
- $this->chat_ban = 0;
- $this->chat_dlt = 0;
- $this->the_end = 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, 4)) == FALSE)
- break;
- if (strlen($s) != 4)
- break;
- $arr = unpack('l', $s);
- fclose($fp);
-
- // log_rd2("A0: ".$arr[0]." A1: ".$arr[1]);
- return ($arr[1]);
- } 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)
- mkdir(PROXY_PATH);
- @unlink(PROXY_PATH."/".$sess.".step");
-}