00001 <?php
00002
00017 import ('reviewForm.ReviewFormElement');
00018
00019 class ReviewFormElementDAO extends DAO {
00025 function &getReviewFormElement($reviewFormElementId) {
00026 $result =& $this->retrieve(
00027 'SELECT * FROM review_form_elements WHERE review_form_element_id = ?', $reviewFormElementId
00028 );
00029
00030 $returner = null;
00031 if ($result->RecordCount() != 0) {
00032 $returner =& $this->_returnReviewFormElementFromRow($result->GetRowAssoc(false));
00033 }
00034
00035 $result->Close();
00036 unset($result);
00037
00038 return $returner;
00039 }
00040
00046 function &_returnReviewFormElementFromRow(&$row) {
00047 $reviewFormElement =& new ReviewFormElement();
00048 $reviewFormElement->setReviewFormElementId($row['review_form_element_id']);
00049 $reviewFormElement->setReviewFormId($row['review_form_id']);
00050 $reviewFormElement->setSequence($row['seq']);
00051 $reviewFormElement->setElementType($row['element_type']);
00052 $reviewFormElement->setRequired($row['required']);
00053
00054 $this->getDataObjectSettings('review_form_element_settings', 'review_form_element_id', $row['review_form_element_id'], $reviewFormElement);
00055
00056 HookRegistry::call('ReviewFormElementDAO::_returnReviewFormElementFromRow', array(&$reviewFormElement, &$row));
00057
00058 return $reviewFormElement;
00059 }
00060
00065 function getLocaleFieldNames() {
00066 return array('question', 'possibleResponses');
00067 }
00068
00073 function updateLocaleFields(&$reviewFormElement) {
00074 $this->updateDataObjectSettings('review_form_element_settings', $reviewFormElement, array(
00075 'review_form_element_id' => $reviewFormElement->getReviewFormElementId()
00076 ));
00077 }
00078
00083 function insertReviewFormElement(&$reviewFormElement) {
00084 $this->update(
00085 'INSERT INTO review_form_elements
00086 (review_form_id, seq, element_type, required)
00087 VALUES
00088 (?, ?, ?, ?)',
00089 array(
00090 $reviewFormElement->getReviewFormId(),
00091 $reviewFormElement->getSequence() == null ? 0 : $reviewFormElement->getSequence(),
00092 $reviewFormElement->getElementType(),
00093 $reviewFormElement->getRequired() ? 1 : 0
00094 )
00095 );
00096
00097 $reviewFormElement->setReviewFormElementId($this->getInsertReviewFormElementId());
00098 $this->updateLocaleFields($reviewFormElement);
00099 return $reviewFormElement->getReviewFormElementId();
00100 }
00101
00106 function updateReviewFormElement(&$reviewFormElement) {
00107 $returner = $this->update(
00108 'UPDATE review_form_elements
00109 SET
00110 review_form_id = ?,
00111 seq = ?,
00112 element_type = ?,
00113 required = ?
00114 WHERE review_form_element_id = ?',
00115 array(
00116 $reviewFormElement->getReviewFormId(),
00117 $reviewFormElement->getSequence(),
00118 $reviewFormElement->getElementType(),
00119 $reviewFormElement->getRequired(),
00120 $reviewFormElement->getReviewFormElementId()
00121 )
00122 );
00123 $this->updateLocaleFields($reviewFormElement);
00124 return $returner;
00125 }
00126
00131 function deleteReviewFormElement(&$reviewFormElement) {
00132 return $this->deleteReviewFormElementById($reviewFormElement->getReviewFormElementId(), $reviewFormElement->getReviewFormId());
00133 }
00134
00139 function deleteReviewFormElementById($reviewFormElementId) {
00140 $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
00141 $reviewFormResponseDao->deleteReviewFormResponseByReviewFormElementId($reviewFormElementId);
00142
00143 $this->update('DELETE FROM review_form_element_settings WHERE review_form_element_id = ?', array($reviewFormElementId));
00144 return $this->update('DELETE FROM review_form_elements WHERE review_form_element_id = ?', array($reviewFormElementId));
00145 }
00146
00152 function deleteReviewFormElementsByReviewForm($reviewFormId) {
00153 $reviewFormElements =& $this->getReviewFormElements($reviewFormId);
00154 foreach ($reviewFormElements as $reviewFormElementId => $reviewFormElement) {
00155 $this->deleteReviewFormElementById($reviewFormElementId);
00156 }
00157 }
00158
00165 function deleteSetting($reviewFormElementId, $name, $locale = null) {
00166 $params = array($reviewFormElementId, $name);
00167 $sql = 'DELETE FROM review_form_element_settings WHERE review_form_element_id = ? AND setting_name = ?';
00168 if ($locale !== null) {
00169 $params[] = $locale;
00170 $sql .= ' AND locale = ?';
00171 }
00172
00173 return $this->update($sql, $params);
00174 }
00175
00181 function &getReviewFormElements($reviewFormId) {
00182 $reviewFormElements = array();
00183
00184 $result =& $this->retrieve(
00185 'SELECT * FROM review_form_elements WHERE review_form_id = ? ORDER BY seq',
00186 $reviewFormId
00187 );
00188
00189 while (!$result->EOF) {
00190 $reviewFormElement =& $this->_returnReviewFormElementFromRow($result->GetRowAssoc(false));
00191 $reviewFormElements[$reviewFormElement->getReviewFormElementId()] = $reviewFormElement;
00192 $result->moveNext();
00193 }
00194
00195 $result->Close();
00196 unset($result);
00197
00198 return $reviewFormElements;
00199 }
00200
00207 function &getReviewFormElementsByReviewForm($reviewFormId, $rangeInfo = null) {
00208 $result =& $this->retrieveRange(
00209 'SELECT * FROM review_form_elements WHERE review_form_id = ? ORDER BY seq',
00210 $reviewFormId, $rangeInfo
00211 );
00212
00213 $returner =& new DAOResultFactory($result, $this, '_returnReviewFormElementFromRow');
00214 return $returner;
00215 }
00216
00222 function getRequiredReviewFormElementIds($reviewFormId) {
00223 $result =& $this->retrieve(
00224 'SELECT review_form_element_id FROM review_form_elements WHERE review_form_id = ? AND required = 1 ORDER BY seq',
00225 $reviewFormId
00226 );
00227
00228 $requiredReviewFormElementIds = array();
00229
00230 while (!$result->EOF) {
00231 $requiredReviewFormElementIds[] = $result->fields[0];
00232 $result->moveNext();
00233 }
00234
00235 $result->Close();
00236 unset($result);
00237
00238 return $requiredReviewFormElementIds;
00239 }
00240
00247 function reviewFormElementExists($reviewFormElementId, $reviewFormId = null) {
00248 $sql = 'SELECT COUNT(*) FROM review_form_elements WHERE review_form_element_id = ?';
00249 $params = array($reviewFormElementId);
00250 if ($reviewFormId !== null) {
00251 $sql .= ' AND review_form_id = ?';
00252 $params[] = $reviewFormId;
00253 }
00254 $result =& $this->retrieve($sql, $params);
00255
00256 $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00257
00258 $result->Close();
00259 unset($result);
00260
00261 return $returner;
00262 }
00263
00268 function resequenceReviewFormElements($reviewFormId) {
00269 $result =& $this->retrieve(
00270 'SELECT review_form_element_id FROM review_form_elements WHERE review_form_id = ? ORDER BY seq', $reviewFormId
00271 );
00272
00273 for ($i=1; !$result->EOF; $i++) {
00274 list($reviewFormElementId) = $result->fields;
00275 $this->update(
00276 'UPDATE review_form_elements SET seq = ? WHERE review_form_element_id = ?',
00277 array(
00278 $i,
00279 $reviewFormElementId
00280 )
00281 );
00282
00283 $result->moveNext();
00284 }
00285
00286 $result->close();
00287 unset($result);
00288 }
00289
00294 function getInsertReviewFormElementId() {
00295 return $this->getInsertId('review_form_elements', 'review_form_element_id');
00296 }
00297 }
00298
00299 ?>