14 import(
'lib.pkp.classes.db.DAO');
15 import(
'lib.pkp.classes.submission.PKPSubmission');
24 public function getById($journalId, $depositObjectId) {
26 'SELECT * FROM pln_deposit_objects WHERE journal_id = ? and deposit_object_id = ?',
29 (
int) $depositObjectId
34 if ($result->RecordCount() != 0) {
35 $returner = $this->
_fromRow($result->GetRowAssoc(
false));
51 'SELECT * FROM pln_deposit_objects WHERE journal_id = ? AND deposit_id = ?',
68 'SELECT * FROM pln_deposit_objects WHERE journal_id = ? AND deposit_id = 0',
83 switch ($objectType) {
84 case 'PublishedArticle':
85 case PLN_PLUGIN_DEPOSIT_OBJECT_SUBMISSION:
87 'SELECT pdo.deposit_object_id, a.last_modified FROM pln_deposit_objects pdo
88 JOIN submissions s ON pdo.object_id = s.submission_id
89 JOIN publications p ON p.publication_id = s.current_publication_id
90 WHERE s.context_id = ? AND pdo.journal_id = ? AND pdo.date_modified < p.last_modified',
96 while (!$result->EOF) {
97 $row = $result->GetRowAssoc(
false);
98 $depositObject = $this->
getById($journalId, $row[
'deposit_object_id']);
99 $deposit = $depositDao->getById($depositObject->getDepositId());
100 if($deposit->getSentStatus() || !$deposit->getTransferredStatus()) {
102 $depositObject->setDateModified($row[
'last_modified']);
104 $deposit->setNewStatus();
105 $deposit->setLockssAgreementStatus(
true);
106 $depositDao->updateObject($deposit);
112 case PLN_PLUGIN_DEPOSIT_OBJECT_ISSUE:
114 'SELECT pdo.deposit_object_id, MAX(i.last_modified) as issue_modified, MAX(p.last_modified) as article_modified
116 JOIN pln_deposit_objects pdo ON pdo.object_id = i.issue_id
117 JOIN publication_settings ps ON (CAST(i.issue_id AS CHAR) = ps.setting_value AND ps.setting_name = ?)
118 JOIN publications p ON (p.publication_id = ps.publication_id AND p.status = ?)
119 JOIN submissions s ON s.current_publication_id = p.publication_id
120 WHERE (pdo.date_modified < p.last_modified OR pdo.date_modified < i.last_modified)
121 AND (pdo.journal_id = ?)
122 GROUP BY pdo.deposit_object_id',
129 while (!$result->EOF) {
130 $row = $result->GetRowAssoc(
false);
131 $depositObject = $this->
getById($journalId, $row[
'deposit_object_id']);
132 $deposit = $depositDao->getById($depositObject->getDepositId());
133 if($deposit->getSentStatus() || !$deposit->getTransferredStatus()) {
135 if ($row[
'issue_modified'] > $row[
'article_modified']) {
136 $depositObject->setDateModified($row[
'issue_modified']);
138 $depositObject->setDateModified($row[
'article_modified']);
142 $deposit->setNewStatus();
143 $deposit->setLockssAgreementStatus(
true);
144 $depositDao->updateObject($deposit);
150 default: assert(
false);
164 switch ($objectType) {
165 case 'PublishedArticle':
166 case PLN_PLUGIN_DEPOSIT_OBJECT_SUBMISSION:
169 'SELECT p.submission_id FROM publications p
170 JOIN submissions s ON s.current_publication_id = p.publication_id
171 LEFT JOIN pln_deposit_objects pdo ON s.submission_id = pdo.object_id
172 WHERE s.journal_id = ? AND pdo.object_id is null AND p.status = ?',
178 while (!$result->EOF) {
179 $row = $result->GetRowAssoc(
false);
180 $objects[] = $submissionDao->getById($row[
'submission_id']);
185 case PLN_PLUGIN_DEPOSIT_OBJECT_ISSUE:
190 LEFT JOIN pln_deposit_objects pdo ON pdo.object_id = i.issue_id
191 WHERE i.journal_id = ?
193 AND pdo.object_id is null',
196 while (!$result->EOF) {
197 $row = $result->GetRowAssoc(
false);
198 $objects[] = $issueDao->getById($row[
'issue_id']);
203 default: assert(
false);
206 $depositObjects = array();
207 foreach($objects as $object) {
209 $depositObject->setContent($object);
210 $depositObject->setJournalId($journalId);
212 $depositObjects[] = $depositObject;
215 return $depositObjects;
226 INSERT INTO pln_deposit_objects
234 (?, ?, ?, ?, NOW(), %s)',
238 (
int) $depositObject->getJournalId(),
239 (
int) $depositObject->getObjectId(),
240 $depositObject->getObjectType(),
241 (
int)$depositObject->getDepositId()
246 return $depositObject->getId();
256 UPDATE pln_deposit_objects SET
262 date_modified = NOW()
263 WHERE deposit_object_id = ?',
267 (
int) $depositObject->getJournalId(),
268 $depositObject->getObjectType(),
269 (
int) $depositObject->getObjectId(),
270 (
int) $depositObject->getDepositId(),
271 (
int) $depositObject->getId()
282 'DELETE from pln_deposit_objects WHERE deposit_object_id = ?',
283 (
int) $depositObject->getId()
292 return $this->
_getInsertId(
'pln_deposit_objects',
'object_id');
310 $depositObject->setId($row[
'deposit_object_id']);
311 $depositObject->setJournalId($row[
'journal_id']);
312 $depositObject->setObjectType($row[
'object_type']);
313 $depositObject->setObjectId($row[
'object_id']);
314 $depositObject->setDepositId($row[
'deposit_id']);
315 $depositObject->setDateCreated($this->
datetimeFromDB($row[
'date_created']));
316 $depositObject->setDateModified($this->
datetimeFromDB($row[
'date_modified']));
320 return $depositObject;