partial commit of new saving points schema
[brisk.git] / web / Obj / dbase_pgsql.phh
index 6575ab3..c8fd026 100644 (file)
@@ -157,7 +157,36 @@ class BriskDB
         return ($user_obj);
     }
 
+    function user_update_login_time($code, $lintm)
+    {
+        GLOBAL $G_dbpfx;
+
+        $user_sql = sprintf("UPDATE %susers SET (lintm) = (date 'epoch' + %d * INTERVAL '1 second') WHERE code = %d;", $G_dbpfx, $lintm, $code);
+
+        // $user_pg = $this->query($user_sql);
+        // $row_n = pg_affected_rows($user_pg);
+        // fprintf(STDERR, "query: %s   NUM: %d\n", ($user_pg == FALSE ? "FALSE" : "TRUE"), $row_n);
+        if ( ! (($user_pg  = $this->query($user_sql)) != FALSE && pg_affected_rows($user_pg) == 1) ) {
+             return FALSE;
+        }
+
+        return TRUE;
+    }
+
+    function user_prefs_update($code, $flags, $supp_comp)
+    {
+        GLOBAL $G_dbpfx;
 
+        $user_sql = sprintf("UPDATE %susers SET (type, supp_comp) = (%d, '%s') WHERE code = %d;",
+                            $G_dbpfx, $flags, $supp_comp, $code);
+        fprintf(STDERR, "REQUEST [%s]\n", $user_sql);
+        if ( ! (($user_pg  = $this->query($user_sql)) != FALSE && pg_affected_rows($user_pg) == 1) ) {
+             return FALSE;
+        }
+        fprintf(STDERR, "REQUEST GOOD [%s]\n", $user_sql);
+
+        return TRUE;
+    }
     
     function login_verify($login, $pass)
     {
@@ -190,6 +219,7 @@ class BriskDB
                             log_main("login_verify SUCCESS for ".$login);
                             
                             $chals->rem($login);
+                            $this->user_update_login_time($user_obj->code, time());
                             $ret = LoginDBItem::LoginDBItemFromRecord($user_obj);
                             break;
                         }
@@ -242,8 +272,6 @@ class BriskDB
             $user_sql = sprintf("INSERT INTO %susers ( login, pass, email, type) VALUES ('%s', '%s', '%s', %d);",
                                 $G_dbpfx, escsql(strtolower($olddb->item[$i]->login)), escsql($olddb->item[$i]->pass),
                                 escsql($olddb->item[$i]->email), $olddb->item[$i]->type & USER_FLAG_TY_ALL); 
-            
-            // if ( ! (($user_pg = pg_exec($dbconn,$order_add_sql)) != FALSE && pg_affected_rows($order_pg) == 1) ) {
 
             if ( ! (($user_pg  = $this->query($user_sql)) != FALSE && pg_affected_rows($user_pg) == 1) ) {
                 $cont .= sprintf("ERROR IN LINE: %s\n", eschtml($user_sql));
@@ -261,9 +289,10 @@ class BriskDB
 
     //   ttok   text UNIQUE,      
     //   tidx   
-    function bin5_points_save($date, $ttok, $tidx, $ucodes, $pts)
+    function bin5_points_save($date, $table, $tidx, $ucodes, $pts)
     {
         GLOBAL $G_dbpfx;
+        $sql_ttok = escsql($table->table_token);
 
         $is_trans = FALSE;
         $ret = FALSE;
@@ -281,16 +310,26 @@ class BriskDB
             /*
              * matches management
              */
-            $mtc_sql = sprintf("SELECT * FROM %sbin5_matches WHERE ttok = '%s';", $G_dbpfx, escsql($ttok));
+            $mtc_sql = sprintf("UPDATE %sbin5_matches SET (mazzo_next, mult_next) = (%d, %d) WHERE ttok = '%s' RETURNING *;",
+                               $G_dbpfx, $table->mazzo, $table->mult, $sql_ttok);
             if (($mtc_pg  = $this->query($mtc_sql)) == FALSE || pg_numrows($mtc_pg) != 1) {
                 // match not exists, insert it
-                $mtc_sql = sprintf("INSERT INTO %sbin5_matches (ttok, tidx) VALUES ('%s', %d) RETURNING *;",
-                                   $G_dbpfx, escsql($ttok), $tidx);
-                if ( ! (($mtc_pg  = $this->query($mtc_sql)) != FALSE &&
-                        pg_affected_rows($mtc_pg) == 1) ) {
+                $mtc_sql = sprintf("INSERT INTO %sbin5_matches (ttok, tidx, mazzo_next, mult_next) VALUES ('%s', %d, %d, %d) RETURNING *;",
+                                   $G_dbpfx, $sql_ttok, $tidx, $table->mazzo, $table->mult);
+                if (($mtc_pg  = $this->query($mtc_sql)) == FALSE || pg_affected_rows($mtc_pg) != 1) {
                     log_crit(sprintf("bin5_points_save: failed at insert match [%s]", $mtc_sql));
                     break;
                 }
+                for ($i = 0 ; $i < $n ; $i++) {
+                    $ord_sql = sprintf("INSERT INTO %sbin5_table_order (mcode, ucode, pos) VALUES (%d, %d, %d);",
+                                       $G_dbpfx, $G_dbpfx, $sql_ttok, $ucode[$i], $i);
+                    if (($ord_pg = $this->query($ord_sql)) == FALSE || pg_affected_rows($ord_pg) != 1 ) {
+                        log_crit(sprintf("bin5_points_save: failed at insert table order [%s]", $ord_sql));
+                        break;
+                    }
+                }
+                if ($i < $n)
+                    break;
             }
             $mtc_obj = pg_fetch_object($mtc_pg,0);
 
@@ -300,10 +339,9 @@ class BriskDB
             $gam_sql = sprintf("INSERT INTO %sbin5_games (mcode, tstamp) 
                                                VALUES (%d, to_timestamp(%d)) RETURNING *;",
                                $G_dbpfx, $mtc_obj->code, $date);
-            if ( ! (($gam_pg  = $this->query($gam_sql)) != FALSE &&
-                    pg_affected_rows($gam_pg) == 1) ) {
+            if (($gam_pg  = $this->query($gam_sql)) == FALSE || pg_affected_rows($gam_pg) != 1) {
                 log_crit(sprintf("bin5_points_save: failed at insert game [%s]", $gam_sql));
-                break;                        
+                break;
             }
         
             $gam_obj = pg_fetch_object($gam_pg,0);
@@ -316,13 +354,11 @@ class BriskDB
                 $pts_sql = sprintf("INSERT INTO %sbin5_points (gcode, ucode, pts) 
                                                VALUES (%d, %d, %d);",
                                    $G_dbpfx, $gam_obj->code, $ucodes[$i], $pts[$i]);
-                if ( ! (($pts_pg  = $this->query($pts_sql)) != FALSE &&
-                        pg_affected_rows($pts_pg) == 1) ) {
+                if (($pts_pg  = $this->query($pts_sql)) == FALSE || pg_affected_rows($pts_pg) != 1) {
                     log_crit(sprintf("bin5_points_save: failed at insert point [%s]", $pts_sql));
-                    break;                        
+                    break;
                 }
             }
-
             if ($i < $n)
                 break;