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'),