fm453 314745edf8 优化ctms-api语法、修复已知BUG;
主要修复ctms-api、dacms对PHP新版本的支持问题
2025-04-10 23:19:15 +08:00

128 lines
4.5 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
//OK
//设置param表数据
$suffix = 'param';
$tableName = $tablePre . '_' . $table . '_' . $suffix;
$condition = "";
$params = array();
$partnerid = isset($data['partnerid']) ? $data['partnerid'] : 0;
$settingData = $dbmodel->data_format($data['addons'], $suffix);
$column = "id";
$condition .= "`f_sn` = :f_sn";
$params[':f_sn'] = $f_sn;
$condition .= " AND ";
$condition .= "`s_sn` = :s_sn";
$params[':s_sn'] = $s_sn;
$condition .= " AND ";
$condition .= "`siteid` = :siteid";
$params[':siteid'] = $siteId;
$condition .= " AND ";
$condition .= "`platid` = :platid";
$params[':platid'] = $platid;
$condition .= " AND ";
$condition .= "`uniacid` = :uniacid";
$params[':uniacid'] = $uniacid;
$condition .= " AND ";
$condition .= "`shopid` = :shopid";
$params[':shopid'] = $shopid;
$i = 0;
$temp = array();
$temp['keys'] = array();
$temp['titles'] = array();
$temp_condition = $condition;
foreach ($settingData as $v_k => $value) {
$i++;
$record = array();
$_temp_condition = '';
$condition = '';
$condition .= " AND ";
$condition .= "`setfor` = :setfor";
$params[':setfor'] = $value['setfor'];
if (!isset($temp['keys'][$value['setfor']])) {
$temp['keys'][$value['setfor']] = [];
}
if (!isset($temp['titles'][$value['setfor']])) {
$temp['titles'][$value['setfor']] = [];
}
//170702补充——增强修复参数title键为数字时的保存命令
if (is_numeric($value['title'])) {
$_temp_titles = $temp['titles'][$value['setfor']];
if (count($_temp_titles) == 0) {
$record['deleted'] = 1;
$record['updatetime'] = $_FM['timestamp'];
$_temp_condition = $temp_condition . $condition;
unset($params[':key']);
$result = fmFunc_pdo_yii_update($connection, $tableName, $record, $_temp_condition, $params);
}
array_push($temp['titles'][$value['setfor']], $value['title']);
}
$condition .= " AND ";
$condition .= "`title` = :title";
$params[':title'] = $value['title'];
if (!isset($temp['keys'][$value['setfor']][$value['title']])) {
$temp['keys'][$value['setfor']][$value['title']] = [];
}
//170419补充——针对参数key键为数字的情况判定其父级数组需完全被该次所传入之的参数数组替代因为要删除掉无关键设置deleted为1
//170501补充——增强修复参数key键为数字时的保存命令
if (is_numeric($value['key'])) {
$_temp_keys = $temp['keys'][$value['setfor']][$value['title']];
if (count($_temp_keys) == 0) {
$record['deleted'] = 1;
$record['updatetime'] = $_FM['timestamp'];
$_temp_condition = $temp_condition . $condition;
unset($params[':key']);
$result = fmFunc_pdo_yii_update($connection, $tableName, $record, $_temp_condition, $params);
}
array_push($temp['keys'][$value['setfor']][$value['title']], $value['key']);
}
$condition .= " AND ";
$condition .= "`key` = :key";
$params[':key'] = $value['key'];
$condition = $temp_condition . $condition;
$id = fmFunc_pdo_yii_fetchcolumn($connection, $tableName, $column, $condition, $params);
$record['value'] = $value['value'];
//170722 补充-value键值超过mysql的text最大长度65535时改为使用文件存储的方式
if (isset($value['value']{65535})) {
$filename = $siteId . '/' . $uniacid . '/' . $platid . '_' . $shopid . '_' . $f_sn . '_' . $s_sn . '_' . $suffix . '_' . $value['setfor'] . '_' . $value['title'] . '_' . $value['key'];
fmFunc_file_dataWrite($filename, $value['value'], $uri = NULL, $origin_cache_key = NULL);
$record['value'] = $filename . '.php';
}
if ($id) {
$record['deleted'] = 0;
$record['updatetime'] = $_FM['timestamp'];
fmFunc_pdo_yii_update($connection, $tableName, $record, $condition, $params);
} else {
$record['setfor'] = $value['setfor'];
$record['title'] = $value['title'];
$record['key'] = $value['key'];
$record['f_sn'] = $f_sn;
$record['s_sn'] = $s_sn;
$record['sn'] = getMillisecond() * 10;
$record['sn'] = intval($record['sn']);
$record['siteid'] = $siteId;
$record['platid'] = $platid;
$record['uniacid'] = $uniacid;
$record['shopid'] = $shopid;
$record['partnerid'] = $partnerid;
$record['displayorder'] = isset($data['displayorder']) ? $data['displayorder'] : 0;
$record['status'] = isset($data['status']) ? $data['status'] : 1;
$record['statuscode'] = isset($data['statuscode']) ? $data['statuscode'] : 64;
$record['deleted'] = 0;
$record['createtime'] = $_FM['timestamp'];
$record['updatetime'] = $_FM['timestamp'];
fmFunc_pdo_yii_insert($connection, $tableName, $record);
}
}