From 7dd9330b1e9fe30cfce76a99d9aa3200be977f5a Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 21 Jun 2021 21:16:07 +0900 Subject: [PATCH] Add DocumentController::updateDocumentExtraVars() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 특정 확장변수의 값을 쉽게 업데이트할 수 있는 메소드 제공 - 확장변수 추가 또는 변경 메소드 호출시 var_idx 또는 eid 중 하나만 전달해도 되도록 개선 --- modules/document/document.controller.php | 108 +++++++++++++++++++++-- modules/document/document.model.php | 42 +++++++++ 2 files changed, 141 insertions(+), 9 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 339e918cd..bb9d1e360 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -1482,26 +1482,116 @@ class documentController extends document * Insert extra vaiable to the documents table * @param int $module_srl * @param int $document_srl - * @param int $var_idx + * @param int|string $idx_or_eid * @param mixed $value * @param int $eid * @param string $lang_code * @return Object|void */ - function insertDocumentExtraVar($module_srl, $document_srl, $var_idx, $value, $eid = null, $lang_code = '') + public static function insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null) { - if(!$module_srl || !$document_srl || !$var_idx || !isset($value)) return new BaseObject(-1, 'msg_invalid_request'); - if(!$lang_code) $lang_code = Context::getLangType(); - + if(!$module_srl || !$document_srl || !$idx_or_eid || !isset($value)) + { + return new BaseObject(-1, 'msg_invalid_request'); + } + + if (is_int($idx_or_eid) || ctype_digit($idx_or_eid)) + { + if (!$eid) + { + $eid = DocumentModel::getExtraVarEidByIdx($module_srl, $idx_or_eid); + if (!$eid) + { + return new BaseObject(-1, 'Invalid idx: ' . $idx_or_eid); + } + } + } + else + { + $eid = $idx_or_eid; + $idx_or_eid = DocumentModel::getExtraVarIdxByEid($module_srl, $eid); + if (!$idx_or_eid) + { + return new BaseObject(-1, 'Invalid eid: ' . $eid); + } + } + $obj = new stdClass; $obj->module_srl = $module_srl; $obj->document_srl = $document_srl; - $obj->var_idx = $var_idx; + $obj->var_idx = $idx_or_eid; $obj->value = $value; - $obj->lang_code = $lang_code; + $obj->lang_code = $lang_code ?: Context::getLangType(); $obj->eid = $eid; - executeQuery('document.insertDocumentExtraVar', $obj); + return executeQuery('document.insertDocumentExtraVar', $obj); + } + + /** + * Update extra vaiable in the documents table + * @param int $module_srl + * @param int $document_srl + * @param int|string $idx_or_eid + * @param mixed $value + * @param int $eid + * @param string $lang_code + * @return Object|void + */ + public static function updateDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null) + { + if(!$module_srl || !$document_srl || !$idx_or_eid || !isset($value)) + { + return new BaseObject(-1, 'msg_invalid_request'); + } + + if (is_int($idx_or_eid) || ctype_digit($idx_or_eid)) + { + if (!$eid) + { + $eid = DocumentModel::getExtraVarEidByIdx($module_srl, $idx_or_eid); + if (!$eid) + { + return new BaseObject(-1, 'Invalid idx: ' . $idx_or_eid); + } + } + } + else + { + $eid = $idx_or_eid; + $idx_or_eid = DocumentModel::getExtraVarIdxByEid($module_srl, $eid); + if (!$idx_or_eid) + { + return new BaseObject(-1, 'Invalid eid: ' . $eid); + } + } + + $obj = new stdClass; + $obj->module_srl = $module_srl; + $obj->document_srl = $document_srl; + $obj->var_idx = $idx_or_eid; + $obj->value = $value; + $obj->lang_code = $lang_code ?: Context::getLangType(); + $obj->eid = $eid; + + $oDB = DB::getInstance(); + $oDB->begin(); + + $output = self::deleteDocumentExtraVars($module_srl, $document_srl, $idx_or_eid, $lang_code, $eid); + if (!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + + $output = self::insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid, $lang_code); + if (!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + + $oDB->commit(); + return $output; } /** @@ -1513,7 +1603,7 @@ class documentController extends document * @param int $eid * @return $output */ - function deleteDocumentExtraVars($module_srl, $document_srl = null, $var_idx = null, $lang_code = null, $eid = null) + public static function deleteDocumentExtraVars($module_srl, $document_srl = null, $var_idx = null, $lang_code = null, $eid = null) { $obj = new stdClass(); $obj->module_srl = $module_srl; diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 4d759e6ba..85ab144a2 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -450,6 +450,48 @@ class documentModel extends document return $GLOBALS['XE_EXTRA_VARS'][$document_srl]; } + /** + * Get var_idx of extra variable from its eid + * + * @param int $module_srl + * @param string $eid + * @return int|false + */ + public static function getExtraVarIdxByEid($module_srl, $eid) + { + $keys = self::getExtraKeys($module_srl); + $keys = array_filter($keys, function($item) use($eid) { return $item->eid == $eid; }); + if (count($keys)) + { + return array_first($keys)->idx; + } + else + { + return false; + } + } + + /** + * Get eid of extra variable from its var_idx + * + * @param int $module_srl + * @param int $idx + * @return string|false + */ + public static function getExtraVarEidByIdx($module_srl, $var_idx) + { + $keys = self::getExtraKeys($module_srl); + $keys = array_filter($keys, function($item) use($var_idx) { return $item->idx == $var_idx; }); + if (count($keys)) + { + return array_first($keys)->eid; + } + else + { + return false; + } + } + /** * Show pop-up menu of the selected posts * Printing, scrap, recommendations and negative, reported the Add Features