X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fdbase_pgsql.phh;h=911b2b67019d62aebdfdc5ea62b20715faae5eb1;hb=98ad3d7a5d864f1fc4e06543237d4b5f3c671c54;hp=7cd0c4bc0ee237e5cab8607b095b30adcb38d24e;hpb=79db26bc13a3eed3104658c4ce5b174557275909;p=brisk.git diff --git a/web/Obj/dbase_pgsql.phh b/web/Obj/dbase_pgsql.phh index 7cd0c4b..911b2b6 100644 --- a/web/Obj/dbase_pgsql.phh +++ b/web/Obj/dbase_pgsql.phh @@ -113,6 +113,10 @@ class BriskDB function query($sql) { + if (!$this->dbconn) + if (($this->dbconn = DBConn::recover()) == FALSE) + return FALSE; + if (($res = @pg_query($this->dbconn->db(), $sql)) == FALSE) { error_log('pg_result_status: ' . pg_result_status($res)); error_log('pg_connection_status: ' . pg_connection_status($this->dbconn->db())); @@ -355,11 +359,9 @@ class BriskDB $user_sql = sprintf("UPDATE %susers SET (type, supp_comp) = (%d, '%s') WHERE code = %d;", $G_dbpfx, $flags, escsql($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; } @@ -370,11 +372,9 @@ class BriskDB $user_sql = sprintf("UPDATE %susers SET (type, disa_reas) = (%d, %d) WHERE code = %d;", $G_dbpfx, $flags, $disa_reas, $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; } @@ -385,11 +385,9 @@ class BriskDB $user_sql = sprintf("UPDATE %susers SET (tos_vers) = ('%s') WHERE code = %d;", $G_dbpfx, escsql($tos_vers), $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; } @@ -880,7 +878,74 @@ INSERT INTO %smails (code, ucode, type, tstamp, subj, body_txt, body_htm, hash) { return (UsersNetItem::UsersNetItemDefaults($owner, $target)); } + function usersnet_save($owner_id, $json) + { + GLOBAL $G_dbpfx; + $ret = 99999; + $trans = FALSE; + + do { + $friend = usersnet_friend_getid($json->friend); + $json->skill = intval($json->skill); + $json->trust = intval($json->trust); + + if ($json->skill < 1 || $json->skill > 5 || + $json->trust < 1 || $json->trust > 5 || + $friend == FALSE) { + $ret = 1; + break; + } + $this->transaction('BEGIN'); + $trans = TRUE; + + // 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(" + 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; + } + } + 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); + + if ($trans) + $this->transaction('ROLLBACK'); + + return ($ret); + } } // End class BriskDB class LoginDBOld