BriskDB and DBConn classes now have a static constructor method that can be failed
[brisk.git] / web / Obj / brisk.phh
index 959fd1a..480f3a2 100644 (file)
@@ -601,6 +601,7 @@ define(USER_FLAG_TY_SUSPEND, 0x400000); // done
 define(USER_FLAG_TY_DISABLE, 0x800000); // done
 
 class User {
+  var $code;       // authentication code
   var $name;       // name of the user
   var $sess;       // session of the user
   var $ip;         // ip of the user
@@ -640,6 +641,7 @@ class User {
     if (($thiz =& new User()) == FALSE)
       return ($G_false);
 
+    $thiz->code  = -1;
     $thiz->name  = $name;
     $thiz->sess  = $sess;
     $thiz->ip    = $ip;
@@ -676,6 +678,7 @@ class User {
   {
     GLOBAL $G_false;
     
+    $this->code       = $from->code;
     $this->name       = $from->name;
     $this->sess       = $from->sess;
     $this->ip         = $from->ip;
@@ -737,6 +740,7 @@ class User {
     if (($thiz =& new User()) == FALSE)
       return ($G_false);
     
+    $thiz->code       = $from->code;
     $thiz->name       = $from->name;
     $thiz->sess       = $from->sess;
     $thiz->ip         = $from->ip;
@@ -779,6 +783,10 @@ class User {
 
     return ($thiz);
   }
+
+  function code_get() {
+      return ($this->code);
+  }
   
   function stat_set($stat) {
     log_main("sess: [".$this->sess. "] NEW STAT: [".$stat."]"); 
@@ -1619,7 +1627,8 @@ class Room {
        $user->name = $name_new; // OK - nick changed
         /* se nome gia' in uso, segnala cosa potrebbe capitare */
         if (($user->flags & USER_FLAG_AUTH) == 0) {
-          $bdb = new BriskDB();
+            // FIXME: now create can return FALSE
+          $bdb = BriskDB::create();
           $bdb->users_load();
           /* MLANG: "Il nickname <b>\'%s\'</b> &egrave; gi&agrave; registrato, <b>se il suo proprietario si autentificher&agrave; verrai rinominato d\'ufficio come ghost<i>N</i>.</b>" */
           if ($bdb->login_exists($name_new)) {
@@ -1884,7 +1893,8 @@ class Room {
     $ghost_auth = FALSE;
     $idx = -1;
     $idfree = -1;
-    
+    $code = FALSE;
+
     if (($name_new = validate_name($name)) == FALSE) {
       $idx = -2;
       return ($G_false);
@@ -1896,15 +1906,17 @@ class Room {
 
     /* if pass != FALSE verify the login with pass */
     log_auth("XXX", "auth1");
-    $bdb = new BriskDB();
-    $bdb->users_load();
-    if ($pass != FALSE) {
+
+    // FIXME: now create can return FALSE
+    if (($bdb = BriskDB::create()) != FALSE)
+        $bdb->users_load();
+    if ($pass != FALSE && $bdb != FALSE) { // TODO: here add a method to $bdb to check if the db is available.
       log_auth("XXX", "auth2");
       $authenticate = $bdb->login_verify($name_new, $pass, $code);
       log_auth("XXX", "authenticate: ".($authenticate != FALSE ? "TRUE" : "FALSE"));
       
       if ($authenticate != FALSE) {
-          $user_type = $authenticate->typeget();
+          $user_type = $authenticate->type_get();
       }
       else {
           $idx = -3;
@@ -2000,6 +2012,7 @@ class Room {
 
       
       if ($authenticate != FALSE) {
+        $this->user[$idx]->code = $authenticate->code_get();
         $this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
 
         if (isset($CO_list)) {
@@ -2059,7 +2072,7 @@ class Room {
       $real_idx = $idx;
       if ($login_exists)
         $idx = -($idx + 1);
-      log_main(sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s] count [%d] [%s]", $idx, $sess, $name_new, count($this->user),$this->user[$real_idx]->name));
+      log_main(sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s] count [%d] name [%s] code [%s]", $idx, $sess, $name_new, count($this->user),$this->user[$real_idx]->name, $this->user[$real_idx]->code));
 
       $ret = $this->user[$real_idx];
       return ($ret);
@@ -2550,21 +2563,6 @@ function log_legal($curtime, &$user, $where, $mesg)
   }
 }
 
-function log_points($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));
-    fclose($fp);
-  }
-}
-
-
-
 
 function lock_banlist()
 {