diff --git a/controllers/ItemsController.php b/controllers/ItemsController.php index d3a6e4894..04cbc8d37 100644 --- a/controllers/ItemsController.php +++ b/controllers/ItemsController.php @@ -1128,6 +1128,8 @@ private function _handleFileRequest($item) { Zotero_DB::commit(); + $this->_addToPDFIndexingQueueIfNeeded($info, $item->key); + header("HTTP/1.1 204 No Content"); header("Last-Modified-Version: " . $item->version); exit; @@ -1181,6 +1183,8 @@ private function _handleFileRequest($item) { Zotero_DB::commit(); + $this->_addToPDFIndexingQueueIfNeeded($info, $item->key); + header("HTTP/1.1 204 No Content"); exit; } @@ -1189,4 +1193,25 @@ private function _handleFileRequest($item) { } exit; } + + // If it's a PDF and request is not from desktop app, add it to SQS + // to be processed by full-text-extractor + private function _addToPDFIndexingQueueIfNeeded($info, $itemKey) { + if ( ($info->contentType != "application/pdf" && !strpos($info->filename, ".pdf")) || !empty($_SERVER['HTTP_X_ZOTERO_VERSION'])) { + return; + } + if (Z_CONFIG::$SQS_URL == '') { + return; + } + $payload = [ + "fileName" => $info->hash, + "itemKey" => $itemKey]; + if (isset($this->objectGroupID)) { + $payload['groupID'] = $this->objectGroupID; + } + else { + $payload['userID'] = $this->userID; + } + Z_SQS::send(Z_CONFIG::$SQS_URL, json_encode($payload)); + } } diff --git a/include/SQS.inc.php b/include/SQS.inc.php index 88b870f36..9c8a93eea 100644 --- a/include/SQS.inc.php +++ b/include/SQS.inc.php @@ -102,7 +102,7 @@ public static function deleteBatch($queueURL, $batchEntries) { private static function load() { if (!self::$sqs) { - self::$sqs = Z_Core::$AWS->get('sqs'); + self::$sqs = Z_Core::$AWS->createSQS(); } } } diff --git a/include/config/config.inc.php-sample b/include/config/config.inc.php-sample index 3225fb2f5..8d788b23c 100644 --- a/include/config/config.inc.php-sample +++ b/include/config/config.inc.php-sample @@ -26,7 +26,8 @@ class Z_CONFIG { public static $S3_BUCKET_FULLTEXT = ''; public static $S3_BUCKET_ERRORS = ''; public static $SNS_ALERT_TOPIC = ''; - + public static $SQS_URL = ''; + public static $REDIS_HOSTS = [ 'default' => [ 'host' => 'redis1.localdomain:6379'