aboutsummaryrefslogtreecommitdiffstats
path: root/includes/ExternalLinks
diff options
context:
space:
mode:
authorAmir Sarabadani <ladsgroup@gmail.com>2023-11-01 22:11:17 +0100
committerAmir Sarabadani <ladsgroup@gmail.com>2023-11-03 02:03:44 +0100
commitf60e576c69731904227f137aba0377818354cc34 (patch)
tree86a4357854c974b2246d505fb4d6ebf27594050e /includes/ExternalLinks
parentcbacde72b2419370b74c87c6af4d904acc005a1e (diff)
downloadmediawikicore-f60e576c69731904227f137aba0377818354cc34.tar.gz
mediawikicore-f60e576c69731904227f137aba0377818354cc34.zip
rdbms: Add support for LIKE in expression builder
Bug: T210206 Change-Id: Iec33a64bb1ec1485ce91b8b05e660f8c1723182b
Diffstat (limited to 'includes/ExternalLinks')
-rw-r--r--includes/ExternalLinks/LinkFilter.php22
1 files changed, 13 insertions, 9 deletions
diff --git a/includes/ExternalLinks/LinkFilter.php b/includes/ExternalLinks/LinkFilter.php
index ca994602c170..7ed7afb75617 100644
--- a/includes/ExternalLinks/LinkFilter.php
+++ b/includes/ExternalLinks/LinkFilter.php
@@ -26,8 +26,11 @@ use MediaWiki\MediaWikiServices;
use StringUtils;
use TextContent;
use Wikimedia\IPUtils;
+use Wikimedia\Rdbms\AndExpressionGroup;
+use Wikimedia\Rdbms\IExpression;
use Wikimedia\Rdbms\LikeMatch;
-use Wikimedia\Rdbms\Platform\ISQLPlatform;
+use Wikimedia\Rdbms\LikeValue;
+use Wikimedia\Rdbms\OrExpressionGroup;
/**
* Utilities for formatting and querying the externallinks table.
@@ -361,15 +364,16 @@ class LinkFilter {
if ( $options['oneWildcard'] && $likePath[0] != '/' ) {
$thisDomainConditions[] = $db->expr( 'el_to_domain_index', '=', $index1 );
} else {
- $thisDomainConditions[] = "el_to_domain_index" . $db->buildLike( $index1, $db->anyString() );
+ $thisDomainConditions[] = $db->expr(
+ 'el_to_domain_index',
+ IExpression::LIKE,
+ new LikeValue( $index1, $db->anyString() )
+ );
}
foreach ( $domainGaps[$index1] ?? [] as $from => $to ) {
- $thisDomainConditions[] = $db->makeList( [
- $db->expr( 'el_id', '<', $from ),
- $db->expr( 'el_id', '>', $to ),
- ], ISQLPlatform::LIST_OR );
+ $thisDomainConditions[] = $db->expr( 'el_id', '<', $from )->or( 'el_id', '>', $to );
}
- $domainConditions[] = $db->makeList( $thisDomainConditions, ISQLPlatform::LIST_AND );
+ $domainConditions[] = new AndExpressionGroup( ...$thisDomainConditions );
}
if ( !$domainConditions ) {
@@ -383,8 +387,8 @@ class LinkFilter {
$index2 = implode( '', $trimmedlikePath );
return [
- $db->makeList( $domainConditions, ISQLPlatform::LIST_OR ),
- "el_to_path" . $db->buildLike( $index2, $db->anyString() ),
+ new OrExpressionGroup( ...$domainConditions ),
+ $db->expr( 'el_to_path', IExpression::LIKE, new LikeValue( $index2, $db->anyString() ) ),
];
}