14 import(
'lib.pkp.classes.plugins.GenericPlugin');
16 define(
'SWORD_DEPOSIT_TYPE_AUTOMATIC', 1);
17 define(
'SWORD_DEPOSIT_TYPE_OPTIONAL_SELECTION', 2);
18 define(
'SWORD_DEPOSIT_TYPE_OPTIONAL_FIXED', 3);
19 define(
'SWORD_DEPOSIT_TYPE_MANAGER', 4);
21 define(
'SWORD_PASSWORD_SLUG',
'******');
27 public function register($category, $path, $mainContextId =
null) {
28 if (parent::register($category, $path, $mainContextId)) {
31 $this->
import(
'classes.DepositPointDAO');
53 $newPublication =& $args[0];
55 if ($newPublication->getData(
'status') != STATUS_PUBLISHED)
return false;
56 $submission =
Services::get(
'submission')->get($newPublication->getData(
'submissionId'));
67 $submission =& $args[0];
68 $editorDecision =& $args[1];
69 $decision = $editorDecision[
'decision'];
71 if ($decision != SUBMISSION_EDITOR_DECISION_ACCEPT)
return false;
85 $dispatcher =
$request->getDispatcher();
86 $this->
import(
'classes.PKPSwordDeposit');
88 $depositPoints = $depositPointDao->getByContextId($context->getId());
89 $sendDepositNotification = $this->
getSetting($context->getId(),
'allowAuthorSpecify') ? true :
false;
90 while ($depositPoint = $depositPoints->next()) {
91 $depositType = $depositPoint->getType();
92 if (($depositType == SWORD_DEPOSIT_TYPE_OPTIONAL_SELECTION)
93 || $depositType == SWORD_DEPOSIT_TYPE_OPTIONAL_FIXED) {
94 $sendDepositNotification =
true;
96 if ($depositType != SWORD_DEPOSIT_TYPE_AUTOMATIC)
102 $deposit->addEditorial();
103 $deposit->createPackage();
105 $depositPoint->getSwordUrl(),
106 $depositPoint->getSwordUsername(),
107 $depositPoint->getSwordPassword(),
108 $depositPoint->getSwordApikey()
112 catch (Exception $e) {
113 $contents = __(
'plugins.importexport.sword.depositFailed') .
': ' . $e->getMessage();
115 $notificationMgr->createTrivialNotification(
117 NOTIFICATION_TYPE_ERROR,
118 array(
'contents' => $contents)
120 error_log($e->getTraceAsString());
126 'repositoryName' => $depositPoint->getLocalizedName()
129 $notificationMgr->createTrivialNotification(
131 NOTIFICATION_TYPE_SUCCESS,
132 array(
'contents' => __(
'plugins.generic.sword.automaticDepositComplete', $params))
136 if ($sendDepositNotification) {
137 $submissionAuthors = [];
139 $daoResult = $dao->getBySubmissionAndRoleId($submission->
getId(), ROLE_ID_AUTHOR);
140 while ($record = $daoResult->next()) {
141 $userId = $record->getData(
'userId');
142 if (!in_array($userId, $submissionAuthors)) {
143 array_push($submissionAuthors, $userId);
147 $userDao =
new UserDao();
149 foreach ($submissionAuthors as $userId) {
150 $submittingUser = $userDao->getById($userId);
151 $contactName = $context->getSetting(
'contactName');
152 $contactEmail = $context->getSetting(
'contactEmail');
154 import(
'lib.pkp.classes.mail.SubmissionMailTemplate');
157 $mail->setFrom($contactEmail, $contactName);
158 $mail->addRecipient($submittingUser->getEmail(), $submittingUser->getFullName());
160 $mail->assignParams(array(
161 'contextName' => $context->getLocalizedName(),
163 'swordDepositUrl' => $dispatcher->url(
164 $request, ROUTE_PAGE,
null,
'sword',
'index', $submission->
getId()
179 $category =& $args[0];
180 $plugins =& $args[1];
183 $this->
import(
'SwordImportExportPlugin');
185 $plugins[$importExportPlugin->getSeq()][$importExportPlugin->getPluginPath()] =& $importExportPlugin;
197 if ($page !==
'sword')
return;
202 if (
$op ==
'swordSettings') {
203 define(
'HANDLER_CLASS',
'SwordSettingsTabHandler');
204 $args[2] = $this->
getPluginPath() .
'/' .
'SwordSettingsTabHandler.inc.php';
209 'performManagerOnlyDeposit',
213 if (!in_array(
$op, $publicOps))
return;
215 define(
'HANDLER_CLASS',
'SwordHandler');
216 $args[2] = $this->
getPluginPath() .
'/' .
'SwordHandler.inc.php';
230 $dispatcher =
$request->getDispatcher();
231 $tabLabel = __(
'plugins.generic.sword.settingsTabLabel');
232 $templateMgr->assign([
'sourceUrl' => $dispatcher->url(
$request, ROUTE_PAGE,
null,
'sword',
'swordSettings')]);
243 $component = $params[0];
244 if ($component ==
'plugins.generic.sword.controllers.grid.SwordDepositPointsGridHandler') {
249 if ($component ==
'plugins.generic.sword.controllers.grid.SubmissionListGridHandler') {
251 SubmissionListGridHandler::setPlugin($this);
262 return __(
'plugins.generic.sword.displayName');
270 return __(
'plugins.generic.sword.description');
278 $dispatcher =
$request->getDispatcher();
279 import(
'lib.pkp.classes.linkAction.request.RedirectAction');
287 null,
'management',
'settings',
'website',
288 array(
'uid' => uniqid()),
291 __(
'manager.plugins.settings'),
310 SWORD_DEPOSIT_TYPE_AUTOMATIC => __(
'plugins.generic.sword.depositPoints.type.automatic'),
311 SWORD_DEPOSIT_TYPE_OPTIONAL_SELECTION => __(
'plugins.generic.sword.depositPoints.type.optionalSelection'),
312 SWORD_DEPOSIT_TYPE_OPTIONAL_FIXED => __(
'plugins.generic.sword.depositPoints.type.optionalFixed'),
313 SWORD_DEPOSIT_TYPE_MANAGER => __(
'plugins.generic.sword.depositPoints.type.manager'),