Open Monograph Press  3.3.0
PlagiarismPlugin.inc.php
1 <?php
2 
13 import('lib.pkp.classes.plugins.GenericPlugin');
14 
19  public function register($category, $path, $mainContextId = null) {
20  $success = parent::register($category, $path, $mainContextId);
21  $this->addLocaleData();
22 
23  if ($success && Config::getVar('ithenticate', 'ithenticate') && $this->getEnabled()) {
24  HookRegistry::register('submissionsubmitstep4form::display', array($this, 'callback'));
25  }
26  return $success;
27  }
28 
32  public function getDisplayName() {
33  return __('plugins.generic.plagiarism.displayName');
34  }
35 
39  public function getDescription() {
40  return Config::getVar('ithenticate', 'ithenticate')?__('plugins.generic.plagiarism.description'):__('plugins.generic.plagiarism.description.seeReadme');
41  }
42 
46  function getCanEnable() {
47  if (!parent::getCanEnable()) return false;
48  return Config::getVar('ithenticate', 'ithenticate');
49  }
50 
54  function getEnabled() {
55  if (!parent::getEnabled()) return false;
56  return Config::getVar('ithenticate', 'ithenticate');
57  }
58 
64  public function callback($hookName, $args) {
65  $request = Application::get()->getRequest();
66  $context = $request->getContext();
67  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
68  $submission = $submissionDao->getById($request->getUserVar('submissionId'));
69 
70  require_once(dirname(__FILE__) . '/vendor/autoload.php');
71 
72  $ithenticate = new \bsobbe\ithenticate\Ithenticate(
73  Config::getVar('ithenticate', 'username'),
74  Config::getVar('ithenticate', 'password')
75  );
76 
77  // Make sure there's a group list for this context, creating if necessary.
78  $groupList = $ithenticate->fetchGroupList();
79  $contextName = $context->getLocalizedName($context->getPrimaryLocale());
80  if (!($groupId = array_search($contextName, $groupList))) {
81  // No folder group found for the context; create one.
82  $groupId = $ithenticate->createGroup($contextName);
83  if (!$groupId) {
84  error_log('Could not create folder group for context ' . $contextName . ' on iThenticate.');
85  return false;
86  }
87  }
88 
89  // Create a folder for this submission.
90  if (!($folderId = $ithenticate->createFolder(
91  'Submission_' . $submission->getId(),
92  'Submission_' . $submission->getId() . ': ' . $submission->getLocalizedTitle($submission->getLocale()),
93  $groupId,
94  1
95  ))) {
96  error_log('Could not create folder for submission ID ' . $submission->getId() . ' on iThenticate.');
97  return false;
98  }
99 
100  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
101  $submissionFiles = $submissionFileDao->getBySubmissionId($submission->getId());
102  $authors = $submission->getAuthors();
103  $author = array_shift($authors);
104  foreach ($submissionFiles as $submissionFile) {
105  if (!$ithenticate->submitDocument(
106  $submissionFile->getLocalizedName(),
107  $author->getFirstName(),
108  $author->getLastName(),
109  $submissionFile->getOriginalFileName(),
110  file_get_contents($submissionFile->getFilePath()),
111  $folderId
112  )) {
113  error_log('Could not submit ' . $submissionFile->getFilePath() . ' to iThenticate.');
114  }
115  }
116 
117  return false;
118  }
119 }
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PlagiarismPlugin\getCanEnable
getCanEnable()
Definition: PlagiarismPlugin.inc.php:46
PlagiarismPlugin\getDisplayName
getDisplayName()
Definition: PlagiarismPlugin.inc.php:32
PlagiarismPlugin\getDescription
getDescription()
Definition: PlagiarismPlugin.inc.php:39
PlagiarismPlugin
Definition: PlagiarismPlugin.inc.php:15
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
Plugin\$request
$request
Definition: Plugin.inc.php:68
Plugin\addLocaleData
addLocaleData($locale=null)
Definition: Plugin.inc.php:454
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PlagiarismPlugin\callback
callback($hookName, $args)
Definition: PlagiarismPlugin.inc.php:64
PlagiarismPlugin\getEnabled
getEnabled()
Definition: PlagiarismPlugin.inc.php:54
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18