Files
ctms-yii/dacms-home/controllers/_public/list_form.php
T
fm453 037f274ec5 优化ctms-api语法、修复已知BUG;
主要修复ctms-api、dacms对PHP新版本的支持问题
2025-07-13 19:37:42 +08:00

191 lines
5.7 KiB
PHP
Executable File

<?php
//OK
//取form数据列表
$suffix = 'form';
$tableName = $tablePre . '_' . $table . '_' . $suffix;
$condition = "";
$params = array();
$columns = array('s_sn', 'platid', 'uniacid', 'shopid', 'partnerid', 'uid', 'sn', 'title', 'value', 'displayorder', 'status', 'deleted');
$condition .= "`siteid` = :siteid";
$params[':siteid'] = $siteId;
//跨平台搜索条件
if (isset($data['searching']['plat']) && $data['searching']['plat'] == $platid) {
$condition .= " AND ";
$condition .= "`platid` = :platid";
$params[':platid'] = $platid;
} else {
$condition .= " AND ";
$condition .= "`uniacid` = :uniacid";
$params[':uniacid'] = $uniacid;
}
$condition .= " AND ";
$condition .= "`shopid` = :shopid";
$params[':shopid'] = $shopid;
//增加搜索条件,取多s_sn查询
$issearching = isset($data['searching']) ? TRUE : FALSE;
$searching = array();
if ($issearching) {
$condition_searching = $condition;
$params_searching = $params;
//系统自带搜索条件约定(精确匹配)
if (isset($data['searching']['status'])) {
$condition_searching .= " AND ";
$condition_searching .= "`status` = :status";
$params_searching[':status'] = intval($data['searching']['status']);
}
if (isset($data['searching']['deleted'])) {
$condition_searching .= " AND ";
$condition_searching .= "`deleted` = :deleted";
$params_searching[':deleted'] = intval($data['searching']['deleted']);
}
//搜索条件filter参数过滤
if (isset($data['searching']['filter'])) {
foreach ($data['searching']['filter'] as $_k => $_v) {
$condition_searching .= " AND ";
$condition_searching .= "`key` = :key";
$params_searching[':key'] = $_k;
$condition_searching .= " AND ";
if (is_array($_v)) {
$x_condition = "(";
$x_i = count($_v);
foreach ($_v as $xk => $xv) {
$x_i--;
$x_condition .= "'" . serialize($xv) . "'";
if ($x_i > 0) {
$x_condition .= ",";
}
}
$x_condition .= ")";
$condition_searching .= "`value` IN " . $x_condition;
} else {
$condition_searching .= "`value` LIKE :value";
$params_searching[':value'] = '%' . serialize($_v) . '%';
}
}
}
//客户侧传入的额外搜索条件(模糊可选匹配)
if (isset($data['searching']['addons'])) {
foreach ($data['searching']['addons'] as $_k => $_v) {
$condition_searching .= " AND ";
$condition_searching .= "`key` = :key";
$params_searching[':key'] = $_k;
$condition_searching .= " AND ";
$condition_searching .= "`value` LIKE :value";
$params_searching[':value'] = '%' . serialize($_v) . '%';
$temp_tableName = $tablePre . '_' . $table . '_param';
$result = fmFunc_pdo_yii_getall($connection, $temp_tableName, array('s_sn'), $condition_searching, $params_searching, $limits = array(), $orders = array());
if ($result) {
foreach ($result as $_kk => $_vv) {
if ($_vv['s_sn'] != $s_sn) {
$searching[] = $_vv['s_sn'];
}
}
}
}
} else {
$temp_tableName = $tablePre . '_' . $table . '_param';
$result = fmFunc_pdo_yii_getall($connection, $temp_tableName, array('s_sn'), $condition_searching, $params_searching, $limits = array(), $orders = array());
if ($result) {
foreach ($result as $_kk => $_vv) {
if ($_vv['s_sn'] != $s_sn && !in_array($_vv['s_sn'], $searching)) {
$searching[] = $_vv['s_sn'];
}
}
}
}
}
$searching = array_unique($searching);
$issearching = (count($searching) == 0) ? FALSE : TRUE;
//传入了s_sn时,也作为搜索条件
if ($s_sn > 0) {
$condition .= " AND ";
$condition .= "`s_sn` = :s_sn";
$params[':s_sn'] = $s_sn;
} else if ($issearching) {
$s_sns = '';
foreach ($searching as $temp_s_sn) {
$s_sns .= $temp_s_sn . ",";
}
$s_sns .= $s_sns;
$condition .= " AND ";
$condition .= "`s_sn` IN (" . $s_sns . ")";
}
if ($issearching) {
$op = '';
}
switch ($op) {
case 'index': //取未删除、可用状态的数据
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = 1;
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
case 'unused': //取未删除、不可用状态的数据
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = 0;
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
case 'deleted': //取已删除数据
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 1;
break;
case 'all': //取未删除数据
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
default:
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
if (isset($data['searching']['status'])) {
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = $data['searching']['status'];
}
break;
}
//补充搜索条件
if (isset($data['searching']['keyword'])) {
$condition .= " AND ";
$condition .= "`title` LIKE :keyword";
$params[':keyword'] = '%' . $data['searching']['keyword'] . '%';
}
//数据分页
$limits = !empty($data['sqls']['limits']) ? $data['sqls']['limits'] : array();
//数据排序
$orders = !empty($data['sqls']['orders']) ? $data['sqls']['orders'] : array();
$result = fmFunc_pdo_yii_getall($connection, $tableName, $columns, $condition, $params, $limits, $orders = array());
if (!$result) {
$errorCode = 45300305;
}
$total = FmFunc_pdo_yii_getall($connection, $tableName, $columns = array('sn'), $condition, $params, $limits = array(), $orders = array());
$count = count($total);