+ $dt.xcape($user->name), xcape($user_mesg));
+ $user_cur->step_inc();
+ }
+ log_legal($timecur, $user->sess, $user->name,
+ ($user->stat == 'room' ? 'room' : 'table '.$user->table),$user_mesg);
+ }
+ }
+
+ function &get_user($sess, &$idx)
+ {
+ GLOBAL $PHP_SELF, $G_false;
+
+ if (validate_sess($sess)) {
+ for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
+ if (strcmp($sess, $this->user[$i]->sess) == 0) {
+ // find it
+ $idx = $i;
+ $ret = &$this->user[$i];
+ return ($ret);
+ }
+ }
+ log_main($sess, sprintf("get_user: Wrong sess from page [%s]",$PHP_SELF));
+ // for ($i = 0 ; $i < MAX_PLAYERS ; $i++)
+ // log_main($sess, sprintf("get_user: Wrong sess compared with [%s]",$this->user[$i]->sess));
+ }
+ else {
+ log_main($sess, sprintf("get_user: Wrong strlen [%s]",$sess));
+ }
+
+ return ($G_false);
+ }
+
+ /*
+ * function &add_user(&$room, &$sess, &$idx, $name, $ip)
+ *
+ * RETURN VALUE:
+ * if ($idx != -1 && ret == FALSE) => duplicated nick
+ * if ($idx == -2 && ret == FALSE) => invalid name
+ * if ($idx == -1 && ret == FALSE) => no space left
+ * if (ret == TRUE) => SUCCESS
+ */
+ function &add_user(&$sess, &$idx, $name, $ip)
+ {
+ GLOBAL $G_false;
+
+ $idx = -1;
+ $idfree = -1;
+
+ if (($name_new = validate_name($name)) == FALSE) {
+ $idx = -2;
+ return ($G_false);
+ }
+
+ log_auth("XXX", sprintf("ARRIVA: [%s]", $sess));
+ if (validate_sess($sess) == FALSE)
+ $sess = "";
+
+ for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
+ /* free user ? */
+ if (strcmp($sess, $this->user[$i]->sess) == 0) {
+ if ($idx == -1)
+ $idx = $i;
+ }
+ if ($idfree == -1 && strcmp("", $this->user[$i]->sess) == 0) {
+ $idfree = $i;
+ }
+ if (strcmp($this->user[$i]->name, $name_new) == 0) {
+ $idx = $i;
+ break;
+ }
+ }
+ if ($idx == -1)
+ $idx = $idfree;
+
+ log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new));
+
+ if ($idx != -1 && $i == MAX_PLAYERS) {
+ /* SUCCESS */
+ $curtime = time();
+ if ($sess == "") {
+ $this->user[$idx]->sess = uniqid("");
+ $sess = $this->user[$idx]->sess;
+
+ }
+ else {
+ $this->user[$idx]->sess = $sess;
+ }
+ $this->user[$idx]->name = $name_new;
+ $this->user[$idx]->stat_set("room");
+ // MOP $this->user[$idx]->step_set(0);
+ $this->user[$idx]->subst = "standup";
+ $this->user[$idx]->lacc = $curtime;
+ $this->user[$idx]->laccwr = $curtime;
+ $this->user[$idx]->bantime = 0;
+ $this->user[$idx]->ip = $ip;
+ log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name_new));
+
+ return ($this->user[$idx]);
+ }
+
+ return ($G_false);
+ }
+
+ function standup_update(&$user)
+ {
+ for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
+ $user_cur = &$this->user[$i];
+ if ($user_cur->sess == '')
+ continue;
+
+ log_main("STANDUP START", $user_cur->stat);
+
+ if ($user_cur->stat == 'room') {
+ $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ".standup_content($this, $user_cur);
+ if ($user_cur == $user)
+ $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('$("myname").innerHTML = "<b>%s</b>: ";', xcape($user->name));
+
+ log_main("FROM STANDUP", "NAME: ".$user_cur->name." SENDED: ".$user_cur->comm[$user_cur->step % COMM_N]);
+
+ $user_cur->step_inc();