add webside implementation for party show
[brisk.git] / web / Obj / dbase_pgsql.phh
index 79924e4..8027377 100644 (file)
@@ -210,10 +210,6 @@ class BriskDB
             return (FALSE);
         }
 
-        if (($sere_pg = $this->query($sere_sql)) == FALSE) {
-            return (FALSE);
-        }
-
         $sere_sql = sprintf("SELECT * FROM %sselfreg_chk WHERE (ip & %d) = %d;",
                             $G_dbpfx, int2four($G_selfreg_mask), int2four($laddr & $G_selfreg_mask));
         if (($sere_pg  = $this->query($sere_sql)) == FALSE) {
@@ -858,11 +854,11 @@ INSERT INTO %smails (code, ucode, type, tstamp, subj, body_txt, body_htm, hash)
 
     function friendship_default()
     {
-        return (array(usersnet_friend_getlabel(1) => "//",
-                      usersnet_friend_getlabel(2) => "//",
-                      usersnet_friend_getlabel(3) => "//",
-                      usersnet_friend_getlabel(4) => "//",
-                      usersnet_friend_getlabel(5) => "//"));
+        return (array(usersnet_friend_getlabel(1) => "0",
+                      usersnet_friend_getlabel(2) => "0",
+                      usersnet_friend_getlabel(3) => "0",
+                      usersnet_friend_getlabel(4) => "0",
+                      usersnet_friend_getlabel(5) => "0"));
     }
 
     function usersnet_widefriend($owner, $target)
@@ -885,6 +881,27 @@ INSERT INTO %smails (code, ucode, type, tstamp, subj, body_txt, body_htm, hash)
         return ($widefriend);
     }
 
+    function usersnet_wideskill($owner, $target)
+    {
+        GLOBAL $G_dbpfx;
+
+        $wideskill = "//";
+
+        $wskl_sql = sprintf("SELECT * FROM %susersnet_wideskill WHERE owner = %d AND target = %d;",
+                            $G_dbpfx, $owner, $target);
+        if (($wskl_pg  = $this->query($wskl_sql)) == FALSE) {
+            return ($wideskill);
+        }
+
+        if (pg_numrows($wskl_pg) > 0) {
+            $wskl_obj = pg_fetch_object($wskl_pg, 0);
+            // TODO: UNCOMMENT IF THE NETWORK WORKS VERY WELL
+            // if ($wskl_obj->count >= 3)
+            $wideskill = sprintf("%3.2f", $wskl_obj->skill);
+        }
+        return ($wideskill);
+    }
+
     function usersnet_narrowfriend($owner, $target)
     {
         GLOBAL $G_dbpfx;
@@ -904,6 +921,48 @@ INSERT INTO %smails (code, ucode, type, tstamp, subj, body_txt, body_htm, hash)
         return ($narrowfriend);
     }
 
+    function usersnet_narrowskill($owner, $target)
+    {
+        GLOBAL $G_dbpfx;
+
+        $narrowskill = "//";
+
+        $nskl_sql = sprintf("SELECT * FROM %susersnet_narrowskill WHERE owner = %d AND target = %d;",
+                            $G_dbpfx, $owner, $target);
+        if (($nskl_pg = $this->query($nskl_sql)) == FALSE) {
+            return ($narrowskill);
+        }
+
+        if (pg_numrows($nskl_pg) > 0) {
+            $nskl_obj = pg_fetch_object($nskl_pg, 0);
+            // TODO: UNCOMMENT IF THE NETWORK WORKS VERY WELL
+            // if ($nskl_obj->count >= 3)
+            $narrowskill = sprintf("%3.2f", $nskl_obj->skill);
+        }
+        return ($narrowskill);
+    }
+
+    function usersnet_partyskill($owner, $target)
+    {
+        GLOBAL $G_dbpfx;
+
+        $partyskill = "non disponibile";
+
+        $pskl_sql = sprintf("SELECT * FROM %susersnet_party WHERE owner = %d AND target = %d;",
+                            $G_dbpfx, $owner, $target);
+        if (($pskl_pg  = $this->query($pskl_sql)) == FALSE) {
+            return ($partyskill);
+        }
+
+        if (pg_numrows($pskl_pg) > 0) {
+            $pskl_obj = pg_fetch_object($pskl_pg, 0);
+            // TODO: UNCOMMENT IF THE NETWORK WORKS VERY WELL
+            // if ($wskl_obj->count >= 3)
+            $partyskill = sprintf("%3.2f", $pskl_obj->skill);
+        }
+        return ($partyskill);
+    }
+
     function usersnet_bycode($owner, $target, $widefriend, $narrowfriend)
     {
         GLOBAL $G_dbpfx;
@@ -948,44 +1007,58 @@ INSERT INTO %smails (code, ucode, type, tstamp, subj, body_txt, body_htm, hash)
             $this->transaction('BEGIN');
             $trans = TRUE;
 
-            // try to update
-            $net_sql = sprintf("
+            if ($friend == USERSNET_FRIEND_UNKNOWN) {
+               // try to update
+                $net_sql = sprintf("
+                    DELETE FROM %susersnet
+                        USING %susers as us
+                        WHERE owner = %d AND us.login = '%s' AND target = us.code;",
+                                   $G_dbpfx, $G_dbpfx,
+                                   $owner_id, escsql($json->login));
+
+                if (($net_pg = $this->query($net_sql)) == FALSE) {
+                    $ret = 5;
+                    break;
+                }
+             }
+            else { // if ($friend == USERSNET_FRIEND_UNKNOWN
+                // try to update
+                $net_sql = sprintf("
                     UPDATE %susersnet SET (friend, skill, trust, mtime) =
                         (%d, %d, %d, now())
                         FROM %susers as us
                         WHERE owner = %d AND us.login = '%s' AND target = us.code RETURNING *;",
-                               $G_dbpfx,
-                               $friend, $json->skill, $json->trust,
-                               $G_dbpfx,
-                               $owner_id, escsql($json->login));
-            if (($net_pg  = $this->query($net_sql)) == FALSE || pg_numrows($net_pg) == 0) {
-                $net_sql = sprintf("
+                                   $G_dbpfx,
+                                   $friend, $json->skill, $json->trust,
+                                   $G_dbpfx,
+                                   $owner_id, escsql($json->login));
+                if (($net_pg  = $this->query($net_sql)) == FALSE || pg_numrows($net_pg) == 0) {
+                    $net_sql = sprintf("
                 INSERT INTO %susersnet SELECT %d AS owner, us.code as target,
                         %d as friend, %d as skill, %d as trust
                     FROM %susers as us WHERE us.login = '%s' RETURNING *;",
-                                   $G_dbpfx, $owner_id,
-                                   $friend, $json->skill, $json->trust,
-                                   $G_dbpfx, $json->login);
-                if (($net_pg  = $this->query($net_sql)) == FALSE) {
-                    log_wr('insert query failed');
-                    $ret = 2;
-                    break;
-                }
-                if (pg_numrows($net_pg) != 1) {
-                    log_wr(sprintf('insert numrow failed [%s] [%d]', $net_sql, pg_numrows($net_pg)));
-                    $ret = 3;
-                    break;
+                                       $G_dbpfx, $owner_id,
+                                       $friend, $json->skill, $json->trust,
+                                       $G_dbpfx, $json->login);
+                    if (($net_pg  = $this->query($net_sql)) == FALSE) {
+                        log_wr('insert query failed');
+                        $ret = 2;
+                        break;
+                    }
+                    if (pg_numrows($net_pg) != 1) {
+                        log_wr(sprintf('insert numrow failed [%s] [%d]', $net_sql, pg_numrows($net_pg)));
+                        $ret = 3;
+                        break;
+                    }
                 }
-            }
-            else {
-                if (pg_numrows($net_pg) != 1) {
-                    log_wr('update numrow failed');
-                    $ret = 4;
-                    break;
+                else {
+                    if (pg_numrows($net_pg) != 1) {
+                        log_wr('update numrow failed');
+                        $ret = 4;
+                        break;
+                    }
                 }
             }
-
-            $net_obj = pg_fetch_object($net_pg, 0);
             $this->transaction('COMMIT');
             return (0);
         } while (0);