|
@@ -482,11 +482,11 @@ class Database
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (isset($v['option']) && strpos($v['search'], 'mul') !== false) {
|
|
|
- $config['manage']['search']['mul'][$k]['option'] = $v['option'];
|
|
|
- $config['manage']['search']['mul'][$k]['lang'] = $v['name'];
|
|
|
+ if (isset($v['option']) && strpos($v['search'], 'linkage') !== false) {
|
|
|
+ $config['manage']['search']['linkage'][$k]['option'] = $v['option'];
|
|
|
+ $config['manage']['search']['linkage'][$k]['lang'] = $v['name'];
|
|
|
if (isset($v['default'])) {
|
|
|
- $config['manage']['search']['mul'][$k]['default'] = $v['default'];
|
|
|
+ $config['manage']['search']['linkage'][$k]['default'] = $v['default'];
|
|
|
}
|
|
|
}
|
|
|
} elseif (isset($v['search']) && is_array($v['search'])) {
|
|
@@ -757,19 +757,20 @@ class Database
|
|
|
*
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function list_search_mul(&$result, $search, $name, $lang, $option, $default = false)
|
|
|
+ public function list_search_linkage(&$result, $search, $name, $lang, $option, $default = false)
|
|
|
{
|
|
|
$value = array();
|
|
|
$value['name'] = $name;
|
|
|
$value['lang'] = $lang;
|
|
|
$value['option'] = $option;
|
|
|
+ $value['search_state'] = true;
|
|
|
if (isset($search[$name])) {
|
|
|
$value['value'] = $search[$name];
|
|
|
}
|
|
|
if ($default) {
|
|
|
//$value['default'] = $default;
|
|
|
}
|
|
|
- $result .= Html::mul($value, 'span') . ' ';
|
|
|
+ $result .= Html::linkage($value, 'span') . ' ';
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -941,18 +942,28 @@ class Database
|
|
|
|
|
|
$result .= $node[0];
|
|
|
|
|
|
+ if (isset($config['manage']['search']['linkage'])) {
|
|
|
+ foreach ($config['manage']['search']['linkage'] as $k => $v) {
|
|
|
+ $this->list_search_linkage($result, $search, $prefix . 'linkage_' . $k, $v['lang'], $this->option($v['option']), $v['default']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (isset($config['manage']['search']['time'])) {
|
|
|
+ $this->list_search_br($result);
|
|
|
foreach ($config['manage']['search']['time'] as $k => $v) {
|
|
|
$this->list_search_time($result, $search, $prefix, $k, $v);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (isset($config['manage']['search']['date'])) {
|
|
|
+ $this->list_search_br($result);
|
|
|
foreach ($config['manage']['search']['date'] as $k => $v) {
|
|
|
$this->list_search_time($result, $search, $prefix, $k, $v, 'date');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
if (isset($config['manage']['search']['select'])) {
|
|
|
$this->list_search_br($result);
|
|
|
foreach ($config['manage']['search']['select'] as $k => $v) {
|
|
@@ -988,13 +999,6 @@ class Database
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (isset($config['manage']['search']['mul'])) {
|
|
|
- $this->list_search_br($result);
|
|
|
- foreach ($config['manage']['search']['mul'] as $k => $v) {
|
|
|
- $this->list_search_mul($result, $search, $prefix . 'option_' . $k, $v['lang'], $this->option($v['option']), $v['default']);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if (isset($config['manage']['search']['api'])) {
|
|
|
$this->list_search_br($result);
|
|
|
foreach ($config['manage']['search']['api'] as $k => $v) {
|
|
@@ -1429,22 +1433,40 @@ class Database
|
|
|
}
|
|
|
$fulltext = Dever::preInput('search_fulltext_');
|
|
|
if ($fulltext) {
|
|
|
- # like改为instr 不再需要%
|
|
|
- $search['search_fulltext_type'] = 2;
|
|
|
- $fix = '';
|
|
|
+ $fulltext_state = false;
|
|
|
foreach ($fulltext as $k => $v) {
|
|
|
if ($v) {
|
|
|
unset($search[$k]);
|
|
|
$k = str_replace('search_fulltext_', '', $k);
|
|
|
- $param['option_' . $k] = $fix . $v . $fix;
|
|
|
+ $param['option_' . $k] = $v;
|
|
|
|
|
|
# 设定检索高亮
|
|
|
$high[$k] = $v;
|
|
|
+
|
|
|
+ $fulltext_state = true;
|
|
|
}
|
|
|
}
|
|
|
+ $this->search = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ $linkage = Dever::preInput('search_linkage_');
|
|
|
+ if ($linkage) {
|
|
|
+ foreach ($linkage as $k => $v) {
|
|
|
+ if ($v) {
|
|
|
+ unset($search[$k]);
|
|
|
+ $k = str_replace('search_linkage_', '', $k);
|
|
|
+ if (is_array($v)) {
|
|
|
+ $v = implode(',', $v);
|
|
|
+ }
|
|
|
+
|
|
|
+ $v = str_replace('-1', ',', $v);
|
|
|
+ $v = str_replace(',,,', ',', $v);
|
|
|
+ $v = str_replace(',,', ',', $v);
|
|
|
+ $param['option_' . $k] = $v;
|
|
|
|
|
|
- if ($param) {
|
|
|
- $param['search_type'] = $search['search_fulltext_type'];
|
|
|
+ # 设定检索高亮
|
|
|
+ $high[$k] = $v;
|
|
|
+ }
|
|
|
}
|
|
|
$this->search = true;
|
|
|
}
|
|
@@ -2481,15 +2503,18 @@ class Database
|
|
|
$name = array();
|
|
|
$option = $this->option($j['option']);
|
|
|
|
|
|
- foreach ($option as $a => $b) {
|
|
|
- if (!is_array($log[$j['name']])) {
|
|
|
- if ($a == $log[$j['name']]) {
|
|
|
+ if (is_array($option)) {
|
|
|
+ foreach ($option as $a => $b) {
|
|
|
+ if (!is_array($log[$j['name']])) {
|
|
|
+ if ($a == $log[$j['name']]) {
|
|
|
+ $name[] = (is_array($b) && isset($b['name'])) ? $b['name'] : $b;
|
|
|
+ }
|
|
|
+ } elseif (in_array($a, $log[$j['name']])) {
|
|
|
$name[] = (is_array($b) && isset($b['name'])) ? $b['name'] : $b;
|
|
|
}
|
|
|
- } elseif (in_array($a, $log[$j['name']])) {
|
|
|
- $name[] = (is_array($b) && isset($b['name'])) ? $b['name'] : $b;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
|
|
|
$log[$j['name']] = implode(',', $name);
|
|
|
}
|