aggiunta playsound
[brisk.git] / web / brisk.phh
index 79db2f8..51d8d3a 100644 (file)
@@ -35,7 +35,7 @@ define(NICKSERV, "<i>SERVER</i>");
 define(BRISK_DEBUG, FALSE);
 // define(DEBUGGING, "local");
 
-$G_brisk_version = "0.4.5";
+$G_brisk_version = "0.4.6";
 
 $root_wellarr = Array ( 'Benvenuto in brisk (Ver. '.$G_brisk_version.').',
                         'Se vuoi iscriverti alla <a target="_blank" href="http://www.milug.org/cgi-bin/mailman/listinfo/ml-briscola">Mailing List</a>, cliccala!' );
@@ -558,7 +558,13 @@ class brisco {
     if (strncmp($user_mesg, "/nick ", 6) == 0) {
       log_main($user->sess, "chatt_send BEGIN");
 
-      $name_new = str_replace(' ', '_', substr(trim(substr($user_mesg, 6)),0,12));
+      if (($name_new = validate_name(substr($user_mesg, 6))) == FALSE) {
+         $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+         $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s","Il nickname deve contenere almeno una lettera o una cifra.");', $dt.NICKSERV, xcape($name_new));
+         $user->step++;
+
+         return;
+      }
       $user_mesg = "COMMAND ".$user_mesg;
       // Search dup name
       // change
@@ -665,6 +671,7 @@ class brisco {
    *
    * 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
    */
@@ -673,6 +680,11 @@ class brisco {
     $idx = -1;
     $idfree = -1;
     
+    if (($name_new = validate_name($name)) == FALSE) {
+      $idx = -2;
+      return (FALSE);
+    }
+
     log_auth("XXX", sprintf("ARRIVA: [%s]", $sess));
     if (validate_sess($sess) == FALSE) 
       $sess = "";
@@ -686,7 +698,7 @@ class brisco {
       if ($idfree == -1 && strcmp("", $this->user[$i]->sess) == 0) {
        $idfree = $i;
       }
-      if (strcmp($this->user[$i]->name, $name) == 0) {
+      if (strcmp($this->user[$i]->name, $name_new) == 0) {
        $idx = $i;
        break;
       }
@@ -694,7 +706,7 @@ class brisco {
     if ($idx == -1)
       $idx = $idfree;
 
-    log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name));
+    log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new));
 
     if ($idx != -1 && $i == MAX_PLAYERS) {
       /* SUCCESS */
@@ -706,12 +718,12 @@ class brisco {
       else {
        $this->user[$idx]->sess = $sess;
       }
-      $this->user[$idx]->name = $name;
+      $this->user[$idx]->name = $name_new;
       $this->user[$idx]->stat = "room";
       $this->user[$idx]->subst = "standup";
       $this->user[$idx]->laccwr = time();
       
-      log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name));
+      log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name_new));
       
       return ($this->user[$idx]);
     }
@@ -1251,6 +1263,11 @@ function show_table(&$bri, &$user, $sendstep, $is_transition, $is_again)
   if (!$is_again) 
     $ret .= table_wellcome($user);
 
+  if ($is_transition && !$is_again) { // appena seduti al tavolo, play della mucca
+    $ret .= playsound("cow.mp3");
+  }
+
+
   /* CARDS */
   if ($is_transition) { //  && $user->subst ==  "asta" superfluo
     $ret .= "|";
@@ -1488,10 +1505,30 @@ function calculate_points(&$table)
   $table->mult = 1;
 }
 
-function validate_sess($sess) {
+function validate_sess($sess) 
+{
   if (strlen($sess) == SESS_LEN) 
     return (TRUE);
   else
     return (FALSE);
 }
+
+function validate_name($name) 
+{
+  $name_new = str_replace(' ', '_', substr(trim($name),0,12));
+
+  for ($i = 0 ; $i < strlen($name_new) ; $i++) {
+    $c = $name_new[$i];
+    if (($c >= "a" && $c <= "z") || ($c >= "A" && $c <= "Z") || ($c >= "0" && $c <= "9"))
+      return ($name_new);
+  }
+
+  return (FALSE);
+}
+
+function playsound($filename)
+{
+  return (sprintf('playsound("flasou", "%s");', $filename));
+}
+
 ?>