From a0a02f9b5184c9be2010a63558846657075c7128 Mon Sep 17 00:00:00 2001 From: lens0021 Date: Tue, 16 Oct 2018 21:21:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=90=EC=8B=A0=EC=9D=98=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=AC=EC=95=88=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=91=9C?= =?UTF-8?q?=EA=B2=B0=20=EB=A7=89=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #41 --- includes/Sanction.php | 74 +++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/includes/Sanction.php b/includes/Sanction.php index 3f18f75..c9e72ae 100644 --- a/includes/Sanction.php +++ b/includes/Sanction.php @@ -9,11 +9,11 @@ class Sanction { */ protected $mId; /** - * @var UUID + * @var User */ protected $mAuthor; /** - * @var String + * @var UUID */ protected $mTopic; @@ -216,7 +216,7 @@ public function justTakeMeasure() { self::doBlock( $target, $blockExpiry, $reason, true ); return true; - } + } } /** @@ -812,19 +812,33 @@ public function checkNewVotes() { ] ); - $reason = array(); // 있으면 비우기 - if( !SanctionsUtils::hasVoteRight( User::newFromId( $userId ), $reason ) ) { + $reason = []; // 있으면 비우기 + if ( $this->getAuthor()->getId() == $userId ) { + $content = '이 의견은 다음 이유로 집계되지 않습니다.'. + PHP_EOL.'* 자신의 제재안에 표결할 수 없습니다.'; + try { + $this->replyTo( $row->rev_id, $content ); + } catch ( Flow\Exception\DataModelException $e ) { + /** + * 제안이 없고 리플이 있는 의견을 수정하여 제안을 추가할 경우 그 바로 아래에 리플을 달 수 없기 때문에 오류가 발생합니다. + * @todo + */ + + } + unset( $votes[$userId] ); + continue; + } else if( !SanctionsUtils::hasVoteRight( User::newFromId( $userId ), $reason ) ) { $content = '이 의견은 다음 이유로 집계되지 않습니다.'. - PHP_EOL.'* '.implode( PHP_EOL.'* ', $reason ); - try { - $this->replyTo( $row->rev_id, $content ); - } catch ( Flow\Exception\DataModelException $e ) { - /** - * 제안이 없고 리플이 있는 의견을 수정하여 제안을 추가할 경우 그 바로 아래에 리플을 달 수 없기 때문에 오류가 발생합니다. - * @todo - */ - - } + PHP_EOL.'* '.implode( PHP_EOL.'* ', $reason ); + try { + $this->replyTo( $row->rev_id, $content ); + } catch ( Flow\Exception\DataModelException $e ) { + /** + * 제안이 없고 리플이 있는 의견을 수정하여 제안을 추가할 경우 그 바로 아래에 리플을 달 수 없기 때문에 오류가 발생합니다. + * @todo + */ + + } unset( $votes[$userId] ); continue; } @@ -1108,8 +1122,8 @@ protected static function doBlock( $target, $expiry, $reason, $preventEditOwnUse $logEntry->setParameters( $logParams ); $blockIds = array_merge( array( $success['id'] ), $success['autoIds'] ); $logEntry->setRelations( array( 'ipb_id' => $blockIds ) ); - $logId = $logEntry->insert(); - $logEntry->publish( $logId ); + $logId = $logEntry->insert(); + $logEntry->publish( $logId ); return true; } @@ -1122,22 +1136,22 @@ protected static function unblock( $target, $withLog = false, $reason = null, $u // SpecialUnblock.php에 있던 것과 같은 내용입니다. if ( $block->getType() == Block::TYPE_AUTO ) { - $page = Title::makeTitle( NS_USER, '#' . $block->getId() ); - } else { - $page = $block->getTarget() instanceof User - ? $block->getTarget()->getUserPage() - : Title::makeTitle( NS_USER, $block->getTarget() ); - } + $page = Title::makeTitle( NS_USER, '#' . $block->getId() ); + } else { + $page = $block->getTarget() instanceof User + ? $block->getTarget()->getUserPage() + : Title::makeTitle( NS_USER, $block->getTarget() ); + } if ( $withLog ) { $bot = self::getBot(); - $logEntry = new ManualLogEntry( 'block', 'unblock' ); - $logEntry->setTarget( $page ); - $logEntry->setComment( $reason ); - $logEntry->setPerformer( $user == null ? $bot : $user ); - $logId = $logEntry->insert(); - $logEntry->publish( $logId ); - } + $logEntry = new ManualLogEntry( 'block', 'unblock' ); + $logEntry->setTarget( $page ); + $logEntry->setComment( $reason ); + $logEntry->setPerformer( $user == null ? $bot : $user ); + $logId = $logEntry->insert(); + $logEntry->publish( $logId ); + } } }