private function truncate() { global $db, $config; if (!$config->isResetDataPermitted()) { static::raiseError(get_class($config) . '::isResetDataPermitted() returned false!'); return false; } if (!$db->truncateDatabaseTables()) { static::raiseError(get_class($db) . '::truncateDatabaseTables() returned false!'); return false; } try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load StorageController!'); return false; } if (!$storage->flushArchive()) { static::raiseError(get_class($storage) . '::flushArchive() returned false!'); return false; } if (!$storage->flushQueue()) { static::raiseError(get_class($storage) . '::flushQueue() returned false!'); return false; } try { $queue = new \Mtlda\Models\QueueModel(); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load QueueModel!'); return false; } if (!$queue->flush()) { static::raiseError(get_class($queue) . '::flush() returned false!'); return false; } return "Reset successful."; }
protected function deleteFile() { try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load StorageController!', false, $e); return false; } if (!$storage->deleteItemFile($this)) { static::raiseError("StorageController::deleteItemFile() returned false!"); return false; } return true; }
protected function postClone(&$srcobj) { try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError("Failed to load StorageController!"); return false; } if (($src_file = $srcobj->getFilePath()) === false) { static::raiseError(__METHOD__ . '(), unable to retrieve source objects full qualified path name!'); return false; } if (($dst_file = $this->getFilePath()) === false) { static::raiseError(__CLASS__ . '::getFilePath() returned false!'); return false; } if (!$storage->createDirectoryStructure(dirname($dst_file))) { static::raiseError(get_class($storage) . '::createDirectoryStructure() returned false!'); return false; } if (!$storage->copyFile($src_file, $dst_file)) { static::raiseError(get_class($storage) . '::copyFile() returned false!'); return false; } return true; }
protected function runOcr() { try { $pages = $this->pdf->getPages(); } catch (\Exception $e) { static::raiseError(get_class($this->pdf) . '::getPages() returned false!', false, $e); return false; } if (empty($pages)) { return true; } try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load StorageController!', false, $e); return false; } if (!($tempDir = $storage->createTempDir('ocr_'))) { static::raiseError(get_class($storage) . '::createTempDir() returned false!'); return false; } if (!file_exists($tempDir) || !is_dir($tempDir)) { static::raiseError(get_class($storage) . '::createTempDir() has not returned a valid directory!'); return false; } foreach ($pages as $id => $page) { try { $objects = $page->getXObjects(); } catch (\Exception $e) { $this->unlinkDirectory($tempDir); static::raiseError(get_class($page) . '::getXObjects() returned false!', false, $e); return false; } foreach ($objects as $id => $object) { if (!is_a($object, 'Smalot\\PdfParser\\XObject\\Image')) { continue; } try { $content = $object->getContent(); } catch (\Exception $e) { $this->unlinkDirectory($tempDir); static::raiseError(get_class($object) . '::getContent() returned false!', false, $e); return false; } if (!($tempFile = tempnam($tempDir, 'pdfcontent_'))) { $this->unlinkDirectory($tempDir); static::raiseError(__METHOD__ . '(), tempnam() returned false!'); return false; } if (!file_put_contents($tempFile, $content)) { $this->unlinkDirectory($tempDir); static::raiseError(__METHOD__ . '(), file_put_contents() returned false!'); return false; } } } if (($text = $this->ocr->scanDirectory($tempDir)) === false) { static::raiseError(get_class($this->ocr) . '::scanDirectory() returned false!'); return false; } if (!$this->unlinkDirectory($tempDir)) { static::raiseError(__CLASS__ . '::unlinkDirectory() returned false!'); return false; } if (!isset($text) || empty($text) || !is_array($text)) { return array(); } return $text; }
public function archive(&$queue_item) { global $config, $audit, $mbus; // verify QueueItemModel is ok() if (!$queue_item->verify()) { static::raiseError("QueueItemModel::verify() returned false!"); return false; } if ($queue_item->isProcessing()) { static::raiseError(__METHOD__ . '(), QueueItemModel already in processing!'); return false; } if (!$queue_item->setProcessingFlag(true)) { static::raiseError(get_class($queue_item) . '::setProcessingFlag() returned false!'); return false; } if (!$queue_item->save()) { static::raiseError(get_class($queue_item) . '::save() returned false!'); return false; } try { $document = new \Mtlda\Models\DocumentModel(); } catch (\Exception $e) { static::raiseError("Failed to load DocumentModel!"); return false; } try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError("Failed to load StorageController!"); return false; } try { $audit->log("archiving requested", "archive", "storage", $queue_item->getGuid()); } catch (\Exception $e) { static::raiseError("AuditController::log() returned false!"); return false; } if (($fields = $queue_item->getFields()) === false) { static::raiseError(get_class($queue_item) . '::getModelFields() returned false!'); return false; } if (!is_array($fields) || empty($fields)) { static::raiseError(get_class($queue_item) . '::getModelFields() returned no fields!'); return false; } $fields_to_skip = array('idx', 'state', 'in_processing', 'keywords'); // copy fields from QueueItemModel to DocumentModel foreach ($fields as $queue_field => $queue_field_prop) { // fields we skip if (in_array($queue_field, $fields_to_skip)) { continue; } $document_field = str_replace("queue_", "document_", $queue_field); if (!$document->setFieldValue($document_field, $queue_field_prop['value'])) { static::raiseError(get_class($document) . '::setFieldValue() returned false!'); return false; } } if (!$document->hasTitle()) { if (!$document->hasFileName()) { static::raiseError(__METHOD__ . '(), document has no title nor a filename!'); return false; } if (($name = $document->getFileName()) === false) { static::raiseError(get_class($document) . '::getFileName() returned false!'); return false; } if (!$document->setTitle($document->getFileName())) { static::raiseError(get_class($document) . '::setTitle() returned false!'); return false; } } if (!$document->setVersion('1')) { static::raiseError(get_class($document) . '::setVersion() returned false!'); return false; } //$document->document_derivation = ''; //$document->document_derivation_guid = ''; if (($fqfn_src = $queue_item->getFilePath()) === false) { static::raiseError(get_class($queue_item) . '::getFilePath() returned false!'); return false; } if (($fqfn_dst = $document->getFilePath()) === false) { static::raiseError(get_class($queue_item) . '::getFilePath() returned false!'); return false; } if (!$mbus->sendMessageToClient('archive-reply', 'Moving document to archive store.', '30%')) { static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!'); return false; } // create the target directory structure if (!$storage->createDirectoryStructure(dirname($fqfn_dst))) { static::raiseError("StorageController::createDirectoryStructure() returned false!"); return false; } try { $audit->log("using {$fqfn_dst} as destination", "archive", "storage", $queue_item->getGuid()); } catch (\Exception $e) { static::raiseError("AuditController::log() returned false!"); return false; } if (!$storage->copyFile($fqfn_src, $fqfn_dst)) { static::raiseError("StorageController::copyFile() returned false!"); return false; } if (!$mbus->sendMessageToClient('archive-reply', 'Saving document.', '40%')) { static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!'); return false; } // safe DocumentModel to database, remove the file from archive again if (!$document->save()) { static::raiseError("DocumentModel::save() returned false!"); if (!$storage->deleteItemFile($document)) { static::raiseError("StorageController::deleteItemFile() returned false!"); } return false; } // transfer keywords if ($queue_item->hasKeywords()) { if (($keywords = $queue_item->getKeywords()) === false) { static::raiseError(get_class($queue_item) . '::getKeywords() returned false!'); return false; } if (isset($keywords) && is_array($keywords)) { if (!$document->setKeywords($keywords)) { static::raiseError(get_class($document) . '::setKeywords() returned false!'); return false; } } } // delete QueueItemModel from database, if that fails revert if (!$queue_item->delete()) { static::raiseError("DocumentModel::delete() returned false!"); if (!$document->delete()) { static::raiseError("QueueItemModel::delete() returned false!"); } return false; } if (!$mbus->sendMessageToClient('archive-reply', 'Embeding seal icon into document.', '50%')) { static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!'); return false; } if ($config->isEmbeddingMtldaIcon()) { if (!$this->embedMtldaIcon($document)) { static::raiseError("embedMtldaIcon() returned false!"); return false; } if (!$document->refresh()) { static::raiseError("DocumentModel::refresh() returned false!"); return false; } } if ($config->isPdfIndexingEnabled() && ($document->hasIndices() || !$document->hasProperties())) { if (!$mbus->sendMessageToClient('archive-reply', 'Indexing document content.', '60%')) { static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!'); return false; } $state = $mbus->suppressOutboundMessaging(true); if (!$this->indexDocument($document)) { static::raiseError('indexDocument() returned false!'); return false; } $mbus->suppressOutboundMessaging($state); } // if no more actions are necessary, we are done if (!$config->isPdfSigningEnabled()) { return true; } // if auto-signing is not enabled, we are done here if (!$config->isPdfAutoPdfSignOnImport()) { return true; } if (!$mbus->sendMessageToClient('archive-reply', 'Signing document.', '80%')) { static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!'); return false; } $state = $mbus->suppressOutboundMessaging(true); if (!$this->sign($document)) { static::raiseError(__CLASS__ . "::sign() returned false!"); return false; } $mbus->suppressOutboundMessaging($state); return true; }
public function showItem($id, $guid) { global $mtlda; if (empty($id) || !$mtlda->isValidId($id)) { static::raiseError("Require a valid \$id to show!"); return false; } if (empty($guid) || !$mtlda->isValidGuidSyntax($guid)) { static::raiseError("Require a valid \$guid to show!"); return false; } try { $item = new \Mtlda\Models\QueueItemModel(array('idx' => $id, 'guid' => $guid)); } catch (\Exception $e) { static::raiseError("Failed to load QueueItemModel({$id}, {$guid})!"); return false; } try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError("Failed to load StorageController!"); return false; } if (!($file = $storage->retrieveFile($item))) { static::raiseError("StorageController::retrieveFile() returned false!"); return false; } if (!isset($file) || empty($file) || !is_array($file) || !isset($file['hash'], $file['content']) || empty($file['hash']) || empty($file['content'])) { static::raiseError("StorageController::retireveFile() returned an invalid file"); return false; } if (strlen($file['content']) != $item->getFileSize()) { static::raiseError("File size of retrieved file does not match archive record!"); return false; } if ($file['hash'] != $item->getFileHash()) { static::raiseError("File hash of retrieved file does not match archive record!"); return false; } header('Content-Type: application/pdf'); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); header('Content-Length: ' . strlen($file['content'])); print $file['content']; return true; }