protected function preDelete() { if (!$this->removeAssignedKeywords()) { static::raiseError(__CLASS__ . '::removeAssignedKeywords() returned false!'); return false; } if (!$this->deleteAllDocumentIndices()) { static::raiseError(__CLASS__ . '::deleteAllDocumentIndices() returned false!'); return false; } if (!$this->deleteAllDocumentProperties()) { static::raiseError(__CLASS__ . '::deleteAllDocumentProperties() returned false!'); return false; } // load StorageController $storage = new \Mtlda\Controllers\StorageController(); if (!$storage) { static::raiseError(__METHOD__ . '(), failed to load StorageController!'); return false; } if (!$storage->deleteItemFile($this)) { static::raiseError(get_class($storage) . '::deleteItemFile() returned false!'); return false; } return true; }
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; }
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; }