17 import(
'lib.pkp.classes.submission.PKPSubmission');
18 import(
'lib.pkp.classes.db.SchemaDAO');
19 import(
'lib.pkp.classes.services.PKPSchemaService');
21 define(
'ORDERBY_DATE_PUBLISHED',
'datePublished');
22 define(
'ORDERBY_TITLE',
'title');
42 'id' =>
'submission_id',
43 'contextId' =>
'context_id',
44 'currentPublicationId' =>
'current_publication_id',
45 'dateLastActivity' =>
'date_last_activity',
46 'dateSubmitted' =>
'date_submitted',
47 'lastModified' =>
'last_modified',
48 'stageId' =>
'stage_id',
50 'submissionProgress' =>
'submission_progress',
57 parent::__construct();
68 $submission = $this->
getById($id,
null,
false);
69 $cache->setCache($id, $submission);
78 if (!isset($this->cache)) {
80 $this->cache = $cacheManager->getObjectCache(
'submissions', 0, array(&$this,
'_cacheMiss'));
89 $submission = parent::_fromRow($row);
90 $submission->setData(
'publications', iterator_to_array(
91 Services::get(
'publication')->getMany([
'submissionIds' => $submission->getId()])
102 return $this->
deleteById($submission->getId());
110 $submission = $this->
getById($submissionId);
111 if (!is_a($submission,
'Submission')) {
112 throw new Exception(
'Could not delete submission. No submission with the id ' . (
int) $submissionId .
' was found.');
115 parent::deleteById($submissionId);
118 $publicationsIterator =
Services::get(
'publication')->getMany([
'submissionIds' => $submissionId]);
120 foreach ($publicationsIterator as $publication) {
121 $publicationDao->deleteObject($publication);
130 $submissionFileDao->deleteAllRevisionsBySubmissionId($submissionId);
131 import(
'lib.pkp.classes.file.SubmissionFileManager');
132 $submissionFileManager =
new SubmissionFileManager($submission->getContextId(), $submission->getId());
133 $submissionFileManager->rmtree($submissionFileManager->getBasePath());
136 $reviewRoundDao->deleteBySubmissionId($submissionId);
139 $editDecisionDao->deleteDecisionsBySubmissionId($submissionId);
142 $reviewAssignmentDao->deleteBySubmissionId($submissionId);
146 $queryDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submissionId);
150 $stageAssignments = $stageAssignmentDao->getBySubmissionAndStageId($submissionId);
151 while ($stageAssignment = $stageAssignments->next()) {
152 $stageAssignmentDao->deleteObject($stageAssignment);
156 $noteDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submissionId);
159 $submissionCommentDao->deleteBySubmissionId($submissionId);
163 $notificationDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submissionId);
166 $submissionEventLogDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submissionId);
169 $submissionEmailLogDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submissionId);
184 'pub-id::' . $pubIdType,
188 $params[] = $contextId;
192 'SELECT s.submission_id
193 FROM publication_settings ps
194 INNER JOIN publications p ON p.publication_id = ps.publication_id
195 INNER JOIN submissions s ON p.publication_id = s.current_publication_id
196 WHERE ps.setting_name = ? AND ps.setting_value = ?'
197 . ($contextId ?
' AND s.context_id = ?' :
''),
201 $submissionId = $result->fields[0];
203 if (!$submissionId) {
207 return $this->
getById($submissionId);
216 return $this->
_getInsertId(
'submissions',
'submission_id');
234 'SELECT * FROM ' . $this->tableName .
' WHERE context_id = ?',
247 while ($submission = $submissions->next()) {
258 while ($submission = $submissions->next()) {
259 $publications = (array) $submission->getData(
'publications');
260 if (empty($publications)) {
264 'copyrightYear' => $submission->_getContextLicenseFieldValue(
null, PERMISSIONS_FIELD_COPYRIGHT_YEAR),
265 'copyrightHolder' => $submission->_getContextLicenseFieldValue(
null, PERMISSIONS_FIELD_COPYRIGHT_HOLDER),
266 'licenseUrl' => $submission->_getContextLicenseFieldValue(
null, PERMISSIONS_FIELD_LICENSE_URL),
268 foreach ($publications as $publication) {
280 return $this->
getSortOption(ORDERBY_DATE_PUBLISHED, SORT_DIRECTION_DESC);
289 $this->
getSortOption(ORDERBY_TITLE, SORT_DIRECTION_ASC) => __(
'catalog.sortBy.titleAsc'),
290 $this->
getSortOption(ORDERBY_TITLE, SORT_DIRECTION_DESC) => __(
'catalog.sortBy.titleDesc'),
291 $this->
getSortOption(ORDERBY_DATE_PUBLISHED, SORT_DIRECTION_ASC) => __(
'catalog.sortBy.datePublishedAsc'),
292 $this->
getSortOption(ORDERBY_DATE_PUBLISHED, SORT_DIRECTION_DESC) => __(
'catalog.sortBy.datePublishedDesc'),
303 return $sortBy .
'-' . $sortDir;
312 list($sortBy, $sortDir) = explode(
"-", $sortOption);
322 list($sortBy, $sortDir) = explode(
"-", $sortOption);
339 function getExportable($contextId, $pubIdType =
null, $title =
null, $author =
null, $issueId =
null, $pubIdSettingName =
null, $pubIdSettingValue =
null, $rangeInfo =
null) {
340 if ($pubIdSettingName) {
341 $params[] = $pubIdSettingName;
343 $params[] = STATUS_PUBLISHED;
344 $params[] = $contextId;
346 $params[] =
'pub-id::'.$pubIdType;
350 $params[] =
'%' . $title .
'%';
357 $params[] = $issueId;
359 if ($pubIdSettingName && $pubIdSettingValue && $pubIdSettingValue != EXPORT_STATUS_NOT_DEPOSITED) {
360 $params[] = $pubIdSettingValue;
366 LEFT JOIN publications p ON s.current_publication_id = p.publication_id
367 LEFT JOIN publication_settings ps ON p.publication_id = ps.publication_id'
368 . ($issueId ?
' LEFT JOIN publication_settings psi ON p.publication_id = psi.publication_id AND psi.setting_name = \'issueId\'' :
'')
369 . ($pubIdType !=
null?
' LEFT JOIN publication_settings pspidt ON (p.publication_id = pspidt.publication_id)':
'')
370 . ($title !=
null?
' LEFT JOIN publication_settings pst ON (p.publication_id = pst.publication_id)':
'')
371 . ($author !=
null?
' LEFT JOIN authors au ON (p.publication_id = au.publication_id)
372 LEFT JOIN author_settings asgs ON (asgs.author_id = au.author_id AND asgs.setting_name = \''.IDENTITY_SETTING_GIVENNAME.
'\')
373 LEFT JOIN author_settings asfs ON (asfs.author_id = au.author_id AND asfs.setting_name = \
''.IDENTITY_SETTING_FAMILYNAME.
'\')
375 . ($pubIdSettingName != null?' LEFT JOIN submission_settings pss ON (s.submission_id = pss.submission_id AND pss.setting_name = ?)
':'')
376 . ' WHERE s.status = ?
377 AND s.context_id = ?
'
378 . ($pubIdType != null?' AND pspidt.setting_name = ? AND pspidt.setting_value IS NOT NULL
':'')
379 . ($title != null?' AND (pst.setting_name = ? AND pst.setting_value LIKE ?)
':'')
380 . ($author != null?' AND (asgs.setting_value LIKE ? OR asfs.setting_value LIKE ?)
':'')
381 . ($issueId != null?' AND psi.setting_value = ?
':'')
382 . (($pubIdSettingName != null && $pubIdSettingValue != null && $pubIdSettingValue == EXPORT_STATUS_NOT_DEPOSITED)?' AND pss.setting_value IS NULL
':'')
383 . (($pubIdSettingName != null && $pubIdSettingValue != null && $pubIdSettingValue != EXPORT_STATUS_NOT_DEPOSITED)?' AND pss.setting_value = ?
':'')
384 . (($pubIdSettingName != null && is_null($pubIdSettingValue))?' AND (pss.setting_value IS NULL OR pss.setting_value = \
'\')
':'')
385 . ' GROUP BY s.submission_id
386 ORDER BY MAX(
p.date_published) DESC, s.submission_id DESC
',
391 return new DAOResultFactory($result, $this, '_fromRow');