17 import(
'lib.pkp.api.v1._submissions.PKPBackendSubmissionsHandler');
28 $rootPattern =
'/{contextPath}/api/{version}/_submissions';
29 $this->_endpoints = array(
32 'pattern' =>
"{$rootPattern}/saveDisplayFlags",
33 'handler' => array($this,
'saveDisplayFlags'),
40 'pattern' =>
"{$rootPattern}/saveFeaturedOrder",
41 'handler' => array($this,
'saveFeaturedOrder'),
50 'pattern' =>
"{$rootPattern}/addToCatalog",
51 'handler' => [$this,
'addToCatalog'],
59 parent::__construct();
74 $slimRequest = $args[1];
77 $originalParams = $slimRequest->getQueryParams();
80 import(
'lib.pkp.classes.submission.PKPSubmissionDAO');
81 import(
'classes.submission.SubmissionDAO');
84 if (isset($originalParams[
'orderBy']) && in_array($originalParams[
'orderBy'], array(ORDERBY_DATE_PUBLISHED, ORDERBY_SERIES_POSITION))) {
85 $params[
'orderBy'] = $originalParams[
'orderBy'];
89 if (isset($originalParams[
'orderByFeatured'])) {
90 $params[
'orderByFeatured'] =
true;
93 if (!empty($originalParams[
'categoryIds'])) {
94 if (is_array($originalParams[
'categoryIds'])) {
95 $params[
'categoryIds'] = array_map(
'intval', $originalParams[
'categoryIds']);
97 $params[
'categoryIds'] = array((
int) $originalParams[
'categoryIds']);
101 if (!empty($originalParams[
'seriesIds'])) {
102 if (is_array($originalParams[
'seriesIds'])) {
103 $params[
'seriesIds'] = array_map(
'intval', $originalParams[
'seriesIds']);
105 $params[
'seriesIds'] = array((
int) $originalParams[
'seriesIds']);
125 $params = $slimRequest->getParsedBody();
127 $submissionId = isset($params[
'submissionId']) ? (int) $params[
'submissionId'] :
null;
129 if (empty($submissionId)) {
130 return $response->withStatus(400)->withJsonError(
'api.submissions.400.missingRequired');
134 $featureDao->deleteByMonographId($submissionId);
135 if (!empty($params[
'featured'])) {
136 foreach($params[
'featured'] as $feature) {
137 $featureDao->insertFeature($submissionId, $feature[
'assoc_type'], $feature[
'assoc_id'], $feature[
'seq']);
142 $newReleaseDao->deleteByMonographId($submissionId);
143 if (!empty($params[
'newRelease'])) {
144 foreach($params[
'newRelease'] as $newRelease) {
145 $newReleaseDao->insertNewRelease($submissionId, $newRelease[
'assoc_type'], $newRelease[
'assoc_id']);
150 'featured' => $featureDao->getFeaturedAll($submissionId),
151 'newRelease' => $newReleaseDao->getNewReleaseAll($submissionId),
154 return $response->withJson($output);
176 $params = $slimRequest->getParsedBody();
178 $assocType = isset($params[
'assocType']) && in_array($params[
'assocType'], array(ASSOC_TYPE_PRESS, ASSOC_TYPE_CATEGORY, ASSOC_TYPE_SERIES)) ? (int) $params[
'assocType'] :
null;
179 $assocId = isset($params[
'assocId']) ? (int) $params[
'assocId'] :
null;
181 if (empty($assocType) || empty($assocId)) {
182 return $response->withStatus(400)->withJsonError(
'api.submissions.400.missingRequired');
186 $featureDao->deleteByAssoc($assocType, $assocId);
187 if (!empty($params[
'featured'])) {
188 foreach($params[
'featured'] as $feature) {
189 $featureDao->insertFeature($feature[
'id'], $assocType, $assocId, $feature[
'seq']);
193 return $response->withJson(
true);
205 $params = $slimRequest->getParsedBody();
207 if (empty($params[
'submissionIds'])) {
208 return $response->withStatus(400)->withJsonError(
'api.submissions.400.submissionIdsRequired');
211 $submissionIds = array_map(
'intval', (array) $params[
'submissionIds']);
213 if (empty($submissionIds)) {
214 return $response->withStatus(400)->withJsonError(
'api.submissions.400.submissionIdsRequired');
218 $primaryLocale = $this->
getRequest()->getContext()->getPrimaryLocale();
219 $allowedLocales = $this->
getRequest()->getContext()->getSupportedFormLocales();
221 $validPublications = [];
222 foreach ($submissionIds as $submissionId) {
223 $submission =
Services::get(
'submission')->get($submissionId);
225 return $response->withStatus(400)->withJsonError(
'api.submissions.400.submissionsNotFound');
227 $publication = $submission->getCurrentPublication();
228 if ($publication->getData(
'status') === STATUS_PUBLISHED) {
231 $errors =
Services::get(
'publication')->validatePublish($publication, $submission, $allowedLocales, $primaryLocale);
232 if (!empty($errors)) {
233 return $response->withStatus(400)->withJson($errors);
235 $validPublications[] = $publication;
238 foreach($validPublications as $validPublication) {
242 return $response->withJson(
true);