Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
UserIdentityUtils
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
4 / 4
7
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isTemp
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isNamed
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
 getShortUserTypeInternal
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace MediaWiki\User;
4
5use MediaWiki\User\TempUser\TempUserConfig;
6
7/**
8 * Convenience functions for interpreting UserIdentity objects using additional
9 * services or config.
10 *
11 * @since 1.41
12 */
13class UserIdentityUtils {
14    /**
15     * @internal
16     */
17    public function __construct(
18        private readonly TempUserConfig $tempUserConfig,
19    ) {
20    }
21
22    /**
23     * Is the user a temporary user?
24     *
25     * @param UserIdentity $user
26     * @return bool
27     */
28    public function isTemp( UserIdentity $user ) {
29        return $this->tempUserConfig->isTempName( $user->getName() );
30    }
31
32    /**
33     * Is the user a normal non-temporary registered user?
34     *
35     * @param UserIdentity $user
36     * @return bool
37     */
38    public function isNamed( UserIdentity $user ) {
39        return $user->isRegistered()
40            && !$this->tempUserConfig->isTempName( $user->getName() );
41    }
42
43    /**
44     * Get user identity type, used for internal logic like tracking statistics per account type.
45     * Only for internal use like tracking statistics and meet DRY
46     *
47     * @internal
48     * @param UserIdentity $user
49     * @return string
50     */
51    public function getShortUserTypeInternal( UserIdentity $user ): string {
52        if ( !$user->isRegistered() ) {
53            return 'anon';
54        }
55        return $this->isTemp( $user ) ? 'temp' : 'named';
56    }
57}