From 708c02281e6e8880ae2cebbda7f353ce97841f94 Mon Sep 17 00:00:00 2001 From: Amir Sarabadani Date: Sun, 31 Jul 2016 19:06:49 +0430 Subject: [PATCH] Add CollationFa Bug: T139110 Change-Id: Ie15a2ee1c22ff4a1d2b721ed137227fe83dd12ea --- autoload.php | 1 + includes/collation/Collation.php | 2 ++ includes/collation/CollationFa.php | 44 ++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 includes/collation/CollationFa.php diff --git a/autoload.php b/autoload.php index 5808040e41..f8b6f231fc 100644 --- a/autoload.php +++ b/autoload.php @@ -257,6 +257,7 @@ $wgAutoloadLocalClasses = [ 'Collation' => __DIR__ . '/includes/collation/Collation.php', 'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php', 'CollationEt' => __DIR__ . '/includes/collation/CollationEt.php', + 'CollationFa' => __DIR__ . '/includes/collation/CollationFa.php', 'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc', 'CommandLineInstaller' => __DIR__ . '/maintenance/install.php', 'CompareParserCache' => __DIR__ . '/maintenance/compareParserCache.php', diff --git a/includes/collation/Collation.php b/includes/collation/Collation.php index fe254afdc5..0e0ee2f698 100644 --- a/includes/collation/Collation.php +++ b/includes/collation/Collation.php @@ -59,6 +59,8 @@ abstract class Collation { return new CollationCkb; case 'xx-uca-et': return new CollationEt; + case 'xx-uca-fa': + return new CollationFa; default: $match = []; if ( preg_match( '/^uca-([a-z@=-]+)$/', $collationName, $match ) ) { diff --git a/includes/collation/CollationFa.php b/includes/collation/CollationFa.php new file mode 100644 index 0000000000..b7e45cc1d6 --- /dev/null +++ b/includes/collation/CollationFa.php @@ -0,0 +1,44 @@ +tertiaryCollator = Collator::create( 'fa' ); + } + + public function getPrimarySortKey( $string ) { + $firstLetter = mb_substr( $string, 0, 1 ); + if ( $firstLetter === 'و' || $firstLetter === 'ا' ) { + return $this->tertiaryCollator->getSortKey( $string ); + } + + return parent::getPrimarySortKey( $string ); + } +} -- 2.20.1