diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Upload.php b/lib/Alchemy/Phrasea/Controller/Prod/Upload.php index 66f3e37469..0d1ef08332 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Upload.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Upload.php @@ -227,6 +227,13 @@ class Upload implements ControllerProviderInterface $element = 'record'; $message = _('The record was successfully created'); } else { + $params = array('lazaret_file' => $elementCreated); + + $appbox = \appbox::get_instance($app['Core']); + + $eventsManager = \eventsmanager_broker::getInstance($appbox, $app['Core']); + $eventsManager->trigger('__UPLOAD_QUARANTINE__', $params); + $id = $elementCreated->getId(); $element = 'lazaret'; $message = _('The file was moved to the quarantine'); diff --git a/lib/classes/eventsmanager/notify/uploadquarantine.class.php b/lib/classes/eventsmanager/notify/uploadquarantine.class.php new file mode 100644 index 0000000000..170ed92ae7 --- /dev/null +++ b/lib/classes/eventsmanager/notify/uploadquarantine.class.php @@ -0,0 +1,148 @@ +preserveWhiteSpace = false; + $domXML->formatOutput = true; + + $root = $domXML->createElement('datas'); + + //Sender + if (null !== $user = $lazaretFile->getSession()->getUser()) { + $sender = $domXML->createElement('sender'); + $sender->appendChild($domXML->createTextNode($user->get_display_name())); + $root->appendChild($sender); + + //Filename + $filename = $domXML->createElement('filename'); + $filename->appendChild($domXML->createTextNode($lazaretFile->getOriginalName())); + $root->appendChild($filename); + + //Reasons for quarantine + $reasons = $domXML->createElement('reasons'); + + foreach ($lazaretFile->getChecks() as $check) { + /* @var $check \Entities\LazaretCheck */ + $reason = $domXML->createElement('reason'); + $reason->appendChild($domXML->createTextNode($check->getMessage())); + $reasons->appendChild($reason); + } + + $root->appendChild($reasons); + + $domXML->appendChild($root); + + $datas = $domXML->saveXml(); + + $this->broker->notify($user->get_id(), __CLASS__, $datas); + } + } + + return; + } + + /** + * + * @param Array $datas + * @param boolean $unread + * @return Array + */ + public function datas($datas, $unread) + { + $sx = simplexml_load_string($datas); + + $reasons = array(); + + foreach ($sx->reasons as $reason) { + $reasons[] = (string) $reason->reason; + } + + $filename = (string) $sx->filename; + + $ret = array( + 'text' => sprintf(_('The document %s has been quarantined for the following reasons : %s'), $filename, implode(',', $reasons)), + 'class' => '' + ); + + return $ret; + } + + /** + * + * @return string + */ + public function get_name() + { + return _('Notificaton quarantine'); + } + + /** + * + * @return string + */ + public function get_description() + { + return _('be notified when a document is placed in quarantine'); + } + + /** + * + */ + public function email() + { + return false; + } + + /** + * + * @return boolean + */ + public function is_available() + { + return true; + } +}