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

478 lines
16 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
namespace frontend\controllers;
use Yii;
use yii\helpers\Url;
use dataModel;
//必须添加这一句以便引入dataModel外部类库
require dirname(__FILE__) . '/_public/public.php';
class SearchController extends \yii\web\Controller
{
public $enableCsrfValidation = FALSE;//取消对POST数据的csrf令牌验证
public function actionIndex()
{
global $_GPC;
global $_HI;
global $_FM;
$_HI['action'] = 'index';
require dirname(__FILE__) . '/SettingController/index.php';
}
public function actionGet()
{
global $_GPC;
global $_HI;
global $_FM;
global $START_TIME;
$_HI['action'] = 'get';
//数据取出方法
$dataGet = $_FM['get']; //GET进来的参数
$dataPost = $_FM['post']; //POST进来的参数
$data = array();
$data['addons'] = array();
$data['sqls'] = array();
require dirname(__FILE__) . '/_public/plat.php';
$dbmodel = new dataModel;
$data = $dbmodel->data_filter($dataPost);
$connection = yii::$app->db;
$tablePre = 's';
$table = 'metadata';
$s_sn = 0;
$f_sn = 0;
$o_sn = 0;
$s_sn_title = Yii::t('frontend', 'Default Metadata s_sn_title');
$f_sn_title = Yii::t('frontend', 'Default Metadata f_sn_title');
$o_sn_title = Yii::t('frontend', 'Default Metadata o_sn_title');
$return = array();
$errorCode = 0;
require dirname(__FILE__) . '/_public/s_sn.php'; //取$s_sn
//搜索模型数据每个站点仅需一个至此s_sn已经更新
switch ($ac) {
case 'model'; //模型数据返回param列表
$sn = $s_sn;
require dirname(__FILE__) . '/_public/get_self.php';
$record_self = $result;
require dirname(__FILE__) . '/_public/get_param.php';
$errorCode = 0;
$record_param = $result;
$record = $record_self;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['title', 'status', 'deleted'];
foreach ($reset as $kk) {
if (isset($record['params'][$kk])) {
$record[$kk] = $record['params'][$kk];
}
}
$list = array();
$list[] = $record;
$record = $list;
break;
case 'instance'; //实例数据根据条件返回form表中的数据\param列表
$s_sn = isset($data['addons']['s_sn']) ? intval($data['addons']['s_sn']) : 0;
$f_sn = isset($data['addons']['f_sn']) ? intval($data['addons']['f_sn']) : 0;
require dirname(__FILE__) . '/_public/list_form.php';
$list = $result;
if ($errorCode == 0) {
foreach ($list as $k => &$v) {
$record_form = $v;
//取默认参数
$f_sn = 0;
require dirname(__FILE__) . '/_public/get_param.php';
$record_param_default = $result;
//取当前表单的指定参数
$f_sn = $record_form['sn'];
require dirname(__FILE__) . '/_public/get_param.php';
$record_param_private = $result;
$record_param = array_merge($record_param_default, $record_param_private);
//读取默认参数并在写入params后重置
if (isset($record_param_default['default'])) {
foreach ($record_param_default['default'] as $kk => $vv) {
if (isset($record_param[$kk]) && is_array($record_param[$kk]) && is_array($vv)) {
$record_param[$kk] = array_merge($vv, $record_param[$kk]);
} else if (!isset($record_param[$kk])) {
$record_param[$kk] = $vv;
}
}
unset($record_param['default']);
}
$record = $record_form;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['status', 'deleted'];
foreach ($reset as $kk) {
if (isset($record['params'][$kk])) {
$record[$kk] = $record['params'][$kk];
}
}
$v = $record;
}
unset($v);
$errorCode = 0;
}
$record = $list;
break;
case 'content'; //内容数据根据条件返回order表中的数据\addon列表
$f_sn = isset($data['addons']['f_sn']) ? intval($data['addons']['f_sn']) : 0;
$o_sn = isset($data['addons']['o_sn']) ? intval($data['addons']['o_sn']) : 0;
require dirname(__FILE__) . '/_public/list_order.php';
$list = $result;
if ($errorCode == 0) {
foreach ($list as $k => &$v) {
$record_form = $v;
//取默认参数
$o_sn = 0;
require dirname(__FILE__) . '/_public/get_addon.php';
$record_param_default = $result;
//取当前表单的指定参数
$o_sn = $record_form['sn'];
require dirname(__FILE__) . '/_public/get_addon.php';
$record_param_private = $result;
$record_param = array_merge($record_param_default, $record_param_private);
//读取默认参数并在写入params后重置
if (isset($record_param_default['default'])) {
foreach ($record_param_default['default'] as $kk => $vv) {
if (isset($record_param[$kk]) && is_array($record_param[$kk]) && is_array($vv)) {
$record_param[$kk] = array_merge($vv, $record_param[$kk]);
} else if (!isset($record_param[$kk])) {
$record_param[$kk] = $vv;
}
}
unset($record_param['default']);
}
$record = $record_form;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['status', 'deleted'];
foreach ($reset as $kk) {
if (isset($record['params'][$kk])) {
$record[$kk] = $record['params'][$kk];
}
}
$v = $record;
}
$errorCode = 0;
}
$record = $list;
break;
default:
break;
}
$return['errorcode'] = $errorCode;
$return['msg'] = Yii::t('errorcode', $errorCode);
$return['data'] = isset($record) ? $record : '';
$return['timeused'] = getMillisecond() - $START_TIME;
$return['total'] = isset($count) ? $count : 1;//总记录数
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
fmFunc_stat_times_out($username = $_FM['user']['name'], 1); //增加一次接口出站次数累计
fmFunc_stat_bytes_out($username = $_FM['user']['name'], $return['bytes']); //增加一次接口出站数据量累计
return json_encode($return);
}
public function actionDetail()
{
global $_GPC;
global $_HI;
global $_FM;
global $START_TIME;
$_HI['action'] = 'detail';
//取单条数据详情
$dataGet = $_FM['get']; //GET进来的参数
$dataPost = $_FM['post']; //POST进来的参数
$data = array();
$data['addons'] = array();
require dirname(__FILE__) . '/_public/plat.php';
$dbmodel = new dataModel;
$data = $dbmodel->data_filter($dataPost);
$connection = yii::$app->db;
$tablePre = 's';
$table = 'metadata';
$s_sn = 0;
$f_sn = 0;
$o_sn = 0;
$s_sn_title = Yii::t('frontend', 'Default Metadata s_sn_title');
$f_sn_title = Yii::t('frontend', 'Default Metadata f_sn_title');
$o_sn_title = Yii::t('frontend', 'Default Metadata o_sn_title');
$return = array();
$errorCode = 0;
require dirname(__FILE__) . '/_public/s_sn.php'; //取$s_sn
//搜索模型数据每个站点仅需一个至此s_sn已经更新
switch ($ac) {
case 'model'; //模型返回self表与param表数据
$sn = $s_sn;
$errorCode = 0;
if ($sn) {
require dirname(__FILE__) . '/_public/get_self.php';
$record_self = $result;
if ($errorCode == 0) {
$s_sn = $sn;
require dirname(__FILE__) . '/_public/get_param.php';
$errorCode = 0;
$record_param = $result;
$record = $record_self;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['title', 'status', 'deleted'];
foreach ($reset as $k) {
if (isset($record['params'][$k])) {
$record[$k] = $record['params'][$k]; //重设标题
}
}
}
} else {
$errorCode = 45300304;
$record = $data['addons'];
}
break;
case 'instance'; //实例返回form表\param表
$sn = isset($data['addons']['sn']) ? intval($data['addons']['sn']) : 0;
$errorCode = 0;
if ($sn) {
require dirname(__FILE__) . '/_public/get_form.php';
$record_self = $result;
if ($errorCode == 0) {
//取默认参数
require dirname(__FILE__) . '/_public/get_param.php';
$record_param_default = $result;
//取当前表单的指定参数
$f_sn = $sn;
require dirname(__FILE__) . '/_public/get_param.php';
$record_param_private = $result;
$record_param = array_merge($record_param_default, $record_param_private);
//读取默认参数并在写入params后重置
if (isset($record_param_default['default'])) {
foreach ($record_param_default['default'] as $kk => $vv) {
if (isset($record_param[$kk]) && is_array($record_param[$kk]) && is_array($vv)) {
$record_param[$kk] = array_merge($vv, $record_param[$kk]);
} else if (!isset($record_param[$kk])) {
$record_param[$kk] = $vv;
}
unset($record_param['default'][$kk]); //只对在模型中定义的默认参数进行重置
}
unset($record_param['default']); //重置全部默认参数
}
$record = $record_self;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['status', 'deleted'];
foreach ($reset as $k) {
if (isset($record['params'][$k])) {
$record[$k] = $record['params'][$k]; //重设标题
}
}
$errorCode = 0;
}
} else {
$errorCode = 45300304;
$record = $data['addons'];
}
break;
case 'content'; //内容返回order表\addon表数据
$f_sn = isset($data['addons']['f_sn']) ? intval($data['addons']['f_sn']) : 0;
$sn = isset($data['addons']['sn']) ? intval($data['addons']['sn']) : 0;
$errorCode = 0;
if ($sn) {
require dirname(__FILE__) . '/_public/get_order.php';
$record_self = $result;
if ($errorCode == 0) {
//取默认参数
require dirname(__FILE__) . '/_public/get_addon.php';
$record_param_default = $result;
//取当前表单的指定参数
$o_sn = $sn;
require dirname(__FILE__) . '/_public/get_addon.php';
$record_param_private = $result;
$record_param = array_merge($record_param_default, $record_param_private);
//读取默认参数并在写入params后重置
if (isset($record_param_default['default'])) {
foreach ($record_param_default['default'] as $kk => $vv) {
if (isset($record_param[$kk]) && is_array($record_param[$kk]) && is_array($vv)) {
$record_param[$kk] = array_merge($vv, $record_param[$kk]);
} else if (!isset($record_param[$kk])) {
$record_param[$kk] = $vv;
}
}
unset($record_param['default']);
}
$record = $record_self;
$record['params'] = $record_param;
//需要重设的字段
$reset = ['status', 'deleted'];
foreach ($reset as $k) {
if (isset($record['params'][$k])) {
$record[$k] = $record['params'][$k]; //重设标题
}
}
$errorCode = 0;
}
} else {
$errorCode = 45300306;
$record = $data['addons'];
}
break;
default:
$errorCode = 4530039999;
break;
}
$return['errorcode'] = $errorCode;
$return['msg'] = Yii::t('errorcode', $errorCode);
$return['data'] = isset($record) ? $record : '';
$return['timeused'] = getMillisecond() - $START_TIME;
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
fmFunc_stat_times_out($username = $_FM['user']['name'], 1); //增加一次接口出站次数累计
fmFunc_stat_bytes_out($username = $_FM['user']['name'], $return['bytes']); //增加一次接口出站数据量累计
return json_encode($return);
}
public function actionSave()
{
global $_GPC;
global $_HI;
global $_FM;
global $START_TIME;
$_HI['action'] = 'save';
//数据保存方法
$dataGet = $_FM['get']; //GET进来的参数
$dataPost = $_FM['post']; //POST进来的参数
$data = array();
$data['addons'] = array();
require dirname(__FILE__) . '/_public/plat.php';
$dbmodel = new dataModel;
$data = $dbmodel->data_filter($dataPost); //过滤后的可用值
$inbytes = strlen(json_encode($data));//长度字节统计
fmFunc_stat_times_in($username = $_FM['user']['name'], 1); //增加一次接口入站次数累计
fmFunc_stat_bytes_in($username = $_FM['user']['name'], $inbytes); //增加一次接口入站数据量累计
$connection = yii::$app->db;
$tablePre = 's';
$table = 'metadata';
$s_sn = 0;
$f_sn = 0;
$o_sn = 0;
$s_sn_title = Yii::t('frontend', 'Default Page s_sn_title');
$f_sn_title = Yii::t('frontend', 'Default Page f_sn_title');
$o_sn_title = Yii::t('frontend', 'Default Page o_sn_title');
$return = array();
$errorCode = 0;
$return['errorcode'] = $errorCode;
$return['msg'] = '已保存';
require dirname(__FILE__) . '/_public/s_sn.php'; //取$s_sn
//搜索模型数据每个站点仅需一个至此s_sn已经更新
switch ($ac) {
case 'model'; //模型数据保存到self与param表
//写param表
require dirname(__FILE__) . '/_public/save_param.php';
//返回模型SN
$record = $s_sn;
break;
case 'instance'; //实例数据保存到form与param表
$f_sn = isset($data['addons']['sn']) ? intval($data['addons']['sn']) : 0;
if (isset($data['addons']['sn']) && intval($data['addons']['sn']) > 0) {
//传入了非0SN即是对指定数据进行修改
require dirname(__FILE__) . '/_public/update_form.php';
} else if (isset($data['addons']['sn']) && intval($data['addons']['sn']) == 0) {
//传入了0SN即是新建一个数据
require dirname(__FILE__) . '/_public/new_form.php';
} else {
//未传入SN时从服务器取出一个未取到时自动新建
require dirname(__FILE__) . '/_public/f_sn.php';
}
//写param表
require dirname(__FILE__) . '/_public/save_param.php';
//返回模型SN
$record = $f_sn;
break;
case 'content'; //内容数据保存到order与addon表
$f_sn = isset($data['addons']['f_sn']) ? intval($data['addons']['f_sn']) : 0;
$o_sn = isset($data['addons']['sn']) ? intval($data['addons']['sn']) : 0;
if (isset($data['addons']['sn']) && intval($data['addons']['sn']) > 0) {
//传入了非0SN即是对指定数据进行修改
require dirname(__FILE__) . '/_public/update_order.php';
} else if (isset($data['addons']['sn']) && intval($data['addons']['sn']) == 0) {
//传入了0SN即是新建一个数据
require dirname(__FILE__) . '/_public/new_order.php';
} else {
//未传入SN时从服务器取出一个未取到时自动新建
require dirname(__FILE__) . '/_public/o_sn.php';
}
//写addon表
require dirname(__FILE__) . '/_public/save_addon.php';
//返回模型SN
$record = $o_sn;
break;
default:
break;
}
if ($errorCode > 0) {
$return['msg'] = Yii::t('errorcode', $errorCode);
}
$return['data'] = isset($record) ? $record : '';
$return['timeused'] = getMillisecond() - $START_TIME;
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
fmFunc_stat_times_out($username = $_FM['user']['name'], 1); //增加一次接口出站次数累计
fmFunc_stat_bytes_out($username = $_FM['user']['name'], $return['bytes']); //增加一次接口出站数据量累计
return json_encode($return);
}
}