PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/pkp/classes/reviewForm/ReviewFormResponseDAO.inc.php

https://github.com/lib-uoguelph-ca/ocs
PHP | 246 lines | 139 code | 39 blank | 68 comment | 11 complexity | 8fa2adc7d3eaf69cde4ddac0d409b258 MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. /**
  3. * @file classes/reviewForm/ReviewFormResponseDAO.inc.php
  4. *
  5. * Copyright (c) 2000-2012 John Willinsky
  6. * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
  7. *
  8. * @class ReviewFormResponseDAO
  9. * @ingroup reviewForm
  10. * @see ReviewFormResponse
  11. *
  12. * @brief Operations for retrieving and modifying ReviewFormResponse objects.
  13. *
  14. */
  15. import ('reviewForm.ReviewFormResponse');
  16. class ReviewFormResponseDAO extends DAO {
  17. /**
  18. * Constructor.
  19. */
  20. function ReviewFormResponseDAO() {
  21. parent::DAO();
  22. }
  23. /**
  24. * Retrieve a review form response.
  25. * @param $reviewId int
  26. * @param $reviewFormElementId int
  27. * @return ReviewFormResponse
  28. */
  29. function &getReviewFormResponse($reviewId, $reviewFormElementId) {
  30. $sql = 'SELECT * FROM review_form_responses WHERE review_id = ? AND review_form_element_id = ?';
  31. $params = array($reviewId, $reviewFormElementId);
  32. $result =& $this->retrieve($sql, $params);
  33. $returner = null;
  34. if ($result->RecordCount() != 0) {
  35. $returner =& $this->_returnReviewFormResponseFromRow($result->GetRowAssoc(false));
  36. }
  37. $result->Close();
  38. unset($result);
  39. return $returner;
  40. }
  41. /**
  42. * Construct a new data object corresponding to this DAO.
  43. * @return ReviewFormResponse
  44. */
  45. function newDataObject() {
  46. return new ReviewFormResponse();
  47. }
  48. /**
  49. * Internal function to return a ReviewFormResponse object from a row.
  50. * @param $row array
  51. * @return ReviewFormResponse
  52. */
  53. function &_returnReviewFormResponseFromRow(&$row) {
  54. $responseValue = $this->convertFromDB($row['response_value'], $row['response_type']);
  55. $reviewFormResponse = $this->newDataObject();
  56. $reviewFormResponse->setReviewId($row['review_id']);
  57. $reviewFormResponse->setReviewFormElementId($row['review_form_element_id']);
  58. $reviewFormResponse->setValue($responseValue);
  59. $reviewFormResponse->setResponseType($row['response_type']);
  60. HookRegistry::call('ReviewFormResponseDAO::_returnReviewFormResponseFromRow', array(&$reviewFormResponse, &$row));
  61. return $reviewFormResponse;
  62. }
  63. /**
  64. * Insert a new review form response.
  65. * @param $reviewFormResponse ReviewFormResponse
  66. */
  67. function insertObject(&$reviewFormResponse) {
  68. $responseValue = $this->convertToDB($reviewFormResponse->getValue(), $reviewFormResponse->getResponseType());
  69. $this->update(
  70. 'INSERT INTO review_form_responses
  71. (review_form_element_id, review_id, response_type, response_value)
  72. VALUES
  73. (?, ?, ?, ?)',
  74. array(
  75. $reviewFormResponse->getReviewFormElementId(),
  76. $reviewFormResponse->getReviewId(),
  77. $reviewFormResponse->getResponseType(),
  78. $responseValue
  79. )
  80. );
  81. }
  82. /**
  83. * Update an existing review form response.
  84. * @param $reviewFormResponse ReviewFormResponse
  85. */
  86. function updateObject(&$reviewFormResponse) {
  87. $responseValue = $this->convertToDB($reviewFormResponse->getValue(), $reviewFormResponse->getResponseType());
  88. $returner = $this->update(
  89. 'UPDATE review_form_responses
  90. SET
  91. response_type = ?,
  92. response_value = ?
  93. WHERE review_form_element_id = ? AND review_id = ?',
  94. array(
  95. $reviewFormResponse->getResponseType(),
  96. $responseValue,
  97. $reviewFormResponse->getReviewFormElementId(),
  98. $reviewFormResponse->getReviewId()
  99. )
  100. );
  101. return $returner;
  102. }
  103. /**
  104. * Delete a review form response.
  105. * @param $reviewFormResponse ReviewFormResponse
  106. */
  107. function deleteObject(&$reviewFormResponse) {
  108. return $this->deleteById($reviewFormResponse->getReviewId(), $reviewFormResponse->getReviewFormElementId());
  109. }
  110. /**
  111. * Delete a review form response by ID.
  112. * @param $reviewId int
  113. * @param $reviewFormElementId int
  114. */
  115. function deleteById($reviewId, $reviewFormElementId) {
  116. return $this->update(
  117. 'DELETE FROM review_form_responses WHERE review_id = ? AND review_form_element_id = ?',
  118. array($reviewId, $reviewFormElementId)
  119. );
  120. }
  121. /**
  122. * Delete review form responses by review ID
  123. * @param $reviewId int
  124. */
  125. function deleteByReviewId($reviewId) {
  126. return $this->update(
  127. 'DELETE FROM review_form_responses WHERE review_id = ?',
  128. $reviewId
  129. );
  130. }
  131. /**
  132. * Delete group membership by user ID
  133. * @param $reviewFormElementId int
  134. */
  135. function deleteByReviewFormElementId($reviewFormElementId) {
  136. return $this->update(
  137. 'DELETE FROM review_form_responses WHERE review_form_element_id = ?',
  138. $reviewFormElementId
  139. );
  140. }
  141. /**
  142. * Retrieve all review form responses for a review in an associative array.
  143. * @param $reviewId int
  144. * @return array review_form_element_id => array(review form response for this element)
  145. */
  146. function &getReviewReviewFormResponseValues($reviewId) {
  147. $returner = array();
  148. $result =& $this->retrieveRange(
  149. 'SELECT * FROM review_form_responses WHERE review_id = ?',
  150. $reviewId
  151. );
  152. while (!$result->EOF) {
  153. $row = $result->GetRowAssoc(false);
  154. $reviewFormResponse =& $this->_returnReviewFormResponseFromRow($row);
  155. $returner[$reviewFormResponse->getReviewFormElementId()] = $reviewFormResponse->getValue();
  156. $result->moveNext();
  157. }
  158. $result->Close();
  159. unset($result);
  160. return $returner;
  161. }
  162. /**
  163. * Check if a review form response for the review.
  164. * @param $reviewId int
  165. * @param $reviewFormElementId int optional
  166. * @return boolean
  167. */
  168. function reviewFormResponseExists($reviewId, $reviewFormElementId = null) {
  169. $sql = 'SELECT COUNT(*) FROM review_form_responses WHERE review_id = ?';
  170. $params = array($reviewId);
  171. if ($reviewFormElementId !== null) {
  172. $sql .= ' AND review_form_element_id = ?';
  173. $params[] = $reviewFormElementId;
  174. }
  175. $result =& $this->retrieve($sql, $params);
  176. $returner = isset($result->fields[0]) && $result->fields[0] > 0 ? true : false;
  177. $result->Close();
  178. unset($result);
  179. return $returner;
  180. }
  181. /** DEPRECATED **/
  182. function insertReviewFormResponse(&$reviewFormResponse) {
  183. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  184. $this->insertObject($reviewFormResponse);
  185. }
  186. function updateReviewFormResponse(&$reviewFormResponse) {
  187. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  188. $this->updateObject($reviewFormResponse);
  189. }
  190. function deleteReviewFormResponse(&$reviewFormResponse) {
  191. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  192. $this->deleteObject($reviewFormResponse);
  193. }
  194. function deleteReviewFormResponseById($reviewId, $reviewFormElementId) {
  195. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  196. return $this->deleteById($reviewId, $reviewFormElementId);
  197. }
  198. function deleteReviewFormResponseByReviewId($reviewId) {
  199. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  200. return $this->deleteByReviewId($reviewId);
  201. }
  202. function deleteReviewFormResponseByReviewFormElementId($reviewFormElementId) {
  203. if (Config::getVar('debug', 'deprecation_warnings')) trigger_error('Deprecated function.');
  204. return $this->deleteByReviewFormElementId($reviewFormElementId);
  205. }
  206. }
  207. ?>