result.class.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <?php
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2008 Dokeos Latinoamerica SAC
  6. Copyright (c) 2006 Dokeos SPRL
  7. Copyright (c) 2006 Ghent University (UGent)
  8. Copyright (c) various contributors
  9. For a full list of contributors, see "credits.txt".
  10. The full license can be read in "license.txt".
  11. This program is free software; you can redistribute it and/or
  12. modify it under the terms of the GNU General Public License
  13. as published by the Free Software Foundation; either version 2
  14. of the License, or (at your option) any later version.
  15. See the GNU General Public License for more details.
  16. Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  17. Mail: info@dokeos.com
  18. ==============================================================================
  19. */
  20. /**
  21. * Defines a gradebook Result object
  22. * @author Bert Steppé, Stijn Konings
  23. * @package dokeos.gradebook
  24. */
  25. class Result
  26. {
  27. // PROPERTIES
  28. private $id;
  29. private $user_id;
  30. private $evaluation;
  31. private $creation_date;
  32. private $score;
  33. // CONSTRUCTORS
  34. function Result() {
  35. $this->creation_date = time();
  36. }
  37. // GETTERS AND SETTERS
  38. public function get_id() {
  39. return $this->id;
  40. }
  41. public function get_user_id() {
  42. return $this->user_id;
  43. }
  44. public function get_evaluation_id() {
  45. return $this->evaluation;
  46. }
  47. public function get_date() {
  48. return $this->creation_date;
  49. }
  50. public function get_score() {
  51. return $this->score;
  52. }
  53. public function set_id ($id) {
  54. $this->id = $id;
  55. }
  56. public function set_user_id ($user_id) {
  57. $this->user_id = $user_id;
  58. }
  59. public function set_evaluation_id ($evaluation_id) {
  60. $this->evaluation = $evaluation_id;
  61. }
  62. public function set_date ($creation_date) {
  63. $this->creation_date = $creation_date;
  64. }
  65. public function set_score ($score) {
  66. $this->score = $score;
  67. }
  68. // CRUD FUNCTIONS
  69. /**
  70. * Retrieve results and return them as an array of Result objects
  71. * @param $id result id
  72. * @param $user_id user id (student)
  73. * @param $evaluation_id evaluation where this is a result for
  74. */
  75. public function load ($id = null, $user_id = null, $evaluation_id = null) {
  76. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  77. $tbl_course_rel_course = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  78. $tbl_session_rel_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  79. if (is_null($id ) && is_null($user_id) && !is_null($evaluation_id)) {
  80. $sql_verified_if_exist_evaluation='SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE evaluation_id="'.Database::escape_string($evaluation_id).'";';
  81. $res_verified_if_exist_evaluation=Database::query($sql_verified_if_exist_evaluation);
  82. $info_verified_if_exist_evaluation=Database::result($res_verified_if_exist_evaluation,0,0);
  83. if ($info_verified_if_exist_evaluation!=0) {
  84. $sql_course_rel_user= '';
  85. if (api_get_session_id()) {
  86. $sql_course_rel_user = 'SELECT course_code,id_user,status FROM '.$tbl_session_rel_course_user.' WHERE status=0 AND course_code="'.api_get_course_id().' AND id_session='.api_get_session_id().'"';
  87. } else {
  88. $sql_course_rel_user = 'SELECT course_code,user_id,status FROM '.$tbl_course_rel_course.' WHERE status="'.STUDENT.'" AND course_code="'.api_get_course_id().'"; ';
  89. }
  90. $res_course_rel_user=Database::query($sql_course_rel_user);
  91. $list_user_course_list=array();
  92. while ($row_course_rel_user=Database::fetch_array($res_course_rel_user)) {
  93. $list_user_course_list[]=$row_course_rel_user;
  94. }
  95. $current_date=time();
  96. for ($i=0;$i<count($list_user_course_list);$i++) {
  97. $sql_verified='SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE user_id="'.(int)($list_user_course_list[$i]['user_id']).'" AND evaluation_id="'.Database::escape_string($evaluation_id).'";';
  98. //$my_status_in_course=CourseManager::get_user_in_course_status($list_user_course_list[$i]['user_id'], api_get_course_id());
  99. $res_verified=Database::query($sql_verified);
  100. $info_verified=Database::result($res_verified,0,0);
  101. if ($info_verified==0) {
  102. $sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,date,score) values ("'.Database::escape_string($list_user_course_list[$i]['user_id']).'","'.Database::escape_string($evaluation_id).'","'.$current_date.'",0);';
  103. $res_insert=Database::query($sql_insert);
  104. }
  105. }
  106. $list_user_course_list=array();
  107. }
  108. }
  109. $sql='SELECT id,user_id,evaluation_id,date,score FROM '.$tbl_grade_results;
  110. $paramcount = 0;
  111. if (!empty ($id)) {
  112. $sql.= ' WHERE id = '.Database::escape_string($id);
  113. $paramcount ++;
  114. }
  115. if (!empty ($user_id)) {
  116. if ($paramcount != 0) $sql .= ' AND';
  117. else $sql .= ' WHERE';
  118. $sql .= ' user_id = '.Database::escape_string($user_id);
  119. $paramcount ++;
  120. }
  121. if (!empty ($evaluation_id)) {
  122. if ($paramcount != 0) {
  123. $sql .= ' AND';
  124. } else {
  125. $sql .= ' WHERE';
  126. }
  127. $sql .= ' evaluation_id = '.Database::escape_string($evaluation_id);
  128. $paramcount ++;
  129. }
  130. $result = Database::query($sql);
  131. $allres=array();
  132. while ($data=Database::fetch_array($result)) {
  133. $res= new Result();
  134. $res->set_id($data['id']);
  135. $res->set_user_id($data['user_id']);
  136. $res->set_evaluation_id($data['evaluation_id']);
  137. $res->set_date($data['date']);
  138. $res->set_score($data['score']);
  139. $allres[]=$res;
  140. }
  141. return $allres;
  142. }
  143. /**
  144. * Insert this result into the database
  145. */
  146. public function add() {
  147. if (isset($this->user_id) && isset($this->evaluation) && isset($this->creation_date) ) {
  148. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  149. $sql = 'INSERT INTO '.$tbl_grade_results
  150. .' (user_id, evaluation_id,
  151. date';
  152. if (isset($this->score)) {
  153. $sql .= ',score';
  154. }
  155. $sql .= ') VALUES
  156. ('.(int)$this->get_user_id().', '.(int)$this->get_evaluation_id()
  157. .', '.$this->get_date();
  158. if (isset($this->score)) {
  159. $sql .= ', '.$this->get_score();
  160. }
  161. $sql .= ')';
  162. Database::query($sql);
  163. } else {
  164. die('Error in Result add: required field empty');
  165. }
  166. }
  167. /**
  168. * insert log result
  169. */
  170. public function add_result__log($userid,$evaluationid){
  171. if (isset($userid) && isset($evaluationid) ) {
  172. $tbl_grade_results_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT_LOG);
  173. $result=new Result();
  174. $arr_result=$result->load (null, $userid, $evaluationid);
  175. $arr=get_object_vars($arr_result[0]);
  176. $sql = 'INSERT INTO '.$tbl_grade_results_log
  177. .' (id_result,user_id, evaluation_id,
  178. date_log';
  179. if (isset($arr['score'])) {
  180. $sql .= ',score';
  181. }
  182. $sql .= ') VALUES
  183. ('.(int)$arr['id'].','.(int)$arr['user_id'].', '.(int)$arr['evaluation']
  184. .', '.$arr['creation_date'];
  185. if (isset($arr['score'])) {
  186. $sql .= ', '.$arr['score'];
  187. }
  188. $sql .= ')';
  189. Database::query($sql);
  190. } else {
  191. die('Error in Result add: required field empty');
  192. }
  193. }
  194. /**
  195. * Update the properties of this result in the database
  196. */
  197. public function save() {
  198. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  199. $sql = 'UPDATE '.$tbl_grade_results
  200. .' SET user_id = '.$this->get_user_id()
  201. .', evaluation_id = '.$this->get_evaluation_id()
  202. .', score = ';
  203. if (isset($this->score)) {
  204. $sql .= $this->get_score();
  205. } else {
  206. $sql .= 'null';
  207. }
  208. $sql .= ' WHERE id = '.$this->id;
  209. // no need to update creation date
  210. Database::query($sql);
  211. }
  212. /**
  213. * Delete this result from the database
  214. */
  215. public function delete() {
  216. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  217. $sql = 'DELETE FROM '.$tbl_grade_results.' WHERE id = '.$this->id;
  218. Database::query($sql);
  219. }
  220. }