Open Monograph Press  3.3.0
SubmissionCommentDAO.inc.php
1 <?php
2 
17 import('lib.pkp.classes.submission.SubmissionComment');
18 
19 class SubmissionCommentDAO extends DAO {
20 
28  function getSubmissionComments($submissionId, $commentType = null, $assocId = null) {
29  $params = array((int) $submissionId);
30  if ($commentType) $params[] = (int) $commentType;
31  if ($assocId) $params[] = (int) $assocId;
32  $result = $this->retrieve(
33  'SELECT a.*
34  FROM submission_comments a
35  WHERE submission_id = ?'
36  . ($commentType?' AND comment_type = ?':'')
37  . ($assocId?' AND assoc_id = ?':'')
38  . ' ORDER BY date_posted',
39  $params
40  );
41 
42  return new DAOResultFactory($result, $this, '_fromRow');
43  }
44 
50  function getByUserId($userId) {
51  $result = $this->retrieve(
52  'SELECT a.* FROM submission_comments a WHERE author_id = ? ORDER BY date_posted', (int) $userId
53  );
54 
55  return new DAOResultFactory($result, $this, '_fromRow');
56  }
57 
66  function getReviewerCommentsByReviewerId($submissionId, $reviewerId = null, $reviewId = null, $viewable = null) {
67  $params = array((int) $submissionId);
68  if ($reviewerId) $params[] = (int) $reviewerId;
69  if ($reviewId) $params[] = (int) $reviewId;
70  return new DAOResultFactory(
71  $this->retrieve(
72  'SELECT a.*
73  FROM submission_comments a
74  WHERE submission_id = ?
75  ' . ($reviewerId?' AND author_id = ?':'') . '
76  ' . ($reviewId?' AND assoc_id = ?':'') . '
77  ' . ($viewable === true?' AND viewable = 1':'') . '
78  ' . ($viewable === false?' AND viewable = 0':'') . '
79  ORDER BY date_posted DESC',
80  $params
81  ),
82  $this,
83  '_fromRow'
84  );
85  }
86 
92  function getById($commentId) {
93  $result = $this->retrieve(
94  'SELECT * FROM submission_comments WHERE comment_id = ?', (int) $commentId
95  );
96 
97  $submissionComment = $this->_fromRow($result->GetRowAssoc(false));
98 
99  $result->Close();
100  return $submissionComment;
101  }
102 
107  function newDataObject() {
108  return new SubmissionComment();
109  }
110 
116  function _fromRow($row) {
117  $submissionComment = $this->newDataObject();
118  $submissionComment->setId($row['comment_id']);
119  $submissionComment->setCommentType($row['comment_type']);
120  $submissionComment->setRoleId($row['role_id']);
121  $submissionComment->setSubmissionId($row['submission_id']);
122  $submissionComment->setAssocId($row['assoc_id']);
123  $submissionComment->setAuthorId($row['author_id']);
124  $submissionComment->setCommentTitle($row['comment_title']);
125  $submissionComment->setComments($row['comments']);
126  $submissionComment->setDatePosted($this->datetimeFromDB($row['date_posted']));
127  $submissionComment->setDateModified($this->datetimeFromDB($row['date_modified']));
128  $submissionComment->setViewable($row['viewable']);
129 
130  HookRegistry::call('SubmissionCommentDAO::_fromRow', array(&$submissionComment, &$row));
131 
132  return $submissionComment;
133  }
134 
140  function insertObject($submissionComment) {
141  $this->update(
142  sprintf('INSERT INTO submission_comments
143  (comment_type, role_id, submission_id, assoc_id, author_id, date_posted, date_modified, comment_title, comments, viewable)
144  VALUES
145  (?, ?, ?, ?, ?, %s, %s, ?, ?, ?)',
146  $this->datetimeToDB($submissionComment->getDatePosted()), $this->datetimeToDB($submissionComment->getDateModified())),
147  array(
148  (int) $submissionComment->getCommentType(),
149  (int) $submissionComment->getRoleId(),
150  (int) $submissionComment->getSubmissionId(),
151  (int) $submissionComment->getAssocId(),
152  (int) $submissionComment->getAuthorId(),
153  $submissionComment->getCommentTitle(),
154  $submissionComment->getComments(),
155  (int) $submissionComment->getViewable()
156  )
157  );
158 
159  $submissionComment->setId($this->getInsertId());
160  return $submissionComment->getId();
161  }
162 
167  function getInsertId() {
168  return $this->_getInsertId('submission_comments', 'comment_id');
169  }
170 
175  function deleteObject($submissionComment) {
176  $this->deleteById($submissionComment->getId());
177  }
178 
183  function deleteById($commentId) {
184  $this->update(
185  'DELETE FROM submission_comments WHERE comment_id = ?',
186  (int) $commentId
187  );
188  }
189 
194  function deleteBySubmissionId($submissionId) {
195  return $this->update(
196  'DELETE FROM submission_comments WHERE submission_id = ?',
197  (int) $submissionId
198  );
199  }
200 
205  function updateObject($submissionComment) {
206  $this->update(
207  sprintf('UPDATE submission_comments
208  SET
209  comment_type = ?,
210  role_id = ?,
211  submission_id = ?,
212  assoc_id = ?,
213  author_id = ?,
214  date_posted = %s,
215  date_modified = %s,
216  comment_title = ?,
217  comments = ?,
218  viewable = ?
219  WHERE comment_id = ?',
220  $this->datetimeToDB($submissionComment->getDatePosted()), $this->datetimeToDB($submissionComment->getDateModified())),
221  array(
222  (int) $submissionComment->getCommentType(),
223  (int) $submissionComment->getRoleId(),
224  (int) $submissionComment->getSubmissionId(),
225  (int) $submissionComment->getAssocId(),
226  (int) $submissionComment->getAuthorId(),
227  $submissionComment->getCommentTitle(),
228  $submissionComment->getComments(),
229  $submissionComment->getViewable() === null ? 1 : (int) $submissionComment->getViewable(),
230  (int) $submissionComment->getId()
231  )
232  );
233  }
234 }
235 
236 
DAOResultFactory
Wrapper around ADORecordSet providing "factory" features for generating objects from DAOs.
Definition: DAOResultFactory.inc.php:21
SubmissionCommentDAO\deleteById
deleteById($commentId)
Definition: SubmissionCommentDAO.inc.php:183
SubmissionCommentDAO\updateObject
updateObject($submissionComment)
Definition: SubmissionCommentDAO.inc.php:205
SubmissionCommentDAO\_fromRow
_fromRow($row)
Definition: SubmissionCommentDAO.inc.php:116
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
SubmissionCommentDAO\getByUserId
getByUserId($userId)
Definition: SubmissionCommentDAO.inc.php:50
DAO\datetimeFromDB
datetimeFromDB($dt)
Definition: DAO.inc.php:319
SubmissionCommentDAO\insertObject
insertObject($submissionComment)
Definition: SubmissionCommentDAO.inc.php:140
SubmissionCommentDAO\getReviewerCommentsByReviewerId
getReviewerCommentsByReviewerId($submissionId, $reviewerId=null, $reviewId=null, $viewable=null)
Definition: SubmissionCommentDAO.inc.php:66
SubmissionCommentDAO\getById
getById($commentId)
Definition: SubmissionCommentDAO.inc.php:92
SubmissionCommentDAO
Operations for retrieving and modifying SubmissionComment objects.
Definition: SubmissionCommentDAO.inc.php:19
SubmissionCommentDAO\newDataObject
newDataObject()
Definition: SubmissionCommentDAO.inc.php:107
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
DAO\datetimeToDB
datetimeToDB($dt)
Definition: DAO.inc.php:299
DAO\_getInsertId
_getInsertId($table='', $id='')
Definition: DAO.inc.php:255
SubmissionCommentDAO\getSubmissionComments
getSubmissionComments($submissionId, $commentType=null, $assocId=null)
Definition: SubmissionCommentDAO.inc.php:28
HookRegistry\call
static call($hookName, $args=null)
Definition: HookRegistry.inc.php:86
SubmissionCommentDAO\deleteBySubmissionId
deleteBySubmissionId($submissionId)
Definition: SubmissionCommentDAO.inc.php:194
SubmissionCommentDAO\deleteObject
deleteObject($submissionComment)
Definition: SubmissionCommentDAO.inc.php:175
SubmissionComment
Class for SubmissionComment.
Definition: SubmissionComment.inc.php:24
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31
SubmissionCommentDAO\getInsertId
getInsertId()
Definition: SubmissionCommentDAO.inc.php:167