Open Journal Systems  3.3.0
ReviewFormElementDAO.inc.php
1 <?php
2 
18 import ('lib.pkp.classes.reviewForm.ReviewFormElement');
19 
20 class ReviewFormElementDAO extends DAO {
21 
28  function getById($reviewFormElementId, $reviewFormId = null) {
29  $params = array((int) $reviewFormElementId);
30  if ($reviewFormId) {
31  $params[] = (int) $reviewFormId;
32  }
33  $result = $this->retrieve(
34  'SELECT *
35  FROM review_form_elements
36  WHERE review_form_element_id = ?
37  ' . ($reviewFormId?' AND review_form_id = ?':''),
38  $params
39  );
40 
41  $returner = null;
42  if ($result->RecordCount() != 0) {
43  $returner = $this->_fromRow($result->GetRowAssoc(false));
44  }
45 
46  $result->Close();
47  return $returner;
48  }
49 
54  function newDataObject() {
55  return new ReviewFormElement();
56  }
57 
63  function _fromRow($row) {
64  $reviewFormElement = $this->newDataObject();
65  $reviewFormElement->setId($row['review_form_element_id']);
66  $reviewFormElement->setReviewFormId($row['review_form_id']);
67  $reviewFormElement->setSequence($row['seq']);
68  $reviewFormElement->setElementType($row['element_type']);
69  $reviewFormElement->setRequired($row['required']);
70  $reviewFormElement->setIncluded($row['included']);
71 
72  $this->getDataObjectSettings('review_form_element_settings', 'review_form_element_id', $row['review_form_element_id'], $reviewFormElement);
73 
74  HookRegistry::call('ReviewFormElementDAO::_fromRow', array(&$reviewFormElement, &$row));
75 
76  return $reviewFormElement;
77  }
78 
83  function getLocaleFieldNames() {
84  return array('question', 'description', 'possibleResponses');
85  }
86 
91  function updateLocaleFields($reviewFormElement) {
92  $this->updateDataObjectSettings('review_form_element_settings', $reviewFormElement, array(
93  'review_form_element_id' => (int) $reviewFormElement->getId()
94  ));
95  }
96 
102  function insertObject($reviewFormElement) {
103  $this->update(
104  'INSERT INTO review_form_elements
105  (review_form_id, seq, element_type, required, included)
106  VALUES
107  (?, ?, ?, ?, ?)',
108  array(
109  (int) $reviewFormElement->getReviewFormId(),
110  $reviewFormElement->getSequence() == null ? 0 : (float) $reviewFormElement->getSequence(),
111  (int) $reviewFormElement->getElementType(),
112  (int) $reviewFormElement->getRequired(),
113  (int) $reviewFormElement->getIncluded(),
114  )
115  );
116 
117  $reviewFormElement->setId($this->getInsertId());
118  $this->updateLocaleFields($reviewFormElement);
119  return $reviewFormElement->getId();
120  }
121 
126  function updateObject($reviewFormElement) {
127  $returner = $this->update(
128  'UPDATE review_form_elements
129  SET review_form_id = ?,
130  seq = ?,
131  element_type = ?,
132  required = ?,
133  included = ?
134  WHERE review_form_element_id = ?',
135  array(
136  (int) $reviewFormElement->getReviewFormId(),
137  (float) $reviewFormElement->getSequence(),
138  (int) $reviewFormElement->getElementType(),
139  (int) $reviewFormElement->getRequired(),
140  (int) $reviewFormElement->getIncluded(),
141  (int) $reviewFormElement->getId()
142  )
143  );
144  $this->updateLocaleFields($reviewFormElement);
145  return $returner;
146  }
147 
152  function deleteObject($reviewFormElement) {
153  return $this->deleteById($reviewFormElement->getId());
154  }
155 
160  function deleteById($reviewFormElementId) {
161  $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); /* @var $reviewFormResponseDao ReviewFormResponseDAO */
162  $reviewFormResponseDao->deleteByReviewFormElementId($reviewFormElementId);
163 
164  $this->update('DELETE FROM review_form_element_settings WHERE review_form_element_id = ?', (int) $reviewFormElementId);
165  return $this->update('DELETE FROM review_form_elements WHERE review_form_element_id = ?', (int) $reviewFormElementId);
166  }
167 
173  function deleteByReviewFormId($reviewFormId) {
174  $reviewFormElements = $this->getByReviewFormId($reviewFormId);
175  while ($reviewFormElement = $reviewFormElements->next()) {
176  $this->deleteById($reviewFormElement->getId());
177  }
178  }
179 
186  function deleteSetting($reviewFormElementId, $name, $locale = null) {
187  $params = array((int) $reviewFormElementId, $name);
188  if ($locale) $params[] = $locale;
189 
190  $this->update(
191  'DELETE FROM review_form_element_settings
192  WHERE review_form_element_id = ? AND setting_name = ?
193  ' . ($locale?' AND locale = ?':''),
194  $params
195  );
196  }
197 
205  function getByReviewFormId($reviewFormId, $rangeInfo = null, $included = null) {
206  $result = $this->retrieveRange(
207  'SELECT *
208  FROM review_form_elements
209  WHERE review_form_id = ?
210  ' . ($included === true?' AND included = 1':'') . '
211  ' . ($included === false?' AND included = 0':'') . '
212  ORDER BY seq',
213  (int) $reviewFormId, $rangeInfo
214  );
215 
216  return new DAOResultFactory($result, $this, '_fromRow');
217  }
218 
224  function getRequiredReviewFormElementIds($reviewFormId) {
225  $result = $this->retrieve(
226  'SELECT review_form_element_id FROM review_form_elements WHERE review_form_id = ? AND required = 1 ORDER BY seq',
227  $reviewFormId
228  );
229 
230  $requiredReviewFormElementIds = array();
231  while (!$result->EOF) {
232  $requiredReviewFormElementIds[] = $result->fields[0];
233  $result->MoveNext();
234  }
235 
236  $result->Close();
237  return $requiredReviewFormElementIds;
238  }
239 
246  function reviewFormElementExists($reviewFormElementId, $reviewFormId = null) {
247  $params = array((int) $reviewFormElementId);
248  if ($reviewFormId) $params[] = (int) $reviewFormId;
249 
250  $result = $this->retrieve(
251  'SELECT COUNT(*)
252  FROM review_form_elements
253  WHERE review_form_element_id = ?
254  ' . ($reviewFormId?' AND review_form_id = ?':''),
255  $params
256  );
257 
258  $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
259 
260  $result->Close();
261  return $returner;
262  }
263 
268  function resequenceReviewFormElements($reviewFormId) {
269  $result = $this->retrieve(
270  'SELECT review_form_element_id FROM review_form_elements WHERE review_form_id = ? ORDER BY seq',
271  (int) $reviewFormId
272  );
273 
274  for ($i=1; !$result->EOF; $i++) {
275  list($reviewFormElementId) = $result->fields;
276  $this->update(
277  'UPDATE review_form_elements SET seq = ? WHERE review_form_element_id = ?',
278  array(
279  $i,
280  $reviewFormElementId
281  )
282  );
283 
284  $result->MoveNext();
285  }
286  $result->Close();
287  }
288 
293  function getInsertId() {
294  return $this->_getInsertId('review_form_elements', 'review_form_element_id');
295  }
296 }
297 
ReviewFormElementDAO\updateObject
updateObject($reviewFormElement)
Definition: ReviewFormElementDAO.inc.php:126
DAOResultFactory
Wrapper around ADORecordSet providing "factory" features for generating objects from DAOs.
Definition: DAOResultFactory.inc.php:21
ReviewFormElementDAO\reviewFormElementExists
reviewFormElementExists($reviewFormElementId, $reviewFormId=null)
Definition: ReviewFormElementDAO.inc.php:246
DAO\retrieveRange
& retrieveRange($sql, $params=false, $dbResultRange=null, $callHooks=true)
Definition: DAO.inc.php:176
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ReviewFormElementDAO
Operations for retrieving and modifying ReviewFormElement objects.
Definition: ReviewFormElementDAO.inc.php:20
ReviewFormElementDAO\deleteObject
deleteObject($reviewFormElement)
Definition: ReviewFormElementDAO.inc.php:152
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
ReviewFormElementDAO\_fromRow
_fromRow($row)
Definition: ReviewFormElementDAO.inc.php:63
ReviewFormElementDAO\getInsertId
getInsertId()
Definition: ReviewFormElementDAO.inc.php:293
ReviewFormElementDAO\getRequiredReviewFormElementIds
getRequiredReviewFormElementIds($reviewFormId)
Definition: ReviewFormElementDAO.inc.php:224
ReviewFormElementDAO\newDataObject
newDataObject()
Definition: ReviewFormElementDAO.inc.php:54
ReviewFormElementDAO\getByReviewFormId
getByReviewFormId($reviewFormId, $rangeInfo=null, $included=null)
Definition: ReviewFormElementDAO.inc.php:205
ReviewFormElementDAO\deleteSetting
deleteSetting($reviewFormElementId, $name, $locale=null)
Definition: ReviewFormElementDAO.inc.php:186
ReviewFormElementDAO\deleteByReviewFormId
deleteByReviewFormId($reviewFormId)
Definition: ReviewFormElementDAO.inc.php:173
ReviewFormElement
Basic class describing a review form element.
Definition: ReviewFormElement.inc.php:25
ReviewFormElementDAO\updateLocaleFields
updateLocaleFields($reviewFormElement)
Definition: ReviewFormElementDAO.inc.php:91
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
ReviewFormElementDAO\resequenceReviewFormElements
resequenceReviewFormElements($reviewFormId)
Definition: ReviewFormElementDAO.inc.php:268
DAO\_getInsertId
_getInsertId($table='', $id='')
Definition: DAO.inc.php:255
ReviewFormElementDAO\deleteById
deleteById($reviewFormElementId)
Definition: ReviewFormElementDAO.inc.php:160
ReviewFormElementDAO\insertObject
insertObject($reviewFormElement)
Definition: ReviewFormElementDAO.inc.php:102
DAO\getDataObjectSettings
getDataObjectSettings($tableName, $idFieldName, $idFieldValue, $dataObject)
Definition: DAO.inc.php:582
ReviewFormElementDAO\getById
getById($reviewFormElementId, $reviewFormId=null)
Definition: ReviewFormElementDAO.inc.php:28
DAO\updateDataObjectSettings
updateDataObjectSettings($tableName, $dataObject, $idArray)
Definition: DAO.inc.php:488
HookRegistry\call
static call($hookName, $args=null)
Definition: HookRegistry.inc.php:86
ReviewFormElementDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: ReviewFormElementDAO.inc.php:83
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31