@@ -1,76 +0,0 @@ | |||
<?php | |||
/** | |||
* 百度新闻 | |||
* | |||
* @version $Id: baidunews.php 1 14:31 2010年7月12日Z tianya $ | |||
* @package DedeBIZ.Administrator | |||
* @copyright Copyright (c) 2022, DedeBIZ.COM | |||
* @license https://www.dedebiz.com/license | |||
* @link https://www.dedebiz.com | |||
*/ | |||
require_once(dirname(__FILE__)."/config.php"); | |||
$filename = str_replace("..", "", $filename); | |||
$filename = str_replace("{cmspath}", $cfg_cmspath, $filename); | |||
if (empty($do)) { | |||
include DEDEADMIN.'/templets/baidunews.htm'; | |||
} else { | |||
$baidunews = "<?xml version=\"1.0\" encoding=\"".$cfg_soft_lang."\" ?>\n"; | |||
$baidunews .= "<document>\n"; | |||
$baidunews .= "<webSite>$cfg_webname </webSite>\n"; | |||
$baidunews .= "<webMaster>$cfg_adminemail </webMaster>\n"; | |||
$baidunews .= "<updatePeri>$cfg_updateperi </updatePeri>\n"; | |||
$limit = $cfg_baidunews_limit; | |||
if ($limit > 100 || $limit < 1) { | |||
$limit = 100; | |||
} | |||
$query = "SELECT maintable.*, addtable.body, arctype.typename | |||
FROM `#@__archives` maintable | |||
LEFT JOIN `#@__addonarticle` addtable ON addtable.aid=maintable.id | |||
LEFT JOIN `#@__arctype` arctype ON arctype.ID=maintable.typeid | |||
WHERE maintable.channel=1 and maintable.arcrank!=-1 ORDER BY maintable.pubdate DESC LIMIT $limit | |||
"; | |||
$dsql->SetQuery($query); | |||
$dsql->Execute(); | |||
$proto = IsSSL()? "https://" : "http://"; | |||
while ($row = $dsql->GetArray()) { | |||
$title = dede_htmlspecialchars($row['title']); | |||
$row1 = GetOneArchive($row['id']); | |||
if ((strpos($row1['arcurl'], 'http://') === false) || (strpos($row1['arcurl'], 'https://') === false)) { | |||
$link = ($cfg_basehost == '' ? $proto.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$row1['arcurl']; | |||
} else { | |||
$link = $row1['arcurl']; | |||
} | |||
$link = dede_htmlspecialchars($link); | |||
$description = dede_htmlspecialchars(strip_tags($row['description'])); | |||
$text = dede_htmlspecialchars(strip_tags($row['body'])); | |||
$image = $row['litpic'] == '' ? '' : $row['litpic']; | |||
if ($image != '' && (strpos($image, 'http://') === false) || (strpos($image, 'https://') === false)) { | |||
$image = ($cfg_basehost == '' ? $proto.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$image; | |||
} | |||
//$headlineimg = ''; | |||
$keywords = dede_htmlspecialchars($row['keywords']); | |||
$category = dede_htmlspecialchars($row['typename']); | |||
$author = dede_htmlspecialchars($row['writer']); | |||
$source = dede_htmlspecialchars($row['source']); | |||
$pubdate = dede_htmlspecialchars(gmdate('Y-m-d H:i', $row['pubdate'] + $cfg_cli_time * 3600)); | |||
$baidunews .= "<item>\n"; | |||
$baidunews .= "<title>$title </title>\n"; | |||
$baidunews .= "<link>$link </link>\n"; | |||
$baidunews .= "<description>$description </description>\n"; | |||
$baidunews .= "<text>$text </text>\n"; | |||
$baidunews .= "<image>$image </image>\n"; | |||
//$baidunews .= "<headlineimages/>\n"; | |||
$baidunews .= "<keywords>$keywords </keywords>\n"; | |||
$baidunews .= "<category>$category </category>\n"; | |||
$baidunews .= "<author>$author </author>\n"; | |||
$baidunews .= "<source>$source </source>\n"; | |||
$baidunews .= "<pubDate>$pubdate </pubDate>\n"; | |||
$baidunews .= "</item>\n"; | |||
} | |||
$baidunews .= "</document>\n"; | |||
$fname = str_replace("//","/",DEDEROOT.$filename) ; | |||
$fp = fopen($fname, 'w'); | |||
fwrite($fp, $baidunews); | |||
fclose($fp); | |||
showmsg("<a href='{$filename}' target=\"_blank\">{$filename}生成成功</a>", 'javascript:;'); | |||
} |
@@ -14,11 +14,11 @@ if (empty($uploadfile)) { | |||
$uploadfile = ""; | |||
} | |||
if (!is_uploaded_file($uploadfile)) { | |||
ShowMsg("您没有选择上传的文件!", "-1"); | |||
ShowMsg("您没有选择上传的文件", "-1"); | |||
exit(); | |||
} | |||
if (!preg_match("#^text#", $uploadfile_type)) { | |||
ShowMsg("您上传的不是文本类型附件!", "-1"); | |||
ShowMsg("您上传的不是文本类型附件", "-1"); | |||
exit(); | |||
} | |||
if (!preg_match("#\.(".$cfg_txttype.")#i", $uploadfile_name)) { | |||
@@ -11,9 +11,9 @@ | |||
require_once(dirname(__FILE__)."/config.php"); | |||
require_once(DEDEINC."/datalistcp.class.php"); | |||
CheckPurview('shops_Operations'); | |||
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作!</a>"); | |||
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作</a>"); | |||
$oid = preg_replace("#[^-0-9A-Z]#", "", $oid); | |||
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号!</a>"); | |||
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号</a>"); | |||
$row = $dsql->GetOne("SELECT * FROM `#@__shops_userinfo` WHERE oid='$oid'"); | |||
$sql = "SELECT o.*,p.title,p.price as uprice,d.dname FROM `#@__shops_orders` as o left join `#@__shops_products` as p on o.oid=p.oid left join `#@__shops_delivery` as d on d.pid=o.pid WHERE o.oid='$oid'"; | |||
$dlist = new DataListCP(); | |||
@@ -10,13 +10,13 @@ | |||
*/ | |||
require_once(dirname(__FILE__)."/config.php"); | |||
CheckPurview('shops_Operations'); | |||
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作!</a>"); | |||
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作</a>"); | |||
$oid = preg_replace("#[^-0-9A-Z]#", "", $oid); | |||
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号!</a>"); | |||
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号</a>"); | |||
$rows = $dsql->GetOne("SELECT * FROM `#@__shops_userinfo` WHERE oid='$oid' LIMIT 0,1"); | |||
if (!is_array($rows)) { | |||
$dsql->Close(); | |||
exit("<a href='javascript:window.close()'>该订单下没相关用户信息!</a>"); | |||
exit("<a href='javascript:window.close()'>该订单下没相关用户信息</a>"); | |||
} | |||
$row = $dsql->GetOne("SELECT pid,dprice FROM `#@__shops_orders` WHERE oid='$oid'"); | |||
if (is_array($row)) { | |||
@@ -26,7 +26,7 @@ | |||
<tr> | |||
<td align="center"> | |||
<table width="98%" cellspacing="0" cellpadding="5"> | |||
<?php foreach ($row['soniterm'] as $rows) {?> | |||
<?php foreach ($row['soniterm'] as $rows) { ?> | |||
<tr> | |||
<td align="left"><a href="<?php echo $rows['linkurl'] ?>" target="main"><?php echo $rows['title'] ?></a><br><?php echo $rows['description'] ?></td> | |||
</tr> | |||
@@ -1,41 +0,0 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta charset="<?php echo $cfg_soft_lang; ?>"> | |||
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> | |||
<title>百度新闻地图</title> | |||
<link rel="stylesheet" href="../static/web/css/bootstrap.min.css"> | |||
<link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css"> | |||
<link rel="stylesheet" href="../static/web/css/admin.css"> | |||
</head> | |||
<body> | |||
<table width="98%" align="center" cellpadding="4" cellspacing="1" class="table maintable mt-3 mb-3"> | |||
<tr> | |||
<td colspan="2" background="../static/web/img/tbg.gif" style="padding-left:10px">百度新闻地图</td> | |||
</tr> | |||
<tr> | |||
<td colspan="2"> | |||
<p>《互联网新闻开放协议》是百度新闻搜索制定的搜索引擎新闻源收录标准,网站可将发布的新闻内容制作成遵循此开放协议的XML格式的网页(独立于原有的新闻发布形式)供搜索引擎索引</p> | |||
<p> <a href="http://news.baidu.com/newsop.html#kg" target="_blank">详情参见</a></p> | |||
<p>配置的相关参数在 <a href="sys_info.php">系统设置</a>-其他选项中调整</p> | |||
<p>只适用于文章频道,数据表为V6默认的</p> | |||
</td> | |||
</tr> | |||
<form id="form2" name="form1" method="post" action="?do=yes" target="stafrm"> | |||
<tr> | |||
<td>文件名:</td> | |||
<td><input name="filename" type="text" id="textfield" value="{cmspath}/a/baidunews.xml" size="30" class='alltxt' /></td> | |||
</tr> | |||
<tr> | |||
<td height="26" bgcolor="#F8FCF1" colspan="2" align="center"><button name="button" type="submit" class="btn btn-success btn-sm" id="button">开始生成</button></td> | |||
</tr> | |||
</form> | |||
<tr> | |||
<td colspan="2">状态:</td> | |||
</tr> | |||
<tr> | |||
<td align="center" colspan="2"><iframe name="stafrm" frameborder="0" id="stafrm" width="96%" height="360px"></td> | |||
</tr> | |||
</table> | |||
</body> | |||
</html> |
@@ -17,7 +17,8 @@ | |||
<a href="friendlink_main.php">友情链接管理</a> | |||
<a href="friendlink_add.php" class="btn btn-success btn-sm">增加链接</a> | |||
<a href="friendlink_type.php" class="btn btn-success btn-sm">网站类型管理</a> | |||
<a href='../apps/flink_add.php' target='_blank' class="btn btn-success btn-sm">外部申请表单</a></td> | |||
<a href='../apps/flink_add.php' target='_blank' class="btn btn-success btn-sm">外部申请表单</a> | |||
</td> | |||
</tr> | |||
<tr bgcolor="#F8FCF1"> | |||
<td width="4%" height="26" align="center">类型ID</td> | |||
@@ -1,4 +1,4 @@ | |||
{dede:config.pagesize value="30"/} | |||
{dede:config.pagesize value='30'/} | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
@@ -1,4 +1,4 @@ | |||
{dede:config.pagesize value="30"/} | |||
{dede:config.pagesize value='30'/} | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
@@ -17,7 +17,7 @@ | |||
</td> | |||
</tr> | |||
<tr> | |||
<td height="26" colspan="2">下载的文件临时存放在文件夹(<span class='text-danger'>../data/<?php echo $tmpdir; ?></span>)内,如果某些基础类有重要的改动导致更新中途中错,您可以从这文件夹提取文件手工更新</td> | |||
<td height="26" colspan="2">下载的文件临时存放在文件夹<span class='text-danger'>../data/<?php echo $tmpdir; ?></span>内,如果某些基础类有重要的改动导致更新中途中错,您可以从这文件夹提取文件手工更新</td> | |||
</tr> | |||
<?php echo $dirinfos; ?> | |||
<tr bgcolor="#F8FEDA"> | |||
@@ -1,21 +1,17 @@ | |||
<?php | |||
/*--------------------------------------------------------------------------------------------- | |||
文件远程发布目录更新配置(config.file.inc.php) | |||
说明:本文件主要用于系统后台[生成]-[自动任务]-[远程服务器同步] | |||
中的文件夹自定义更新配置所用,使用时候如果有特定目录需要进行同 | |||
步,则需要在这个文件中进行配置,配置方式如下: | |||
说明:本文件主要用于系统后台[生成]-[自动任务]-[远程服务器同步]文件远程发布目录更新配置(config.file.inc.php) | |||
中的文件夹自定义更新配置所用,使用时候如果有特定目录需要进行同步,则需要在这个文件中进行配置,配置方式如下: | |||
$remotefile[] = array( | |||
'filedir' => '/yourdir', //同步文件夹目录 | |||
'description' => '这里是文件夹说明', | |||
'dfserv' => '0', //默认服务器选项,可以在系统后台[系统设置]-[服务器分布/远程 ]中配置 | |||
'state' => '0', //同步状态,0:未同步 1:已同步 | |||
'description' => ' //这里是文件夹说明', | |||
'dfserv' => '0', //默认服务器选项,可以在系统后台[系统设置]-[服务器分布/远程 ]中配置 | |||
'state' => '0', //同步状态,0:未同步 1:已同步 | |||
); | |||
-----------------------------------------------------------------------------------------------*/ | |||
global $remotefile; | |||
$remotefile = array(); | |||
//以下是必备同步配置项 | |||
//@start_config 不要改动下面<>结构 | |||
#<s_config> | |||
$remotefile[0] = array( | |||
'filedir'=>'/a', | |||
'description'=>'文档HTML默认保存路', | |||
@@ -24,53 +20,17 @@ $remotefile[0] = array( | |||
'issystem'=>1 | |||
); | |||
$remotefile[1] = array( | |||
'filedir'=>'/longhoo', | |||
'description'=>'文档HTML默认保存路', | |||
'filedir'=>'/static', | |||
'description'=>'图片上传文件默认路径', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>1 | |||
); | |||
$remotefile[2] = array( | |||
'filedir'=>'/uploads', | |||
'description'=>'图片/上传文件默认路径', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>1 | |||
); | |||
$remotefile[3] = array( | |||
'filedir'=>'/special', | |||
'filedir'=>'/apps/special', | |||
'description'=>'专题目录', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>1 | |||
); | |||
$remotefile[4] = array( | |||
'filedir'=>'/data/js', | |||
'description'=>'生成js目录', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>1 | |||
); | |||
$remotefile[5] = array( | |||
'filedir'=>'/images', | |||
'description'=>'图片素材存放文件', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>0 | |||
); | |||
$remotefile[6] = array( | |||
'filedir'=>'/templets/images', | |||
'description'=>'模板文件图片存放目录', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>0 | |||
); | |||
$remotefile[7] = array( | |||
'filedir'=>'/templets/style', | |||
'description'=>'模板文件CSS样式存放目录', | |||
'dfserv'=>0, | |||
'state'=>1, | |||
'issystem'=>0 | |||
); | |||
#<e_config> | |||
?> |
@@ -3946,11 +3946,11 @@ INSERT INTO `#@__sysconfig` VALUES | |||
('2','cfg_cmspath','安装目录','2','string',''), | |||
('3','cfg_cookie_encode','Cookies加密码','2','string',''), | |||
('4','cfg_indexurl','首页链接','1','string','/'), | |||
('5','cfg_backup_dir','数据备份目录,在data文件夹里','2','string','backupdata'), | |||
('5','cfg_backup_dir','数据备份目录,存data文件夹里','2','string','backupdata'), | |||
('6','cfg_indexname','首页链接名','1','string','首页'), | |||
('7','cfg_webname','网站名称','1','string','某某公司'), | |||
('8','cfg_adminemail','网站发信邮箱','2','string','support@dedebiz.com'), | |||
('9','cfg_html_editor','富文本(默认CKEditor可换修改其他富文本)','2','string','ckeditor'), | |||
('9','cfg_html_editor','富文本,默认CKEditor可自行更换其它富文本','2','string','ckeditor'), | |||
('10','cfg_arcdir','默认文档生成文件路径','1','string','/a'), | |||
('11','cfg_medias_dir','默认图片上传文件路径','1','string','/static'), | |||
('12','cfg_ddimg_width','缩略图默认宽度','3','number','400'), | |||
@@ -3961,7 +3961,7 @@ INSERT INTO `#@__sysconfig` VALUES | |||
('17','cfg_mediatype','允许的多媒体文件类型','3','bstring','swf|rm|rmvb|mpg|mp3|mp4|wmv|wma|wav|mid|mov'), | |||
('18','cfg_specnote','专题的最大节点数','2','number','10'), | |||
('19','cfg_list_symbol','栏目位置的间隔符号','2','string',''), | |||
('20','cfg_notallowstr','系统禁用词语,停止用户动作用“|”分开,但不要在结尾加“|”','5','bstring','神经病|废物'), | |||
('20','cfg_notallowstr','系统禁用词语,用“|”分开,但不要在结尾加“|”','5','bstring','神经病|废物'), | |||
('21','cfg_feedbackcheck','是否需审核评论及留言','5','bool','Y'), | |||
('22','cfg_keyword_replace','是否使用关键词替换功能,开启影响文档生成速度','2','bool','Y'), | |||
('23','cfg_rewrite','是否使用伪静态,开启需添加伪静态规则','1','bool','N'), | |||
@@ -4004,108 +4004,104 @@ INSERT INTO `#@__sysconfig` VALUES | |||
('60','cfg_arc_autopic','提取第一张图片作为缩略图','7','bool','Y'), | |||
('61','cfg_arc_autokeyword','自动提取关键词','7','bool','N'), | |||
('62','cfg_title_maxlen','文档标题最大长度,变量后需要手工修改数据表','7','number','250'), | |||
('64','cfg_album_row','图集多行多列样式默认行数','3','number','3'), | |||
('65','cfg_album_col','图集多行多列样式默认列数','3','number','4'), | |||
('66','cfg_album_pagesize','图集多页多图每页显示最大数','3','number','12'), | |||
('67','cfg_album_style','图集默认样式(1为多页多图、2为多页单图、3为缩略图列表)','3','number','2'), | |||
('68','cfg_album_ddwidth','图集默认缩略图大小','3','number','200'), | |||
('69','cfg_mb_notallow','不允许注册的会员ID','4','bstring','www,bbs,ftp,mail,user,users,admin,administrator'), | |||
('70','cfg_mb_idmin','用户ID最小长度','4','number','6'), | |||
('71','cfg_mb_pwdmin','用户密码最小长度','4','number','6'), | |||
('72','cfg_md_idurl','是否严格限定会员登录ID,允许会员使用二级域名必须设置此项','4','bool','N'), | |||
('73','cfg_mb_rank','注册会员默认级别,会员权限管理中查看级别代表的数字','4','number','10'), | |||
('74','cfg_feedback_time','两次评论至少间隔时间:秒','5','number','30'), | |||
('75','cfg_feedback_numip','每个IP一小时内最大评论数','5','number','30'), | |||
('76','cfg_md_mailtest','是否限制邮箱只能注册一个帐号','4','bool','Y'), | |||
('77','cfg_mb_spacesta','会员使用权限开通状态(-10邮件验证、-1手工审核、0没限制)','4','number','-10'), | |||
('78','cfg_mb_allowreg','是否允许新会员注册','4','bool','Y'), | |||
('79','cfg_mb_adminlock','是否禁止访问管理员帐号的空间','4','bool','N'), | |||
('80','cfg_vdcode_member','是否会员投稿验证码','5','bool','Y'), | |||
('81','cfg_mb_cktitle','是否检测会员投稿重复标题','5','bool','Y'), | |||
('82','cfg_mb_editday','投稿多少天后不能再修改','5','number','1'), | |||
('83','cfg_sendarc_scores','投稿可获取积分','5','number','10'), | |||
('84','cfg_caicai_sub','被踩扣除文章好评度','5','number','2'), | |||
('85','cfg_caicai_add','被顶扣除文章好评度','5','number','2'), | |||
('86','cfg_feedback_add','详细好评可获好评度','5','number','5'), | |||
('87','cfg_feedback_sub','详细恶评扣除好评度','5','number','5'), | |||
('88','cfg_sendfb_scores','参与评论可获积分','5','number','3'), | |||
('89','cfg_search_max','最大搜索检查文档数','6','number','50000'), | |||
('90','cfg_search_maxrc','最大返回搜索结果数','6','number','300'), | |||
('91','cfg_search_time','搜索间隔时间:秒','6','number','3'), | |||
('92','cfg_baidunews_limit','百度新闻更新新闻数量,最大100','8','string','100'), | |||
('93','cfg_smtp_port','SMTP服务器端口','2','string','25'), | |||
('94','cfg_sendmail_bysmtp','是否启用SMTP方式发送邮件','2','bool','Y'), | |||
('95','cfg_smtp_server','SMTP服务器','2','string','smtp.qq.com'), | |||
('96','cfg_smtp_usermail','SMTP服务器的用户邮箱','2','string','tianya@dedebiz.com'), | |||
('97','cfg_smtp_user','SMTP服务器的用户帐号','2','string','tianya'), | |||
('98','cfg_smtp_password','SMTP服务器的用户密码','2','string','tianya'), | |||
('99','cfg_updateperi','百度新闻更新时间:分','8','string','15'), | |||
('100','cfg_online_type','在线支付网关类型','2','string','nps'), | |||
('101','cfg_upload_switch','删除文章文件同时删除相关附件文件','2','bool','Y'), | |||
('102','cfg_fck_xhtml','是否使用富文本','2','bool','N'), | |||
('103','cfg_allsearch_limit','网站全局搜索时间限制:秒','2','string','1'), | |||
('104','cfg_delete','是否开启文章回收站','2','bool','Y'), | |||
('105','cfg_keywords','站点默认关键词','1','string',''), | |||
('106','cfg_description','站点描述','1','bstring',''), | |||
('107','cfg_beian','网站备案号','1','string',''), | |||
('108','cfg_need_typeid2','是否启用副栏目','6','bool','Y'), | |||
('109','cfg_mb_pwdtype','前台密码验证类型:默认32—32位md5,可选:l16—前16位、r16—后16位、m16—中间16位','4','string','32'), | |||
('110','cfg_cache_type','id 文档ID,content标签最终内容,修改此变量后必须更新系统缓存','6','string','id'), | |||
('111','cfg_max_face','会员上传头像大小限制KB','3','number','100'), | |||
('112','cfg_typedir_df','栏目网址使用目录名(不显示默认页,则是/a/b/c形式)','2','bool','Y'), | |||
('113','cfg_make_andcat','发表文章后马上更新相关栏目','6','bool','N'), | |||
('114','cfg_make_prenext','发表文章后马上更新上下篇','6','bool','N'), | |||
('115','cfg_feedback_forbid','是否禁止所有评论,包括禁止顶踩等','5','bool','N'), | |||
('116','cfg_addon_domainbind','是否绑定附件目录为指定的二级域名','7','bool','N'), | |||
('117','cfg_addon_domain','附件目录的二级域名','7','string',''), | |||
('118','cfg_df_dutyadmin','默认责任编辑名称','7','string','网站管理员'), | |||
('119','cfg_mb_allowncarc','是否允许用户空间显示未审核文章','4','bool','Y'), | |||
('120','cfg_mb_spaceallarc','会员空间中所有文档的频道ID(不限为0)','4','number','0'), | |||
('121','cfg_face_adds','上传头像增加积分','5','number','10'), | |||
('122','cfg_moreinfo_adds','填写详细资料增加积分','5','number','20'), | |||
('123','cfg_money_scores','多少积分可以兑换一个金币','5','number','50'), | |||
('124','cfg_mb_wnameone','是否允许用户昵称重复','4','bool','N'), | |||
('125','cfg_arc_dirname','是否允许用目录作为文档文件名,文档命名规则:{typedir}/{aid}/index.html','7','bool','Y'), | |||
('126','cfg_puccache_time','需缓存内容全局缓存时间:秒','6','number','36000'), | |||
('127','cfg_arc_click','文档默认点击数(-1表示随机50-200)','7','number','-1'), | |||
('128','cfg_addon_savetype','附件保存形式,按data函数日期参数(y年m月d日)','3','string','ymd'), | |||
('129','cfg_qk_uploadlit','异步上传缩略图,空间太不稳定用户关闭此项','3','bool','Y'), | |||
('130','cfg_login_adds','登录会员中心获积分','5','number','2'), | |||
('131','cfg_userad_adds','会员推广获积分','5','number','10'), | |||
('132','cfg_ddimg_full','是否使用缩略图强制大小,对背景填充','3','bool','N'), | |||
('133','cfg_ddimg_bgcolor','缩略图空白背景填充颜色(0白,1黑)','3','number','0'), | |||
('134','cfg_replace_num','文档内容关键词替换次数(0为全部替换)','7','number','1'), | |||
('135','cfg_uplitpic_cut','是否上传缩略图后马上弹出裁剪框','3','bool','Y'), | |||
('136','cfg_album_mark','是否使用图集水印,小图也会受影响','3','bool','N'), | |||
('137','cfg_mb_feedcheck','是否需要会员动态审核','4','bool','N'), | |||
('138','cfg_mb_msgischeck','是否需要会员状态审核','4','bool','N'), | |||
('139','cfg_title_site','是否发布和编辑文档时远程发布,启用远程站点的前提下','2','bool','N'), | |||
('140','cfg_mysql_type','数据库类型,支持MySQL和Mysqli','2','string','mysql'), | |||
('141', 'cfg_domain_cookie', '跨域共享Cookie的域名,例如: www.dedebiz.com', 2, 'string', ''), | |||
('142', 'cfg_cross_sectypeid', '支持交叉栏目显示副栏目内容', '7', 'bool', 'Y'), | |||
('143', 'cfg_digg_update', '顶踩缓存异步更新间隔(0为不缓存)', '6', 'number', '0'), | |||
('144', 'cfg_feedback_guest', '是否允许匿名评论', '5', 'bool', 'N'), | |||
('145', 'cfg_feedback_msglen', '评论内容字数限定', 5, 'number', '250'), | |||
('146', 'cfg_auth_code', '商业版授权码', 1, 'bstring', ''), | |||
('147', 'cfg_bizcore_hostname', 'DedeBIZ Core地址', 1, 'string', '127.0.0.1'), | |||
('148', 'cfg_bizcore_port', 'DedeBIZ Core端口', 1, 'number', '8181'), | |||
('149', 'cfg_bizcore_appid', 'DedeBIZ Core应用ID', 1, 'string', ''), | |||
('150', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', ''), | |||
('151', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags'); | |||
('63','cfg_album_row','图集多行多列样式默认行数','3','number','3'), | |||
('64','cfg_album_col','图集多行多列样式默认列数','3','number','4'), | |||
('65','cfg_album_pagesize','图集多页多图每页显示最大数','3','number','12'), | |||
('66','cfg_album_style','图集默认样式(1为多页多图、2为多页单图、3为缩略图列表)','3','number','2'), | |||
('67','cfg_album_ddwidth','图集默认缩略图大小','3','number','200'), | |||
('68','cfg_mb_notallow','不允许注册的会员ID','4','bstring','www,bbs,ftp,mail,user,users,admin,administrator'), | |||
('69','cfg_mb_idmin','用户ID最小长度','4','number','6'), | |||
('70','cfg_mb_pwdmin','用户密码最小长度','4','number','6'), | |||
('71','cfg_md_idurl','是否严格限定会员登录ID,允许会员使用二级域名必须设置此项','4','bool','N'), | |||
('72','cfg_mb_rank','注册会员默认级别,会员权限管理中查看级别代表的数字','4','number','10'), | |||
('73','cfg_feedback_time','两次评论至少间隔时间:秒','5','number','30'), | |||
('74','cfg_feedback_numip','每个IP一小时内最大评论数','5','number','30'), | |||
('75','cfg_md_mailtest','是否限制邮箱只能注册一个帐号','4','bool','Y'), | |||
('76','cfg_mb_spacesta','会员使用权限开通状态(-10邮件验证、-1手工审核、0没限制)','4','number','-10'), | |||
('77','cfg_mb_allowreg','是否允许新会员注册','4','bool','Y'), | |||
('78','cfg_mb_adminlock','是否禁止访问管理员帐号的空间','4','bool','N'), | |||
('79','cfg_vdcode_member','是否会员投稿验证码','5','bool','Y'), | |||
('80','cfg_mb_cktitle','是否检测会员投稿重复标题','5','bool','Y'), | |||
('81','cfg_mb_editday','投稿多少天后不能再修改','5','number','1'), | |||
('82','cfg_sendarc_scores','投稿可获取积分','5','number','10'), | |||
('83','cfg_caicai_sub','被踩扣除文章好评度','5','number','2'), | |||
('84','cfg_caicai_add','被顶扣除文章好评度','5','number','2'), | |||
('85','cfg_feedback_add','详细好评可获好评度','5','number','5'), | |||
('86','cfg_feedback_sub','详细恶评扣除好评度','5','number','5'), | |||
('87','cfg_sendfb_scores','参与评论可获积分','5','number','3'), | |||
('88','cfg_search_max','最大搜索检查文档数','6','number','50000'), | |||
('89','cfg_search_maxrc','最大返回搜索结果数','6','number','300'), | |||
('90','cfg_search_time','搜索间隔时间:秒','6','number','3'), | |||
('91','cfg_smtp_port','SMTP服务器端口','2','string','25'), | |||
('92','cfg_sendmail_bysmtp','是否启用SMTP方式发送邮件','2','bool','Y'), | |||
('93','cfg_smtp_server','SMTP服务器','2','string','smtp.qq.com'), | |||
('94','cfg_smtp_usermail','SMTP服务器的用户邮箱','2','string','tianya@dedebiz.com'), | |||
('95','cfg_smtp_user','SMTP服务器的用户帐号','2','string','tianya'), | |||
('96','cfg_smtp_password','SMTP服务器的用户密码','2','string','tianya'), | |||
('97','cfg_updateperi','百度新闻更新时间:分','8','string','15'), | |||
('98','cfg_online_type','在线支付网关类型','2','string','nps'), | |||
('99','cfg_upload_switch','删除文章同时删除相关附件文件','2','bool','Y'), | |||
('100','cfg_fck_xhtml','是否使用富文本','2','bool','N'), | |||
('101','cfg_allsearch_limit','网站全局搜索时间限制:秒','2','string','1'), | |||
('102','cfg_delete','是否开启文章回收站','2','bool','Y'), | |||
('103','cfg_keywords','站点默认关键词','1','string',''), | |||
('104','cfg_description','站点描述','1','bstring',''), | |||
('105','cfg_beian','网站备案号','1','string',''), | |||
('106','cfg_need_typeid2','是否启用副栏目','6','bool','Y'), | |||
('107','cfg_mb_pwdtype','前台密码验证类型,默认32—32位md5(l16—前16位、r16—后16位、m16—中间16位)','4','string','32'), | |||
('108','cfg_cache_type','id 文档ID,content标签最终内容,修改此变量后必须更新系统缓存','6','string','id'), | |||
('109','cfg_max_face','会员上传头像大小限制KB','3','number','100'), | |||
('110','cfg_typedir_df','栏目网址使用目录名(不显示默认页,则/a/b/c形式)','2','bool','Y'), | |||
('111','cfg_make_andcat','发表文章后马上更新相关栏目','6','bool','N'), | |||
('112','cfg_make_prenext','发表文章后马上更新上下篇','6','bool','N'), | |||
('113','cfg_feedback_forbid','是否禁止所有评论,包括禁止顶踩等','5','bool','N'), | |||
('114','cfg_addon_domainbind','是否绑定附件目录为指定的二级域名','7','bool','N'), | |||
('115','cfg_addon_domain','附件目录的二级域名','7','string',''), | |||
('116','cfg_df_dutyadmin','默认责任编辑名称','7','string','网站管理员'), | |||
('118','cfg_mb_allowncarc','是否允许用户空间显示未审核文章','4','bool','Y'), | |||
('119','cfg_mb_spaceallarc','会员空间中所有文档的频道ID(不限为0)','4','number','0'), | |||
('120','cfg_face_adds','上传头像增加积分','5','number','10'), | |||
('121','cfg_moreinfo_adds','填写详细资料增加积分','5','number','20'), | |||
('122','cfg_money_scores','多少积分可以兑换一个金币','5','number','50'), | |||
('123','cfg_mb_wnameone','是否允许用户昵称重复','4','bool','N'), | |||
('124','cfg_arc_dirname','是否允许用目录作为文档文件名,文档命名规则:{typedir}/{aid}/index.html','7','bool','Y'), | |||
('125','cfg_puccache_time','需缓存内容全局缓存时间:秒','6','number','36000'), | |||
('126','cfg_arc_click','文档默认点击数(-1表示随机50-200)','7','number','-1'), | |||
('127','cfg_addon_savetype','附件保存形式,按data函数日期参数(y年m月d日)','3','string','ymd'), | |||
('128','cfg_qk_uploadlit','异步上传缩略图,空间太不稳定用户关闭此项','3','bool','Y'), | |||
('129','cfg_login_adds','登录会员中心获积分','5','number','2'), | |||
('130','cfg_userad_adds','会员推广获积分','5','number','10'), | |||
('131','cfg_ddimg_full','是否使用缩略图强制大小,对背景填充','3','bool','N'), | |||
('132','cfg_ddimg_bgcolor','缩略图空白背景填充颜色(0白,1黑)','3','number','0'), | |||
('133','cfg_replace_num','文档内容关键词替换次数(0为全部替换)','7','number','1'), | |||
('134','cfg_uplitpic_cut','是否上传缩略图后马上弹出裁剪框','3','bool','Y'), | |||
('135','cfg_album_mark','是否使用图集水印,小图也会受影响','3','bool','N'), | |||
('136','cfg_mb_feedcheck','是否需要会员动态审核','4','bool','N'), | |||
('137','cfg_mb_msgischeck','是否需要会员状态审核','4','bool','N'), | |||
('138','cfg_title_site','是否发布和编辑文档时远程发布,启用远程站点的前提下','2','bool','N'), | |||
('139','cfg_mysql_type','数据库类型,支持MySQL和Mysqli','2','string','mysql'), | |||
('140', 'cfg_domain_cookie', '跨域共享Cookie的域名,例如: www.dedebiz.com', 2, 'string', ''), | |||
('141', 'cfg_cross_sectypeid', '支持交叉栏目显示副栏目内容', '7', 'bool', 'Y'), | |||
('142', 'cfg_digg_update', '顶踩缓存异步更新间隔(0为不缓存)', '6', 'number', '0'), | |||
('143', 'cfg_feedback_guest', '是否允许匿名评论', '5', 'bool', 'N'), | |||
('144', 'cfg_feedback_msglen', '评论内容字数限定', 5, 'number', '250'), | |||
('145', 'cfg_auth_code', '商业版授权码', 1, 'bstring', ''), | |||
('146', 'cfg_bizcore_hostname', 'DedeBIZ Core地址', 1, 'string', '127.0.0.1'), | |||
('147', 'cfg_bizcore_port', 'DedeBIZ Core端口', 1, 'number', '8181'), | |||
('148', 'cfg_bizcore_appid', 'DedeBIZ Core应用ID', 1, 'string', ''), | |||
('149', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', ''), | |||
('150', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags'); | |||
INSERT INTO `#@__sys_module` VALUES (1, '0cce60bc0238aa03804682c801584991', '百度新闻', '', '', 0, ''), | |||
(2, '1f35620fb42d452fa2bdc1dee1690f92', '文件管理器', '', '', 0, ''), | |||
(4, 'b437d85a7a7bc778c9c79b5ec36ab9aa', '友情链接', '', '', 0, ''), | |||
(5, 'acb8b88eb4a6d4bfc375c18534f9439e', '投票模块', '', '', 0, ''), | |||
(6, '572606600345b1a4bb8c810bbae434cc', '挑错管理', '', '', 0, ''); | |||
INSERT INTO `#@__sys_module` VALUES (1, '1f35620fb42d452fa2bdc1dee1690f92', '文件管理器', '', '', 0, ''), | |||
(2, 'b437d85a7a7bc778c9c79b5ec36ab9aa', '友情链接', '', '', 0, ''), | |||
(3, '72ffa6fabe3c236f9238a2b281bc0f93', '广告管理', '', '', 0, ''), | |||
(4, 'acb8b88eb4a6d4bfc375c18534f9439e', '投票模块', '', '', 0, ''), | |||
(5, '572606600345b1a4bb8c810bbae434cc', '挑错管理', '', '', 0, ''); | |||
INSERT INTO `#@__plus` VALUES (27, '友情链接模块', '<m:item name=''友情链接'' link=''friendlink_main.php'' rank=''plus_友情链接'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(24, '文件管理器', '<m:item name=''文件管理器'' link=''file_manage_main.php'' rank=''plus_文件管理器'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(23, '百度新闻', '<m:item name=''百度新闻'' link=''baidunews.php'' rank=''plus_百度新闻'' target=''main'' />', '', 'DedeBIZ', 1, 'baidunews.php'), | |||
(28, '投票模块', '<m:item name=''投票模块'' link=''vote_main.php'' rank=''plus_投票模块'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(25, '广告管理', '<m:item name=''广告管理'' link=''ad_main.php'' rank=''plus_广告管理'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(10, '挑错管理', '<m:item name=''挑错管理'' link=''erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />', '', 'DedeBIZ', 1, '<m:item name=''挑错管理'' link=''catalog_do.php?dopost=erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />'); | |||
INSERT INTO `#@__plus` VALUES (1, '文件管理器', '<m:item name=''文件管理器'' link=''file_manage_main.php'' rank=''plus_文件管理器'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(2, '友情链接模块', '<m:item name=''友情链接'' link=''friendlink_main.php'' rank=''plus_友情链接'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(3, '广告管理', '<m:item name=''广告管理'' link=''ad_main.php'' rank=''plus_广告管理'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(4, '投票模块', '<m:item name=''投票模块'' link=''vote_main.php'' rank=''plus_投票模块'' target=''main'' />', '', 'DedeBIZ', 1, ''), | |||
(5, '挑错管理', '<m:item name=''挑错管理'' link=''erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />', '', 'DedeBIZ', 1, '<m:item name=''挑错管理'' link=''catalog_do.php?dopost=erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />'); | |||
INSERT INTO `#@__sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_funs', '模板引擎禁用PHP函数', 7, 'bstring', ''); | |||
INSERT INTO `#@__sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_tags', '模板引擎禁用标签', 7, 'bstring', ''); | |||
ALTER TABLE `#@__arctiny` ADD INDEX `idx_typeid_arcrank_sortrank` (`typeid`, `arcrank`, `sortrank`); |
@@ -2,9 +2,7 @@ | |||
if (!defined('DEDEINC')) exit('dedebiz'); | |||
require_once(DEDEINC."/libraries/crawlerdetect.class.php"); | |||
require_once(DEDEINC."/libraries/mobiledetect.class.php"); | |||
// copyright https://github.com/jenssegers/agent | |||
//copyright https://github.com/jenssegers/agent | |||
class Agent extends Mobile_Detect | |||
{ | |||
/** | |||
@@ -14,7 +12,6 @@ class Agent extends Mobile_Detect | |||
protected static $desktopDevices = [ | |||
'Macintosh' => 'Macintosh', | |||
]; | |||
/** | |||
* List of additional operating systems. | |||
* @var array | |||
@@ -30,7 +27,6 @@ class Agent extends Mobile_Detect | |||
'Linux' => 'Linux', | |||
'ChromeOS' => 'CrOS', | |||
]; | |||
/** | |||
* List of additional browsers. | |||
* @var array | |||
@@ -50,21 +46,19 @@ class Agent extends Mobile_Detect | |||
'Mozilla' => 'Mozilla', | |||
'WeChat' => 'MicroMessenger', | |||
]; | |||
/** | |||
* List of additional properties. | |||
* @var array | |||
*/ | |||
protected static $additionalProperties = [ | |||
// Operating systems | |||
//Operating systems | |||
'Windows' => 'Windows NT [VER]', | |||
'Windows NT' => 'Windows NT [VER]', | |||
'OS X' => 'OS X [VER]', | |||
'BlackBerryOS' => ['BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'], | |||
'AndroidOS' => 'Android [VER]', | |||
'ChromeOS' => 'CrOS x86_64 [VER]', | |||
// Browsers | |||
//Browsers | |||
'Opera Mini' => 'Opera Mini/[VER]', | |||
'Opera' => [' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]', 'Opera [VER]'], | |||
'Netscape' => 'Netscape/[VER]', | |||
@@ -74,12 +68,10 @@ class Agent extends Mobile_Detect | |||
'Vivaldi' => 'Vivaldi/[VER]', | |||
'Coc Coc' => 'coc_coc_browser/[VER]', | |||
]; | |||
/** | |||
* @var CrawlerDetect | |||
*/ | |||
protected static $crawlerDetect; | |||
/** | |||
* Get all detection rules. These rules include the additional | |||
* platforms and browsers and utilities. | |||
@@ -88,32 +80,27 @@ class Agent extends Mobile_Detect | |||
public static function getDetectionRulesExtended() | |||
{ | |||
static $rules; | |||
if (!$rules) { | |||
$rules = static::mergeRules( | |||
static::$desktopDevices, // NEW | |||
static::$desktopDevices, //NEW | |||
static::$phoneDevices, | |||
static::$tabletDevices, | |||
static::$operatingSystems, | |||
static::$additionalOperatingSystems, // NEW | |||
static::$additionalOperatingSystems, //NEW | |||
static::$browsers, | |||
static::$additionalBrowsers, // NEW | |||
static::$additionalBrowsers, //NEW | |||
static::$utilities | |||
); | |||
} | |||
return $rules; | |||
} | |||
public function getRules() | |||
{ | |||
if ($this->detectionType === static::DETECTION_TYPE_EXTENDED) { | |||
return static::getDetectionRulesExtended(); | |||
} | |||
return static::getMobileDetectionRules(); | |||
} | |||
/** | |||
* @return CrawlerDetect | |||
*/ | |||
@@ -122,10 +109,8 @@ class Agent extends Mobile_Detect | |||
if (static::$crawlerDetect === null) { | |||
static::$crawlerDetect = new CrawlerDetect(); | |||
} | |||
return static::$crawlerDetect; | |||
} | |||
public static function getBrowsers() | |||
{ | |||
return static::mergeRules( | |||
@@ -133,7 +118,6 @@ class Agent extends Mobile_Detect | |||
static::$browsers | |||
); | |||
} | |||
public static function getOperatingSystems() | |||
{ | |||
return static::mergeRules( | |||
@@ -141,7 +125,6 @@ class Agent extends Mobile_Detect | |||
static::$additionalOperatingSystems | |||
); | |||
} | |||
public static function getPlatforms() | |||
{ | |||
return static::mergeRules( | |||
@@ -149,12 +132,10 @@ class Agent extends Mobile_Detect | |||
static::$additionalOperatingSystems | |||
); | |||
} | |||
public static function getDesktopDevices() | |||
{ | |||
return static::$desktopDevices; | |||
} | |||
public static function getProperties() | |||
{ | |||
return static::mergeRules( | |||
@@ -162,7 +143,6 @@ class Agent extends Mobile_Detect | |||
static::$properties | |||
); | |||
} | |||
/** | |||
* Get accept languages. | |||
* @param string $acceptLanguage | |||
@@ -173,14 +153,11 @@ class Agent extends Mobile_Detect | |||
if ($acceptLanguage === null) { | |||
$acceptLanguage = $this->getHttpHeader('HTTP_ACCEPT_LANGUAGE'); | |||
} | |||
if (!$acceptLanguage) { | |||
return []; | |||
} | |||
$languages = []; | |||
// Parse accept language string. | |||
//Parse accept language string. | |||
foreach (explode(',', $acceptLanguage) as $piece) { | |||
$parts = explode(';', $piece); | |||
$language = strtolower($parts[0]); | |||
@@ -188,13 +165,10 @@ class Agent extends Mobile_Detect | |||
$languages[$language] = $priority; | |||
} | |||
// Sort languages by priority. | |||
//Sort languages by priority. | |||
arsort($languages); | |||
return array_keys($languages); | |||
} | |||
/** | |||
* Match a detection rule and return the matched key. | |||
* @param array $rules | |||
@@ -203,22 +177,19 @@ class Agent extends Mobile_Detect | |||
*/ | |||
protected function findDetectionRulesAgainstUA(array $rules, $userAgent = null) | |||
{ | |||
// Loop given rules | |||
//Loop given rules | |||
foreach ($rules as $key => $regex) { | |||
if (empty($regex)) { | |||
continue; | |||
} | |||
// Check match | |||
//Check match | |||
if ($this->match($regex, $userAgent)) { | |||
$val = (array)$this->matchesArray; | |||
return $key ?: reset($val); | |||
} | |||
} | |||
return false; | |||
} | |||
/** | |||
* Get the browser name. | |||
* @param string|null $userAgent | |||
@@ -228,7 +199,6 @@ class Agent extends Mobile_Detect | |||
{ | |||
return $this->findDetectionRulesAgainstUA(static::getBrowsers(), $userAgent); | |||
} | |||
/** | |||
* Get the platform name. | |||
* @param string|null $userAgent | |||
@@ -238,7 +208,6 @@ class Agent extends Mobile_Detect | |||
{ | |||
return $this->findDetectionRulesAgainstUA(static::getPlatforms(), $userAgent); | |||
} | |||
/** | |||
* Get the device name. | |||
* @param string|null $userAgent | |||
@@ -252,10 +221,8 @@ class Agent extends Mobile_Detect | |||
static::getTabletDevices(), | |||
static::getUtilities() | |||
); | |||
return $this->findDetectionRulesAgainstUA($rules, $userAgent); | |||
} | |||
/** | |||
* Check if the device is a desktop computer. | |||
* @param string|null $userAgent deprecated | |||
@@ -264,17 +231,15 @@ class Agent extends Mobile_Detect | |||
*/ | |||
public function isDesktop($userAgent = null, $httpHeaders = null) | |||
{ | |||
// Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' | |||
//Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' | |||
if ($this->getUserAgent() === 'Amazon CloudFront') { | |||
$cfHeaders = $this->getCfHeaders(); | |||
if(array_key_exists('HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER', $cfHeaders)) { | |||
return $cfHeaders['HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER'] === 'true'; | |||
} | |||
} | |||
return !$this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders) && !$this->isRobot($userAgent); | |||
} | |||
/** | |||
* Check if the device is a mobile phone. | |||
* @param string|null $userAgent deprecated | |||
@@ -285,7 +250,6 @@ class Agent extends Mobile_Detect | |||
{ | |||
return $this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders); | |||
} | |||
/** | |||
* Get the robot name. | |||
* @param string|null $userAgent | |||
@@ -299,7 +263,6 @@ class Agent extends Mobile_Detect | |||
return false; | |||
} | |||
/** | |||
* Check if device is a robot. | |||
* @param string|null $userAgent | |||
@@ -309,7 +272,6 @@ class Agent extends Mobile_Detect | |||
{ | |||
return $this->getCrawlerDetect()->isCrawler($userAgent ?: $this->userAgent); | |||
} | |||
/** | |||
* Get the device type | |||
* @param null $userAgent | |||
@@ -327,51 +289,38 @@ class Agent extends Mobile_Detect | |||
} elseif ($this->isRobot($userAgent)) { | |||
return "robot"; | |||
} | |||
return "other"; | |||
} | |||
public function version($propertyName, $type = self::VERSION_TYPE_STRING) | |||
{ | |||
if (empty($propertyName)) { | |||
return false; | |||
} | |||
// set the $type to the default if we don't recognize the type | |||
//set the $type to the default if we don't recognize the type | |||
if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) { | |||
$type = self::VERSION_TYPE_STRING; | |||
} | |||
$properties = self::getProperties(); | |||
// Check if the property exists in the properties array. | |||
//Check if the property exists in the properties array. | |||
if (true === isset($properties[$propertyName])) { | |||
// Prepare the pattern to be matched. | |||
// Make sure we always deal with an array (string is converted). | |||
//Prepare the pattern to be matched. | |||
//Make sure we always deal with an array (string is converted). | |||
$properties[$propertyName] = (array) $properties[$propertyName]; | |||
foreach ($properties[$propertyName] as $propertyMatchString) { | |||
if (is_array($propertyMatchString)) { | |||
$propertyMatchString = implode("|", $propertyMatchString); | |||
} | |||
$propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); | |||
// Identify and extract the version. | |||
//Identify and extract the version. | |||
preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); | |||
if (false === empty($match[1])) { | |||
$version = ($type === self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); | |||
return $version; | |||
} | |||
} | |||
} | |||
return false; | |||
} | |||
/** | |||
* Merge multiple rules into one array. | |||
* @param array $all | |||
@@ -380,7 +329,6 @@ class Agent extends Mobile_Detect | |||
protected static function mergeRules(...$all) | |||
{ | |||
$merged = []; | |||
foreach ($all as $rules) { | |||
foreach ($rules as $key => $value) { | |||
if (empty($merged[$key])) { | |||
@@ -392,24 +340,19 @@ class Agent extends Mobile_Detect | |||
} | |||
} | |||
} | |||
return $merged; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function __call($name, $arguments) | |||
{ | |||
// Make sure the name starts with 'is', otherwise | |||
//Make sure the name starts with 'is', otherwise | |||
if (strpos($name, 'is') !== 0) { | |||
throw new Exception("No such method exists: $name"); | |||
} | |||
$this->setDetectionType(self::DETECTION_TYPE_EXTENDED); | |||
$key = substr($name, 2); | |||
return $this->matchUAAgainstKey($key); | |||
} | |||
} | |||
} |
@@ -8,11 +8,9 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||
* This source file is subject to the MIT license that is bundled | |||
* with this source code in the file LICENSE. | |||
*/ | |||
require_once(DEDEINC."/libraries/fixtures/crawlers.php"); | |||
require_once(DEDEINC."/libraries/fixtures/exclusions.php"); | |||
require_once(DEDEINC."/libraries/fixtures/headers.php"); | |||
class CrawlerDetect | |||
{ | |||
/** | |||
@@ -21,56 +19,48 @@ class CrawlerDetect | |||
* @var string|null | |||
*/ | |||
protected $userAgent; | |||
/** | |||
* Headers that contain a user agent. | |||
* | |||
* @var array | |||
*/ | |||
protected $httpHeaders = array(); | |||
/** | |||
* Store regex matches. | |||
* | |||
* @var array | |||
*/ | |||
protected $matches = array(); | |||
/** | |||
* Crawlers object. | |||
* | |||
* @var \Jaybizzle\CrawlerDetect\Fixtures\Crawlers | |||
*/ | |||
protected $crawlers; | |||
/** | |||
* Exclusions object. | |||
* | |||
* @var \Jaybizzle\CrawlerDetect\Fixtures\Exclusions | |||
*/ | |||
protected $exclusions; | |||
/** | |||
* Headers object. | |||
* | |||
* @var \Jaybizzle\CrawlerDetect\Fixtures\Headers | |||
*/ | |||
protected $uaHttpHeaders; | |||
/** | |||
* The compiled regex string. | |||
* | |||
* @var string | |||
*/ | |||
protected $compiledRegex; | |||
/** | |||
* The compiled exclusions regex string. | |||
* | |||
* @var string | |||
*/ | |||
protected $compiledExclusions; | |||
/** | |||
* Class constructor. | |||
*/ | |||
@@ -79,14 +69,11 @@ class CrawlerDetect | |||
$this->crawlers = new Crawlers(); | |||
$this->exclusions = new Exclusions(); | |||
$this->uaHttpHeaders = new Headers(); | |||
$this->compiledRegex = $this->compileRegex($this->crawlers->getAll()); | |||
$this->compiledExclusions = $this->compileRegex($this->exclusions->getAll()); | |||
$this->setHttpHeaders($headers); | |||
$this->setUserAgent($userAgent); | |||
} | |||
/** | |||
* Compile the regex patterns into one regex string. | |||
* | |||
@@ -98,7 +85,6 @@ class CrawlerDetect | |||
{ | |||
return '('.implode('|', $patterns).')'; | |||
} | |||
/** | |||
* Set HTTP headers. | |||
* | |||
@@ -106,23 +92,20 @@ class CrawlerDetect | |||
*/ | |||
public function setHttpHeaders($httpHeaders) | |||
{ | |||
// Use global _SERVER if $httpHeaders aren't defined. | |||
//Use global _SERVER if $httpHeaders aren't defined. | |||
if (! is_array($httpHeaders) || ! count($httpHeaders)) { | |||
$httpHeaders = $_SERVER; | |||
} | |||
// Clear existing headers. | |||
//Clear existing headers. | |||
$this->httpHeaders = array(); | |||
// Only save HTTP headers. In PHP land, that means | |||
// only _SERVER vars that start with HTTP_. | |||
//Only save HTTP headers. In PHP land, that means | |||
//only _SERVER vars that start with HTTP_. | |||
foreach ($httpHeaders as $key => $value) { | |||
if (strpos($key, 'HTTP_') === 0) { | |||
$this->httpHeaders[$key] = $value; | |||
} | |||
} | |||
} | |||
/** | |||
* Return user agent headers. | |||
* | |||
@@ -132,7 +115,6 @@ class CrawlerDetect | |||
{ | |||
return $this->uaHttpHeaders->getAll(); | |||
} | |||
/** | |||
* Set the user agent. | |||
* | |||
@@ -150,7 +132,6 @@ class CrawlerDetect | |||
return $this->userAgent = $userAgent; | |||
} | |||
/** | |||
* Check user agent string against the regex. | |||
* | |||
@@ -172,7 +153,6 @@ class CrawlerDetect | |||
return (bool) preg_match("/{$this->compiledRegex}/i", $agent, $this->matches); | |||
} | |||
/** | |||
* Return the matches. | |||
* | |||
@@ -182,4 +162,4 @@ class CrawlerDetect | |||
{ | |||
return isset($this->matches[0]) ? $this->matches[0] : null; | |||
} | |||
} | |||
} |
@@ -1,8 +1,6 @@ | |||
<?php | |||
if (!defined('DEDEINC')) exit('dedebiz'); | |||
require_once(DEDEINC."/libraries/agent.class.php"); | |||
/** | |||
* 流量统计 | |||
* 一个轻量级流量统计功能 | |||
@@ -13,13 +11,11 @@ require_once(DEDEINC."/libraries/agent.class.php"); | |||
* @license https://www.dedebiz.com/license | |||
* @link https://www.dedebiz.com | |||
*/ | |||
class DedeStatistics { | |||
function __construct() | |||
{ | |||
} | |||
// 获取统计JS | |||
//获取统计JS | |||
function GetStat() | |||
{ | |||
global $envs,$cfg_cookie_encode; | |||
@@ -66,7 +62,7 @@ class DedeStatistics { | |||
var xhr; | |||
if (window.XMLHttpRequest) { | |||
xhr = new XMLHttpRequest(); | |||
} else if (window.ActiveXObject) { // IE | |||
} else if (window.ActiveXObject) { //IE | |||
try { | |||
xhr = new ActiveXObject('Msxml2.XMLHTTP'); | |||
} catch (e) { | |||
@@ -83,14 +79,13 @@ class DedeStatistics { | |||
fetch(u); | |||
} | |||
})(); | |||
EOT; | |||
EOT; | |||
} | |||
// 统计 | |||
//统计 | |||
function Record() | |||
{ | |||
global $dsql,$cfg_cookie_encode; | |||
// 进行统计 | |||
//进行统计 | |||
$pm = array('dduuid','ssid','browser','device','device_type','os','t','created_date','created_hour','url_type','typeid','aid','value','sign'); | |||
$pmvalue = array(); | |||
foreach ($pm as $v) { | |||
@@ -115,8 +110,7 @@ EOT; | |||
$insql = "INSERT INTO `#@__statistics_detail`(".implode(",",$kstr).") VALUES (".implode(",",$vstr).")"; | |||
return $dsql->ExecuteNoneQuery($insql); | |||
} | |||
// 生成uuid | |||
//生成uuid | |||
function _uniqidReal($lenght = 13) { | |||
if (function_exists("random_bytes")) { | |||
$bytes = random_bytes(ceil($lenght / 2)); | |||
@@ -127,7 +121,6 @@ EOT; | |||
} | |||
return substr(bin2hex($bytes), 0, $lenght); | |||
} | |||
function GetInfoByDateMulti($ds = array()) | |||
{ | |||
$results = array(); | |||
@@ -137,8 +130,7 @@ EOT; | |||
} | |||
return $result; | |||
} | |||
// 获取某天的统计信息 | |||
//获取某天的统计信息 | |||
function GetInfoByDate($d=0) | |||
{ | |||
global $dsql; | |||
@@ -160,9 +152,8 @@ EOT; | |||
$d = $today; | |||
} | |||
$d = intval($d); | |||
// 如果统计数据中存在,则直接查询统计表 | |||
//如果统计数据中存在,则直接查询统计表 | |||
$info = $dsql->GetOne("SELECT * FROM `#@__statistics` WHERE sdate = $d"); | |||
if (is_array($info)) { | |||
return $info; | |||
} | |||
@@ -171,7 +162,7 @@ EOT; | |||
$ip = $dsql->GetOne("SELECT COUNT(DISTINCT ip) as total FROM `#@__statistics_detail` WHERE created_date = $d"); | |||
$vv = $dsql->GetOne("SELECT COUNT(DISTINCT ssid) as total FROM `#@__statistics_detail` WHERE created_date = $d"); | |||
if ($d < intval($today)) { | |||
// 缓存数据 | |||
//缓存数据 | |||
$insql = "INSERT INTO `#@__statistics`(`sdate`,`pv`,`uv`,`ip`,`vv`) VALUES ('$d', '{$pv['total']}','{$uv['total']}','{$ip['total']}','{$vv['total']}')"; | |||
$dsql->ExecuteNoneQuery($insql); | |||
} | |||
@@ -12,9 +12,9 @@ if ($myurl == '') exit(''); | |||
else { | |||
$uid = $cfg_ml->M_LoginID; | |||
$face = $cfg_ml->fields['face'] == '' ? $GLOBALS['cfg_memberurl'].'/images/nopic.gif' : $cfg_ml->fields['face']; | |||
echo "用户名:{$cfg_ml->M_UserName} <input name=\"notuser\" type=\"checkbox\" id=\"notuser\" value=\"1\" />匿名评论\r\n"; | |||
echo "用户名:{$cfg_ml->M_UserName} <input name='notuser' type='checkbox' id='notuser' value='1' />匿名评论\r\n"; | |||
if ($cfg_feedback_ck == 'Y') { | |||
echo "验证码:<input name=\"validate\" type=\"text\" id=\"validate\" size=\"10\" style=\"height:18px;width:60px;margin-right:6px;text-transform: uppercase;\" class=\"nb\" />"; | |||
echo "<img src='{$cfg_cmsurl}/apps/vdimgck.php' style='cursor:pointer' id='validateimg' onclick=\"this.src=this.src+'?'\" title='验证码' alt='验证码' />\r\n"; | |||
echo "验证码:<input name='validate' type='text' id='validate' size='10' style='height:18px;width:60px;margin-right:6px;text-transform: uppercase;' class='nb' />"; | |||
echo "<img src='{$cfg_cmsurl}/apps/vdimgck.php' style='cursor:pointer' id='validateimg' onclick='this.src=this.src+'?'' alt='验证码' title='验证码' />\r\n"; | |||
} | |||
} |
@@ -27,7 +27,6 @@ function GetSta($sta) | |||
else if ($sta == 1) return '已付款'; | |||
else return '已完成'; | |||
} | |||
if ($dopost == '') { | |||
$sql = "SELECT * FROM `#@__member_operation` WHERE mid='".$cfg_ml->M_ID."' AND product<>'archive' ORDER BY aid DESC"; | |||
$dlist = new DataListCP(); | |||