/classes/resources/LessonPlanLesson.php

https://github.com/VivekVish/Veda-Project-API · PHP · 316 lines · 229 code · 66 blank · 21 comment · 9 complexity · 6887cf1a61703fbb286f211f4536cb4d MD5 · raw file

  1. <?php
  2. require_once("classes/resources/Material.php");
  3. require_once("classes/resources/LessonAddition.php");
  4. class LessonPlanLesson
  5. {
  6. protected $id = null;
  7. protected $lessonId = null;
  8. protected $lessonPath = null;
  9. protected $lessonPlanSectionId = null;
  10. protected $order = null;
  11. protected $content = null;
  12. protected $json = null;
  13. protected $name = null;
  14. protected $addition = null;
  15. protected $additionJSON = null;
  16. protected $customAddition = null;
  17. ########################################################
  18. #### Constructor and main function #####################
  19. ########################################################
  20. # Constructor
  21. public function __construct()
  22. {
  23. }
  24. ########################################################
  25. #### Helper functions for loading object ###############
  26. ########################################################
  27. # Load from path
  28. public function loadFromUri($uri)
  29. {
  30. $uriArr = explode("/",trim($uri,"/"));
  31. $query = sprintf("SELECT lesson_plan_lesson.id FROM lesson_plan_lesson LEFT JOIN lesson_plan_section ON lesson_plan_section.id=lesson_plan_lesson.section_id LEFT JOIN lesson_plan ON lesson_plan.id=lesson_plan_section.lesson_plan_id LEFT JOIN lesson ON lesson_plan_lesson.lesson_id=lesson.id WHERE lesson_plan_id=%s AND lesson_plan_section.name='%s' AND lesson.name='%s'",pg_escape_string($uriArr[2]),pg_escape_string($uriArr[3]),pg_escape_string($uriArr[4]));
  32. $result = $GLOBALS['transaction']->query($query,142);
  33. $this->loadFromId($result[0]['id']);
  34. return true;
  35. }
  36. # Load from Id
  37. public function loadFromId($id)
  38. {
  39. $query = sprintf("SELECT * FROM lesson_plan_lesson WHERE id=%s",pg_escape_string($id));
  40. $result = $GLOBALS['transaction']->query($query,142);
  41. $this->id=$id;
  42. $this->lessonPlanSectionId=$result[0]['section_id'];
  43. $this->order=$result[0]['lesson_order'];
  44. $this->lessonId=$result[0]['lesson_id'];
  45. $query = sprintf("SELECT * FROM lesson WHERE id=%s",pg_escape_string($this->lessonId));
  46. $result = $GLOBALS['transaction']->query($query,142);
  47. $this->content = $result[0]["content"];
  48. $this->name = $result[0]["name"];
  49. return true;
  50. }
  51. # Load from payload
  52. public function loadFromPayload($payload,$uri)
  53. {
  54. $uriArr = explode("/",trim($uri,"/"));
  55. $this->lessonId = Material::URIToId($payload->path,"lesson");
  56. $this->order = $payload->order;
  57. $query = sprintf("SELECT id from lesson_plan_section WHERE lesson_plan_id=%s and name='%s'", pg_escape_string($uriArr[2]),pg_escape_string($uriArr[3]));
  58. $result = $GLOBALS['transaction']->query($query,140);
  59. $this->lessonPlanSectionId = $result[0]['id'];
  60. return true;
  61. }
  62. # Build JSON
  63. public function buildJSON()
  64. {
  65. $jsonArray =array("id"=>$this->id,"content"=>$this->content,"name"=>$this->name);
  66. $this->json = json_encode($jsonArray);
  67. return true;
  68. }
  69. # Load addition
  70. public function loadAddition($additionType)
  71. {
  72. $this->addition = new LessonAddition($additionType);
  73. $query = sprintf("SELECT id FROM lesson_additions WHERE name='%s' and lesson_id=%s",$additionType,$this->lessonId);
  74. $result = $GLOBALS['transaction']->query($query,142);
  75. $this->addition->loadFromId($result[0]['id']);
  76. $query = sprintf("SELECT custom_content FROM lesson_plan_custom_addition WHERE lesson_addition_id=%s AND lesson_plan_lesson_id=%s",pg_escape_string($result[0]['id']), pg_escape_string($this->id));
  77. $result = $GLOBALS['transaction']->query($query);
  78. if($result!=="none")
  79. {
  80. $this->customAddition = json_decode($result[0]['custom_content']);
  81. }
  82. return true;
  83. }
  84. # Load custom addion by payload
  85. public function loadCustomAdditionByPayload($payload)
  86. {
  87. $this->customAddition = $payload;
  88. return true;
  89. }
  90. # Load addition JSON
  91. public function buildAdditionJSON()
  92. {
  93. $this->addition->buildJSON();
  94. $jsonArray = json_decode($this->addition->getJSON());
  95. if(!is_null($this->customAddition))
  96. {
  97. $jsonArray = (object)array_merge((array)$jsonArray,(array)$this->customAddition);
  98. }
  99. $this->additionJSON = json_encode($jsonArray);
  100. }
  101. ########################################################
  102. #### Database interface functions ######################
  103. ########################################################
  104. # Saves Lesson
  105. public function save()
  106. {
  107. $query = sprintf("INSERT INTO lesson_plan_lesson (lesson_id, section_id, lesson_order) VALUES (%s, %s, %s)", pg_escape_string($this->lessonId), pg_escape_string($this->lessonPlanSectionId), pg_escape_string($this->order));
  108. $GLOBALS['transaction']->query($query,139);
  109. $query = sprintf("SELECT id FROM lesson_plan_lesson WHERE lesson_id=%s AND section_id=%s AND lesson_order=%s",pg_escape_string($this->lessonId), pg_escape_string($this->lessonPlanSectionId), pg_escape_string($this->order));
  110. $result = $GLOBALS['transaction']->query($query,139);
  111. $this->id = $result[0]['id'];
  112. $query = sprintf("SELECT name FROM lesson_additions WHERE lesson_id=%s",pg_escape_string($this->lessonId));
  113. $result = $GLOBALS['transaction']->query($query);
  114. $query = sprintf("INSERT INTO lesson_plan_lesson_addition (lesson_plan_lesson_id,addition_type) VALUES (%s,'%s')",pg_escape_string($this->id),pg_escape_string("quiz"));
  115. $GLOBALS['transaction']->query($query,139);
  116. if($result!=="none")
  117. {
  118. foreach($result as $row)
  119. {
  120. $query = sprintf("INSERT INTO lesson_plan_lesson_addition (lesson_plan_lesson_id,addition_type) VALUES (%s,'%s')",pg_escape_string($this->id),pg_escape_string($row['name']));
  121. $GLOBALS['transaction']->query($query,139);
  122. }
  123. }
  124. return true;
  125. }
  126. public function saveCustomAddition()
  127. {
  128. $query = sprintf("SELECT * from lesson_plan_custom_addition WHERE lesson_addition_id=%s AND lesson_plan_lesson_id=%s",pg_escape_string($this->addition->getId()),pg_escape_string($this->id));
  129. $result = $GLOBALS['transaction']->query($query);
  130. if($result==="none")
  131. {
  132. $query = sprintf("INSERT INTO lesson_plan_custom_addition (lesson_addition_id,lesson_plan_lesson_id,custom_content) VALUES (%s, %s, '%s')", pg_escape_string($this->addition->getId()),pg_escape_string($this->id),pg_escape_string(json_encode($this->customAddition)));
  133. $GLOBALS['transaction']->query($query,147);
  134. }
  135. else
  136. {
  137. $query = sprintf("UPDATE lesson_plan_custom_addition SET custom_content='%s' WHERE lesson_addition_id=%s AND lesson_plan_lesson_id=%s",pg_escape_string(json_encode($this->customAddition)),pg_escape_string($this->addition->getId()),pg_escape_string($this->id));
  138. $result = $GLOBALS['transaction']->query($query,147);
  139. }
  140. return true;
  141. }
  142. public function setPosition($newPath,$newOrder,$oldPath)
  143. {
  144. $newPathArray = explode("/",trim($newPath,"/"));
  145. $oldPathArray = explode("/",trim($oldPath,"/"));
  146. $newLessonPlanId = $newPathArray[2];
  147. $oldLessonPlanId = $oldPathArray[2];
  148. $query = sprintf("SELECT id FROM lesson_plan_section WHERE lesson_plan_id=%s AND name='%s'",pg_escape_string($newLessonPlanId),pg_escape_string($newPathArray[3]));
  149. $result = $GLOBALS['transaction']->query($query);
  150. $newSectionId = $result[0]['id'];
  151. $query = sprintf("SELECT id FROM lesson_plan_section WHERE lesson_plan_id=%s AND name='%s'",pg_escape_string($oldLessonPlanId),pg_escape_string($oldPathArray[3]));
  152. $result = $GLOBALS['transaction']->query($query);
  153. $oldSectionId = $result[0]['id'];
  154. $query = sprintf("SELECT lesson_plan_lesson.id FROM lesson_plan_lesson LEFT JOIN lesson ON lesson_id=lesson.id WHERE lesson_plan_lesson.section_id=%s AND lesson.name='%s' AND lesson_plan_lesson.id!=%s", pg_escape_string($newSectionId), pg_escape_string($oldPathArray[4]), pg_escape_string($this->id));
  155. $result = $GLOBALS['transaction']->query($query);
  156. if($result!='none')
  157. {
  158. Error::generateError(100,"Old Path: $oldPath. New Path: $newPath");
  159. }
  160. if(strcmp($newPath,$oldPath)==0)
  161. {
  162. if($this->order>$newOrder)
  163. {
  164. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = lesson_order+1 WHERE lesson_order<%s AND lesson_order>=%s AND section_id='%s'",
  165. pg_escape_string($this->order),
  166. pg_escape_string($newOrder),
  167. pg_escape_string($newSectionId));
  168. }
  169. else
  170. {
  171. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = lesson_order-1 WHERE lesson_order>%s AND lesson_order<=%s AND section_id='%s'",
  172. pg_escape_string($this->order),
  173. pg_escape_string($newOrder),
  174. pg_escape_string($newSectionId));
  175. }
  176. $GLOBALS['transaction']->query($query,143);
  177. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = %s WHERE id='%s'",
  178. pg_escape_string($newOrder),
  179. pg_escape_string($this->id));
  180. $GLOBALS['transaction']->query($query,143);
  181. }
  182. else
  183. {
  184. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = lesson_order-1 WHERE lesson_order>%s AND section_id='%s'",
  185. pg_escape_string($this->order),
  186. pg_escape_string($oldSectionId));
  187. $GLOBALS['transaction']->query($query,143);
  188. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = lesson_order+1 WHERE lesson_order>=%s AND section_id='%s'",
  189. pg_escape_string($newOrder),
  190. pg_escape_string($newSectionId));
  191. $GLOBALS['transaction']->query($query,143);
  192. $query = sprintf("UPDATE lesson_plan_lesson SET lesson_order = %s, section_id= %s WHERE id='%s'",
  193. pg_escape_string($newOrder),
  194. pg_escape_string($newSectionId),
  195. pg_escape_string($this->id));
  196. $GLOBALS['transaction']->query($query,143);
  197. }
  198. return true;
  199. }
  200. public function delete()
  201. {
  202. $query = sprintf("DELETE FROM lesson_plan_custom_addition WHERE lesson_plan_lesson_id=%s",pg_escape_string($this->id));
  203. $GLOBALS['transaction']->query($query,144);
  204. $query = sprintf("DELETE FROM lesson_plan_lesson_addition WHERE lesson_plan_lesson_id=%s",pg_escape_string($this->id));
  205. $GLOBALS['transaction']->query($query,144);
  206. $query = sprintf("DELETE FROM lesson_plan_lesson WHERE id=%s",pg_escape_string($this->id));
  207. $GLOBALS['transaction']->query($query,144);
  208. return true;
  209. }
  210. public function addAddition($type)
  211. {
  212. $query = sprintf("SELECT * FROM lesson_plan_lesson_addition WHERE lesson_plan_lesson_id=%s AND addition_type='%s'",pg_escape_string($this->id),pg_escape_string($type));
  213. $result = $GLOBALS['transaction']->query($query);
  214. if($result=="none")
  215. {
  216. $query = sprintf("INSERT INTO lesson_plan_lesson_addition (lesson_plan_lesson_id,addition_type) VALUES (%s,'%s')",pg_escape_string($this->id),pg_escape_string($type));
  217. $GLOBALS['transaction']->query($query,153);
  218. }
  219. return true;
  220. }
  221. public function dropAddition($additionType)
  222. {
  223. if($additionType!="quiz")
  224. {
  225. $query = sprintf("SELECT id FROM lesson_additions WHERE lesson_id=%s AND name='%s'",pg_escape_string($this->lessonId),pg_escape_string($additionType));
  226. $result = $GLOBALS['transaction']->query($query,145);
  227. $query = sprintf("DELETE FROM lesson_plan_custom_addition WHERE lesson_plan_lesson_id=%s and lesson_addition_id=%s",pg_escape_string($this->id),pg_escape_string($result[0]['id']));
  228. $result = $GLOBALS['transaction']->query($query,145);
  229. }
  230. $query = sprintf("DELETE FROM lesson_plan_lesson_addition WHERE lesson_plan_lesson_id=%s AND addition_type='%s'",pg_escape_string($this->id),pg_escape_string($additionType));
  231. $GLOBALS['transaction']->query($query,145);
  232. return true;
  233. }
  234. ########################################################
  235. ### Getters and Setters ################################
  236. ########################################################
  237. public function getJSON()
  238. {
  239. return $this->json;
  240. }
  241. public function getAdditionJSON()
  242. {
  243. return $this->additionJSON;
  244. }
  245. public function getLessonId()
  246. {
  247. return $this->lessonId;
  248. }
  249. }
  250. ?>