00001 <?php
00002
00016
00017
00018
00019 import('submission.proofAssignment.ProofAssignment');
00020
00021 class ProofAssignmentDAO extends DAO {
00022 var $userDao;
00023
00027 function ProofAssignmentDAO() {
00028 parent::DAO();
00029 $this->userDao = &DAORegistry::getDAO('UserDAO');
00030 }
00031
00037 function &getProofAssignment($proofId) {
00038 $result = &$this->retrieve(
00039 'SELECT p.*, u.first_name, u.last_name, u.email FROM proof_assignments p LEFT JOIN users u ON (p.proofreader_id = u.user_id) WHERE p.proof_id = ?',
00040 $proofId
00041 );
00042
00043 $returner = null;
00044 if ($result->RecordCount() != 0) {
00045 $returner = &$this->_returnProofAssignmentFromRow($result->GetRowAssoc(false));
00046 }
00047
00048 $result->Close();
00049 unset($result);
00050
00051 return $returner;
00052 }
00053
00059 function &getProofAssignmentByArticleId($articleId) {
00060 $result = &$this->retrieve(
00061 'SELECT p.*, u.first_name, u.last_name, u.email FROM proof_assignments p LEFT JOIN users u ON (p.proofreader_id = u.user_id) WHERE p.article_id = ?',
00062 $articleId
00063 );
00064
00065 $returner = null;
00066 if ($result->RecordCount() != 0) {
00067 $returner = &$this->_returnProofAssignmentFromRow($result->GetRowAssoc(false));
00068 }
00069
00070 $result->Close();
00071 unset($result);
00072
00073 return $returner;
00074 }
00075
00081 function &_returnProofAssignmentFromRow(&$row) {
00082 $proofAssignment = &new ProofAssignment();
00083 $proofAssignment->setProofId($row['proof_id']);
00084 $proofAssignment->setArticleId($row['article_id']);
00085 $proofAssignment->setProofreaderId($row['proofreader_id']);
00086
00087 $proofAssignment->setDateAuthorNotified($this->datetimeFromDB($row['date_author_notified']));
00088 $proofAssignment->setDateAuthorUnderway($this->datetimeFromDB($row['date_author_underway']));
00089 $proofAssignment->setDateAuthorCompleted($this->datetimeFromDB($row['date_author_completed']));
00090 $proofAssignment->setDateAuthorAcknowledged($this->datetimeFromDB($row['date_author_acknowledged']));
00091
00092 $proofAssignment->setDateProofreaderNotified($this->datetimeFromDB($row['date_proofreader_notified']));
00093 $proofAssignment->setDateProofreaderUnderway($this->datetimeFromDB($row['date_proofreader_underway']));
00094 $proofAssignment->setDateProofreaderCompleted($this->datetimeFromDB($row['date_proofreader_completed']));
00095 $proofAssignment->setDateProofreaderAcknowledged($this->datetimeFromDB($row['date_proofreader_acknowledged']));
00096
00097 $proofAssignment->setDateLayoutEditorNotified($this->datetimeFromDB($row['date_layouteditor_notified']));
00098 $proofAssignment->setDateLayoutEditorUnderway($this->datetimeFromDB($row['date_layouteditor_underway']));
00099 $proofAssignment->setDateLayoutEditorCompleted($this->datetimeFromDB($row['date_layouteditor_completed']));
00100 $proofAssignment->setDateLayoutEditorAcknowledged($this->datetimeFromDB($row['date_layouteditor_acknowledged']));
00101
00102 $proofAssignment->setProofreaderFirstName($row['first_name']);
00103 $proofAssignment->setProofreaderLastName($row['last_name']);
00104 $proofAssignment->setProofreaderEmail($row['email']);
00105
00106 HookRegistry::call('ProofAssignmentDAO::_returnProofAssignmentFromRow', array(&$proofAssignment, &$row));
00107
00108 return $proofAssignment;
00109 }
00110
00115 function insertProofAssignment(&$proofAssignment) {
00116 $this->update(
00117 sprintf('INSERT INTO proof_assignments
00118 (article_id, proofreader_id, date_author_notified, date_author_underway, date_author_completed, date_author_acknowledged, date_proofreader_notified, date_proofreader_underway, date_proofreader_completed, date_proofreader_acknowledged, date_layouteditor_notified, date_layouteditor_underway, date_layouteditor_completed, date_layouteditor_acknowledged)
00119 VALUES
00120 (?, ?, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',
00121 $this->datetimeToDB($proofAssignment->getDateAuthorNotified()),
00122 $this->datetimeToDB($proofAssignment->getDateAuthorUnderway()),
00123 $this->datetimeToDB($proofAssignment->getDateAuthorCompleted()),
00124 $this->datetimeToDB($proofAssignment->getDateAuthorAcknowledged()),
00125 $this->datetimeToDB($proofAssignment->getDateProofreaderNotified()),
00126 $this->datetimeToDB($proofAssignment->getDateProofreaderUnderway()),
00127 $this->datetimeToDB($proofAssignment->getDateProofreaderCompleted()),
00128 $this->datetimeToDB($proofAssignment->getDateProofreaderAcknowledged()),
00129 $this->datetimeToDB($proofAssignment->getDateLayoutEditorNotified()),
00130 $this->datetimeToDB($proofAssignment->getDateLayoutEditorUnderway()),
00131 $this->datetimeToDB($proofAssignment->getDateLayoutEditorCompleted()),
00132 $this->datetimeToDB($proofAssignment->getDateLayoutEditorAcknowledged())),
00133 array(
00134 $proofAssignment->getArticleId(),
00135 $proofAssignment->getProofreaderId()
00136 )
00137 );
00138
00139 $proofAssignment->setProofId($this->getInsertProofId());
00140 return $proofAssignment->getProofId();
00141 }
00142
00147 function updateProofAssignment(&$proofAssignment) {
00148 return $this->update(
00149 sprintf('UPDATE proof_assignments
00150 SET article_id = ?,
00151 proofreader_id = ?,
00152 date_author_notified = %s,
00153 date_author_underway = %s,
00154 date_author_completed = %s,
00155 date_author_acknowledged = %s,
00156 date_proofreader_notified = %s,
00157 date_proofreader_underway = %s,
00158 date_proofreader_completed = %s,
00159 date_proofreader_acknowledged = %s,
00160 date_layouteditor_notified = %s,
00161 date_layouteditor_underway = %s,
00162 date_layouteditor_completed = %s,
00163 date_layouteditor_acknowledged = %s
00164 WHERE proof_id = ?',
00165 $this->datetimeToDB($proofAssignment->getDateAuthorNotified()),
00166 $this->datetimeToDB($proofAssignment->getDateAuthorUnderway()),
00167 $this->datetimeToDB($proofAssignment->getDateAuthorCompleted()),
00168 $this->datetimeToDB($proofAssignment->getDateAuthorAcknowledged()),
00169 $this->datetimeToDB($proofAssignment->getDateProofreaderNotified()),
00170 $this->datetimeToDB($proofAssignment->getDateProofreaderUnderway()),
00171 $this->datetimeToDB($proofAssignment->getDateProofreaderCompleted()),
00172 $this->datetimeToDB($proofAssignment->getDateProofreaderAcknowledged()),
00173 $this->datetimeToDB($proofAssignment->getDateLayoutEditorNotified()),
00174 $this->datetimeToDB($proofAssignment->getDateLayoutEditorUnderway()),
00175 $this->datetimeToDB($proofAssignment->getDateLayoutEditorCompleted()),
00176 $this->datetimeToDB($proofAssignment->getDateLayoutEditorAcknowledged())),
00177 array(
00178 $proofAssignment->getArticleId(),
00179 $proofAssignment->getProofreaderId(),
00180 $proofAssignment->getProofId()
00181 )
00182 );
00183 }
00184
00189 function deleteProofAssignmentById($proofId) {
00190 return $this->update(
00191 'DELETE FROM proof_assignments WHERE proof_id = ?',
00192 $proofId
00193 );
00194 }
00195
00200 function deleteProofAssignmentsByArticle($articleId) {
00201 return $this->update(
00202 'DELETE FROM proof_assignments WHERE article_id = ?',
00203 $articleId
00204 );
00205 }
00206
00211 function getInsertProofId() {
00212 return $this->getInsertId('proof_assignments', 'proof_id');
00213 }
00214 }
00215
00216 ?>