Add ExternalUserNames::getLocal() to get local part of username
authorAmir Sarabadani <ladsgroup@gmail.com>
Fri, 9 Mar 2018 19:32:41 +0000 (20:32 +0100)
committerAmir Sarabadani <ladsgroup@gmail.com>
Fri, 9 Mar 2018 19:53:54 +0000 (20:53 +0100)
Bug: T189320
Change-Id: I99908ced218c45ecbb23f390f065170292f153b4

includes/user/ExternalUserNames.php
tests/phpunit/includes/user/ExternalUserNamesTest.php

index f039d04..f953b14 100644 (file)
@@ -116,4 +116,18 @@ class ExternalUserNames {
                return strpos( $username, '>' ) !== false;
        }
 
+       /**
+        * Get local part of the user name
+        *
+        * @param string $username Username to get
+        * @return string
+        */
+       public static function getLocal( $username ) {
+               if ( !self::isExternal( $username ) ) {
+                       return $username;
+               }
+
+               return substr( $username, strpos( $username, '>' ) + 1 );
+       }
+
 }
index cf395f2..429bda4 100644 (file)
@@ -108,4 +108,24 @@ class ExternalUserNamesTest extends MediaWikiTestCase {
                );
        }
 
+       public function provideGetLocal() {
+               return [
+                       [ 'User1', 'User1' ],
+                       [ '>User2', 'User2' ],
+                       [ 'prefix>User3', 'User3' ],
+                       [ 'prefix:>User4', 'User4' ],
+               ];
+       }
+
+       /**
+        * @covers ExternalUserNames::getLocal
+        * @dataProvider provideGetLocal
+        */
+       public function testGetLocal( $username, $expected ) {
+               $this->assertSame(
+                       $expected,
+                       ExternalUserNames::getLocal( $username )
+               );
+       }
+
 }