/include/classes/DAO/GuidelineSubgroupsDAO.class.php

https://github.com/atutor/AChecker · PHP · 308 lines · 162 code · 45 blank · 101 comment · 13 complexity · bc96c3b34c8708f7251b22fd793d97da MD5 · raw file

  1. <?php
  2. /************************************************************************/
  3. /* AChecker */
  4. /************************************************************************/
  5. /* Copyright (c) 2008 - 2011 */
  6. /* Inclusive Design Institute */
  7. /* */
  8. /* This program is free software. You can redistribute it and/or */
  9. /* modify it under the terms of the GNU General Public License */
  10. /* as published by the Free Software Foundation. */
  11. /************************************************************************/
  12. // $Id$
  13. /**
  14. * DAO for "guideline_subgroups" table
  15. * @access public
  16. * @author Cindy Qi Li
  17. * @package DAO
  18. */
  19. if (!defined('AC_INCLUDE_PATH')) exit;
  20. require_once(AC_INCLUDE_PATH. 'classes/DAO/DAO.class.php');
  21. require_once(AC_INCLUDE_PATH. 'classes/Utility.class.php');
  22. class GuidelineSubgroupsDAO extends DAO {
  23. /**
  24. * Create a new guideline subgroup
  25. * @access public
  26. * @param $groupID : guideline group id
  27. * $name
  28. * $abbr
  29. * @return subgroup_id : if successful
  30. * false : if not successful
  31. * @author Cindy Qi Li
  32. */
  33. public function Create($groupID, $name, $abbr)
  34. {
  35. global $addslashes;
  36. $groupID = intval($groupID);
  37. $name = trim($name); // $addslashes is not necessary as it's called in LanguageTxetDAO->Create()
  38. $abbr = $addslashes(trim($abbr));
  39. $sql = "INSERT INTO ".TABLE_PREFIX."guideline_subgroups
  40. (`group_id`, `abbr`)
  41. VALUES
  42. (".$groupID.", '".$abbr."')";
  43. if (!$this->execute($sql))
  44. {
  45. $msg->addError('DB_NOT_UPDATED');
  46. return false;
  47. }
  48. else
  49. {
  50. $subgroup_id = mysql_insert_id();
  51. if ($name <> '')
  52. {
  53. $term = LANG_PREFIX_GUIDELINE_SUBGROUPS_NAME.$subgroup_id;
  54. require_once(AC_INCLUDE_PATH.'classes/DAO/LanguageTextDAO.class.php');
  55. $langTextDAO = new LanguageTextDAO();
  56. if ($langTextDAO->Create($_SESSION['lang'], '_guideline',$term,$name,''))
  57. {
  58. $sql = "UPDATE ".TABLE_PREFIX."guideline_subgroups
  59. SET name='".$term."' WHERE subgroup_id=".$subgroup_id;
  60. $this->execute($sql);
  61. }
  62. }
  63. return $subgroup_id;
  64. }
  65. }
  66. /**
  67. * Update an existing guideline subgroup
  68. * @access public
  69. * @param $subgroupID : subgroup id
  70. * $name
  71. * $abbr
  72. * @return true : if successful
  73. * false : if not successful
  74. * @author Cindy Qi Li
  75. */
  76. public function Update($subgroupID, $name, $abbr)
  77. {
  78. global $addslashes;
  79. $subgroupID = intval($subgroupID);
  80. $name = trim($name); // $addslashes is not necessary as it's called in LanguageTxetDAO->updateLang()
  81. $abbr = $addslashes(trim($abbr));
  82. $sql = "UPDATE ".TABLE_PREFIX."guideline_subgroups
  83. SET abbr='".$abbr."'
  84. WHERE subgroup_id = ".$subgroupID;
  85. if (!$this->execute($sql))
  86. {
  87. $msg->addError('DB_NOT_UPDATED');
  88. return false;
  89. }
  90. else
  91. {
  92. if ($name <> '')
  93. {
  94. $term = LANG_PREFIX_GUIDELINE_SUBGROUPS_NAME.$subgroupID;
  95. $this->updateLang($subgroupID, $term, $name, 'name');
  96. }
  97. }
  98. }
  99. /**
  100. * Delete all entries of given subgroup ID
  101. * @access public
  102. * @param $subgroupID : subgroup id
  103. * @return true : if successful
  104. * false : if not successful
  105. * @author Cindy Qi Li
  106. */
  107. public function Delete($subgroupID)
  108. {
  109. require_once(AC_INCLUDE_PATH.'classes/DAO/SubgroupChecksDAO.class.php');
  110. $subgroupID = intval($subgroupID);
  111. // Delete all checks in this subgroup
  112. $subgroupChecksDAO = new SubgroupChecksDAO();
  113. if ($subgroupChecksDAO->DeleteBySubgroupID($subgroupID))
  114. {
  115. // delete language for subgroup name
  116. $sql = "DELETE FROM ".TABLE_PREFIX."language_text
  117. WHERE variable='_guideline'
  118. AND term=(SELECT name
  119. FROM ".TABLE_PREFIX."guideline_subgroups
  120. WHERE subgroup_id=".$subgroupID.")";
  121. $this->execute($sql);
  122. // delete guideline_subgroups
  123. $sql = "DELETE FROM ".TABLE_PREFIX."guideline_subgroups WHERE subgroup_id=".$subgroupID;
  124. return $this->execute($sql);
  125. }
  126. else
  127. return false;
  128. }
  129. /**
  130. * Add checks into guideline subgroup
  131. * @access public
  132. * @param $groupID : subgroup id
  133. * $cids : array of check ids to be added into group
  134. * @return true : if successful
  135. * false : if unsuccessful
  136. * @author Cindy Qi Li
  137. */
  138. public function addChecks($subgroupID, $cids)
  139. {
  140. global $msg;
  141. require_once(AC_INCLUDE_PATH.'classes/DAO/SubgroupChecksDAO.class.php');
  142. $subgroupID = intval($subgroupID);
  143. if ($subgroupID == 0)
  144. {
  145. $msg->addError('MISSING_GID');
  146. return false;
  147. }
  148. $subgroupChecksDAO = new SubgroupChecksDAO();
  149. if (is_array($cids))
  150. {
  151. foreach ($cids as $cid) {
  152. $cid = intval($cid);
  153. if ($cid > 0){
  154. $subgroupChecksDAO->Create($subgroupID, $cid);
  155. }
  156. }
  157. }
  158. return true;
  159. }
  160. /**
  161. * Return subgroup info of the given group id
  162. * @access public
  163. * @param $subgroupID : subgroup id
  164. * @return table row: if success
  165. * false : if fail
  166. * @author Cindy Qi Li
  167. */
  168. public function getSubgroupByID($subgroupID)
  169. {
  170. $subgroupID = intval($subgroupID);
  171. $sql = "SELECT * FROM ".TABLE_PREFIX."guideline_subgroups
  172. WHERE subgroup_id = ".$subgroupID;
  173. $rows = $this->execute($sql);
  174. return $rows[0];
  175. }
  176. /**
  177. * Return subgroup info of the given check id and guideline id
  178. * @access public
  179. * @param $checkID : check id
  180. * $guidelineID: guideline id
  181. * @return table row: if success
  182. * false : if fail
  183. * @author Cindy Qi Li
  184. */
  185. public function getSubgroupByCheckIDAndGuidelineID($checkID, $guidelineID)
  186. {
  187. $checkID = intval($checkID);
  188. $guidelineID = intval($guidelineID);
  189. $sql = "SELECT * FROM ".TABLE_PREFIX."guideline_subgroups
  190. WHERE subgroup_id in (SELECT subgroup_id
  191. FROM ".TABLE_PREFIX."subgroup_checks
  192. WHERE check_id=".$checkID.")
  193. AND group_id in (SELECT group_id
  194. FROM ".TABLE_PREFIX."guideline_groups gg
  195. WHERE gg.guideline_id = ".$guidelineID.")";
  196. return $this->execute($sql);
  197. }
  198. /**
  199. * Return array of subgroups info whose name is NOT null, and belong to the given group id
  200. * @access public
  201. * @param $groupID : group id
  202. * @return subgroup id rows : array of subgroup ids, if successful
  203. * false : if not successful
  204. * @author Cindy Qi Li
  205. */
  206. public function getNamedSubgroupByGroupID($groupID)
  207. {
  208. $groupID = intval($groupID);
  209. $sql = "SELECT * FROM ".TABLE_PREFIX."guideline_subgroups gs, ".TABLE_PREFIX."language_text l
  210. WHERE gs.group_id = ".$groupID."
  211. AND gs.name is not NULL
  212. AND gs.name = l.term
  213. AND l.language_code = '".$_SESSION['lang']."'
  214. ORDER BY l.text";
  215. return Utility::sortArrayByNumInField($this->execute($sql), 'text');
  216. }
  217. /**
  218. * Return array of subgroups info whose name is null, and belong to the given group id
  219. * @access public
  220. * @param $groupID : group id
  221. * @return subgroup id rows : array of subgroup ids, if successful
  222. * false : if not successful
  223. * @author Cindy Qi Li
  224. */
  225. public function getUnnamedSubgroupByGroupID($groupID)
  226. {
  227. $groupID = intval($groupID);
  228. $sql = "SELECT * FROM ".TABLE_PREFIX."guideline_subgroups
  229. WHERE group_id = ".$groupID."
  230. AND name is NULL";
  231. return $this->execute($sql);
  232. }
  233. /**
  234. * insert/update guideline subgroup term into language_text and update according record in table "guideline_subgroups"
  235. * @access private
  236. * @param $subgroupID
  237. * $term : term to create/update into 'language_text' table
  238. * $text : text to create/update into 'language_text' table
  239. * $fieldName : field name in table 'guideline_groups' to update
  240. * @return true if update successfully
  241. * false if update unsuccessful
  242. * @author Cindy Qi Li
  243. */
  244. private function updateLang($subgroupID, $term, $text, $fieldName)
  245. {
  246. global $addslashes;
  247. require_once(AC_INCLUDE_PATH.'classes/DAO/LanguageTextDAO.class.php');
  248. $langTextDAO = new LanguageTextDAO();
  249. $langs = $langTextDAO->getByTermAndLang($term, $_SESSION['lang']);
  250. if (is_array($langs))
  251. {// term already exists. Only need to update modified text
  252. if ($langs[0]['text'] <> $addslashes($text)) $langTextDAO->setText($_SESSION['lang'], '_guideline',$term,$text);
  253. }
  254. else
  255. {
  256. $langTextDAO->Create($_SESSION['lang'], '_guideline',$term,$text,'');
  257. $sql = "UPDATE ".TABLE_PREFIX."guideline_subgroups SET ".$fieldName."='".$term."' WHERE subgroup_id=".$subgroupID;
  258. $this->execute($sql);
  259. }
  260. return true;
  261. }
  262. }
  263. ?>