begin of thinksaas 3.68

Signed-off-by: kevin <kevin@lmve.net>
This commit is contained in:
2023-06-22 13:33:25 +08:00
commit 963ec1b2ea
2746 changed files with 331806 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
<?php
defined('IN_TS') or die('Access Denied.');
return array(
'name' => '搜索',
'version' => '1.2',
'desc' => '搜索APP',
'url' => 'http://www.thinksaas.cn',
'email' => 'thinksaas@qq.com',
'author' => '邱君',
'author_url' => 'http://www.thinksaas.cn',
'isoption' => '1',
'isinstall' => '1',
'issql' => '1',
'issystem' => '1',
'isappnav' => '1',
'ismy'=>'0',
);
+9
View File
@@ -0,0 +1,9 @@
<?php
defined('IN_TS') or die('Access Denied.');
// 管理入口
if (is_file('app/' . $TS_URL['app'] . '/action/admin/' . $mg . '.php')) {
include_once 'app/' . $TS_URL['app'] . '/action/admin/' . $mg . '.php';
} else {
qiMsg('sorry:no index!');
}
+36
View File
@@ -0,0 +1,36 @@
<?php
defined('IN_TS') or die('Access Denied.');
switch($ts){
//基本配置
case "":
$arrSearch = array(
'group'=>'小组',
'topic'=>'帖子',
'user'=>'用户',
'article'=>'文章',
);
$strOption = getAppOptions('search');
include template("admin/options");
break;
case "do":
$arrOption = $_POST['option'];
#更新app配置选项
upAppOptions('search',$arrOption);
#更新app导航和我的导航
upAppNav('search',$arrOption['appname']);
qiMsg('修改成功!');
break;
}
+4
View File
@@ -0,0 +1,4 @@
<?php
defined('IN_TS') or die('Access Denied.');
//$userid = aac('user')->isLogin();
+30
View File
@@ -0,0 +1,30 @@
<?php
defined('IN_TS') or die('Access Denied.');
switch($ts){
case "":
$title = '搜索';
break;
//搜索小组
case "group":
$title = '搜索小组';
break;
//搜索帖子
case "topic":
$title = '搜索帖子';
break;
//搜索用户
case "user":
$title = '搜索用户';
break;
//搜索文章
case "article":
$title = '搜索文章';
break;
}
include template("index");
+91
View File
@@ -0,0 +1,91 @@
<?php
defined('IN_TS') or die('Access Denied.');
//搜索结果
$kw=urldecode(tsFilter($_GET['kw']));
if($kw==''){
header("Location: ".tsUrl('search'));
exit;
}
$kw = t($kw);
if(count_string_len($kw)<2) {
header("Location: ".tsUrl('search'));
exit;
};
if($ts=='') $ts = $TS_APP['ds'];
switch($ts){
//小组
case "group":
$page = tsIntval($_GET['page'],1);
$url = tsUrl('search','s',array('ts'=>'group','kw'=>$kw,'page'=>''));
$lstart = $page*10-10;
$arrGroup = $db->fetch_all_assoc("select * from ".dbprefix."group WHERE `groupname` like '%$kw%' order by groupid desc limit $lstart,10");
$group_num = $db->once_num_rows("select * from ".dbprefix."group WHERE groupname like '%$kw%'");
$pageUrl = pagination($group_num, 10, $page, $url);
$title = $kw.' - 小组搜索';
include template("s_group");
break;
//帖子
case "topic":
$page = tsIntval($_GET['page'],1);
$url = tsUrl('search','s',array('ts'=>'topic','kw'=>$kw,'page'=>''));
$lstart = $page*10-10;
$arrTopic = $db->fetch_all_assoc("select * from ".dbprefix."topic WHERE `title` like '%$kw%' order by topicid desc limit $lstart,10");
$topic_num = $db->once_num_rows("select * from ".dbprefix."topic WHERE title like '%$kw%'");
$pageUrl = pagination($topic_num, 10, $page, $url);
$title = $kw.' - 帖子搜索';
include template("s_topic");
break;
//用户
case "user":
$page = tsIntval($_GET['page'],1);
$url = tsUrl('search','s',array('ts'=>'user','kw'=>$kw,'page'=>''));
$lstart = $page*10-10;
$arrUser = $db->fetch_all_assoc("select * from ".dbprefix."user_info WHERE `username` like '%$kw%' order by userid desc limit $lstart,10");
$user_num = $db->once_num_rows("select * from ".dbprefix."user_info WHERE `username` like '%$kw%'");
$pageUrl = pagination($user_num, 10, $page, $url);
$title = $kw.' - 用户搜索';
include template("s_user");
break;
case "article":
$page = tsIntval($_GET['page'],1);
$url = tsUrl('search','s',array('ts'=>'article','kw'=>$kw,'page'=>''));
$lstart = $page*10-10;
$arrArticle = $db->fetch_all_assoc("select * from ".dbprefix."article WHERE `title` like '%$kw%' and `isaudit`='0' order by addtime desc limit $lstart,10");
$articleNum = $db->once_num_rows("select * from ".dbprefix."article WHERE `title` like '%$kw%' and `isaudit`='0'");
$pageUrl = pagination($articleNum, 10, $page, $url);
$title = $kw.' - 文章搜索';
include template("s_article");
break;
}
+4
View File
@@ -0,0 +1,4 @@
<?php
require 'thinksaas/xunsearch-sdk/php/lib/XS.php';
$xs = new XS('demo');
$search = $xs->search; // 搜索对象来自 XS 的属性
+18
View File
@@ -0,0 +1,18 @@
<?php
defined('IN_TS') or die('Access Denied.');
class search extends tsApp{
//构造函数
public function __construct($db){
$tsAppDb = array();
include 'app/search/config.php';
//判断APP是否采用独立数据库
if($tsAppDb){
$db = new MySql($tsAppDb);
}
parent::__construct($db);
}
}
+6
View File
@@ -0,0 +1,6 @@
<?php
defined('IN_TS') or die('Access Denied.');
$skin = 'default';
$TS_APP['appname'] = '搜索';
+9
View File
@@ -0,0 +1,9 @@
<div class="tabnav">
<h6>搜索管理</h6>
<ul>
<li {if $mg=='options'}class="select"{/if}><a href="{SITE_URL}index.php?app=search&ac=admin&mg=options">搜索配置</a></li>
</ul>
</div>
<div style="height: 100px;"></div>
+40
View File
@@ -0,0 +1,40 @@
{php include pubTemplate("header_admin")}
<div class="midder">
{php include template("admin/menu");}
<form method="POST" action="index.php?app=search&ac=admin&mg=options&ts=do">
<table class="table table-hover">
<tr><td width="150">APP名称:</td><td><input style="width:300px;" name="option[appname]" value="{$strOption[appname]}" /></td></tr>
<tr><td>APP介绍:</td><td><textarea style="width:300px;" name="option[appdesc]">{$strOption[appdesc]}</textarea></td></tr>
<tr><td>APP关键词:</td><td><input style="width:300px;" name="option[appkey]" value="{$strOption[appkey]}" /></td></tr>
<tr><td>默认搜索:</td><td>
<select name="option[ds]">
{loop $arrSearch $key $item}
<option value="{$key}" {if $strOption['ds']==$key}selected{/if}>{$item}</option>
{/loop}
</select>
</td></tr>
{loop $arrSearch $key $item}
<tr><td>{$item}搜索:</td><td><input type="radio" name="option[{$key}]" value="0" {if $strOption[$key]=='0'}checked{/if} />不开启 <input type="radio" name="option[$key]" value="1" {if $strOption[$key]=='1'}checked{/if} />开启</td></tr>
{/loop}
<tr><td></td><td>
<input class="btn btn-primary" type="submit" value="提交修改" /></td>
</tr>
</table>
</form>
</div>
{php include pubTemplate("footer_admin")}
+73
View File
@@ -0,0 +1,73 @@
{php include pubTemplate("header")}
<div class="container">
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<div class="card">
<div class="card-body">
<div class="s_menu">
搜索:
{if $TS_APP['group']==1} | <a {if $ts=='group'}class="s_select"{/if} href="{tsUrl('search','index',array('ts'=>'group'))}">小组</a>{/if}
{if $TS_APP['topic']==1} | <a {if $ts=='topic'}class="s_select"{/if} href="{tsUrl('search','index',array('ts'=>'topic'))}">帖子</a>{/if}
{if $TS_APP['user']==1} | <a {if $ts=='user'}class="s_select"{/if} href="{tsUrl('search','index',array('ts'=>'user'))}">用户</a>{/if}
{if $TS_APP['article']==1} | <a {if $ts=='article'}class="s_select"{/if} href="{tsUrl('search','index',array('ts'=>'article'))}">文章</a>{/if}
</div>
<div class="clearfix">
<form method="GET" action="{SITE_URL}index.php">
<div class="input-group w-auto">
<input type="hidden" name="app" value="search" />
<input type="hidden" name="ac" value="s" />
{if $ts=='group'}
<input type="hidden" name="ts" value="group" />
{elseif $ts=='topic'}
<input type="hidden" name="ts" value="topic" />
{elseif $ts=='user'}
<input type="hidden" name="ts" value="user" />
{elseif $ts=='article'}
<input type="hidden" name="ts" value="article" />
{else}
{/if}
<input class="form-control" name="kw" placeholder="请输入关键词" />
<div class="input-group-append">
<button class="btn btn-outline-info" type="submit"><i class="bi bi-search"></i> 搜索</button>
</div>
</div>
</form>
</div>
<div class="c9 mt-3 ml-3 fs12">标题模糊搜索</div>
</div>
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
{php include pubTemplate("footer")}
+60
View File
@@ -0,0 +1,60 @@
{php include pubTemplate("header")}
<div class="container">
<div class="card">
<div class="card-body">
{template s_menu}
<div class="s_top">获得约 {$all_num} 条结果</div>
{loop $arrGroup $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[小组] </span>&nbsp;<a href="{tsUrl('group','show',array('id'=>$item[groupid]))}">{tsTitle($item[groupname])}</a></div>
<div class="info">创建于 {php echo date('Y-m-d',$item[addtime])} &nbsp; <a href="#">{$item[count_user]} 人</a></div>
<p>{php echo tsCutContent($item[groupdesc])}</p>
</div>
</div>
{/loop}
{loop $arrTopic $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[话题] </span>&nbsp;<a href="{tsUrl('topic','show',array('id'=>$item[topicid]))}">{tsTitle($item[title])}</a></div>
<div class="info">发表于 {php echo date('Y-m-d',$item[addtime])} &nbsp; <a href="#">{$item[count_comment]} 回复</a></div>
<p></p>
</div>
</div>
{/loop}
{loop $arrUser $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[用户] </span>&nbsp;<a href="{tsUrl('user','space',array('id'=>$item[userid]))}">{tsTitle($item[username])}</a></div>
<div class="info">{php echo date('Y-m-d',$item[addtime])} 加入&nbsp; <a href="#">{$item[count_followed]} 人关注</a></div>
<p>{$item[signed]}</p>
</div>
</div>
{/loop}
{loop $arrArticle $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[文章] </span>&nbsp;<a href="{tsUrl('article','show',array('id'=>$item[articleid]))}">{tsTitle($item[title])}</a></div>
<div class="info">发表于 {$item[addtime]} &nbsp; <a href="#">{$item[count_comment]} 回复</a></div>
<p></p>
</div>
</div>
{/loop}
<div class="mt-3">{$pageUrl}</div>
</div>
</div>
</div>
{php include pubTemplate("footer")}
+29
View File
@@ -0,0 +1,29 @@
{php include pubTemplate("header")}
<div class="container">
<div class="card">
<div class="card-body">
{template s_menu}
<div class="s_top">获得约 {$articleNum} 条结果</div>
{loop $arrArticle $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[文章] </span>&nbsp;<a href="{tsUrl('article','show',array('id'=>$item[articleid]))}">{tsTitle($item[title])}</a></div>
<div class="info">发表于 {$item[addtime]} &nbsp; <a href="#">{$item[count_comment]} 回复</a></div>
<p></p>
</div>
</div>
{/loop}
<div class="mt-3">{$pageUrl}</div>
</div>
</div>
</div>
{php include pubTemplate("footer")}
+26
View File
@@ -0,0 +1,26 @@
{php include pubTemplate("header")}
<div class="container">
<div class="card">
<div class="card-body">
{template s_menu}
<div class="s_top">获得约 {$group_num} 条结果</div>
{loop $arrGroup $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[小组] </span>&nbsp;<a href="{tsUrl('group','show',array('id'=>$item[groupid]))}">{tsTitle($item[groupname])}</a></div>
<div class="info">创建于 {php echo date('Y-m-d',$item[addtime])} &nbsp; <a href="#">{$item[count_user]} 人</a></div>
<p>{php echo tsCutContent($item[groupdesc])}</p>
</div>
</div>
{/loop}
<div class="mt-3">{$pageUrl}</div>
</div>
</div>
</div>
{php include pubTemplate("footer")}
+52
View File
@@ -0,0 +1,52 @@
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<div class="s_menu">
搜索:
{if $TS_APP['group']==1} | <a {if $ts=='group'}class="s_select"{/if} href="{tsUrl('search','s',array(ts=>group,kw=>urldecode($kw)))}">小组</a> {/if}
{if $TS_APP['topic']==1} | <a {if $ts=='topic'}class="s_select"{/if} href="{tsUrl('search','s',array(ts=>topic,kw=>urldecode($kw)))}">帖子</a> {/if}
{if $TS_APP['user']==1} | <a {if $ts=='user'}class="s_select"{/if} href="{tsUrl('search','s',array(ts=>user,kw=>urldecode($kw)))}">用户</a> {/if}
{if $TS_APP['article']==1} | <a {if $ts=='article'}class="s_select"{/if} href="{tsUrl('search','s',array(ts=>article,kw=>urldecode($kw)))}">文章</a> {/if}
</div>
<div class="clearfix">
<form method="GET" action="{SITE_URL}index.php">
<div class="input-group w-auto">
<input type="hidden" name="app" value="search" />
<input type="hidden" name="ac" value="s" />
{if $ts=='group'}
<input type="hidden" name="ts" value="group" />
{elseif $ts=='topic'}
<input type="hidden" name="ts" value="topic" />
{elseif $ts=='user'}
<input type="hidden" name="ts" value="user" />
{elseif $ts=='article'}
<input type="hidden" name="ts" value="article" />
{else}
{/if}
<input class="form-control" name="kw" value="{php echo urldecode($kw)}" />
<div class="input-group-append">
<button class="btn btn-outline-info" type="submit"><i class="bi bi-search"></i> 搜索</button>
</div>
</div>
</form>
</div>
</div>
<div class="col-md-2"></div>
</div>
<hr />
+30
View File
@@ -0,0 +1,30 @@
{php include pubTemplate("header")}
<div class="container">
<div class="card">
<div class="card-body">
{template s_menu}
<div class="s_top">获得约 {$topic_num} 条结果</div>
{loop $arrTopic $key $item}
<div class="result">
<div class="pic">
</div>
<div class="content">
<div><span class="c9">[话题] </span>&nbsp;<a href="{tsUrl('topic','show',array('id'=>$item[topicid]))}">{tsTitle($item[title])}</a></div>
<div class="info">发表于 {php echo date('Y-m-d',$item[addtime])} &nbsp; <a href="#">{$item[count_comment]} 回复</a></div>
<p></p>
</div>
</div>
{/loop}
<div class="mt-3">{$pageUrl}</div>
</div>
</div>
</div>
{php include pubTemplate("footer")}
+26
View File
@@ -0,0 +1,26 @@
{php include pubTemplate("header")}
<div class="container">
<div class="card">
<div class="card-body">
{template s_menu}
<div class="s_top">获得约 {$user_num} 条结果</div>
{loop $arrUser $key $item}
<div class="result">
<div class="content">
<div><span class="c9">[用户] </span>&nbsp;<a href="{tsUrl('user','space',array('id'=>$item[userid]))}">{tsTitle($item[username])}</a></div>
<div class="info">{php echo date('Y-m-d',$item[addtime])} 加入&nbsp; <a href="#">{$item[count_followed]} 人关注</a></div>
<p>{$item[signed]}</p>
</div>
</div>
{/loop}
<div class="mt-3">{$pageUrl}</div>
</div>
</div>
</div>
{php include pubTemplate("footer")}
View File
+78
View File
@@ -0,0 +1,78 @@
.s_index {
text-align: center;
margin-top: 50px;
}
.s_menu {
font-size: 14px;
padding-bottom: 20px;
}
.s_input {
font-size: 14px;
width: 300px;
padding: 5px;
}
.s_button {
font-size: 14px;
padding: 5px 10px;
}
.s_hotkey {
padding: 10px;
}
.s_select {
font-weight: bold;
}
.s_top {
padding: 5px;
font-size: 14px;
}/*搜索结果*/.result {
padding: 20px 0;
border-bottom: 1px dashed #CCCCCC;
position: relative;
width: 100%;
}
.result .pic {
float: left;
}
.result .content {
display: table-cell;
}
.result .content h3 {
background: none repeat scroll 0 0 transparent;
float: left;
height: auto;
margin: 0 0 5px;
font-weight: normal;
}
.result .rating-info, .result .info {
color: #999999;
position: absolute;
right: 10px;
}
.result .content p {
clear: both;
color: #666666;
margin: 0 0 5px;
}/*搜索帖子*/.s_topic {
padding: 10px 0;
}
.s_topic ul {
}
.s_topic ul li {
border-bottom: dashed 1px #DDDDDD;
overflow: hidden;
padding: 10px 5px;
font-size: 14px;
}
+78
View File
@@ -0,0 +1,78 @@
.s_index {
text-align: center;
margin-top: 50px;
}
.s_menu {
font-size: 14px;
padding: 20px;
}
.s_input {
font-size: 14px;
width: 300px;
padding: 5px;
}
.s_button {
font-size: 14px;
padding: 5px 10px;
}
.s_hotkey {
padding: 10px;
}
.s_select {
font-weight: bold;
}
.s_top {
padding: 5px;
font-size: 14px;
}/*搜索结果*/.result {
padding: 20px 0;
border-bottom: 1px dashed #CCCCCC;
position: relative;
width: 100%;
}
.result .pic {
float: left;
}
.result .content {
display: table-cell;
}
.result .content h3 {
background: none repeat scroll 0 0 transparent;
float: left;
height: auto;
margin: 0 0 5px;
font-weight: normal;
}
.result .rating-info, .result .info {
color: #999999;
position: absolute;
right: 10px;
}
.result .content p {
clear: both;
color: #666666;
margin: 0 0 5px;
}/*搜索帖子*/.s_topic {
padding: 10px 0;
}
.s_topic ul {
}
.s_topic ul li {
border-bottom: dashed 1px #DDDDDD;
overflow: hidden;
padding: 10px 5px;
font-size: 14px;
}