From ca4e2d60e3c3299827e8f66bcde26cfb23b96591 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 1 Jan 2024 17:34:49 +0900 Subject: [PATCH] Fix #2221 add document.publishDocument (before/after) triggers that cover both insert and update --- modules/document/document.controller.php | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index a870da297..bd4bea860 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -641,6 +641,9 @@ class DocumentController extends Document $this->_checkDocumentStatusForOldVersion($obj); } + // Check publish status + $is_publish = $obj->status !== 'TEMP'; + // can modify regdate only manager $grant = Context::get('grant'); if(!$grant->manager) @@ -692,6 +695,16 @@ class DocumentController extends Document return $output; } + // Call publish trigger (before) + if ($is_publish) + { + $output = ModuleHandler::triggerCall('document.publishDocument', 'before', $obj); + if(!$output->toBool()) + { + return $output; + } + } + // Register it if no given document_srl exists if(!$obj->document_srl) { @@ -844,6 +857,10 @@ class DocumentController extends Document $obj->updated_file_count = $attachOutput->get('updated_file_count'); ModuleHandler::triggerCall('document.insertDocument', 'after', $obj); + if ($is_publish) + { + ModuleHandler::triggerCall('document.publishDocument', 'after', $obj); + } // commit $oDB->commit(); @@ -902,6 +919,9 @@ class DocumentController extends Document $this->_checkDocumentStatusForOldVersion($obj); } + // Check publish status (update from TEMP to non-TEMP) + $is_publish = ($obj->status !== 'TEMP' && $source_obj->get('status') === 'TEMP'); + // Preserve original author info. if ($source_obj->get('member_srl')) { @@ -938,6 +958,16 @@ class DocumentController extends Document return $output; } + // Call publish trigger (before) + if ($is_publish) + { + $output = ModuleHandler::triggerCall('document.publishDocument', 'before', $obj); + if(!$output->toBool()) + { + return $output; + } + } + if(!$obj->module_srl) $obj->module_srl = $source_obj->get('module_srl'); $document_config = ModuleModel::getModulePartConfig('document', $obj->module_srl); @@ -1186,6 +1216,10 @@ class DocumentController extends Document // Call a trigger (after) ModuleHandler::triggerCall('document.updateDocument', 'after', $obj); + if ($is_publish) + { + ModuleHandler::triggerCall('document.publishDocument', 'after', $obj); + } // commit $oDB->commit();