/professors.php

https://github.com/zerohun/Im-professor · PHP · 192 lines · 136 code · 37 blank · 19 comment · 14 complexity · 2033c0a8e3bd6ce905d5152b4f6a8143 MD5 · raw file

  1. <?php
  2. require_once "model.php";
  3. function compare_by_average($p1, $p2){
  4. $p1_score = $p1["vote_average"]["total_average"];
  5. $p2_score = $p2["vote_average"]["total_average"];
  6. if($p1_score > $p2_score){
  7. return -1;
  8. }
  9. if($p1_score < $p2_score){
  10. return 1;
  11. }
  12. if($p1_score == $p2_score){
  13. return 0;
  14. }
  15. }
  16. class Professors{
  17. var $professors;
  18. var $infos;
  19. function find_by_id($id){
  20. $professors_model = new Model;
  21. $professors_model->fetch("professors", array("id"), "WHERE id='{$id}'");
  22. $this->professors = $professors_model->to_array();
  23. $infos_model = new Model;
  24. $infos_model->fetch("professor_infos", array("id", "university_id", "major_id","name", "photo", "content"), "WHERE professor_id='{$this->professors[0]["id"]}' ORDER BY created_at DESC LIMIT 1");
  25. $infos = $infos_model->to_array();
  26. $this->professors[0]["name"] = $infos[0]["name"];
  27. $this->professors[0]["photo"] = $infos[0]["photo"];
  28. $this->professors[0]["content"] = $infos[0]["content"];
  29. $this->professors[0]["major_id"] = $infos[0]["major_id"];
  30. $this->professors[0]["university_id"] = $infos[0]["university_id"];
  31. }
  32. function find_by_id_with_infos_join_users($id){
  33. $professors_model = new Model;
  34. $professors_model->fetch("professors", array("id"), "WHERE major_id='{$id}'");
  35. $this->professors = $professors_model->to_array();
  36. // $infos_model = new Model;
  37. // $infos_model->fetch("professor_infos, users", array("professor_infos.id", "professor_infos.major_id","professor_infos.name", "professor_infos.photo", "professor_infos.content", "professor_infos.created_at", "users.name"), "WHERE professor_infos.professor_id='{$this->professors[0]["id"]}' ORDER BY created_at DESC");
  38. $query = "SELECT * FROM professor_infos, users WHERE professor_infos.professor_id='{$id}' and professor_infos.user_id = users.id ORDER BY professor_infos.created_at DESC;";
  39. // echo $query;
  40. $this->professors[0]["infos"] = array();
  41. $result = mysql_query($query);
  42. $count = 0;
  43. if($result){
  44. // echo "this is result!";
  45. while($row = mysql_fetch_array($result)){
  46. $this->professors[0]["infos"][$count] = array();
  47. $this->professors[0]["infos"][$count]["user_id"] = $row[3];
  48. $this->professors[0]["infos"][$count]["professor_name"] = $row[5];
  49. $this->professors[0]["infos"][$count]["user_name"] = $row[13];
  50. // $this->professors[0]["infos"][$count]["professor_photo"] = $row["photo"];
  51. $this->professors[0]["infos"][$count]["content"] = $row[8];
  52. $this->professors[0]["infos"][$count]["id"] = $row[0];
  53. $this->professors[0]["infos"][$count]["created_at"] = $row[1];
  54. $count++;
  55. // echo $count;
  56. /*
  57. foreach($row as $key=>$val){
  58. echo $key;
  59. echo "=";
  60. echo $val;
  61. echo " | ";
  62. }
  63. */
  64. }
  65. }
  66. else{
  67. die(mysql_error());
  68. }
  69. }
  70. function find_professor_by_major_id($id){
  71. $professors_model = new Model;
  72. $professors_model->fetch("professors", array("id"), "WHERE major_id='{$id}'");
  73. $this->professors = $professors_model->to_array();
  74. $infos_model = new Model;
  75. for($i=0; $i<count($this->professors); $i++){
  76. $infos_model->fetch("professor_infos", array("id", "name", "photo", "content"), "WHERE professor_id='{$this->professors[$i]["id"]}' ORDER BY created_at DESC LIMIT 1");
  77. $infos = $infos_model->to_array();
  78. $this->professors[$i]["name"] = $infos[0]["name"];
  79. $this->professors[$i]["photo"] = $infos[0]["photo"];
  80. $this->professors[$i]["content"] = $infos[0]["content"];
  81. }
  82. }
  83. function find_professor_by_university_id($id){
  84. $professors_model = new Model;
  85. $professors_model->fetch("professors", array("id"), "WHERE university_id='{$id}'");
  86. $this->professors = $professors_model->to_array();
  87. $infos_model = new Model;
  88. for($i=0; $i<count($this->professors); $i++){
  89. $infos_model->fetch("professor_infos", array("id", "name", "photo", "content"), "WHERE professor_id='{$this->professors[$i]["id"]}' ORDER BY created_at DESC LIMIT 1");
  90. $infos = $infos_model->to_array();
  91. $this->professors[$i]["name"] = $infos[0]["name"];
  92. $this->professors[$i]["photo"] = $infos[0]["photo"];
  93. $this->professors[$i]["content"] = $infos[0]["content"];
  94. }
  95. }
  96. function to_array(){
  97. return $this->professors;
  98. }
  99. function fetch_vote_list(){
  100. if(count($this->professors) == 0){
  101. return null;
  102. }
  103. $votes_model = array();
  104. foreach($this->professors as $key => $professsor){
  105. $votes_model[$key] = new Model;
  106. //echo $professsor["id"];
  107. $votes_model[$key]->fetch("votes", array("id", "created_at", "user_id","professor_id",
  108. "prepare", "understanding", "interest", "benefit", "hot", "comment_text"),
  109. "WHERE professor_id={$professsor["id"]} ORDER BY created_at DESC");
  110. $this->professors[$key]["vote"] = $votes_model[$key]->to_array();
  111. $votes = $votes_model[$key]->to_array();
  112. // echo $votes[0]["professor_id"];
  113. $total = 0;
  114. $prepare_total = 0;
  115. $understanding_total = 0;
  116. $interest_total = 0;
  117. $benefit_total = 0;
  118. $hot_total = 0;
  119. if(count($votes) > 0){
  120. foreach($votes as $vote){
  121. $total += $vote["prepare"];
  122. $prepare_total += $vote["prepare"];
  123. $total += $vote["understanding"];
  124. $understanding_total += $vote["understanding"];
  125. $total += $vote["interest"];
  126. $interest_total += $vote["interest"];
  127. $total += $vote["benefit"];
  128. $benefit_total += $vote["benefit"];
  129. $total += $vote["hot"];
  130. $hot_total += $vote["hot"];
  131. }
  132. }
  133. // echo $this->professors[$key]["name"];
  134. $num_to_devide = count($votes) * 5;
  135. $num_of_vote = count($votes);
  136. // echo $num_of_vote;
  137. //echo "|";
  138. if($num_of_vote == 0){
  139. $num_of_vote = 1;
  140. }
  141. if($num_to_devide == 0){
  142. $num_to_devide = 1;
  143. }
  144. $this->professors[$key]["vote_average"] = array();
  145. $this->professors[$key]["vote_average"]["total_average"] = $total/$num_to_devide;
  146. $this->professors[$key]["vote_average"]["prepare_average"] = $prepare_total/ $num_of_vote;
  147. $this->professors[$key]["vote_average"]["understanding_average"] = $understanding_total/ $num_of_vote;
  148. $this->professors[$key]["vote_average"]["interest_average"] = $interest_total/ $num_of_vote;
  149. $this->professors[$key]["vote_average"]["benefit_average"] = $benefit_total/ $num_of_vote;
  150. $this->professors[$key]["vote_average"]["hot_average"] = $hot_total/ $num_of_vote;
  151. }
  152. usort($this->professors, "compare_by_average");
  153. }
  154. }
  155. ?>