X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fdbase_pgsql.phh;h=096ac124b2ee3c7f67042e74957284277e96279d;hb=1a1f50c83244ae2808cc9126296c8918bd0516a4;hp=05a42f7ae83de818974f9dde0d3a2adaa84dbd60;hpb=1031fcf6dbc575d963acc2b9522cdc2940957526;p=brisk.git diff --git a/web/Obj/dbase_pgsql.phh b/web/Obj/dbase_pgsql.phh index 05a42f7..096ac12 100644 --- a/web/Obj/dbase_pgsql.phh +++ b/web/Obj/dbase_pgsql.phh @@ -157,6 +157,70 @@ class BriskDB return ($user_obj); } + function user_add($login, $pass, $email, $type, $disa_reas, $guar_code) { + GLOBAL $G_dbpfx; + + $usr_sql = sprintf("INSERT INTO %susers (login, pass, email, type, disa_reas, guar_code) + VALUES ('%s', '%s', '%s', %d, %d, %d) RETURNING *;", + $G_dbpfx, escsql(strtolower($login)), escsql($pass), escsql($email), + $type, $disa_reas, $guar_code); + + if ( ! (($usr_pg = $this->query($usr_sql)) != FALSE && pg_affected_rows($usr_pg) == 1) ) { + return FALSE; + } + $usr_obj = pg_fetch_object($usr_pg, 0); + + return $usr_obj; + } + + function transaction($cmd) { + if ($cmd != "BEGIN" && $cmd != "COMMIT" && $cmd != "ROLLBACK") + return FALSE; + + $trans_sql = sprintf("%s;", $cmd); + if (($trans_pg = $this->query($trans_sql)) == FALSE) { + return FALSE; + } + + return (TRUE); + } + + function mail_reserve_code() { + GLOBAL $G_dbpfx; + + $mail_sql = sprintf("SELECT nextval('%smails_code_seq'::regclass) AS nextval;", $G_dbpfx); + if (($mail_pg = $this->query($mail_sql)) == FALSE) { + return FALSE; + } + if (pg_numrows($mail_pg) != 1) + return FALSE; + + $mail_obj = pg_fetch_object($mail_pg, 0); + + return ($mail_obj->nextval); + } + + function check_record_by_login_or_email($login, $email) { + GLOBAL $G_dbpfx; + + $arr_fie = array('login', 'email'); + $arr_val = array($login, $email); + + for ($i = 0 ; $i < 2 ; $i++) { + $user_sql = sprintf("SELECT * FROM %susers WHERE %s = lower('%s');", + $G_dbpfx, $arr_fie[$i], escsql($arr_val[$i])); + if (($user_pg = $this->query($user_sql)) == FALSE) { + fprintf(STDERR, "QUERY [%s]_ FALSE", $user_sql); + return (3); + } + if (pg_numrows($user_pg) == 1) { + return ($i + 1); + } + } + + return (0); + } + function getrecord_bycode($code) { GLOBAL $G_dbpfx; @@ -414,7 +478,8 @@ class BriskDB $num_obj = pg_fetch_object($num_pg, 0); $table->points_n = $num_obj->points_n; - $tot_sql = sprintf("SELECT sum(p.pts) AS pts + // TAG: POINTS_MANAGEMENT + $tot_sql = sprintf("SELECT sum(p.pts * (2^g.mult)) AS pts FROM %sbin5_games AS g, %sbin5_points AS p, %susers AS u, %sbin5_table_orders AS o WHERE g.mcode = %d AND g.code = p.gcode AND p.ucode = u.code @@ -430,10 +495,11 @@ class BriskDB $u = 0; foreach ($users as $user) { - $pts_sql = sprintf("SELECT p.pts AS pts + // TAG: POINTS_MANAGEMENT + $pts_sql = sprintf("SELECT p.pts AS pts, g.mult AS mult FROM %sbin5_points as p, %sbin5_games as g WHERE p.gcode = g.code AND g.mcode = %d AND p.ucode = %d - ORDER BY g.code ASC + ORDER BY g.tstamp ASC LIMIT %d OFFSET %d;", $G_dbpfx, $G_dbpfx, $match_code, $user['code'], MAX_POINTS, @@ -450,9 +516,10 @@ class BriskDB log_crit(sprintf("%s::%s: number of points great than number of games", __CLASS__, __FUNCTION__)); return (FALSE); } + // TAG: POINTS_MANAGEMENT for ($i = 0 , $ct = $table->points_n - $pts_n; $ct < $table->points_n ; $ct++, $i++) { $pts_obj = pg_fetch_object($pts_pg, $i); - $table->points[$ct % MAX_POINTS][$u] = $pts_obj->pts; + $table->points[$ct % MAX_POINTS][$u] = $pts_obj->pts * pow(2, $pts_obj->mult); } $tot_obj = pg_fetch_object($tot_pg, $u); $table->total[$u] = $tot_obj->pts; @@ -460,7 +527,7 @@ class BriskDB $u++; } - $gam_sql = sprintf("SELECT * FROM %sbin5_games WHERE mcode = %d ORDER BY code DESC LIMIT 1;", $G_dbpfx, $match_code); + $gam_sql = sprintf("SELECT * FROM %sbin5_games WHERE mcode = %d ORDER BY tstamp DESC LIMIT 1;", $G_dbpfx, $match_code); if (($gam_pg = $this->query($gam_sql)) == FALSE || pg_numrows($gam_pg) != 1) { log_crit(sprintf("%s::%s: get last game fails", __CLASS__, __FUNCTION__)); return (FALSE);