PageRenderTime 43ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/main/gradebook/lib/be/result.class.php

https://bitbucket.org/hanutimes/hanutimes
PHP | 253 lines | 185 code | 32 blank | 36 comment | 33 complexity | 4f14e7e47e61e668f59b6465739cf048 MD5 | raw file
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Defines a gradebook Result object
  5. * @author Bert Steppé, Stijn Konings
  6. * @package chamilo.gradebook
  7. */
  8. /**
  9. * Class
  10. * @package chamilo.gradebook
  11. */
  12. class Result
  13. {
  14. // PROPERTIES
  15. private $id;
  16. private $user_id;
  17. private $evaluation;
  18. private $created_at;
  19. private $score;
  20. // CONSTRUCTORS
  21. function Result() {
  22. $this->created_at = api_get_utc_datetime();
  23. }
  24. // GETTERS AND SETTERS
  25. public function get_id() {
  26. return $this->id;
  27. }
  28. public function get_user_id() {
  29. return $this->user_id;
  30. }
  31. public function get_evaluation_id() {
  32. return $this->evaluation;
  33. }
  34. public function get_date() {
  35. return $this->created_at;
  36. }
  37. public function get_score() {
  38. return $this->score;
  39. }
  40. public function set_id ($id) {
  41. $this->id = $id;
  42. }
  43. public function set_user_id ($user_id) {
  44. $this->user_id = $user_id;
  45. }
  46. public function set_evaluation_id ($evaluation_id) {
  47. $this->evaluation = $evaluation_id;
  48. }
  49. public function set_date ($creation_date) {
  50. $this->created_at = $creation_date;
  51. }
  52. public function set_score ($score) {
  53. $this->score = $score;
  54. }
  55. // CRUD FUNCTIONS
  56. /**
  57. * Retrieve results and return them as an array of Result objects
  58. * @param $id result id
  59. * @param $user_id user id (student)
  60. * @param $evaluation_id evaluation where this is a result for
  61. */
  62. public static function load ($id = null, $user_id = null, $evaluation_id = null) {
  63. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  64. $tbl_course_rel_course = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  65. $tbl_session_rel_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  66. if (is_null($id ) && is_null($user_id) && !is_null($evaluation_id)) {
  67. $sql_verified_if_exist_evaluation = 'SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE evaluation_id="'.Database::escape_string($evaluation_id).'";';
  68. $res_verified_if_exist_evaluation = Database::query($sql_verified_if_exist_evaluation);
  69. $info_verified_if_exist_evaluation = Database::result($res_verified_if_exist_evaluation,0,0);
  70. if ($info_verified_if_exist_evaluation != 0 ) {
  71. if (api_get_session_id()) {
  72. $sql_course_rel_user = 'SELECT course_code, id_user as user_id, status
  73. FROM '.$tbl_session_rel_course_user.'
  74. WHERE status=0 AND c_id="'.api_get_course_int_id().'" AND id_session='.api_get_session_id();
  75. } else {
  76. $sql_course_rel_user = 'SELECT course_code, user_id, status
  77. FROM '.$tbl_course_rel_course.'
  78. WHERE status ="'.STUDENT.'" AND c_id ="'.api_get_course_int_id().'" ';
  79. }
  80. $res_course_rel_user = Database::query($sql_course_rel_user);
  81. $list_user_course_list = array();
  82. while ($row_course_rel_user = Database::fetch_array($res_course_rel_user, 'ASSOC')) {
  83. $list_user_course_list[]= $row_course_rel_user;
  84. }
  85. $current_date=api_get_utc_datetime();
  86. for ($i=0; $i<count($list_user_course_list); $i++) {
  87. $sql_verified = 'SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE user_id="'.intval($list_user_course_list[$i]['user_id']).'" AND evaluation_id="'.intval($evaluation_id).'";';
  88. $res_verified = Database::query($sql_verified);
  89. $info_verified = Database::result($res_verified,0,0);
  90. if ($info_verified == 0) {
  91. $sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,created_at,score)
  92. VALUES ("'.intval($list_user_course_list[$i]['user_id']).'","'.intval($evaluation_id).'","'.$current_date.'",0);';
  93. $res_insert=Database::query($sql_insert);
  94. }
  95. }
  96. $list_user_course_list = array();
  97. }
  98. }
  99. $sql = 'SELECT id,user_id,evaluation_id,created_at,score FROM '.$tbl_grade_results;
  100. $paramcount = 0;
  101. if (!empty ($id)) {
  102. $sql.= ' WHERE id = '.Database::escape_string($id);
  103. $paramcount ++;
  104. }
  105. if (!empty ($user_id)) {
  106. if ($paramcount != 0) $sql .= ' AND';
  107. else $sql .= ' WHERE';
  108. $sql .= ' user_id = '.Database::escape_string($user_id);
  109. $paramcount ++;
  110. }
  111. if (!empty ($evaluation_id)) {
  112. if ($paramcount != 0) {
  113. $sql .= ' AND';
  114. } else {
  115. $sql .= ' WHERE';
  116. }
  117. $sql .= ' evaluation_id = '.Database::escape_string($evaluation_id);
  118. $paramcount ++;
  119. }
  120. $result = Database::query($sql);
  121. $allres=array();
  122. while ($data=Database::fetch_array($result)) {
  123. $res= new Result();
  124. $res->set_id($data['id']);
  125. $res->set_user_id($data['user_id']);
  126. $res->set_evaluation_id($data['evaluation_id']);
  127. $res->set_date(api_get_local_time($data['created_at']));
  128. $res->set_score($data['score']);
  129. $allres[]=$res;
  130. }
  131. return $allres;
  132. }
  133. /**
  134. * Insert this result into the database
  135. */
  136. public function add() {
  137. if (isset($this->user_id) && isset($this->evaluation) ) {
  138. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  139. $sql = "INSERT INTO ".$tbl_grade_results
  140. ." (user_id, evaluation_id,
  141. created_at";
  142. if (isset($this->score)) {
  143. $sql .= ",score";
  144. }
  145. $sql .= ") VALUES
  146. (".(int)$this->get_user_id().", ".(int)$this->get_evaluation_id()
  147. .", '".$this->get_date()."' ";
  148. if (isset($this->score)) {
  149. $sql .= ", ".$this->get_score();
  150. }
  151. $sql .= ")";
  152. Database::query($sql);
  153. } else {
  154. die('Error in Result add: required field empty');
  155. }
  156. }
  157. /**
  158. * Group insertion assuming all data is correct
  159. */
  160. public function group_add($list) {
  161. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  162. $sql = "INSERT INTO $tbl_grade_results (user_id, evaluation_id, created_at, score) VALUES ";
  163. foreach ($list as $row) {
  164. $sql.= "(".intval($row['user_id']).",".$row['evaluation_id'].",'".$row['created_at']."','".$row['score']."'),";
  165. }
  166. $sql = substr($sql,0,-1);
  167. $res = Database::query($sql);
  168. }
  169. /**
  170. * insert log result
  171. */
  172. public function add_result__log($userid,$evaluationid){
  173. if (isset($userid) && isset($evaluationid) ) {
  174. $tbl_grade_results_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT_LOG);
  175. $result=new Result();
  176. $arr_result=$result->load (null, $userid, $evaluationid);
  177. $arr=get_object_vars($arr_result[0]);
  178. $sql = 'INSERT INTO '.$tbl_grade_results_log
  179. .' (id_result,user_id, evaluation_id,created_at';
  180. if (isset($arr['score'])) {
  181. $sql .= ',score';
  182. }
  183. $sql .= ') VALUES
  184. ('.(int)$arr['id'].','.(int)$arr['user_id'].', '.(int)$arr['evaluation']
  185. .", '".api_get_utc_datetime()."'";
  186. if (isset($arr['score'])) {
  187. $sql .= ', '.$arr['score'];
  188. }
  189. $sql .= ')';
  190. Database::query($sql);
  191. } else {
  192. die('Error in Result add: required field empty');
  193. }
  194. }
  195. /**
  196. * Update the properties of this result in the database
  197. */
  198. public function save() {
  199. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  200. $sql = 'UPDATE '.$tbl_grade_results.'
  201. SET user_id = '.$this->get_user_id()
  202. .', evaluation_id = '.$this->get_evaluation_id()
  203. .', score = ';
  204. if (isset($this->score)) {
  205. $sql .= $this->get_score();
  206. } else {
  207. $sql .= 'null';
  208. }
  209. $sql .= ' WHERE id = '.$this->id;
  210. // no need to update creation date
  211. Database::query($sql);
  212. }
  213. /**
  214. * Delete this result from the database
  215. */
  216. public function delete() {
  217. $tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  218. $sql = 'DELETE FROM '.$tbl_grade_results.' WHERE id = '.$this->id;
  219. Database::query($sql);
  220. }
  221. }