Add numeric value column to extra vars, and add option to mark extra var as sortable #2604 #2559

This commit is contained in:
Kijin Sung 2025-10-23 11:17:24 +09:00
parent 978aecd7a8
commit 2a7eeebcbd
19 changed files with 141 additions and 37 deletions

View file

@ -846,7 +846,7 @@ class DocumentController extends Document
{
foreach($extra_keys as $idx => $extra_item)
{
$value = NULL;
$value = $sort_value = null;
if(isset($obj->{'extra_vars'.$idx}))
{
$tmp = $obj->{'extra_vars'.$idx};
@ -899,7 +899,11 @@ class DocumentController extends Document
}
$extra_vars[$extra_item->name] = $value;
$this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid);
if ($extra_item->type === 'number')
{
$sort_value = (int)$value;
}
$this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid, null, $sort_value);
}
}
@ -1229,7 +1233,7 @@ class DocumentController extends Document
{
foreach($extra_keys as $idx => $extra_item)
{
$value = NULL;
$value = $sort_value = null;
if(isset($obj->{'extra_vars'.$idx}))
{
$tmp = $obj->{'extra_vars'.$idx};
@ -1326,7 +1330,11 @@ class DocumentController extends Document
}
}
$extra_vars[$extra_item->name] = $value;
$this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid);
if ($extra_item->type === 'number')
{
$sort_value = (int)$value;
}
$this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid, null, $sort_value);
}
}
@ -1774,9 +1782,10 @@ class DocumentController extends Document
* @param int $eid
* @param string $var_is_strict
* @param array $var_options
* @param string $var_sort
* @return object
*/
function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '', $eid = 0, $var_is_strict = 'N', $var_options = null)
function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '', $eid = 0, $var_is_strict = 'N', $var_options = null, $var_sort = 'N')
{
if (!$module_srl || !$var_idx || !$var_name || !$var_type || !$eid)
{
@ -1791,6 +1800,7 @@ class DocumentController extends Document
$obj->var_is_required = $var_is_required=='Y'?'Y':'N';
$obj->var_is_strict = $var_is_strict=='Y'?'Y':'N';
$obj->var_search = $var_search=='Y'?'Y':'N';
$obj->var_sort = $var_sort=='Y'?'Y':'N';
$obj->var_default = $var_default;
$obj->var_options = $var_options ? json_encode($var_options, \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES) : null;
$obj->var_desc = $var_desc;
@ -1878,9 +1888,10 @@ class DocumentController extends Document
* @param mixed $value
* @param int $eid
* @param string $lang_code
* @return Object|void
* @param ?int $sort_value
* @return BaseObject
*/
public static function insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null)
public static function insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null, $sort_value = null)
{
if(!$module_srl || !$document_srl || !$idx_or_eid || !isset($value))
{
@ -1913,6 +1924,7 @@ class DocumentController extends Document
$obj->document_srl = $document_srl;
$obj->var_idx = $idx_or_eid;
$obj->value = $value;
$obj->sort_value = $sort_value;
$obj->lang_code = $lang_code ?: Context::getLangType();
$obj->eid = $eid;
@ -1927,9 +1939,10 @@ class DocumentController extends Document
* @param mixed $value
* @param int $eid
* @param string $lang_code
* @return Object|void
* @param ?int $sort_value
* @return BaseObject
*/
public static function updateDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null)
public static function updateDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid = null, $lang_code = null, $sort_value = null)
{
if(!$module_srl || !$document_srl || !$idx_or_eid || !isset($value))
{
@ -1957,13 +1970,10 @@ class DocumentController extends Document
}
}
$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;
if (!$lang_code)
{
$lang_code = Context::getLangType();
}
$oDB = DB::getInstance();
$oDB->begin();
@ -1975,7 +1985,7 @@ class DocumentController extends Document
return $output;
}
$output = self::insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid, $lang_code);
$output = self::insertDocumentExtraVar($module_srl, $document_srl, $idx_or_eid, $value, $eid, $lang_code, $sort_value);
if (!$output->toBool())
{
$oDB->rollback();
@ -1993,7 +2003,7 @@ class DocumentController extends Document
* @param int $var_idx
* @param string $lang_code
* @param int $eid
* @return $output
* @return BaseObject
*/
public static function deleteDocumentExtraVars($module_srl, $document_srl = null, $var_idx = null, $lang_code = null, $eid = null)
{
@ -2003,8 +2013,7 @@ class DocumentController extends Document
if(!is_null($var_idx)) $obj->var_idx = $var_idx;
if(!is_null($lang_code)) $obj->lang_code = $lang_code;
if(!is_null($eid)) $obj->eid = $eid;
$output = executeQuery('document.deleteDocumentExtraVars', $obj);
return $output;
return executeQuery('document.deleteDocumentExtraVars', $obj);
}