Skip to content

Commit

Permalink
V1.5.0 - see change logs
Browse files Browse the repository at this point in the history
  • Loading branch information
bo-blog committed Oct 3, 2017
1 parent 307247d commit 2c88998
Show file tree
Hide file tree
Showing 15 changed files with 482 additions and 49 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
1.5.0
- 新增:评论管理。可从文章管理界面进入。
- 新增:可将文件拖拽到编辑器区域开始上传。
- 修复:安装bug导致使用MySQL时无法评论。
- 修复:默认主题在头像过大时登陆界面的问题。

1.4.0
- 新增:内置评论回归。取消已停运的多说服务设置。
- 改进:完善了翻页,现在可以快速定位到特定分页。(默认主题)
Expand Down
56 changes: 50 additions & 6 deletions inc/comment.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function alterAID ($aID)

public function alterPerPage ($num)
{
bw :: $conf['perPage'] = floor ($num);
bw :: $conf['comPerLoad'] = floor ($num);
}

public function showBlocked ($status = false)
Expand All @@ -58,36 +58,38 @@ public function getComList ()
$blockedStr = 'comBlock=0';
}

$qStr = $this -> aID === false ? "SELECT * FROM comments WHERE {$blockedStr} ORDER BY comTime DESC LIMIT ?, ?" : "SELECT * FROM comments WHERE comArtID=? AND {$blockedStr} ORDER BY comTime DESC LIMIT ?, ?";
$qStr = $this -> aID === false ? "SELECT articles.aTitle,comments.* FROM comments INNER JOIN articles ON comments.comArtID = articles.aID WHERE {$blockedStr} ORDER BY comTime DESC LIMIT ?, ?" : "SELECT * FROM comments WHERE comArtID=? AND {$blockedStr} ORDER BY comTime DESC LIMIT ?, ?";

if ($this -> aID === false) {
$qBind = array ($currentTitleStart, bw :: $conf['comPerLoad']);
} else {
$qBind = array ($this -> aID, $currentTitleStart, bw :: $conf['comPerLoad']);
}
$allComs = bw :: $db -> getRows ($qStr, $qBind);

foreach ($allComs as $comID => $row) {
$row['comAvatarAvailable'] = $row['comAvatar'] ? 1 : 0;
$row['comAvatar'] = $row['comAvatar'] ? $row['comAvatar'] : bw :: $conf['siteURL'] . '/conf/default.png';
$this -> comList[$comID] = $row;
}


hook ('getComList', 'Execute', $this);
$this -> getTotalComs ();
}

private function getTotalComs ()
{
if ($this -> listBlocked) {
$blockedStr = $this -> listBlocked == 'only' ? 'comBlock=1' : '1=1';
$blockedStr = (string) $this -> listBlocked == 'only' ? 'comBlock=1' : '1=1';
} else {
$blockedStr = 'comBlock=0';
}
if ($this -> aID === false) {
$this -> totalCom = bw :: $db -> countRows ("SELECT comID FROM comments WHERE {$blockedStr}");
$this -> totalCom = bw :: $db -> countRows ("SELECT articles.aTitle,comments.comID FROM comments INNER JOIN articles ON comments.comArtID = articles.aID WHERE {$blockedStr}");
} else {
$this -> totalCom = bw :: $db -> countRows ("SELECT comID FROM comments WHERE comArtID=? AND {$blockedStr}", array ($this -> aID));
$this -> totalCom = bw :: $db -> countRows ("SELECT articles.aTitle,comments.comID FROM comments INNER JOIN articles ON comments.comArtID = articles.aID WHERE comArtID=? AND {$blockedStr}", array ($this -> aID));
}

hook ('getTotalComs', 'Execute', $this);
}

Expand Down Expand Up @@ -188,6 +190,23 @@ public function blockItem ($comID, $aID)
hook ('blockItem', 'Execute', $comID, $aID);
}

public function blockItemBatch ($comIDList, $comArtIDList = false)
{
if (is_array ($comIDList)) {
$whereIn = str_repeat ("?,", count ($comIDList) -1) . "?";
bw :: $db -> dbExec ("UPDATE comments SET comBlock=1 WHERE comID IN ($whereIn)", $comIDList);
}
if (is_array ($comArtIDList)) {
$aIDList = array_count_values ($comArtIDList);
foreach ($aIDList as $aID => $num) {
bw :: $db -> dbExec ("UPDATE articles SET aComments=aComments-{$num} WHERE aID=?", array ($aID));
}
}
clearCache (); //Clear all cache
hook ('blockItemBatch', 'Execute', $comIDList, $comArtIDList);
return true;
}

public function blockIP ($comID)
{
$taID = bw :: $db -> getSingleRow ('SELECT * FROM comments WHERE comID=?', array ($comID));
Expand All @@ -206,8 +225,33 @@ public function blockIP ($comID)
foreach ($allAffectedArticles as $affAID => $affCount) {
bw :: $db -> dbExec ('UPDATE articles SET aComments=aComments-? WHERE aID=?', array ($affCount, $affAID));
}
bw :: $db -> dbExec ('UPDATE articles SET aComments=0 WHERE aComments<0'); //Fix a bug causing comments less than zero
clearCache (); //Clear all cache
}
hook ('blockIP', 'Execute', $comID);
}

public function delBlockedBatch ($comIDList)
{
$allAffectedComments = '(' . implode (',', array_unique ($comIDList)) . ')';
bw :: $db -> dbExec ('DELETE FROM comments WHERE comID IN ' . $allAffectedComments .' AND comBlock=1');
hook ('delBlockedBatch', 'Execute', $comIDList);
}

public function restoreItemBatch ($comIDList, $comArtIDList = false)
{
if (is_array ($comIDList)) {
$whereIn = str_repeat ("?,", count ($comIDList) -1) . "?";
bw :: $db -> dbExec ("UPDATE comments SET comBlock=0 WHERE comID IN ($whereIn)", $comIDList);
}
if (is_array ($comArtIDList)) {
$aIDList = array_count_values ($comArtIDList);
foreach ($aIDList as $aID => $num) {
bw :: $db -> dbExec ("UPDATE articles SET aComments=aComments+{$num} WHERE aID=?", array ($aID));
}
}
clearCache (); //Clear all cache
hook ('resoreItemBatch', 'Execute', $comIDList, $comArtIDList);
return true;
}
}
5 changes: 5 additions & 0 deletions inc/script/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ $("#searchVal").keydown (function (event) {
if(event.which == 13 && $("#searchVal").val()!='') {
var searchPlus = $("#searchVal").data("searchquery").replace(/http%3A%2F%2F/, '');
searchPlus = searchPlus.replace(/https%3A%2F%2F/, '');
var searchURL = $("#searchVal").data("searchurl");
if (searchURL.indexOf ('baidu') != -1) {
var tmp = searchPlus.split('%2F');
searchPlus = tmp[0];
}
window.location = $("#searchVal").data("searchurl")+encodeURI($("#searchVal").val())+searchPlus;
}
});
4 changes: 2 additions & 2 deletions inc/system.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
* @copyright (c) 2015 bW Development Team
* @license MIT
*/
define ('bwVersion', '1.4.0');
define ('bwInternalVersion', '1400');
define ('bwVersion', '1.5.0');
define ('bwInternalVersion', '1500');
define ('bwUpdate', 'https://bo-blog.github.io/bw-update/');

if (!defined ('P')) {
Expand Down
29 changes: 13 additions & 16 deletions install/index.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
<?php
/**
*
*
* @link http://bw.bo-blog.com
* @copyright (c) 2014 bW Development Team
* @license MIT
Expand All @@ -10,7 +10,7 @@
die ('Already installed.');
}

if (!isset ($_COOKIE['bwInstallLang'])) {
if (!isset ($_REQUEST['bwInstallLang'])) {
initiate ();
} else {
output ();
Expand All @@ -21,16 +21,17 @@ function output ()
{
$PHPver=PHP_VERSION >= '5.3.0' ? 1 : 0;
$debug=isset ($_REQUEST['debug']) ? 1 : 0;
$ln='./' . basename ($_COOKIE['bwInstallLang']) . '.lang.php';
$ln='./' . basename ($_REQUEST['bwInstallLang']) . '.lang.php';
file_exists ($ln) ? include_once ($ln) : include_once ('./en.lang.php');
setcookie ('bwInstallLang', $_REQUEST['bwInstallLang']);

print<<<eot
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="robots" content="none" />
<title>Welcome to bW</title>
<script src="../inc/script/jquery.min.js"></script>
Expand Down Expand Up @@ -224,7 +225,7 @@ function doSetup ()
</body>
</html>
eot;
}
}

function initiate ()
{
Expand All @@ -235,7 +236,7 @@ function initiate ()
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="robots" content="none" />
<title>Welcome to bW</title>
<script src="../inc/script/jquery.min.js"></script>
Expand All @@ -246,21 +247,17 @@ function initiate ()
<div id="layer2" class="layer">
<p class="wL"><span class="icon-newicon"></span></p>
<p class="wS">
<br/><br/><span class="wM wBox btn1" data-lang="en">English</span>&nbsp;&nbsp;
<span class="wM wBox btn1" data-lang="zh-cn">中文(简体)</span>&nbsp;&nbsp;
<span class="wM wBox btn1" data-lang="zh-tw">中文(繁體)</span>&nbsp;&nbsp;
<br/><br/><span class="wM wBox btn1" data-lang="en">English</span>&nbsp;&nbsp;
<span class="wM wBox btn1" data-lang="zh-cn">中文(简体)</span>&nbsp;&nbsp;
<span class="wM wBox btn1" data-lang="zh-tw">中文(繁體)</span>&nbsp;&nbsp;
</p>
</div>
<script>
$('.btn1').click (function(){
setCookie ('bwInstallLang', $(this).data('lang'));
window.location='index.php';
window.location='index.php?bwInstallLang=' + $(this).data('lang');
});
function setCookie (c_name, value) {
document.cookie=c_name+ "=" +escape(value);
}
</script>
</body>
</html>
eot;
}
}
26 changes: 13 additions & 13 deletions install/install_action.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
<?php
/**
*
*
* @link http://bw.bo-blog.com
* @copyright (c) 2014 bW Development Team
* @license MIT
Expand Down Expand Up @@ -36,10 +36,10 @@
} else {
$PDOSupported = PDO :: getAvailableDrivers ();
$rslt5 = (in_array ('sqlite', $PDOSupported) || in_array ('mysql', $PDOSupported)) ? 1 : 0;
}
}
$rslt6 = $rslt2 * $rslt3 * $rslt4 * $rslt5;
die (json_encode (array ('rslt2' => $rslt2, 'rslt3' => $rslt3, 'rslt4' => $rslt4, 'rslt5' => $rslt5, 'rslt6' => $rslt6)));
}
}

if ($step == 2) {
if (isset ($_POST['instd'])) {
Expand Down Expand Up @@ -95,10 +95,10 @@
'qiniuUpload' => '0',
'qiniuDomain' => '',
'APIOpen' => '0',
'basicAPI' =>
'basicAPI' =>
array (
),
'advancedAPI' =>
'advancedAPI' =>
array (
),
'aliyunAKey' => '',
Expand All @@ -112,7 +112,7 @@
$rslt7 = $rslt8 = $rslt9 = 0;
$rslt10 = $l['data.error'];
} else {
$rslt7 = 1;
$rslt7 = 1;
define ('P', './');
include (P . 'inc/database.inc.php');
$db = new bwDatabase;
Expand All @@ -129,15 +129,15 @@
}
$errorStatus=$rslt7*$rslt8*$rslt9 ? 0 : 1;
die (json_encode (array ('error' => $errorStatus, 'rslt7' => $rslt7, 'rslt8' => $rslt8, 'rslt9' => $rslt9, 'rslt10' => $rslt10)));
}
}
}
}

function dataFilter ($reservedKeys, $submitData)
{
$reservedArray = array_fill_keys($reservedKeys, null);
$returnArray = array_intersect_key ($submitData, $reservedArray);
return array_merge ($reservedArray, $returnArray);
}
}

function dbInit ($dbType)
{
Expand All @@ -160,7 +160,7 @@ function dbInit ($dbType)
'CREATE TABLE IF NOT EXISTS extensions (extID VARCHAR (255) PRIMARY KEY NOT NULL , extDesc TEXT, extHooks TEXT NOT NULL , extActivate TINYINT NOT NULL , extOrder INTEGER UNSIGNED, extStorage TEXT , isWidget TINYINT NOT NULL) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci',
'CREATE TABLE IF NOT EXISTS statistics (pageURL VARCHAR(255) PRIMARY KEY NOT NULL , sNum INTEGER UNSIGNED DEFAULT 0, lastView DATETIME) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci',
'CREATE TABLE IF NOT EXISTS tags (tValue VARCHAR (255) PRIMARY KEY NOT NULL UNIQUE , tList TEXT, tCount INTEGER UNSIGNED DEFAULT 0) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci',
'CREATE TABLE IF NOT EXISTS comments (comID INTEGER PRIMARY KEY NOT NULL , comName VARCHAR (255), comTime DATETIME, comIP1 VARCHAR (255), comIP2 VARCHAR (255), comAvatar VARCHAR (255), comContent TEXT, comArtID VARCHAR (255), comParentID INTEGER, comSource VARCHAR (255), comURL VARCHAR (255), comBlock TINYINT) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci',
'CREATE TABLE IF NOT EXISTS comments (comID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT , comName VARCHAR (255), comTime DATETIME, comIP1 VARCHAR (255), comIP2 VARCHAR (255), comAvatar VARCHAR (255), comContent TEXT, comArtID VARCHAR (255), comParentID INTEGER, comSource VARCHAR (255), comURL VARCHAR (255), comBlock TINYINT) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci',
);
}
if ($dbType=='SQLite' || $dbType=='MySQL') {
Expand Down Expand Up @@ -230,6 +230,6 @@ function checkWritable () {
} elseif (!is_writable ('./' . $aFolder . '/')) {
return false;
}
}
}
return true;
}
}
9 changes: 9 additions & 0 deletions lang/en.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
'admin:sect:Pages' => 'Manage Custom Pages',
'admin:sect:API' => 'Manage API',
'admin:sect:Aliyun' => 'Aliyun',
'admin:sect:Comments' => 'Manage Comments',

'admin:item:SiteName' => 'Website Name',
'admin:item:SiteURL' => 'Website Root URL',
Expand Down Expand Up @@ -175,6 +176,8 @@
'admin:opt:Google' => 'Google',
'admin:opt:Bing' => 'Bing',
'admin:opt:Sogou' => 'Sogou',
'admin:opt:Blocked' => 'Blocked',
'admin:opt:NonBlocked' => 'Viewable',

'admin:msg:SiteURL' => 'Example: http://name.com/path. Do not change unless you know what you\'re doing.',
'admin:msg:BlankPsw' => 'Leave blank to keep the current password',
Expand Down Expand Up @@ -251,6 +254,11 @@
'admin:msg:AliyunRegion' => 'Check <a href="https://help.aliyun.com/document_detail/31837.html" target="_blank">this page </a> for Region name.',
'admin:msg:LessSQL' => 'Disable counts on page visits and article reads to reduce DB write operations.',
'admin:msg:EmbededSearch' => 'Enable only after search engine indexed your website.',
'admin:msg:Regarding' => ' regarding ',
'admin:msg:ConfirmBlock' => 'Block selected comments?',
'admin:msg:ConfirmUnBlock' => 'Restore selected comments?',
'admin:msg:ConfirmDeleteComments' => 'Do you want to clear all selected comments? The action is not recoverable!',
'admin:msg:EndDropToUpload' => 'Drop here to upload',

'admin:btn:Save' => 'Save',
'admin:btn:Restore' => 'Restore',
Expand Down Expand Up @@ -283,6 +291,7 @@
'admin:btn:AddKey' => 'Add a new API Key',
'admin:btn:APIAddr' => 'API URL',
'admin:btn:DownloadManual' => 'Download for Manual Update',
'admin:btn:Restore' => 'Restore',

'admin:msg:NeedLogin' => 'You need to login first.',
'admin:msg:ChangeSaved' => 'Changes have been saved.',
Expand Down
14 changes: 11 additions & 3 deletions lang/zh-cn.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
'page:PrevPage' => '上页',
'page:ComError1' => '必填项未填写或不符合要求。',
'page:ComSuccess' => '评论发布成功。',
'page:BlockItem' => '屏蔽此条',
'page:BlockIP' => '屏蔽此IP',
'page:BlockItem' => '屏蔽',
'page:BlockIP' => '屏蔽同IP',
'page:AddComment' => '发表评论',
'page:NickName' => '名字',
'page:URL' => '网站或Email(可选)',
Expand Down Expand Up @@ -101,6 +101,7 @@
'admin:sect:Pages' => '管理单页',
'admin:sect:API' => '管理API',
'admin:sect:Aliyun' => '阿里云',
'admin:sect:Comments' => '管理评论',

'admin:item:SiteName' => '网站名',
'admin:item:SiteURL' => '根网址',
Expand Down Expand Up @@ -174,6 +175,8 @@
'admin:opt:Google' => 'Google',
'admin:opt:Bing' => '必应',
'admin:opt:Sogou' => '搜狗',
'admin:opt:Blocked' => '已屏蔽项',
'admin:opt:NonBlocked' => '未屏蔽项',

'admin:msg:SiteURL' => '例如:http://name.com/path。除非你知道在修改什么,请勿改动。',
'admin:msg:BlankPsw' => '不填即不修改',
Expand Down Expand Up @@ -250,6 +253,11 @@
'admin:msg:AliyunRegion' => '请参考 <a href="https://help.aliyun.com/document_detail/31837.html" target="_blank">此页面</a> 确定Region英文表示。',
'admin:msg:LessSQL' => '通过关闭浏览及文章阅读数统计,降低数据库写入次数。适合访问量较大的情况。',
'admin:msg:EmbededSearch' => '建议在建站一段时间后再开启,并选择一个收录本站内容较多的搜索引擎。',
'admin:msg:Regarding' => '回应了',
'admin:msg:ConfirmBlock' => '是否要屏蔽所选的评论?',
'admin:msg:ConfirmUnBlock' => '是否要恢复所选的评论?',
'admin:msg:ConfirmDeleteComments' => '是否要彻底清除所选的评论?删除后不可恢复!',
'admin:msg:EndDropToUpload' => '释放鼠标后开始上传',

'admin:btn:Save' => '保存',
'admin:btn:Restore' => '重置',
Expand Down Expand Up @@ -282,7 +290,7 @@
'admin:btn:AddKey' => '添加一个API Key',
'admin:btn:APIAddr' => 'API接口地址',
'admin:btn:DownloadManual' => '下载以手动更新',
'admin:btn:SelectAllBlocked' => '全选屏蔽项',
'admin:btn:Restore' => '恢复',

'admin:msg:NeedLogin' => '请先登录。',
'admin:msg:ChangeSaved' => '保存成功。',
Expand Down
Loading

0 comments on commit 2c88998

Please sign in to comment.