BriskDB and DBConn classes now have a static constructor method that can be failed
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Thu, 24 Feb 2011 07:59:19 +0000 (08:59 +0100)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Thu, 24 Feb 2011 07:59:19 +0000 (08:59 +0100)
web/Obj/brisk.phh
web/Obj/dbase_file.phh
web/Obj/dbase_pgsql.phh
web/admin.php
web/briskin5/Obj/placing.phh
web/briskin5/index_wr.php
web/briskin5/statadm.php
web/index_wr.php

index 34e08b0..480f3a2 100644 (file)
@@ -1627,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)) {
@@ -1905,9 +1906,11 @@ 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"));
index 6801031..9e8331a 100644 (file)
@@ -38,6 +38,13 @@ class BriskDB {
         log_main("BriskDB create:end");
     }
 
+    static function &create()
+    {
+        $ret = new BriskDB();
+        
+        return ($ret);
+    }
+
     function users_load() 
     {
         GLOBAL $DOCUMENT_ROOT;
index a205b32..c3643bb 100644 (file)
@@ -41,17 +41,24 @@ class DBConn
     
     function DBConn()
     {
-        GLOBAL $G_dbauth;
+        $this->db = DBConn::$dbcnnx;        
+    }
+
+    static function &create()
+    {
+        GLOBAL $G_dbauth, $G_false;
         
+        $ret = &$G_false;
+
         if (DBConn::$dbcnnx == FALSE) {
             if (!(DBConn::$dbcnnx = @pg_connect ($G_dbauth))) {
-                echo "DB connection failed.";
-                exit;
+                return FALSE;
             }
         }
-        $this->db = DBConn::$dbcnnx;
 
-        return;
+        $ret = new DBConn();
+        
+        return $ret;
     }
     function db()
     {
@@ -65,14 +72,29 @@ class BriskDB
     var $item;
     var $item_n;
     
-    function BriskDB()
+    function BriskDB($dbconn)
+    {
+        $this->dbconn = $dbconn;
+    }
+
+    static function &create()
     {
         GLOBAL $DOCUMENT_ROOT, $G_dbpfx, $G_false;
+
+        $dbconn = $G_false;
+        $ret = $G_false;
+
         log_main("BriskDB create:start");
         
-        $this->dbconn = new DBConn();
+        do {
+            if (($dbconn = DBConn::create()) == FALSE)
+                break;
+            
+            $ret = new BriskDB($dbconn);
+        } while (0);
         
         log_main("BriskDB create:end");
+        return ($ret);
     }
 
     function users_load()
index c36e475..7c87e1d 100644 (file)
@@ -101,7 +101,9 @@ function main()
                 $cont .= sprintf("Loading failed.<br>\n"); 
                 break;
             }
-            $newdb = new BriskDB();
+
+            // FIXME: now create can return FALSE
+            $newdb = BriskDB::create();
             $newdb->users_load();
             if ($newdb->addusers_from_olddb($olddb, $cont) == FALSE) {
                 $cont .= sprintf("Insert failed.<br>\n"); 
@@ -123,7 +125,8 @@ function main()
                 break;
             }
 
-            $newdb = new BriskDB();
+            // FIXME: now create can return FALSE
+            $newdb = BriskDB::create();
             $newdb->users_load();
             $dbconn = $newdb->getdbconn();
             for ($pts_n = 0 ;  !feof($fp) ; $pts_n++) {
index 31b97a3..5e1144a 100644 (file)
@@ -142,7 +142,8 @@ function placing_time_file()
 function placing_time_pgsql()
 {    
     GLOBAL $G_dbpfx;
-    $bdb = new BriskDB();
+    // FIXME: now create can return FALSE
+    $bdb = BriskDB::create();
     
     $mti_sql = sprintf("SELECT CAST(EXTRACT(EPOCH FROM mtime) AS INTEGER) as mtime 
                         FROM %sbin5_places_mtime WHERE code = 0;", $G_dbpfx);
@@ -250,8 +251,9 @@ function placing_show_file(&$user, $ty, $subty)
 function placing_show_pgsql(&$user, $ty, $subty) 
 {
     GLOBAL $G_dbpfx;
-
-    $bdb = new BriskDB();
+    
+    // FIXME: now create can return FALSE
+    $bdb = BriskDB::create();
       
     if ($user != FALSE) {
         $pla_sql = sprintf("SELECT * from %sbin5_places where type = %d AND (rank <= %d OR ucode = '%s');",
index 5045a54..6c27840 100644 (file)
@@ -495,7 +495,8 @@ else if ($user->stat == 'table') {
             require_once("../Obj/dbase_".$G_dbasetype.".phh");
   
             log_points($curtime, $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
-            $bdb = new BriskDB();
+            // FIXME: now create can return FALSE
+            $bdb = BriskDB::create();
             $bdb->bin5_points_save($curtime, $table->table_token, $user->table_orig, $ucodes, $pt_cur);
             unset($bdb);
           }
index 3c3e3e1..15fd27c 100644 (file)
@@ -58,7 +58,8 @@ function main_file($curtime)
     fclose($fp_start);
   }
 
-  $bdb = new BriskDB();
+  // FIXME: now create can return FALSE
+  $bdb = BriskDB::create();
   $bdb->users_load();
 
   for ($i = 0 ; $i < $bdb->count() ; $i++) {
@@ -210,7 +211,8 @@ function main_pgsql($curtime)
 {
     GLOBAL $G_dbpfx;
 
-    $bdb = new BriskDB();
+    // FIXME: now create can return FALSE
+    $bdb = BriskDB::create();
 
     $limi = array( TRI_LIMIT, MON_LIMIT, WEE_LIMIT );
     $ming = array( TRI_MIN_GAMES, MON_MIN_GAMES, WEE_MIN_GAMES );
index b030aff..8e20cd9 100644 (file)
@@ -246,7 +246,8 @@ else if ($argz[0] == 'mesgtoadm') {
   log_wr("INFO:SKIP:argz == mesgtoadm name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH));
   if ($user->flags & USER_FLAG_AUTH) {
     if (($wa_lock = Warrant::lock_data()) != FALSE) {
-      $bdb = new BriskDB();
+        // FIXME: now create can return FALSE
+      $bdb = BriskDB::create();
       $bdb->users_load();
 
       if (($ema = $bdb->getmail($user->name)) != FALSE) {