PageRenderTime 54ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/DB.php

https://github.com/zackster/antfarm
PHP | 182 lines | 144 code | 37 blank | 1 comment | 2 complexity | 97582c3bddcaaf21bcb46cb3aed99488 MD5 | raw file
  1. <?php
  2. class DB {
  3. private $link;
  4. private $results;
  5. function __construct() {
  6. require(dirname(__FILE__) . '/config.php'); // this works
  7. $this->link = mysql_connect('localhost', $dbusername, $dbpassword, true);
  8. mysql_select_db($dbname, $this->link);
  9. return;
  10. }
  11. function are_email_notifications_enabled($uid) {
  12. $query = sprintf("SELECT disable_email_notifications FROM users WHERE id=%d", $uid);
  13. $res = mysql_query($query);
  14. $row = mysql_fetch_assoc($res);
  15. return (!(bool)$row['disable_email_notifications']);
  16. }
  17. function award_exp($uid,$act,$exp_value) {
  18. $query = sprintf("INSERT INTO experience (uid,act,value) VALUES (%d,'%s',%d)", $uid,mysql_real_escape_string($act),$exp_value);
  19. mysql_query($query);
  20. return;
  21. }
  22. function calculate_leaderboard() {
  23. $query = sprintf("set @cnt :=0");
  24. mysql_query($query);
  25. $query = sprintf("select @cnt := @cnt+1 as rank,dt.* FROM (SELECT users.username,sum(experience.value) as score from experience,users where users.id=experience.uid group by uid order by score desc limit 50) as dt");
  26. $res = mysql_query($query);
  27. $ret = array();
  28. while($row = mysql_fetch_assoc($res)) {
  29. array_push($ret, $row);
  30. }
  31. return $ret;
  32. }
  33. function calculate_rank($uid) {
  34. $scoreboard_query = sprintf("select count(distinct uid) as scoreboard_size from experience");
  35. $scoreboard_res = mysql_query($scoreboard_query);
  36. $scoreboard_row = mysql_fetch_assoc($scoreboard_res);
  37. $leaderboard_creation_query = sprintf("create temporary table leaderboard (rank int not null, uid int not null, score int not null default 0) engine=memory");
  38. mysql_query($leaderboard_creation_query);
  39. $count_initialization_query = sprintf("set @cnt :=0");
  40. mysql_query($count_initialization_query);
  41. // $leaderboard_insertion_query = sprintf("insert into leaderboard(rank,uid,score) select @cnt := @cnt+1 as rank,uid,sum(value) as score from experience group by uid order by score desc");
  42. $leaderboard_insertion_query = sprintf("insert into leaderboard(rank,uid,score) select @cnt := @cnt+1 as rank,dt.* FROM (SELECT experience.uid,sum(experience.value) as score from experience group by uid order by score desc limit 50) as dt");
  43. $leaderboard_result = mysql_query($leaderboard_insertion_query);
  44. $rank_query = sprintf("select rank from leaderboard where uid=%d", $uid);
  45. $rank_result = mysql_query($rank_query);
  46. $rank_row = mysql_fetch_assoc($rank_result);
  47. $drop_leaderboard_query = sprintf("drop table leaderboard");
  48. mysql_query($drop_leaderboard_query);
  49. return array($rank_row['rank'],$scoreboard_row['scoreboard_size']);
  50. }
  51. function calculate_score($uid) {
  52. $query = sprintf("SELECT sum(value) AS score FROM experience WHERE uid=%d", $uid);
  53. $res = mysql_query($query);
  54. $row = mysql_fetch_assoc($res);
  55. return $row['score'];
  56. }
  57. function create_user($email, $pw, $username, $source) {
  58. $query = sprintf("INSERT INTO users (email,pw,username,source,last_login) VALUES ('%s','%s','%s','%s',now())", mysql_real_escape_string($email), md5($pw), mysql_real_escape_string($username), mysql_real_escape_string($source));
  59. mysql_query($query);
  60. return mysql_insert_id();
  61. }
  62. function dashboard_get_registration_count() {
  63. $query = "select count(*) as registration_count,date_format(reg_date,'%M %e %Y') as registration_date from users group by registration_date";
  64. $res = mysql_query($query);
  65. $ret = array();
  66. while($row = mysql_fetch_assoc($res)) {
  67. array_push($ret,$row);
  68. }
  69. return $ret;
  70. }
  71. function get_email_address($user) {
  72. $query = sprintf("SELECT email FROM users WHERE id=%d", $user);
  73. $res = mysql_query($query);
  74. $row = mysql_fetch_assoc($res);
  75. return $row['email'];
  76. }
  77. function get_username($user) {
  78. $query = sprintf("SELECT username FROM users WHERE id=%d", $user);
  79. $res = mysql_query($query);
  80. $row = mysql_fetch_assoc($res);
  81. return $row['username'];
  82. }
  83. function get_notifications($uid) {
  84. $query = sprintf("SELECT message,add_date FROM notification_queue WHERE uid=%d AND is_read=0 ORDER BY add_date desc", $uid);
  85. $res = mysql_query($query);
  86. $ret = array();
  87. while($row = mysql_fetch_assoc($res)) {
  88. array_push($ret, array('message'=>$row['message'], 'date'=>$row['add_date']));
  89. }
  90. $this->mark_notifications_read($uid);
  91. return $ret;
  92. }
  93. function get_notification_count($uid) {
  94. $query = sprintf("SELECT COUNT(*) as notification_count FROM notification_queue WHERE is_read=0 AND uid=%d", $uid);
  95. $res = mysql_query($query);
  96. $row = mysql_fetch_assoc($res);
  97. return $row['notification_count'];
  98. }
  99. function get_ant_for_review($uid) {
  100. $query = sprintf("SELECT ant,event,u_distortions,u_uid FROM ant_queue WHERE u_uid!=%d AND r_uid!=%d ORDER BY review_count ASC LIMIT 1", $uid, $uid);
  101. $res = mysql_query($query);
  102. $row = mysql_fetch_assoc($res);
  103. return $row;
  104. }
  105. function insert_notification($uid,$message) {
  106. $query = sprintf("INSERT INTO notification_queue (uid,message) VALUES (%d,'%s')", $uid, mysql_real_escape_string($message));
  107. mysql_query($query);
  108. return;
  109. }
  110. function login_user($email, $pw) {
  111. $query = sprintf("SELECT id,username FROM users WHERE (email='%s' AND pw='%s') OR (username='%s' AND pw='%s')", mysql_real_escape_string($email),md5($pw), mysql_real_escape_string($email),md5($pw));
  112. $res = mysql_query($query);
  113. if(mysql_num_rows($res)>0) {
  114. $query = sprintf("UPDATE users SET last_login=now() WHERE email='%s'", mysql_real_escape_string($email));
  115. mysql_query($query);
  116. $row = mysql_fetch_assoc($res);
  117. return array('uid' => $row['id'], 'username' => $row['username']);
  118. }
  119. else {
  120. return false;
  121. }
  122. }
  123. private function mark_notifications_read($uid) {
  124. $query = sprintf("UPDATE notification_queue SET is_read=1,read_date=now() WHERE is_read=0 AND uid=%d", $uid);
  125. $res = mysql_query($query);
  126. return;
  127. }
  128. function save_ant($uid,$ant,$event,$distortions) {
  129. $query = sprintf("INSERT INTO ant_queue (u_uid,ant,event,u_distortions) VALUES (%d,'%s','%s','%s')", $uid, mysql_real_escape_string($ant),mysql_real_escape_string($event),mysql_real_escape_string($distortions));
  130. mysql_query($query);
  131. return;
  132. }
  133. function update_ant($u_uid, $ant,$event,$u_distortions, $r_uid, $r_distortions, $r_comments) {
  134. $query = sprintf("UPDATE ant_queue SET r_uid=%d,r_distortions='%s',r_comments='%s',review_count=review_count+1 WHERE u_uid=%d AND event='%s' AND u_distortions='%s'", $r_uid,mysql_real_escape_string($r_distortions),mysql_real_escape_string($r_comments),$u_uid,mysql_real_escape_string($event),mysql_real_escape_string($u_distortions));
  135. mysql_query($query);
  136. return;
  137. }
  138. function update_email_settings($user, $disable_emails) {
  139. $query = sprintf("UPDATE users SET disable_email_notifications=%d WHERE id=%d", $disable_emails, $user);
  140. echo $query;
  141. mysql_query($query);
  142. return;
  143. }
  144. }
  145. ?>