16 import(
'lib.pkp.classes.search.SubmissionSearchIndex');
26 'ArticleSearchIndex::articleMetadataChanged',
30 if (!empty($hookResult)) {
34 $publication = $submission->getCurrentPublication();
38 foreach ($publication->getData(
'authors') as $author) {
39 $authorText = array_merge(
41 array_values((array) $author->getData(
'givenName')),
42 array_values((array) $author->getData(
'familyName')),
43 array_values(array_map(
'strip_tags', (array) $author->getData(
'affiliation'))),
44 array_values(array_map(
'strip_tags', (array) $author->getData(
'biography')))
49 import(
'classes.search.ArticleSearch');
50 $submissionId = $submission->getId();
51 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_AUTHOR, $authorText);
52 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_TITLE, $publication->getFullTitles());
53 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_ABSTRACT, $publication->getData(
'abstract'));
55 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_SUBJECT, (array) $publication->getData(
'subjects'));
56 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_DISCIPLINE, (array) $publication->getData(
'disciplines'));
57 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_TYPE, (array) $publication->getData(
'type'));
58 $this->
_updateTextIndex($submissionId, SUBMISSION_SEARCH_COVERAGE, (array) $publication->getData(
'coverage'));
70 return $searchDao->deleteSubmissionKeywords($articleId, $type, $assocId);
86 'ArticleSearchIndex::submissionFileChanged',
87 array($articleId, $type, $fileId)
92 if ($hookResult ===
false || is_null($hookResult)) {
94 $file = $submissionFileDao->getLatestRevision($fileId);
99 if (isset($parser) && $parser->open()) {
101 $objectId = $searchDao->insertObject($articleId, $type, $fileId);
104 while(($text = $parser->read()) !==
false) {
118 $searchDao->deleteSubmissionKeywords($submission->getId(), SUBMISSION_SEARCH_GALLEY_FILE);
133 'ArticleSearchIndex::submissionFilesChanged',
139 if ($hookResult ===
false || is_null($hookResult)) {
141 import(
'lib.pkp.classes.submission.SubmissionFile');
143 $files = $fileDao->getLatestRevisions(
144 $article->getId(), SUBMISSION_FILE_PROOF
146 foreach ($files as $file) {
147 if ($file->getFileId()) {
150 $dependentFiles = $fileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_SUBMISSION_FILE, $file->getFileId(), $article->getId(), SUBMISSION_FILE_DEPENDENT);
151 foreach ($dependentFiles as $depFile) {
152 if ($depFile->getFileId()) {
153 $this->
submissionFileChanged($article->getId(), SUBMISSION_SEARCH_SUPPLEMENTARY_FILE, $depFile->getFileId());
174 'ArticleSearchIndex::submissionFileDeleted',
175 array($articleId, $type, $assocId)
180 if ($hookResult ===
false || is_null($hookResult)) {
182 return $searchDao->deleteSubmissionKeywords($articleId, $type, $assocId);
199 'ArticleSearchIndex::articleDeleted',
214 'ArticleSearchIndex::articleChangesFinished'
225 if (
Config::getVar(
'debug',
'deprecation_warnings')) trigger_error(
'Deprecated call to articleChangesFinished. Use submissionChangesFinished instead.');
240 public function rebuildIndex($log =
false, $journal =
null, $switches = array()) {
243 'ArticleSearchIndex::rebuildIndex',
244 array($log, $journal, $switches)
249 if ($hookResult ===
false || is_null($hookResult)) {
255 if (is_a($journal,
'Journal')) die(__(
'search.cli.rebuildIndex.indexingByJournalNotSupported') .
"\n");
258 if ($log) echo __(
'search.cli.rebuildIndex.clearingIndex') .
' ... ';
260 $searchDao->clearIndex();
261 if ($log) echo __(
'search.cli.rebuildIndex.done') .
"\n";
266 $journals = $journalDao->getAll();
267 while ($journal = $journals->next()) {
270 if ($log) echo __(
'search.cli.rebuildIndex.indexing', array(
'journalName' => $journal->getLocalizedName())) .
' ... ';
272 $submissionsIterator =
Services::get(
'submission')->getMany([
'contextId' => $journal->getId()]);
273 foreach ($submissionsIterator as $submission) {
274 if ($submission->getSubmissionProgress() == 0) {
282 if ($log) echo __(
'search.cli.rebuildIndex.result', array(
'numIndexed' => $numIndexed)) .
"\n";
300 for ($i = 0, $count = count($keywords); $i < $count; $i++) {
301 if ($searchDao->insertObjectKeyword($objectId, $keywords[$i], $position) !==
null) {
316 $objectId = $searchDao->insertObject($articleId, $type, $assocId);