Skip to content

Commit

Permalink
NGあぼーんの対象になったレスのIDを自動的にNGあぼーんする機能を追加
Browse files Browse the repository at this point in the history
  • Loading branch information
2ch774 committed Apr 7, 2015
1 parent cb6331f commit 214b4a9
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 17 deletions.
2 changes: 1 addition & 1 deletion conf/conf.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// バージョン情報
$_conf = array(
'p2name' => 'rep2-expack_allinone', // rep2の名前
'p2version' => '150406.2211', // rep2のバージョン
'p2version' => '150407.1000', // rep2のバージョン
);

$_conf['p2ua'] = "{$_conf['p2name']}/{$_conf['p2version']}";
Expand Down
4 changes: 4 additions & 0 deletions conf/conf_user_def.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,10 @@
$conf_user_def['ngaborn_chain'] = 0; // (0)
$conf_user_rad['ngaborn_chain'] = array('1' => 'する', '0' => 'しない', '2' => 'すべてNGにする');

// NGあぼーんの対象になったレスのIDを自動的にNGあぼーんする(する:1, しない:0 NGにする:2)
$conf_user_def['ngaborn_auto'] = 0; // (0)
$conf_user_rad['ngaborn_auto'] = array('1' => 'する', '0' => 'しない');

// 表示範囲外のレスも連鎖NGあぼーんの対象にする(する:1, しない:0)
// 処理を軽くするため、デフォルトではしない
$conf_user_def['ngaborn_chain_all'] = 0; // (0)
Expand Down
58 changes: 44 additions & 14 deletions lib/NgAbornCtl.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@
'aborn_name' => 0,
'aborn_res' => 0,
'aborn_thread' => 0,
'aborn_auto' => 0,
'ng_chain' => 0,
'ng_freq' => 0,
'ng_id' => 0,
'ng_mail' => 0,
'ng_msg' => 0,
'ng_name' => 0,
'ng_auto' => 0,
'highlight_chain' => 0,
'highlight_id' => 0,
'highlight_mail' => 0,
Expand All @@ -30,8 +32,7 @@
// }}}
// {{{ NgAbornCtl

class NgAbornCtl
{
class NgAbornCtl {
// {{{ saveNgAborns()

/**
Expand All @@ -40,8 +41,7 @@ class NgAbornCtl
* @param void
* @return void
*/
static public function saveNgAborns()
{
static public function saveNgAborns() {
global $ngaborns, $ngaborns_hits;
global $_conf;

Expand Down Expand Up @@ -116,8 +116,7 @@ static public function saveNgAborns()
* @param array $aborn_threads
* @return void
*/
static public function saveAbornThreads(array $aborn_threads)
{
static public function saveAbornThreads(array $aborn_threads) {
if (array_key_exists('ngaborns', $GLOBALS)) {
$orig_ngaborns = $GLOBALS['ngaborns'];
$restore_ngaborns = true;
Expand All @@ -141,8 +140,7 @@ static public function saveAbornThreads(array $aborn_threads)
/**
* NGあぼーんHIT記録を更新時間でソートする
*/
static public function cmpLastTime($a, $b)
{
static public function cmpLastTime($a, $b) {
if (empty($a['lasttime']) || empty($b['lasttime'])) {
return strcmp($a['lasttime'], $b['lasttime']);
}
Expand All @@ -161,8 +159,8 @@ static public function cmpLastTime($a, $b)
* @param void
* @return array
*/
static public function loadNgAborns()
{
static public function loadNgAborns() {
global $_conf;
$ngaborns = array();

$ngaborns['aborn_res'] = self::_readNgAbornFromFile('p2_aborn_res.txt'); // これだけ少し性格が異なる
Expand All @@ -183,6 +181,12 @@ static public function loadNgAborns()
$ngaborns['highlight_msg'] = self::_readNgAbornFromFile('p2_highlight_msg.txt');
$ngaborns['highlight_id'] = self::_readNgAbornFromFile('p2_highlight_id.txt');

if ($_conf['ngaborn_auto']) {
// 自動NG
$ngaborns['aborn_auto'] = self::_readNgAbornFromFile('p2_aborn_auto.txt');
$ngaborns['ng_auto'] = self::_readNgAbornFromFile('p2_ng_auto.txt');
}

return $ngaborns;
}

Expand All @@ -195,19 +199,45 @@ static public function loadNgAborns()
* @param void
* @return array
*/
static public function loadAbornThreads()
{
static public function loadAbornThreads() {
return self::_readNgAbornFromFile('p2_aborn_thread.txt');
}

// }}}
// {{{ ngAbornAdd()
/**
* あぼーん&NGワード設定を追加する
*
* @param string どこに追加するか
* @param string 追加する内容
* @return bool 登録されたらtrue
*/
static public function ngAbornAdd($code, $word) {
global $ngaborns;
foreach ($ngaborns[$code]['data'] as $data) {
if ($data['cond'] === $word) {
return false; //見つかったら追加せずに抜ける
}
}

// 追加
$ngaborns[$code]['data'][] = array(
'cond' => $word, // 検索条件
'word' => $word, // 対象文字列
'lasttime' => null, // 最後にHITした時間
'hits' => 0, // HIT回数
'regex' => false, // パターンマッチ関数
'ignorecase' => false, // 大文字小文字を無視
);
return;
}
// }}}
// {{{ _readNgAbornFromFile()

/**
* readNgAbornFromFile
*/
static protected function _readNgAbornFromFile($filename)
{
static protected function _readNgAbornFromFile($filename) {
global $_conf;

$file = $_conf['pref_dir'] . '/' . $filename;
Expand Down
45 changes: 45 additions & 0 deletions lib/ShowThread.php
Original file line number Diff line number Diff line change
Expand Up @@ -726,20 +726,40 @@ protected function _ngAbornCheck($i, $name, $mail, $date_id, $id, $msg, $nong =
// }}}
// {{{ あぼーんチェック

if ($_conf['ngaborn_auto']) {//自動あぼーん
// 自動あぼーんID
if ($this->ngAbornCheck('aborn_auto', $date_id) !== false) {
$ngaborns_hits['aborn_auto']++;
return $this->_markNgAborn($i, self::ABORN, false);
}
}

// あぼーんレス
if ($this->abornResCheck($i) !== false) {
if ($_conf['ngaborn_auto']) {
//自動あぼーんならIDを追加
NgAbornCtl::ngAbornAdd('aborn_auto', $id);
}
$ngaborns_hits['aborn_res']++;
return $this->_markNgAborn($i, self::ABORN, false);
}

// あぼーんネーム
if ($this->ngAbornCheck('aborn_name', $name) !== false) {
if ($_conf['ngaborn_auto']) {
//自動あぼーんならIDを追加
NgAbornCtl::ngAbornAdd('aborn_auto', $id);
}
$ngaborns_hits['aborn_name']++;
return $this->_markNgAborn($i, self::ABORN, false);
}

// あぼーんメール
if ($this->ngAbornCheck('aborn_mail', $mail) !== false) {
if ($_conf['ngaborn_auto']) {
//自動あぼーんならIDを追加
NgAbornCtl::ngAbornAdd('aborn_auto', $id);
}
$ngaborns_hits['aborn_mail']++;
return $this->_markNgAborn($i, self::ABORN, false);
}
Expand All @@ -752,6 +772,10 @@ protected function _ngAbornCheck($i, $name, $mail, $date_id, $id, $msg, $nong =

// あぼーんメッセージ
if ($this->ngAbornCheck('aborn_msg', $msg) !== false) {
if ($_conf['ngaborn_auto']) {
//自動あぼーんならIDを追加
NgAbornCtl::ngAbornAdd('aborn_auto', $id);
}
$ngaborns_hits['aborn_msg']++;
return $this->_markNgAborn($i, self::ABORN, true);
}
Expand All @@ -764,14 +788,31 @@ protected function _ngAbornCheck($i, $name, $mail, $date_id, $id, $msg, $nong =

// {{{ NGチェック

if ($_conf['ngaborn_auto']) {//自動あぼーん
// 自動NGIDを先にNGする
if ($this->ngAbornCheck('ng_auto', $date_id) !== false) {
$ngaborns_hits['ng_auto']++;
$type |= $this->_markNgAborn($i, self::NG_ID, false);
$autong_done = true; //自動NGIDの対象になったレスは意味が無いのでNGIDに追加しない
}
}

// NGネームチェック
if ($this->ngAbornCheck('ng_name', $name) !== false) {
if ($_conf['ngaborn_auto'] && !$autong_done) {
//自動あぼーんならIDを追加
$add_done = NgAbornCtl::ngAbornAdd('ng_auto', $id);
}
$ngaborns_hits['ng_name']++;
$type |= $this->_markNgAborn($i, self::NG_NAME, false);
}

// NGメールチェック
if ($this->ngAbornCheck('ng_mail', $mail) !== false) {
if ($_conf['ngaborn_auto'] && !$autong_done && !$add_done) {
//自動あぼーんならIDを追加
$add_done = NgAbornCtl::ngAbornAdd('ng_auto', $id);
}
$ngaborns_hits['ng_mail']++;
$type |= $this->_markNgAborn($i, self::NG_MAIL, false);
}
Expand All @@ -785,6 +826,10 @@ protected function _ngAbornCheck($i, $name, $mail, $date_id, $id, $msg, $nong =
// NGメッセージチェック
$a_ng_msg = $this->ngAbornCheck('ng_msg', $msg);
if ($a_ng_msg !== false) {
if ($_conf['ngaborn_auto'] && !$autong_done && !$add_done) {
//自動あぼーんならIDを追加
$add_done = NgAbornCtl::ngAbornAdd('ng_auto', $id);
}
$ngaborns_hits['ng_msg']++;
$type |= $this->_markNgAborn($i, self::NG_MSG, true);
$info[] = sprintf('NG%s:%s',
Expand Down
1 change: 1 addition & 0 deletions rep2/edit_conf_user.php
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@
array('ngaborn_frequent_num', '頻出IDあぼーんのしきい値 (出現回数がこれ以上のIDをあぼーん)'),
array('ngaborn_frequent_dayres', '勢いの速いスレでは頻出IDあぼーんしない<br>(総レス数/スレ立てからの日数、0なら無効)'),
array('ngaborn_chain', '連鎖NGあぼーん<br>「する」ならあぼーんレスへのレスはあぼーん、NGレスへのレスはNG。<br>「すべてNGにする」の場合、あぼーんレスへのレスもNGにする。'),
array('ngaborn_auto', 'NGあぼーんの対象になったレスのIDを自動的にNGあぼーんする<br>「する」ならあぼーんレスのIDはあぼーん、NGレスのIDはNG。'),
array('ngaborn_chain_all', '表示範囲外のレスも連鎖NG/あぼーん/ハイライトの対象にする<br>(処理を軽くするため、デフォルトではしない)'),
array('ngaborn_daylimit', 'この期間、NG/あぼーん/ハイライトにHITしなければ、登録ワードを自動的に外す (日数)'),
array('ngaborn_purge_aborn', 'あぼーんレスは不可視divブロックも描画しない'),
Expand Down
11 changes: 9 additions & 2 deletions rep2/editpref.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@
$delflag = true;
}
break;
case autong:
if(deleteFile($_conf['pref_dir'] . '/p2_aborn_auto.txt') &&
deleteFile($_conf['pref_dir'] . '/p2_ng_auto.txt') ) {
$delflag = true;
}
break;
default:
$delflag = false;
P2Util::pushInfoHtml("<p>p2 error: 引数 {$_POST['delete']} が不正です。 ");
Expand Down Expand Up @@ -339,9 +345,10 @@ function deleteCheck(submit){
EOP;
echo getDeleteHistoryFormHt('cookie', 'Cookie');
echo getDeleteHistoryFormHt('matome', '新着まとめ読み');
echo getDeleteHistoryFormHt('matome', 'まとめ読み');
echo getDeleteHistoryFormHt('reshist', '書込履歴');
echo getDeleteHistoryFormHt('recent', '最近読んだスレ');
echo getDeleteHistoryFormHt('recent', '閲覧履歴');
echo getDeleteHistoryFormHt('autong', '自動NGアボーン');
echo <<<EOP
</fieldset>\n
EOP;
Expand Down

0 comments on commit 214b4a9

Please sign in to comment.