summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php')
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php
new file mode 100644
index 00000000..495bd4f8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php
@@ -0,0 +1,72 @@
+<?php
+
+class AbuseFilterExaminePager extends ReverseChronologicalPager {
+ /**
+ * @param AbuseFilterViewExamine $page
+ * @param AbuseFilterChangesList $changesList
+ */
+ function __construct( $page, $changesList ) {
+ parent::__construct();
+ $this->mChangesList = $changesList;
+ $this->mPage = $page;
+ }
+
+ /**
+ * @fixme this is similar to AbuseFilterViewTestBatch::doTest
+ * @return array
+ */
+ function getQueryInfo() {
+ $dbr = wfGetDB( DB_REPLICA );
+ $conds = [];
+
+ if ( (string)$this->mPage->mSearchUser !== '' ) {
+ $conds[] = ActorMigration::newMigration()->getWhere(
+ $dbr, 'rc_user', User::newFromName( $this->mPage->mSearchUser, false )
+ )['conds'];
+ }
+
+ $startTS = strtotime( $this->mPage->mSearchPeriodStart );
+ if ( $startTS ) {
+ $conds[] = 'rc_timestamp>=' . $dbr->addQuotes( $dbr->timestamp( $startTS ) );
+ }
+ $endTS = strtotime( $this->mPage->mSearchPeriodEnd );
+ if ( $endTS ) {
+ $conds[] = 'rc_timestamp<=' . $dbr->addQuotes( $dbr->timestamp( $endTS ) );
+ }
+
+ $conds[] = $this->mPage->buildTestConditions( $dbr );
+
+ $rcQuery = RecentChange::getQueryInfo();
+ $info = [
+ 'tables' => $rcQuery['tables'],
+ 'fields' => $rcQuery['fields'],
+ 'conds' => array_filter( $conds ),
+ 'options' => [ 'ORDER BY' => 'rc_timestamp DESC' ],
+ 'join_conds' => $rcQuery['joins'],
+ ];
+
+ return $info;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return string
+ */
+ public function formatRow( $row ) {
+ $rc = RecentChange::newFromRow( $row );
+ $rc->counter = $this->mPage->mCounter++;
+ return $this->mChangesList->recentChangesLine( $rc, false );
+ }
+
+ function getIndexField() {
+ return 'rc_id';
+ }
+
+ function getTitle() {
+ return $this->mPage->getTitle( 'examine' );
+ }
+
+ function getEmptyBody() {
+ return $this->msg( 'abusefilter-examine-noresults' )->parseAsBlock();
+ }
+}