public function parseResults(LoopResult $loopResult) { foreach ($loopResult->getResultDataCollection() as $result) { // Create document processing event $event = new DocumentEvent($this->request); // Put source document file path $source_filepath = sprintf("%s%s/%s/%s", THELIA_ROOT, ConfigQuery::read('documents_library_path', 'local/media/documents'), $this->objectType, $result->getFile()); $event->setSourceFilepath($source_filepath); $event->setCacheSubdirectory($this->objectType); try { // Dispatch document processing event $this->dispatcher->dispatch(TheliaEvents::DOCUMENT_PROCESS, $event); $loopResultRow = new LoopResultRow($result); $loopResultRow->set("ID", $result->getId())->set("LOCALE", $this->locale)->set("DOCUMENT_URL", $event->getDocumentUrl())->set("DOCUMENT_PATH", $event->getDocumentPath())->set("ORIGINAL_DOCUMENT_PATH", $source_filepath)->set("TITLE", $result->getVirtualColumn('i18n_TITLE'))->set("CHAPO", $result->getVirtualColumn('i18n_CHAPO'))->set("DESCRIPTION", $result->getVirtualColumn('i18n_DESCRIPTION'))->set("POSTSCRIPTUM", $result->getVirtualColumn('i18n_POSTSCRIPTUM'))->set("VISIBLE", $result->getVisible())->set("POSITION", $result->getPosition())->set("OBJECT_TYPE", $this->objectType)->set("OBJECT_ID", $this->objectId); $loopResult->addRow($loopResultRow); } catch (\Exception $ex) { // Ignore the result and log an error Tlog::getInstance()->addError(sprintf("Failed to process document in document loop: %s", $ex->getMessage())); } } return $loopResult; }
/** * No operation done on source file -> link ! */ public function testProcessDocumentSymlink() { $event = new DocumentEvent($this->request); $event->setSourceFilepath(__DIR__ . "/assets/documents/sources/test-document-2.txt"); $event->setCacheSubdirectory("tests"); $document = new Document($this->getFileManager()); // mock cache configuration. $config = ConfigQuery::create()->filterByName(Document::CONFIG_DELIVERY_MODE)->findOne(); if ($config != null) { $oldval = $config->getValue(); $config->setValue('symlink')->save(); } $document->processDocument($event); if ($config != null) { $config->setValue($oldval)->save(); } $imgdir = ConfigQuery::read('document_cache_dir_from_web_root'); $this->assertFileExists(THELIA_WEB_DIR . "/{$imgdir}/tests/test-document-2.txt"); }