00001 <?php
00002
00017 import ('reviewForm.ReviewFormResponse');
00018
00019 class ReviewFormResponseDAO extends DAO {
00020
00024 function ReviewFormResponseDAO() {
00025 parent::DAO();
00026 }
00027
00034 function &getReviewFormResponse($reviewId, $reviewFormElementId) {
00035 $sql = 'SELECT * FROM review_form_responses WHERE review_id = ? AND review_form_element_id = ?';
00036 $params = array($reviewId, $reviewFormElementId);
00037 $result =& $this->retrieve($sql, $params);
00038
00039 $returner = null;
00040 if ($result->RecordCount() != 0) {
00041 $returner =& $this->_returnReviewFormResponseFromRow($result->GetRowAssoc(false));
00042 }
00043
00044 $result->Close();
00045 unset($result);
00046
00047 return $returner;
00048 }
00049
00055 function &_returnReviewFormResponseFromRow(&$row) {
00056 $responseValue = $this->convertFromDB($row['response_value'], $row['response_type']);
00057 $reviewFormResponse =& new ReviewFormResponse();
00058 $reviewFormResponse->setReviewId($row['review_id']);
00059 $reviewFormResponse->setReviewFormElementId($row['review_form_element_id']);
00060 $reviewFormResponse->setValue($responseValue);
00061 $reviewFormResponse->setResponseType($row['response_type']);
00062
00063 HookRegistry::call('ReviewFormResponseDAO::_returnReviewFormResponseFromRow', array(&$reviewFormResponse, &$row));
00064
00065 return $reviewFormResponse;
00066 }
00067
00072 function insertReviewFormResponse(&$reviewFormResponse) {
00073 $responseValue = $this->convertToDB($reviewFormResponse->getValue(), $reviewFormResponse->getResponseType());
00074 $this->update(
00075 'INSERT INTO review_form_responses
00076 (review_form_element_id, review_id, response_type, response_value)
00077 VALUES
00078 (?, ?, ?, ?)',
00079 array(
00080 $reviewFormResponse->getReviewFormElementId(),
00081 $reviewFormResponse->getReviewId(),
00082 $reviewFormResponse->getResponseType(),
00083 $responseValue
00084 )
00085 );
00086 }
00087
00092 function updateReviewFormResponse(&$reviewFormResponse) {
00093 $responseValue = $this->convertToDB($reviewFormResponse->getValue(), $reviewFormResponse->getResponseType());
00094 $returner = $this->update(
00095 'UPDATE review_form_responses
00096 SET
00097 response_type = ?,
00098 response_value = ?
00099 WHERE review_form_element_id = ? AND review_id = ?',
00100 array(
00101 $reviewFormResponse->getResponseType(),
00102 $responseValue,
00103 $reviewFormResponse->getReviewFormElementId(),
00104 $reviewFormResponse->getReviewId()
00105 )
00106 );
00107
00108 return $returner;
00109 }
00110
00115 function deleteReviewFormResponse(&$reviewFormResponse) {
00116 return $this->deleteReviewFormResponseById($reviewFormResponse->getReviewId(), $reviewFormResponse->getReviewFormElementId());
00117 }
00118
00124 function deleteReviewFormResponseById($reviewId, $reviewFormElementId) {
00125 return $this->update(
00126 'DELETE FROM review_form_responses WHERE review_id = ? AND review_form_element_id = ?',
00127 array($reviewId, $reviewFormElementId)
00128 );
00129 }
00130
00135 function deleteReviewFormResponseByReviewId($reviewId) {
00136 return $this->update(
00137 'DELETE FROM review_form_responses WHERE review_id = ?',
00138 $reviewId
00139 );
00140 }
00141
00146 function deleteReviewFormResponseByReviewFormElementId($reviewFormElementId) {
00147 return $this->update(
00148 'DELETE FROM review_form_responses WHERE review_form_element_id = ?',
00149 $reviewFormElementId
00150 );
00151 }
00152
00158 function &getReviewReviewFormResponseValues($reviewId) {
00159 $returner = array();
00160
00161 $result =& $this->retrieveRange(
00162 'SELECT * FROM review_form_responses WHERE review_id = ?',
00163 $reviewId
00164 );
00165
00166 while (!$result->EOF) {
00167 $row = $result->GetRowAssoc(false);
00168 $reviewFormResponse =& $this->_returnReviewFormResponseFromRow($row);
00169 $returner[$reviewFormResponse->getReviewFormElementId()] = $reviewFormResponse->getValue();
00170 $result->moveNext();
00171 }
00172
00173 $result->Close();
00174 unset($result);
00175
00176 return $returner;
00177 }
00178
00185 function reviewFormResponseExists($reviewId, $reviewFormElementId = null) {
00186 $sql = 'SELECT COUNT(*) FROM review_form_responses WHERE review_id = ?';
00187 $params = array($reviewId);
00188 if ($reviewFormElementId !== null) {
00189 $sql .= ' AND review_form_element_id = ?';
00190 $params[] = $reviewFormElementId;
00191 }
00192 $result =& $this->retrieve($sql, $params);
00193
00194 $returner = isset($result->fields[0]) && $result->fields[0] > 0 ? true : false;
00195
00196 $result->Close();
00197 unset($result);
00198
00199 return $returner;
00200 }
00201 }
00202
00203 ?>