示例#1
0
 protected function handleSignRequest($job)
 {
     global $mtlda, $mbus, $config;
     if (!$mbus->sendMessageToClient('sign-reply', 'Preparing', '10%')) {
         static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
         return false;
     }
     if (!$config->isPdfSigningEnabled()) {
         static::raiseError(get_class($config) . '::isPdfSigningEnabled() returned false!');
         return false;
     }
     if (empty($job) || !is_a($job, 'Thallium\\Models\\JobModel')) {
         static::raiseError(__METHOD__ . '(), requires a JobModel reference as parameter!');
         return false;
     }
     if (!$job->hasParameters() || ($sign_request = $job->getParameters()) === false) {
         static::raiseError(get_class($job) . '::getParameters() returned false!');
         return false;
     }
     if (!is_object($sign_request)) {
         static::raiseError(get_class($job) . '::getParameters() returned invalid data!');
         return false;
     }
     if (!isset($sign_request->id) || empty($sign_request->id) || !isset($sign_request->guid) || empty($sign_request->guid)) {
         static::raiseError(__METHOD__ . '() sign-request is incomplete!');
         return false;
     }
     if (!$mtlda->isValidId($sign_request->id)) {
         static::raiseError(__METHOD__ . '() \\$id is invalid!');
         return false;
     }
     if (!$mtlda->isValidGuidSyntax($sign_request->guid)) {
         static::raiseError(__METHOD__ . '() \\$guid is invalid!');
         return false;
     }
     if (!$mbus->sendMessageToClient('sign-reply', 'Loading document', '20%')) {
         static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
         return false;
     }
     try {
         $signer = new \Mtlda\Controllers\PdfSigningController();
     } catch (\Exception $e) {
         static::raiseError(__METHOD__ . '(), failed to load PdfSigningController!', false, $e);
         return false;
     }
     try {
         $document = new \Mtlda\Models\DocumentModel(array('idx' => $sign_request->id, 'guid' => $sign_request->guid));
     } catch (\Exception $e) {
         static::raiseError(__METHOD__ . ", unable to load DocumentModel!");
         return false;
     }
     if (!$signer->signDocument($document)) {
         static::raiseError(get_class($signer) . '::signDocument() returned false!');
         return false;
     }
     if (!$mbus->sendMessageToClient('sign-reply', 'Done', '100%')) {
         static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
         return false;
     }
     return true;
 }
示例#2
0
 public function sign(&$src_item)
 {
     global $config, $audit, $mbus;
     if (!$config->isPdfSigningEnabled()) {
         static::raiseError("ConfigController::isPdfSigningEnabled() returns false!");
         return false;
     }
     try {
         $signer = new \Mtlda\Controllers\PdfSigningController();
     } catch (\Exception $e) {
         static::raiseError("Failed to load PdfSigningController");
         return false;
     }
     try {
         $storage = new \Mtlda\Controllers\StorageController();
     } catch (\Exception $e) {
         static::raiseError("Failed to load StorageController!");
         return false;
     }
     try {
         $signing_item = new \Mtlda\Models\DocumentModel();
     } catch (\Exception $e) {
         static::raiseError("Failed to load DocumentModel!");
         return false;
     }
     if (!$mbus->sendMessageToClient('sign-reply', 'Deriving copy of orignal document', '30%')) {
         static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
         return false;
     }
     if (!$signing_item->createClone($src_item)) {
         static::raiseError(__METHOD__ . " unable to clone DocumentModel!");
         return false;
     }
     try {
         $audit->log(__METHOD__, "read", "archive", $src_item->getGuid());
     } catch (\Exception $e) {
         $signing_item->delete();
         static::raiseError("AuditController::log() raised an exception!");
         return false;
     }
     // we need to save once so the database id is written back to the document_idx field.
     if (!$signing_item->save()) {
         static::raiseError(get_class($signing_item) . '::save() returned false!');
         return false;
     }
     // append a suffix to new cloned file
     $signing_item->setFileName(str_replace(".pdf", "_signed.pdf", $signing_item->getFileName()));
     $signing_item->setDerivationId($src_item->getIdx());
     $signing_item->setDerivationGuid($src_item->getGuid());
     if (!$signing_item->save()) {
         static::raiseError(get_class($signing_item) . '::save() returned false!');
         return false;
     }
     if ($config->isPdfSigningAttachAuditLogEnabled()) {
         if (!$this->attachAuditLogToDocument($signing_item)) {
             $signing_item->delete();
             static::raiseError(__CLASS__ . '::attachAuditLogToDocument() returned false!');
             return false;
         }
     }
     if (!$signer->signDocument($signing_item)) {
         $signing_item->delete();
         static::raiseError("PdfSigningController::ѕignDocument() returned false!");
         return false;
     }
     if (!$mbus->sendMessageToClient('sign-reply', 'Refreshing document information', '90%')) {
         static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
         return false;
     }
     if (!$signing_item->refresh()) {
         $signing_item->delete();
         static::raiseError(get_class($signing_item) . '::refresh() returned false!');
         return false;
     }
     if (!$signing_item->setSignedCopy(true)) {
         static::raiseError(get_class($signing_item) . '::setSignedCopy() returned false!');
         return false;
     }
     if (!$signing_item->save()) {
         $signing_item->delete();
         static::raiseError(get_class($signing_item) . '::save() returned false!');
         return false;
     }
     try {
         $audit->log($src_item->getGuid(), "signed", "archive", $signing_item->getGuid());
     } catch (\Exception $e) {
         $signing_item->delete();
         static::raiseError("AuditController::log() raised an exception!");
         return false;
     }
     return true;
 }